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}