001package gudusoft.gsqlparser.stmt;
002
003import gudusoft.gsqlparser.EDbVendor;
004import gudusoft.gsqlparser.ESqlStatementType;
005import gudusoft.gsqlparser.TCustomSqlStatement;
006import gudusoft.gsqlparser.nodes.*;
007
008/**
009 * Statement class for StarRocks DROP DICTIONARY statement.
010 *
011 * Syntax:
012 * DROP DICTIONARY dictionary_object_name [CACHE]
013 */
014public class TStarrocksDropDictionaryStmt extends TCustomSqlStatement {
015
016    private TObjectName dictionaryName;
017    private boolean cacheOnly;
018
019    public TStarrocksDropDictionaryStmt(EDbVendor dbVendor) {
020        super(dbVendor);
021        sqlstatementtype = ESqlStatementType.sststarrocksDropDictionary;
022    }
023
024    public TObjectName getDictionaryName() {
025        return dictionaryName;
026    }
027
028    public boolean isCacheOnly() {
029        return cacheOnly;
030    }
031
032    @Override
033    public void accept(TParseTreeVisitor v) {
034        v.preVisit(this);
035        v.postVisit(this);
036    }
037
038    @Override
039    public void acceptChildren(TParseTreeVisitor v) {
040        if (this.dictionaryName != null) {
041            this.dictionaryName.accept(v);
042        }
043    }
044
045    @Override
046    public int doParseStatement(TCustomSqlStatement psql) {
047        if (rootNode == null) return -1;
048        super.doParseStatement(psql);
049
050        if (rootNode instanceof TDropDictionarySqlNode) {
051            TDropDictionarySqlNode node = (TDropDictionarySqlNode) rootNode;
052            this.dictionaryName = node.getDictionaryName();
053            this.cacheOnly = node.isCacheOnly();
054        }
055        return 0;
056    }
057}