Esempio n. 1
0
        public void SetVariable(ColumnSchema variable, object value)
        {
            int index = this.SessionVariables.GetIndex(variable.GetName().Name);

            if (index == -1)
            {
                throw Error.GetError(0x157d, variable.GetName().Name);
            }
            this.RoutineVariables[index] = value;
        }
Esempio n. 2
0
        public void AddParameter(ColumnSchema param)
        {
            QNameManager.QName name = param.GetName();
            string             key  = (name == null) ? QNameManager.GetAutoNoNameColumnString(this.ParameterList.Size()) : name.Name;

            this.ParameterList.Add(key, param);
        }
Esempio n. 3
0
        public void SetOrAddSessionVariable(ColumnSchema variable, object value)
        {
            int index = this.SessionVariables.Size();

            if (this.SessionVariables.ContainsKey(variable.GetName().Name))
            {
                index = this.SessionVariables.GetIndex(variable.GetName().Name);
            }
            else
            {
                this.SessionVariables.Add(variable.GetName().Name, variable);
                object[] destinationArray = new object[this.SessionVariables.Size()];
                Array.Copy(this.SessionVariableValues, destinationArray, this.SessionVariableValues.Length);
                this.SessionVariableValues = destinationArray;
            }
            this.SessionVariableValues[index] = value;
        }
Esempio n. 4
0
        public void AddSessionVariable(ColumnSchema variable)
        {
            int index = this.SessionVariables.Size();

            if (!this.SessionVariables.Add(variable.GetName().Name, variable))
            {
                throw Error.GetError(0x1580);
            }
            object[] destinationArray = new object[this.SessionVariables.Size()];
            Array.Copy(this.RoutineVariables, destinationArray, this.RoutineVariables.Length);
            this.RoutineVariables        = destinationArray;
            this.RoutineVariables[index] = variable.GetDefaultValue(this.session);
        }
Esempio n. 5
0
 private HashMappedList <string, ColumnSchema> GetUnionColumns()
 {
     if (this._unionCorresponding || (this._leftQueryExpression == null))
     {
         HashMappedList <string, ColumnSchema> columnList = ((TableDerived)this.ResultTable).ColumnList;
         HashMappedList <string, ColumnSchema> list3      = new HashMappedList <string, ColumnSchema>();
         for (int i = 0; i < this.UnionColumnMap.Length; i++)
         {
             ColumnSchema schema = columnList.Get(i);
             list3.Add(schema.GetName().Name, schema);
         }
         return(list3);
     }
     return(this._leftQueryExpression.GetUnionColumns());
 }
Esempio n. 6
0
        public int AddTableColumns(List <Expression> expList, int position, UtlHashSet <string> exclude)
        {
            Table table       = this.GetTable();
            int   columnCount = table.GetColumnCount();

            for (int i = 0; i < columnCount; i++)
            {
                ColumnSchema column = table.GetColumn(i);
                string       key    = (this._columnAliases == null) ? column.GetName().Name : this._columnAliases.Get(i);
                if ((exclude == null) || !exclude.Contains(key))
                {
                    Expression item = new ExpressionColumn(this, i);
                    expList.Insert(position++, item);
                }
            }
            return(position);
        }
Esempio n. 7
0
        public void WriteData(int l, SqlType[] types, object[] data, HashMappedList <string, ColumnSchema> cols, int[] primaryKeys)
        {
            bool flag = (primaryKeys != null) && (primaryKeys.Length > 0);
            int  num  = flag ? primaryKeys.Length : l;

            for (int i = 0; i < num; i++)
            {
                int     index = flag ? primaryKeys[i] : i;
                object  o     = data[index];
                SqlType t     = types[index];
                if (cols != null)
                {
                    ColumnSchema schema = cols.Get(index);
                    this.WriteFieldPrefix();
                    this.WriteString(schema.GetName().StatementName);
                }
                this.WriteData(t, o);
            }
        }
Esempio n. 8
0
        public void AddTableColumns(Expression expression, HashSet <string> exclude)
        {
            List <Expression> list  = new List <Expression>();
            Table             table = this.GetTable();
            int columnCount         = table.GetColumnCount();

            for (int i = 0; i < columnCount; i++)
            {
                ColumnSchema column = table.GetColumn(i);
                string       item   = (this._columnAliases == null) ? column.GetName().Name : this._columnAliases.Get(i);
                if ((exclude == null) || !exclude.Contains(item))
                {
                    Expression expression2 = new ExpressionColumn(this, i);
                    list.Add(expression2);
                }
            }
            Expression[] expressionArray = list.ToArray();
            expression.nodes = expressionArray;
        }
Esempio n. 9
0
 public string GetSql()
 {
     ExpressionColumn column = this._expression as ExpressionColumn;
     if (column != null)
     {
         if (this.TokenType == 0x2a9)
         {
             StringBuilder builder = new StringBuilder();
             if (((column == null) || (column.OpType != 0x61)) || (column.nodes.Length == 0))
             {
                 return this.TokenString;
             }
             builder.Append(' ');
             for (int i = 0; i < column.nodes.Length; i++)
             {
                 Expression expression = column.nodes[i];
                 ColumnSchema schema = expression.GetColumn();
                 if (expression.OpType == 3)
                 {
                     if (i > 0)
                     {
                         builder.Append(',');
                     }
                     builder.Append(expression.GetColumnName());
                 }
                 else
                 {
                     string schemaQualifiedStatementName;
                     if (expression.GetRangeVariable().TableAlias == null)
                     {
                         schemaQualifiedStatementName = schema.GetName().GetSchemaQualifiedStatementName();
                     }
                     else
                     {
                         schemaQualifiedStatementName = expression.GetRangeVariable().TableAlias.GetStatementName() + "." + schema.GetName().StatementName;
                     }
                     if (i > 0)
                     {
                         builder.Append(',');
                     }
                     builder.Append(schemaQualifiedStatementName);
                 }
             }
             builder.Append(' ');
             return builder.ToString();
         }
     }
     else
     {
         SqlType type = this._expression as SqlType;
         if (type != null)
         {
             this.IsDelimiter = false;
             if (!type.IsDistinctType() && !type.IsDomainType())
             {
                 return type.GetNameString();
             }
             return type.GetName().GetSchemaQualifiedStatementName();
         }
         ISchemaObject obj2 = this._expression as ISchemaObject;
         if (obj2 != null)
         {
             this.IsDelimiter = false;
             return obj2.GetName().GetSchemaQualifiedStatementName();
         }
     }
     if ((this.NamePrefix == null) && this.IsUndelimitedIdentifier)
     {
         return this.TokenString;
     }
     if (this.TokenType == 0x2e9)
     {
         return this.DataType.ConvertToSQLString(this.TokenValue);
     }
     StringBuilder builder2 = new StringBuilder();
     if (this.NamePrePrefix != null)
     {
         if (this.IsDelimitedPrePrefix)
         {
             builder2.Append('"');
             builder2.Append(this.NamePrePrefix);
             builder2.Append('"');
         }
         else
         {
             builder2.Append(this.NamePrePrefix);
             this.IsDelimiter = false;
         }
         builder2.Append('.');
     }
     if (this.NamePrefix != null)
     {
         if (this.IsDelimitedPrefix)
         {
             builder2.Append('"');
             builder2.Append(this.NamePrefix);
             builder2.Append('"');
         }
         else
         {
             builder2.Append(this.NamePrefix);
             this.IsDelimiter = false;
         }
         builder2.Append('.');
     }
     if (this.IsDelimitedIdentifier)
     {
         builder2.Append('"');
         builder2.Append(this.TokenString);
         builder2.Append('"');
         builder2.Append(' ');
     }
     else
     {
         builder2.Append(this.TokenString);
     }
     return builder2.ToString();
 }
Esempio n. 10
0
 public ExpressionColumn(ColumnSchema column) : base(2)
 {
     this.column     = column;
     base.DataType   = column.GetDataType();
     this.ColumnName = column.GetName().Name;
 }
Esempio n. 11
0
        public void ReadSetClauseList(RangeVariable[] rangeVars, OrderedHashSet <Expression> targets, LongDeque colIndexList, List <Expression> expressions)
        {
            Expression expression;

            while (true)
            {
                int num;
                if (base.token.TokenType == 0x2b7)
                {
                    base.Read();
                    int num4 = targets.Size();
                    base.ReadTargetSpecificationList(targets, rangeVars, colIndexList);
                    num = targets.Size() - num4;
                    base.ReadThis(0x2aa);
                }
                else
                {
                    expression = base.XreadTargetSpecification(rangeVars, colIndexList);
                    if (!targets.Add(expression))
                    {
                        break;
                    }
                    num = 1;
                }
                if (base.token.TokenType == 0x18c)
                {
                    base.ReadThis(0x18c);
                }
                else
                {
                    base.ReadThis(0x223);
                }
                int position = base.GetPosition();
                int num3     = base.ReadOpenBrackets();
                if (base.token.TokenType == 0xf9)
                {
                    this.Rewind(position);
                    SubQuery sq = base.XreadSubqueryBody(false, 0x16);
                    if (num != sq.queryExpression.GetColumnCount())
                    {
                        throw Error.GetError(0x15aa);
                    }
                    Expression item = new Expression(0x16, sq);
                    expressions.Add(item);
                    if (base.token.TokenType != 0x2ac)
                    {
                        return;
                    }
                    base.Read();
                }
                else
                {
                    if (num3 > 0)
                    {
                        this.Rewind(position);
                    }
                    if (num > 1)
                    {
                        base.ReadThis(0x2b7);
                        Expression item = base.ReadRow();
                        base.ReadThis(0x2aa);
                        int num5 = (item.GetExprType() == 0x19) ? item.nodes.Length : 1;
                        if (num != num5)
                        {
                            throw Error.GetError(0x15aa);
                        }
                        expressions.Add(item);
                    }
                    else
                    {
                        Expression item = base.XreadValueExpressionWithContext();
                        expressions.Add(item);
                    }
                    if (base.token.TokenType != 0x2ac)
                    {
                        return;
                    }
                    base.Read();
                }
            }
            ColumnSchema column = expression.GetColumn();

            throw Error.GetError(0x15cb, column.GetName().Name);
        }
Esempio n. 12
0
        public Result GetProcedureResult(Session session)
        {
            Result updateZeroResult;

            object[] objArray = new object[0];
            if (this._arguments.Length != 0)
            {
                objArray = new object[this._arguments.Length];
            }
            Dictionary <string, IRowIterator> dictionary = new Dictionary <string, IRowIterator>();

            for (int i = 0; i < this._arguments.Length; i++)
            {
                Expression expression = this._arguments[i];
                object     a          = expression.GetValue(session);
                if (expression != null)
                {
                    ColumnSchema parameter = this.Procedure.GetParameter(i);
                    SqlType      dataType  = parameter.GetDataType();
                    objArray[i] = dataType.ConvertToType(session, a, expression.GetDataType());
                    if (dataType.IsTableType())
                    {
                        IRowIterator argumentNavigator = this.GetArgumentNavigator(session, expression.GetColumnName());
                        dictionary.Add(parameter.GetName().Name, argumentNavigator);
                    }
                }
            }
            session.sessionContext.Push(true);
            session.sessionContext.PushRoutineTables(this.Procedure.ScopeTables);
            foreach (KeyValuePair <string, IRowIterator> pair in dictionary)
            {
                Table parameterTable = this.Procedure.GetParameterTable(pair.Key);
                if (parameterTable != null)
                {
                    IPersistentStore rowStore = session.sessionData.GetRowStore(parameterTable);
                    parameterTable.ClearAllData(rowStore);
                    IRowIterator iterator2 = pair.Value;
                    while (iterator2.HasNext())
                    {
                        object[] next = iterator2.GetNext();
                        parameterTable.InsertData(session, rowStore, next);
                    }
                }
            }
            session.sessionContext.RoutineArguments = objArray;
            session.sessionContext.RoutineVariables = new object[0];
            if (this.Procedure.IsPsm())
            {
                updateZeroResult = this.ExecutePsmProcedure(session);
            }
            else
            {
                updateZeroResult = this.ExecuteClrProcedure(session);
            }
            object[] routineArguments = session.sessionContext.RoutineArguments;
            session.sessionContext.PopRoutineTables();
            session.sessionContext.Pop(true);
            bool flag = false;

            for (int j = 0; j < this.Procedure.GetParameterCount(); j++)
            {
                if (this.Procedure.GetParameter(j).GetParameterMode() != 1)
                {
                    if (this._arguments[j].IsDynamicParam())
                    {
                        int parameterIndex = this._arguments[j].ParameterIndex;
                        session.sessionContext.DynamicArguments[parameterIndex] = routineArguments[j];
                        flag = true;
                    }
                    else if (this._arguments[j].IsParameter())
                    {
                        int columnIndex = this._arguments[j].GetColumnIndex();
                        session.sessionContext.RoutineArguments[columnIndex] = routineArguments[j];
                    }
                    else
                    {
                        int columnIndex = this._arguments[j].GetColumnIndex();
                        session.sessionContext.RoutineVariables[columnIndex] = routineArguments[j];
                    }
                }
            }
            if (!updateZeroResult.IsError())
            {
                if (updateZeroResult.IsSimpleValue())
                {
                    updateZeroResult = Result.UpdateZeroResult;
                }
                if (flag)
                {
                    updateZeroResult = Result.NewCallResponse(this.GetParametersMetaData().GetParameterTypes(), base.Id, session.sessionContext.DynamicArguments);
                }
            }
            return(updateZeroResult);
        }