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

Reply via email to