| java.lang.Object com.mckoi.database.interpret.Statement
All known Subclasses: com.mckoi.database.interpret.UpdateTable, com.mckoi.database.interpret.Function, com.mckoi.database.interpret.Insert, com.mckoi.database.interpret.DropTable, com.mckoi.database.interpret.Compact, com.mckoi.database.interpret.CreateTable, com.mckoi.database.interpret.Sequence, com.mckoi.database.interpret.DropTrigger, com.mckoi.database.interpret.Delete, com.mckoi.database.interpret.ViewManager, com.mckoi.database.interpret.Misc, com.mckoi.database.interpret.Set, com.mckoi.database.interpret.NoOp, com.mckoi.database.interpret.CreateTrigger, com.mckoi.database.interpret.Call, com.mckoi.database.interpret.CompleteTransaction, com.mckoi.database.interpret.PrivManager, com.mckoi.database.interpret.Show, com.mckoi.database.interpret.Select, com.mckoi.database.interpret.UserManager, com.mckoi.database.interpret.Schema, com.mckoi.database.interpret.AlterTable,
Statement | abstract public class Statement (Code) | | Provides a set of useful utility functions to use by all the
interpretted statements.
author: Tobias Downer |
cmd | protected StatementTree cmd(Code) | | The StatementTree object that is the container for the query.
|
query | protected SQLQuery query(Code) | | The SQLQuery object that was used to produce this statement.
|
table_list | protected Vector table_list(Code) | | The list of all FromTableInterface objects of resources referenced in
this query. (FromTableInterface)
|
Debug | final public DebugLogger Debug()(Code) | | Returns a DebugLogger object used to log debug commands.
|
addTable | protected void addTable(FromTableInterface table)(Code) | | Add an FromTableInterface that is used within this query. These tables
are used when we try to resolve a column name.
|
existsTableWithColumn | boolean existsTableWithColumn(Variable column_name)(Code) | | Given a fully resolved table name ( eg. Part.id ) this returns true if
there is a table with the given column name, otherwise false.
NOTE: Intended to be overwritten...
|
findTableInQuery | FromTableInterface findTableInQuery(String schema, String name)(Code) | | Returns the first FromTableInterface object that matches the given schema,
table reference. Returns null if no objects with the given schema/name
reference match.
|
findTableWithColumn | FromTableInterface findTableWithColumn(Variable column_name)(Code) | | Given a fully resolved table name ( eg. Part.id ) this method will
attempt to find the Table object that the column is in.
|
init | final public void init(DatabaseConnection db, StatementTree stree, SQLQuery query)(Code) | | Sets up internal variables for this statement for derived classes to use.
This is called before 'prepare' and 'isExclusive' is called.
It is assumed that any ? style parameters in the StatementTree will have
been resolved previous to a call to this method.
Parameters: db - the DatabaseConnection that will execute this statement. Parameters: stree - the StatementTree that contains the parsed content of thestatement being executed. |
prepare | abstract public void prepare() throws DatabaseException(Code) | | Prepares the statement with the given Database object. This is called
before the statement is evaluated. The prepare statement queries the
database and resolves information about the statement (for example, it
resolves column names and aliases and determines the tables that are
touched by this statement so we can lock the appropriate tables before
we evaluate).
NOTE: Care must be taken to ensure that all methods called here are safe
in as far as modifications to the data occuring. The rules for
safety should be as follows. If the database is in EXCLUSIVE mode,
then we need to wait until it's switched back to SHARED mode before
this method is called.
All collection of information done here should not involve any table
state info. except for column count, column names, column types, etc.
Queries such as obtaining the row count, selectable scheme information,
and certainly 'getCellContents' must never be called during prepare.
When prepare finishes, the affected tables are locked and the query is
safe to 'evaluate' at which time table state is safe to inspect.
|
reset | void reset()(Code) | | Resets this statement so it may be re-prepared and evaluated again.
Useful for repeating a query multiple times.
|
resolveAgainstAliases | ArrayList resolveAgainstAliases(Variable alias_name)(Code) | | Overwrite this method if your statement has some sort of column aliasing
capability (such as a select statement). Returns a list of all fully
qualified Variables that match the alias name, or an empty list if no
matches found.
By default, returns an empty list.
|
resolveColumn | Variable resolveColumn(Variable v)(Code) | | Attempts to resolve an ambiguous column name such as 'id' into a
Variable from the tables in this statement.
|
resolveExpression | void resolveExpression(Expression exp)(Code) | | Given an Expression, this will run through the expression and resolve
any variable names via the 'resolveVariableName' method here.
|
resolveTableName | TableName resolveTableName(String name, DatabaseConnection db)(Code) | | Resolves a TableName string (eg. 'Customer' 'APP.Customer' ) to a
TableName object. If the schema part of the table name is not present
then it is set to the current schema of the database connection. If the
database is ignoring the case then this will correctly resolve the table
to the cased version of the table name.
|
resolveTree | final public void resolveTree() throws DatabaseException(Code) | | Performs initial preparation on the contents of the StatementTree by
resolving all sub queries and mapping functions to their executable
forms.
Given a StatementTree and a Database context, this method will convert
all sub-queries found in the StatementTree to a Queriable object. In
other words, all StatementTree are converted to Select objects. The given
'database' object is used as the session to prepare the sub-queries
against.
This is called after 'init' and before 'prepare'.
|
resolveVariableName | public Variable resolveVariableName(Variable v)(Code) | | Given a Variable object, this will resolve the name into a column name
the database understands (substitutes aliases, etc).
|
|
|