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}