001package gudusoft.gsqlparser.stmt.flink;
002
003import gudusoft.gsqlparser.EDbVendor;
004import gudusoft.gsqlparser.ESqlStatementType;
005import gudusoft.gsqlparser.TCustomSqlStatement;
006import gudusoft.gsqlparser.nodes.TParseTreeVisitor;
007
008/**
009 * Flink EXECUTE STATEMENT SET support.
010 *
011 * Syntax:
012 *   EXECUTE STATEMENT SET
013 *   BEGIN
014 *     INSERT INTO ...;
015 *     INSERT INTO ...;
016 *   END;
017 *
018 * The raw statement splitter treats the header ("EXECUTE STATEMENT SET BEGIN"),
019 * each inner INSERT, and the trailing "END" as separate statements. This class
020 * represents the header and the trailing END marker; the inner INSERT statements
021 * are regular {@link gudusoft.gsqlparser.stmt.TInsertSqlStatement} instances that
022 * immediately follow it in the statement list.
023 *
024 * @since 4.1.9
025 */
026public class TFlinkExecuteStatementSetStmt extends TCustomSqlStatement {
027
028    public TFlinkExecuteStatementSetStmt(EDbVendor dbvendor) {
029        super(dbvendor);
030        sqlstatementtype = ESqlStatementType.sstExecute;
031    }
032
033    @Override
034    public int doParseStatement(TCustomSqlStatement psql) {
035        if (rootNode == null) return -1;
036        super.doParseStatement(psql);
037        return 0;
038    }
039
040    public void accept(TParseTreeVisitor v){
041        v.preVisit(this);
042        v.postVisit(this);
043    }
044
045    public void acceptChildren(TParseTreeVisitor v){
046        v.preVisit(this);
047        v.postVisit(this);
048    }
049}