Example #1
0
 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);
         }
     }
 }
Example #2
0
            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);
                    }
                }
            }