public QsiExpressionNode VisitSubqueryComparisonPredicate(SubqueryComparisonPredicate subqueryComparisonPredicate) { var expressionNode = TreeHelper.Create <QsiBinaryExpressionNode>(ln => { ln.Left.SetValue(VisitScalarExpression(subqueryComparisonPredicate.Expression)); ln.Right.SetValue(VisitScalarSubquery(subqueryComparisonPredicate.Subquery)); ln.Operator = ConvertBooleanComparisonType(subqueryComparisonPredicate.ComparisonType); }); if (subqueryComparisonPredicate.SubqueryComparisonPredicateType == SubqueryComparisonPredicateType.None) { SqlServerTree.PutFragmentSpan(expressionNode, subqueryComparisonPredicate); return(expressionNode); } return(TreeHelper.Create <QsiInvokeExpressionNode>(n => { n.Member.SetValue(TreeHelper.CreateFunction(subqueryComparisonPredicate.SubqueryComparisonPredicateType switch { SubqueryComparisonPredicateType.All => SqlServerKnownFunction.All, SubqueryComparisonPredicateType.Any => SqlServerKnownFunction.Any, _ => throw new InvalidOperationException() })); n.Parameters.Add(expressionNode); SqlServerTree.PutFragmentSpan(n, subqueryComparisonPredicate); }));
public override void Visit(SubqueryComparisonPredicate node) { this.action(node); }
public override void ExplicitVisit(SubqueryComparisonPredicate fragment) { _fragments.Add(fragment); }