001package gudusoft.gsqlparser.stmt; 002 003import gudusoft.gsqlparser.EDbVendor; 004import gudusoft.gsqlparser.ESqlStatementType; 005import gudusoft.gsqlparser.TCustomSqlStatement; 006import gudusoft.gsqlparser.nodes.*; 007import gudusoft.gsqlparser.nodes.flink.TFlinkTableProperty; 008 009/** 010 * ALTER STORAGE VOLUME statement for StarRocks. 011 * 012 * Syntax: 013 * ALTER STORAGE VOLUME [ IF EXISTS ] <storage_volume_name> 014 * { COMMENT = '<comment_string>' | SET ("key" = "value"[,...]) } 015 * 016 * This statement modifies an existing storage volume's properties or comment. 017 * TYPE, LOCATIONS, and path-related properties cannot be altered. 018 */ 019public class TStarrocksAlterStorageVolumeStmt extends TCustomSqlStatement { 020 021 // Storage volume name 022 private TObjectName volumeName; 023 024 // IF EXISTS flag 025 private boolean ifExists; 026 027 // Action type 028 private TAlterStorageVolumeSqlNode.EAlterStorageVolumeAction actionType; 029 030 // New comment (for COMMENT action) 031 private String comment; 032 033 // Properties to set (for SET action) 034 private TPTNodeList<TFlinkTableProperty> properties; 035 036 public TStarrocksAlterStorageVolumeStmt(EDbVendor dbvendor) { 037 super(dbvendor); 038 sqlstatementtype = ESqlStatementType.sststarrocksAlterStorageVolume; 039 } 040 041 // Getters 042 public TObjectName getVolumeName() { 043 return volumeName; 044 } 045 046 public boolean isIfExists() { 047 return ifExists; 048 } 049 050 public TAlterStorageVolumeSqlNode.EAlterStorageVolumeAction getActionType() { 051 return actionType; 052 } 053 054 public String getComment() { 055 return comment; 056 } 057 058 public TPTNodeList<TFlinkTableProperty> getProperties() { 059 return properties; 060 } 061 062 @Override 063 public int doParseStatement(TCustomSqlStatement psql) { 064 if (rootNode == null) return -1; 065 super.doParseStatement(psql); 066 067 TAlterStorageVolumeSqlNode node = (TAlterStorageVolumeSqlNode) rootNode; 068 069 this.volumeName = node.getVolumeName(); 070 this.ifExists = node.isIfExists(); 071 this.actionType = node.getActionType(); 072 073 if (node.getComment() != null) { 074 this.comment = node.getComment().toString(); 075 } 076 077 this.properties = node.getProperties(); 078 079 return 0; 080 } 081 082 @Override 083 public void accept(TParseTreeVisitor v) { 084 v.preVisit(this); 085 v.postVisit(this); 086 } 087 088 @Override 089 public void acceptChildren(TParseTreeVisitor v) { 090 v.preVisit(this); 091 v.postVisit(this); 092 } 093}