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; }
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); }
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; }
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); }
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()); }
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); }
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); } }
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; }
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(); }
public ExpressionColumn(ColumnSchema column) : base(2) { this.column = column; base.DataType = column.GetDataType(); this.ColumnName = column.GetName().Name; }
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); }
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); }