Class NewInvocationNode
- java.lang.Object
-
- org.apache.derby.impl.sql.compile.QueryTreeNode
-
- org.apache.derby.impl.sql.compile.JavaValueNode
-
- org.apache.derby.impl.sql.compile.MethodCallNode
-
- org.apache.derby.impl.sql.compile.NewInvocationNode
-
- All Implemented Interfaces:
Visitable
class NewInvocationNode extends MethodCallNode
A NewInvocationNode represents a new object() invocation.
-
-
Field Summary
Fields Modifier and Type Field Description private boolean
delimitedIdentifier
private boolean
isBuiltinVTI
private boolean
singleInstantiation
-
Fields inherited from class org.apache.derby.impl.sql.compile.MethodCallNode
actualMethodReturnType, internalCall, javaClassName, method, methodName, methodParameterTypes, methodParms, routineInfo, signature
-
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_CREATE_MODIFY, AUTOINCREMENT_CYCLE, AUTOINCREMENT_INC_INDEX, AUTOINCREMENT_IS_AUTOINCREMENT_INDEX, AUTOINCREMENT_START_INDEX
-
-
Constructor Summary
Constructors Constructor Description NewInvocationNode(java.lang.String javaClassName, java.util.List<ValueNode> params, boolean delimitedIdentifier, ContextManager cm)
Constructor for a NewInvocationNode.NewInvocationNode(TableName vtiTableFuncName, TableDescriptor tableDescriptor, java.util.List<ValueNode> params, boolean delimitedIdentifier, ContextManager cm)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected boolean
assignableTo(java.lang.String toClassName)
Is this class assignable to the specified class?(package private) JavaValueNode
bindExpression(FromList fromList, SubqueryList subqueryList, java.util.List<AggregateNode> aggregates)
Bind this expression.(package private) boolean
categorize(JBitSet referencedTabs, boolean simplePredsOnly)
Categorize this predicate.protected java.lang.reflect.Member
findPublicMethod(java.lang.String methodName, boolean staticMethod)
Is this class have a public method with the specified signiture This is useful for the VTI interface where we want to see if the class has the option static method for returning the ResultSetMetaData.(package private) void
generateExpression(ExpressionClassBuilder acb, MethodBuilder mb)
Do code generation for this method call(package private) boolean
isBuiltinVTI()
Report whether this node represents a builtin VTI.(package private) void
setSingleInstantiation()
Mark this node as only needing to to a single instantiation.-
Methods inherited from class org.apache.derby.impl.sql.compile.MethodCallNode
acceptChildren, addParms, areParametersQueryInvariant, bindParameters, generateOneParameter, generateParameters, getCorrelationTables, getDataType, getFirstVarargIdx, getFullName, getIsParam, getJavaClassName, getMethodName, getMethodParameterClasses, getMethodParms, getObjectSignature, getObjectTypeName, getOrderableVariantType, getParameterTypeName, getPrimitiveSignature, getResolvedMethod, getRoutineArgIdx, getRoutineArgIdx, getRoutineInfo, hasVarargs, isVararg, preprocess, printSubNodes, remapColumnReferencesToExpressions, resolveMethodCall, setNullParameterInfo, someParametersAreNull, stripOneArrayLevel, throwNoMethodFound, toString
-
Methods inherited from class org.apache.derby.impl.sql.compile.JavaValueNode
castToPrimitive, checkReliability, generate, generateReceiver, generateReceiver, getCollationType, getConstantValueAsObject, getJavaTypeName, getJSQLType, getPrimitiveTypeName, getReceiverExpression, isPrimitiveType, mapToTypeID, markForCallStatement, markReturnValueDiscarded, mustCastToPrimitive, returnValueDiscarded, returnValueToSQLDomain, setCollationType, setJavaTypeName, valueReturnedToSQLDomain
-
Methods inherited from class org.apache.derby.impl.sql.compile.QueryTreeNode
accept, addTag, addUDTUsagePriv, addUDTUsagePriv, bindOffsetFetch, bindRowMultiSet, bindUserCatalogType, bindUserType, checkReliability, checkReliability, convertDefaultNode, copyTagsFrom, createTypeDependency, debugFlush, debugPrint, disablePrivilegeCollection, formatNodeString, generateAuthorizeCheck, getBeginOffset, getClassFactory, getCompilerContext, getContext, getContextManager, getDataDictionary, getDependencyManager, getEndOffset, getExecutionFactory, getGenericConstantActionFactory, getIntProperty, getLanguageConnectionContext, getLongProperty, getNullNode, getOffsetOrderedNodes, getOptimizerFactory, getOptimizerTracer, getParameterTypes, getSchemaDescriptor, getSchemaDescriptor, getStatementType, getTableDescriptor, getTypeCompiler, getUDTDesc, isAtomic, isPrivilegeCollectionRequired, isSessionSchema, isSessionSchema, makeConstantAction, makeTableName, makeTableName, nodeHeader, optimizerTracingIsOn, orReliability, parseSearchCondition, parseStatement, printLabel, referencesSessionSchema, resolveTableToSynonym, setBeginOffset, setEndOffset, setRefActionInfo, stackPrint, taggedWith, treePrint, treePrint, verifyClassExist
-
-
-
-
Constructor Detail
-
NewInvocationNode
NewInvocationNode(java.lang.String javaClassName, java.util.List<ValueNode> params, boolean delimitedIdentifier, ContextManager cm) throws StandardException
Constructor for a NewInvocationNode. Parameters are:- Parameters:
javaClassName
- The full package.class name of the classparams
- The parameter list for the constructordelimitedIdentifier
-cm
- The context manager- Throws:
StandardException
- Thrown on error
-
NewInvocationNode
NewInvocationNode(TableName vtiTableFuncName, TableDescriptor tableDescriptor, java.util.List<ValueNode> params, boolean delimitedIdentifier, ContextManager cm) throws StandardException
- Throws:
StandardException
-
-
Method Detail
-
isBuiltinVTI
boolean isBuiltinVTI()
Report whether this node represents a builtin VTI.
-
setSingleInstantiation
void setSingleInstantiation()
Mark this node as only needing to to a single instantiation. (We can reuse the object after newing it.)
-
bindExpression
JavaValueNode bindExpression(FromList fromList, SubqueryList subqueryList, java.util.List<AggregateNode> aggregates) throws StandardException
Bind this expression. This means binding the sub-expressions, as well as figuring out what the return type is for this expression.- Specified by:
bindExpression
in classJavaValueNode
- Parameters:
fromList
- The FROM list for the query this expression is in, for binding columns.subqueryList
- The subquery list being built as we find SubqueryNodesaggregates
- The aggregate list being built as we find AggregateNodes- Returns:
- Nothing
- 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.List<org.apache.derby.impl.sql.compile.AggregateNode>)
-
categorize
boolean categorize(JBitSet referencedTabs, boolean simplePredsOnly) throws StandardException
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.- Overrides:
categorize
in classMethodCallNode
- Parameters:
referencedTabs
- JBitSet with bit map of referenced FromTablessimplePredsOnly
- 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.
- Throws:
StandardException
- Thrown on error- See Also:
ValueNode.categorize(org.apache.derby.iapi.util.JBitSet, boolean)
-
assignableTo
protected boolean assignableTo(java.lang.String toClassName) throws StandardException
Is this class assignable to the specified class? This is useful for the VTI interface where we want to see if the class implements java.sql.ResultSet.- Parameters:
toClassName
- The java class name we want to assign to- Returns:
- boolean Whether or not this class is assignable to the specified class
- Throws:
StandardException
- Thrown on error
-
findPublicMethod
protected java.lang.reflect.Member findPublicMethod(java.lang.String methodName, boolean staticMethod) throws StandardException
Is this class have a public method with the specified signiture This is useful for the VTI interface where we want to see if the class has the option static method for returning the ResultSetMetaData.- Parameters:
methodName
- The method name we are looking forstaticMethod
- Whether or not the method we are looking for is static- Returns:
- Member The Member representing the method (or null if the method doesn't exist).
- Throws:
StandardException
- Thrown on error
-
generateExpression
void generateExpression(ExpressionClassBuilder acb, MethodBuilder mb) throws StandardException
Do code generation for this method call- Specified by:
generateExpression
in classJavaValueNode
- Parameters:
acb
- The ExpressionClassBuilder for the class we're generatingmb
- The method the expression will go into- Throws:
StandardException
- Thrown on error
-
-