001package gudusoft.gsqlparser.stmt;
002
003import gudusoft.gsqlparser.EDbVendor;
004import gudusoft.gsqlparser.ESqlStatementType;
005import gudusoft.gsqlparser.TCustomSqlStatement;
006import gudusoft.gsqlparser.nodes.*;
007
008/**
009 * DESC[RIBE] STORAGE VOLUME statement for StarRocks.
010 *
011 * Syntax:
012 * DESC[RIBE] STORAGE VOLUME <storage_volume_name>
013 *
014 * This statement describes a specific storage volume, including
015 * its name, type, location, credentials, enabled status, and comment.
016 */
017public class TStarrocksDescStorageVolumeStmt extends TCustomSqlStatement {
018
019    // Storage volume name
020    private TObjectName volumeName;
021
022    public TStarrocksDescStorageVolumeStmt(EDbVendor dbvendor) {
023        super(dbvendor);
024        sqlstatementtype = ESqlStatementType.sststarrocksDescStorageVolume;
025    }
026
027    // Getters
028    public TObjectName getVolumeName() {
029        return volumeName;
030    }
031
032    @Override
033    public int doParseStatement(TCustomSqlStatement psql) {
034        if (rootNode == null) return -1;
035        super.doParseStatement(psql);
036
037        TDescStorageVolumeSqlNode node = (TDescStorageVolumeSqlNode) rootNode;
038
039        this.volumeName = node.getVolumeName();
040
041        return 0;
042    }
043
044    @Override
045    public void accept(TParseTreeVisitor v) {
046        v.preVisit(this);
047        v.postVisit(this);
048    }
049
050    @Override
051    public void acceptChildren(TParseTreeVisitor v) {
052        v.preVisit(this);
053        v.postVisit(this);
054    }
055}