// Constructor internal SqlQueryExpression(SqlNodeType nodeType, ISqlQueryExpression left, ISqlQueryExpression right, bool all) : base(nodeType) { this.left = left; this.right = right; this.all = all; }
/// <inheritdoc/> public override void ReplaceWith(SqlExpression expression) { ArgumentValidator.EnsureArgumentNotNull(expression, "expression"); ArgumentValidator.EnsureArgumentIs <SqlSubQuery>(expression, "expression"); SqlSubQuery replacingExpression = expression as SqlSubQuery; query = replacingExpression.Query; }
internal SqlQueryRef(ISqlQueryExpression query, string name) : base(name) { this.query = query; var queryColumns = new List <SqlTableColumn>(); foreach (var queryExpression in query) { var select = queryExpression as SqlSelect; if (select != null) { var selectColumns = select.Columns.ToList(); select.Columns.Clear(); foreach (var originalColumn in selectColumns) { var column = originalColumn; var stubColumn = column as SqlColumnStub; if (!ReferenceEquals(null, stubColumn)) { column = stubColumn.Column; } var columnRef = column as SqlColumnRef; if (!ReferenceEquals(null, columnRef)) { stubColumn = columnRef.SqlColumn as SqlColumnStub; if (!ReferenceEquals(null, stubColumn)) { column = stubColumn.Column; } } select.Columns.Add(column); queryColumns.Add(SqlDml.TableColumn(this, originalColumn.Name)); } } var freeTextTable = queryExpression as SqlFreeTextTable; if (freeTextTable != null) { foreach (var originalColumn in freeTextTable.Columns) { queryColumns.Add(SqlDml.TableColumn(this, originalColumn.Name)); } } var containsTable = queryExpression as SqlContainsTable; if (containsTable != null) { foreach (var originalColumn in containsTable.Columns) { queryColumns.Add(SqlDml.TableColumn(this, originalColumn.Name)); } } break; } columns = new SqlTableColumnCollection(queryColumns); }
internal SqlQueryRef(ISqlQueryExpression query, string name) : base(name) { this.query = query; var queryColumns = new List <SqlTableColumn>(); foreach (var queryExpression in query) { if (queryExpression is SqlSelect sqlSelect) { var selectColumns = sqlSelect.Columns; for (int index = 0, count = selectColumns.Count; index < count; index++) { var originalColumn = selectColumns[index]; var column = originalColumn; if (column is SqlColumnStub stubColumn) { column = stubColumn.Column; } if (column is SqlColumnRef columnRef) { stubColumn = columnRef.SqlColumn as SqlColumnStub; if (!ReferenceEquals(null, stubColumn)) { column = stubColumn.Column; } } selectColumns[index] = column; queryColumns.Add(SqlDml.TableColumn(this, originalColumn.Name)); } } if (queryExpression is SqlFreeTextTable freeTextTable) { queryColumns.AddRange( freeTextTable.Columns.Select(originalColumn => SqlDml.TableColumn(this, originalColumn.Name))); } if (queryExpression is SqlContainsTable containsTable) { queryColumns.AddRange( containsTable.Columns.Select(originalColumn => SqlDml.TableColumn(this, originalColumn.Name))); } break; } columns = new SqlTableColumnCollection(queryColumns); }
private SqlSelect BuildUnionQuery(IndexInfo index) { ISqlQueryExpression result = null; var baseQueries = index.UnderlyingIndexes.Select(BuildProviderQuery).ToList(); foreach (var select in baseQueries) { result = result == null ? (ISqlQueryExpression)select : result.Union(select); } var unionRef = SqlDml.QueryRef(result); var query = SqlDml.Select(unionRef); query.Columns.AddRange(unionRef.Columns); return(query); }
public SqlQueryExpression UnionAll(ISqlQueryExpression operand) { throw new NotImplementedException(); }
public SqlQueryExpression Intersect(ISqlQueryExpression operand) { throw new NotImplementedException(); }
public SqlQueryExpression UnionAll(ISqlQueryExpression operand) { return(SqlDml.UnionAll(this, operand)); }
public SqlQueryExpression IntersectAll(ISqlQueryExpression operand) { return(SqlDml.IntersectAll(this, operand)); }
public SqlQueryExpression ExceptAll(ISqlQueryExpression operand) { return(SqlDml.ExceptAll(this, operand)); }
internal SqlQueryRef(ISqlQueryExpression query) : this(query, string.Empty) { }
private void Visit(ISqlQueryExpression queryExpression) { queryExpression.AcceptVisitor(this); }
internal SqlSubQuery(ISqlQueryExpression query) : base(SqlNodeType.SubSelect) { this.query = query; }
internal SqlCursor(string name, ISqlQueryExpression query) : base(SqlNodeType.Cursor) { this.name = name; this.query = query; }