001package gudusoft.gsqlparser.stmt; 002/* 003 * Date: 13-7-29 004 */ 005 006import gudusoft.gsqlparser.EDbVendor; 007import gudusoft.gsqlparser.ESqlStatementType; 008import gudusoft.gsqlparser.TCustomSqlStatement; 009import gudusoft.gsqlparser.nodes.TObjectNameList; 010import gudusoft.gsqlparser.nodes.TParseTreeVisitor; 011import gudusoft.gsqlparser.nodes.TTable; 012import gudusoft.gsqlparser.nodes.TAnalyzeSqlNode; 013 014public class TAnalyzeStmt extends TCustomSqlStatement { 015 016 private TTable table; 017 private boolean noScan; 018 private boolean partitionScan; 019 private TObjectNameList columns; 020 021 public TAnalyzeStmt(EDbVendor dbvendor) { 022 super(dbvendor); 023 sqlstatementtype = ESqlStatementType.sstanalyzeTable; 024 } 025 026 public TObjectNameList getColumns() { 027 return columns; 028 } 029 030 public boolean isNoScan() { 031 return noScan; 032 } 033 034 public boolean isPartitionScan() { 035 return partitionScan; 036 } 037 038 public TTable getTable() { 039 return table; 040 } 041 042 public int doParseStatement(TCustomSqlStatement psql) { 043 if (rootNode == null) return -1; 044 super.doParseStatement(psql); 045 TAnalyzeSqlNode node = (TAnalyzeSqlNode)rootNode; 046 if (node.getFromTable() != null){ 047 table = this.analyzeFromTable(node.getFromTable(),true); 048 } 049 050 this.noScan = node.isNoScan(); 051 this.partitionScan = node.isPartitionScan(); 052 this.columns = node.getColumns(); 053 return 0; 054 } 055 056 public void accept(TParseTreeVisitor v){ 057 v.preVisit(this); 058 v.postVisit(this); 059 } 060 061 public void acceptChildren(TParseTreeVisitor v){ 062 v.preVisit(this); 063 v.postVisit(this); 064 } 065 066 public void setTable(TTable table) { 067 this.table = table; 068 } 069 070 public void setNoScan(boolean noScan) { 071 this.noScan = noScan; 072 } 073 074 public void setPartitionScan(boolean partitionScan) { 075 this.partitionScan = partitionScan; 076 } 077 078 public void setColumns(TObjectNameList columns) { 079 this.columns = columns; 080 } 081}