Class VTIResultSet
- java.lang.Object
-
- org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl
-
- org.apache.derby.impl.sql.execute.NoPutResultSetImpl
-
- org.apache.derby.impl.sql.execute.VTIResultSet
-
- All Implemented Interfaces:
CursorResultSet,NoPutResultSet,ResultSet,RowLocationRetRowSource,RowSource,VTIEnvironment
class VTIResultSet extends NoPutResultSetImpl implements CursorResultSet, VTIEnvironment
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl
BasicNoPutResultSetImpl.FieldComparator
-
-
Field Summary
Fields Modifier and Type Field Description private ExecRowallocatedRowprivate FormatableHashtablecompileTimeConstantsprivate GeneratedMethodconstructorprivate IFastPathfastPathprivate booleanisDerbyStyleTableFunctionprivate booleanisTargetjava.lang.StringjavaClassNameprivate booleanpushedProjectionprivate Qualifier[][]pushedQualifiersprivate FormatableBitSetreferencedColumnsprivate DataTypeDescriptor[]returnColumnTypesprivate TypeDescriptorreturnTypeprivate booleanreuseablePsintrowsReturnedprivate boolean[]runtimeNullableColumnprivate intscanIsolationLevelSpecified isolation level of SELECT (scan).private java.sql.PreparedStatementuserPSprivate java.sql.ResultSetuserVTIprivate booleanversion2private java.lang.StringvtiNameprivate java.lang.String[]vtiProjectionprivate RestrictionvtiRestrictionprivate java.lang.StringvtiSchema-
Fields inherited from class org.apache.derby.impl.sql.execute.NoPutResultSetImpl
checkNullCols, clonedExecRow, cncLen, resultSetNumber, targetResultSet
-
Fields inherited from class org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl
activation, beginTime, closeTime, compactRow, constructorTime, currentRow, endExecutionTime, finished, isOpen, isTopResultSet, nextTime, numOpens, openTime, optimizerEstimatedCost, optimizerEstimatedRowCount, resultDescription, rowsFiltered, rowsSeen, startExecutionTime, subqueryTrackingArray
-
Fields inherited from interface org.apache.derby.iapi.sql.execute.NoPutResultSet
ABSOLUTE, FIRST, LAST, NEXT, PREVIOUS, RELATIVE, TEMPORARY_RESULT_SET_NUMBER
-
Fields inherited from interface org.apache.derby.iapi.sql.ResultSet
CURRENT_RESULTSET_ONLY, ENTIRE_RESULTSET_TREE, ISAFTERLAST, ISBEFOREFIRST, ISFIRST, ISLAST
-
-
Constructor Summary
Constructors Constructor Description VTIResultSet(Activation activation, int row, int resultSetNumber, GeneratedMethod constructor, java.lang.String javaClassName, Qualifier[][] pushedQualifiers, int erdNumber, boolean version2, boolean reuseablePs, int ctcNumber, boolean isTarget, int scanIsolationLevel, double optimizerEstimatedRowCount, double optimizerEstimatedCost, boolean isDerbyStyleTableFunction, int returnTypeNumber, int vtiProjectionNumber, int vtiRestrictionNumber, java.lang.String vtiSchema, java.lang.String vtiName)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidcast(DataTypeDescriptor dtd, DataValueDescriptor dvd)Cast the value coming out of the user-coded ResultSet.private voidcastDecimal(DataTypeDescriptor dtd, DataValueDescriptor dvd)Set the correct precision and scale for a decimal value.private voidcastLongvarbinary(DataTypeDescriptor dtd, DataValueDescriptor dvd)Truncate long varbinary values to the legal maximum.private voidcastLongvarchar(DataTypeDescriptor dtd, DataValueDescriptor dvd)Truncate long varchars to the legal maximum.private RestrictioncloneRestriction(Activation activation)Clone the restriction for a Restricted VTI, filling in parameter values as necessary.private RestrictioncloneRestriction(Activation activation, Restriction original)voidclose()Close needs to invalidate any dependent statements, if this is a cursor.voidfinish()Tells the system that there will be no more access to any database information via this result set; in particular, no more calls to open().private ExecRowgetAllocatedRow()Cache the ExecRow for this result set.ExecRowgetCurrentRow()This is not used in positioned update and delete, so just return a null.ExecRowgetNextRowCore()If open and not returned yet, returns the row after plugging the parameters into the expressions.java.lang.StringgetOriginalSQL()Return the SQL text of the original SQL statement.private int[]getProjectedColList()private DataTypeDescriptor[]getReturnColumnTypes()Get the types of the columns returned by a Derby-style table function.RowLocationgetRowLocation()This is not operating against a stored table, so it has no row location to report.intgetScanIsolationLevel()Return the isolation level of the scan in the result set.java.lang.ObjectgetSharedState(java.lang.String key)Get an object associated with a key from set of objects maintained with the statement plan.intgetStatementIsolationLevel()Get the specific JDBC isolation of the statement.longgetTimeSpent(int type)Return the total amount of time spent in this ResultSet(package private) GeneratedMethodgetVTIConstructor()Return the GeneratedMethod for instantiating the VTI.booleanisCompileTime()Return true if this instance of the Table Function has been created for compilation, false if it is for runtime execution.(package private) booleanisReuseablePs()voidopenCore()Sets state to 'open'.voidpopulateFromResultSet(ExecRow row)voidreopenCore()If the VTI is a version2 vti that does not need to be instantiated multiple times then we simply close the current ResultSet and create a new one via a call to PreparedStatement.executeQuery().private boolean[]setNullableColumnList()voidsetSharedState(java.lang.String key, java.io.Serializable value)Saves an object associated with a key that will be maintained for the lifetime of the statement plan.org.w3c.dom.ElementtoXML(org.w3c.dom.Element parentNode, java.lang.String tag)Produce an xml image of this ResultSet and its descendant ResultSets.-
Methods inherited from class org.apache.derby.impl.sql.execute.NoPutResultSetImpl
clearCurrentRow, clearOrderableCache, closeRowSource, getCursorName, getNextRowFromRowSource, getResultDescription, getValidColumns, isForUpdate, markRowAsDeleted, needsRowLocation, needsRowLocationForDeferredCheckConstraints, needsToClone, offendingRowLocation, positionScanAtRowLocation, printQualifiers, resultSetNumber, rowLocation, setCurrentRow, setHasDeferrableChecks, setNeedsRowLocation, setTargetResultSet, skipRow, skipScan, unpackHashValue, updateRow
-
Methods inherited from class org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl
addWarning, attachStatementContext, checkCancellationFlag, checkRowPosition, childrenToXML, cleanUp, dumpTimeStats, finishAndRTS, getAbsoluteRow, getActivation, getAutoGeneratedKeysResultset, getBeginExecutionTimestamp, getCompactRow, getCurrentTimeMillis, getElapsedMillis, getEndExecutionTimestamp, getEstimatedRowCount, getExecuteTime, getExecutionFactory, getFirstRow, getLanguageConnectionContext, getLastRow, getNextRow, getPointOfAttachment, getPreviousRow, getRelativeRow, getRowNumber, getSubqueryTrackingArray, getTransactionController, getWarnings, isClosed, isXplainOnlyMode, markAsTopResultSet, modifiedRowCount, open, recordConstructorTime, requiresRelocking, returnsRows, setAfterLastRow, setBeforeFirstRow, setCompactRow, setCompatRow, toXML
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.derby.iapi.sql.ResultSet
addWarning, checkRowPosition, cleanUp, clearCurrentRow, getAbsoluteRow, getActivation, getAutoGeneratedKeysResultset, getBeginExecutionTimestamp, getCursorName, getEndExecutionTimestamp, getExecuteTime, getFirstRow, getLastRow, getNextRow, getPreviousRow, getRelativeRow, getResultDescription, getRowNumber, getSubqueryTrackingArray, getWarnings, isClosed, modifiedRowCount, open, returnsRows, setAfterLastRow, setBeforeFirstRow
-
-
-
-
Field Detail
-
rowsReturned
public int rowsReturned
-
javaClassName
public java.lang.String javaClassName
-
constructor
private GeneratedMethod constructor
-
userPS
private java.sql.PreparedStatement userPS
-
userVTI
private java.sql.ResultSet userVTI
-
allocatedRow
private final ExecRow allocatedRow
-
referencedColumns
private FormatableBitSet referencedColumns
-
version2
private boolean version2
-
reuseablePs
private boolean reuseablePs
-
isTarget
private boolean isTarget
-
compileTimeConstants
private final FormatableHashtable compileTimeConstants
-
pushedProjection
private boolean pushedProjection
-
fastPath
private IFastPath fastPath
-
pushedQualifiers
private Qualifier[][] pushedQualifiers
-
runtimeNullableColumn
private boolean[] runtimeNullableColumn
-
isDerbyStyleTableFunction
private boolean isDerbyStyleTableFunction
-
returnType
private final TypeDescriptor returnType
-
returnColumnTypes
private DataTypeDescriptor[] returnColumnTypes
-
vtiProjection
private java.lang.String[] vtiProjection
-
vtiRestriction
private Restriction vtiRestriction
-
vtiSchema
private java.lang.String vtiSchema
-
vtiName
private java.lang.String vtiName
-
scanIsolationLevel
private int scanIsolationLevel
Specified isolation level of SELECT (scan). If not set or not application, it will be set to TransactionControl.UNSPECIFIED_ISOLATION_LEVEL
-
-
Constructor Detail
-
VTIResultSet
VTIResultSet(Activation activation, int row, int resultSetNumber, GeneratedMethod constructor, java.lang.String javaClassName, Qualifier[][] pushedQualifiers, int erdNumber, boolean version2, boolean reuseablePs, int ctcNumber, boolean isTarget, int scanIsolationLevel, double optimizerEstimatedRowCount, double optimizerEstimatedCost, boolean isDerbyStyleTableFunction, int returnTypeNumber, int vtiProjectionNumber, int vtiRestrictionNumber, java.lang.String vtiSchema, java.lang.String vtiName) throws StandardException
- Throws:
StandardException
-
-
Method Detail
-
openCore
public void openCore() throws StandardExceptionSets state to 'open'.- Specified by:
openCorein interfaceNoPutResultSet- Throws:
StandardException- thrown if activation closed.
-
cloneRestriction
private Restriction cloneRestriction(Activation activation) throws StandardException
Clone the restriction for a Restricted VTI, filling in parameter values as necessary.- Throws:
StandardException
-
cloneRestriction
private Restriction cloneRestriction(Activation activation, Restriction original) throws StandardException
- Throws:
StandardException
-
setNullableColumnList
private boolean[] setNullableColumnList() throws java.sql.SQLException, StandardException- Throws:
java.sql.SQLExceptionStandardException
-
reopenCore
public void reopenCore() throws StandardExceptionIf the VTI is a version2 vti that does not need to be instantiated multiple times then we simply close the current ResultSet and create a new one via a call to PreparedStatement.executeQuery().- Specified by:
reopenCorein interfaceNoPutResultSet- Overrides:
reopenCorein classBasicNoPutResultSetImpl- Throws:
StandardException- thrown if cursor finished.- See Also:
NoPutResultSet.openCore()
-
getNextRowCore
public ExecRow getNextRowCore() throws StandardException
If open and not returned yet, returns the row after plugging the parameters into the expressions.- Specified by:
getNextRowCorein interfaceNoPutResultSet- Specified by:
getNextRowCorein classBasicNoPutResultSetImpl- Returns:
- the next row in the result
- Throws:
StandardException- thrown on failure.- See Also:
NoPutResultSet.getNextRowCore()
-
close
public void close() throws StandardExceptionDescription copied from class:NoPutResultSetImplClose needs to invalidate any dependent statements, if this is a cursor. Must be called by any subclasses that override close().- Specified by:
closein interfaceResultSet- Overrides:
closein classNoPutResultSetImpl- Throws:
StandardException- thrown on error- See Also:
ResultSet.close()
-
finish
public void finish() throws StandardExceptionDescription copied from interface:ResultSetTells the system that there will be no more access to any database information via this result set; in particular, no more calls to open(). Will close the result set if it is not already closed.- Specified by:
finishin interfaceResultSet- Overrides:
finishin classBasicNoPutResultSetImpl- Throws:
StandardException- on error
-
getTimeSpent
public long getTimeSpent(int type)
Return the total amount of time spent in this ResultSet- Specified by:
getTimeSpentin interfaceResultSet- Parameters:
type- CURRENT_RESULTSET_ONLY - time spent only in this ResultSet ENTIRE_RESULTSET_TREE - time spent in this ResultSet and below.- Returns:
- long The total amount of time spent (in milliseconds).
-
getRowLocation
public RowLocation getRowLocation()
This is not operating against a stored table, so it has no row location to report.- Specified by:
getRowLocationin interfaceCursorResultSet- Returns:
- a null.
- See Also:
CursorResultSet
-
getCurrentRow
public ExecRow getCurrentRow()
This is not used in positioned update and delete, so just return a null.- Specified by:
getCurrentRowin interfaceCursorResultSet- Returns:
- a null.
- See Also:
CursorResultSet
-
getVTIConstructor
GeneratedMethod getVTIConstructor()
Return the GeneratedMethod for instantiating the VTI.- Returns:
- The GeneratedMethod for instantiating the VTI.
-
isReuseablePs
boolean isReuseablePs()
-
getAllocatedRow
private ExecRow getAllocatedRow() throws StandardException
Cache the ExecRow for this result set.- Returns:
- The cached ExecRow for this ResultSet
- Throws:
StandardException- thrown on failure.
-
getProjectedColList
private int[] getProjectedColList()
-
populateFromResultSet
public void populateFromResultSet(ExecRow row) throws StandardException
- Throws:
StandardException- thrown on failure to open
-
getScanIsolationLevel
public final int getScanIsolationLevel()
Description copied from interface:NoPutResultSetReturn the isolation level of the scan in the result set. Only expected to be called for those ResultSets that contain a scan.- Specified by:
getScanIsolationLevelin interfaceNoPutResultSet- Overrides:
getScanIsolationLevelin classBasicNoPutResultSetImpl- Returns:
- The isolation level of the scan (in TransactionController constants).
- See Also:
NoPutResultSet.getScanIsolationLevel()
-
isCompileTime
public final boolean isCompileTime()
Description copied from interface:VTIEnvironmentReturn true if this instance of the Table Function has been created for compilation, false if it is for runtime execution.- Specified by:
isCompileTimein interfaceVTIEnvironment
-
getOriginalSQL
public final java.lang.String getOriginalSQL()
Description copied from interface:VTIEnvironmentReturn the SQL text of the original SQL statement.- Specified by:
getOriginalSQLin interfaceVTIEnvironment
-
getStatementIsolationLevel
public final int getStatementIsolationLevel()
Description copied from interface:VTIEnvironmentGet the specific JDBC isolation of the statement. If it returns Connection.TRANSACTION_NONE then no isolation was specified and the connection's isolation level is implied.- Specified by:
getStatementIsolationLevelin interfaceVTIEnvironment
-
setSharedState
public final void setSharedState(java.lang.String key, java.io.Serializable value)Description copied from interface:VTIEnvironmentSaves an object associated with a key that will be maintained for the lifetime of the statement plan. Any previous value associated with the key is discarded. Any saved object can be seen by any JDBC Connection that has a Statement object that references the same statement plan.- Specified by:
setSharedStatein interfaceVTIEnvironment
-
getSharedState
public java.lang.Object getSharedState(java.lang.String key)
Description copied from interface:VTIEnvironmentGet an object associated with a key from set of objects maintained with the statement plan.- Specified by:
getSharedStatein interfaceVTIEnvironment
-
getReturnColumnTypes
private DataTypeDescriptor[] getReturnColumnTypes() throws StandardException
Get the types of the columns returned by a Derby-style table function.
- Throws:
StandardException
-
cast
private void cast(DataTypeDescriptor dtd, DataValueDescriptor dvd) throws StandardException
Cast the value coming out of the user-coded ResultSet. The rules are described in CastNode.getDataValueConversion().
- Throws:
StandardException
-
castLongvarchar
private void castLongvarchar(DataTypeDescriptor dtd, DataValueDescriptor dvd) throws StandardException
Truncate long varchars to the legal maximum.
- Throws:
StandardException
-
castLongvarbinary
private void castLongvarbinary(DataTypeDescriptor dtd, DataValueDescriptor dvd) throws StandardException
Truncate long varbinary values to the legal maximum.
- Throws:
StandardException
-
castDecimal
private void castDecimal(DataTypeDescriptor dtd, DataValueDescriptor dvd) throws StandardException
Set the correct precision and scale for a decimal value.
- Throws:
StandardException
-
toXML
public org.w3c.dom.Element toXML(org.w3c.dom.Element parentNode, java.lang.String tag) throws java.lang.ExceptionDescription copied from interface:ResultSetProduce an xml image of this ResultSet and its descendant ResultSets. Appends an element to the parentNode and returns the appended element.
- Specified by:
toXMLin interfaceResultSet- Overrides:
toXMLin classBasicNoPutResultSetImpl- Parameters:
parentNode- Node to put content into.tag- Element tag for content- Returns:
- the content as an element with the given tag name
- Throws:
java.lang.Exception
-
-