Class Prepared
java.lang.Object
org.h2.command.Prepared
- Direct Known Subclasses:
BackupCommand, Call, DataChangeStatement, DefineCommand, ExecuteImmediate, ExecuteProcedure, Explain, Help, NoOperation, Query, ScriptBase, Set, SetSessionCharacteristics, TransactionCommand
A prepared statement.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Commandprotected booleanWhether to create a new object (for indexes).Common table expressions (CTE) in queries require us to create temporary views, which need to be cleaned up once a command is done executing.private longprivate longThe list of parameters.private intUsed to preserve object identities on database startup.protected booleanIf the query should be prepared before each execution.private intprotected SessionLocalThe session.protected StringThe SQL string.The SQL tokens. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidCheck if this statement was canceled.protected voidCheck if all parameters have been set.voidcollectDependencies(HashSet<DbObject> dependencies) Find and collect all DbObjects, this Prepared depends on.longGet the current row number.(package private) longGet the meta data modification id of the database when this statement was compiled.protected intGet the current object id, or get a new id from the database.Get the parameter list.intGet the object id to use for the database object that is created in this statement.getPlanSQL(int sqlFlags) Get the SQL statement with the execution plan.final SessionLocalstatic StringgetSimpleSQL(Expression[] list) Get the SQL snippet of the expression list.final StringgetSQL()Get the SQL statement.Get the SQL tokens.abstract intgetType()Get the command type as defined in CommandInterfacebooleanbooleanisQuery()Check if this object is a query.booleanCheck if this command is read only.abstract booleanCheck if this command is transactional.booleanCheck if the statement needs to be re-compiled.voidprepare()Prepare this statement.query(long maxrows) Execute the query.abstract ResultInterfaceGet an empty result set containing the meta data.voidsetCommand(Command command) Set the command.voidsetCteCleanups(List<TableView> cteCleanups) Set the temporary views created for CTE's.voidsetCurrentRowNumber(long rowNumber) Set the current row number.(package private) voidsetModificationMetaId(long id) Set the meta data modification id of this statement.voidsetParameterList(ArrayList<Parameter> parameters) Set the parameter list of this statement.voidsetPersistedObjectId(int i) Set the persisted object id for this statement.voidsetPrepareAlways(boolean prepareAlways) Set the prepare always flag.private voidNotifies query progress via the DatabaseEventListenerprotected DbExceptionsetRow(DbException e, long rowId, String values) Set the SQL statement of the exception to the given row.voidsetSession(SessionLocal currentSession) Set the session for this statement.final voidSet the SQL statement.toString()Convert the statement to a String.(package private) voidtrace(long startTimeNanos, long rowCount) Print information about the statement executed if info trace level is enabled.longupdate()Execute the statement.
-
Field Details
-
session
The session. -
sqlStatement
The SQL string. -
sqlTokens
-
create
protected boolean createWhether to create a new object (for indexes). -
parameters
-
prepareAlways
protected boolean prepareAlwaysIf the query should be prepared before each execution. This is set for queries with LIKE ?, because the query plan depends on the parameter value. -
modificationMetaId
private long modificationMetaId -
command
-
persistedObjectId
private int persistedObjectIdUsed to preserve object identities on database startup.0if object is not stored,-1if object is stored and its ID is already read,>0if object is stored and its id is not yet read. -
currentRowNumber
private long currentRowNumber -
rowScanCount
private int rowScanCount -
cteCleanups
-
-
Constructor Details
-
Prepared
-
-
Method Details
-
isTransactional
public abstract boolean isTransactional()Check if this command is transactional. If it is not, then it forces the current transaction to commit.- Returns:
- true if it is
-
queryMeta
Get an empty result set containing the meta data.- Returns:
- the result set
-
getType
public abstract int getType()Get the command type as defined in CommandInterface- Returns:
- the statement type
-
isReadOnly
public boolean isReadOnly()Check if this command is read only.- Returns:
- true if it is
-
needRecompile
public boolean needRecompile()Check if the statement needs to be re-compiled.- Returns:
- true if it must
-
getModificationMetaId
long getModificationMetaId()Get the meta data modification id of the database when this statement was compiled.- Returns:
- the meta data modification id
-
setModificationMetaId
void setModificationMetaId(long id) Set the meta data modification id of this statement.- Parameters:
id- the new id
-
setParameterList
-
getParameters
-
checkParameters
protected void checkParameters()Check if all parameters have been set.- Throws:
DbException- if any parameter has not been set
-
setCommand
-
isQuery
public boolean isQuery()Check if this object is a query.- Returns:
- true if it is
-
prepare
public void prepare()Prepare this statement. -
update
public long update()Execute the statement.- Returns:
- the update count
- Throws:
DbException- if it is a query
-
query
Execute the query.- Parameters:
maxrows- the maximum number of rows to return- Returns:
- the result set
- Throws:
DbException- if it is not a query
-
setSQL
-
getSQL
-
getSQLTokens
-
getPersistedObjectId
public int getPersistedObjectId()Get the object id to use for the database object that is created in this statement. This id is only set when the object is already persisted. If not set, this method returns 0.- Returns:
- the object id or 0 if not set
-
getObjectId
protected int getObjectId()Get the current object id, or get a new id from the database. The object id is used when creating new database object (CREATE statement). This method may be called only once.- Returns:
- the object id
-
getPlanSQL
Get the SQL statement with the execution plan.- Parameters:
sqlFlags- formatting flags- Returns:
- the execution plan
-
checkCanceled
public void checkCanceled()Check if this statement was canceled.- Throws:
DbException- if it was canceled
-
setPersistedObjectId
public void setPersistedObjectId(int i) Set the persisted object id for this statement.- Parameters:
i- the object id
-
setSession
Set the session for this statement.- Parameters:
currentSession- the new session
-
trace
void trace(long startTimeNanos, long rowCount) Print information about the statement executed if info trace level is enabled.- Parameters:
startTimeNanos- when the statement was startedrowCount- the query or update row count
-
setPrepareAlways
public void setPrepareAlways(boolean prepareAlways) Set the prepare always flag. If set, the statement is re-compiled whenever it is executed.- Parameters:
prepareAlways- the new value
-
setCurrentRowNumber
public void setCurrentRowNumber(long rowNumber) Set the current row number.- Parameters:
rowNumber- the row number
-
getCurrentRowNumber
public long getCurrentRowNumber()Get the current row number.- Returns:
- the row number
-
setProgress
private void setProgress()Notifies query progress via the DatabaseEventListener -
toString
-
getSimpleSQL
Get the SQL snippet of the expression list.- Parameters:
list- the expression list- Returns:
- the SQL snippet
-
setRow
Set the SQL statement of the exception to the given row.- Parameters:
e- the exceptionrowId- the row numbervalues- the values of the row- Returns:
- the exception
-
isCacheable
public boolean isCacheable() -
getCteCleanups
-
setCteCleanups
-
getSession
-
collectDependencies
-