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 whereClause.doParse(this, ESqlClause.unknown); 036 037 if (abortSqlNode.getFromTableList() != null){ 038 TFromTable lcFromTable = null; 039 TJoin lcJoin = null; 040 041 for(int i=0; i<abortSqlNode.getFromTableList().size();i++){ 042 lcFromTable = abortSqlNode.getFromTableList().getFromTable(i); 043 TTable lcTable = null; 044 045 if (lcFromTable.getFromtableType() != ETableSource.join){ 046 lcJoin = new TJoin(); 047 lcTable = analyzeFromTable(lcFromTable,true); 048 lcTable.setEffectType(ETableEffectType.tetSelect); 049 lcJoin.setTable(lcTable); 050 lcJoin.setStartToken(lcJoin.getTable().getStartToken()); 051 lcJoin.setEndToken(lcJoin.getTable().getEndToken()); 052 lcJoin.setGsqlparser(getGsqlparser()); 053 }else{ 054 lcJoin = analyzeJoin(lcFromTable.getJoinExpr(),null,true); 055 lcJoin.doParse(this, ESqlClause.join); 056 } 057 058 joins.addJoin(lcJoin); 059 } 060 } 061 062 return 0; 063 } 064}