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 <lijib...@selectdb.com> --- .../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: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org