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}