/*
* Copyright 2014-2015 the original author or authors
*
* Licensed under the Apache License, Version 2.0 (the “License”);
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an “AS IS” BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.wplatform.ddal.result;
import com.wplatform.ddal.value.Value;
/**
* The result interface is used by the LocalResult and ResultRemote class.
* A result may contain rows, or just an update count.
*/
public interface ResultInterface {
/**
* Go to the beginning of the result, that means
* before the first row.
*/
void reset();
/**
* Get the current row.
*
* @return the row
*/
Value[] currentRow();
/**
* Go to the next row.
*
* @return true if a row exists
*/
boolean next();
/**
* Get the current row id, starting with 0.
* -1 is returned when next() was not called yet.
*
* @return the row id
*/
int getRowId();
/**
* Get the number of visible columns.
* More columns may exist internally for sorting or grouping.
*
* @return the number of columns
*/
int getVisibleColumnCount();
/**
* Get the number of rows in this object.
*
* @return the number of rows
*/
int getRowCount();
/**
* Check if this result set should be closed, for example because it is
* buffered using a temporary file.
*
* @return true if close should be called.
*/
boolean needToClose();
/**
* Close the result and delete any temporary files
*/
void close();
/**
* Get the column alias name for the column.
*
* @param i the column number (starting with 0)
* @return the alias name
*/
String getAlias(int i);
/**
* Get the schema name for the column, if one exists.
*
* @param i the column number (starting with 0)
* @return the schema name or null
*/
String getSchemaName(int i);
/**
* Get the table name for the column, if one exists.
*
* @param i the column number (starting with 0)
* @return the table name or null
*/
String getTableName(int i);
/**
* Get the column name.
*
* @param i the column number (starting with 0)
* @return the column name
*/
String getColumnName(int i);
/**
* Get the column data type.
*
* @param i the column number (starting with 0)
* @return the column data type
*/
int getColumnType(int i);
/**
* Get the precision for this column.
*
* @param i the column number (starting with 0)
* @return the precision
*/
long getColumnPrecision(int i);
/**
* Get the scale for this column.
*
* @param i the column number (starting with 0)
* @return the scale
*/
int getColumnScale(int i);
/**
* Get the display size for this column.
*
* @param i the column number (starting with 0)
* @return the display size
*/
int getDisplaySize(int i);
/**
* Check if this is an auto-increment column.
*
* @param i the column number (starting with 0)
* @return true for auto-increment columns
*/
boolean isAutoIncrement(int i);
/**
* Check if this column is nullable.
*
* @param i the column number (starting with 0)
* @return Column.NULLABLE_*
*/
int getNullable(int i);
/**
* Get the current fetch size for this result set.
*
* @return the fetch size
*/
int getFetchSize();
/**
* Set the fetch size for this result set.
*
* @param fetchSize the new fetch size
*/
void setFetchSize(int fetchSize);
}