org.apache.derby.impl.sql.compile
Class GetCurrentConnectionNode

java.lang.Object
  extended byorg.apache.derby.impl.sql.compile.QueryTreeNode
      extended byorg.apache.derby.impl.sql.compile.JavaValueNode
          extended byorg.apache.derby.impl.sql.compile.GetCurrentConnectionNode
All Implemented Interfaces:
Visitable

public final class GetCurrentConnectionNode
extends JavaValueNode

This node represents a unary getCurrentConnection operator RESOLVE - parameter will always be null for now. Someday we may want to allow user to specify which of their connections they want. Assume that we will use a String.

Author:
Jerry Brenner

Field Summary
 
Fields inherited from class org.apache.derby.impl.sql.compile.JavaValueNode
forCallStatement, jsqlType
 
Fields inherited from class org.apache.derby.impl.sql.compile.QueryTreeNode
AUTOINCREMENT_INC_INDEX, AUTOINCREMENT_IS_AUTOINCREMENT_INDEX, AUTOINCREMENT_START_INDEX, beginOffset, endOffset
 
Constructor Summary
GetCurrentConnectionNode()
          Constructor for a GetCurrentConnectionNode
 
Method Summary
 JavaValueNode bindExpression(FromList fromList, SubqueryList subqueryList, java.util.Vector aggregateVector)
          Bind this operator
(package private)  void bindParameter()
          Bind a ?
 boolean categorize(JBitSet referencedTabs, boolean simplePredsOnly)
          Categorize this predicate.
 void checkReliability(ValueNode sqlNode)
          Check the reliability type of this java value.
 void generateExpression(ExpressionClassBuilder acb, MethodBuilder mb)
          General logic shared by Core compilation and by the Replication Filter compiler.
protected  int getOrderableVariantType()
          Return the variant type for the underlying expression.
 void preprocess(int numTables, FromList outerFromList, SubqueryList outerSubqueryList, PredicateList outerPredicateList)
          Preprocess an expression tree.
 JavaValueNode remapColumnReferencesToExpressions()
          Remap all ColumnReferences in this tree to be clones of the underlying expression.
 
Methods inherited from class org.apache.derby.impl.sql.compile.JavaValueNode
castToPrimitive, generate, generateReceiver, generateReceiver, getConstantValueAsObject, getJavaTypeName, getJSQLType, getPrimitiveTypeName, getReceiverExpression, isPrimitiveType, mapToTypeID, markForCallStatement, markReturnValueDiscarded, mustCastToPrimitive, returnValueDiscarded, returnValueToSQLDomain, setClause, setJavaTypeName, valueReturnedToSQLDomain
 
Methods inherited from class org.apache.derby.impl.sql.compile.QueryTreeNode
accept, bind, convertDefaultNode, debugFlush, debugPrint, executeSchemaName, executeStatementName, formatNodeString, foundString, generate, generateAuthorizeCheck, getBeginOffset, getClassFactory, getCompilerContext, getContextManager, getCursorInfo, getDataDictionary, getDependencyManager, getEndOffset, getExecutionFactory, getGenericConstantActionFactory, getIntProperty, getLanguageConnectionContext, getNodeFactory, getNodeType, getNullNode, getParameterTypes, getRowEstimate, getSchemaDescriptor, getSchemaDescriptor, getSPSName, getStatementType, getTableDescriptor, getTypeCompiler, init, init, init, init, init, init, init, init, init, init, init, init, init, init, isAtomic, isInstanceOf, isSessionSchema, isSessionSchema, makeConstantAction, makeResultDescription, makeTableName, needsSavepoint, nodeHeader, optimize, parseQueryText, printLabel, printSubNodes, referencesSessionSchema, setBeginOffset, setContextManager, setEndOffset, setNodeType, setRefActionInfo, toString, treePrint, treePrint, verifyClassExist
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

GetCurrentConnectionNode

public GetCurrentConnectionNode()
Constructor for a GetCurrentConnectionNode

Method Detail

bindExpression

public JavaValueNode bindExpression(FromList fromList,
                                    SubqueryList subqueryList,
                                    java.util.Vector aggregateVector)
                             throws StandardException
Bind this operator

Specified by:
bindExpression in class JavaValueNode
Parameters:
fromList - The query's FROM list
subqueryList - The subquery list being built as we find SubqueryNodes
aggregateVector - The aggregate vector being built as we find AggregateNodes
Returns:
the new node, usually this
Throws:
StandardException - Thrown on error
See Also:
ValueNode.bindExpression(org.apache.derby.impl.sql.compile.FromList, org.apache.derby.impl.sql.compile.SubqueryList, java.util.Vector)

preprocess

public void preprocess(int numTables,
                       FromList outerFromList,
                       SubqueryList outerSubqueryList,
                       PredicateList outerPredicateList)
                throws StandardException
Preprocess an expression tree. We do a number of transformations here (including subqueries, IN lists, LIKE and BETWEEN) plus subquery flattening. NOTE: This is done before the outer ResultSetNode is preprocessed.

Specified by:
preprocess in class JavaValueNode
Parameters:
numTables - Number of tables in the DML Statement
outerFromList - FromList from outer query block
outerSubqueryList - SubqueryList from outer query block
outerPredicateList - PredicateList from outer query block
Throws:
StandardException - Thrown on error
See Also:
ValueNode.preprocess(int, org.apache.derby.impl.sql.compile.FromList, org.apache.derby.impl.sql.compile.SubqueryList, org.apache.derby.impl.sql.compile.PredicateList)

categorize

public boolean categorize(JBitSet referencedTabs,
                          boolean simplePredsOnly)
Categorize this predicate. Initially, this means building a bit map of the referenced tables for each predicate. If the source of this ColumnReference (at the next underlying level) is not a ColumnReference or a VirtualColumnNode then this predicate will not be pushed down. For example, in: select * from (select 1 from s) a (x) where x = 1 we will not push down x = 1. NOTE: It would be easy to handle the case of a constant, but if the inner SELECT returns an arbitrary expression, then we would have to copy that tree into the pushed predicate, and that tree could contain subqueries and method calls. RESOLVE - revisit this issue once we have views.

Specified by:
categorize in class JavaValueNode
Parameters:
referencedTabs - JBitSet with bit map of referenced FromTables
simplePredsOnly - Whether or not to consider method calls, field references and conditional nodes when building bit map
Returns:
boolean Whether or not source.expression is a ColumnReference or a VirtualColumnNode.
See Also:
ValueNode.categorize(org.apache.derby.iapi.util.JBitSet, boolean)

remapColumnReferencesToExpressions

public JavaValueNode remapColumnReferencesToExpressions()
Remap all ColumnReferences in this tree to be clones of the underlying expression.

Specified by:
remapColumnReferencesToExpressions in class JavaValueNode
Returns:
JavaValueNode The remapped expression tree.
See Also:
ValueNode.remapColumnReferencesToExpressions()

bindParameter

void bindParameter()
Bind a ? parameter operand of the char_length function.

Returns:
Nothing

getOrderableVariantType

protected int getOrderableVariantType()
Return the variant type for the underlying expression. The variant type can be: VARIANT - variant within a scan (method calls and non-static field access) SCAN_INVARIANT - invariant within a scan (column references from outer tables) QUERY_INVARIANT - invariant within the life of a query (constant expressions)

Overrides:
getOrderableVariantType in class JavaValueNode
Returns:
The variant type for the underlying expression.

generateExpression

public void generateExpression(ExpressionClassBuilder acb,
                               MethodBuilder mb)
                        throws StandardException
Description copied from class: JavaValueNode
General logic shared by Core compilation and by the Replication Filter compiler. Every child of ValueNode must implement one of these methods.

Specified by:
generateExpression in class JavaValueNode
Parameters:
acb - The ExpressionClassBuilder for the class being built
mb - The method the code to place the code
Returns:
The compiled Expression
Throws:
StandardException - Thrown on error
See Also:
ConstantNode.generateExpression(org.apache.derby.impl.sql.compile.ExpressionClassBuilder, org.apache.derby.iapi.services.compiler.MethodBuilder)

checkReliability

public void checkReliability(ValueNode sqlNode)
                      throws StandardException
Check the reliability type of this java value.

Overrides:
checkReliability in class JavaValueNode
Throws:
StandardException - Thrown on error
See Also:
CompilerContext


Apache Derby V10.0 Engine Documentation - Copyright © 1997,2004 The Apache Software Foundation or its licensors, as applicable.