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)); }
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); }
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); }
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); }
internal bool HasRowNumber(SqlRow row) { foreach (SqlColumn column in row.Columns) { if (this.HasRowNumber(column)) { return(true); } } return(false); }
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); }
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; } }
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); }
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); }
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; } }
private SqlExpression FlattenSelection(SqlRow row, bool isInput, SqlExpression selection) { selection = this.columnizer.ColumnizeSelection(selection); return(new SelectionFlattener(row, this.map, isInput).VisitExpression(selection)); }
internal SelectionFlattener(SqlRow row, Dictionary <SqlColumn, SqlColumn> map, bool isInput) { this.row = row; this.map = map; this.isInput = isInput; }