001package gudusoft.gsqlparser.stmt; 002 003import gudusoft.gsqlparser.EDbVendor; 004import gudusoft.gsqlparser.ESqlStatementType; 005import gudusoft.gsqlparser.TCustomSqlStatement; 006import gudusoft.gsqlparser.nodes.*; 007 008/** 009 * SHOW BACKUP and SHOW RESTORE statements for StarRocks. 010 * 011 * Syntax: 012 * SHOW BACKUP [FROM <db_name>] 013 * SHOW RESTORE [FROM <db_name>] 014 * 015 * This statement views the last BACKUP/RESTORE task in a specified database. 016 * Only the information of the last BACKUP/RESTORE task is saved in StarRocks. 017 */ 018public class TStarrocksShowBackupRestoreStmt extends TCustomSqlStatement { 019 020 /** 021 * Type of show statement - BACKUP or RESTORE 022 */ 023 public enum ShowType { 024 BACKUP, 025 RESTORE 026 } 027 028 // Type of show statement 029 private ShowType showType; 030 031 // FROM clause - optional database name 032 private TObjectName databaseName; 033 034 public TStarrocksShowBackupRestoreStmt(EDbVendor dbvendor) { 035 super(dbvendor); 036 // Will be set based on showType during parsing 037 sqlstatementtype = ESqlStatementType.sststarrocksShowBackup; 038 } 039 040 // Getters 041 public ShowType getShowType() { 042 return showType; 043 } 044 045 public TObjectName getDatabaseName() { 046 return databaseName; 047 } 048 049 @Override 050 public int doParseStatement(TCustomSqlStatement psql) { 051 if (rootNode == null) return -1; 052 super.doParseStatement(psql); 053 054 TShowBackupRestoreSqlNode node = (TShowBackupRestoreSqlNode) rootNode; 055 056 TShowBackupRestoreSqlNode.ShowType nodeShowType = node.getShowType(); 057 if (nodeShowType == TShowBackupRestoreSqlNode.ShowType.BACKUP) { 058 this.showType = ShowType.BACKUP; 059 this.sqlstatementtype = ESqlStatementType.sststarrocksShowBackup; 060 } else { 061 this.showType = ShowType.RESTORE; 062 this.sqlstatementtype = ESqlStatementType.sststarrocksShowRestore; 063 } 064 065 this.databaseName = node.getDatabaseName(); 066 067 return 0; 068 } 069 070 @Override 071 public void accept(TParseTreeVisitor v) { 072 v.preVisit(this); 073 v.postVisit(this); 074 } 075 076 @Override 077 public void acceptChildren(TParseTreeVisitor v) { 078 v.preVisit(this); 079 v.postVisit(this); 080 } 081}