| Access | Constructor and Description |
|---|---|
| pack-priv |
| Modifier and Type | Method and Description |
|---|---|
| pack-priv void | |
| pack-priv boolean | Returns: Whether or not all of the entries in the list have the same type precendence as the specified value.The specified precedence. precedence)Return whether or not all of the entries in the list have the same type precendence as the specified value. |
| pack-priv void | bindExpression(FromList
The FROM list for the query this
expression is in, for binding columns. fromList, SubqueryList The subquery list being built as we find SubqueryNodes subqueryList, List<AggregateNode> The aggregate list being built as we find AggregateNodes aggregates)Bind this expression. |
| pack-priv boolean | Returns: boolean Whether or not source.expression is a ColumnReference or a VirtualColumnNode.JBitSet with bit map of referenced FromTables referencedTabs, boolean Whether or not to consider method
calls, field references and conditional nodes
when building bit map simplePredsOnly)Categorize this predicate. |
| pack-priv void | comparable(ValueNode
The left side of the expression leftOperand)Determine whether or not the leftOperand is comparable() with all of the elements in the list. |
| pack-priv void | compatible(ValueNode
Check for compatibility against this parameter's type leftOperand)Make sure that passed ValueNode's type is compatible with the non-parameter elements in the ValueNodeList. |
| pack-priv boolean | |
| pack-priv boolean | Returns: boolean Whether or not the list contains all ConstantNodesDoes this list contain all ConstantNodes? |
| pack-priv boolean | Returns: boolean Whether or not the list contains all ParameterNodesDoes this list contain all ParameterNodes? |
| pack-priv boolean | Returns: boolean True if every node in this list is either a constant node or parameter node.Does this list *only* contain constant and/or parameter nodes? |
| pack-priv boolean | Returns: boolean Whether or not the list contains a ParameterNodeDoes this list contain a ParameterNode? |
| pack-priv void | eliminateNots(boolean
whether or not we are under a NotNode underNotNode)Eliminate NotNodes in all the nodes in this list. |
| pack-priv void | genSQLJavaSQLTrees()
Generate a SQL->Java->SQL conversion tree any node in the list which is not a system built-in type. |
| pack-priv DataTypeDescriptor | Returns: DataTypeServices The dominant DataTypeServices.Get the dominant DataTypeServices from the elements in the list. |
| protected int | Returns: The variant type for the underlying expression.Return the variant type for the underlying expression. |
| pack-priv DataTypeDescriptor | Returns: DataTypeServices The first non-null DataTypeServices.Get the first non-null DataTypeServices from the elements in the list. |
| pack-priv boolean | Returns: Whether or not this expression tree represents a constant expression.Return whether or not this expression tree represents a constant expression. |
| pack-priv boolean | Returns: true if the two lists contain equivalent elements, or
false otherwisethe other list other)Check if all the elements in this list are equivalent to the elements in another list. |
| pack-priv boolean | Returns: boolean Whether or not any of the elements in the list are nullable.Determine whether or not any of the elements in the list are nullable. |
| pack-priv void | preprocess(int
Number of tables in the DML Statement numTables, FromList FromList from outer query block outerFromList, SubqueryList SubqueryList from outer query block outerSubqueryList, PredicateList PredicateList from outer query block outerPredicateList)Preprocess a ValueNodeList. |
| pack-priv ValueNodeList | Returns: ValueNodeList The remapped expression tree.Remap all ColumnReferences in this tree to be clones of the underlying expression. |
| pack-priv void | setParameterDescriptor(DataTypeDescriptor
The DataTypeServices to set for the parameters descriptor)Set the descriptor for every ParameterNode in the list. |
| pack-priv void | sortInAscendingOrder(DataValueDescriptor
In case of type not exactly matching, the judging type. judgeODV)Sort the entries in the list in ascending order. |
| ValueNodeList | back to summary |
|---|---|
| pack-priv ValueNodeList(ContextManager cm) | |
| addValueNode | back to summary |
|---|---|
| pack-priv void addValueNode(ValueNode valueNode) throws StandardException Add a ValueNode to the list.
| |
| allSamePrecendence | back to summary |
|---|---|
| pack-priv boolean allSamePrecendence(int precedence) Return whether or not all of the entries in the list have the same type precendence as the specified value.
| |
| bindExpression | back to summary |
|---|---|
| pack-priv void 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.
| |
| categorize | back to summary |
|---|---|
| pack-priv 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.
| |
| comparable | back to summary |
|---|---|
| pack-priv void comparable(ValueNode leftOperand) throws StandardException Determine whether or not the leftOperand is comparable() with all of the elements in the list. Throw an exception if any of them are not comparable.
| |
| compatible | back to summary |
|---|---|
| pack-priv void compatible(ValueNode leftOperand) throws StandardException Make sure that passed ValueNode's type is compatible with the non-parameter elements in the ValueNodeList.
| |
| constantExpression | back to summary |
|---|---|
pack-priv boolean constantExpression(PredicateList whereClause)
| |
| containsAllConstantNodes | back to summary |
|---|---|
| pack-priv boolean containsAllConstantNodes() Does this list contain all ConstantNodes?
| |
| containsAllParameterNodes | back to summary |
|---|---|
| pack-priv boolean containsAllParameterNodes() Does this list contain all ParameterNodes?
| |
| containsOnlyConstantAndParamNodes | back to summary |
|---|---|
| pack-priv boolean containsOnlyConstantAndParamNodes() Does this list *only* contain constant and/or parameter nodes?
| |
| containsParameterNode | back to summary |
|---|---|
| pack-priv boolean containsParameterNode() Does this list contain a ParameterNode?
| |
| eliminateNots | back to summary |
|---|---|
| pack-priv void eliminateNots(boolean underNotNode) throws StandardException Eliminate NotNodes in all the nodes in this list.
| |
| genSQLJavaSQLTrees | back to summary |
|---|---|
| pack-priv void genSQLJavaSQLTrees() throws StandardException Generate a SQL->Java->SQL conversion tree any node in the list which is not a system built-in type. This is useful when doing comparisons, built-in functions, etc. on java types which have a direct mapping to system built-in types.
| |
| getDominantTypeServices | back to summary |
|---|---|
| pack-priv DataTypeDescriptor getDominantTypeServices() throws StandardException Get the dominant DataTypeServices from the elements in the list. This method will also set the correct collation information on the dominant DataTypeService if we are dealing with character string datatypes. Algorithm for determining collation information This method will check if it is dealing with character string datatypes. If yes, then it will check if all the character string datatypes have the same collation derivation and collation type associated with them. If not, then the resultant DTD from this method will have collation derivation of NONE. If yes, then the resultant DTD from this method will have the same collation derivation and collation type as all the character string datatypes. Note that this method calls DTD.getDominantType and that method returns the dominant type of the 2 DTDs involved in this method. That method sets the collation info on the dominant type following the algorithm mentioned in the comments of
| |
| getOrderableVariantType | back to summary |
|---|---|
| protected int getOrderableVariantType() throws StandardException 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 - constant
| |
| getTypeServices | back to summary |
|---|---|
| pack-priv DataTypeDescriptor getTypeServices() throws StandardException Get the first non-null DataTypeServices from the elements in the list.
| |
| isConstantExpression | back to summary |
|---|---|
| pack-priv boolean isConstantExpression() Return whether or not this expression tree represents a constant expression.
| |
| isEquivalent | back to summary |
|---|---|
| pack-priv boolean isEquivalent(ValueNodeList other) throws StandardException Check if all the elements in this list are equivalent to the elements in another list. The two lists must have the same size, and the equivalent nodes must appear in the same order in both lists, for the two lists to be equivalent.
| |
| isNullable | back to summary |
|---|---|
| pack-priv boolean isNullable() throws StandardException Determine whether or not any of the elements in the list are nullable.
| |
| preprocess | back to summary |
|---|---|
| pack-priv void preprocess(int numTables, FromList outerFromList, SubqueryList outerSubqueryList, PredicateList outerPredicateList) throws StandardException Preprocess a ValueNodeList. For now, we just preprocess each ValueNode in the list.
| |
| remapColumnReferencesToExpressions | back to summary |
|---|---|
| pack-priv ValueNodeList remapColumnReferencesToExpressions() throws StandardException Remap all ColumnReferences in this tree to be clones of the underlying expression.
| |
| setParameterDescriptor | back to summary |
|---|---|
| pack-priv void setParameterDescriptor(DataTypeDescriptor descriptor) throws StandardException Set the descriptor for every ParameterNode in the list.
| |
| sortInAscendingOrder | back to summary |
|---|---|
| pack-priv void sortInAscendingOrder(DataValueDescriptor judgeODV) throws StandardException Sort the entries in the list in ascending order. (All values are assumed to be constants.)
| |