001package gudusoft.gsqlparser.stmt; 002 003import gudusoft.gsqlparser.*; 004import gudusoft.gsqlparser.nodes.*; 005import gudusoft.gsqlparser.stmt.db2.TCustomDb2Stmt; 006 007public class TSignalStmt extends TCustomDb2Stmt { 008 public TSignalStmt(EDbVendor dbvendor){ 009 super(dbvendor); 010 sqlstatementtype = ESqlStatementType.sstsignalstatement ; 011 } 012 013 void buildsql() { 014 } 015 016 void clear() { 017 } 018 019 String getasprettytext() { 020 return ""; 021 } 022 023 void iterate(TVisitorAbs pvisitor) { 024 } 025 026 private TExpression stateValue; 027 private TObjectName conditionName; 028 private TExpressionList signalInformations; 029 030 public TExpressionList getSignalInformations() { 031 return signalInformations; 032 } 033 034 public TExpression getStateValue() { 035 return stateValue; 036 } 037 038 public TObjectName getConditionName() { 039 return conditionName; 040 } 041 042 public int doParseStatement(TCustomSqlStatement psql) { 043 if (rootNode == null) return -1; 044 super.doParseStatement(psql); 045 046 switch (dbvendor){ 047 case dbvmysql: 048 case dbvdb2: 049 case dbvteradata: 050 TSignalSqlNode node = (TSignalSqlNode)rootNode; 051 stateValue = node.getStateValue(); 052 conditionName = node.getConditionName(); 053 signalInformations = node.getSignalInformations(); 054 break; 055 case dbvoceanbase: 056 // MySQL/system tenant: the MySQL SIGNAL (Mantis 4813); Oracle tenant unchanged 057 if (isMySQLDialect() && (rootNode instanceof TSignalSqlNode)){ 058 TSignalSqlNode obNode = (TSignalSqlNode)rootNode; 059 stateValue = obNode.getStateValue(); 060 conditionName = obNode.getConditionName(); 061 signalInformations = obNode.getSignalInformations(); 062 } 063 break; 064 default: 065 TStubStmtSqlNode stubSqlNode = (TStubStmtSqlNode)rootNode; 066 } 067 068 069 return 0; 070 } 071 072 public void accept(TParseTreeVisitor v){ 073 v.preVisit(this); 074 v.postVisit(this); 075 } 076 077 public void acceptChildren(TParseTreeVisitor v){ 078 v.preVisit(this); 079 v.postVisit(this); 080 } 081 082}