001package gudusoft.gsqlparser.nodes;
002/*
003 * Date: 13-8-9
004 */
005
006import gudusoft.gsqlparser.TSourceToken;
007
008/**
009 * AST node for ANALYZE statement.
010 *
011 * Supports various syntaxes across dialects:
012 * - Hive: ANALYZE TABLE table_name COMPUTE STATISTICS [NOSCAN] [FOR COLUMNS]
013 * - StarRocks: ANALYZE [FULL|SAMPLE] TABLE|DATABASE name [(columns)] [WITH SYNC|ASYNC MODE]
014 *              ANALYZE TABLE table UPDATE|DROP HISTOGRAM ON (columns)
015 */
016public class TAnalyzeSqlNode extends TParseTreeNode {
017    private TFromTable fromTable;
018    private boolean noScan;
019    private boolean partitionScan;
020    private TObjectNameList columns;
021
022    // StarRocks-specific fields
023    private boolean fullCollection = false;
024    private boolean sampleCollection = false;
025    private boolean analyzeDatabase = false;
026    private TObjectName databaseName;
027    private TSourceToken sampleValue;
028    private boolean sampleRows = false;
029    private boolean samplePercent = false;
030    private boolean syncMode = false;
031    private boolean asyncMode = false;
032    private boolean updateHistogram = false;
033    private boolean dropHistogram = false;
034    private TObjectNameList histogramColumns;
035    private TSourceToken bucketCount;
036
037    public TObjectNameList getColumns() {
038        return columns;
039    }
040
041    public TFromTable getFromTable() {
042        return fromTable;
043    }
044
045    public boolean isNoScan() {
046        return noScan;
047    }
048
049    public boolean isPartitionScan() {
050        return partitionScan;
051    }
052
053    // StarRocks-specific getters and setters
054    public boolean isFullCollection() {
055        return fullCollection;
056    }
057
058    public void setFullCollection(boolean fullCollection) {
059        this.fullCollection = fullCollection;
060    }
061
062    public boolean isSampleCollection() {
063        return sampleCollection;
064    }
065
066    public void setSampleCollection(boolean sampleCollection) {
067        this.sampleCollection = sampleCollection;
068    }
069
070    public boolean isAnalyzeDatabase() {
071        return analyzeDatabase;
072    }
073
074    public void setAnalyzeDatabase(boolean analyzeDatabase) {
075        this.analyzeDatabase = analyzeDatabase;
076    }
077
078    public TObjectName getDatabaseName() {
079        return databaseName;
080    }
081
082    public void setDatabaseName(TObjectName databaseName) {
083        this.databaseName = databaseName;
084    }
085
086    public TSourceToken getSampleValue() {
087        return sampleValue;
088    }
089
090    public void setSampleValue(TSourceToken sampleValue) {
091        this.sampleValue = sampleValue;
092    }
093
094    public boolean isSampleRows() {
095        return sampleRows;
096    }
097
098    public void setSampleRows(boolean sampleRows) {
099        this.sampleRows = sampleRows;
100    }
101
102    public boolean isSamplePercent() {
103        return samplePercent;
104    }
105
106    public void setSamplePercent(boolean samplePercent) {
107        this.samplePercent = samplePercent;
108    }
109
110    public boolean isSyncMode() {
111        return syncMode;
112    }
113
114    public void setSyncMode(boolean syncMode) {
115        this.syncMode = syncMode;
116    }
117
118    public boolean isAsyncMode() {
119        return asyncMode;
120    }
121
122    public void setAsyncMode(boolean asyncMode) {
123        this.asyncMode = asyncMode;
124    }
125
126    public boolean isUpdateHistogram() {
127        return updateHistogram;
128    }
129
130    public void setUpdateHistogram(boolean updateHistogram) {
131        this.updateHistogram = updateHistogram;
132    }
133
134    public boolean isDropHistogram() {
135        return dropHistogram;
136    }
137
138    public void setDropHistogram(boolean dropHistogram) {
139        this.dropHistogram = dropHistogram;
140    }
141
142    public TObjectNameList getHistogramColumns() {
143        return histogramColumns;
144    }
145
146    public void setHistogramColumns(TObjectNameList histogramColumns) {
147        this.histogramColumns = histogramColumns;
148    }
149
150    public TSourceToken getBucketCount() {
151        return bucketCount;
152    }
153
154    public void setBucketCount(TSourceToken bucketCount) {
155        this.bucketCount = bucketCount;
156    }
157
158    public void setColumns(TObjectNameList columns) {
159        this.columns = columns;
160    }
161
162    public void init(Object arg1){
163        fromTable = (TFromTable)arg1;
164    }
165
166    public void init(Object arg1,Object arg2){
167        fromTable = (TFromTable)arg1;
168        columns = (TObjectNameList)arg2;
169    }
170
171    public void init(Object arg1,Object arg2,Object arg3,Object arg4){
172        init(arg1);
173        noScan = (arg2 != null);
174        partitionScan = (arg3 != null);
175        columns = (TObjectNameList)arg4;
176    }
177
178}