public abstract class Table extends SchemaObjectBase
Modifier and Type | Field and Description |
---|---|
protected Column[] |
columns
The columns of this table.
|
protected CompareMode |
compareMode
The compare mode used for this table.
|
static String |
EXTERNAL_TABLE_ENGINE
The table type name for external table engines.
|
protected boolean |
isHidden
Protected tables are not listed in the meta data and are excluded when
using the SCRIPT command.
|
static String |
SYSTEM_TABLE
The table type name for system tables.
|
static String |
TABLE
The table type name for regular data tables.
|
static String |
TABLE_LINK
The table type name for linked tables.
|
static int |
TYPE_CACHED
The table type that means this table is a regular persistent table.
|
static int |
TYPE_MEMORY
The table type that means this table is a regular persistent table.
|
static String |
VIEW
The table type name for views.
|
comment, database, trace
AGGREGATE, COMMENT, CONSTANT, CONSTRAINT, FUNCTION_ALIAS, INDEX, RIGHT, ROLE, SCHEMA, SEQUENCE, SETTING, TABLE_OR_VIEW, TRIGGER, USER, USER_DATATYPE
Constructor and Description |
---|
Table(Schema schema,
int id,
String name,
boolean persistIndexes,
boolean persistData) |
Modifier and Type | Method and Description |
---|---|
void |
addConstraint(Constraint constraint)
Add a constraint to the table.
|
void |
addDependencies(HashSet<DbObject> dependencies)
Add all objects that this table depends on to the hash set.
|
abstract Index |
addIndex(Session session,
String indexName,
int indexId,
IndexColumn[] cols,
IndexType indexType,
boolean create,
String indexComment)
Create an index for this table
|
abstract void |
addRow(Session session,
Row row)
Add a row to the table and all indexes.
|
void |
addSequence(Sequence sequence)
Add a sequence to this table.
|
void |
addTrigger(TriggerObject trigger)
Add a trigger to this table.
|
void |
addView(TableView view)
Add a view to this table.
|
abstract boolean |
canDrop()
Check if this table can be dropped.
|
abstract boolean |
canGetRowCount()
Check if the row count can be retrieved quickly.
|
boolean |
canReference()
Check if this table can be referenced.
|
boolean |
canTruncate()
Check if this table can be truncated.
|
ArrayList<Session> |
checkDeadlock(Session session,
Session clash,
Set<Session> visited)
Check if a deadlock occurred.
|
abstract void |
checkSupportAlter()
Check if this table supports ALTER TABLE.
|
void |
checkWritingAllowed()
Tests if the table can be written.
|
abstract void |
close(Session session)
Close the table object and flush changes.
|
void |
commit(short operation,
Row row)
Commit an operation (when using multi-version concurrency).
|
int |
compareTypeSave(Value a,
Value b)
Compare two values with the current comparison mode.
|
boolean |
doesColumnExist(String columnName)
Does the column with the given name exist?
|
void |
dropSingleColumnConstraintsAndIndexes(Session session,
Column col)
Check that this column is not referenced by a multi-column constraint or
multi-column index.
|
Index |
findPrimaryKey()
Get the primary key index if there is one, or null if there is none.
|
void |
fire(Session session,
int type,
boolean beforeAction)
Fire the triggers for this table.
|
void |
fireAfterRow(Session session,
Row oldRow,
Row newRow,
boolean rollback)
Fire all triggers that need to be called after a row is updated.
|
boolean |
fireBeforeRow(Session session,
Row oldRow,
Row newRow)
Fire all triggers that need to be called before a row is updated.
|
boolean |
fireRow()
Check if row based triggers or constraints are defined.
|
PlanItem |
getBestPlanItem(Session session,
int[] masks)
Get the best plan for the given search mask.
|
boolean |
getCheckForeignKeyConstraints() |
ArrayList<DbObject> |
getChildren()
Get the list of dependent children (for tables, this includes indexes and
so on).
|
Column |
getColumn(int index)
Get the column at the given index.
|
Column |
getColumn(String columnName)
Get the column with the given name.
|
Column[] |
getColumns() |
CompareMode |
getCompareMode() |
ArrayList<Constraint> |
getConstraints() |
String |
getCreateSQLForCopy(Table table,
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
|
Value |
getDefaultValue(Session session,
Column column)
Get or generate a default value for the given column.
|
abstract ArrayList<Index> |
getIndexes()
Get all indexes for this table.
|
Index |
getIndexForColumn(Column column,
boolean first)
Get the index that has the given column as the first element.
|
abstract long |
getMaxDataModificationId()
Get the last data modification id.
|
boolean |
getOnCommitDrop() |
boolean |
getOnCommitTruncate() |
Index |
getPrimaryKey() |
abstract long |
getRowCount(Session session)
Get the row count for this table.
|
abstract long |
getRowCountApproximation()
Get the approximated row count for this table.
|
Column |
getRowIdColumn()
Get the row id column if this table has one.
|
abstract Index |
getScanIndex(Session session)
Get the scan index to iterate through all rows.
|
abstract String |
getTableType()
Get the table type name
|
Row |
getTemplateRow() |
SearchRow |
getTemplateSimpleRow(boolean singleColumn)
Get a new simple row object.
|
int |
getType()
Get the object type.
|
abstract Index |
getUniqueIndex()
Get any unique index for this table if one exists.
|
ArrayList<TableView> |
getViews() |
boolean |
hasSelectTrigger()
Check whether this table has a select trigger.
|
abstract boolean |
isDeterministic()
Check if the table is deterministic.
|
boolean |
isGlobalTemporary() |
boolean |
isHidden()
Check whether this is a hidden object that doesn't appear in the meta
data and in the script, and is not dropped on DROP ALL OBJECTS.
|
abstract boolean |
isLockedExclusively()
Check if this table is locked exclusively.
|
boolean |
isLockedExclusivelyBy(Session session)
Check if the table is exclusively locked by this session.
|
boolean |
isPersistData() |
boolean |
isPersistIndexes() |
abstract void |
lock(Session session,
boolean exclusive,
boolean force)
Lock the table for the given session.
|
void |
removeChildrenAndResources(Session session)
Remove all dependent objects and free all resources (files, blocks in
files) of this object.
|
void |
removeConstraint(Constraint constraint)
Remove the given constraint from the list.
|
void |
removeIndex(Index index)
Remove the given index from the list.
|
void |
removeIndexOrTransferOwnership(Session session,
Index index)
If the index is still required by a constraint, transfer the ownership to
it.
|
abstract void |
removeRow(Session session,
Row row)
Remove a row from the table and all indexes.
|
void |
removeSequence(Session session,
Sequence sequence)
Remove a sequence from the table.
|
void |
removeTrigger(TriggerObject trigger)
Remove the given trigger from the list.
|
void |
removeView(TableView view)
Remove the given view from the list.
|
void |
rename(String newName)
Rename the object.
|
void |
renameColumn(Column column,
String newName)
Rename a column of this table.
|
void |
setCheckForeignKeyConstraints(Session session,
boolean enabled,
boolean checkExisting)
Enable or disable foreign key constraint checking for this table.
|
protected void |
setColumns(Column[] columns) |
void |
setHidden(boolean hidden) |
void |
setOnCommitDrop(boolean onCommitDrop) |
void |
setOnCommitTruncate(boolean onCommitTruncate) |
abstract void |
truncate(Session session)
Remove all rows from the table and indexes.
|
abstract void |
unlock(Session s)
Release the lock for this session.
|
void |
updateRows(Prepared prepared,
Session session,
RowList rows)
Update a list of rows in this table.
|
void |
validateConvertUpdateSequence(Session session,
Row row)
Validate all values in this row, convert the values if required, and
update the sequence values if required.
|
getSchema, getSQL, initSchemaObjectBase
checkRename, getComment, getCreateSQL, getDatabase, getDropSQL, getId, getModificationId, getName, initDbObjectBase, invalidate, isTemporary, setComment, setModified, setObjectName, setTemporary, toString
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
checkRename, getComment, getCreateSQL, getDatabase, getDropSQL, getId, getName, isTemporary, setComment, setTemporary
public static final int TYPE_CACHED
public static final int TYPE_MEMORY
public static final String TABLE_LINK
public static final String SYSTEM_TABLE
public static final String TABLE
public static final String VIEW
public static final String EXTERNAL_TABLE_ENGINE
protected Column[] columns
protected CompareMode compareMode
protected boolean isHidden
public void rename(String newName)
DbObject
rename
in interface DbObject
rename
in class DbObjectBase
newName
- the new namepublic abstract void lock(Session session, boolean exclusive, boolean force)
session
- the sessionexclusive
- true for write locks, false for read locksforce
- lock even in the MVCC modeDbException
- if a lock timeout occurredpublic abstract void close(Session session)
session
- the sessionpublic abstract void unlock(Session s)
s
- the sessionpublic abstract Index addIndex(Session session, String indexName, int indexId, IndexColumn[] cols, IndexType indexType, boolean create, String indexComment)
session
- the sessionindexName
- the name of the indexindexId
- the idcols
- the index columnsindexType
- the index typecreate
- whether this is a new indexindexComment
- the commentpublic abstract void removeRow(Session session, Row row)
session
- the sessionrow
- the rowpublic abstract void truncate(Session session)
session
- the sessionpublic abstract void addRow(Session session, Row row)
session
- the sessionrow
- the rowDbException
- if a constraint was violatedpublic void commit(short operation, Row row)
operation
- the operationrow
- the rowpublic abstract void checkSupportAlter()
DbException
- if it is not supportedpublic abstract String getTableType()
public abstract Index getScanIndex(Session session)
session
- the sessionpublic abstract Index getUniqueIndex()
public abstract ArrayList<Index> getIndexes()
public abstract boolean isLockedExclusively()
public abstract long getMaxDataModificationId()
public abstract boolean isDeterministic()
public abstract boolean canGetRowCount()
public boolean canReference()
public abstract boolean canDrop()
public abstract long getRowCount(Session session)
session
- the sessionpublic abstract long getRowCountApproximation()
public Column getRowIdColumn()
public String getCreateSQLForCopy(Table table, String quotedName)
DbObject
table
- the new tablequotedName
- the quoted namepublic void addDependencies(HashSet<DbObject> dependencies)
dependencies
- the current set of dependenciespublic ArrayList<DbObject> getChildren()
DbObject
getChildren
in interface DbObject
getChildren
in class DbObjectBase
protected void setColumns(Column[] columns)
public void renameColumn(Column column, String newName)
column
- the column to renamenewName
- the new column namepublic boolean isLockedExclusivelyBy(Session session)
session
- the sessionpublic void updateRows(Prepared prepared, Session session, RowList rows)
prepared
- the prepared statementsession
- the sessionrows
- a list of row pairs of the form old row, new row, old row,
new row,...public void removeChildrenAndResources(Session session)
DbObjectBase
removeChildrenAndResources
in interface DbObject
removeChildrenAndResources
in class DbObjectBase
session
- the sessionpublic void dropSingleColumnConstraintsAndIndexes(Session session, Column col)
session
- the sessioncol
- the columnDbException
- if the column is referenced by multi-column
constraints or indexespublic Row getTemplateRow()
public SearchRow getTemplateSimpleRow(boolean singleColumn)
singleColumn
- if only one value need to be storedpublic Column[] getColumns()
public int getType()
DbObject
public Column getColumn(int index)
index
- the column index (0, 1,...)public Column getColumn(String columnName)
columnName
- the column nameDbException
- if the column was not foundpublic boolean doesColumnExist(String columnName)
columnName
- the column namepublic PlanItem getBestPlanItem(Session session, int[] masks)
session
- the sessionmasks
- null means 'always false'public Index findPrimaryKey()
public Index getPrimaryKey()
public void validateConvertUpdateSequence(Session session, Row row)
session
- the sessionrow
- the rowpublic void removeIndex(Index index)
index
- the index to removepublic void removeView(TableView view)
view
- the view to removepublic void removeConstraint(Constraint constraint)
constraint
- the constraint to removepublic void removeSequence(Session session, Sequence sequence)
session
- the sessionsequence
- the sequence to removepublic void removeTrigger(TriggerObject trigger)
trigger
- the trigger to removepublic void addView(TableView view)
view
- the view to addpublic void addConstraint(Constraint constraint)
constraint
- the constraint to addpublic ArrayList<Constraint> getConstraints()
public void addSequence(Sequence sequence)
sequence
- the sequence to addpublic void addTrigger(TriggerObject trigger)
trigger
- the trigger to addpublic void fire(Session session, int type, boolean beforeAction)
session
- the sessiontype
- the trigger typebeforeAction
- whether 'before' triggers should be calledpublic boolean hasSelectTrigger()
public boolean fireRow()
public boolean fireBeforeRow(Session session, Row oldRow, Row newRow)
session
- the sessionoldRow
- the old data or null for an insertnewRow
- the new data or null for a deletepublic void fireAfterRow(Session session, Row oldRow, Row newRow, boolean rollback)
session
- the sessionoldRow
- the old data or null for an insertnewRow
- the new data or null for a deleterollback
- when the operation occurred within a rollbackpublic boolean isGlobalTemporary()
public boolean canTruncate()
public void setCheckForeignKeyConstraints(Session session, boolean enabled, boolean checkExisting)
session
- the sessionenabled
- true if checking should be enabledcheckExisting
- true if existing rows must be checked during this callpublic boolean getCheckForeignKeyConstraints()
public Index getIndexForColumn(Column column, boolean first)
column
- the columnfirst
- if the min value should be returnedpublic boolean getOnCommitDrop()
public void setOnCommitDrop(boolean onCommitDrop)
public boolean getOnCommitTruncate()
public void setOnCommitTruncate(boolean onCommitTruncate)
public void removeIndexOrTransferOwnership(Session session, Index index)
session
- the sessionindex
- the index that is no longer requiredpublic ArrayList<Session> checkDeadlock(Session session, Session clash, Set<Session> visited)
session
- the session to be tested forclash
- set with sessions already visited, and null when starting
verificationvisited
- set with sessions already visited, and null when starting
verificationpublic boolean isPersistIndexes()
public boolean isPersistData()
public int compareTypeSave(Value a, Value b)
a
- the first valueb
- the second valuepublic CompareMode getCompareMode()
public void checkWritingAllowed()
public Value getDefaultValue(Session session, Column column)
session
- the sessioncolumn
- the columnpublic boolean isHidden()
SchemaObject
isHidden
in interface SchemaObject
isHidden
in class SchemaObjectBase
public void setHidden(boolean hidden)
Copyright © 2012 JBoss by Red Hat. All Rights Reserved.