| java.lang.Object com.ziclix.python.sql.Fetch
Fetch | abstract public class Fetch (Code) | | The responsibility of a Fetch instance is to manage the iteration of a
ResultSet. Two different alogorithms are available: static or dynamic.
Static The static variety iterates the entire set immediately,
creating the necessary Jython objects and storing them. It is able to
immediately close the ResultSet so a call to close() is essentially a no-op
from a database resource perspective (it does clear the results list however).
This approach also allows for the correct rowcount to be determined since
the entire result set has been iterated.
Dynamic The dynamic variety iterates the result set only as requested.
This holds a bit truer to the intent of the API as the fetch*() methods actually
fetch when instructed. This is especially useful for managing exeedingly large
results, but is unable to determine the rowcount without having worked through
the entire result set. The other disadvantage is the ResultSet remains open
throughout the entire iteration. So the tradeoff is in open database resources
versus JVM resources since the application can keep constant space if it doesn't
require the entire result set be presented as one.
author: brian zimmer version: $Revision: 2542 $ |
Field Summary | |
protected PyObject | description | protected int | rowcount The total number of rows in the result set. | protected int | rownumber The current row of the cursor (-1 if off either end). |
Method Summary | |
abstract public void | add(ResultSet resultSet) Create the results after a successful execution and manages the result set. | abstract public void | add(ResultSet resultSet, Set skipCols) Create the results after a successful execution and manages the result set. | abstract public void | add(CallableStatement callableStatement, Procedure procedure, PyObject params) | public void | addWarningListener(WarningListener listener) | public void | close() Cleanup any resources. | protected PyObject | createDescription(ResultSetMetaData meta) Builds a tuple containing the meta-information about each column. | protected PyObject | createDescription(Procedure procedure) Builds a tuple containing the meta-information about each column. | protected PyTuple | createResult(ResultSet set, Set skipCols, PyObject metaData) Creates the individual result row from the current ResultSet row. | protected PyObject | createResults(CallableStatement callableStatement, Procedure procedure, PyObject params) | protected PyList | createResults(ResultSet set, Set skipCols, PyObject metaData) Creates the results of a query. | abstract public PyObject | fetchall() Fetch all (remaining) rows of a query result, returning them as a sequence
of sequences (e.g. | abstract public PyObject | fetchmany(int size) Fetch the next set of rows of a query result, returning a sequence of
sequences (e.g. | public PyObject | fetchone() Fetch the next row of a query result set, returning a single sequence,
or None when no more data is available. | protected void | fireWarning(SQLWarning warning) | public PyObject | getDescription() The description of each column, in order, for the data in the result
set. | public int | getRowCount() The number of rows in the current result set. | public static Fetch | newFetch(DataHandler datahandler, boolean dynamic) | abstract public PyObject | nextset() Move the result pointer to the next set if available. | public boolean | removeWarningListener(WarningListener listener) | abstract public void | scroll(int value, String mode) Scroll the cursor in the result set to a new position according
to mode.
If mode is 'relative' (default), value is taken as offset to
the current position in the result set, if set to 'absolute',
value states an absolute target position.
An IndexError should be raised in case a scroll operation would
leave the result set. |
rowcount | protected int rowcount(Code) | | The total number of rows in the result set.
Note: since JDBC provides no means to get this information without iterating
the entire result set, only those fetches which build the result statically
will have an accurate row count.
|
rownumber | protected int rownumber(Code) | | The current row of the cursor (-1 if off either end).
|
Fetch | protected Fetch(DataHandler datahandler)(Code) | | Constructor Fetch
Parameters: datahandler - |
add | abstract public void add(ResultSet resultSet)(Code) | | Create the results after a successful execution and manages the result set.
Parameters: resultSet - |
add | abstract public void add(ResultSet resultSet, Set skipCols)(Code) | | Create the results after a successful execution and manages the result set.
Optionally takes a set of JDBC-indexed columns to automatically set to None
primarily to support getTypeInfo() which sets a column type of a number but
doesn't use the value so a driver is free to put anything it wants there.
Parameters: resultSet - Parameters: skipCols - JDBC-indexed set of columns to be skipped |
createDescription | protected PyObject createDescription(ResultSetMetaData meta) throws SQLException(Code) | | Builds a tuple containing the meta-information about each column.
(name, type_code, display_size, internal_size, precision, scale, null_ok)
precision and scale are only available for numeric types
|
createDescription | protected PyObject createDescription(Procedure procedure) throws SQLException(Code) | | Builds a tuple containing the meta-information about each column.
(name, type_code, display_size, internal_size, precision, scale, null_ok)
precision and scale are only available for numeric types
|
createResult | protected PyTuple createResult(ResultSet set, Set skipCols, PyObject metaData) throws SQLException(Code) | | Creates the individual result row from the current ResultSet row.
Parameters: set - result set Parameters: skipCols - set of JDBC-indexed columns to automatically set to None a tuple of the results throws: SQLException - |
createResults | protected PyList createResults(ResultSet set, Set skipCols, PyObject metaData) throws SQLException(Code) | | Creates the results of a query. Iterates through the list and builds the tuple.
Parameters: set - result set Parameters: skipCols - set of JDBC-indexed columns to automatically set to None a list of tuples of the results throws: SQLException - |
fetchall | abstract public PyObject fetchall()(Code) | | Fetch all (remaining) rows of a query result, returning them as a sequence
of sequences (e.g. a list of tuples). Note that the cursor's arraysize attribute
can affect the performance of this operation.
An Error (or subclass) exception is raised if the previous call to executeXXX()
did not produce any result set or no call was issued yet.
a sequence of sequences from the result set, or None when no more data is available |
fetchmany | abstract public PyObject fetchmany(int size)(Code) | | Fetch the next set of rows of a query result, returning a sequence of
sequences (e.g. a list of tuples). An empty sequence is returned when
no more rows are available.
The number of rows to fetch per call is specified by the parameter. If
it is not given, the cursor's arraysize determines the number of rows
to be fetched. The method should try to fetch as many rows as indicated
by the size parameter. If this is not possible due to the specified number
of rows not being available, fewer rows may be returned.
An Error (or subclass) exception is raised if the previous call to executeXXX()
did not produce any result set or no call was issued yet.
Note there are performance considerations involved with the size parameter.
For optimal performance, it is usually best to use the arraysize attribute.
If the size parameter is used, then it is best for it to retain the same value
from one fetchmany() call to the next.
a sequence of sequences from the result set, or None when no more data is available |
fetchone | public PyObject fetchone()(Code) | | Fetch the next row of a query result set, returning a single sequence,
or None when no more data is available.
An Error (or subclass) exception is raised if the previous call to
executeXXX() did not produce any result set or no call was issued yet.
a single sequence from the result set, or None when no more data is available |
getDescription | public PyObject getDescription()(Code) | | The description of each column, in order, for the data in the result
set.
|
getRowCount | public int getRowCount()(Code) | | The number of rows in the current result set.
|
newFetch | public static Fetch newFetch(DataHandler datahandler, boolean dynamic)(Code) | | Method newFetch
Parameters: datahandler - Parameters: dynamic - Fetch |
nextset | abstract public PyObject nextset()(Code) | | Move the result pointer to the next set if available.
true if more sets exist, else None |
scroll | abstract public void scroll(int value, String mode)(Code) | | Scroll the cursor in the result set to a new position according
to mode.
If mode is 'relative' (default), value is taken as offset to
the current position in the result set, if set to 'absolute',
value states an absolute target position.
An IndexError should be raised in case a scroll operation would
leave the result set. In this case, the cursor position is left
undefined (ideal would be to not move the cursor at all).
Note: This method should use native scrollable cursors, if
available, or revert to an emulation for forward-only
scrollable cursors. The method may raise NotSupportedErrors to
signal that a specific operation is not supported by the
database (e.g. backward scrolling).
Parameters: value - Parameters: mode - |
|
|