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}