This is an automated email from the ASF dual-hosted git repository.
lijibing pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-3.0 by this push:
new 809a404ae6d branch-3.0: [fix](statistics)Fix sample all tablets scale
factor incorrect bug. #46306 (#46328)
809a404ae6d is described below
commit 809a404ae6dafeacfa6a92f9a00e6bcc3b70ec16
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Fri Jan 3 12:23:11 2025 +0800
branch-3.0: [fix](statistics)Fix sample all tablets scale factor incorrect
bug. #46306 (#46328)
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 f126a9d8dc6..e5de51b4c2d 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
@@ -95,8 +95,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 fe673ddd1ba..2dc5b774842 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
@@ -308,7 +308,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);
@@ -339,8 +339,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 565005dde76..ce47143dbb1 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
@@ -215,7 +215,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]