Exemple #1
0
        // TODO: not supported in version 8? see unit test
        public static object Evaluate(NullIfExpression nullIf, IArgument arg, Scope scope)
        {
            var n1 = Evaluate <object>(nullIf.FirstExpression, arg, scope);
            var n2 = Evaluate <object>(nullIf.SecondExpression, arg, scope);

            return(Equality.Equal(n1, n2) ? null : n1);
        }
Exemple #2
0
        //The isNulls are used in the search condition to find out if any of the columns are different and therefore need an update
        private List <BooleanIsNullExpression> BuildNullIfStatements()
        {
            var isNulls = new List <BooleanIsNullExpression>();

            foreach (var descriptor in _merge.Table.Columns)
            {
                var nullExpression = new NullIfExpression();

                //var first =
                //    (nullExpression.FirstExpression = new ColumnReferenceExpression()) as ColumnReferenceExpression;
                //first.MultiPartIdentifier =  MultiPartIdentifierBuilder.Get(MergeIdentifierStrings.SourceName, descriptor.Name.GetName());

                //var second =
                //    (nullExpression.SecondExpression = new ColumnReferenceExpression()) as ColumnReferenceExpression;
                //second.MultiPartIdentifier = MultiPartIdentifierBuilder.Get(MergeIdentifierStrings.TargetName, descriptor.Name.GetName());

                nullExpression.FirstExpression  = GetColumnOrCastColumn(descriptor, MergeIdentifierStrings.SourceName);
                nullExpression.SecondExpression = GetColumnOrCastColumn(descriptor, MergeIdentifierStrings.TargetName);

                var isNullExpresson = new BooleanIsNullExpression();
                isNullExpresson.Expression = nullExpression;
                isNullExpresson.IsNot      = true;
                isNulls.Add(isNullExpresson);
            }

            return(isNulls);
        }
        //The isNulls are used in the search condition to find out if any of the columns are different and therefore need an update
        private List <BooleanIsNullExpression> BuildNullIfStatements()
        {
            var isNulls = new List <BooleanIsNullExpression>();

            foreach (var descriptor in _columnDescriptors)
            {
                var nullExpression = new NullIfExpression();

                var first =
                    (nullExpression.FirstExpression = new ColumnReferenceExpression()) as ColumnReferenceExpression;
                first.MultiPartIdentifier = new MultiPartIdentifier().Create(MergeIdentifierStrings.SourceName, descriptor.Name);

                var second =
                    (nullExpression.SecondExpression = new ColumnReferenceExpression()) as ColumnReferenceExpression;
                second.MultiPartIdentifier = new MultiPartIdentifier().Create(MergeIdentifierStrings.TargetName, descriptor.Name);

                var isNullExpresson = new BooleanIsNullExpression();
                isNullExpresson.Expression = nullExpression;
                isNullExpresson.IsNot      = true;
                isNulls.Add(isNullExpresson);
            }

            return(isNulls);
        }
 public override void Visit(NullIfExpression node) { this.action(node); }
 public override void ExplicitVisit(NullIfExpression fragment)
 {
     _fragments.Add(fragment);
 }
Exemple #6
0
        //The isNulls are used in the search condition to find out if any of the columns are different and therefore need an update
        private List<BooleanIsNullExpression> BuildNullIfStatements()
        {
            var isNulls = new List<BooleanIsNullExpression>();

            foreach (var descriptor in _merge.Table.Columns)
            {
                var nullExpression = new NullIfExpression();

                //var first =
                //    (nullExpression.FirstExpression = new ColumnReferenceExpression()) as ColumnReferenceExpression;
                //first.MultiPartIdentifier =  MultiPartIdentifierBuilder.Get(MergeIdentifierStrings.SourceName, descriptor.Name.GetName());

                //var second =
                //    (nullExpression.SecondExpression = new ColumnReferenceExpression()) as ColumnReferenceExpression;
                //second.MultiPartIdentifier = MultiPartIdentifierBuilder.Get(MergeIdentifierStrings.TargetName, descriptor.Name.GetName());

                nullExpression.FirstExpression = GetColumnOrCastColumn(descriptor, MergeIdentifierStrings.SourceName);
                nullExpression.SecondExpression = GetColumnOrCastColumn(descriptor, MergeIdentifierStrings.TargetName);

                var isNullExpresson = new BooleanIsNullExpression();
                isNullExpresson.Expression = nullExpression;
                isNullExpresson.IsNot = true;
                isNulls.Add(isNullExpresson);
            }

            return isNulls;
        }
        //The isNulls are used in the search condition to find out if any of the columns are different and therefore need an update
        private List<BooleanIsNullExpression> BuildNullIfStatements()
        {
            var isNulls = new List<BooleanIsNullExpression>();

            foreach (var descriptor in _columnDescriptors)
            {
                var nullExpression = new NullIfExpression();

                var first =
                    (nullExpression.FirstExpression = new ColumnReferenceExpression()) as ColumnReferenceExpression;
                first.MultiPartIdentifier = new MultiPartIdentifier().Create(MergeIdentifierStrings.SourceName, descriptor.Name);

                var second =
                    (nullExpression.SecondExpression = new ColumnReferenceExpression()) as ColumnReferenceExpression;
                second.MultiPartIdentifier = new MultiPartIdentifier().Create(MergeIdentifierStrings.TargetName, descriptor.Name);

                var isNullExpresson = new BooleanIsNullExpression();
                isNullExpresson.Expression = nullExpression;
                isNullExpresson.IsNot = true;
                isNulls.Add(isNullExpresson);
            }

            return isNulls;
        }