001package gudusoft.gsqlparser.stmt.teradata;
002
003import gudusoft.gsqlparser.*;
004import gudusoft.gsqlparser.nodes.*;
005import gudusoft.gsqlparser.nodes.teradata.TAbortSqlNode;
006import gudusoft.gsqlparser.nodes.teradata.TTeradataGiveSqlNode;
007
008
009public class TTeradataAbort extends TCustomSqlStatement {
010
011    private TFromTableList fromTableList;
012    private TWhereClause whereClause;
013    private String abortMessage;
014
015    public TTeradataAbort(EDbVendor dbvendor) {
016        super(dbvendor);
017        sqlstatementtype = ESqlStatementType.sstteradataabort;
018    }
019
020    public void accept(TParseTreeVisitor v){
021        v.preVisit(this);
022        v.postVisit(this);
023    }
024
025    public void acceptChildren(TParseTreeVisitor v){
026        v.preVisit(this);
027        v.postVisit(this);
028    }
029    public int doParseStatement(TCustomSqlStatement psql) {
030        if (rootNode == null) return -1;
031        super.doParseStatement(psql);
032        TAbortSqlNode abortSqlNode = (TAbortSqlNode)rootNode;
033        abortMessage = abortSqlNode.getAbortMessage();
034        whereClause = abortSqlNode.getWhereClause();
035        if (whereClause != null) {
036            whereClause.doParse(this, ESqlClause.unknown);
037        }
038
039        if (abortSqlNode.getFromTableList() != null){
040            TFromTable lcFromTable = null;
041            TJoin lcJoin = null;
042
043            for(int i=0; i<abortSqlNode.getFromTableList().size();i++){
044                lcFromTable = abortSqlNode.getFromTableList().getFromTable(i);
045                TTable lcTable = null;
046
047                if (lcFromTable.getFromtableType() != ETableSource.join){
048                    lcJoin = new TJoin();
049                    lcTable = analyzeFromTable(lcFromTable,true);
050                    lcTable.setEffectType(ETableEffectType.tetSelect);
051                    lcJoin.setTable(lcTable);
052                    lcJoin.setStartToken(lcJoin.getTable().getStartToken());
053                    lcJoin.setEndToken(lcJoin.getTable().getEndToken());
054                    lcJoin.setGsqlparser(getGsqlparser());
055                }else{
056                    lcJoin = analyzeJoin(lcFromTable.getJoinExpr(),null,true);
057                    lcJoin.doParse(this, ESqlClause.join);
058                }
059
060                joins.addJoin(lcJoin);
061            }
062        }
063
064        return 0;
065    }
066}