Class ActivationClassBuilder

java.lang.Object
org.apache.derby.impl.sql.compile.ExpressionClassBuilder
org.apache.derby.impl.sql.compile.ActivationClassBuilder
All Implemented Interfaces:
ExpressionClassBuilderInterface

class ActivationClassBuilder extends ExpressionClassBuilder
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 Details

    • targetResultSetField

      private LocalField targetResultSetField
    • cursorResultSetField

      private LocalField cursorResultSetField
    • closeActivationMethod

      private MethodBuilder 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

      public String getPackageName()
      Get the package name that this generated class lives in
      Specified by:
      getPackageName in class ExpressionClassBuilder
      Returns:
      package name
    • getBaseClassName

      String getBaseClassName()
      The base class for activations is BaseActivation
      Specified by:
      getBaseClassName in class ExpressionClassBuilder
    • getRowCount

      public int getRowCount() throws StandardException
      Get the number of ExecRows to allocate
      Specified by:
      getRowCount in class ExpressionClassBuilder
      Returns:
      package name
      Throws:
      StandardException - thrown on failure
    • setNumSubqueries

      public void setNumSubqueries()
      Generate the assignment for numSubqueries = x
      Specified by:
      setNumSubqueries in class ExpressionClassBuilder
      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

      void rememberCursorTarget(MethodBuilder mb)
      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:

      
        private CursorResultSet targetResultSet;
      
       
      The expression that is generated is:
      
        (ResultSet) (targetResultSet = (CursorResultSet) #expression#)
       
    • rememberCursor

      void rememberCursor(MethodBuilder mb)
      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:

      
        private CursorResultSet cursorResultSet;
      
       
      The expression that is generated is:
      
        (ResultSet) (cursorResultSet = (CursorResultSet) #expression#)
       
      The expression must be the top stack word when this method is called.
    • getCurrentSetup

      protected LocalField getCurrentSetup()
      Overrides:
      getCurrentSetup in class ExpressionClassBuilder
    • getCloseActivationMethod

      MethodBuilder getCloseActivationMethod()