Пример #1
0
        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);
        }
Пример #2
0
 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));
 }
Пример #3
0
            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();
            }
Пример #4
0
        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());
        }
Пример #5
0
        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());
        }
Пример #6
0
        //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);
        }
Пример #7
0
            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);
            }
Пример #8
0
        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);
        }
Пример #9
0
            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);
            }
Пример #10
0
 public ExprAliasedColumn(ExprColumn column, ExprColumnAlias?alias)
 {
     this.Column = column;
     this.Alias  = alias;
 }
Пример #11
0
 public IInsertDataBuilderMapOutput CheckExistenceBy(ExprColumn column, params ExprColumn[] rest)
 {
     return(this.CheckExistenceBy(Helpers.Combine(column, rest)));
 }
Пример #12
0
 protected override IExprAssignRecordSetterNext SetGeneric(ExprColumn column, ExprLiteral value)
 => this.Set(column, value);
Пример #13
0
 public static ExprColumn WithColumnName(this ExprColumn original, ExprColumnName newColumnName)
 => new ExprColumn(source: original.Source, columnName: newColumnName);
Пример #14
0
 public static ExprAliasedColumn WithColumn(this ExprAliasedColumn original, ExprColumn newColumn)
 => new ExprAliasedColumn(column: newColumn, alias: original.Alias);
Пример #15
0
 public UpdateBuilderSetter Set(ExprColumn col, IExprAssigning value)
 {
     this._sets.Add(new ExprColumnSetClause(col, value));
     return(new UpdateBuilderSetter(this._target, this._sets));
 }
Пример #16
0
 public ExprColumnSetClause(ExprColumn column, IExprAssigning value)
 {
     this.Column = column;
     this.Value  = value;
 }
Пример #17
0
 public IOutputSetterNext Column(ExprColumn column)
 {
     this._columns.Add(new ExprOutputColumn(new ExprAliasedColumn(column, null)));
     return(this);
 }
Пример #18
0
 public IOutputSetterNext Deleted(ExprColumn column)
 {
     this._columns.Add(new ExprOutputColumnDeleted(new ExprAliasedColumnName(column.ColumnName, null)));
     return(this);
 }
Пример #19
0
 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);
Пример #21
0
 public static ExprColumn WithSource(this ExprColumn original, IExprColumnSource?newSource)
 => new ExprColumn(source: newSource, columnName: original.ColumnName);
Пример #22
0
 protected abstract TNext SetGeneric(ExprColumn column, ExprLiteral value);
Пример #23
0
 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);
 }