Top Description Fields Constructors Methods
org.hsqldb

public Class RangeVariableResolver

extends Object
Class Inheritance
Imports
org.hsqldb.ParserDQL.CompileContext, .RangeVariable.RangeVariableConditions, org.hsqldb.error.Error, .ErrorCode, org.hsqldb.index.Index, .Index.IndexUse, org.hsqldb.lib.ArrayUtil, .HashMap, .HsqlArrayList, .IntKeyIntValueHashMap, .Iterator, .List, .MultiValueHashMap, .OrderedHashSet, .OrderedIntHashSet, org.hsqldb.persist.PersistentStore

Determines how JOIN and WHERE expressions are used in query processing and which indexes are used for table access.
Author
Fred Toussi (fredt@users dot sourceforge.net)
Since
1.9.0
Version
2.7.3

Field Summary

Modifier and TypeField and Description
pack-priv OrderedIntHashSet
pack-priv IntKeyIntValueHashMap
pack-priv ParserDQL.CompileContext
pack-priv Expression
pack-priv boolean
pack-priv int
pack-priv int
pack-priv int
pack-priv int
pack-priv int
pack-priv Expression[]
pack-priv boolean[]
pack-priv HsqlArrayList<Expression>[]
pack-priv int
pack-priv int
pack-priv HsqlArrayList<Expression>
pack-priv RangeVariable[]
pack-priv OrderedHashSet<RangeVariable>
pack-priv boolean
pack-priv QuerySpecification
pack-priv Session
pack-priv SortAndSlice
pack-priv OrderedHashSet<Expression>
pack-priv HsqlArrayList<Expression>[]
pack-priv HashMap<ColumnSchema, Expression>
pack-priv MultiValueHashMap<ColumnSchema, Expression>
pack-priv OrderedHashSet<RangeVariable>
pack-priv HsqlArrayList<Expression>[]

Constructor Summary

AccessConstructor and Description
pack-priv
pack-priv
RangeVariableResolver(Session session, RangeVariable[] rangeVariables, Expression conditions, ParserDQL.CompileContext compileContext, boolean reorder)

Method Summary

Modifier and TypeMethod and Description
pack-priv void
assignToJoinLists(Expression e, List<Expression>[] expressionLists, int first)

Assigns a single condition to the relevant list of conditions Parameter first indicates the first range variable to which condition can be assigned

pack-priv void
assignToLists()

Assigns the conditions to separate lists

pack-priv void
pack-priv void
assignToRangeVariables()

Assigns conditions to range variables and converts suitable IN conditions to table lookup.

pack-priv void
private void
pack-priv static Expression
decomposeAndConditions(Session session, Expression e, List<Expression> conditions)

Divides AND and OR conditions and assigns

pack-priv static Expression
decomposeOrConditions(Expression e, List<Expression> conditions)

Divides AND and OR conditions and adds to list

pack-priv void
pack-priv int
getJoinedRangePosition(Expression e, int position, RangeVariable[] currentRanges)

private void
pack-priv void
moveConditions(List<Expression>[] lists, int rangeStart, int rangeLimit, List<Expression> list, int listIndex)

pack-priv void
pack-priv void
pack-priv void
private double
searchCost(Session session, Table table, Index index, int count, int opType)

private void
pack-priv void
setInConditionsAsTables()

Converts an IN conditions into a JOIN

private void
setIndexConditions(RangeVariable.RangeVariableConditions conditions, List<Expression> exprList, int rangeVarIndex, boolean includeOr)

Assigns a set of conditions to a range variable.

private void
private boolean
setOrConditions(RangeVariable.RangeVariableConditions conditions, ExpressionLogical orExpression, int rangeVarIndex)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

colIndexSetEqualback to summary
pack-priv OrderedIntHashSet colIndexSetEqual
colIndexSetOtherback to summary
pack-priv IntKeyIntValueHashMap colIndexSetOther
compileContextback to summary
pack-priv ParserDQL.CompileContext compileContext
conditionsback to summary
pack-priv Expression conditions
expandInExpressionback to summary
pack-priv boolean expandInExpression
firstLateralJoinIndexback to summary
pack-priv int firstLateralJoinIndex
firstLeftJoinIndexback to summary
pack-priv int firstLeftJoinIndex
firstOuterJoinIndexback to summary
pack-priv int firstOuterJoinIndex
firstRightJoinIndexback to summary
pack-priv int firstRightJoinIndex
inExpressionCountback to summary
pack-priv int inExpressionCount
inExpressionsback to summary
pack-priv Expression[] inExpressions
inInJoinback to summary
pack-priv boolean[] inInJoin
joinExpressionsback to summary
pack-priv HsqlArrayList<Expression>[] joinExpressions
lastOuterJoinIndexback to summary
pack-priv int lastOuterJoinIndex
lastRightJoinIndexback to summary
pack-priv int lastRightJoinIndex
queryConditionsback to summary
pack-priv HsqlArrayList<Expression> queryConditions
rangeVariablesback to summary
pack-priv RangeVariable[] rangeVariables
rangeVarSetback to summary
pack-priv OrderedHashSet<RangeVariable> rangeVarSet
reorderback to summary
pack-priv boolean reorder
selectback to summary
pack-priv QuerySpecification select
sessionback to summary
pack-priv Session session
sortAndSliceback to summary
pack-priv SortAndSlice sortAndSlice
tempExprSetback to summary
pack-priv OrderedHashSet<Expression> tempExprSet
tempJoinExpressionsback to summary
pack-priv HsqlArrayList<Expression>[] tempJoinExpressions
tempMapback to summary
pack-priv HashMap<ColumnSchema, Expression> tempMap
tempMultiMapback to summary
pack-priv MultiValueHashMap<ColumnSchema, Expression> tempMultiMap
tempRangeSetback to summary
pack-priv OrderedHashSet<RangeVariable> tempRangeSet
whereExpressionsback to summary
pack-priv HsqlArrayList<Expression>[] whereExpressions

Constructor Detail

RangeVariableResolverback to summary
pack-priv RangeVariableResolver(Session session, QuerySpecification select)
RangeVariableResolverback to summary
pack-priv RangeVariableResolver(Session session, RangeVariable[] rangeVariables, Expression conditions, ParserDQL.CompileContext compileContext, boolean reorder)

Method Detail

assignToJoinListsback to summary
pack-priv void assignToJoinLists(Expression e, List<Expression>[] expressionLists, int first)

Assigns a single condition to the relevant list of conditions Parameter first indicates the first range variable to which condition can be assigned

assignToListsback to summary
pack-priv void assignToLists()

Assigns the conditions to separate lists

assignToRangeVariableback to summary
pack-priv void assignToRangeVariable(RangeVariable.RangeVariableConditions conditions, List<Expression> exprList)
assignToRangeVariablesback to summary
pack-priv void assignToRangeVariables()

Assigns conditions to range variables and converts suitable IN conditions to table lookup.

closeJoinChainback to summary
pack-priv void closeJoinChain(List<Expression>[] lists, Expression e1, Expression e2)
collectIndexableColumnsback to summary
private void collectIndexableColumns(RangeVariable range, List<Expression> exprList)
decomposeAndConditionsback to summary
pack-priv static Expression decomposeAndConditions(Session session, Expression e, List<Expression> conditions)

Divides AND and OR conditions and assigns

decomposeOrConditionsback to summary
pack-priv static Expression decomposeOrConditions(Expression e, List<Expression> conditions)

Divides AND and OR conditions and adds to list

expandConditionsback to summary
pack-priv void expandConditions()
getJoinedRangePositionback to summary
pack-priv int getJoinedRangePosition(Expression e, int position, RangeVariable[] currentRanges)
initialiseback to summary
private void initialise()
moveConditionsback to summary
pack-priv void moveConditions(List<Expression>[] lists, int rangeStart, int rangeLimit, List<Expression> list, int listIndex)
processConditionsback to summary
pack-priv void processConditions()
reorderback to summary
pack-priv void reorder()
reorderRangesback to summary
pack-priv void reorderRanges(HsqlArrayList<Expression> starts, HsqlArrayList<Expression> joins)
searchCostback to summary
private double searchCost(Session session, Table table, Index index, int count, int opType)
setEqualityConditionsback to summary
private void setEqualityConditions(RangeVariable.RangeVariableConditions conditions, List<Expression> exprList, int rangeVarIndex)
setInConditionsAsTablesback to summary
pack-priv void setInConditionsAsTables()

Converts an IN conditions into a JOIN

setIndexConditionsback to summary
private void setIndexConditions(RangeVariable.RangeVariableConditions conditions, List<Expression> exprList, int rangeVarIndex, boolean includeOr)

Assigns a set of conditions to a range variable.

setNonEqualityConditionsback to summary
private void setNonEqualityConditions(RangeVariable.RangeVariableConditions conditions, List<Expression> exprList, int rangeVarIndex)
setOrConditionsback to summary
private boolean setOrConditions(RangeVariable.RangeVariableConditions conditions, ExpressionLogical orExpression, int rangeVarIndex)