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]

Reply via email to