This is an automated email from the ASF dual-hosted git repository.
morrysnow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new db44970685 [feature](stats) Support sync analyze (#18567)
db44970685 is described below
commit db44970685d391fe92e3929de2b26a4a9ccfe15a
Author: AKIRA <[email protected]>
AuthorDate: Wed Apr 12 18:49:30 2023 +0900
[feature](stats) Support sync analyze (#18567)
Gammer:
```
ANALYZE [SYNC] TABLE ....
```
Add this feature so that we could test and tune stats framework
conveniently.
---
fe/fe-core/src/main/cup/sql_parser.cup | 28 ++++++++----
.../org/apache/doris/analysis/AnalyzeStmt.java | 8 ++++
.../java/org/apache/doris/catalog/OlapTable.java | 9 ++--
.../main/java/org/apache/doris/catalog/Table.java | 3 +-
.../java/org/apache/doris/catalog/TableIf.java | 3 +-
.../doris/catalog/external/ExternalTable.java | 3 +-
.../doris/catalog/external/HMSExternalTable.java | 7 ++-
.../apache/doris/statistics/AnalysisManager.java | 24 ++++++++++
.../doris/statistics/AnalysisTaskScheduler.java | 2 +-
.../apache/doris/statistics/BaseAnalysisTask.java | 5 +--
.../apache/doris/statistics/HMSAnalysisTask.java | 4 +-
.../org/apache/doris/statistics/HistogramTask.java | 4 +-
.../apache/doris/statistics/HiveAnalysisTask.java | 4 +-
.../doris/statistics/IcebergAnalysisTask.java | 4 +-
.../apache/doris/statistics/MVAnalysisTask.java | 4 +-
.../apache/doris/statistics/OlapAnalysisTask.java | 4 +-
.../apache/doris/statistics/AnalysisJobTest.java | 2 +-
.../doris/statistics/AnalysisTaskExecutorTest.java | 4 +-
.../apache/doris/statistics/HistogramTaskTest.java | 2 +-
regression-test/data/statistics/analyze_test.out | 9 ++++
.../suites/statistics/analyze_test.groovy | 51 ++++++++++++++++++++++
21 files changed, 140 insertions(+), 44 deletions(-)
diff --git a/fe/fe-core/src/main/cup/sql_parser.cup
b/fe/fe-core/src/main/cup/sql_parser.cup
index fcb6f53e49..2bfd114b02 100644
--- a/fe/fe-core/src/main/cup/sql_parser.cup
+++ b/fe/fe-core/src/main/cup/sql_parser.cup
@@ -918,6 +918,8 @@ nonterminal MVRefreshInfo.RefreshMethod opt_refresh_method;
nonterminal MVRefreshTriggerInfo opt_refresh_trigger;
nonterminal MVRefreshInfo opt_mv_refersh_info;
nonterminal PartitionDesc opt_mv_partition;
+nonterminal Boolean opt_sync;
+
precedence nonassoc COMMA;
precedence nonassoc STRING_LITERAL;
@@ -2809,30 +2811,30 @@ show_create_reporitory_stmt ::=
// analyze statment
analyze_stmt ::=
- KW_ANALYZE KW_TABLE table_name:tbl opt_col_list:cols
opt_partition_names:partitionNames opt_properties:properties
+ KW_ANALYZE opt_sync:sync KW_TABLE table_name:tbl opt_col_list:cols
opt_partition_names:partitionNames opt_properties:properties
{:
boolean is_whole_tbl = (cols == null);
boolean is_histogram = false;
boolean is_increment = false;
- RESULT = new AnalyzeStmt(tbl, cols, partitionNames, properties,
is_whole_tbl, is_histogram, is_increment);
+ RESULT = new AnalyzeStmt(tbl, sync, cols, partitionNames, properties,
is_whole_tbl, is_histogram, is_increment);
:}
- | KW_ANALYZE KW_INCREMENTAL KW_TABLE table_name:tbl opt_col_list:cols
opt_partition_names:partitionNames opt_properties:properties
+ | KW_ANALYZE opt_sync:sync KW_INCREMENTAL KW_TABLE table_name:tbl
opt_col_list:cols opt_partition_names:partitionNames opt_properties:properties
{:
boolean is_whole_tbl = (cols == null);
boolean is_histogram = false;
boolean is_increment = true;
- RESULT = new AnalyzeStmt(tbl, cols, partitionNames, properties,
is_whole_tbl, is_histogram, is_increment);
+ RESULT = new AnalyzeStmt(tbl, sync, cols, partitionNames, properties,
is_whole_tbl, is_histogram, is_increment);
:}
- | KW_ANALYZE KW_TABLE table_name:tbl KW_UPDATE KW_HISTOGRAM KW_ON
ident_list:cols opt_partition_names:partitionNames opt_properties:properties
+ | KW_ANALYZE opt_sync:sync KW_TABLE table_name:tbl KW_UPDATE KW_HISTOGRAM
KW_ON ident_list:cols opt_partition_names:partitionNames
opt_properties:properties
{:
boolean is_whole_tbl = false;
boolean is_histogram = true;
boolean is_increment = false;
- RESULT = new AnalyzeStmt(tbl, cols, partitionNames, properties,
is_whole_tbl, is_histogram, is_increment);
+ RESULT = new AnalyzeStmt(tbl, sync, cols, partitionNames, properties,
is_whole_tbl, is_histogram, is_increment);
:}
- | KW_ANALYZE KW_TABLE table_name:tbl KW_UPDATE KW_HISTOGRAM
+ | KW_ANALYZE opt_sync:sync KW_TABLE table_name:tbl KW_UPDATE KW_HISTOGRAM
{:
- RESULT = new AnalyzeStmt(tbl, null, null, new HashMap<>(), true, true,
false);
+ RESULT = new AnalyzeStmt(tbl, sync, null, null, new HashMap<>(), true,
true, false);
:}
;
@@ -6932,6 +6934,16 @@ type_func_name_keyword ::=
{: RESULT = id; :}
;
+opt_sync ::=
+ {:
+ RESULT = false;
+ :}
+ | KW_SYNC
+ {:
+ RESULT = true;
+ :}
+ ;
+
// Keyword that we allow for identifiers
keyword ::=
KW_AFTER:id
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AnalyzeStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AnalyzeStmt.java
index fe0b8bab2b..61a45682d6 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AnalyzeStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AnalyzeStmt.java
@@ -73,6 +73,8 @@ public class AnalyzeStmt extends DdlStmt {
public boolean isIncrement;
private final TableName tableName;
+
+ private final boolean sync;
private final PartitionNames partitionNames;
private final List<String> columnNames;
private final Map<String, String> properties;
@@ -82,6 +84,7 @@ public class AnalyzeStmt extends DdlStmt {
private TableIf table;
public AnalyzeStmt(TableName tableName,
+ boolean sync,
List<String> columnNames,
PartitionNames partitionNames,
Map<String, String> properties,
@@ -89,6 +92,7 @@ public class AnalyzeStmt extends DdlStmt {
Boolean isHistogram,
Boolean isIncrement) {
this.tableName = tableName;
+ this.sync = sync;
this.columnNames = columnNames;
this.partitionNames = partitionNames;
this.properties = properties;
@@ -275,4 +279,8 @@ public class AnalyzeStmt extends DdlStmt {
return sb.toString();
}
+
+ public boolean isSync() {
+ return sync;
+ }
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
index ce13953a5c..1aecafcc6b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
@@ -50,7 +50,6 @@ import org.apache.doris.qe.OriginStatement;
import org.apache.doris.resource.Tag;
import org.apache.doris.statistics.AnalysisTaskInfo;
import org.apache.doris.statistics.AnalysisTaskInfo.AnalysisType;
-import org.apache.doris.statistics.AnalysisTaskScheduler;
import org.apache.doris.statistics.BaseAnalysisTask;
import org.apache.doris.statistics.HistogramTask;
import org.apache.doris.statistics.MVAnalysisTask;
@@ -1034,14 +1033,14 @@ public class OlapTable extends Table {
}
@Override
- public BaseAnalysisTask createAnalysisTask(AnalysisTaskScheduler
scheduler, AnalysisTaskInfo info) {
+ public BaseAnalysisTask createAnalysisTask(AnalysisTaskInfo info) {
if (info.analysisType.equals(AnalysisType.HISTOGRAM)) {
- return new HistogramTask(scheduler, info);
+ return new HistogramTask(info);
}
if (info.analysisType.equals(AnalysisType.COLUMN)) {
- return new OlapAnalysisTask(scheduler, info);
+ return new OlapAnalysisTask(info);
}
- return new MVAnalysisTask(scheduler, info);
+ return new MVAnalysisTask(info);
}
@Override
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Table.java
b/fe/fe-core/src/main/java/org/apache/doris/catalog/Table.java
index 60547c659a..a0fa49950e 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Table.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Table.java
@@ -28,7 +28,6 @@ import org.apache.doris.common.util.SqlUtils;
import org.apache.doris.common.util.Util;
import org.apache.doris.external.hudi.HudiTable;
import org.apache.doris.statistics.AnalysisTaskInfo;
-import org.apache.doris.statistics.AnalysisTaskScheduler;
import org.apache.doris.statistics.BaseAnalysisTask;
import org.apache.doris.thrift.TTableDescriptor;
@@ -522,7 +521,7 @@ public abstract class Table extends MetaObject implements
Writable, TableIf {
}
@Override
- public BaseAnalysisTask createAnalysisTask(AnalysisTaskScheduler
scheduler, AnalysisTaskInfo info) {
+ public BaseAnalysisTask createAnalysisTask(AnalysisTaskInfo info) {
throw new NotImplementedException();
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/TableIf.java
b/fe/fe-core/src/main/java/org/apache/doris/catalog/TableIf.java
index b5ac899d51..25c2319d5b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/TableIf.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/TableIf.java
@@ -21,7 +21,6 @@ import org.apache.doris.alter.AlterCancelException;
import org.apache.doris.common.DdlException;
import org.apache.doris.common.MetaNotFoundException;
import org.apache.doris.statistics.AnalysisTaskInfo;
-import org.apache.doris.statistics.AnalysisTaskScheduler;
import org.apache.doris.statistics.BaseAnalysisTask;
import org.apache.doris.thrift.TTableDescriptor;
@@ -125,7 +124,7 @@ public interface TableIf {
TTableDescriptor toThrift();
- BaseAnalysisTask createAnalysisTask(AnalysisTaskScheduler scheduler,
AnalysisTaskInfo info);
+ BaseAnalysisTask createAnalysisTask(AnalysisTaskInfo info);
long estimatedRowCount();
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/catalog/external/ExternalTable.java
b/fe/fe-core/src/main/java/org/apache/doris/catalog/external/ExternalTable.java
index ef4d78d4c5..4a2576e846 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/catalog/external/ExternalTable.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/catalog/external/ExternalTable.java
@@ -30,7 +30,6 @@ import org.apache.doris.datasource.ExternalSchemaCache;
import org.apache.doris.persist.gson.GsonPostProcessable;
import org.apache.doris.persist.gson.GsonUtils;
import org.apache.doris.statistics.AnalysisTaskInfo;
-import org.apache.doris.statistics.AnalysisTaskScheduler;
import org.apache.doris.statistics.BaseAnalysisTask;
import org.apache.doris.thrift.TTableDescriptor;
@@ -301,7 +300,7 @@ public class ExternalTable implements TableIf, Writable,
GsonPostProcessable {
}
@Override
- public BaseAnalysisTask createAnalysisTask(AnalysisTaskScheduler
scheduler, AnalysisTaskInfo info) {
+ public BaseAnalysisTask createAnalysisTask(AnalysisTaskInfo info) {
throw new NotImplementedException();
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/catalog/external/HMSExternalTable.java
b/fe/fe-core/src/main/java/org/apache/doris/catalog/external/HMSExternalTable.java
index 7398d87867..d6c7b9760c 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/catalog/external/HMSExternalTable.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/catalog/external/HMSExternalTable.java
@@ -24,7 +24,6 @@ import org.apache.doris.common.MetaNotFoundException;
import org.apache.doris.datasource.HMSExternalCatalog;
import org.apache.doris.datasource.hive.PooledHiveMetaStoreClient;
import org.apache.doris.statistics.AnalysisTaskInfo;
-import org.apache.doris.statistics.AnalysisTaskScheduler;
import org.apache.doris.statistics.BaseAnalysisTask;
import org.apache.doris.statistics.HiveAnalysisTask;
import org.apache.doris.statistics.IcebergAnalysisTask;
@@ -252,13 +251,13 @@ public class HMSExternalTable extends ExternalTable {
}
@Override
- public BaseAnalysisTask createAnalysisTask(AnalysisTaskScheduler
scheduler, AnalysisTaskInfo info) {
+ public BaseAnalysisTask createAnalysisTask(AnalysisTaskInfo info) {
makeSureInitialized();
switch (dlaType) {
case HIVE:
- return new HiveAnalysisTask(scheduler, info);
+ return new HiveAnalysisTask(info);
case ICEBERG:
- return new IcebergAnalysisTask(scheduler, info);
+ return new IcebergAnalysisTask(info);
default:
throw new IllegalArgumentException("Analysis job for dlaType "
+ dlaType + " not supported.");
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java
b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java
index 848161bb31..8eba9eb8fb 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java
@@ -43,6 +43,8 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -156,6 +158,10 @@ public class AnalysisManager {
olapTable.readUnlock();
}
}
+ if (analyzeStmt.isSync()) {
+ syncExecute(analysisTaskInfos.values());
+ return;
+ }
analysisJobIdToTaskMap.put(jobId, analysisTaskInfos);
analysisTaskInfos.values().forEach(taskScheduler::schedule);
}
@@ -210,4 +216,22 @@ public class AnalysisManager {
return results;
}
+ private void syncExecute(Collection<AnalysisTaskInfo> taskInfos) {
+ List<String> colNames = new ArrayList<>();
+ for (AnalysisTaskInfo info : taskInfos) {
+ try {
+ TableIf table = StatisticsUtil.findTable(info.catalogName,
+ info.dbName, info.tblName);
+ BaseAnalysisTask analysisTask = table.createAnalysisTask(info);
+ analysisTask.execute();
+ } catch (Throwable t) {
+ colNames.add(info.colName);
+ LOG.info("Failed to analyze, info: {}", info);
+ }
+ }
+ if (!colNames.isEmpty()) {
+ throw new RuntimeException("Failed to analyze following columns: "
+ String.join(",", colNames));
+ }
+ }
+
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisTaskScheduler.java
b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisTaskScheduler.java
index 9ab062f541..ede3677161 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisTaskScheduler.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisTaskScheduler.java
@@ -48,7 +48,7 @@ public class AnalysisTaskScheduler {
try {
TableIf table =
StatisticsUtil.findTable(analysisTaskInfo.catalogName,
analysisTaskInfo.dbName, analysisTaskInfo.tblName);
- BaseAnalysisTask analysisTask = table.createAnalysisTask(this,
analysisTaskInfo);
+ BaseAnalysisTask analysisTask =
table.createAnalysisTask(analysisTaskInfo);
switch (analysisTaskInfo.jobType) {
case MANUAL:
addToManualJobQueue(analysisTask);
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/statistics/BaseAnalysisTask.java
b/fe/fe-core/src/main/java/org/apache/doris/statistics/BaseAnalysisTask.java
index ab518d66bd..001d1339a6 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/statistics/BaseAnalysisTask.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/BaseAnalysisTask.java
@@ -86,8 +86,6 @@ public abstract class BaseAnalysisTask {
+ " ${internalDB}.${columnStatTbl}.part_id IS NOT NULL"
+ " ) t1, \n";
- protected AnalysisTaskScheduler analysisTaskScheduler;
-
protected AnalysisTaskInfo info;
protected CatalogIf catalog;
@@ -109,8 +107,7 @@ public abstract class BaseAnalysisTask {
}
- public BaseAnalysisTask(AnalysisTaskScheduler analysisTaskScheduler,
AnalysisTaskInfo info) {
- this.analysisTaskScheduler = analysisTaskScheduler;
+ public BaseAnalysisTask(AnalysisTaskInfo info) {
this.info = info;
init(info);
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/statistics/HMSAnalysisTask.java
b/fe/fe-core/src/main/java/org/apache/doris/statistics/HMSAnalysisTask.java
index 9a6dc93564..cf0a34bcaf 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/statistics/HMSAnalysisTask.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/HMSAnalysisTask.java
@@ -26,8 +26,8 @@ public class HMSAnalysisTask extends BaseAnalysisTask {
protected HMSExternalTable table;
- public HMSAnalysisTask(AnalysisTaskScheduler analysisTaskScheduler,
AnalysisTaskInfo info) {
- super(analysisTaskScheduler, info);
+ public HMSAnalysisTask(AnalysisTaskInfo info) {
+ super(info);
table = (HMSExternalTable) tbl;
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/statistics/HistogramTask.java
b/fe/fe-core/src/main/java/org/apache/doris/statistics/HistogramTask.java
index f5fcd11ff9..0cb83169ee 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/statistics/HistogramTask.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/HistogramTask.java
@@ -59,8 +59,8 @@ public class HistogramTask extends BaseAnalysisTask {
super();
}
- public HistogramTask(AnalysisTaskScheduler analysisTaskScheduler,
AnalysisTaskInfo info) {
- super(analysisTaskScheduler, info);
+ public HistogramTask(AnalysisTaskInfo info) {
+ super(info);
}
@Override
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/statistics/HiveAnalysisTask.java
b/fe/fe-core/src/main/java/org/apache/doris/statistics/HiveAnalysisTask.java
index 308e46c036..3f96c1bccc 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/statistics/HiveAnalysisTask.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/HiveAnalysisTask.java
@@ -57,8 +57,8 @@ public class HiveAnalysisTask extends HMSAnalysisTask {
public static final String TIMESTAMP = "transient_lastDdlTime";
public static final String DELIMITER = "-";
- public HiveAnalysisTask(AnalysisTaskScheduler analysisTaskScheduler,
AnalysisTaskInfo info) {
- super(analysisTaskScheduler, info);
+ public HiveAnalysisTask(AnalysisTaskInfo info) {
+ super(info);
}
private static final String ANALYZE_PARTITION_SQL_TEMPLATE = "INSERT INTO "
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/statistics/IcebergAnalysisTask.java
b/fe/fe-core/src/main/java/org/apache/doris/statistics/IcebergAnalysisTask.java
index 8dec02ee32..7c41954dc0 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/statistics/IcebergAnalysisTask.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/statistics/IcebergAnalysisTask.java
@@ -45,8 +45,8 @@ public class IcebergAnalysisTask extends HMSAnalysisTask {
private long dataSize = 0;
private long numNulls = 0;
- public IcebergAnalysisTask(AnalysisTaskScheduler analysisTaskScheduler,
AnalysisTaskInfo info) {
- super(analysisTaskScheduler, info);
+ public IcebergAnalysisTask(AnalysisTaskInfo info) {
+ super(info);
}
private static final String INSERT_TABLE_SQL_TEMPLATE = "INSERT INTO "
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/statistics/MVAnalysisTask.java
b/fe/fe-core/src/main/java/org/apache/doris/statistics/MVAnalysisTask.java
index 1194919606..ce73dbea87 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/statistics/MVAnalysisTask.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/MVAnalysisTask.java
@@ -62,8 +62,8 @@ public class MVAnalysisTask extends BaseAnalysisTask {
private OlapTable olapTable;
- public MVAnalysisTask(AnalysisTaskScheduler analysisTaskScheduler,
AnalysisTaskInfo info) {
- super(analysisTaskScheduler, info);
+ public MVAnalysisTask(AnalysisTaskInfo info) {
+ super(info);
init();
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/statistics/OlapAnalysisTask.java
b/fe/fe-core/src/main/java/org/apache/doris/statistics/OlapAnalysisTask.java
index 74f1d3cbad..c3a01fb5b5 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/statistics/OlapAnalysisTask.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/OlapAnalysisTask.java
@@ -53,8 +53,8 @@ public class OlapAnalysisTask extends BaseAnalysisTask {
super();
}
- public OlapAnalysisTask(AnalysisTaskScheduler analysisTaskScheduler,
AnalysisTaskInfo info) {
- super(analysisTaskScheduler, info);
+ public OlapAnalysisTask(AnalysisTaskInfo info) {
+ super(info);
}
public void execute() throws Exception {
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisJobTest.java
b/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisJobTest.java
index 8efe587cad..dcfb475c24 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisJobTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisJobTest.java
@@ -113,7 +113,7 @@ public class AnalysisJobTest extends TestWithFeService {
AnalysisType.COLUMN)
.setPartitionNames(Sets.newHashSet("t1"))
.build();
- new OlapAnalysisTask(scheduler, analysisJobInfo).execute();
+ new OlapAnalysisTask(analysisJobInfo).execute();
}
}
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisTaskExecutorTest.java
b/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisTaskExecutorTest.java
index 0b947133e4..22e4d531a1 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisTaskExecutorTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisTaskExecutorTest.java
@@ -66,7 +66,7 @@ public class AnalysisTaskExecutorTest extends
TestWithFeService {
.setColName("col1").setJobType(JobType.MANUAL).setAnalysisMethod(AnalysisMethod.FULL).setAnalysisType(
AnalysisType.COLUMN)
.build();
- OlapAnalysisTask analysisJob = new
OlapAnalysisTask(analysisTaskScheduler, analysisJobInfo);
+ OlapAnalysisTask analysisJob = new OlapAnalysisTask(analysisJobInfo);
new MockUp<AnalysisTaskScheduler>() {
public synchronized BaseAnalysisTask getPendingTasks() {
@@ -98,7 +98,7 @@ public class AnalysisTaskExecutorTest extends
TestWithFeService {
AnalysisType.COLUMN)
.setPartitionNames(Sets.newHashSet("t1"))
.build();
- OlapAnalysisTask task = new OlapAnalysisTask(analysisTaskScheduler,
analysisTaskInfo);
+ OlapAnalysisTask task = new OlapAnalysisTask(analysisTaskInfo);
new MockUp<AnalysisTaskScheduler>() {
@Mock
public synchronized BaseAnalysisTask getPendingTasks() {
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/statistics/HistogramTaskTest.java
b/fe/fe-core/src/test/java/org/apache/doris/statistics/HistogramTaskTest.java
index 5026ef3353..3184634815 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/statistics/HistogramTaskTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/statistics/HistogramTaskTest.java
@@ -107,7 +107,7 @@ public class HistogramTaskTest extends TestWithFeService {
.setAnalysisType(AnalysisType.HISTOGRAM)
.setPartitionNames(Sets.newHashSet("t"))
.build();
- HistogramTask task = new HistogramTask(analysisTaskScheduler,
analysisTaskInfo);
+ HistogramTask task = new HistogramTask(analysisTaskInfo);
new MockUp<AnalysisTaskScheduler>() {
@Mock
diff --git a/regression-test/data/statistics/analyze_test.out
b/regression-test/data/statistics/analyze_test.out
new file mode 100644
index 0000000000..249e1e6abc
--- /dev/null
+++ b/regression-test/data/statistics/analyze_test.out
@@ -0,0 +1,9 @@
+-- This file is automatically generated. You should know what you did if you
want to edit this
+-- !sql --
+5 4 0 1 8 20
+5 4 0 1 8 20
+5 5 0 1 7 5
+5 5 0 1 7 5
+5 5 0 1 9 20
+5 5 0 1 9 20
+
diff --git a/regression-test/suites/statistics/analyze_test.groovy
b/regression-test/suites/statistics/analyze_test.groovy
new file mode 100644
index 0000000000..b4f194e673
--- /dev/null
+++ b/regression-test/suites/statistics/analyze_test.groovy
@@ -0,0 +1,51 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+suite("analyze_test") {
+ sql """
+ DROP TABLE IF EXISTS test_table_alter_column_stats
+ """
+ sql """CREATE TABLE test_table_alter_column_stats (col1 varchar(11451) not
null, col2 int not null, col3 int not null)
+ UNIQUE KEY(col1)
+ DISTRIBUTED BY HASH(col1)
+ BUCKETS 3
+ PROPERTIES(
+ "replication_num"="1",
+ "enable_unique_key_merge_on_write"="true"
+ );"""
+
+
+ sql """insert into test_table_alter_column_stats values(1, 2, 3);"""
+ sql """insert into test_table_alter_column_stats values(4, 5, 6);"""
+ sql """insert into test_table_alter_column_stats values(7, 1, 9);"""
+ sql """insert into test_table_alter_column_stats values(3, 8, 2);"""
+ sql """insert into test_table_alter_column_stats values(5, 2, 1);"""
+
+ sql """delete from __internal_schema.column_statistics where col_id in
('col1', 'col2', 'col3')"""
+
+ sql """
+ analyze sync table test_table_alter_column_stats;
+ """
+
+ order_qt_sql """
+ select count, ndv, null_count, min, max, data_size_in_bytes from
__internal_schema.column_statistics where
+ col_id in ('col1', 'col2', 'col3') order by col_id
+ """
+ sql """
+ DROP TABLE IF EXISTS test_table_alter_column_stats
+ """
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]