This is an automated email from the ASF dual-hosted git repository.
lijibing pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push:
new 3dff09ba6d2 Add wait row count reported logic for sample analyze.
(#32032)
3dff09ba6d2 is described below
commit 3dff09ba6d2bf31769c6ae2e638400df573458ce
Author: Jibing-Li <[email protected]>
AuthorDate: Wed Mar 13 10:57:59 2024 +0800
Add wait row count reported logic for sample analyze. (#32032)
---
.../apache/doris/statistics/OlapAnalysisTask.java | 2 +-
.../doris/statistics/util/StatisticsUtil.java | 35 ++++++++++++++++++++++
2 files changed, 36 insertions(+), 1 deletion(-)
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 051fe53f5b3..0a99f6b32de 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
@@ -65,7 +65,7 @@ public class OlapAnalysisTask extends BaseAnalysisTask {
public void doExecute() throws Exception {
Set<String> partitionNames = info.colToPartitions.get(info.colName);
- if ((info.emptyJob &&
info.analysisMethod.equals(AnalysisInfo.AnalysisMethod.SAMPLE))
+ if (StatisticsUtil.isEmptyTable(tbl, info.analysisMethod)
|| partitionNames == null || partitionNames.isEmpty()) {
if (partitionNames == null) {
LOG.warn("Table {}.{}.{}, partitionNames for column {} is
null. ColToPartitions:[{}]",
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/statistics/util/StatisticsUtil.java
b/fe/fe-core/src/main/java/org/apache/doris/statistics/util/StatisticsUtil.java
index 55be0fed915..495f4ffb76b 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/statistics/util/StatisticsUtil.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/statistics/util/StatisticsUtil.java
@@ -68,6 +68,7 @@ import org.apache.doris.qe.QueryState;
import org.apache.doris.qe.SessionVariable;
import org.apache.doris.qe.StmtExecutor;
import org.apache.doris.qe.VariableMgr;
+import org.apache.doris.statistics.AnalysisInfo;
import org.apache.doris.statistics.ColumnStatistic;
import org.apache.doris.statistics.ColumnStatisticBuilder;
import org.apache.doris.statistics.Histogram;
@@ -966,4 +967,38 @@ public class StatisticsUtil {
||
columnName.startsWith(CreateMaterializedViewStmt.MATERIALIZED_VIEW_AGGREGATE_NAME_PREFIX);
}
+ public static boolean isEmptyTable(TableIf table,
AnalysisInfo.AnalysisMethod method) {
+ int waitRowCountReportedTime = 90;
+ if (!(table instanceof OlapTable) ||
method.equals(AnalysisInfo.AnalysisMethod.FULL)) {
+ return false;
+ }
+ OlapTable olapTable = (OlapTable) table;
+ for (int i = 0; i < waitRowCountReportedTime; i++) {
+ if (olapTable.getRowCount() > 0) {
+ return false;
+ }
+ boolean allInitVersion = true;
+ // If all partitions' visible version are PARTITION_INIT_VERSION,
return true.
+ // If any partition's visible version is greater than 2, return
true.
+ // Otherwise, wait row count to be reported.
+ for (Partition p : olapTable.getPartitions()) {
+ if (p.getVisibleVersion() != Partition.PARTITION_INIT_VERSION)
{
+ allInitVersion = false;
+ }
+ if (p.getVisibleVersion() > Partition.PARTITION_INIT_VERSION +
1) {
+ return true;
+ }
+ }
+ if (allInitVersion) {
+ return true;
+ }
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ LOG.info("Sleep interrupted.", e);
+ }
+ }
+ return true;
+ }
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]