Class GenericPreparedStatement
- java.lang.Object
-
- org.apache.derby.impl.sql.GenericPreparedStatement
-
- All Implemented Interfaces:
Dependable,Dependent,ExecPreparedStatement,PreparedStatement
- Direct Known Subclasses:
GenericStorablePreparedStatement
public class GenericPreparedStatement extends java.lang.Object implements ExecPreparedStatement
Basic implementation of prepared statement. relies on implementation of ResultDescription and Statement that are also in this package.These are both dependents (of the schema objects and prepared statements they depend on) and providers. Prepared statements that are providers are cursors that end up being used in positioned delete and update statements (at present).
This is impl with the regular prepared statements; they will never have the cursor info fields set.
Stored prepared statements extend this implementation
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classGenericPreparedStatement.RowCountStatisticsThis class holds information about stale plan check interval, execution count and row count statistics for a GenericPreparedStatement.
-
Field Summary
Fields Modifier and Type Field Description protected GeneratedClassactivationClassprotected java.sql.TimestampbeginCompileTimestampprotected longbindTimeprivate CacheablecacheHolderIf non-null then this object is the cacheable that holds us in the cache.protected longcompileTimeprivate booleancompilingStatementprotected java.sql.TimestampendCompileTimestampprivate java.lang.StringexecSchemaNameprivate java.lang.StringexecStmtNameprotected ConstantActionexecutionConstantsprotected longgenerateTimeprivate intinUseCount(package private) booleaninvalidatedWhileCompilingTrue if the statement was invalidated while it was being compiled.protected booleanisAtomicprotected booleanisValidprivate booleanneedsSavepointprotected longoptimizeTimeprotected DataTypeDescriptor[]paramTypeDescriptorsprotected longparseTimeprivate booleanreferencesSessionSchemaprotected java.util.List<StatementPermission>requiredPermissionsListprotected ResultDescriptionresultDescprivate GenericPreparedStatement.RowCountStatisticsrowCountStatsHolder for row counts and execution count.protected java.lang.Object[]savedObjectsprotected java.lang.StringsourceTxtprotected booleanspsActionprivate java.lang.StringspsNameStatementstatementprotected ExecCursorTableReferencetargetTableprotected java.util.List<java.lang.String>updateColumnsprotected intupdateModeprotected java.lang.StringUUIDStringprotected UUIDUUIDValueprivate longversionCounterIncremented for each (re)compile.private java.sql.SQLWarningwarnings-
Fields inherited from interface org.apache.derby.catalog.Dependable
ACTIVATION, ALIAS, COLUMNS_IN_TABLE, COLUMNS_PERMISSION, CONGLOMERATE, CONSTRAINT, DEFAULT, FILE, HEAP, INDEX, PERM, PREPARED_STATEMENT, ROLE_GRANT, ROUTINE_PERMISSION, SCHEMA, SEQUENCE, STORED_PREPARED_STATEMENT, TABLE, TABLE_PERMISSION, TRIGGER, VIEW
-
-
Constructor Summary
Constructors Constructor Description GenericPreparedStatement()GenericPreparedStatement(Statement st)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) voidbeginCompiling()Signal that the statement is about to be compiled.(package private) voidcompleteCompile(StatementNode qt)Makes the prepared statement valid, assigning values for its query tree, generated class, and associated information.(package private) voidendCompiling()Signal that we're done compiling the statement and unblock others that are waiting for the compilation to finish.ResultSetexecute(Activation activation, boolean forMetaData, long timeoutMillis)Execute the PreparedStatement and return results, used for top level statements (not substatements) in a connection.private ResultSetexecuteStmt(Activation activation, boolean rollbackParentContext, boolean forMetaData, long timeoutMillis)The guts of execution.ResultSetexecuteSubStatement(Activation parent, Activation activation, boolean rollbackParentContext, long timeoutMillis)Execute a statement as part of another statement (ithout a nested connection) and return results.ResultSetexecuteSubStatement(LanguageConnectionContext lcc, boolean rollbackParentContext, long timeoutMillis)Execute a statement as part of another statement (without a nested connection) and return results.voidfinish(LanguageConnectionContext lcc)Finish marks a statement as totally unusable.ActivationgetActivation(LanguageConnectionContext lcc, boolean scrollable)Get a new activation instance.GeneratedClassgetActivationClass()Get the class generated for this prepared statement.java.sql.TimestampgetBeginCompileTimestamp()Get the timestamp for the beginning of compilationlonggetBindTimeInMillis()Get the bind time for the associated query in milliseconds.(package private) ByteArraygetByteCodeSaver()Get the byte code saver for this statement.java.lang.StringgetClassType()Get the Dependable's class type.ExecPreparedStatementgetClone()Get a new prepared statement that is a shallow copy of the current one.longgetCompileTimeInMillis()Get the total compile time for the associated query in milliseconds.java.sql.SQLWarninggetCompileTimeWarnings()Return any compile time warnings.ConstantActiongetConstantAction()Get the Execution constants.private static ContextServicegetContextService()Privileged lookup of the ContextService.java.lang.ObjectgetCursorInfo()Return the cursor info in a single chunk.DependableFindergetDependableFinder()Get an object which can be written to disk and which, when read from disk, will find or reconstruct this in-memory Dependable.java.sql.TimestampgetEndCompileTimestamp()Get the timestamp for the end of compilationlonggetGenerateTimeInMillis()Get the generate time for the associated query in milliseconds.longgetInitialRowCount(int rsNum, long currentRowCount)Get the initial row count of the specified result set.private static ModuleFactorygetMonitor()Privileged Monitor lookup.UUIDgetObjectID()Get the Dependable's UUID String.java.lang.StringgetObjectName()Return the name of this Dependable.longgetOptimizeTimeInMillis()Get the optimize time for the associated query in milliseconds.DataTypeDescriptorgetParameterType(int idx)Return the type of the parameter (0-based indexing)DataTypeDescriptor[]getParameterTypes()Get an array of DataTypeDescriptors describing the types of the parameters of this PreparedStatement.longgetParseTimeInMillis()Get the parse time for the associated query in milliseconds.java.util.List<StatementPermission>getRequiredPermissionsList()ResultDescriptiongetResultDescription()Get the ResultDescription for the statement.java.lang.ObjectgetSavedObject(int objectNum)Get the specified saved object.java.util.List<java.lang.Object>getSavedObjects()Get the saved objects.java.lang.StringgetSource()Return the SQL string that this statement is for.java.lang.StringgetSPSName()Return the SPS Name for this statement.intgetStalePlanCheckInterval()Get the stale plan check interval.ExecCursorTableReferencegetTargetTable()the target table of the cursorintgetUpdateMode()the update mode of the cursorlonggetVersionCounter()Get the version counter.booleanhasUpdateColumns()Check if this prepared statement has a cursor with columns that can be updated.intincrementExecutionCount()Increment and return the execution count for this statement.voidincrementVersionCounter()booleanisAtomic()Returns whether or not this Statement requires should behave atomically -- i.e. whether a user is permitted to do a commit/rollback during the execution of this statement.(package private) booleanisCompiling()Check if this statement is currently being compiled.booleanisPersistent()Is this dependent persistent?booleanisStorable()booleanisUpdateColumn(java.lang.String columnName)Check if the specified column name is one of the update columns.private booleanisUpToDate()Unsynchronized helper method forupToDate()andupToDate(GeneratedClass).booleanisValid()Check that all of the dependent's dependencies are valid.voidmakeInvalid(int action, LanguageConnectionContext lcc)Mark the dependent as invalid (due to at least one of its dependencies being invalid).booleanneedsSavepoint()Does this statement need a savepoint?voidprepareToInvalidate(Provider p, int action, LanguageConnectionContext lcc)Prepare to mark the dependent as invalid (due to at least one of its dependencies being invalid).booleanreferencesSessionSchema()Return true if the query node for this statement references SESSION schema tables/views.booleanreferencesSessionSchema(StatementNode qt)Return true if the QueryTreeNode references SESSION schema tables/views.voidrePrepare(LanguageConnectionContext lcc)Re-prepare the statement if it is not up to date or, if requested, simply not optimal.voidrePrepare(LanguageConnectionContext lcc, boolean forMetaData)(package private) voidsetActivationClass(GeneratedClass ac)voidsetCacheHolder(Cacheable cacheHolder)protected voidsetCompileTimeMillis(long parseTime, long bindTime, long optimizeTime, long generateTime, long compileTime, java.sql.Timestamp beginCompileTimestamp, java.sql.Timestamp endCompileTimestamp)Set the compile time for this prepared statement.(package private) voidsetCompileTimeWarnings(java.sql.SQLWarning warnings)(package private) voidsetConstantAction(ConstantAction constantAction)Set the Execution constants.(package private) voidsetCursorInfo(CursorInfo cursorInfo)(package private) voidsetExecuteStatementNameAndSchema(java.lang.String execStmtName, java.lang.String execSchemaName)Set the name of the statement and schema for an "execute statement" command.(package private) voidsetIsAtomic(boolean isAtomic)Set the stmts 'isAtomic' state.(package private) voidsetNeedsSavepoint(boolean needsSavepoint)Set the stmts 'needsSavepoint' state.voidsetRequiredPermissionsList(java.util.List<StatementPermission> requiredPermissionsList)(package private) voidsetSavedObjects(java.lang.Object[] objects)Set the saved objects.voidsetSource(java.lang.String text)set the statement textvoidsetSPSAction()Indicate this prepared statement is an SPS action, currently used by GenericTriggerExecutor.voidsetSPSName(java.lang.String name)voidsetStalePlanCheckInterval(int interval)Set the stale plan check interval.voidsetValid()set this prepared statement to be valid, currently used by GenericTriggerExecutor.java.lang.StringtoString()booleanupToDate()Checks whether this PreparedStatement is up to date.booleanupToDate(GeneratedClass gc)Check whether this statement is up to date and its generated class is identical to the supplied class object.
-
-
-
Field Detail
-
statement
public Statement statement
-
activationClass
protected GeneratedClass activationClass
-
resultDesc
protected ResultDescription resultDesc
-
paramTypeDescriptors
protected DataTypeDescriptor[] paramTypeDescriptors
-
spsName
private java.lang.String spsName
-
warnings
private java.sql.SQLWarning warnings
-
referencesSessionSchema
private boolean referencesSessionSchema
-
targetTable
protected ExecCursorTableReference targetTable
-
updateColumns
protected java.util.List<java.lang.String> updateColumns
-
updateMode
protected int updateMode
-
executionConstants
protected ConstantAction executionConstants
-
savedObjects
protected java.lang.Object[] savedObjects
-
requiredPermissionsList
protected java.util.List<StatementPermission> requiredPermissionsList
-
UUIDString
protected java.lang.String UUIDString
-
UUIDValue
protected UUID UUIDValue
-
needsSavepoint
private boolean needsSavepoint
-
execStmtName
private java.lang.String execStmtName
-
execSchemaName
private java.lang.String execSchemaName
-
isAtomic
protected boolean isAtomic
-
sourceTxt
protected java.lang.String sourceTxt
-
inUseCount
private int inUseCount
-
compilingStatement
private boolean compilingStatement
-
invalidatedWhileCompiling
boolean invalidatedWhileCompiling
True if the statement was invalidated while it was being compiled.
-
parseTime
protected long parseTime
-
bindTime
protected long bindTime
-
optimizeTime
protected long optimizeTime
-
generateTime
protected long generateTime
-
compileTime
protected long compileTime
-
beginCompileTimestamp
protected java.sql.Timestamp beginCompileTimestamp
-
endCompileTimestamp
protected java.sql.Timestamp endCompileTimestamp
-
isValid
protected boolean isValid
-
spsAction
protected boolean spsAction
-
cacheHolder
private Cacheable cacheHolder
If non-null then this object is the cacheable that holds us in the cache.
-
versionCounter
private long versionCounter
Incremented for each (re)compile.
-
rowCountStats
private GenericPreparedStatement.RowCountStatistics rowCountStats
Holder for row counts and execution count. Used for determining whether the statement should be recompiled.
-
-
Constructor Detail
-
GenericPreparedStatement
GenericPreparedStatement()
-
GenericPreparedStatement
public GenericPreparedStatement(Statement st)
-
-
Method Detail
-
upToDate
public boolean upToDate() throws StandardExceptionDescription copied from interface:PreparedStatementChecks whether this PreparedStatement is up to date. A PreparedStatement can become out of date if any of several things happen: A schema used by the statement is dropped A table used by the statement is dropped A table used by the statement, or a column in such a table, is altered in one of several ways: a column is dropped, a privilege is dropped, a constraint is added or dropped, an index is dropped. A view used by the statement is dropped. In general, anything that happened since the plan was generated that might cause the plan to fail, or to generate incorrect results, will cause this method to return FALSE.- Specified by:
upToDatein interfacePreparedStatement- Returns:
- TRUE if the PreparedStatement is up to date, FALSE if it is not up to date
- Throws:
StandardException
-
upToDate
public boolean upToDate(GeneratedClass gc)
Check whether this statement is up to date and its generated class is identical to the supplied class object.- Specified by:
upToDatein interfaceExecPreparedStatement- Parameters:
gc- a generated class that must be identical togetActivationClass()for this method to returntrue- Returns:
trueif this statement is up to date and its activation class is identical togc,falseotherwise- See Also:
ExecPreparedStatement.upToDate(GeneratedClass)
-
isUpToDate
private boolean isUpToDate()
Unsynchronized helper method forupToDate()andupToDate(GeneratedClass). Checks whether this statement is up to date.- Returns:
trueif this statement is up to date,falseotherwise
-
isCompiling
final boolean isCompiling()
Check if this statement is currently being compiled.
-
beginCompiling
final void beginCompiling()
Signal that the statement is about to be compiled. This will block others from attempting to compile it.
-
endCompiling
final void endCompiling()
Signal that we're done compiling the statement and unblock others that are waiting for the compilation to finish.
-
rePrepare
public void rePrepare(LanguageConnectionContext lcc) throws StandardException
Description copied from interface:PreparedStatementRe-prepare the statement if it is not up to date or, if requested, simply not optimal. If there are open cursors using this prepared statement, then we will not be able to recompile the statement.- Specified by:
rePreparein interfacePreparedStatement- Parameters:
lcc- The LanguageConnectionContext.- Throws:
StandardException- thrown if unable to perform
-
rePrepare
public void rePrepare(LanguageConnectionContext lcc, boolean forMetaData) throws StandardException
- Throws:
StandardException
-
getActivation
public Activation getActivation(LanguageConnectionContext lcc, boolean scrollable) throws StandardException
Get a new activation instance.- Specified by:
getActivationin interfacePreparedStatement- Parameters:
lcc- The LanguageConnectionContext.- Returns:
- The new activation.
- Throws:
StandardException- thrown if finished.
-
executeSubStatement
public ResultSet executeSubStatement(LanguageConnectionContext lcc, boolean rollbackParentContext, long timeoutMillis) throws StandardException
Description copied from interface:PreparedStatementExecute a statement as part of another statement (without a nested connection) and return results.Creates a new single use activation and executes it, but also passes rollbackParentContext parameter.
- Specified by:
executeSubStatementin interfacePreparedStatement- Parameters:
lcc- language connection contextrollbackParentContext- True if in the event of a statement-level exception, the parent context needs to be rolled back, too.timeoutMillis- timeout value in milliseconds.- Throws:
StandardException- See Also:
PreparedStatement.executeSubStatement(LanguageConnectionContext, boolean, long)
-
executeSubStatement
public ResultSet executeSubStatement(Activation parent, Activation activation, boolean rollbackParentContext, long timeoutMillis) throws StandardException
Description copied from interface:PreparedStatementExecute a statement as part of another statement (ithout a nested connection) and return results.There is no executeQuery() or executeUpdate(); a method is provided in ResultSet to tell whether to expect rows to be returned.
- Specified by:
executeSubStatementin interfacePreparedStatement- Parameters:
parent- The activation of the superstatementactivation- The activation containing all the local state to execute the plan for substatementrollbackParentContext- True if in the event of a statement-level exception, the parent context needs to be rolled back, too.timeoutMillis- timeout value in milliseconds.- Returns:
- A ResultSet for a statement. A ResultSet represents the results returned from the statement, if any. Will return NULL if the plan for the PreparedStatement has aged out of cache, or the plan is out of date.
- Throws:
StandardException- Thrown on failure- See Also:
PreparedStatement.executeSubStatement(Activation, Activation, boolean, long)
-
execute
public ResultSet execute(Activation activation, boolean forMetaData, long timeoutMillis) throws StandardException
Description copied from interface:PreparedStatementExecute the PreparedStatement and return results, used for top level statements (not substatements) in a connection.There is no executeQuery() or executeUpdate(); a method is provided in ResultSet to tell whether to expect rows to be returned.
- Specified by:
executein interfacePreparedStatement- Parameters:
activation- The activation containing all the local state to execute the plan.forMetaData- true if this is a meta-data querytimeoutMillis- timeout value in milliseconds.- Returns:
- A ResultSet for a statement. A ResultSet represents the results returned from the statement, if any. Will return NULL if the plan for the PreparedStatement has aged out of cache, or the plan is out of date.
- Throws:
StandardException- Thrown on failure- See Also:
PreparedStatement.execute(org.apache.derby.iapi.sql.Activation, boolean, long)
-
executeStmt
private ResultSet executeStmt(Activation activation, boolean rollbackParentContext, boolean forMetaData, long timeoutMillis) throws StandardException
The guts of execution.- Parameters:
activation- the activation to run.rollbackParentContext- True if 1) the statement context is NOT a top-level context, AND 2) in the event of a statement-level exception, the parent context needs to be rolled back, too.forMetaData- true if this is a meta-data querytimeoutMillis- timeout value in milliseconds.- Returns:
- the result set to be pawed through
- Throws:
StandardException- thrown on error
-
getResultDescription
public ResultDescription getResultDescription()
Description copied from interface:PreparedStatementGet the ResultDescription for the statement. The ResultDescription describes what the results look like: what are the rows and columns?This is available here and on the ResultSet so that users can see the shape of the result before they execute.
- Specified by:
getResultDescriptionin interfacePreparedStatement- Returns:
- A ResultDescription describing the results.
-
getParameterTypes
public DataTypeDescriptor[] getParameterTypes()
Description copied from interface:PreparedStatementGet an array of DataTypeDescriptors describing the types of the parameters of this PreparedStatement. The Nth element of the array describes the Nth parameter.- Specified by:
getParameterTypesin interfacePreparedStatement- Returns:
- An array of DataTypeDescriptors telling the type, length, precision, scale, etc. of each parameter of this PreparedStatement.
-
getParameterType
public DataTypeDescriptor getParameterType(int idx) throws StandardException
Return the type of the parameter (0-based indexing)- Specified by:
getParameterTypein interfacePreparedStatement- Throws:
StandardException
-
getSource
public java.lang.String getSource()
Description copied from interface:PreparedStatementReturn the SQL string that this statement is for.- Specified by:
getSourcein interfacePreparedStatement- Returns:
- the SQL string this statement is for.
-
setSource
public void setSource(java.lang.String text)
Description copied from interface:ExecPreparedStatementset the statement text- Specified by:
setSourcein interfaceExecPreparedStatement- Parameters:
text- the source text
-
setSPSName
public final void setSPSName(java.lang.String name)
-
getSPSName
public java.lang.String getSPSName()
Description copied from interface:PreparedStatementReturn the SPS Name for this statement.- Specified by:
getSPSNamein interfacePreparedStatement- Returns:
- the SPS Name for this statement
-
getCompileTimeInMillis
public long getCompileTimeInMillis()
Get the total compile time for the associated query in milliseconds. Compile time can be divided into parse, bind, optimize and generate times.- Specified by:
getCompileTimeInMillisin interfacePreparedStatement- Returns:
- long The total compile time for the associated query in milliseconds.
-
getParseTimeInMillis
public long getParseTimeInMillis()
Get the parse time for the associated query in milliseconds.- Specified by:
getParseTimeInMillisin interfacePreparedStatement- Returns:
- long The parse time for the associated query in milliseconds.
-
getBindTimeInMillis
public long getBindTimeInMillis()
Get the bind time for the associated query in milliseconds.- Specified by:
getBindTimeInMillisin interfacePreparedStatement- Returns:
- long The bind time for the associated query in milliseconds.
-
getOptimizeTimeInMillis
public long getOptimizeTimeInMillis()
Get the optimize time for the associated query in milliseconds.- Specified by:
getOptimizeTimeInMillisin interfacePreparedStatement- Returns:
- long The optimize time for the associated query in milliseconds.
-
getGenerateTimeInMillis
public long getGenerateTimeInMillis()
Get the generate time for the associated query in milliseconds.- Specified by:
getGenerateTimeInMillisin interfacePreparedStatement- Returns:
- long The generate time for the associated query in milliseconds.
-
getBeginCompileTimestamp
public java.sql.Timestamp getBeginCompileTimestamp()
Get the timestamp for the beginning of compilation- Specified by:
getBeginCompileTimestampin interfacePreparedStatement- Returns:
- Timestamp The timestamp for the beginning of compilation.
-
getEndCompileTimestamp
public java.sql.Timestamp getEndCompileTimestamp()
Get the timestamp for the end of compilation- Specified by:
getEndCompileTimestampin interfacePreparedStatement- Returns:
- Timestamp The timestamp for the end of compilation.
-
setCompileTimeWarnings
void setCompileTimeWarnings(java.sql.SQLWarning warnings)
-
getCompileTimeWarnings
public final java.sql.SQLWarning getCompileTimeWarnings()
Description copied from interface:PreparedStatementReturn any compile time warnings. Null if no warnings exist.- Specified by:
getCompileTimeWarningsin interfacePreparedStatement
-
setCompileTimeMillis
protected void setCompileTimeMillis(long parseTime, long bindTime, long optimizeTime, long generateTime, long compileTime, java.sql.Timestamp beginCompileTimestamp, java.sql.Timestamp endCompileTimestamp)Set the compile time for this prepared statement.- Parameters:
compileTime- The compile time
-
finish
public void finish(LanguageConnectionContext lcc)
Finish marks a statement as totally unusable.- Specified by:
finishin interfaceExecPreparedStatement
-
setConstantAction
final void setConstantAction(ConstantAction constantAction)
Set the Execution constants. This routine is called as we Prepare the statement.- Parameters:
constantAction- The big structure enclosing the Execution constants.
-
getConstantAction
public final ConstantAction getConstantAction()
Get the Execution constants. This routine is called at Execution time.- Specified by:
getConstantActionin interfaceExecPreparedStatement- Returns:
- ConstantAction The big structure enclosing the Execution constants.
-
setSavedObjects
final void setSavedObjects(java.lang.Object[] objects)
Set the saved objects. Called when compilation completes.- Parameters:
objects- The objects to save from compilation
-
getSavedObject
public final java.lang.Object getSavedObject(int objectNum)
Get the specified saved object.- Specified by:
getSavedObjectin interfaceExecPreparedStatement- Parameters:
objectNum- The object to get.- Returns:
- the requested saved object.
-
getSavedObjects
public final java.util.List<java.lang.Object> getSavedObjects()
Get the saved objects.- Specified by:
getSavedObjectsin interfaceExecPreparedStatement- Returns:
- all the saved objects
-
isValid
public boolean isValid()
Check that all of the dependent's dependencies are valid.
-
setValid
public void setValid()
set this prepared statement to be valid, currently used by GenericTriggerExecutor.- Specified by:
setValidin interfaceExecPreparedStatement
-
setSPSAction
public void setSPSAction()
Indicate this prepared statement is an SPS action, currently used by GenericTriggerExecutor.- Specified by:
setSPSActionin interfaceExecPreparedStatement
-
prepareToInvalidate
public void prepareToInvalidate(Provider p, int action, LanguageConnectionContext lcc) throws StandardException
Prepare to mark the dependent as invalid (due to at least one of its dependencies being invalid).- Specified by:
prepareToInvalidatein interfaceDependent- Parameters:
action- The action causing the invalidationp- the providerlcc- The LanguageConnectionContext- Throws:
StandardException- thrown if unable to make it invalid
-
makeInvalid
public void makeInvalid(int action, LanguageConnectionContext lcc) throws StandardExceptionMark the dependent as invalid (due to at least one of its dependencies being invalid).- Specified by:
makeInvalidin interfaceDependent- Parameters:
action- The action causing the invalidationlcc- The LanguageConnectionContext- Throws:
StandardException- Standard Derby error policy.
-
isPersistent
public boolean isPersistent()
Is this dependent persistent? A stored dependency will be required if both the dependent and provider are persistent.- Specified by:
isPersistentin interfaceDependable- Returns:
- boolean Whether or not this dependent is persistent.
-
getDependableFinder
public DependableFinder getDependableFinder()
Description copied from interface:DependableGet an object which can be written to disk and which, when read from disk, will find or reconstruct this in-memory Dependable.- Specified by:
getDependableFinderin interfaceDependable- Returns:
- the stored form of this Dependable
- See Also:
Dependable.getDependableFinder()
-
getObjectName
public java.lang.String getObjectName()
Return the name of this Dependable. (Useful for errors.)- Specified by:
getObjectNamein interfaceDependable- Returns:
- String The name of this Dependable..
-
getObjectID
public UUID getObjectID()
Get the Dependable's UUID String.- Specified by:
getObjectIDin interfaceDependable- Returns:
- String The Dependable's UUID String.
-
getClassType
public java.lang.String getClassType()
Get the Dependable's class type.- Specified by:
getClassTypein interfaceDependable- Returns:
- String Classname that this Dependable belongs to.
-
referencesSessionSchema
public boolean referencesSessionSchema()
Return true if the query node for this statement references SESSION schema tables/views. This method gets called at the very beginning of the compile phase of any statement. If the statement which needs to be compiled is already found in cache, then there is no need to compile it again except the case when the statement is referencing SESSION schema objects. There is a small window where such a statement might get cached temporarily (a statement referencing SESSION schema object will be removed from the cache after the bind phase is over because that is when we know for sure that the statement is referencing SESSION schema objects.)- Specified by:
referencesSessionSchemain interfacePreparedStatement- Returns:
- true if references SESSION schema tables, else false
-
referencesSessionSchema
public boolean referencesSessionSchema(StatementNode qt) throws StandardException
Return true if the QueryTreeNode references SESSION schema tables/views. The return value is also saved in the local field because it will be used by referencesSessionSchema() method. This method gets called when the statement is not found in cache and hence it is getting compiled. At the beginning of compilation for any statement, first we check if the statement's plan already exist in the cache. If not, then we add the statement to the cache and continue with the parsing and binding. At the end of the binding, this method gets called to see if the QueryTreeNode references a SESSION schema object. If it does, then we want to remove it from the cache, since any statements referencing SESSION schema objects should never get cached.- Returns:
- true if references SESSION schema tables/views, else false
- Throws:
StandardException
-
completeCompile
void completeCompile(StatementNode qt) throws StandardException
Makes the prepared statement valid, assigning values for its query tree, generated class, and associated information.- Parameters:
qt- the query tree for this statement- Throws:
StandardException- thrown on failure.
-
getActivationClass
public GeneratedClass getActivationClass() throws StandardException
Description copied from interface:ExecPreparedStatementGet the class generated for this prepared statement. Used to confirm compatability with auxilary structures.- Specified by:
getActivationClassin interfaceExecPreparedStatement- Throws:
StandardException- on error obtaining class (probably when a stored prepared statement is loading)
-
setActivationClass
void setActivationClass(GeneratedClass ac)
-
getUpdateMode
public int getUpdateMode()
the update mode of the cursor- Specified by:
getUpdateModein interfaceExecPreparedStatement- Returns:
- The update mode of the cursor
-
getTargetTable
public ExecCursorTableReference getTargetTable()
the target table of the cursor- Specified by:
getTargetTablein interfaceExecPreparedStatement- Returns:
- target table of the cursor
-
hasUpdateColumns
public boolean hasUpdateColumns()
Description copied from interface:ExecPreparedStatementCheck if this prepared statement has a cursor with columns that can be updated.- Specified by:
hasUpdateColumnsin interfaceExecPreparedStatement
-
isUpdateColumn
public boolean isUpdateColumn(java.lang.String columnName)
Description copied from interface:ExecPreparedStatementCheck if the specified column name is one of the update columns.- Specified by:
isUpdateColumnin interfaceExecPreparedStatement
-
getCursorInfo
public java.lang.Object getCursorInfo()
Return the cursor info in a single chunk. Used by StrorablePreparedStatement- Specified by:
getCursorInfoin interfaceExecPreparedStatement- Returns:
- Object the cursor info
-
setCursorInfo
void setCursorInfo(CursorInfo cursorInfo)
-
getByteCodeSaver
ByteArray getByteCodeSaver()
Get the byte code saver for this statement. Overridden for StorablePreparedStatement. We don't want to save anything- Returns:
- a byte code saver (null for us)
-
needsSavepoint
public boolean needsSavepoint()
Does this statement need a savepoint?- Specified by:
needsSavepointin interfaceExecPreparedStatement- Returns:
- true if this statement needs a savepoint.
-
setNeedsSavepoint
void setNeedsSavepoint(boolean needsSavepoint)
Set the stmts 'needsSavepoint' state. Used by an SPS to convey whether the underlying stmt needs a savepoint or not.- Parameters:
needsSavepoint- true if this statement needs a savepoint.
-
setIsAtomic
void setIsAtomic(boolean isAtomic)
Set the stmts 'isAtomic' state.- Parameters:
isAtomic- true if this statement must be atomic (i.e. it is not ok to do a commit/rollback in the middle)
-
isAtomic
public boolean isAtomic()
Returns whether or not this Statement requires should behave atomically -- i.e. whether a user is permitted to do a commit/rollback during the execution of this statement.- Specified by:
isAtomicin interfacePreparedStatement- Returns:
- boolean Whether or not this Statement is atomic
-
setExecuteStatementNameAndSchema
void setExecuteStatementNameAndSchema(java.lang.String execStmtName, java.lang.String execSchemaName)Set the name of the statement and schema for an "execute statement" command.
-
getClone
public ExecPreparedStatement getClone() throws StandardException
Get a new prepared statement that is a shallow copy of the current one.- Specified by:
getClonein interfaceExecPreparedStatement- Returns:
- a new prepared statement
- Throws:
StandardException- on error
-
setCacheHolder
public void setCacheHolder(Cacheable cacheHolder)
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
isStorable
public boolean isStorable()
-
setRequiredPermissionsList
public void setRequiredPermissionsList(java.util.List<StatementPermission> requiredPermissionsList)
-
getRequiredPermissionsList
public java.util.List<StatementPermission> getRequiredPermissionsList()
- Specified by:
getRequiredPermissionsListin interfaceExecPreparedStatement- Returns:
- the list of permissions required to execute this statement. May be null if the database does not use SQL standard authorization
-
getVersionCounter
public final long getVersionCounter()
Description copied from interface:PreparedStatementGet the version counter. A change in the value indicates a recompile has happened.- Specified by:
getVersionCounterin interfacePreparedStatement- Returns:
- version counter
-
incrementVersionCounter
public final void incrementVersionCounter()
-
incrementExecutionCount
public int incrementExecutionCount()
Description copied from interface:ExecPreparedStatementIncrement and return the execution count for this statement.- Specified by:
incrementExecutionCountin interfaceExecPreparedStatement- Returns:
- execution count for this statement after the last compilation
- See Also:
ExecPreparedStatement.incrementExecutionCount()
-
setStalePlanCheckInterval
public void setStalePlanCheckInterval(int interval)
Description copied from interface:ExecPreparedStatementSet the stale plan check interval.- Specified by:
setStalePlanCheckIntervalin interfaceExecPreparedStatement- Parameters:
interval- the stale plan check interval- See Also:
ExecPreparedStatement.setStalePlanCheckInterval(int)
-
getStalePlanCheckInterval
public int getStalePlanCheckInterval()
Description copied from interface:ExecPreparedStatementGet the stale plan check interval.- Specified by:
getStalePlanCheckIntervalin interfaceExecPreparedStatement- Returns:
- the stale plan check interval, or zero if it has not been initialized yet
- See Also:
ExecPreparedStatement.getStalePlanCheckInterval()
-
getInitialRowCount
public long getInitialRowCount(int rsNum, long currentRowCount)Description copied from interface:ExecPreparedStatementGet the initial row count of the specified result set. If the initial row count has not yet been set, initialize it with the value of the current row count.- Specified by:
getInitialRowCountin interfaceExecPreparedStatement- Parameters:
rsNum- the result set to get the initial row count forcurrentRowCount- the current row count for the result set- Returns:
- the row count from the first execution of the result set
- See Also:
ExecPreparedStatement.getInitialRowCount(int, long)
-
getContextService
private static ContextService getContextService()
Privileged lookup of the ContextService. Must be private so that user code can't call this entry point.
-
getMonitor
private static ModuleFactory getMonitor()
Privileged Monitor lookup. Must be private so that user code can't call this entry point.
-
-