public override void VisitDropTable(StatementDropTable statementDropTable)
 {
     this.Builder.Append("DROP TABLE ");
     if (statementDropTable.IfExists)
     {
         this.Builder.Append("IF EXISTS ");
     }
     statementDropTable.Table.Accept(this.ExprBuilder, null);
     this.Builder.Append(';');
 }
        public override void VisitDropTable(StatementDropTable statementDropTable)
        {
            if (!statementDropTable.IfExists)
            {
                this.Builder.Append("DROP TABLE ");
                statementDropTable.Table.Accept(this.ExprBuilder, null);
            }
            else
            {
                StatementIfExists ifExists = statementDropTable.Table switch
                {
                    ExprTableFullName t => new StatementIfTableExists(
                        t,
                        StatementList.Combine(new StatementDropTable(statementDropTable.Table, false)), null),
                    ExprTempTableName tempTable => new StatementIfTempTableExists(
                        tempTable,
                        StatementList.Combine(new StatementDropTable(statementDropTable.Table, false)), null),
                    _ => throw new ArgumentOutOfRangeException()
                };

                ifExists.Accept(this);
            }
        }
 public abstract void VisitDropTable(StatementDropTable statementDropTable);