001package gudusoft.gsqlparser.stmt.hive; 002/* 003 * Date: 13-7-29 004 */ 005 006import gudusoft.gsqlparser.*; 007import gudusoft.gsqlparser.nodes.*; 008import gudusoft.gsqlparser.nodes.hive.THiveFromQuerySqlNode; 009import gudusoft.gsqlparser.stmt.TInsertSqlStatement; 010import gudusoft.gsqlparser.stmt.TSelectSqlStatement; 011 012public class THiveFromQuery extends TSelectSqlStatement { 013 014 private TStatementList hiveBodyList = null; 015 016 public TStatementList getHiveBodyList() { 017 if (hiveBodyList == null) 018 hiveBodyList = new TStatementList(); 019 return hiveBodyList; 020 } 021 022 public THiveFromQuery(EDbVendor dbvendor) { 023 super(dbvendor); 024 sqlstatementtype = ESqlStatementType.ssthiveFromQuery; 025 } 026 027 public int doParseStatement(TCustomSqlStatement psql) { 028 if (rootNode == null) return -1; 029 super.doParseStatement(psql); 030 TSelectSqlNode node = (TSelectSqlNode)rootNode; 031 032 if (node.getCteList() != null){ 033 this.setCteList(node.getCteList()); 034 this.getCteList().doParse(this,ESqlClause.cte); 035 } 036 037// TFromTable lcFromTable = null; 038// TJoin lcJoin = null; 039// 040// for(int i=0; i<node.getFromTableList().size();i++){ 041// lcFromTable = node.getFromTableList().getFromTable(i); 042// if (lcFromTable.getFromtableType() != ETableSource.join){ 043// lcJoin = new TJoin(); 044// lcJoin.setTable(analyzeFromTable(lcFromTable,true)); 045// lcJoin.setStartToken(lcJoin.getTable().getStartToken()); 046// lcJoin.setEndToken(lcJoin.getTable().getEndToken()); 047// lcJoin.setGsqlparser(getGsqlparser()); 048// }else{ 049// lcJoin = analyzeJoin(lcFromTable.getJoinExpr(),null,true); 050// lcJoin.doParse(this, ESqlClause.join); 051// } 052// joins.addJoin(lcJoin); 053// } 054 055 if (node.getHiveBodyList() != null){ 056 for(int i = 0; i<node.getHiveBodyList().size();i++){ 057 TParseTreeNode node1 = node.getHiveBodyList().get(i); 058 switch (node1.getNodeType()){ 059 case TStatementSqlNode.select: 060 TSelectSqlStatement select = new TSelectSqlStatement(EDbVendor.dbvhive); 061 select.rootNode = node1; 062 select.doParseStatement(this); 063 this.getHiveBodyList().add(select); 064 065 break; 066 case TStatementSqlNode.insert: 067 068 TInsertSqlStatement insert = new TInsertSqlStatement(EDbVendor.dbvhive); 069 insert.rootNode = node1; 070 insert.doParseStatement(this); 071 this.getHiveBodyList().add(insert); 072 break; 073 default: 074 break; 075 } 076 } 077 } 078 079 return 0; 080 } 081 082 public void accept(TParseTreeVisitor v){ 083 v.preVisit(this); 084 v.postVisit(this); 085 } 086 087 public void acceptChildren(TParseTreeVisitor v){ 088 v.preVisit(this); 089 if (hiveBodyList != null) hiveBodyList.accept(v); 090 v.postVisit(this); 091 } 092 093 public void setHiveBodyList(TStatementList hiveBodyList) { 094 this.hiveBodyList = hiveBodyList; 095 } 096}