Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

org.apache.derby.impl.sql.compile
Class BinaryRelationalOperatorNode  view BinaryRelationalOperatorNode download BinaryRelationalOperatorNode.java

java.lang.Object
  extended byorg.apache.derby.impl.sql.compile.QueryTreeNode
      extended byorg.apache.derby.impl.sql.compile.ValueNode
          extended byorg.apache.derby.impl.sql.compile.BinaryOperatorNode
              extended byorg.apache.derby.impl.sql.compile.BinaryComparisonOperatorNode
                  extended byorg.apache.derby.impl.sql.compile.BinaryRelationalOperatorNode
All Implemented Interfaces:
RelationalOperator, org.apache.derby.iapi.sql.compile.Visitable

public class BinaryRelationalOperatorNode
extends BinaryComparisonOperatorNode
implements RelationalOperator

This class represents the 6 binary operators: LessThan, LessThanEquals, Equals, NotEquals, GreaterThan and GreaterThanEquals.


Field Summary
protected static int LEFT
           
protected static int NEITHER
           
private  int operatorType
           
protected static int RIGHT
           
 
Fields inherited from class org.apache.derby.impl.sql.compile.BinaryComparisonOperatorNode
 
Fields inherited from class org.apache.derby.impl.sql.compile.BinaryOperatorNode
AND, BinaryArgTypes, BinaryMethodNames, BinaryOperators, BinaryResultTypes, CONCATENATE, DIVIDE, EQ, GE, GT, LE, leftInterfaceType, leftOperand, LIKE, LT, methodName, MINUS, NE, operator, OR, PLUS, receiver, resultInterfaceType, rightInterfaceType, rightOperand, TIMES, XMLEXISTS_OP
 
Fields inherited from class org.apache.derby.impl.sql.compile.ValueNode
clause, dataTypeServices, IN_HAVING_CLAUSE, IN_SELECT_LIST, IN_UNKNOWN_CLAUSE, IN_WHERE_CLAUSE, transformed
 
Fields inherited from class org.apache.derby.impl.sql.compile.QueryTreeNode
AUTOINCREMENT_INC_INDEX, AUTOINCREMENT_IS_AUTOINCREMENT_INDEX, AUTOINCREMENT_START_INDEX, beginOffset, endOffset
 
Fields inherited from interface org.apache.derby.impl.sql.compile.RelationalOperator
EQUALS_RELOP, GREATER_EQUALS_RELOP, GREATER_THAN_RELOP, IS_NOT_NULL_RELOP, IS_NULL_RELOP, LESS_EQUALS_RELOP, LESS_THAN_RELOP, NOT_EQUALS_RELOP
 
Constructor Summary
BinaryRelationalOperatorNode()
           
 
Method Summary
protected  double booleanSelectivity(org.apache.derby.iapi.sql.compile.Optimizable optTable)
          Return 50% if this is a comparison with a boolean column, a negative selectivity otherwise.
protected  int columnOnOneSide(org.apache.derby.iapi.sql.compile.Optimizable optTable)
          Determine whether there is a column from the given table on one side of this operator, and if so, which side is it on?
 boolean compareWithKnownConstant(org.apache.derby.iapi.sql.compile.Optimizable optTable, boolean considerParameters)
          Return whether this operator compares the given Optimizable with a constant whose value is known at compile time.
 boolean equalsComparisonWithConstantExpression(org.apache.derby.iapi.sql.compile.Optimizable optTable)
          Return whether this operator is an equality comparison of the given optimizable with a constant expression.
 void generateAbsoluteColumnId(org.apache.derby.iapi.services.compiler.MethodBuilder mb, org.apache.derby.iapi.sql.compile.Optimizable optTable)
          Generate the absolute column id for the ColumnReference that appears on one side of this RelationalOperator or the other, and that refers to the given table.
 void generateExpressionOperand(org.apache.derby.iapi.sql.compile.Optimizable optTable, int columnPosition, ExpressionClassBuilder acb, org.apache.derby.iapi.services.compiler.MethodBuilder mb)
          Check whether this RelationalOperator is a comparison of the given column with an expression.
 void generateNegate(org.apache.derby.iapi.services.compiler.MethodBuilder mb, org.apache.derby.iapi.sql.compile.Optimizable optTable)
          Generate an expression that evaluates to true if the result of the comparison should be negated.
 void generateOperator(org.apache.derby.iapi.services.compiler.MethodBuilder mb, org.apache.derby.iapi.sql.compile.Optimizable optTable)
          Generate the comparison operator for this RelationalOperator.
 void generateOrderedNulls(org.apache.derby.iapi.services.compiler.MethodBuilder mb)
          Generate an expression that evaluates to true if this RelationalOperator uses ordered null semantics, false if it doesn't.
 void generateQualMethod(ExpressionClassBuilder acb, org.apache.derby.iapi.services.compiler.MethodBuilder mb, org.apache.derby.iapi.sql.compile.Optimizable optTable)
          Generate the method to evaluate a Qualifier.
 void generateRelativeColumnId(org.apache.derby.iapi.services.compiler.MethodBuilder mb, org.apache.derby.iapi.sql.compile.Optimizable optTable)
          Generate the relative column id for the ColumnReference that appears on one side of this RelationalOperator or the other, and that refers to the given table.
 ValueNode genSQLJavaSQLTree()
          generate a SQL->Java->SQL conversion tree above the left and right operand of this Binary Operator Node if needed.
private  int getAbsoluteColumnPosition(org.apache.derby.iapi.sql.compile.Optimizable optTable)
          Get the absolute 0-based column position of the ColumnReference from the conglomerate for this Optimizable.
 ColumnReference getColumnOperand(int tableNumber, int columnPosition)
          Check whether this RelationalOperator is a comparison of the given column with an expression.
 ColumnReference getColumnOperand(org.apache.derby.iapi.sql.compile.Optimizable optTable)
          Get the ColumnReference for the given table on one side of this RelationalOperator.
 ColumnReference getColumnOperand(org.apache.derby.iapi.sql.compile.Optimizable optTable, int columnPosition)
          Check whether this RelationalOperator is a comparison of the given column with an expression.
 org.apache.derby.iapi.types.DataValueDescriptor getCompareValue(org.apache.derby.iapi.sql.compile.Optimizable optTable)
          Return an Object representing the known value that this relational operator is comparing to a column in the given Optimizable.
 ValueNode getExpressionOperand(int tableNumber, int columnPosition)
          Check whether this RelationalOperator is a comparison of the given column with an expression.
(package private)  BinaryOperatorNode getNegation(ValueNode leftOperand, ValueNode rightOperand)
          Returns the negation of this operator; negation of Equals is NotEquals.
private  int getNegationNode()
           
 int getOperator()
          Return the operator (as an int) for this RelationalOperator.
 int getOrderableVariantType(org.apache.derby.iapi.sql.compile.Optimizable optTable)
          Return the variant type for the Qualifier's Orderable.
 java.lang.String getReceiverInterfaceName()
          The methods generated for this node all are on Orderable.
 int getStartOperator(org.apache.derby.iapi.sql.compile.Optimizable optTable)
          Get the start operator for a scan (at the store level) for this RelationalOperator.
 int getStopOperator(org.apache.derby.iapi.sql.compile.Optimizable optTable)
          Get the stop operator for a scan (at the store level) for this RelationalOperator.
 RelationalOperator getTransitiveSearchClause(ColumnReference otherCR)
          Return a relational operator which matches the current one but with the passed in ColumnReference as the (left) operand.
private  boolean implicitVarcharComparison()
          Return whether or not this binary relational predicate requires an implicit (var)char conversion.
 void init(java.lang.Object leftOperand, java.lang.Object rightOperand)
          Initialize a query tree node.
 boolean isBinaryEqualsOperatorNode()
          Returns true if this value node is a equals operator.
 boolean isQualifier(org.apache.derby.iapi.sql.compile.Optimizable optTable)
          Return true if this operator can be compiled into a Qualifier for the given Optimizable table.
 boolean isRelationalOperator()
          Returns true if this ValueNode is a relational operator.
protected  boolean keyColumnOnLeft(org.apache.derby.iapi.sql.compile.Optimizable optTable)
          Return true if a key column for the given table is found on the left side of this operator, false if it is found on the right side of this operator.
 boolean optimizableEqualityNode(org.apache.derby.iapi.sql.compile.Optimizable optTable, int columnNumber, boolean isNullOkay)
          Return true if the predicate represents an optimizable equality node.
 boolean orderedNulls()
          Return true if this operator uses ordered null semantics
 double selectivity(org.apache.derby.iapi.sql.compile.Optimizable optTable)
          return the selectivity of this predicate.
 boolean selfComparison(ColumnReference cr)
          Check whether this RelationalOperator compares the given ColumnReference to any columns in the same table as the ColumnReference.
protected  boolean usefulStartKey(boolean columnOnLeft)
          is this is useful start key? for example a predicate of the from column Lessthan 5 is not a useful start key but is a useful stop key.
 boolean usefulStartKey(org.apache.derby.iapi.sql.compile.Optimizable optTable)
          Tell whether this relop is a useful start key for the given table.
protected  boolean usefulStopKey(boolean columnOnLeft)
           
 boolean usefulStopKey(org.apache.derby.iapi.sql.compile.Optimizable optTable)
          Tell whether this relop is a useful stop key for the given table.
 
Methods inherited from class org.apache.derby.impl.sql.compile.BinaryComparisonOperatorNode
bindComparisonOperator, bindExpression, changeToCNF, eliminateNots, getBetweenSelectivity, getForQueryRewrite, init, preprocess, setBetweenSelectivity, setForQueryRewrite
 
Methods inherited from class org.apache.derby.impl.sql.compile.BinaryOperatorNode
accept, bindXMLExists, categorize, constantExpression, generateExpression, getLeftOperand, getOrderableVariantType, getRightOperand, init, init, initializeResultField, isConstantExpression, printSubNodes, remapColumnReferencesToExpressions, setClause, setLeftOperand, setLeftRightInterfaceType, setMethodName, setOperator, setRightOperand, swapOperands, toString
 
Methods inherited from class org.apache.derby.impl.sql.compile.ValueNode
bindExpression, checkIsBoolean, checkReliability, checkReliability, checkTopPredicatesForEqualsConditions, copyFields, genEqualsFalseTree, generate, generateFilter, genIsNullTree, getClause, getClone, getColumnName, getConstantValueAsObject, getDataValueFactory, getSchemaName, getSourceResultColumn, getTableName, getTablesReferenced, getTransformed, getTypeCompiler, getTypeId, getTypeServices, init, isBooleanFalse, isBooleanTrue, isCloneable, isParameterNode, putAndsOnTop, setDescriptor, setTransformed, setType, updatableByCursor, verifyChangeToCNF, verifyEliminateNots, verifyPutAndsOnTop
 
Methods inherited from class org.apache.derby.impl.sql.compile.QueryTreeNode
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, isAtomic, isInstanceOf, isSessionSchema, isSessionSchema, makeConstantAction, makeResultDescription, makeTableName, needsSavepoint, nodeHeader, optimize, parseQueryText, printLabel, referencesSessionSchema, resolveTableToSynonym, setBeginOffset, setContextManager, setEndOffset, setNodeType, setRefActionInfo, treePrint, treePrint, verifyClassExist
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

operatorType

private int operatorType

LEFT

protected static final int LEFT
See Also:
Constant Field Values

NEITHER

protected static final int NEITHER
See Also:
Constant Field Values

RIGHT

protected static final int RIGHT
See Also:
Constant Field Values
Constructor Detail

BinaryRelationalOperatorNode

public BinaryRelationalOperatorNode()
Method Detail

init

public void init(java.lang.Object leftOperand,
                 java.lang.Object rightOperand)
Description copied from class: QueryTreeNode
Initialize a query tree node.

Overrides:
init in class QueryTreeNode

getColumnOperand

public ColumnReference getColumnOperand(org.apache.derby.iapi.sql.compile.Optimizable optTable,
                                        int columnPosition)
Description copied from interface: RelationalOperator
Check whether this RelationalOperator is a comparison of the given column with an expression. If so, return the ColumnReference that corresponds to the given column, and that is on one side of this RelationalOperator or the other (this method copes with the column being on either side of the operator). If the given column does not appear by itself on one side of the comparison, the method returns null.

Specified by:
getColumnOperand in interface RelationalOperator

getColumnOperand

public ColumnReference getColumnOperand(int tableNumber,
                                        int columnPosition)
Description copied from interface: RelationalOperator
Check whether this RelationalOperator is a comparison of the given column with an expression. If so, return the ColumnReference that corresponds to the given column, and that is on one side of this RelationalOperator or the other (this method copes with the column being on either side of the operator). If the given column does not appear by itself on one side of the comparison, the method returns null.

Specified by:
getColumnOperand in interface RelationalOperator

getColumnOperand

public ColumnReference getColumnOperand(org.apache.derby.iapi.sql.compile.Optimizable optTable)
Description copied from interface: RelationalOperator
Get the ColumnReference for the given table on one side of this RelationalOperator. This presumes it will be found only on one side. If not found, it will return null.

Specified by:
getColumnOperand in interface RelationalOperator

getExpressionOperand

public ValueNode getExpressionOperand(int tableNumber,
                                      int columnPosition)
Description copied from interface: RelationalOperator
Check whether this RelationalOperator is a comparison of the given column with an expression. If so, return the expression the column is being compared to.

Specified by:
getExpressionOperand in interface RelationalOperator

generateExpressionOperand

public void generateExpressionOperand(org.apache.derby.iapi.sql.compile.Optimizable optTable,
                                      int columnPosition,
                                      ExpressionClassBuilder acb,
                                      org.apache.derby.iapi.services.compiler.MethodBuilder mb)
                               throws org.apache.derby.iapi.error.StandardException
Description copied from interface: RelationalOperator
Check whether this RelationalOperator is a comparison of the given column with an expression. If so, generate the Expression for the ValueNode that the column is being compared to.

Specified by:
generateExpressionOperand in interface RelationalOperator

selfComparison

public boolean selfComparison(ColumnReference cr)
                       throws org.apache.derby.iapi.error.StandardException
Description copied from interface: RelationalOperator
Check whether this RelationalOperator compares the given ColumnReference to any columns in the same table as the ColumnReference.

Specified by:
selfComparison in interface RelationalOperator

usefulStartKey

public boolean usefulStartKey(org.apache.derby.iapi.sql.compile.Optimizable optTable)
Description copied from interface: RelationalOperator
Tell whether this relop is a useful start key for the given table. It has already been determined that the relop has a column from the given table on one side or the other.

Specified by:
usefulStartKey in interface RelationalOperator

keyColumnOnLeft

protected boolean keyColumnOnLeft(org.apache.derby.iapi.sql.compile.Optimizable optTable)
Return true if a key column for the given table is found on the left side of this operator, false if it is found on the right side of this operator. NOTE: This method assumes that a key column will be found on one side or the other. If you don't know whether a key column exists, use the columnOnOneSide() method (below).


columnOnOneSide

protected int columnOnOneSide(org.apache.derby.iapi.sql.compile.Optimizable optTable)
Determine whether there is a column from the given table on one side of this operator, and if so, which side is it on?


usefulStopKey

public boolean usefulStopKey(org.apache.derby.iapi.sql.compile.Optimizable optTable)
Description copied from interface: RelationalOperator
Tell whether this relop is a useful stop key for the given table. It has already been determined that the relop has a column from the given table on one side or the other.

Specified by:
usefulStopKey in interface RelationalOperator

generateAbsoluteColumnId

public void generateAbsoluteColumnId(org.apache.derby.iapi.services.compiler.MethodBuilder mb,
                                     org.apache.derby.iapi.sql.compile.Optimizable optTable)
Description copied from interface: RelationalOperator
Generate the absolute column id for the ColumnReference that appears on one side of this RelationalOperator or the other, and that refers to the given table. (Absolute column id means column id within the row stored on disk.)

Specified by:
generateAbsoluteColumnId in interface RelationalOperator

generateRelativeColumnId

public void generateRelativeColumnId(org.apache.derby.iapi.services.compiler.MethodBuilder mb,
                                     org.apache.derby.iapi.sql.compile.Optimizable optTable)
Description copied from interface: RelationalOperator
Generate the relative column id for the ColumnReference that appears on one side of this RelationalOperator or the other, and that refers to the given table. (Relative column id means column id within the partial row returned by the store.)

Specified by:
generateRelativeColumnId in interface RelationalOperator

getAbsoluteColumnPosition

private int getAbsoluteColumnPosition(org.apache.derby.iapi.sql.compile.Optimizable optTable)
Get the absolute 0-based column position of the ColumnReference from the conglomerate for this Optimizable.


generateQualMethod

public void generateQualMethod(ExpressionClassBuilder acb,
                               org.apache.derby.iapi.services.compiler.MethodBuilder mb,
                               org.apache.derby.iapi.sql.compile.Optimizable optTable)
                        throws org.apache.derby.iapi.error.StandardException
Description copied from interface: RelationalOperator
Generate the method to evaluate a Qualifier. The factory method for a Qualifier takes a GeneratedMethod that returns the Orderable that Qualifier.getOrderable() returns.

Specified by:
generateQualMethod in interface RelationalOperator

generateOrderedNulls

public void generateOrderedNulls(org.apache.derby.iapi.services.compiler.MethodBuilder mb)
Description copied from interface: RelationalOperator
Generate an expression that evaluates to true if this RelationalOperator uses ordered null semantics, false if it doesn't.

Specified by:
generateOrderedNulls in interface RelationalOperator

orderedNulls

public boolean orderedNulls()
Description copied from interface: RelationalOperator
Return true if this operator uses ordered null semantics

Specified by:
orderedNulls in interface RelationalOperator

isQualifier

public boolean isQualifier(org.apache.derby.iapi.sql.compile.Optimizable optTable)
                    throws org.apache.derby.iapi.error.StandardException
Description copied from interface: RelationalOperator
Return true if this operator can be compiled into a Qualifier for the given Optimizable table. This means that there is a column from that table on one side of this relop, and an expression that does not refer to the table on the other side of the relop.

Specified by:
isQualifier in interface RelationalOperator

getOrderableVariantType

public int getOrderableVariantType(org.apache.derby.iapi.sql.compile.Optimizable optTable)
                            throws org.apache.derby.iapi.error.StandardException
Description copied from interface: RelationalOperator
Return the variant type for the Qualifier's Orderable. (Is the Orderable invariant within a scan or within a query?)

Specified by:
getOrderableVariantType in interface RelationalOperator

compareWithKnownConstant

public boolean compareWithKnownConstant(org.apache.derby.iapi.sql.compile.Optimizable optTable,
                                        boolean considerParameters)
Description copied from interface: RelationalOperator
Return whether this operator compares the given Optimizable with a constant whose value is known at compile time.

Specified by:
compareWithKnownConstant in interface RelationalOperator

getCompareValue

public org.apache.derby.iapi.types.DataValueDescriptor getCompareValue(org.apache.derby.iapi.sql.compile.Optimizable optTable)
                                                                throws org.apache.derby.iapi.error.StandardException
Description copied from interface: RelationalOperator
Return an Object representing the known value that this relational operator is comparing to a column in the given Optimizable.

Specified by:
getCompareValue in interface RelationalOperator

booleanSelectivity

protected double booleanSelectivity(org.apache.derby.iapi.sql.compile.Optimizable optTable)
Return 50% if this is a comparison with a boolean column, a negative selectivity otherwise.


getReceiverInterfaceName

public java.lang.String getReceiverInterfaceName()
The methods generated for this node all are on Orderable. Overrides this method in BooleanOperatorNode for code generation purposes.

Overrides:
getReceiverInterfaceName in class BinaryOperatorNode

getNegation

BinaryOperatorNode getNegation(ValueNode leftOperand,
                               ValueNode rightOperand)
                         throws org.apache.derby.iapi.error.StandardException
Returns the negation of this operator; negation of Equals is NotEquals.

Overrides:
getNegation in class BinaryComparisonOperatorNode

getNegationNode

private int getNegationNode()

usefulStartKey

protected boolean usefulStartKey(boolean columnOnLeft)
is this is useful start key? for example a predicate of the from column Lessthan 5 is not a useful start key but is a useful stop key. However 5 Lessthan column is a useful start key.


usefulStopKey

protected boolean usefulStopKey(boolean columnOnLeft)

getStartOperator

public int getStartOperator(org.apache.derby.iapi.sql.compile.Optimizable optTable)
Description copied from interface: RelationalOperator
Get the start operator for a scan (at the store level) for this RelationalOperator.

Specified by:
getStartOperator in interface RelationalOperator

getStopOperator

public int getStopOperator(org.apache.derby.iapi.sql.compile.Optimizable optTable)
Description copied from interface: RelationalOperator
Get the stop operator for a scan (at the store level) for this RelationalOperator.

Specified by:
getStopOperator in interface RelationalOperator

generateOperator

public void generateOperator(org.apache.derby.iapi.services.compiler.MethodBuilder mb,
                             org.apache.derby.iapi.sql.compile.Optimizable optTable)
Description copied from interface: RelationalOperator
Generate the comparison operator for this RelationalOperator. The operator can depend on which side of this operator the optimizable column is.

Specified by:
generateOperator in interface RelationalOperator

generateNegate

public void generateNegate(org.apache.derby.iapi.services.compiler.MethodBuilder mb,
                           org.apache.derby.iapi.sql.compile.Optimizable optTable)
Description copied from interface: RelationalOperator
Generate an expression that evaluates to true if the result of the comparison should be negated. For example, col > 1 generates a comparison operator of <= and a negation of true, while col < 1 generates a comparison operator of < and a negation of false.

Specified by:
generateNegate in interface RelationalOperator

getOperator

public int getOperator()
Description copied from interface: RelationalOperator
Return the operator (as an int) for this RelationalOperator.

Specified by:
getOperator in interface RelationalOperator

selectivity

public double selectivity(org.apache.derby.iapi.sql.compile.Optimizable optTable)
return the selectivity of this predicate.

Overrides:
selectivity in class ValueNode

getTransitiveSearchClause

public RelationalOperator getTransitiveSearchClause(ColumnReference otherCR)
                                             throws org.apache.derby.iapi.error.StandardException
Description copied from interface: RelationalOperator
Return a relational operator which matches the current one but with the passed in ColumnReference as the (left) operand.

Specified by:
getTransitiveSearchClause in interface RelationalOperator

equalsComparisonWithConstantExpression

public boolean equalsComparisonWithConstantExpression(org.apache.derby.iapi.sql.compile.Optimizable optTable)
Description copied from interface: RelationalOperator
Return whether this operator is an equality comparison of the given optimizable with a constant expression.

Specified by:
equalsComparisonWithConstantExpression in interface RelationalOperator

isRelationalOperator

public boolean isRelationalOperator()
Description copied from class: ValueNode
Returns true if this ValueNode is a relational operator. Relational Operators are <, <=, =, >, >=, <> as well as IS NULL and IS NOT NULL. This is the preferred way of figuring out if a ValueNode is relational or not.

Overrides:
isRelationalOperator in class ValueNode

isBinaryEqualsOperatorNode

public boolean isBinaryEqualsOperatorNode()
Description copied from class: ValueNode
Returns true if this value node is a equals operator.

Overrides:
isBinaryEqualsOperatorNode in class ValueNode

optimizableEqualityNode

public boolean optimizableEqualityNode(org.apache.derby.iapi.sql.compile.Optimizable optTable,
                                       int columnNumber,
                                       boolean isNullOkay)
                                throws org.apache.derby.iapi.error.StandardException
Description copied from class: ValueNode
Return true if the predicate represents an optimizable equality node. an expression is considered to be an optimizable equality node if all the following conditions are met:
  1. the operator is an = or IS NULL operator
  2. one of the operands is a column specified by optTable/columnNumber
  3. Both operands are not the same column; i.e tab.col = tab.col
  4. There are no implicit varchar comparisons of the operands; i.e either both operands are string like (varchar, char, longvarchar) or neither operand is string like

Overrides:
optimizableEqualityNode in class ValueNode

implicitVarcharComparison

private boolean implicitVarcharComparison()
                                   throws org.apache.derby.iapi.error.StandardException
Return whether or not this binary relational predicate requires an implicit (var)char conversion. This is important when considering hash join since this type of equality predicate is not currently supported for a hash join.


genSQLJavaSQLTree

public ValueNode genSQLJavaSQLTree()
                            throws org.apache.derby.iapi.error.StandardException
Description copied from class: BinaryOperatorNode
generate a SQL->Java->SQL conversion tree above the left and right operand of this Binary Operator Node if needed. Subclasses can override the default behavior.

Overrides:
genSQLJavaSQLTree in class BinaryComparisonOperatorNode