public override void ExplicitVisit(DeleteStatement node) { if (node.DeleteSpecification != null && node.DeleteSpecification.OutputClause != null) { SelectElementVisitor vstor = new SelectElementVisitor(resolveColumnType, columnTypeResolver, node); node.DeleteSpecification.OutputClause.Accept(vstor); if (vstor.HasOutput) { resultHasOutputResultSet.Add(vstor.ResultOutput); } } }
public override void ExplicitVisit(SelectStatement node) { if (node.Into != null) { return; } if (node.QueryExpression is BinaryQueryExpression bqe) // UNION? { // premature optimization : without visitor SelectElementVisitor vstorF = new SelectElementVisitor(resolveColumnType, columnTypeResolver, node); QuerySpecification qspecF = (QuerySpecification)bqe.FirstQueryExpression; foreach (SelectElement selectEl in qspecF.SelectElements) { selectEl.Accept(vstorF); } if (vstorF.HasOutput) { if (vstorF.ResultOutput.HasMissingColumnInfo()) { SelectElementVisitor vstorS = new SelectElementVisitor(resolveColumnType, columnTypeResolver, node); QuerySpecification qspecS = (QuerySpecification)bqe.SecondQueryExpression; foreach (SelectElement selectEl in qspecS.SelectElements) { selectEl.Accept(vstorS); } vstorF.ResultOutput.ApplyMissingInformation(vstorS.ResultOutput); } resultHasOutputResultSet.Add(vstorF.ResultOutput); } } else { SelectElementVisitor vstor = new SelectElementVisitor(resolveColumnType, columnTypeResolver, node); QuerySpecification qspec = (QuerySpecification)node.QueryExpression; foreach (SelectElement selectEl in qspec.SelectElements) { selectEl.Accept(vstor); } if (vstor.HasOutput) { resultHasOutputResultSet.Add(vstor.ResultOutput); } } }