columns, compareMode, EXCLUSIVE_LOCK, isHidden, READ_LOCK, TYPE_CACHED, TYPE_MEMORY, WRITE_LOCKAGGREGATE, comment, COMMENT, CONSTANT, CONSTRAINT, database, DOMAIN, FUNCTION_ALIAS, INDEX, RIGHT, ROLE, SCHEMA, SEQUENCE, SETTING, SYNONYM, TABLE_OR_VIEW, trace, TRIGGER, USERADD_PLAN_INFORMATION, DEFAULT_SQL_FLAGS, NO_CASTS, QUOTE_ONLY_WHEN_REQUIRED, REPLACE_LOBS_FOR_TRACE, TRACE_SQL_FLAGS| Constructor and Description |
|---|
TableView(Schema schema,
int id,
java.lang.String name,
java.lang.String querySQL,
java.util.ArrayList<Parameter> params,
Column[] columnTemplates,
SessionLocal session,
boolean allowRecursive,
boolean literalsChecked,
boolean isTableExpression,
boolean isTemporary) |
| Modifier and Type | Method and Description |
|---|---|
void |
addDependencies(java.util.HashSet<DbObject> dependencies)
Add all objects that this table depends on to the hash set.
|
Index |
addIndex(SessionLocal session,
java.lang.String indexName,
int indexId,
IndexColumn[] cols,
int uniqueColumnCount,
IndexType indexType,
boolean create,
java.lang.String indexComment)
Create an index for this table
|
void |
addRow(SessionLocal session,
Row row)
Add a row to the table and all indexes.
|
boolean |
canDrop()
Check if this table can be dropped.
|
boolean |
canGetRowCount(SessionLocal session)
Check if the row count can be retrieved quickly.
|
boolean |
canReference()
Check if this table can be referenced.
|
void |
checkSupportAlter()
Check if this table supports ALTER TABLE.
|
static void |
clearIndexCaches(Database database)
Clear the cached indexes for all sessions.
|
void |
close(SessionLocal session)
Close the table object and flush changes.
|
static java.util.List<Column> |
createQueryColumnTemplateList(java.lang.String[] cols,
Query theQuery,
java.lang.String[] querySQLOutput)
Creates a list of column templates from a query (usually from WITH query,
but could be any query)
|
static Table |
createShadowTableForRecursiveTableExpression(boolean isTemporary,
SessionLocal targetSession,
java.lang.String cteViewName,
Schema schema,
java.util.List<Column> columns,
Database db)
Create a table for a recursive query.
|
static TableView |
createTableViewMaybeRecursive(Schema schema,
int id,
java.lang.String name,
java.lang.String querySQL,
java.util.ArrayList<Parameter> parameters,
Column[] columnTemplates,
SessionLocal session,
boolean literalsChecked,
boolean isTableExpression,
boolean isTemporary,
Database db)
Create a view.
|
static TableView |
createTempView(SessionLocal session,
User owner,
java.lang.String name,
Column[] columnTemplates,
Query query,
Query topQuery)
Create a temporary view out of the given query.
|
static void |
destroyShadowTableForRecursiveExpression(boolean isTemporary,
SessionLocal targetSession,
Table recursiveTable)
Remove a table for a recursive query.
|
PlanItem |
getBestPlanItem(SessionLocal session,
int[] masks,
TableFilter[] filters,
int filter,
SortOrder sortOrder,
AllColumnsForPlan allColumnsSet)
Get the best plan for the given search mask.
|
java.lang.String |
getCreateSQL()
Construct the CREATE ...
|
java.lang.String |
getCreateSQL(boolean orReplace,
boolean force)
Generate "CREATE" SQL statement for the view.
|
java.lang.String |
getCreateSQLForCopy(Table table,
java.lang.String quotedName)
Build a SQL statement to re-create the object, or to create a copy of the
object with a different name or referencing a different table
|
java.lang.String |
getDropSQL()
Construct a DROP ...
|
java.util.ArrayList<Index> |
getIndexes()
Get all indexes for this table.
|
long |
getMaxDataModificationId()
Get the last data modification id.
|
User |
getOwner() |
int |
getParameterOffset(java.util.ArrayList<Parameter> additionalParameters)
Get the index of the first parameter.
|
java.lang.String |
getQuery() |
ResultInterface |
getRecursiveResult() |
long |
getRowCount(SessionLocal session)
Get the row count for this table.
|
long |
getRowCountApproximation(SessionLocal session)
Get the approximated row count for this table.
|
Index |
getScanIndex(SessionLocal session)
Get the scan index to iterate through all rows.
|
Index |
getScanIndex(SessionLocal session,
int[] masks,
TableFilter[] filters,
int filter,
SortOrder sortOrder,
AllColumnsForPlan allColumnsSet)
Get the scan index for this table.
|
java.lang.StringBuilder |
getSQL(java.lang.StringBuilder builder,
int sqlFlags)
Appends the SQL statement of this object to the specified builder.
|
java.util.List<Table> |
getTables() |
TableType |
getTableType()
Get the table type name
|
Query |
getTopQuery() |
boolean |
isDeterministic()
Check if the table is deterministic.
|
boolean |
isInsertable()
Returns whether this table is insertable.
|
boolean |
isInvalid()
Check if this view is currently invalid.
|
boolean |
isQueryComparable()
Check whether the table (or view) contains no columns that prevent index
conditions to be used.
|
boolean |
isRecursive() |
boolean |
isRecursiveQueryDetected()
Was query recursion detected during compiling.
|
boolean |
isView() |
DbException |
recompile(SessionLocal session,
boolean force,
boolean clearIndexCache)
Re-compile the view query and all views that depend on this object.
|
void |
removeChildrenAndResources(SessionLocal session)
Delete all dependent children objects and resources of this object.
|
void |
removeRow(SessionLocal session,
Row row)
Remove a row from the table and all indexes.
|
void |
replace(java.lang.String querySQL,
Column[] newColumnTemplates,
SessionLocal session,
boolean recursive,
boolean force,
boolean literalsChecked)
Try to replace the SQL statement of the view and re-compile this and all
dependent views.
|
void |
setRecursiveResult(ResultInterface value) |
long |
truncate(SessionLocal session)
Remove all rows from the table and indexes.
|
addConstraint, addDependentView, addSequence, addSynonym, addTrigger, canTruncate, checkDeadlock, checkWritingAllowed, compareValues, convertInsertRow, convertUpdateRow, createRow, doesColumnExist, dropMultipleColumnsConstraintsAndIndexes, findColumn, findPrimaryKey, fire, fireAfterRow, fireBeforeRow, fireRow, getCheckForeignKeyConstraints, getChildren, getColumn, getColumn, getColumn, getColumns, getCompareMode, getConstraints, getDependentViews, getDiskSpaceUsed, getIdentityColumn, getIndex, getIndexForColumn, getMainIndexColumn, getNullRow, getOnCommitDrop, getOnCommitTruncate, getPrimaryKey, getRow, getRowFactory, getRowIdColumn, getSQLTableType, getTemplateRow, getTemplateSimpleRow, getTriggers, getType, hasSelectTrigger, isGlobalTemporary, isHidden, isLockedExclusively, isLockedExclusivelyBy, isPersistData, isPersistIndexes, isRowLockable, isTableExpression, lock, lockRow, removeColumnExpressionsDependencies, removeConstraint, removeDependentView, removeIndex, removeIndexOrTransferOwnership, removeSequence, removeSynonym, removeTrigger, rename, renameColumn, setCheckForeignKeyConstraints, setColumns, setHidden, setOnCommitDrop, setOnCommitTruncate, setTableExpression, unlock, updateRow, updateRowsgetSchema, getSQLcheckRename, getComment, getCreateSQLForMeta, getDatabase, getId, getModificationId, getName, invalidate, isTemporary, isValid, setComment, setModified, setObjectName, setTemporary, toStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetTraceSQLpublic TableView(Schema schema, int id, java.lang.String name, java.lang.String querySQL, java.util.ArrayList<Parameter> params, Column[] columnTemplates, SessionLocal session, boolean allowRecursive, boolean literalsChecked, boolean isTableExpression, boolean isTemporary)
public void replace(java.lang.String querySQL,
Column[] newColumnTemplates,
SessionLocal session,
boolean recursive,
boolean force,
boolean literalsChecked)
querySQL - the SQL statementnewColumnTemplates - the columnssession - the sessionrecursive - whether this is a recursive viewforce - if errors should be ignoredliteralsChecked - if literals have been checkedpublic DbException recompile(SessionLocal session, boolean force, boolean clearIndexCache)
session - the sessionforce - if exceptions should be ignoredclearIndexCache - if we need to clear view index cachepublic boolean isInvalid()
public PlanItem getBestPlanItem(SessionLocal session, int[] masks, TableFilter[] filters, int filter, SortOrder sortOrder, AllColumnsForPlan allColumnsSet)
TablegetBestPlanItem in class Tablesession - the sessionmasks - per-column comparison bit masks, null means 'always false',
see constants in IndexConditionfilters - all joined table filtersfilter - the current table filter indexsortOrder - the sort orderallColumnsSet - the set of all columnspublic boolean isQueryComparable()
TableisQueryComparable in class Tablepublic Query getTopQuery()
public java.lang.String getDropSQL()
DbObjectgetDropSQL in class DbObjectpublic java.lang.String getCreateSQLForCopy(Table table, java.lang.String quotedName)
DbObjectgetCreateSQLForCopy in class Tabletable - the new tablequotedName - the quoted namepublic java.lang.String getCreateSQL()
DbObjectgetCreateSQL in class DbObjectpublic java.lang.String getCreateSQL(boolean orReplace,
boolean force)
orReplace - if true, then include the OR REPLACE clauseforce - if true, then include the FORCE clausepublic void close(SessionLocal session)
Tablepublic Index addIndex(SessionLocal session, java.lang.String indexName, int indexId, IndexColumn[] cols, int uniqueColumnCount, IndexType indexType, boolean create, java.lang.String indexComment)
TableaddIndex in class Tablesession - the sessionindexName - the name of the indexindexId - the idcols - the index columnsuniqueColumnCount - the count of unique columnsindexType - the index typecreate - whether this is a new indexindexComment - the commentpublic boolean isInsertable()
TableisInsertable in class Tablepublic void removeRow(SessionLocal session, Row row)
Tablepublic void addRow(SessionLocal session, Row row)
Tablepublic void checkSupportAlter()
TablecheckSupportAlter in class Tablepublic long truncate(SessionLocal session)
Tablepublic long getRowCount(SessionLocal session)
TablegetRowCount in class Tablesession - the sessionpublic boolean canGetRowCount(SessionLocal session)
TablecanGetRowCount in class Tablesession - the sessionpublic boolean canDrop()
Tablepublic TableType getTableType()
TablegetTableType in class Tablepublic void removeChildrenAndResources(SessionLocal session)
DbObjectremoveChildrenAndResources in class Tablesession - the sessionpublic static void clearIndexCaches(Database database)
database - the databasepublic java.lang.StringBuilder getSQL(java.lang.StringBuilder builder,
int sqlFlags)
HasSQLgetSQL in interface HasSQLgetSQL in class SchemaObjectbuilder - string buildersqlFlags - formatting flagspublic java.lang.String getQuery()
public Index getScanIndex(SessionLocal session)
TablegetScanIndex in class Tablesession - the sessionpublic Index getScanIndex(SessionLocal session, int[] masks, TableFilter[] filters, int filter, SortOrder sortOrder, AllColumnsForPlan allColumnsSet)
TablegetScanIndex in class Tablesession - the sessionmasks - the search maskfilters - the table filtersfilter - the filter indexsortOrder - the sort orderallColumnsSet - all columnspublic boolean canReference()
TablecanReference in class Tablepublic java.util.ArrayList<Index> getIndexes()
TablegetIndexes in class Tablepublic long getMaxDataModificationId()
TablegetMaxDataModificationId in class Tablepublic User getOwner()
public static TableView createTempView(SessionLocal session, User owner, java.lang.String name, Column[] columnTemplates, Query query, Query topQuery)
session - the sessionowner - the owner of the queryname - the view namecolumnTemplates - column templates, or nullquery - the querytopQuery - the top level querypublic long getRowCountApproximation(SessionLocal session)
TablegetRowCountApproximation in class Tablesession - the sessionpublic int getParameterOffset(java.util.ArrayList<Parameter> additionalParameters)
additionalParameters - additional parameterspublic boolean isRecursive()
public boolean isDeterministic()
TableisDeterministic in class Tablepublic void setRecursiveResult(ResultInterface value)
public ResultInterface getRecursiveResult()
public void addDependencies(java.util.HashSet<DbObject> dependencies)
TableaddDependencies in class Tabledependencies - the current set of dependenciespublic boolean isRecursiveQueryDetected()
public java.util.List<Table> getTables()
public static TableView createTableViewMaybeRecursive(Schema schema, int id, java.lang.String name, java.lang.String querySQL, java.util.ArrayList<Parameter> parameters, Column[] columnTemplates, SessionLocal session, boolean literalsChecked, boolean isTableExpression, boolean isTemporary, Database db)
schema - the schemaid - the view idname - the view namequerySQL - the queryparameters - the parameterscolumnTemplates - the columnssession - the sessionliteralsChecked - whether literals in the query are checkedisTableExpression - if this is a table expressionisTemporary - whether the view is persisteddb - the databasepublic static java.util.List<Column> createQueryColumnTemplateList(java.lang.String[] cols, Query theQuery, java.lang.String[] querySQLOutput)
cols - - an optional list of column names (can be specified by WITH
clause overriding usual select names)theQuery - - the query object we want the column list forquerySQLOutput - - array of length 1 to receive extra 'output' field
in addition to return value - containing the SQL query of the
Query objectpublic static Table createShadowTableForRecursiveTableExpression(boolean isTemporary, SessionLocal targetSession, java.lang.String cteViewName, Schema schema, java.util.List<Column> columns, Database db)
isTemporary - whether the table is persistedtargetSession - the sessioncteViewName - the nameschema - the schemacolumns - the columnsdb - the databasepublic static void destroyShadowTableForRecursiveExpression(boolean isTemporary,
SessionLocal targetSession,
Table recursiveTable)
isTemporary - whether the table is persistedtargetSession - the sessionrecursiveTable - the table