public bool VisitExprColumn(ExprColumn expr, TCtx arg) { var res = this.Visit(expr, "Column", arg, out var argOut) && this.Accept("Source", expr.Source, argOut) && this.Accept("ColumnName", expr.ColumnName, argOut); this._visitor.EndVisitExpr(expr, arg); return(res); }
public TRes VisitExprColumn(ExprColumn exprColumn, ExprValueTypeAnalyzerCtx <TRes, TCtx> ctx) { if (exprColumn is TableColumn tc) { return(tc.SqlType.Accept(this, ctx)); } return(ctx.ValueVisitor.VisitAny(ctx.Ctx, null)); }
public Scalar(SqlQuery sqlBilder, LambdaInfo lambda, ISqlExpression field, params QuerySource[] baseQueries) : base(sqlBilder, lambda, baseQueries) { _field = new ExprColumn(this, field, null); Fields.Add(_field); ParsingTracer.DecIndentLevel(); }
public void BasicTest() { var c1 = new ExprColumn(null, new ExprColumnName("C1")); var c2 = new ExprColumn(null, new ExprColumnName("C2")); Assert.AreEqual("[C1]", c1.ToSql()); Assert.AreEqual("[C1]=5", (c1 == 5).ToSql()); Assert.AreEqual("[C1]>=5 AND [C2]!='6' OR [C2]!='7''n''7'", (c1 >= 5 & c2 != "6" | c2 != "7'n'7").ToSql()); Assert.AreEqual("[C1]<5 AND([C2]<=6 OR [C2]='7''n''7' AND [C2]>'2020-02-21')", (c1 < 5 & (c2 <= 6 | c2 == "7'n'7" & c2 > new DateTime(2020, 02, 21))).ToSql()); }
public void NotTest_Predicate() { var c1 = new ExprColumn(null, new ExprColumnName("C1")); var a = (!(c1 == 7)).ToSql(); Assert.AreEqual("NOT [C1]=7", (!(c1 == 7)).ToSql()); Assert.AreEqual("NOT [C1]=7 AND NOT [C1]=3", (!(c1 == 7) & !(c1 == 3)).ToSql()); Assert.AreEqual("NOT [C1]=7 AND NOT [C1]=3 OR NOT [C1]=3", ((!(c1 == 7) & !(c1 == 3)) | !(c1 == 3)).ToSql()); Assert.AreEqual("NOT [C1]=7 AND NOT [C1]=3 OR NOT [C1]=3", (!(c1 == 7) & !(c1 == 3) | !(c1 == 3)).ToSql()); Assert.AreEqual("NOT(NOT [C1]=7 AND NOT [C1]=3) OR NOT [C1]=3", (!(!(c1 == 7) & !(c1 == 3)) | !(c1 == 3)).ToSql()); }
//Meta public bool VisitExprColumn(ExprColumn exprColumn, IExpr?parent) { if (exprColumn.Source != null) { exprColumn.Source.Accept(this, exprColumn); this.Builder.Append('.'); } exprColumn.ColumnName.Accept(this, exprColumn); return(true); }
public ExprColumn FindField(ExprColumn column) { foreach (var field in Fields) { if (field is ExprColumn && ((ExprColumn)field).SqlExpression == column.SqlExpression) { return((ExprColumn)field); } } Fields.Add(column); return(column); }
protected override IRecordSetterNext SetGeneric(ExprColumn column, ExprLiteral value) { var record = this._record.AssertFatalNotNull(nameof(this._record)); if (this._capacity.HasValue && record.Count == this._capacity) { throw new SqExpressException($"Number of columns on {this.Index+1} iteration exceeds number of columns on the first one"); } record.Add(value); if (!this._capacity.HasValue) { this._columns.Add(column); } return(this); }
public override ICloneableElement Clone(Dictionary <ICloneableElement, ICloneableElement> objectTree, Predicate <ICloneableElement> doClone) { if (!doClone(this)) { return(this); } ICloneableElement clone; if (!objectTree.TryGetValue(this, out clone)) { var col = new ExprColumn((QuerySource)QuerySource.Clone(objectTree, doClone), Expr, _alias); if (_sqlExpression != null) { col._sqlExpression = (ISqlExpression)_sqlExpression.Clone(objectTree, doClone); } objectTree.Add(this, clone = col); } return(clone); }
public ExprAliasedColumn(ExprColumn column, ExprColumnAlias?alias) { this.Column = column; this.Alias = alias; }
public IInsertDataBuilderMapOutput CheckExistenceBy(ExprColumn column, params ExprColumn[] rest) { return(this.CheckExistenceBy(Helpers.Combine(column, rest))); }
protected override IExprAssignRecordSetterNext SetGeneric(ExprColumn column, ExprLiteral value) => this.Set(column, value);
public static ExprColumn WithColumnName(this ExprColumn original, ExprColumnName newColumnName) => new ExprColumn(source: original.Source, columnName: newColumnName);
public static ExprAliasedColumn WithColumn(this ExprAliasedColumn original, ExprColumn newColumn) => new ExprAliasedColumn(column: newColumn, alias: original.Alias);
public UpdateBuilderSetter Set(ExprColumn col, IExprAssigning value) { this._sets.Add(new ExprColumnSetClause(col, value)); return(new UpdateBuilderSetter(this._target, this._sets)); }
public ExprColumnSetClause(ExprColumn column, IExprAssigning value) { this.Column = column; this.Value = value; }
public IOutputSetterNext Column(ExprColumn column) { this._columns.Add(new ExprOutputColumn(new ExprAliasedColumn(column, null))); return(this); }
public IOutputSetterNext Deleted(ExprColumn column) { this._columns.Add(new ExprOutputColumnDeleted(new ExprAliasedColumnName(column.ColumnName, null))); return(this); }
public UpdateBuilderSetter Set(ExprColumn col, double value) => this.Set(col, SqQueryBuilder.Literal(value));
public static ExprAliasedColumn As(this ExprColumn column, ExprColumnAlias alias) => new ExprAliasedColumn(column, alias);
public static ExprColumn WithSource(this ExprColumn original, IExprColumnSource?newSource) => new ExprColumn(source: newSource, columnName: original.ColumnName);
protected abstract TNext SetGeneric(ExprColumn column, ExprLiteral value);
public static ExprColumnSetClause WithColumn(this ExprColumnSetClause original, ExprColumn newColumn) => new ExprColumnSetClause(column: newColumn, value: original.Value);
public IQuerySpecificationBuilderFinal GroupBy(ExprColumn column1, ExprColumn column2, params ExprColumn[] otherColumns) { this._groupBy.AssertFatalNull(nameof(this._groupBy)); this._groupBy = Helpers.Combine(column1, column2, otherColumns); return(this); }