public RangeVariable(Table table, QNameManager.SimpleName alias, OrderedHashSet <string> columnList, QNameManager.SimpleName[] columnNameList, ParserDQL.CompileContext compileContext) { this.RangeTable = table; this.TableAlias = alias; this._columnAliases = columnList; this._columnAliasNames = columnNameList; this.JoinConditions = new RangeVariableConditions[] { new RangeVariableConditions(this, true) }; this.JoinConditions[0].RangeIndex = this.RangeTable.GetPrimaryIndex(); this.WhereConditions = new RangeVariableConditions[] { new RangeVariableConditions(this, false) }; compileContext.RegisterRangeVariable(this); SubQuery subQuery = this.RangeTable.GetSubQuery(); if ((subQuery == null) || subQuery.IsResolved()) { this.SetRangeTableVariables(); } }
public void ResolveRangeTable(Session session, RangeVariable[] rangeVariables, int rangeCount, RangeVariable[] outerRanges) { SubQuery subQuery = this.RangeTable.GetSubQuery(); if ((subQuery != null) && !subQuery.IsResolved()) { if (subQuery.DataExpression != null) { List <Expression> list = subQuery.DataExpression.ResolveColumnReferences(EmptyArray, null); if (list != null) { list = subQuery.DataExpression.ResolveColumnReferences(rangeVariables, rangeCount, null, true); } if (list != null) { list = subQuery.DataExpression.ResolveColumnReferences(outerRanges, null); } if (list != null) { throw Error.GetError(0x157d, list[0].GetSql()); } subQuery.DataExpression.ResolveTypes(session, null); this.SetRangeTableVariables(); } if (subQuery.queryExpression != null) { subQuery.queryExpression.ResolveReferences(session, outerRanges); List <Expression> unresolvedExpressions = subQuery.queryExpression.GetUnresolvedExpressions(); List <Expression> list3 = Expression.ResolveColumnSet(rangeVariables, rangeCount, unresolvedExpressions, null); if (list3 != null) { throw Error.GetError(0x157d, list3[0].GetSql()); } subQuery.queryExpression.ResolveTypes(session); subQuery.PrepareTable(session); subQuery.SetCorrelated(); this.SetRangeTableVariables(); } } }