Пример #1
0
        public QNameManager.QName[] GetResultColumnNames()
        {
            if (this.ResultTable == null)
            {
                return(this._leftQueryExpression.GetResultColumnNames());
            }
            HashMappedList <string, ColumnSchema> columnList = ((TableDerived)this.ResultTable).ColumnList;

            QNameManager.QName[] nameArray2 = new QNameManager.QName[columnList.Size()];
            for (int i = 0; i < nameArray2.Length; i++)
            {
                nameArray2[i] = columnList.Get(i).GetName();
            }
            return(nameArray2);
        }
Пример #2
0
 private void SetVariables()
 {
     if (this.Variables.Length == 0)
     {
         this.RangeVariables = (base.Parent == null) ? base.Root.GetParameterRangeVariables() : base.Parent.RangeVariables;
     }
     else
     {
         HashMappedList <string, ColumnSchema> variables = new HashMappedList <string, ColumnSchema>();
         if ((base.Parent != null) && (base.Parent.ScopeVariables != null))
         {
             for (int j = 0; j < base.Parent.ScopeVariables.Size(); j++)
             {
                 variables.Add(base.Parent.ScopeVariables.GetKey(j), base.Parent.ScopeVariables.Get(j));
             }
         }
         for (int i = 0; i < this.Variables.Length; i++)
         {
             string name = this.Variables[i].GetName().Name;
             if (!variables.Add(name, this.Variables[i]))
             {
                 throw Error.GetError(0x15e6, name);
             }
             if (base.Root.GetParameterIndex(name) != -1)
             {
                 throw Error.GetError(0x15e6, name);
             }
         }
         this.ScopeVariables = variables;
         RangeVariable variable = new RangeVariable(variables, true);
         if (!base.Root.IsTrigger())
         {
             this.RangeVariables = new RangeVariable[] { base.Root.GetParameterRangeVariables()[0], variable };
         }
         else
         {
             this.RangeVariables = new RangeVariable[base.Root.GetParameterRangeVariables().Length + 1];
             Array.Copy(base.Root.GetParameterRangeVariables(), this.RangeVariables, (int)(this.RangeVariables.Length - 1));
             this.RangeVariables[this.RangeVariables.Length - 1] = variable;
         }
         base.Root.VariableCount = variables.Size();
     }
 }
Пример #3
0
 public TableDerived(Database database, QNameManager.QName name, int type, SqlType[] columnTypes, byte[] columnNullability, HashMappedList <string, ColumnSchema> columnList, QueryExpression queryExpression, SubQuery subQuery) : this(database, name, type, queryExpression, subQuery)
 {
     base.ColTypes               = columnTypes;
     base.ColumnList             = columnList;
     base.ColumnCount            = columnList.Size();
     base.PrimaryKeyCols         = new int[0];
     base.PrimaryKeyTypes        = SqlType.EmptyArray;
     base.PrimaryKeyColsSequence = new int[0];
     base.ColDefaults            = new Expression[base.ColumnCount];
     base.ColNotNull             = new bool[base.ColumnCount];
     for (int i = 0; i < base.ColNotNull.Length; i++)
     {
         base.ColNotNull[i] = columnNullability[i] == 0;
     }
     base.DefaultColumnMap = new int[base.ColumnCount];
     ArrayUtil.FillSequence(base.DefaultColumnMap);
     base.BestIndexForColumn = new int[base.ColTypes.Length];
     ArrayUtil.FillArray(base.BestIndexForColumn, -1);
     base.CreatePrimaryIndex(base.PrimaryKeyCols, base.PrimaryKeyTypes, null);
 }