This is an automated email from the ASF dual-hosted git repository.
lijibing pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new 05292563caf branch-2.1: [fix](statistics)Fix sample all tablets scale
factor incorrect bug. #46306 (#46329)
05292563caf is described below
commit 05292563caf44d8c18272a1f1c6ccabdbb0ed60d
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Fri Jan 3 16:28:59 2025 +0800
branch-2.1: [fix](statistics)Fix sample all tablets scale factor incorrect
bug. #46306 (#46329)
Cherry-picked from #46306
Co-authored-by: James <[email protected]>
---
.../src/main/java/org/apache/doris/statistics/BaseAnalysisTask.java | 4 ++--
.../src/main/java/org/apache/doris/statistics/OlapAnalysisTask.java | 4 +++-
.../test/java/org/apache/doris/statistics/OlapAnalysisTaskTest.java | 2 +-
3 files changed, 6 insertions(+), 4 deletions(-)
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 e61e3fdea3b..a11ada11b53 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
@@ -79,8 +79,8 @@ public abstract class BaseAnalysisTask {
+ "SUBSTRING(CAST(${min} AS STRING), 1, 1024) AS `min`, "
+ "SUBSTRING(CAST(${max} AS STRING), 1, 1024) AS `max`, "
+ "${dataSizeFunction} * ${scaleFactor} AS `data_size`, "
- + "NOW() "
- + "FROM `${catalogName}`.`${dbName}`.`${tblName}` ${index}
${sampleHints} ${limit}";
+ + "NOW() FROM ( "
+ + "SELECT * FROM `${catalogName}`.`${dbName}`.`${tblName}`
${index} ${sampleHints} ${limit}) as t";
protected static final String DUJ1_ANALYZE_TEMPLATE = "SELECT "
+ "CONCAT('${tblId}', '-', '${idxId}', '-', '${colId}') AS `id`, "
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 6d9401767be..50e1ba9cbbb 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
@@ -274,7 +274,7 @@ public class OlapAnalysisTask extends BaseAnalysisTask {
// Skip partitions with row count < row count / 2 expected to be
sampled per partition.
// It can be expected to sample a smaller number of partitions to
avoid uneven distribution
// of sampling results.
- if (materializedIndex.getRowCount() < (avgRowsPerPartition / 2)) {
+ if (materializedIndex.getRowCount() < (avgRowsPerPartition / 2) &&
!forPartitionColumn) {
continue;
}
long avgRowsPerTablet = Math.max(materializedIndex.getRowCount() /
ids.size(), 1);
@@ -305,8 +305,10 @@ public class OlapAnalysisTask extends BaseAnalysisTask {
if (totalRows < sampleRows) {
// can't fill full sample rows
sampleTabletIds.clear();
+ actualSampledRowCount = 0;
} else if (sampleTabletIds.size() == totalTablet && !enough) {
sampleTabletIds.clear();
+ actualSampledRowCount = 0;
}
return Pair.of(sampleTabletIds, actualSampledRowCount);
}
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/statistics/OlapAnalysisTaskTest.java
b/fe/fe-core/src/test/java/org/apache/doris/statistics/OlapAnalysisTaskTest.java
index a7283e351de..0bb44b36da2 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/statistics/OlapAnalysisTaskTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/statistics/OlapAnalysisTaskTest.java
@@ -239,7 +239,7 @@ public class OlapAnalysisTaskTest {
+ "AS `null_count`, SUBSTRING(CAST('1' AS STRING), 1,
1024) AS `min`, "
+ "SUBSTRING(CAST('2' AS STRING), 1, 1024) AS `max`, "
+ "SUM(LENGTH(`null`)) * 5.0 AS `data_size`, NOW() "
- + "FROM `catalogName`.`${dbName}`.`null` limit 100",
sql);
+ + "FROM ( SELECT * FROM
`catalogName`.`${dbName}`.`null` limit 100) as t", sql);
return;
}
};
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]