public class CompilerContextImpl extends ContextImpl implements CompilerContext
| Modifier and Type | Field and Description |
|---|---|
private java.lang.String |
classPrefix |
private SchemaDescriptor |
compilationSchema |
private ProviderList |
currentAPL |
private Dependent |
currentDependent |
private int |
currPrivType |
private java.lang.Object |
cursorInfo |
private java.util.ArrayList |
defaultSchemaStack
Saved execution time default schema, if we need to change it
temporarily.
|
private DependencyManager |
dm |
private boolean |
firstOnStack |
private boolean |
inUse |
private LanguageConnectionContext |
lcc |
private LanguageConnectionFactory |
lcf |
private long |
nextClassName |
private int |
nextColumnNumber |
private int |
nextEquivalenceClass |
private int |
nextResultSetNumber |
private int |
nextSubqueryNumber |
private int |
nextTableNumber |
private DataTypeDescriptor[] |
parameterDescriptors |
private java.util.List |
parameterList |
private Parser |
parser |
private java.util.ArrayList |
privTypeStack |
private java.util.HashMap |
referencedSequences |
private int |
reliability |
private java.util.HashMap |
requiredColumnPrivileges |
private java.util.HashMap |
requiredRolePrivileges |
private java.util.HashMap |
requiredRoutinePrivileges |
private java.util.HashMap |
requiredSchemaPrivileges |
private java.util.HashMap |
requiredTablePrivileges |
private java.util.HashMap |
requiredUsagePrivileges |
private boolean |
returnParameterFlag |
private java.util.List |
savedObjects |
private int |
scanIsolationLevel |
private SortCostController |
sortCostController |
private java.util.HashMap |
storeCostControllers
Map that contains all store cost controllers opened in this compiler
context.
|
private TypeCompilerFactory |
typeCompilerFactory |
private java.sql.SQLWarning |
warnings |
AGGREGATE_RESTRICTION, CHECK_CONSTRAINT, COLUMN_REFERENCE_ILLEGAL, CONDITIONAL_RESTRICTION, CONTEXT_ID, CURRENT_CONNECTION_ILLEGAL, DATETIME_ILLEGAL, DEFAULT_RESTRICTION, DIAGNOSTICS_ILLEGAL, FUNCTION_CALL_ILLEGAL, GENERATION_CLAUSE_RESTRICTION, GROUP_BY_RESTRICTION, HAVING_CLAUSE_RESTRICTION, IGNORE_MISSING_CLASSES, INTERNAL_SQL_ILLEGAL, INTERNAL_SQL_LEGAL, MODIFIES_SQL_DATA_PROCEDURE_ILLEGAL, NEXT_VALUE_FOR_ILLEGAL, NON_DETERMINISTIC_ILLEGAL, ON_CLAUSE_RESTRICTION, SCHEMA_ILLEGAL, SQL_IN_ROUTINES_ILLEGAL, SQL_LEGAL, SUBQUERY_ILLEGAL, UNNAMED_PARAMETER_ILLEGAL, USER_ILLEGAL, WHERE_CLAUSE_RESTRICTION| Constructor and Description |
|---|
CompilerContextImpl(ContextManager cm,
LanguageConnectionContext lcc,
TypeCompilerFactory typeCompilerFactory) |
| Modifier and Type | Method and Description |
|---|---|
private void |
addProviderToAuxiliaryList(Provider p)
Add a Provider to the current AuxiliaryProviderList, if one exists.
|
void |
addReferencedSequence(SequenceDescriptor sd)
Add a sequence descriptor to the list of referenced sequences.
|
void |
addRequiredColumnPriv(ColumnDescriptor column)
Add a column privilege to the list of used column privileges.
|
void |
addRequiredRolePriv(java.lang.String roleName,
int privType)
Add a required role privilege to the list privileges.
|
void |
addRequiredRoutinePriv(AliasDescriptor routine)
Add a routine execute privilege to the list of used routine privileges.
|
void |
addRequiredSchemaPriv(java.lang.String schemaName,
java.lang.String aid,
int privType)
Add a required schema privilege to the list privileges.
|
void |
addRequiredTablePriv(TableDescriptor table)
Add a table or view privilege to the list of used table privileges.
|
void |
addRequiredUsagePriv(PrivilegedSQLObject usableObject)
Add a usage privilege to the list of required privileges.
|
int |
addSavedObject(java.lang.Object obj)
Add an object to the pool that is created at compile time
and used at execution time.
|
void |
addWarning(java.sql.SQLWarning warning)
Add a compile time warning.
|
void |
cleanupOnError(java.lang.Throwable error)
Contexts will be passed errors that are caught
by the outer system when they are serious enough
to require corrective action.
|
private void |
closeSortCostControllers() |
private void |
closeStoreCostControllers() |
void |
createDependency(Dependent d,
Provider p)
Add a dependency between two objects.
|
void |
createDependency(Provider p)
Add a dependency for the current dependent.
|
void |
firstOnStack()
Mark this CompilerContext as the first on the stack, so we can avoid
continually popping and pushing a CompilerContext.
|
ClassFactory |
getClassFactory()
Return the class factory to use in this compilation.
|
SchemaDescriptor |
getCompilationSchema()
Get the compilation schema descriptor for this compilation context.
|
ProviderList |
getCurrentAuxiliaryProviderList()
Get the current auxiliary provider list from this CompilerContext.
|
java.lang.Object |
getCursorInfo()
Get the cursor info stored in the context.
|
boolean |
getInUse()
Return the in use state for the compiler context.
|
JavaFactory |
getJavaFactory()
Get the JavaFactory from this CompilerContext.
|
int |
getNextColumnNumber()
Get the current next column number (for generated column names)
from this CompilerContext.
|
int |
getNextEquivalenceClass()
Get the next equivalence class for equijoin clauses.
|
int |
getNextResultSetNumber()
Get the current next ResultSet number from this CompilerContext.
|
int |
getNextSubqueryNumber()
Get the current next subquery number from this CompilerContext.
|
int |
getNextTableNumber()
Get the current next table number from this CompilerContext.
|
NodeFactory |
getNodeFactory()
Get the NodeFactory for this context
|
int |
getNumResultSets()
Get the number of Results in the current statement from this CompilerContext.
|
int |
getNumSubquerys()
Get the number of subquerys in the current statement from this CompilerContext.
|
int |
getNumTables()
Get the number of tables in the current statement from this CompilerContext.
|
java.util.List |
getParameterList()
Get the parameter list.
|
DataTypeDescriptor[] |
getParameterTypes()
Get the array of DataTypeDescriptor representing the types of
the ?
|
Parser |
getParser()
Get the Parser from this CompilerContext
|
int |
getReliability()
Return the reliability requirements of this clause.
|
java.util.List |
getRequiredPermissionsList() |
boolean |
getReturnParameterFlag()
Is the callable statement uses ?
|
java.lang.Object[] |
getSavedObjects()
Get the saved object pool (for putting into the prepared statement).
|
int |
getScanIsolationLevel()
Get the isolation level for the scans in this query.
|
SortCostController |
getSortCostController()
Get a SortCostController.
|
StoreCostController |
getStoreCostController(long conglomerateNumber)
Get a StoreCostController for the given conglomerate.
|
TypeCompilerFactory |
getTypeCompilerFactory()
Get the TypeCompilerFactory from this CompilerContext.
|
java.lang.String |
getUniqueClassName()
Get a unique Class name from this CompilerContext.
|
java.sql.SQLWarning |
getWarnings()
Get the chain of compile time warnings.
|
private void |
initRequiredPriv() |
boolean |
isFirstOnStack()
Is this the first CompilerContext on the stack?
|
boolean |
isReferenced(SequenceDescriptor sd)
Report whether the given sequence has been referenced already.
|
void |
popCompilationSchema()
Pop the default schema to use when compiling.
|
void |
popCurrentPrivType() |
void |
pushCompilationSchema(SchemaDescriptor sd)
Push a default schema to use when compiling.
|
void |
pushCurrentPrivType(int privType)
Sets the current privilege type context.
|
void |
resetContext()
Reset compiler context (as for instance, when we recycle a context for
use by another compilation.
|
void |
resetNextResultSetNumber()
Reset the next ResultSet number from this CompilerContext.
|
SchemaDescriptor |
setCompilationSchema(SchemaDescriptor newDefault)
Set the compilation schema descriptor for this compilation context.
|
void |
setCurrentAuxiliaryProviderList(ProviderList apl)
Set the current auxiliary provider list for this CompilerContext.
|
void |
setCurrentDependent(Dependent d)
Set the current dependent from this CompilerContext.
|
void |
setCursorInfo(java.lang.Object cursorInfo)
Set params
|
void |
setInUse(boolean inUse)
Set the in use state for the compiler context.
|
void |
setParameterList(java.util.List parameterList)
Set the parameter list.
|
void |
setReliability(int reliability)
Sets which kind of query fragments are NOT allowed.
|
void |
setReturnParameterFlag()
If callable statement uses ?
|
void |
setSavedObjects(java.lang.Object[] objs)
Set the saved object pool (for putting into the prepared statement).
|
void |
setScanIsolationLevel(int isolationLevel)
Set the isolation level for the scans in this query.
|
appendErrorInfo, getContextManager, getIdName, isLastHandler, popMe, pushMeclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetContextManager, getIdName, isLastHandler, popMe, pushMeprivate final Parser parser
private final LanguageConnectionContext lcc
private final LanguageConnectionFactory lcf
private TypeCompilerFactory typeCompilerFactory
private Dependent currentDependent
private DependencyManager dm
private boolean firstOnStack
private boolean inUse
private int reliability
private int nextColumnNumber
private int nextTableNumber
private int nextSubqueryNumber
private int nextResultSetNumber
private int scanIsolationLevel
private int nextEquivalenceClass
private long nextClassName
private java.util.List savedObjects
private java.lang.String classPrefix
private SchemaDescriptor compilationSchema
private java.util.ArrayList defaultSchemaStack
private ProviderList currentAPL
private boolean returnParameterFlag
private final java.util.HashMap storeCostControllers
private SortCostController sortCostController
private java.util.List parameterList
private DataTypeDescriptor[] parameterDescriptors
private java.lang.Object cursorInfo
private java.sql.SQLWarning warnings
private final java.util.ArrayList privTypeStack
private int currPrivType
private java.util.HashMap requiredColumnPrivileges
private java.util.HashMap requiredTablePrivileges
private java.util.HashMap requiredSchemaPrivileges
private java.util.HashMap requiredRoutinePrivileges
private java.util.HashMap requiredUsagePrivileges
private java.util.HashMap requiredRolePrivileges
private java.util.HashMap referencedSequences
public CompilerContextImpl(ContextManager cm, LanguageConnectionContext lcc, TypeCompilerFactory typeCompilerFactory)
public void cleanupOnError(java.lang.Throwable error)
throws StandardException
ContextContexts must release all their resources before removing themselves from their context manager.
The context manager will "unwind" the contexts during cleanup in the reverse order they were placed on its global stack.
If error is an instance of StandardException then an implementation of this method may throw a new exception if and only if the new exception is an instance of StandardException that is more severe than the original error or the new exception is a not an instance of StandardException (e.g java.lang.NullPointerException).
cleanupOnError in interface ContextStandardException - thrown by makeInvalid() callpublic void resetContext()
resetContext in interface CompilerContextpublic Parser getParser()
CompilerContextgetParser in interface CompilerContextpublic NodeFactory getNodeFactory()
getNodeFactory in interface CompilerContextpublic int getNextColumnNumber()
CompilerContextgetNextColumnNumber in interface CompilerContextpublic int getNextTableNumber()
CompilerContextgetNextTableNumber in interface CompilerContextpublic int getNumTables()
CompilerContextgetNumTables in interface CompilerContextpublic int getNextSubqueryNumber()
getNextSubqueryNumber in interface CompilerContextpublic int getNumSubquerys()
getNumSubquerys in interface CompilerContextpublic int getNextResultSetNumber()
CompilerContextgetNextResultSetNumber in interface CompilerContextpublic void resetNextResultSetNumber()
CompilerContextresetNextResultSetNumber in interface CompilerContextpublic int getNumResultSets()
CompilerContextgetNumResultSets in interface CompilerContextpublic java.lang.String getUniqueClassName()
CompilerContextgetUniqueClassName in interface CompilerContextpublic int getNextEquivalenceClass()
getNextEquivalenceClass in interface CompilerContextpublic ClassFactory getClassFactory()
CompilerContextgetClassFactory in interface CompilerContextpublic JavaFactory getJavaFactory()
CompilerContextgetJavaFactory in interface CompilerContextpublic void setCurrentDependent(Dependent d)
CompilerContextsetCurrentDependent in interface CompilerContextd - The Dependent currently being compiled.public ProviderList getCurrentAuxiliaryProviderList()
getCurrentAuxiliaryProviderList in interface CompilerContextpublic void setCurrentAuxiliaryProviderList(ProviderList apl)
setCurrentAuxiliaryProviderList in interface CompilerContextapl - The new current AuxiliaryProviderList.public void createDependency(Provider p) throws StandardException
CompilerContextcreateDependency in interface CompilerContextp - The Provider of the dependency.StandardException - thrown on failure.public void createDependency(Dependent d, Provider p) throws StandardException
createDependency in interface CompilerContextd - The Dependent object.p - The Provider of the dependency.StandardException - thrown on failure.private void addProviderToAuxiliaryList(Provider p)
p - The Provider to add.public int addSavedObject(java.lang.Object obj)
CompilerContext
(#objectType) (this.getPreparedStatement().getSavedObject(#int))
<\pre>addSavedObject in interface CompilerContextobj - object to add to the pool of saved objectspublic java.lang.Object[] getSavedObjects()
CompilerContextgetSavedObjects in interface CompilerContextpublic void setSavedObjects(java.lang.Object[] objs)
CompilerContextsetSavedObjects in interface CompilerContextobjs - The new saved objectsCompilerContext.setSavedObjects(java.lang.Object[])public void setCursorInfo(java.lang.Object cursorInfo)
CompilerContextsetCursorInfo in interface CompilerContextcursorInfo - the cursor infoCompilerContext.setCursorInfo(java.lang.Object)public java.lang.Object getCursorInfo()
CompilerContextgetCursorInfo in interface CompilerContextCompilerContext.getCursorInfo()public void firstOnStack()
CompilerContextfirstOnStack in interface CompilerContextCompilerContext.firstOnStack()public boolean isFirstOnStack()
CompilerContextisFirstOnStack in interface CompilerContextCompilerContext.isFirstOnStack()public void setInUse(boolean inUse)
setInUse in interface CompilerContextinUse - The new inUse state for the compiler context.public boolean getInUse()
getInUse in interface CompilerContextpublic void setReliability(int reliability)
setReliability in interface CompilerContextreliability - bitmask of types of query fragments to be forbidden
see the reliability bitmasks in CompilerContext.javapublic int getReliability()
getReliability in interface CompilerContextpublic StoreCostController getStoreCostController(long conglomerateNumber) throws StandardException
CompilerContextgetStoreCostController in interface CompilerContextconglomerateNumber - The conglomerate for which to get a
StoreCostController.StandardException - Thrown on errorCompilerContext.getStoreCostController(long)private void closeStoreCostControllers()
public SortCostController getSortCostController() throws StandardException
CompilerContextgetSortCostController in interface CompilerContextStandardException - Thrown on errorCompilerContext.getSortCostController()private void closeSortCostControllers()
StandardException - Thrown on errorpublic SchemaDescriptor getCompilationSchema()
getCompilationSchema in interface CompilerContextpublic SchemaDescriptor setCompilationSchema(SchemaDescriptor newDefault)
setCompilationSchema in interface CompilerContextnewDefault - the compilation schemapublic void pushCompilationSchema(SchemaDescriptor sd)
CompilerContextSometimes, we need to temporarily change the default schema, for example when recompiling a view, since the execution time default schema may differ from the required default schema when the view was defined. Another case is when compiling generated columns which reference unqualified user functions.
pushCompilationSchema in interface CompilerContextsd - schema to useCompilerContext.pushCompilationSchema(org.apache.derby.iapi.sql.dictionary.SchemaDescriptor)public void popCompilationSchema()
CompilerContextpopCompilationSchema in interface CompilerContextCompilerContext.popCompilationSchema()public void setParameterList(java.util.List parameterList)
CompilerContextsetParameterList in interface CompilerContextparameterList - The parameter list.CompilerContext.setParameterList(java.util.List)public java.util.List getParameterList()
CompilerContextgetParameterList in interface CompilerContextCompilerContext.getParameterList()public void setReturnParameterFlag()
CompilerContextsetReturnParameterFlag in interface CompilerContextCompilerContext.setReturnParameterFlag()public boolean getReturnParameterFlag()
CompilerContextgetReturnParameterFlag in interface CompilerContextCompilerContext.getReturnParameterFlag()public DataTypeDescriptor[] getParameterTypes()
CompilerContextgetParameterTypes in interface CompilerContextCompilerContext.getParameterTypes()public void setScanIsolationLevel(int isolationLevel)
CompilerContextsetScanIsolationLevel in interface CompilerContextisolationLevel - The isolation level to use.CompilerContext.setScanIsolationLevel(int)public int getScanIsolationLevel()
CompilerContextgetScanIsolationLevel in interface CompilerContextCompilerContext.getScanIsolationLevel()public TypeCompilerFactory getTypeCompilerFactory()
CompilerContextgetTypeCompilerFactory in interface CompilerContextCompilerContext.getTypeCompilerFactory()public void addWarning(java.sql.SQLWarning warning)
addWarning in interface CompilerContextpublic java.sql.SQLWarning getWarnings()
getWarnings in interface CompilerContextprivate void initRequiredPriv()
public void pushCurrentPrivType(int privType)
pushCurrentPrivType in interface CompilerContextprivType - One of the privilege types in org.apache.derby.iapi.sql.conn.Authorizer.public void popCurrentPrivType()
popCurrentPrivType in interface CompilerContextpublic void addRequiredColumnPriv(ColumnDescriptor column)
addRequiredColumnPriv in interface CompilerContextcolumn - The column whose privileges we're interested in.public void addRequiredTablePriv(TableDescriptor table)
addRequiredTablePriv in interface CompilerContextCompilerContext.addRequiredRoutinePriv(org.apache.derby.iapi.sql.dictionary.AliasDescriptor)public void addRequiredRoutinePriv(AliasDescriptor routine)
addRequiredRoutinePriv in interface CompilerContextCompilerContext.addRequiredRoutinePriv(org.apache.derby.iapi.sql.dictionary.AliasDescriptor)public void addRequiredUsagePriv(PrivilegedSQLObject usableObject)
CompilerContextaddRequiredUsagePriv in interface CompilerContextCompilerContext.addRequiredUsagePriv(org.apache.derby.iapi.sql.dictionary.PrivilegedSQLObject)public void addRequiredSchemaPriv(java.lang.String schemaName,
java.lang.String aid,
int privType)
addRequiredSchemaPriv in interface CompilerContextschemaName - Schema name of the object that is being accessedaid - Requested authorizationId for new schemaprivType - CREATE_SCHEMA_PRIV, MODIFY_SCHEMA_PRIV or DROP_SCHEMA_PRIVCompilerContext.addRequiredSchemaPriv(java.lang.String, java.lang.String, int)public void addRequiredRolePriv(java.lang.String roleName,
int privType)
addRequiredRolePriv in interface CompilerContextCompilerContext.addRequiredRolePriv(java.lang.String, int)public java.util.List getRequiredPermissionsList()
getRequiredPermissionsList in interface CompilerContextpublic void addReferencedSequence(SequenceDescriptor sd)
CompilerContextaddReferencedSequence in interface CompilerContextpublic boolean isReferenced(SequenceDescriptor sd)
isReferenced in interface CompilerContextApache Derby V10.10 Internals - Copyright © 2004,2014 The Apache Software Foundation. All Rights Reserved.