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