001package gudusoft.gsqlparser.stmt; 002 003import gudusoft.gsqlparser.EDbVendor; 004import gudusoft.gsqlparser.ESqlStatementType; 005import gudusoft.gsqlparser.TCustomSqlStatement; 006import gudusoft.gsqlparser.nodes.*; 007 008/** 009 * DROP STORAGE VOLUME statement for StarRocks. 010 * 011 * Syntax: 012 * DROP STORAGE VOLUME [ IF EXISTS ] <storage_volume_name> 013 * 014 * This statement drops a storage volume from the cluster. 015 * The default storage volume and builtin_storage_volume cannot be dropped. 016 * Storage volumes referenced by databases or tables cannot be dropped. 017 */ 018public class TStarrocksDropStorageVolumeStmt extends TCustomSqlStatement { 019 020 // Storage volume name 021 private TObjectName volumeName; 022 023 // IF EXISTS flag 024 private boolean ifExists; 025 026 public TStarrocksDropStorageVolumeStmt(EDbVendor dbvendor) { 027 super(dbvendor); 028 sqlstatementtype = ESqlStatementType.sststarrocksDropStorageVolume; 029 } 030 031 // Getters 032 public TObjectName getVolumeName() { 033 return volumeName; 034 } 035 036 public boolean isIfExists() { 037 return ifExists; 038 } 039 040 @Override 041 public int doParseStatement(TCustomSqlStatement psql) { 042 if (rootNode == null) return -1; 043 super.doParseStatement(psql); 044 045 TDropStorageVolumeSqlNode node = (TDropStorageVolumeSqlNode) rootNode; 046 047 this.volumeName = node.getVolumeName(); 048 this.ifExists = node.isIfExists(); 049 050 return 0; 051 } 052 053 @Override 054 public void accept(TParseTreeVisitor v) { 055 v.preVisit(this); 056 v.postVisit(this); 057 } 058 059 @Override 060 public void acceptChildren(TParseTreeVisitor v) { 061 v.preVisit(this); 062 v.postVisit(this); 063 } 064}