Top Description Fields Constructors Methods
org.hsqldb

public Class QuerySpecification

extends QueryExpression
Class Inheritance
Imports
java.util.Locale, org.hsqldb.HsqlNameManager.HsqlName, .HsqlNameManager.SimpleName, .ParserDQL.CompileContext, .RangeVariable.RangeIteratorRight, org.hsqldb.error.Error, .ErrorCode, org.hsqldb.index.Index, org.hsqldb.lib.ArrayListIdentity, .ArrayUtil, .HashSet, .HsqlArrayList, .IntValueHashMap, .Iterator, .List, .OrderedHashMap, .OrderedHashSet, .OrderedIntHashSet, .Set, org.hsqldb.map.ValuePool, org.hsqldb.navigator.RangeIterator, .RowSetNavigatorData, .RowSetNavigatorDataTable, org.hsqldb.persist.PersistentStore, org.hsqldb.result.Result, .ResultMetaData, .ResultProperties, org.hsqldb.types.Type, .Types

Implementation of an SQL query specification, including SELECT.
Author
Fred Toussi (fredt@users dot sourceforge.net)
Since
1.9.0
Version
2.7.4

Field Summary

Modifier and TypeField and Description
private boolean[]
private ArrayListIdentity<Expression>
private Table
pack-priv Expression
pack-priv int[]
pack-priv int
pack-priv HsqlArrayList<Expression>
pack-priv Expression[]
private int
public Index
pack-priv GroupSet
private int
public int
private int
private int
public int
public int
private int
public int
public boolean
pack-priv boolean
public boolean
public boolean
public boolean
public boolean
private boolean
public boolean
private boolean
public boolean
private RangeGroup[]
pack-priv Expression
private HsqlArrayList<RangeVariable>
pack-priv RangeVariable[]
private ArrayListIdentity<Expression>
pack-priv Type[]
public int
pack-priv int
private OrderedHashSet<Expression>
Inherited from org.hsqldb.QueryExpression:
acceptsSequencesaccessibleColumnscolumnCountcompileContextEXCEPTEXCEPT_ALLfullIndexidIndexINTERSECTINTERSECT_ALLisBaseMergeableisCheckableisCorrelatedisFullOrderisInsertableisMergeableisPartOneResolvedisPartTwoResolvedisRecursiveisReferencesResolvedisResolvedisSingleRowisTableisTopLevelisUpdatableisValueListleftQueryExpressionlowerCaseResultIdentifiermainIndexmaterialiseListNOUNIONorderIndexpersistenceScoperecursiveResultTablerecursiveSettingsrecursiveWorkTableresultMetaDataresultTablerightQueryExpressionrowNumIndexsortAndSliceUNIONUNION_ALLUNION_TERMunionColumnMapunionColumnTypesunresolvedExpressionsview

Constructor Summary

AccessConstructor and Description
pack-priv
QuerySpecification(Session session, Table table, ParserDQL.CompileContext compileContext, boolean isValueList)

pack-priv

Method Summary

Modifier and TypeMethod and Description
private void
private void
public void
pack-priv void
addGroupingExpressions(Expression[] nodes, OrderedHashSet<Expression> set)

collect all expressions in an extended group by expression set the flags for grouping set and group by

pack-priv void
addGroupingSets(Expression[] groupingExpressions)

pack-priv void
pack-priv void
pack-priv void
pack-priv void
pack-priv void
public boolean
private Result
buildResult(Session session, RowSetNavigatorData navigator, int skipCount, int limitCount)

pack-priv void
public OrderedHashSet<Expression>
public void
public OrderedHashSet<Expression>
pack-priv OrderedHashSet<RangeVariable>
pack-priv OrderedHashSet<RangeVariable>
private HashSet<HsqlNameManager.HsqlName>
private void
private void
pack-priv void
pack-priv void
public String
describe(Session session, int blanks)

Overrides org.hsqldb.QueryExpression.describe.

private void
private HashSet<String>
public Table
public int[]
pack-priv void
public Expression
public int
public String[]
public Type[]
public int
public Expression
getEquiJoinExpressions(OrderedHashSet<String> nameSet, RangeVariable rightRange, boolean fullList)

public ResultMetaData
public RangeVariable[]
pack-priv Result

Returns:

the result of executing this Select
getResult
(Session session, int
may be 0 to indicate no limit on the number of rows. Positive values limit the size of the result set.
maxRows
)

Overrides org.hsqldb.QueryExpression.getResult.

Returns the result of executing this Select.

private void
public String
public OrderedHashSet<TableDerived>
public TableDerived
public boolean
pack-priv boolean
isEquivalent(QueryExpression other)

Overrides org.hsqldb.QueryExpression.isEquivalent.

returns true if almost equivalent

public boolean
pack-priv void
mergeQuery(Session session)

isBaseMergeable is simply a flag to allow merging the current query isMergeable is a flag to allow this to act as base for a query

private int
public void
public void
replaceExpressions(OrderedHashSet<Expression> expressions, int resultRangePosition)

Overrides org.hsqldb.QueryExpression.replaceExpressions.

non-working temp code for replacing aggregate functions with simple column

public void
private void
private void
resolveColumnReferences(Session session, RangeGroup[] rangeGroups)

Resolves all column expressions in the GROUP BY clause and beyond.

private boolean
resolveColumnReferences(Session session, Expression e, int rangeCount, boolean withSequences)

private void
resolveColumnReferencesAndAllocate(Session session, Expression expression, int rangeCount, RangeGroup[] rangeGroups, boolean withSequences)

private void
pack-priv void
resolveColumnReferencesInGroupingSets(Session session, RangeGroup[] rangeGroups)

fully resolve all group by columns add each group by expression to exprColumnList

pack-priv void
resolveColumnReferencesInOrderBy(Session session, RangeGroup[] rangeGroups, SortAndSlice sortAndSlice)

public void
resolveExpressionTypes(Session session)

Sets the types of all the expressions used in this SELECT list.

pack-priv boolean
public void
resolveGroupingSets()

replace all expressions in select list and having condition with pointers to columns for group by and aggregate expressions

private void
private void
resolveRangeVariables(Session session, RangeGroup[] rangeGroups)

public void
public void
pack-priv void
pack-priv void
pack-priv void
pack-priv void
private void
pack-priv void
private void
private void
pack-priv void
pack-priv void
private void
pack-priv void
private void
pack-priv void
private void
private void
public void
pack-priv void
setReturningResultSet()

Overrides org.hsqldb.QueryExpression.setReturningResultSet.

Sets the scope to SESSION for the QueryExpression object that creates the table

pack-priv void
Inherited from org.hsqldb.QueryExpression:
addUniongetColumnsgetMainSelectgetResultColumnNamesgetResultRecursivegetResultTablegetSingleRowValuesgetUnresolvedExpressionsgetValuegetValuesisInsertableisRecursiveisUpdatableisVariableresolveresolveresolveColumnReferencesInUnionOrderBysetAsExistssetColumnsDefinedsetCorrelatedsetFullOrdersetLowerCaseResultIdentifersetRecursiveQuerySettingssetSingleRowsetTableColumnNamessetUnionCorresopondingsetUnionCorrespondingColumnssetView

Field Detail

aggregateCheckback to summary
private boolean[] aggregateCheck
aggregateListback to summary
private ArrayListIdentity<Expression> aggregateList
baseTableback to summary
private Table baseTable
checkQueryConditionback to summary
pack-priv Expression checkQueryCondition
columnMapback to summary
pack-priv int[] columnMap
endInnerRangeback to summary
pack-priv int endInnerRange
exprColumnListback to summary
pack-priv HsqlArrayList<Expression> exprColumnList
exprColumnsback to summary
pack-priv Expression[] exprColumns
groupByColumnCountback to summary
private int groupByColumnCount
groupIndexback to summary
public Index groupIndex
groupSetback to summary
pack-priv GroupSet groupSet
havingColumnCountback to summary
private int havingColumnCount
indexLimitDataback to summary
public int indexLimitData
indexLimitExpressionsback to summary
private int indexLimitExpressions
indexLimitRowIdback to summary
private int indexLimitRowId
indexLimitVisibleback to summary
public int indexLimitVisible
indexStartAggregatesback to summary
public int indexStartAggregates
indexStartHavingback to summary
private int indexStartHaving
indexStartOrderByback to summary
public int indexStartOrderBy
isAggregatedback to summary
public boolean isAggregated
isDistinctGroupsback to summary
pack-priv boolean isDistinctGroups
isDistinctSelectback to summary
public boolean isDistinctSelect
isGroupedback to summary
public boolean isGrouped
isGroupingSetsback to summary
public boolean isGroupingSets
isOrderSensitiveback to summary
public boolean isOrderSensitive
isSimpleCountback to summary
private boolean isSimpleCount
isSimpleDistinctback to summary
public boolean isSimpleDistinct
isSingleMemoryTableback to summary
private boolean isSingleMemoryTable
isUniqueResultRowsback to summary
public boolean isUniqueResultRows
outerRangesback to summary
private RangeGroup[] outerRanges
queryConditionback to summary
pack-priv Expression queryCondition
rangeVariableListback to summary
private HsqlArrayList<RangeVariable> rangeVariableList
rangeVariablesback to summary
pack-priv RangeVariable[] rangeVariables
resolvedSubqueryExpressionsback to summary
private ArrayListIdentity<Expression> resolvedSubqueryExpressions
resultColumnTypesback to summary
pack-priv Type[] resultColumnTypes
resultRangePositionback to summary
public int resultRangePosition
startInnerRangeback to summary
pack-priv int startInnerRange
tempSetback to summary
private OrderedHashSet<Expression> tempSet

Constructor Detail

QuerySpecificationback to summary
pack-priv QuerySpecification(Session session, Table table, ParserDQL.CompileContext compileContext, boolean isValueList)
QuerySpecificationback to summary
pack-priv QuerySpecification(ParserDQL.CompileContext compileContext)

Method Detail

addAggregateToListback to summary
private void addAggregateToList(Expression parent, Expression e)
addAllJoinedColumnsback to summary
private void addAllJoinedColumns(Expression e)
addExtraConditionsback to summary
public void addExtraConditions(Expression e)

Overrides org.hsqldb.QueryExpression.addExtraConditions.

addGroupingExpressionsback to summary
pack-priv void addGroupingExpressions(Expression[] nodes, OrderedHashSet<Expression> set)

collect all expressions in an extended group by expression set the flags for grouping set and group by

addGroupingSetsback to summary
pack-priv void addGroupingSets(Expression[] groupingExpressions)
addHavingExpressionback to summary
pack-priv void addHavingExpression(Expression e)
addQueryConditionback to summary
pack-priv void addQueryCondition(Expression e)
addRangeVariableback to summary
pack-priv void addRangeVariable(Session session, RangeVariable rangeVar)
addSelectColumnExpressionback to summary
pack-priv void addSelectColumnExpression(Expression e)
addSortAndSliceback to summary
pack-priv void addSortAndSlice(SortAndSlice sortAndSlice)

Overrides org.hsqldb.QueryExpression.addSortAndSlice.

areColumnsResolvedback to summary
public boolean areColumnsResolved()

Overrides org.hsqldb.QueryExpression.areColumnsResolved.

buildResultback to summary
private Result buildResult(Session session, RowSetNavigatorData navigator, int skipCount, int limitCount)
checkLobUsageback to summary
pack-priv void checkLobUsage()
collectAllExpressionsback to summary
public OrderedHashSet<Expression> collectAllExpressions(OrderedHashSet<Expression> set, OrderedIntHashSet typeSet, OrderedIntHashSet stopAtTypeSet)

Overrides org.hsqldb.QueryExpression.collectAllExpressions.

collectObjectNamesback to summary
public void collectObjectNames(Set<HsqlNameManager.HsqlName> set)

Overrides org.hsqldb.QueryExpression.collectObjectNames.

collectOuterColumnExpressionsback to summary
public OrderedHashSet<Expression> collectOuterColumnExpressions(OrderedHashSet<Expression> set, OrderedHashSet<Expression> exclude)
collectRangeVariablesback to summary
pack-priv OrderedHashSet<RangeVariable> collectRangeVariables(RangeVariable[] rangeVars, OrderedHashSet<RangeVariable> set)

Overrides org.hsqldb.QueryExpression.collectRangeVariables.

collectRangeVariablesback to summary
pack-priv OrderedHashSet<RangeVariable> collectRangeVariables(OrderedHashSet<RangeVariable> set)

Overrides org.hsqldb.QueryExpression.collectRangeVariables.

collectReferencesInSubQueriesback to summary
private HashSet<HsqlNameManager.HsqlName> collectReferencesInSubQueries(Expression expression)
createFullIndexback to summary
private void createFullIndex(Session session)
createResultMetaDataback to summary
private void createResultMetaData(Session session)
createResultTableback to summary
pack-priv void createResultTable(Session session)

Overrides org.hsqldb.QueryExpression.createResultTable.

createTableback to summary
pack-priv void createTable(Session session)

Overrides org.hsqldb.QueryExpression.createTable.

describeback to summary
public String describe(Session session, int blanks)

Overrides org.hsqldb.QueryExpression.describe.

finaliseColumnsback to summary
private void finaliseColumns()
getAllNamedJoinColumnsback to summary
private HashSet<String> getAllNamedJoinColumns()
getBaseTableback to summary
public Table getBaseTable()

Overrides org.hsqldb.QueryExpression.getBaseTable.

getBaseTableColumnMapback to summary
public int[] getBaseTableColumnMap()

Overrides org.hsqldb.QueryExpression.getBaseTableColumnMap.

getBaseTableNamesback to summary
pack-priv void getBaseTableNames(OrderedHashSet<HsqlNameManager.HsqlName> set)

Overrides org.hsqldb.QueryExpression.getBaseTableNames.

getCheckConditionback to summary
public Expression getCheckCondition()

Overrides org.hsqldb.QueryExpression.getCheckCondition.

getColumnCountback to summary
public int getColumnCount()

Overrides org.hsqldb.QueryExpression.getColumnCount.

getColumnNamesback to summary
public String[] getColumnNames()

Overrides org.hsqldb.QueryExpression.getColumnNames.

getColumnTypesback to summary
public Type[] getColumnTypes()

Overrides org.hsqldb.QueryExpression.getColumnTypes.

getCurrentRangeVariableCountback to summary
public int getCurrentRangeVariableCount()
getEquiJoinExpressionsback to summary
public Expression getEquiJoinExpressions(OrderedHashSet<String> nameSet, RangeVariable rightRange, boolean fullList)
getMetaDataback to summary
public ResultMetaData getMetaData()

Overrides org.hsqldb.QueryExpression.getMetaData.

getRangeVariablesback to summary
public RangeVariable[] getRangeVariables()

Overrides org.hsqldb.QueryExpression.getRangeVariables.

Implements org.hsqldb.RangeGroup.getRangeVariables.

getResultback to summary
pack-priv Result getResult(Session session, int maxRows)

Overrides org.hsqldb.QueryExpression.getResult.

Returns the result of executing this Select.

Parameters
maxRows:int

may be 0 to indicate no limit on the number of rows. Positive values limit the size of the result set.

Returns:Result

the result of executing this Select

getSimpleCountResultback to summary
private void getSimpleCountResult(Session session, RowSetNavigatorData navigator)
getSQLback to summary
public String getSQL()
getSubqueriesback to summary
public OrderedHashSet<TableDerived> getSubqueries()

Overrides org.hsqldb.QueryExpression.getSubqueries.

getValueListTableback to summary
public TableDerived getValueListTable()
hasReferenceback to summary
public boolean hasReference(RangeVariable range)

Overrides org.hsqldb.QueryExpression.hasReference.

isEquivalentback to summary
pack-priv boolean isEquivalent(QueryExpression other)

Overrides org.hsqldb.QueryExpression.isEquivalent.

returns true if almost equivalent

isSingleColumnback to summary
public boolean isSingleColumn()

Overrides org.hsqldb.QueryExpression.isSingleColumn.

mergeQueryback to summary
pack-priv void mergeQuery(Session session)

isBaseMergeable is simply a flag to allow merging the current query isMergeable is a flag to allow this to act as base for a query

replaceColumnIndexInOrderByback to summary
private int replaceColumnIndexInOrderBy(Expression orderBy)
replaceColumnReferencesback to summary
public void replaceColumnReferences(Session session, RangeVariable range, Expression[] list)

Overrides org.hsqldb.QueryExpression.replaceColumnReferences.

replaceExpressionsback to summary
public void replaceExpressions(OrderedHashSet<Expression> expressions, int resultRangePosition)

Overrides org.hsqldb.QueryExpression.replaceExpressions.

Doc from org.hsqldb.QueryExpression.replaceExpressions.

non-working temp code for replacing aggregate functions with simple column

replaceRangeVariablesback to summary
public void replaceRangeVariables(RangeVariable[] ranges, RangeVariable[] newRanges)

Overrides org.hsqldb.QueryExpression.replaceRangeVariables.

resolveAggregatesback to summary
private void resolveAggregates()
resolveColumnReferencesback to summary
private void resolveColumnReferences(Session session, RangeGroup[] rangeGroups)

Resolves all column expressions in the GROUP BY clause and beyond. Replaces any alias column expression in the ORDER BY clause with the actual select column expression.

resolveColumnReferencesback to summary
private boolean resolveColumnReferences(Session session, Expression e, int rangeCount, boolean withSequences)
resolveColumnReferencesAndAllocateback to summary
private void resolveColumnReferencesAndAllocate(Session session, Expression expression, int rangeCount, RangeGroup[] rangeGroups, boolean withSequences)
resolveColumnReferencesForAsteriskback to summary
private void resolveColumnReferencesForAsterisk()
resolveColumnReferencesInGroupingSetsback to summary
pack-priv void resolveColumnReferencesInGroupingSets(Session session, RangeGroup[] rangeGroups)

fully resolve all group by columns add each group by expression to exprColumnList

resolveColumnReferencesInOrderByback to summary
pack-priv void resolveColumnReferencesInOrderBy(Session session, RangeGroup[] rangeGroups, SortAndSlice sortAndSlice)
resolveExpressionTypesback to summary
public void resolveExpressionTypes(Session session)

Sets the types of all the expressions used in this SELECT list.

resolveForGroupByback to summary
pack-priv boolean resolveForGroupBy(List<Expression> unresolvedSet)
resolveGroupingSetsback to summary
public void resolveGroupingSets()

replace all expressions in select list and having condition with pointers to columns for group by and aggregate expressions

resolveGroupsback to summary
private void resolveGroups()
resolveRangeVariablesback to summary
private void resolveRangeVariables(Session session, RangeGroup[] rangeGroups)
resolveReferencesback to summary
public void resolveReferences(Session session, RangeGroup[] rangeGroups)

Overrides org.hsqldb.QueryExpression.resolveReferences.

resolveTypesback to summary
public void resolveTypes(Session session)

Overrides org.hsqldb.QueryExpression.resolveTypes.

resolveTypesPartOneback to summary
pack-priv void resolveTypesPartOne(Session session)

Overrides org.hsqldb.QueryExpression.resolveTypesPartOne.

resolveTypesPartThreeback to summary
pack-priv void resolveTypesPartThree(Session session)

Overrides org.hsqldb.QueryExpression.resolveTypesPartThree.

resolveTypesPartTwoback to summary
pack-priv void resolveTypesPartTwo(Session session)

Overrides org.hsqldb.QueryExpression.resolveTypesPartTwo.

resolveTypesPartTwoRecursiveback to summary
pack-priv void resolveTypesPartTwoRecursive(Session session)

Overrides org.hsqldb.QueryExpression.resolveTypesPartTwoRecursive.

additional resolution for union

setAggregateConditionsback to summary
private void setAggregateConditions(Session session)
setColumnAliasesback to summary
pack-priv void setColumnAliases(HsqlNameManager.SimpleName[] names)
setColumnIndexesback to summary
private void setColumnIndexes()
setDistinctConditionsback to summary
private void setDistinctConditions(Session session)
setDistinctGroupsback to summary
pack-priv void setDistinctGroups()
setDistinctSelectback to summary
pack-priv void setDistinctSelect()
setGroupedAggregateConditionsback to summary
private void setGroupedAggregateConditions(Session session)
setMergeabilityback to summary
pack-priv void setMergeability()
setRangeVariableConditionsback to summary
private void setRangeVariableConditions(Session session)
setReferenceableColumnsback to summary
pack-priv void setReferenceableColumns()
setResultColumnTypesback to summary
private void setResultColumnTypes()
setResultNullabilityback to summary
private void setResultNullability()
setReturningResultback to summary
public void setReturningResult()

Overrides org.hsqldb.QueryExpression.setReturningResult.

Not for views. Only used on root node.

setReturningResultSetback to summary
pack-priv void setReturningResultSet()

Overrides org.hsqldb.QueryExpression.setReturningResultSet.

Doc from org.hsqldb.QueryExpression.setReturningResultSet.

Sets the scope to SESSION for the QueryExpression object that creates the table

setUpdatabilityback to summary
pack-priv void setUpdatability(Session session)