Exemplo n.º 1
0
 internal SqlInsert(SqlTable table, SqlExpression expr, Expression sourceExpression)
     : base(SqlNodeType.Insert, sourceExpression)
 {
     Table      = table;
     Expression = expr;
     Row        = new SqlRow(sourceExpression);
 }
 internal override SqlRow VisitRow(SqlRow row)
 {
     foreach (SqlColumn c in row.Columns)
     {
         c.Alias = alias;
     }
     return(base.VisitRow(row));
 }
Exemplo n.º 3
0
 internal virtual SqlRow VisitRow(SqlRow row)
 {
     for (int i = 0, n = row.Columns.Count; i < n; i++)
     {
         row.Columns[i].Expression = this.VisitExpression(row.Columns[i].Expression);
     }
     return(row);
 }
Exemplo n.º 4
0
 internal override SqlRow VisitRow(SqlRow row)
 {
     foreach (SqlColumn c in row.Columns)
     {
         this.Visit(c.Expression);
     }
     return(row);
 }
            internal override SqlRow VisitRow(SqlRow row)
            {
                SqlRow nrow = new SqlRow(row.SourceExpression);

                foreach (SqlColumn c in row.Columns)
                {
                    nrow.Columns.Add((SqlColumn)this.Visit(c));
                }
                return(nrow);
            }
Exemplo n.º 6
0
            internal override SqlRow VisitRow(SqlRow row)
            {
                var sqlRow = new SqlRow(row.SourceExpression);

                foreach (var column in row.Columns)
                {
                    sqlRow.Columns.Add((SqlColumn)Visit(column));
                }
                return(sqlRow);
            }
Exemplo n.º 7
0
 internal bool HasRowNumber(SqlRow row)
 {
     foreach (SqlColumn column in row.Columns)
     {
         if (this.HasRowNumber(column))
         {
             return(true);
         }
     }
     return(false);
 }
Exemplo n.º 8
0
 internal override SqlRow VisitRow(SqlRow row)
 {
     for (int i = 0, n = row.Columns.Count; i < n; i++)
     {
         row.Columns[i].Expression = this.VisitExpression(row.Columns[i].Expression);
         if (this.hasRowNumber)
         {
             this.CurrentColumn = row.Columns[i];
             break;
         }
     }
     return(row);
 }
            internal override SqlSelect VisitSelect(SqlSelect select)
            {
                SqlSource            from = this.VisitSource(select.From);
                List <SqlExpression> gex  = null;

                if (select.GroupBy.Count > 0)
                {
                    gex = new List <SqlExpression>(select.GroupBy.Count);
                    foreach (SqlExpression sqlExpr in select.GroupBy)
                    {
                        gex.Add((SqlExpression)this.Visit(sqlExpr));
                    }
                }
                SqlExpression             having = (SqlExpression)this.Visit(select.Having);
                List <SqlOrderExpression> lex    = null;

                if (select.OrderBy.Count > 0)
                {
                    lex = new List <SqlOrderExpression>(select.OrderBy.Count);
                    foreach (SqlOrderExpression sox in select.OrderBy)
                    {
                        SqlOrderExpression nsox = new SqlOrderExpression(sox.OrderType, (SqlExpression)this.Visit(sox.Expression));
                        lex.Add(nsox);
                    }
                }
                SqlExpression top = (SqlExpression)this.Visit(select.Top);

                SqlExpression where = (SqlExpression)this.Visit(select.Where);
                SqlRow        row       = (SqlRow)this.Visit(select.Row);
                SqlExpression selection = this.VisitExpression(select.Selection);

                SqlSelect n = new SqlSelect(selection, from, select.SourceExpression);

                if (gex != null)
                {
                    n.GroupBy.AddRange(gex);
                }
                n.Having = having;
                if (lex != null)
                {
                    n.OrderBy.AddRange(lex);
                }
                n.OrderingType = select.OrderingType;
                n.Row          = row;
                n.Top          = top;
                n.IsDistinct   = select.IsDistinct;
                n.IsPercent    = select.IsPercent;
                n.Where        = where;
                n.DoNotOutput  = select.DoNotOutput;
                return(n);
            }
Exemplo n.º 10
0
            private void ConvertColumnsToMax(SqlSelect select, out bool changed, out bool containsLongExpressions)
            {
                SqlRow row = select.Row;

                changed = false;
                containsLongExpressions = false;
                foreach (SqlColumn col in row.Columns)
                {
                    bool columnChanged;
                    containsLongExpressions = containsLongExpressions || col.SqlType.IsLargeType;
                    col.Expression          = ConvertToMax(col.Expression, out columnChanged);
                    changed = changed || columnChanged;
                }
            }
Exemplo n.º 11
0
 internal override SqlRow VisitRow(SqlRow row)
 {
     foreach (SqlColumn c in row.Columns)
     {
         if (this.RefersToColumn(c, this.match))
         {
             if (this.found != null)
             {
                 throw Error.ColumnIsDefinedInMultiplePlaces(GetColumnName(this.match));
             }
             this.found = c;
             break;
         }
     }
     return(row);
 }
Exemplo n.º 12
0
 internal override SqlRow VisitRow(SqlRow row)
 {
     for (int i = 0, n = row.Columns.Count; i < n; i++)
     {
         SqlColumn     col  = row.Columns[i];
         SqlExpression expr = this.VisitExpression(col.Expression);
         if (expr != null)
         {
             if (TypeSystem.GetNonNullableType(col.ClrType) != TypeSystem.GetNonNullableType(expr.ClrType))
             {
                 throw Error.ColumnClrTypeDoesNotAgreeWithExpressionsClrType();
             }
         }
     }
     return(row);
 }
Exemplo n.º 13
0
            private void ForceLocal(SqlRow row, string name)
            {
                bool isLocal = false;

                // check to see if it already exists locally
                foreach (SqlColumn c in row.Columns)
                {
                    if (this.RefersToColumn(c, this.found))
                    {
                        this.found = c;
                        isLocal    = true;
                        break;
                    }
                }
                if (!isLocal)
                {
                    // need to put this in the local projection list to bubble it up
                    SqlColumn c = new SqlColumn(found.ClrType, found.SqlType, name, this.found.MetaMember, new SqlColumnRef(this.found), row.SourceExpression);
                    row.Columns.Add(c);
                    this.found = c;
                }
            }
Exemplo n.º 14
0
 private SqlExpression FlattenSelection(SqlRow row, bool isInput, SqlExpression selection)
 {
     selection = this.columnizer.ColumnizeSelection(selection);
     return(new SelectionFlattener(row, this.map, isInput).VisitExpression(selection));
 }
Exemplo n.º 15
0
 internal SelectionFlattener(SqlRow row, Dictionary <SqlColumn, SqlColumn> map, bool isInput)
 {
     this.row     = row;
     this.map     = map;
     this.isInput = isInput;
 }