class OrderByColumn extends OrderedColumn
Modifier and Type | Field and Description |
---|---|
private int |
addedColumnOffset
If this sort key is added to the result column list then it is at result column position
1 + resultColumnList.size() - resultColumnList.getOrderBySelect() + addedColumnOffset
If the sort key is already in the result column list then addedColumnOffset < 0.
|
private boolean |
ascending |
private ValueNode |
expression |
private OrderByList |
list |
private boolean |
nullsOrderedLow |
private ResultColumn |
resultCol |
columnPosition, UNMATCHEDPOSITION
AUTOINCREMENT_CREATE_MODIFY, AUTOINCREMENT_CYCLE, AUTOINCREMENT_INC_INDEX, AUTOINCREMENT_IS_AUTOINCREMENT_INDEX, AUTOINCREMENT_START_INDEX
Constructor and Description |
---|
OrderByColumn(ValueNode expression,
ContextManager cm)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
(package private) void |
acceptChildren(Visitor v)
Accept the visitor for all visitable children of this node.
|
(package private) void |
bindOrderByColumn(ResultSetNode target,
OrderByList oblist)
Bind this column.
|
(package private) void |
clearAddedColumnOffset()
Reset addedColumnOffset to indicate that column is no longer added
An added column is one which was artificially added to the result
column list due to its presence in the ORDER BY clause, as opposed to
having been explicitly selected by the user.
|
(package private) void |
collapseAddedColumnGap(int gap)
Adjust addedColumnOffset to reflect that a column has been removed
This routine is called when a previously-added result column has been
removed due to being detected as a duplicate.
|
private boolean |
columnMatchFound(ResultSetNode target,
ColumnReference crOfExpression)
This method checks a ColumnReference of this OrderByColumn
against the ColumnReferences of the select clause of the query.
|
(package private) boolean |
constantColumn(PredicateList whereClause)
Is this OrderByColumn constant, according to the given predicate list?
|
private boolean |
expressionMatch(ResultSetNode target)
Checks whether the whole expression (OrderByColumn) itself
found in the select clause.
|
(package private) ValueNode |
getExpression() |
(package private) ValueNode |
getNonRedundantExpression()
Get the underlying expression, skipping over ResultColumns that
are marked redundant.
|
(package private) ResultColumn |
getResultColumn()
Get the underlying ResultColumn.
|
(package private) boolean |
isAscending()
Get the column order.
|
(package private) boolean |
isNullsOrderedLow()
Get the column NULL ordering.
|
private static boolean |
isReferedColByNum(ValueNode expression) |
(package private) void |
printSubNodes(int depth)
Prints the sub-nodes of this object.
|
(package private) void |
pullUpOrderByColumn(ResultSetNode target)
Pull up this orderby column if it doesn't appear in the resultset
|
(package private) void |
remapColumnReferencesToExpressions()
Remap all the column references under this OrderByColumn to their
expressions.
|
(package private) void |
resetToSourceRC()
Order by columns now point to the PRN above the node of interest.
|
private void |
resolveAddedColumn(ResultSetNode target)
Assuming this OrderByColumn was "pulled" into the received target's
ResultColumnList (because it wasn't there to begin with), use
this.addedColumnOffset to figure out which of the target's result
columns is the one corresponding to "this".
|
private ResultColumn |
resolveColumnReference(ResultSetNode target,
ColumnReference cr) |
(package private) void |
setDescending()
Mark the column as descending order
|
(package private) void |
setNullsOrderedLow()
Mark the column as ordered NULL values lower than non-NULL values.
|
java.lang.String |
toString()
Convert this object to a String.
|
getColumnPosition, setColumnPosition
accept, addTag, addUDTUsagePriv, addUDTUsagePriv, bindOffsetFetch, bindRowMultiSet, bindUserCatalogType, bindUserType, checkReliability, checkReliability, convertDefaultNode, copyTagsFrom, createTypeDependency, debugFlush, debugPrint, disablePrivilegeCollection, formatNodeString, generate, 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
private ResultColumn resultCol
private boolean ascending
private boolean nullsOrderedLow
private ValueNode expression
private OrderByList list
private int addedColumnOffset
OrderByColumn(ValueNode expression, ContextManager cm)
expression
- Expression of this columncm
- The context managerpublic java.lang.String toString()
toString
in class OrderedColumn
void printSubNodes(int depth)
printSubNodes
in class QueryTreeNode
depth
- The depth of this node in the treevoid setDescending()
boolean isAscending()
isAscending
in class OrderedColumn
void setNullsOrderedLow()
boolean isNullsOrderedLow()
isNullsOrderedLow
in class OrderedColumn
ResultColumn getResultColumn()
ValueNode getNonRedundantExpression()
void bindOrderByColumn(ResultSetNode target, OrderByList oblist) throws StandardException
target
- The result set being selected fromoblist
- OrderByList which contains this columnStandardException
- Thrown on errorStandardException
- Thrown when column not foundprivate boolean expressionMatch(ResultSetNode target) throws StandardException
target
- Result setStandardException
private boolean columnMatchFound(ResultSetNode target, ColumnReference crOfExpression) throws StandardException
target
- result setcrOfExpression
- the CR to be checkedStandardException
private void resolveAddedColumn(ResultSetNode target)
void pullUpOrderByColumn(ResultSetNode target) throws StandardException
target
- The result set being selected fromStandardException
void resetToSourceRC()
boolean constantColumn(PredicateList whereClause)
void remapColumnReferencesToExpressions() throws StandardException
StandardException
- Thrown on errorprivate static boolean isReferedColByNum(ValueNode expression) throws StandardException
StandardException
private ResultColumn resolveColumnReference(ResultSetNode target, ColumnReference cr) throws StandardException
StandardException
void clearAddedColumnOffset()
void collapseAddedColumnGap(int gap)
gap
- offset of the column which has just been removed from listvoid acceptChildren(Visitor v) throws StandardException
acceptChildren
in class QueryTreeNode
v
- the visitorStandardException
- on errorValueNode getExpression()
Apache Derby V10.13 Internals - Copyright © 2004,2016 The Apache Software Foundation. All Rights Reserved.