| java.lang.Object org.apache.derby.impl.sql.compile.QueryTreeNode org.apache.derby.impl.sql.compile.JavaValueNode org.apache.derby.impl.sql.compile.MethodCallNode
All known Subclasses: org.apache.derby.impl.sql.compile.NonStaticMethodCallNode, org.apache.derby.impl.sql.compile.NewInvocationNode, org.apache.derby.impl.sql.compile.StaticMethodCallNode,
MethodCallNode | abstract class MethodCallNode extends JavaValueNode (Code) | | A MethodCallNode represents a Java method call. Method calls can be done
through DML (as expressions) or through the CALL statement.
author: Jeff Lichtman |
Method Summary | |
public Visitable | accept(Visitor v) Accept a visitor, and call v.visit()
on child nodes as necessary. | public void | addParms(JavaValueNode[] methodParms) Add the parameter list. | public void | addParms(Vector parameterList) | protected boolean | areParametersQueryInvariant() Return whether or not all of the parameters to this node are
QUERY_INVARIANT or CONSTANT. | final void | bindParameters(FromList fromList, SubqueryList subqueryList, Vector aggregateVector) Bind this expression. | public boolean | categorize(JBitSet referencedTabs, boolean simplePredsOnly) Categorize this predicate. | public void | generateOneParameter(ExpressionClassBuilder acb, MethodBuilder mb, int parameterNumber) Generate one parameter to the given method call. | public int | generateParameters(ExpressionClassBuilder acb, MethodBuilder mb) | protected boolean[] | getIsParam() Build an array of booleans denoting whether or not a given method
parameter is a ?. | public String | getJavaClassName() the name of the class that contains the method, null if not known. | public String | getMethodName() | public JavaValueNode[] | getMethodParms() Get the method parameters. | protected String[] | getObjectSignature() Build an array of names of the argument types. | protected int | getOrderableVariantType() Return the variant type for the underlying expression. | public static String | getParameterTypeName(JavaValueNode param) | String[] | getPrimitiveSignature(boolean castToPrimitiveAsNecessary) | public JSQLType[] | getSignature() Gets the signature of JSQLTypes needed to propagate a work unit from
target to source. | public void | init(Object methodName) | public void | preprocess(int numTables, FromList outerFromList, SubqueryList outerSubqueryList, PredicateList outerPredicateList) Preprocess an expression tree. | public void | printSubNodes(int depth) Prints the sub-nodes of this object. | public JavaValueNode | remapColumnReferencesToExpressions() Remap all ColumnReferences in this tree to be clones of the
underlying expression. | protected void | resolveMethodCall(String javaClassName, boolean staticMethod) | public void | setClause(int clause) Set the clause that this node appears in. | public void | setNullParameterInfo(String[] parmTypeNames) Set the appropriate type information for a null passed as a parameter. | protected boolean | someParametersAreNull() Return true if some parameters are null, false otherwise. | void | throwNoMethodFound(String receiverTypeName, String[] parmTypeNames, String[] primParmTypeNames) Build parameters for error message and throw the exception when there
is no matching signature found. | public String | toString() Convert this object to a String. |
actualMethodReturnType | protected String actualMethodReturnType(Code) | | |
internalCall | boolean internalCall(Code) | | True if this is an internal call, just used to set up a generated method call.
|
methodParameterTypes | String[] methodParameterTypes(Code) | | The parameter types for the resolved method.
|
addParms | public void addParms(JavaValueNode[] methodParms)(Code) | | Add the parameter list.
(This flavor is useful when transforming a non-static method call node
to a static method call node.)
Parameters: methodParms - JavaValueNode[] |
areParametersQueryInvariant | protected boolean areParametersQueryInvariant() throws StandardException(Code) | | Return whether or not all of the parameters to this node are
QUERY_INVARIANT or CONSTANT. This is useful for VTIs - a VTI is a candidate
for materialization if all of its parameters are QUERY_INVARIANT or CONSTANT
Whether or not all of the parameters to this node are QUERY_INVARIANT or CONSTANT exception: StandardException - thrown on error |
bindParameters | final void bindParameters(FromList fromList, SubqueryList subqueryList, Vector aggregateVector) throws StandardException(Code) | | Bind this expression. This means binding the sub-expressions,
as well as figuring out what the return type is for this expression.
Parameters: fromList - The FROM list for the query thisexpression is in, for binding columns. Parameters: subqueryList - The subquery list being built as we find SubqueryNodes Parameters: aggregateVector - The aggregate vector being built as we find AggregateNodes exception: StandardException - Thrown on error |
categorize | public boolean categorize(JBitSet referencedTabs, boolean simplePredsOnly) throws StandardException(Code) | | 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.
Parameters: referencedTabs - JBitSet with bit map of referenced FromTables Parameters: simplePredsOnly - Whether or not to consider methodcalls, field references and conditional nodeswhen building bit map boolean Whether or not source.expression is a ColumnReferenceor a VirtualColumnNode. exception: StandardException - Thrown on error |
generateOneParameter | public void generateOneParameter(ExpressionClassBuilder acb, MethodBuilder mb, int parameterNumber) throws StandardException(Code) | | Generate one parameter to the given method call. This method is overriden by
RepStaticMethodCallNode.
Parameters: acb - The ExpressionClassBuilder for the class we're generating Parameters: mb - the method the expression will go into Parameters: parameterNumber - Identifies which parameter to generate. 0 based. exception: StandardException - Thrown on error |
generateParameters | public int generateParameters(ExpressionClassBuilder acb, MethodBuilder mb) throws StandardException(Code) | | Generate the parameters to the given method call
Parameters: acb - The ExpressionClassBuilder for the class we're generating Parameters: mb - the method the expression will go into Count of arguments to the method. exception: StandardException - Thrown on error |
getIsParam | protected boolean[] getIsParam()(Code) | | Build an array of booleans denoting whether or not a given method
parameter is a ?.
array of booleans denoting wheter or not a given methodparameter is a ?. |
getJavaClassName | public String getJavaClassName()(Code) | | the name of the class that contains the method, null if not known. It may not be knownuntil this node has been bound. |
getMethodParms | public JavaValueNode[] getMethodParms()(Code) | | Get the method parameters.
The method parameters |
getObjectSignature | protected String[] getObjectSignature() throws StandardException(Code) | | Build an array of names of the argument types. These types are biased toward
Java objects. That is, if an argument is of SQLType, then we map it to the
corresponding Java synonym class (e.g., SQLINT is mapped to 'java.lang.Integer').
array of type names exception: StandardException - Thrown on error |
getOrderableVariantType | protected int getOrderableVariantType() throws StandardException(Code) | | Return the variant type for the underlying expression.
The variant type can be:
VARIANT - variant within a scan
(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)
The variant type for the underlying expression. |
getSignature | public JSQLType[] getSignature()(Code) | | Gets the signature of JSQLTypes needed to propagate a work unit from
target to source.
the JSQLType signature |
init | public void init(Object methodName)(Code) | | Initializer for a MethodCallNode
Parameters: methodName - The name of the method to call |
preprocess | public void preprocess(int numTables, FromList outerFromList, SubqueryList outerSubqueryList, PredicateList outerPredicateList) throws StandardException(Code) | | 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.
Parameters: numTables - Number of tables in the DML Statement Parameters: outerFromList - FromList from outer query block Parameters: outerSubqueryList - SubqueryList from outer query block Parameters: outerPredicateList - PredicateList from outer query block exception: StandardException - Thrown on error |
printSubNodes | public void printSubNodes(int depth)(Code) | | Prints the sub-nodes of this object. See QueryTreeNode.java for
how tree printing is supposed to work.
Parameters: depth - The depth of this node in the tree |
remapColumnReferencesToExpressions | public JavaValueNode remapColumnReferencesToExpressions() throws StandardException(Code) | | Remap all ColumnReferences in this tree to be clones of the
underlying expression.
JavaValueNode The remapped expression tree. exception: StandardException - Thrown on error |
setClause | public void setClause(int clause)(Code) | | Set the clause that this node appears in.
Parameters: clause - The clause that this node appears in. |
setNullParameterInfo | public void setNullParameterInfo(String[] parmTypeNames) throws StandardException(Code) | | Set the appropriate type information for a null passed as a parameter.
This method is called after method resolution, when a signature was
successfully matched.
Parameters: parmTypeNames - String[] with the java type names for the parametersas declared by the method exception: StandardException - Thrown on error |
someParametersAreNull | protected boolean someParametersAreNull()(Code) | | Return true if some parameters are null, false otherwise.
|
throwNoMethodFound | void throwNoMethodFound(String receiverTypeName, String[] parmTypeNames, String[] primParmTypeNames) throws StandardException(Code) | | Build parameters for error message and throw the exception when there
is no matching signature found.
Parameters: receiverTypeName - Type name for receiver Parameters: parmTypeNames - Type names for parameters as object types Parameters: primParmTypeNames - Type names for parameters as primitive types exception: StandardException - Thrown on error |
toString | public String toString()(Code) | | Convert this object to a String. See comments in QueryTreeNode.java
for how this should be done for tree printing.
This object as a String |
Methods inherited from org.apache.derby.impl.sql.compile.JavaValueNode | abstract JavaValueNode bindExpression(FromList fromList, SubqueryList subqueryList, Vector aggregateVector) throws StandardException(Code)(Java Doc) public void castToPrimitive(boolean booleanValue)(Code)(Java Doc) abstract public boolean categorize(JBitSet referencedTabs, boolean simplePredsOnly) throws StandardException(Code)(Java Doc) public void checkReliability(ValueNode sqlNode) throws StandardException(Code)(Java Doc) final protected void generate(ActivationClassBuilder acb, MethodBuilder mb) throws StandardException(Code)(Java Doc) abstract protected void generateExpression(ExpressionClassBuilder acb, MethodBuilder mb) throws StandardException(Code)(Java Doc) protected boolean generateReceiver(ExpressionClassBuilder acb, MethodBuilder mb) throws StandardException(Code)(Java Doc) final protected boolean generateReceiver(ExpressionClassBuilder acb, MethodBuilder mb, JavaValueNode receiver) throws StandardException(Code)(Java Doc) Object getConstantValueAsObject() throws StandardException(Code)(Java Doc) public JSQLType getJSQLType() throws StandardException(Code)(Java Doc) public String getJavaTypeName() throws StandardException(Code)(Java Doc) protected int getOrderableVariantType() throws StandardException(Code)(Java Doc) public String getPrimitiveTypeName() throws StandardException(Code)(Java Doc) final protected void getReceiverExpression(ExpressionClassBuilder acb, MethodBuilder mb, JavaValueNode receiver) throws StandardException(Code)(Java Doc) public boolean isPrimitiveType() throws StandardException(Code)(Java Doc) public TypeId mapToTypeID(JSQLType jsqlType)(Code)(Java Doc) public void markForCallStatement()(Code)(Java Doc) protected void markReturnValueDiscarded()(Code)(Java Doc) public boolean mustCastToPrimitive()(Code)(Java Doc) abstract public void preprocess(int numTables, FromList outerFromList, SubqueryList outerSubqueryList, PredicateList outerPredicateList) throws StandardException(Code)(Java Doc) abstract public JavaValueNode remapColumnReferencesToExpressions() throws StandardException(Code)(Java Doc) protected boolean returnValueDiscarded()(Code)(Java Doc) protected void returnValueToSQLDomain()(Code)(Java Doc) public void setClause(int clause)(Code)(Java Doc) public void setJavaTypeName(String javaTypeName)(Code)(Java Doc) protected boolean valueReturnedToSQLDomain()(Code)(Java Doc)
|
Methods inherited from org.apache.derby.impl.sql.compile.QueryTreeNode | public Visitable accept(Visitor v) throws StandardException(Code)(Java Doc) public QueryTreeNode bind() throws StandardException(Code)(Java Doc) public DataValueDescriptor convertDefaultNode(DataTypeDescriptor typeDescriptor) throws StandardException(Code)(Java Doc) protected static void debugFlush()(Code)(Java Doc) public static void debugPrint(String outputString)(Code)(Java Doc) public void disablePrivilegeCollection()(Code)(Java Doc) public String executeSchemaName()(Code)(Java Doc) public String executeStatementName()(Code)(Java Doc) public static String formatNodeString(String nodeString, int depth)(Code)(Java Doc) public boolean foundString(String[] list, String search)(Code)(Java Doc) public GeneratedClass generate(ByteArray ignored) throws StandardException(Code)(Java Doc) protected void generate(ActivationClassBuilder acb, MethodBuilder mb) throws StandardException(Code)(Java Doc) void generateAuthorizeCheck(ActivationClassBuilder acb, MethodBuilder mb, int sqlOperation)(Code)(Java Doc) public int getBeginOffset()(Code)(Java Doc) final protected ClassFactory getClassFactory()(Code)(Java Doc) final protected CompilerContext getCompilerContext()(Code)(Java Doc) final public ContextManager getContextManager()(Code)(Java Doc) public Object getCursorInfo() throws StandardException(Code)(Java Doc) final public DataDictionary getDataDictionary()(Code)(Java Doc) final public DependencyManager getDependencyManager()(Code)(Java Doc) public int getEndOffset()(Code)(Java Doc) final public ExecutionFactory getExecutionFactory()(Code)(Java Doc) final public GenericConstantActionFactory getGenericConstantActionFactory()(Code)(Java Doc) protected int getIntProperty(String value, String key) throws StandardException(Code)(Java Doc) final protected LanguageConnectionContext getLanguageConnectionContext()(Code)(Java Doc) final public NodeFactory getNodeFactory()(Code)(Java Doc) protected int getNodeType()(Code)(Java Doc) public ConstantNode getNullNode(TypeId typeId, ContextManager cm) throws StandardException(Code)(Java Doc) public DataTypeDescriptor[] getParameterTypes() throws StandardException(Code)(Java Doc) public long getRowEstimate()(Code)(Java Doc) public String getSPSName()(Code)(Java Doc) final SchemaDescriptor getSchemaDescriptor(String schemaName) throws StandardException(Code)(Java Doc) final SchemaDescriptor getSchemaDescriptor(String schemaName, boolean raiseError) throws StandardException(Code)(Java Doc) protected int getStatementType()(Code)(Java Doc) final protected TableDescriptor getTableDescriptor(String tableName, SchemaDescriptor schema) throws StandardException(Code)(Java Doc) final protected TypeCompiler getTypeCompiler(TypeId typeId)(Code)(Java Doc) public void init(Object arg1) throws StandardException(Code)(Java Doc) public void init(Object arg1, Object arg2) throws StandardException(Code)(Java Doc) public void init(Object arg1, Object arg2, Object arg3) throws StandardException(Code)(Java Doc) public void init(Object arg1, Object arg2, Object arg3, Object arg4) throws StandardException(Code)(Java Doc) public void init(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5) throws StandardException(Code)(Java Doc) public void init(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6) throws StandardException(Code)(Java Doc) public void init(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7) throws StandardException(Code)(Java Doc) public void init(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7, Object arg8) throws StandardException(Code)(Java Doc) public void init(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7, Object arg8, Object arg9) throws StandardException(Code)(Java Doc) public void init(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7, Object arg8, Object arg9, Object arg10) throws StandardException(Code)(Java Doc) public void init(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7, Object arg8, Object arg9, Object arg10, Object arg11) throws StandardException(Code)(Java Doc) public void init(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7, Object arg8, Object arg9, Object arg10, Object arg11, Object arg12) throws StandardException(Code)(Java Doc) public void init(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7, Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13) throws StandardException(Code)(Java Doc) public void init(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object arg6, Object arg7, Object arg8, Object arg9, Object arg10, Object arg11, Object arg12, Object arg13, Object arg14) throws StandardException(Code)(Java Doc) public boolean isAtomic() throws StandardException(Code)(Java Doc) protected boolean isInstanceOf(int nodeType)(Code)(Java Doc) public boolean isPrivilegeCollectionRequired()(Code)(Java Doc) final boolean isSessionSchema(SchemaDescriptor sd)(Code)(Java Doc) final boolean isSessionSchema(String schemaName)(Code)(Java Doc) public ConstantAction makeConstantAction() throws StandardException(Code)(Java Doc) public ResultDescription makeResultDescription() throws StandardException(Code)(Java Doc) public TableName makeTableName(String schemaName, String flatName) throws StandardException(Code)(Java Doc) public boolean needsSavepoint()(Code)(Java Doc) protected String nodeHeader()(Code)(Java Doc) public QueryTreeNode optimize() throws StandardException(Code)(Java Doc) public static QueryTreeNode parseQueryText(CompilerContext compilerContext, String queryText, Object[] paramDefaults, LanguageConnectionContext lcc) throws StandardException(Code)(Java Doc) public void printLabel(int depth, String label)(Code)(Java Doc) public void printSubNodes(int depth)(Code)(Java Doc) public boolean referencesSessionSchema() throws StandardException(Code)(Java Doc) public TableName resolveTableToSynonym(TableName tabName) throws StandardException(Code)(Java Doc) public void setBeginOffset(int beginOffset)(Code)(Java Doc) public void setContextManager(ContextManager cm)(Code)(Java Doc) public void setEndOffset(int endOffset)(Code)(Java Doc) public void setNodeType(int nodeType)(Code)(Java Doc) public void setRefActionInfo(long fkIndexConglomId, int[] fkColArray, String parentResultSetId, boolean dependentScan)(Code)(Java Doc) public String toString()(Code)(Java Doc) public void treePrint()(Code)(Java Doc) public void treePrint(int depth)(Code)(Java Doc) String verifyClassExist(String javaClassName, boolean convertCase) throws StandardException(Code)(Java Doc)
|
|
|