Class ActivationClassBuilder
java.lang.Object
org.apache.derby.impl.sql.compile.ExpressionClassBuilder
org.apache.derby.impl.sql.compile.ActivationClassBuilder
- All Implemented Interfaces:
ExpressionClassBuilderInterface
ActivationClassBuilder
provides an interface to satisfy generation's
common tasks in building an activation class,
as well as a repository for the JavaFactory used
to generate the basic language constructs for the methods in the class.
Common tasks include the setting of a static field for each
expression function that gets added, the creation
of the execute method that gets expanded as the query tree
is walked, setting the superclass.
An activation class is defined for each statement. It has the following basic layout: TBD See the document \\Jeeves\Unversioned Repository 1\Internal Technical Documents\Other\GenAndExec.doc for details.
We could also verify methods as they are added, to have 0 parameters, ...
-
Field Summary
FieldsFields inherited from class org.apache.derby.impl.sql.compile.ExpressionClassBuilder
cb, cdtField, constructor, currentDatetimeFieldName, executeMethod, gc, myCompCtx, nextExprNum, nextFieldNum, nextNonFastExpr
-
Constructor Summary
ConstructorsConstructorDescriptionActivationClassBuilder
(String superClass, CompilerContext cc) By the time this is done, it has constructed the following class: -
Method Summary
Modifier and TypeMethodDescription(package private) void
Updatable cursors need to add a getter method for use in BaseActivation to access the result set that identifies target rows for a positioned update or delete.(package private) void
An execute method always ends in a return statement, returning the result set that has been constructed.(package private) String
The base class for activations is BaseActivation(package private) MethodBuilder
protected LocalField
Get the package name that this generated class lives inint
Get the number of ExecRows to allocate(package private) void
Updatable cursors need to add a field and its initialization for use in BaseActivation to access the result set that identifies cursor result rows for a positioned update or delete.(package private) void
Updatable cursors need to add a field and its initialization for use in BaseActivation to access the result set that identifies target rows for a positioned update or delete.void
Generate the assignment for numSubqueries = x(package private) MethodBuilder
Methods inherited from class org.apache.derby.impl.sql.compile.ExpressionClassBuilder
addColumnToOrdering, addItem, finishConstructor, generateDataValue, generateNull, generateNullWithExpress, getClassBuilder, getColumnOrdering, getColumnOrdering, getConstructor, getCurrentDateExpression, getCurrentTimeExpression, getCurrentTimestampExpression, getExecuteMethod, getGeneratedClass, getRowLocationScanResultSetName, getTypeCompiler, newExprFun, newFieldDeclaration, newFieldDeclaration, newGeneratedFun, newGeneratedFun, newRowLocationScanResultSetName, newUserExprFun, pushColumnReference, pushDataValueFactory, pushGetExecutionFactoryExpression, pushGetResultSetFactoryExpression, pushMethodReference, pushPVSReference, pushThisAsActivation
-
Field Details
-
targetResultSetField
-
cursorResultSetField
-
closeActivationMethod
-
-
Constructor Details
-
ActivationClassBuilder
ActivationClassBuilder(String superClass, CompilerContext cc) throws StandardException By the time this is done, it has constructed the following class:final public class #className extends #superClass { // public void reset() { return; } protected ResultSet doExecute() throws StandardException { // statements must be added here } public #className() { super(); } }
- Throws:
StandardException
- thrown on failure
-
-
Method Details
-
getPackageName
Get the package name that this generated class lives in- Specified by:
getPackageName
in classExpressionClassBuilder
- Returns:
- package name
-
getBaseClassName
String getBaseClassName()The base class for activations is BaseActivation- Specified by:
getBaseClassName
in classExpressionClassBuilder
-
getRowCount
Get the number of ExecRows to allocate- Specified by:
getRowCount
in classExpressionClassBuilder
- Returns:
- package name
- Throws:
StandardException
- thrown on failure
-
setNumSubqueries
public void setNumSubqueries()Generate the assignment for numSubqueries = x- Specified by:
setNumSubqueries
in classExpressionClassBuilder
- Throws:
StandardException
- thrown on failure
-
startResetMethod
MethodBuilder startResetMethod() -
finishExecuteMethod
void finishExecuteMethod()An execute method always ends in a return statement, returning the result set that has been constructed. We want to do some bookkeeping on that statement, so we generate the return given the result set. Upon entry the only word on the stack is the result set expression -
addCursorPositionCode
void addCursorPositionCode()Updatable cursors need to add a getter method for use in BaseActivation to access the result set that identifies target rows for a positioned update or delete.The code that is generated is:
public CursorResultSet getTargetResultSet() { return targetResultSet; } public CursorResultSet getCursorResultSet() { return cursorResultSet; } -
rememberCursorTarget
Updatable cursors need to add a field and its initialization for use in BaseActivation to access the result set that identifies target rows for a positioned update or delete.The code that is generated is:
The expression that is generated is:private CursorResultSet targetResultSet; (ResultSet) (targetResultSet = (CursorResultSet) #expression#) -
rememberCursor
Updatable cursors need to add a field and its initialization for use in BaseActivation to access the result set that identifies cursor result rows for a positioned update or delete.The code that is generated is:
The expression that is generated is:private CursorResultSet cursorResultSet;
The expression must be the top stack word when this method is called.(ResultSet) (cursorResultSet = (CursorResultSet) #expression#) -
getCurrentSetup
- Overrides:
getCurrentSetup
in classExpressionClassBuilder
-
getCloseActivationMethod
MethodBuilder getCloseActivationMethod()
-