java.lang.Iterable<ResultColumn>
, Visitable
class ResultColumnList extends QueryTreeNodeVector<ResultColumn>
ResultColumn
Modifier and Type | Class | Description |
---|---|---|
(package private) static class |
ResultColumnList.ColumnMapping |
Modifier and Type | Field | Description |
---|---|---|
protected long |
conglomerateId |
|
private boolean |
countMismatchAllowed |
|
protected boolean |
forUpdate |
|
protected boolean |
indexRow |
|
private int |
initialListSize |
|
(package private) int |
orderBySelect |
AUTOINCREMENT_CREATE_MODIFY, AUTOINCREMENT_CYCLE, AUTOINCREMENT_INC_INDEX, AUTOINCREMENT_IS_AUTOINCREMENT_INDEX, AUTOINCREMENT_START_INDEX
eltClass
Constructor | Description |
---|---|
ResultColumnList(ContextManager cm) |
Modifier and Type | Method | Description |
---|---|---|
ResultColumn |
addColumn(TableName tableName,
java.lang.String columnName,
DataTypeDescriptor dts) |
Add a column to the list given a table name, column name, and data type.
|
(package private) void |
addRCForRID() |
Add an RC to the end of the list for the RID from an index.
|
(package private) void |
addResultColumn(ResultColumn resultColumn) |
Add a ResultColumn (at this point, ResultColumn or
AllResultColumn) to the list
|
(package private) void |
adjustVirtualColumnIds(int adjust) |
Walk the list and adjust the virtualColumnIds in the ResultColumns
by the specified amount.
|
(package private) boolean |
allExpressionsAreColumns(ResultSetNode sourceRS) |
Determine if all of the RC.expressions are columns in the source result set.
|
(package private) int |
allTopCRsFromSameTable() |
Return whether or not all of the RCs in the list whose
expressions are ColumnReferences are
from the same table.
|
(package private) void |
appendResultColumns(ResultColumnList resultColumns,
boolean destructiveCopy) |
Append a given ResultColumnList to this one, resetting the virtual
column ids in the appended portion.
|
(package private) void |
bindExpressions(FromList fromList,
SubqueryList subqueryList,
java.util.List<AggregateNode> aggregates) |
Bind the expressions in this ResultColumnList.
|
(package private) void |
bindResultColumnsByName(TableDescriptor targetTableDescriptor) |
Bind the result columns by their names.
|
(package private) FormatableBitSet |
bindResultColumnsByName(TableDescriptor targetTableDescriptor,
DMLStatementNode statement) |
Bind the result columns by their names.
|
(package private) void |
bindResultColumnsByName(ResultColumnList fullRCL,
FromVTI targetVTI,
DMLStatementNode statement) |
Bind the result columns by their names.
|
(package private) void |
bindResultColumnsByPosition(TableDescriptor targetTableDescriptor) |
Bind the result columns by ordinal position.
|
(package private) void |
bindResultColumnsToExpressions() |
Bind the result columns to the expressions that live under them.
|
(package private) void |
bindUntypedNullsToResultColumns(ResultColumnList bindingRCL) |
Bind any untyped null nodes to the types in the given ResultColumnList.
|
ExecRow |
buildEmptyIndexRow(TableDescriptor td,
ConglomerateDescriptor cd,
StoreCostController scc,
DataDictionary dd) |
Build an empty index row for the given conglomerate.
|
ExecRow |
buildEmptyRow() |
Build an empty row with the size and shape of the ResultColumnList.
|
(package private) ExecRowBuilder |
buildRowTemplate() |
Shorthand for
buildRowTemplate(null, false) . |
(package private) ExecRowBuilder |
buildRowTemplate(FormatableBitSet referencedCols,
boolean skipPropagatedCols) |
Build an
ExecRowBuilder instance that produces a row of the
same shape as this result column list. |
(package private) void |
checkColumnUpdateability(ExecPreparedStatement cursorStmt,
java.lang.String cursorName) |
Verify that all of the columns in the SET clause of a positioned update
appear in the cursor's FOR UPDATE OF list.
|
(package private) void |
checkForInvalidDefaults() |
Walk the RCL and check for DEFAULTs.
|
(package private) void |
checkStorableExpressions() |
Verify that all the result columns have expressions that
are storable for them.
|
(package private) void |
checkStorableExpressions(ResultColumnList toStore) |
Verify that all the result columns have expressions that
are storable for them.
|
(package private) void |
clearColumnReferences() |
Clear the column references from the RCL.
|
(package private) void |
clearTableNames() |
|
private void |
collapseVirtualColumnIdGap(int gap) |
Adjust virtualColumnId values due to result column removal
This method is called when a duplicate column has been detected and
removed from the list.
|
(package private) boolean |
columnsAreUpdatable() |
Return true if some columns in this list are updatable.
|
(package private) boolean |
columnTypesAndLengthsMatch() |
Check whether the column lengths and types of the result columns
match the expressions under those columns.
|
(package private) boolean |
columnTypesAndLengthsMatch(ResultColumnList otherRCL) |
|
private void |
commonCodeForUpdatableByCursor(java.util.List<java.lang.String> updateColumns,
boolean dealingWithSelectResultColumnList) |
dealingWithSelectResultColumnList true means we are dealing with
ResultColumnList for a select sql.
|
(package private) ResultColumnList |
compactColumns(boolean positionedUpdate,
boolean always) |
Create a new, compacted RCL based on the referenced RCs
in this list.
|
(package private) boolean |
containsAllResultColumn() |
Return whether or not this RCL contains an AllResultColumn.
|
(package private) void |
copyColumnsToNewList(ResultColumnList targetList,
FormatableBitSet copyList) |
Copy the RCs from this list to the supplied target list.
|
(package private) ResultColumnList |
copyListAndObjects() |
Create a shallow copy of a ResultColumnList and its ResultColumns.
|
void |
copyOrderBySelect(ResultColumnList src) |
|
(package private) void |
copyReferencedColumnsToNewList(ResultColumnList targetList) |
Copy the referenced RCs from this list to the supplied target list.
|
(package private) void |
copyResultColumnNames(ResultColumnList nameList) |
Copy the result column names from the given ResultColumnList
to this ResultColumnList.
|
(package private) int |
countReferencedColumns() |
Count the number of RCs in the list that are referenced.
|
(package private) void |
createListFromResultSetMetaData(java.sql.ResultSetMetaData rsmd,
TableName tableName,
java.lang.String javaClassName) |
Generate an RCL to match the contents of a ResultSetMetaData.
|
private void |
decOrderBySelect() |
|
(package private) void |
doProjection() |
Project out any unreferenced ResultColumns from the list and
reset the virtual column ids in the referenced ResultColumns.
|
(package private) void |
expandAllsAndNameColumns(FromList fromList) |
Expand any *'s in the ResultColumnList.
|
(package private) ResultColumnList |
expandToAll(TableDescriptor td,
TableName tableName) |
Expand this ResultColumnList by adding all columns from the given
table that are not in this list.
|
(package private) void |
exportNames(java.lang.String[] columnNames) |
Export the result column names to the passed in String[].
|
(package private) ResultColumn |
findParentResultColumn(ResultColumn childRC) |
Given a ResultColumn at the next deepest level in the tree,
search this RCL for its parent ResultColumn.
|
(package private) ResultColumn |
findResultColumnForOrderBy(java.lang.String columnName,
TableName tableName) |
For order by, get a ResultColumn that matches the specified
columnName.
|
(package private) void |
forbidOverrides(ResultColumnList sourceRSRCL) |
check if any autoincrement or generated columns exist in the result column list.
|
(package private) void |
forbidOverrides(ResultColumnList sourceRSRCL,
boolean defaultsWereReplaced) |
check if any autoincrement or generated columns exist in the result column list.
|
private void |
genCreateRow(ExpressionClassBuilder acb,
LocalField field,
java.lang.String rowAllocatorMethod,
java.lang.String rowAllocatorType,
int numCols) |
Generate the code to create an empty row in the constructor.
|
(package private) void |
generate(ActivationClassBuilder acb,
MethodBuilder mb) |
Generate the code to place the columns' values into
a row variable named "r".
|
(package private) void |
generateCore(ExpressionClassBuilder acb,
MethodBuilder mb,
boolean genNulls) |
Generate the code to place the columns' values into
a row variable named "r".
|
(package private) void |
generateEvaluatedRow(ExpressionClassBuilder acb,
MethodBuilder userExprFun,
boolean genNulls,
boolean forMatchingClause) |
Generate the code for a method (userExprFun) which creates a row
and, column by column, stuffs it with the evaluated
expressions of our ResultColumns.
|
(package private) void |
generateNulls(ActivationClassBuilder acb,
MethodBuilder mb) |
Generate the code to place the columns' values into
a row variable named "r".
|
(package private) void |
genVirtualColumnNodes(ResultSetNode sourceResultSet,
ResultColumnList sourceResultColumnList) |
Walk the list and replace ResultColumn.expression with a new
VirtualColumnNode.
|
(package private) void |
genVirtualColumnNodes(ResultSetNode sourceResultSet,
ResultColumnList sourceResultColumnList,
boolean markReferenced) |
Walk the list and replace ResultColumn.expression with a new
VirtualColumnNode.
|
(package private) ResultColumn |
getAtMostOneResultColumn(ColumnReference cr,
java.lang.String exposedTableName,
boolean considerGeneratedColumns) |
Get a ResultColumn that matches the specified columnName and
mark the ResultColumn as being referenced.
|
(package private) java.lang.String[] |
getColumnNames() |
Get an array of strings for all the columns
in this RCL.
|
(package private) int[] |
getColumnPositions(TableDescriptor td) |
Get an array of column positions (1-based) for all the columns
in this RCL.
|
(package private) FormatableBitSet |
getColumnReferenceMap() |
Get a FormatableBitSet of the columns referenced in this rcl
|
protected boolean |
getCountMismatchAllowed() |
Return whether or not a count mismatch is allowed between this RCL,
as a derived column list, and an underlying RCL.
|
(package private) ResultColumnList |
getJoinColumns(ResultColumnList joinColumns) |
Get the join columns from this list.
|
(package private) ResultColumn |
getOrderByColumn(int position) |
Get a ResultColumn from a column position (1-based) in the list,
null if out of range (for order by).
|
(package private) ResultColumn |
getOrderByColumnToBind(java.lang.String columnName,
TableName tableName,
int tableNumber,
OrderByColumn obc) |
For order by column bind, get a ResultColumn that matches the specified
columnName.
|
(package private) int |
getOrderBySelect() |
|
(package private) int |
getPosition(java.lang.String name,
int basis) |
Get the position of first result column with the given name.
|
(package private) FormatableBitSet |
getReferencedFormatableBitSet(boolean positionedUpdate,
boolean always,
boolean onlyBCNs) |
Generate a FormatableBitSet representing the columns that are referenced in this RCL.
|
(package private) ResultColumn |
getResultColumn(int position) |
Get a ResultColumn from a column position (1-based) in the list
|
ResultColumn |
getResultColumn(int tableNumber,
int columnNumber,
java.lang.String columnName) |
Return a result column, if any found, which contains in its
expression/{VCN,CR} chain a result column with the given
columnNumber from a FromTable with the given tableNumber.
|
(package private) ResultColumn |
getResultColumn(int colNum,
ResultSetNode rsn,
int[] whichRC) |
Take a column position and a ResultSetNode and find the ResultColumn
in this RCL whose source result set is the same as the received
RSN and whose column position is the same as the received column
position.
|
(package private) ResultColumn |
getResultColumn(java.lang.String columnName) |
Get a ResultColumn that matches the specified columnName and
mark the ResultColumn as being referenced.
|
(package private) ResultColumn |
getResultColumn(java.lang.String columnName,
boolean markIfReferenced) |
Get a ResultColumn that matches the specified columnName.
|
(package private) ResultColumn |
getResultColumn(java.lang.String columnsTableName,
java.lang.String columnName) |
Get a ResultColumn that matches the specified columnName and
mark the ResultColumn as being referenced.
|
(package private) ResultColumn[] |
getSortedByPosition() |
Return an array that contains references to the columns in this list
sorted by position.
|
(package private) int[] |
getStreamStorableColIds(int heapColCount) |
Return an array holding the 0 based heap offsets of
the StreamStorable columns in this ResultColumnList.
|
(package private) int |
getTotalColumnSize() |
Get the size of all the columns added
together.
|
(package private) boolean |
hasConsistentTypeInfo() |
Verify that all ResultColumns and their expressions have type information
and that the type information between the respective RCs and
expressions matches.
|
(package private) void |
incOrderBySelect() |
|
(package private) boolean |
isCloneable() |
Return whether or not this RCL can be flattened out of a tree.
|
(package private) boolean |
isExactTypeAndLengthMatch(ResultColumnList otherRCL) |
Do the 2 RCLs have the same type and length.
|
private ResultColumn |
makeColumnFromName(java.lang.String columnName) |
|
private ResultColumn |
makeColumnReferenceFromName(TableName tableName,
java.lang.String columnName) |
|
(package private) ResultColumnDescriptor[] |
makeResultDescriptors() |
Make a ResultDescription for use in a ResultSet.
|
(package private) ResultColumnList.ColumnMapping |
mapSourceColumns() |
Map the source columns to these columns.
|
(package private) void |
markAllUnreferenced() |
Walk the list and mark all RCs as unreferenced.
|
(package private) void |
markColumnsInSelectListUpdatableByCursor(java.util.List<java.lang.String> updateColumns) |
Mark all the columns in the select sql that this result column list represents
as updatable if they match the columns in the given update column list.
|
protected void |
markInitialSize() |
|
(package private) void |
markUpdatableByCursor() |
Mark all the (base) columns in this list as updatable by a positioned update
statement.
|
(package private) void |
markUpdatableByCursor(java.util.List<java.lang.String> updateColumns) |
Mark as updatable all the columns in this result column list
that match the columns in the given update column list
|
(package private) void |
markUpdated() |
Mark all the columns in this list as updated by an update statement.
|
(package private) void |
markUpdated(ResultColumnList updateColumns) |
Mark as updatable all the columns in this result column list
that match the columns in the given update column list.
|
(package private) void |
nameAllResultColumns() |
Generate (unique across the entire statement) column names for those
ResultColumns in this list which are not named.
|
private RowLocation |
newRowLocationTemplate() |
Create a row location template of the right type for the source
conglomerate.
|
(package private) boolean |
nopProjection(ResultColumnList childRCL) |
Determine whether this RCL is a No-Op projection of the given RCL.
|
private int |
numGeneratedColumns() |
|
(package private) int |
numGeneratedColumnsForGroupBy() |
|
void |
populate(TableDescriptor table,
int[] columnIDs) |
Build this ResultColumnList from a table description and
an array of column IDs.
|
(package private) void |
preprocess(int numTables,
FromList outerFromList,
SubqueryList outerSubqueryList,
PredicateList outerPredicateList) |
Preprocess the expression trees under the RCL.
|
(package private) void |
propagateDCLInfo(ResultColumnList derivedRCL,
java.lang.String tableName) |
Validate the derived column list (DCL) and propagate the info
from the list to the final ResultColumnList.
|
(package private) void |
pullVirtualIsReferenced() |
Or in any isReferenced booleans from the virtual column chain.
|
(package private) void |
recordColumnReferences(boolean[] colArray1,
JBitSet[] tableColMap,
int tableNumber) |
Record the top level ColumnReferences in the specified array
and table map
This is useful when checking for uniqueness conditions.
|
(package private) void |
recordColumnReferences(int[] idArray,
int basis) |
Record the column ids of the referenced columns in the specified array.
|
(package private) void |
rejectParameters() |
Look for and reject ?
|
(package private) void |
rejectXMLValues() |
Check for (and reject) XML values directly under the ResultColumns.
|
(package private) void |
remapColumnReferencesToExpressions() |
Remap all ColumnReferences in this tree to be clones of the
underlying expression.
|
(package private) void |
removeGeneratedGroupingColumns() |
Remove any generated columns from this RCL.
|
(package private) void |
removeJoinColumns(ResultColumnList joinColumns) |
Remove the columns which are join columns (in the
joinColumns RCL) from this list.
|
(package private) void |
removeOrderByColumns() |
Remove any columns that may have been added for an order by clause.
|
(package private) void |
replaceOrForbidDefaults(TableDescriptor ttd,
ResultColumnList tcl,
boolean allowDefaults) |
Replace any DEFAULTs with the associated tree for the default if
allowed, or flag.
|
(package private) void |
resetVirtualColumnIds() |
Reset the virtual column ids for all of the
underlying RCs.
|
(package private) boolean |
reusableResult() |
Return whether or not the same result row can be used for all
rows returned by the associated ResultSet.
|
protected void |
setCountMismatchAllowed(boolean allowed) |
Set the value of whether or not a count mismatch is allowed between
this RCL, as a derived column list, and an underlying RCL.
|
(package private) void |
setDefault(ResultColumn rc,
ColumnDescriptor cd,
DefaultInfoImpl defaultInfo) |
Set the default in a ResultColumn
|
(package private) void |
setIndexRow(long cid,
boolean forUpdate) |
|
(package private) void |
setNullability(boolean nullability) |
Set the nullability of every ResultColumn in this list
|
(package private) void |
setRedundant() |
Mark all of the ResultColumns as redundant.
|
(package private) void |
setResultSetNumber(int resultSetNumber) |
Set the resultSetNumber in all of the ResultColumns.
|
(package private) void |
setUnionResultExpression(ResultColumnList otherRCL,
int tableNumber,
int level,
java.lang.String operatorName) |
Set up the result expressions for a UNION, INTERSECT, or EXCEPT:
o Verify union type compatiblity
o Get dominant type for result (type + max length + nullability)
o Create a new ColumnReference with dominant type and name of from this
RCL and make that the new expression.
|
int[] |
sortMe() |
Return an array of all my column positions, sorted in
ascending order.
|
private static boolean |
streamableType(ResultColumn rc) |
|
java.lang.String |
toString() |
Convert this object to a String.
|
private boolean |
unionCompatible(ValueNode left,
ValueNode right) |
Return true if the types of two expressions are union compatible.
|
(package private) boolean |
updatableByCursor(int columnPosition) |
Returns true if the given column position is for a column that will
be or could be updated by the positioned update of a cursor.
|
private static void |
updateArrays(int[] mapArray,
boolean[] cloneMap,
java.util.Map<java.lang.Integer,java.lang.Integer> seenMap,
ResultColumn rc,
int index) |
|
boolean |
updateOverlaps(int[] columns) |
Does the column list contain any of the given column positions
that are updated?
|
(package private) void |
verifyAllOrderable() |
Verify that all of the RCs in this list are comparable.
|
(package private) java.lang.String |
verifyCreateConstraintColumnList(TableElementList tel) |
Verify that all of the column names in this list are contained
within the ColumnDefinitionNodes within the TableElementList.
|
(package private) java.lang.String |
verifyUniqueNames(boolean errForGenCols) |
Check the uniqueness of the column names within a column list.
|
(package private) int |
visibleSize() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
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
acceptChildren, addElement, destructiveAppend, elementAt, indexOf, insertElementAt, iterator, nondestructiveAppend, printSubNodes, removeAllElements, removeElement, removeElementAt, setElementAt, size
protected boolean indexRow
protected long conglomerateId
int orderBySelect
protected boolean forUpdate
private boolean countMismatchAllowed
private int initialListSize
ResultColumnList(ContextManager cm)
void addResultColumn(ResultColumn resultColumn)
resultColumn
- The ResultColumn to add to the listvoid appendResultColumns(ResultColumnList resultColumns, boolean destructiveCopy)
resultColumns
- The ResultColumnList to be appendeddestructiveCopy
- Whether or not this is a descructive copy
from resultColumnsResultColumn getResultColumn(int position)
position
- The ResultColumn to get from the list (1-based)ResultColumn getResultColumn(int colNum, ResultSetNode rsn, int[] whichRC) throws StandardException
colNum
- The column position (w.r.t rsn) for which we're searchingrsn
- The result set node for which we're searching.StandardException
ResultColumn getOrderByColumn(int position)
position
- The ResultColumn to get from the list (1-based)ResultColumn getResultColumn(java.lang.String columnName)
columnName
- The ResultColumn to get from the listResultColumn getResultColumn(java.lang.String columnName, boolean markIfReferenced)
columnName
- The ResultColumn to get from the listmarkIfReferenced
- True if we should mark this column as referenced.public ResultColumn getResultColumn(int tableNumber, int columnNumber, java.lang.String columnName)
columnName
is used to assert that we find the right column.
If we found a match on (tn, cn) but columnName is wrong, return null.
Once we trust table numbers and column numbers to always be correct,
cf. DERBY-4695, we could remove this parameter.tableNumber
- the table number to look forcolumnNumber
- the column number to look forcolumnName
- name of the desired columnResultColumn getResultColumn(java.lang.String columnsTableName, java.lang.String columnName)
columnsTableName
- Qualifying name for the columncolumnName
- The ResultColumn to get from the listResultColumn getAtMostOneResultColumn(ColumnReference cr, java.lang.String exposedTableName, boolean considerGeneratedColumns) throws StandardException
cr
- The ColumnReference to resolveexposedTableName
- Exposed table name for FromTableconsiderGeneratedColumns
- Also consider columns that are generated.
One example of this is group by where columns are added to the select list
if they are referenced in the group by but are not present in the select
list.StandardException
- Thrown on errorboolean columnsAreUpdatable()
ResultColumn getOrderByColumnToBind(java.lang.String columnName, TableName tableName, int tableNumber, OrderByColumn obc) throws StandardException
columnName
- The ResultColumn to get from the listtableName
- The table name on the OrderByColumn, if anytableNumber
- The tableNumber corresponding to the FromTable with the
exposed name of tableName, if tableName != null.obc
- The OrderByColumn we're binding.StandardException
- thrown on ambiguityprivate void collapseVirtualColumnIdGap(int gap)
gap
- id of the column which was just removed.ResultColumn findResultColumnForOrderBy(java.lang.String columnName, TableName tableName) throws StandardException
columnName
- The ResultColumn to get from the listtableName
- The table name on the OrderByColumn, if anyStandardException
- thrown on ambiguityvoid copyResultColumnNames(ResultColumnList nameList)
nameList
- The ResultColumnList from which to copy
the column namesvoid bindExpressions(FromList fromList, SubqueryList subqueryList, java.util.List<AggregateNode> aggregates) throws StandardException
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 AggregateNodesStandardException
- Thrown on errorvoid bindResultColumnsToExpressions() throws StandardException
StandardException
- Thrown on errorvoid bindResultColumnsByName(TableDescriptor targetTableDescriptor) throws StandardException
targetTableDescriptor
- The descriptor for the tableStandardException
- Thrown on errorFormatableBitSet bindResultColumnsByName(TableDescriptor targetTableDescriptor, DMLStatementNode statement) throws StandardException
targetTableDescriptor
- The descriptor for the table being
updated or inserted intostatement
- DMLStatementNode containing this list, null if no duplicate checking is to be doneStandardException
- Thrown on errorvoid bindResultColumnsByName(ResultColumnList fullRCL, FromVTI targetVTI, DMLStatementNode statement) throws StandardException
fullRCL
- The full RCL for the target tablestatement
- DMLStatementNode containing this listStandardException
- Thrown on errorvoid bindResultColumnsByPosition(TableDescriptor targetTableDescriptor) throws StandardException
targetTableDescriptor
- The descriptor for the table being
inserted intoStandardException
- Thrown on errorvoid preprocess(int numTables, FromList outerFromList, SubqueryList outerSubqueryList, PredicateList outerPredicateList) throws StandardException
numTables
- Number of tables in the DML StatementouterFromList
- FromList from outer query blockouterSubqueryList
- SubqueryList from outer query blockouterPredicateList
- PredicateList from outer query blockStandardException
- Thrown on errorvoid checkStorableExpressions(ResultColumnList toStore) throws StandardException
StandardException
- Thrown on errorint[] getStreamStorableColIds(int heapColCount) throws StandardException
heapColCount
- the number of heap columnsStandardException
- Thrown on errorvoid checkStorableExpressions() throws StandardException
StandardException
- Thrown on errorvoid generate(ActivationClassBuilder acb, MethodBuilder mb) throws StandardException
generate
in class QueryTreeNode
acb
- The ActivationClassBuilder for the class being builtmb
- The method for the generated code to go intoStandardException
- Thrown on errorvoid generateNulls(ActivationClassBuilder acb, MethodBuilder mb) throws StandardException
StandardException
- Thrown on errorvoid generateCore(ExpressionClassBuilder acb, MethodBuilder mb, boolean genNulls) throws StandardException
StandardException
void generateEvaluatedRow(ExpressionClassBuilder acb, MethodBuilder userExprFun, boolean genNulls, boolean forMatchingClause) throws StandardException
Generate the code for a method (userExprFun) which creates a row and, column by column, stuffs it with the evaluated expressions of our ResultColumns. The method returns the stuffed row.
This is the method that does the work.StandardException
public ExecRow buildEmptyRow() throws StandardException
StandardException
- Thrown on errorpublic ExecRow buildEmptyIndexRow(TableDescriptor td, ConglomerateDescriptor cd, StoreCostController scc, DataDictionary dd) throws StandardException
StandardException
- Thrown on errorExecRowBuilder buildRowTemplate(FormatableBitSet referencedCols, boolean skipPropagatedCols) throws StandardException
ExecRowBuilder
instance that produces a row of the
same shape as this result column list.referencedCols
- a bit map that tells which columns in the
source result set that are used, or null
if all are usedskipPropagatedCols
- whether to skip virtual columns whose
source is the immediate child result setStandardException
ExecRowBuilder buildRowTemplate() throws StandardException
buildRowTemplate(null, false)
.StandardException
private void genCreateRow(ExpressionClassBuilder acb, LocalField field, java.lang.String rowAllocatorMethod, java.lang.String rowAllocatorType, int numCols) throws StandardException
acb
- The ACB.field
- The field for the new row.rowAllocatorMethod
- The method to call.rowAllocatorType
- The row type.numCols
- The number of columns in the row.StandardException
- Thrown on errorprivate RowLocation newRowLocationTemplate() throws StandardException
StandardException
ResultColumnDescriptor[] makeResultDescriptors()
void expandAllsAndNameColumns(FromList fromList) throws StandardException
StandardException
- Thrown on errorvoid nameAllResultColumns() throws StandardException
StandardException
- Thrown on errorboolean columnTypesAndLengthsMatch() throws StandardException
StandardException
boolean columnTypesAndLengthsMatch(ResultColumnList otherRCL) throws StandardException
StandardException
boolean nopProjection(ResultColumnList childRCL)
childRCL
- The ResultColumnList of the child result set.ResultColumnList copyListAndObjects() throws StandardException
StandardException
- Thrown on errorvoid removeOrderByColumns()
select a from t order by bb is added to the select list However in the final projection, after the sort is complete, b will have to be removed.
void genVirtualColumnNodes(ResultSetNode sourceResultSet, ResultColumnList sourceResultColumnList) throws StandardException
sourceResultSet
- ResultSetNode that is source of valueStandardException
- Thrown on errorvoid genVirtualColumnNodes(ResultSetNode sourceResultSet, ResultColumnList sourceResultColumnList, boolean markReferenced) throws StandardException
sourceResultSet
- ResultSetNode that is source of valuemarkReferenced
- Whether or not to mark the underlying RCs
as referencedStandardException
- Thrown on errorvoid adjustVirtualColumnIds(int adjust)
adjust
- The size of the increment.void doProjection() throws StandardException
StandardException
- Thrown on errorjava.lang.String verifyUniqueNames(boolean errForGenCols) throws StandardException
errForGenCols
- Raise an error for any generated column names.StandardException
void propagateDCLInfo(ResultColumnList derivedRCL, java.lang.String tableName) throws StandardException
derivedRCL
- The derived column listtableName
- The table name for the FromTableStandardException
- Thrown on errorvoid rejectParameters() throws StandardException
StandardException
- Thrown if a ? parameter found directly
under a ResultColumnvoid rejectXMLValues() throws StandardException
StandardException
- Thrown if an XML value found
directly under a ResultColumnvoid setResultSetNumber(int resultSetNumber)
resultSetNumber
- The resultSetNumbervoid setRedundant()
void checkColumnUpdateability(ExecPreparedStatement cursorStmt, java.lang.String cursorName) throws StandardException
cursorStmt
- the statement that owns the cursorcursorName
- The cursor's name.StandardException
- Thrown on errorvoid setUnionResultExpression(ResultColumnList otherRCL, int tableNumber, int level, java.lang.String operatorName) throws StandardException
otherRCL
- RCL from other side of the UNION.tableNumber
- The tableNumber for the UNION.level
- The nesting level for the UNION.operatorName
- "UNION", "INTERSECT", or "EXCEPT"StandardException
- Thrown on errorprivate boolean unionCompatible(ValueNode left, ValueNode right) throws StandardException
StandardException
boolean isExactTypeAndLengthMatch(ResultColumnList otherRCL) throws StandardException
otherRCL
- The other RCL.StandardException
public boolean updateOverlaps(int[] columns)
columns
- An array of column positionsResultColumn[] getSortedByPosition()
public int[] sortMe()
ResultColumnList expandToAll(TableDescriptor td, TableName tableName) throws StandardException
td
- The TableDescriptor for the table in questiontableName
- The name of the table as given in the queryStandardException
- Thrown on errorvoid bindUntypedNullsToResultColumns(ResultColumnList bindingRCL) throws StandardException
bindingRCL
- The ResultColumnList with the types to bind to.StandardException
- Thrown on errorvoid markUpdated()
void markUpdatableByCursor()
java.lang.String verifyCreateConstraintColumnList(TableElementList tel)
void exportNames(java.lang.String[] columnNames)
columnNames
- String[] to hold the column names.ResultColumn findParentResultColumn(ResultColumn childRC)
childRC
- The child ResultColumnvoid markUpdated(ResultColumnList updateColumns)
updateColumns
- A ResultColumnList representing the columns
to be updated.void markColumnsInSelectListUpdatableByCursor(java.util.List<java.lang.String> updateColumns)
updateColumns
- A list representing the columns
to be updated.private void commonCodeForUpdatableByCursor(java.util.List<java.lang.String> updateColumns, boolean dealingWithSelectResultColumnList)
void markUpdatableByCursor(java.util.List<java.lang.String> updateColumns)
updateColumns
- A list representing the columns
to be updated.boolean updatableByCursor(int columnPosition)
columnPosition
- The position of the column in questionboolean isCloneable()
void remapColumnReferencesToExpressions() throws StandardException
StandardException
- Thrown on errorvoid setIndexRow(long cid, boolean forUpdate)
boolean hasConsistentTypeInfo() throws StandardException
StandardException
boolean containsAllResultColumn()
int countReferencedColumns()
void recordColumnReferences(int[] idArray, int basis)
idArray
- int[] for column idsbasis
- 0 (for 0-based ids) or 1 (for 1-based ids)int getPosition(java.lang.String name, int basis)
name
- Name of the columnbasis
- 0 (for 0-based ids) or 1 (for 1-based ids)void recordColumnReferences(boolean[] colArray1, JBitSet[] tableColMap, int tableNumber)
colArray1
- boolean[] for columnstableColMap
- JBitSet[] for tablestableNumber
- Table number of column referencesint allTopCRsFromSameTable()
void clearColumnReferences()
void copyReferencedColumnsToNewList(ResultColumnList targetList)
targetList
- The list to copy tovoid copyColumnsToNewList(ResultColumnList targetList, FormatableBitSet copyList)
targetList
- The list to copy to,copyList
- 1 based bitMap we copy columns associated with set bits.FormatableBitSet getColumnReferenceMap()
void pullVirtualIsReferenced()
void clearTableNames()
protected void setCountMismatchAllowed(boolean allowed)
allowed
- Whether or not a mismatch is allowed.protected boolean getCountMismatchAllowed()
int getTotalColumnSize()
void createListFromResultSetMetaData(java.sql.ResultSetMetaData rsmd, TableName tableName, java.lang.String javaClassName) throws StandardException
rsmd
- The ResultSetMetaData.tableName
- The TableName for the BCNs.javaClassName
- The name of the VTIStandardException
- Thrown on errorpublic ResultColumn addColumn(TableName tableName, java.lang.String columnName, DataTypeDescriptor dts) throws StandardException
StandardException
void addRCForRID() throws StandardException
StandardException
- Thrown on errorvoid markAllUnreferenced() throws StandardException
StandardException
- Thrown on errorboolean allExpressionsAreColumns(ResultSetNode sourceRS)
sourceRS
- The source ResultSet.ResultColumnList.ColumnMapping mapSourceColumns()
void setNullability(boolean nullability) throws StandardException
StandardException
FormatableBitSet getReferencedFormatableBitSet(boolean positionedUpdate, boolean always, boolean onlyBCNs)
positionedUpdate
- Whether or not the scan that the RCL
belongs to is for update w/o a column listalways
- Whether or not caller always wants a non-null FormatableBitSet if
all RCs are referenced.onlyBCNs
- If true, only set bit if expression is a BaseColumnNode,
otherwise set bit for all referenced RCs.ResultColumnList compactColumns(boolean positionedUpdate, boolean always) throws StandardException
positionedUpdate
- Whether or not the scan that the RCL
belongs to is for update w/o a column listalways
- Whether or not caller always wants a new RCLStandardException
- Thrown on errorvoid removeJoinColumns(ResultColumnList joinColumns)
joinColumns
- The list of join columnsResultColumnList getJoinColumns(ResultColumnList joinColumns) throws StandardException
joinColumns
- A list of the join columns.StandardException
void resetVirtualColumnIds()
boolean reusableResult()
int[] getColumnPositions(TableDescriptor td) throws StandardException
StandardException
java.lang.String[] getColumnNames()
void replaceOrForbidDefaults(TableDescriptor ttd, ResultColumnList tcl, boolean allowDefaults) throws StandardException
ttd
- The TableDescriptor for the target table.tcl
- The RCL for the target table.allowDefaults
- true if allowedStandardException
- Thrown on errorvoid setDefault(ResultColumn rc, ColumnDescriptor cd, DefaultInfoImpl defaultInfo) throws StandardException
StandardException
void checkForInvalidDefaults() throws StandardException
StandardException
- Thrown on errorvoid verifyAllOrderable() throws StandardException
StandardException
- Thrown on errorpublic void populate(TableDescriptor table, int[] columnIDs) throws StandardException
table
- describes the tablecolumnIDs
- column positions in that table (1-based)StandardException
- Thrown on errorprivate ResultColumn makeColumnFromName(java.lang.String columnName) throws StandardException
StandardException
private ResultColumn makeColumnReferenceFromName(TableName tableName, java.lang.String columnName) throws StandardException
StandardException
void forbidOverrides(ResultColumnList sourceRSRCL) throws StandardException
StandardException
- If the column is an ai columnvoid forbidOverrides(ResultColumnList sourceRSRCL, boolean defaultsWereReplaced) throws StandardException
StandardException
- If the column is an ai columnvoid incOrderBySelect()
private void decOrderBySelect()
int getOrderBySelect()
public void copyOrderBySelect(ResultColumnList src)
protected void markInitialSize()
private int numGeneratedColumns()
int numGeneratedColumnsForGroupBy()
void removeGeneratedGroupingColumns()
int visibleSize()
public java.lang.String toString()
toString
in class QueryTreeNode
private static boolean streamableType(ResultColumn rc)
private static void updateArrays(int[] mapArray, boolean[] cloneMap, java.util.Map<java.lang.Integer,java.lang.Integer> seenMap, ResultColumn rc, int index)
Apache Derby V10.14 Internals - Copyright © 2004,2018 The Apache Software Foundation. All Rights Reserved.