// 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); }
//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); }
//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; }