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
A NewInvocationNode represents a new object() invocation.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate boolean
private boolean
private boolean
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
ConstructorsConstructorDescriptionNewInvocationNode
(String javaClassName, List<ValueNode> params, boolean delimitedIdentifier, ContextManager cm) Constructor for a NewInvocationNode.NewInvocationNode
(TableName vtiTableFuncName, TableDescriptor tableDescriptor, List<ValueNode> params, boolean delimitedIdentifier, ContextManager cm) -
Method Summary
Modifier and TypeMethodDescriptionprotected boolean
assignableTo
(String toClassName) Is this class assignable to the specified class?(package private) JavaValueNode
bindExpression
(FromList fromList, SubqueryList subqueryList, List<AggregateNode> aggregates) Bind this expression.(package private) boolean
categorize
(JBitSet referencedTabs, boolean simplePredsOnly) Categorize this predicate.protected Member
findPublicMethod
(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
Do code generation for this method call(package private) boolean
Report whether this node represents a builtin VTI.(package private) void
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
-
Field Details
-
singleInstantiation
private boolean singleInstantiation -
delimitedIdentifier
private boolean delimitedIdentifier -
isBuiltinVTI
private boolean isBuiltinVTI
-
-
Constructor Details
-
NewInvocationNode
NewInvocationNode(String javaClassName, 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, List<ValueNode> params, boolean delimitedIdentifier, ContextManager cm) throws StandardException - Throws:
StandardException
-
-
Method Details
-
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, 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:
-
categorize
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:
-
assignableTo
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
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
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
-