This is an automated email from the ASF dual-hosted git repository. morrysnow pushed a commit to branch branch-2.0 in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push: new 86b2cf810e6 [chore](Nereids) explode function stats configurable (#31807) 86b2cf810e6 is described below commit 86b2cf810e6b872dd263fe568896d02baa214af7 Author: xzj7019 <131111794+xzj7...@users.noreply.github.com> AuthorDate: Wed Mar 6 21:18:12 2024 +0800 [chore](Nereids) explode function stats configurable (#31807) master pr: #31332 --- .../doris/nereids/stats/StatsCalculator.java | 3 +- .../java/org/apache/doris/qe/SessionVariable.java | 34 ++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java index ce35b301589..03f15e5441b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/stats/StatsCalculator.java @@ -940,7 +940,8 @@ public class StatsCalculator extends DefaultPlanVisitor<Statistics, Void> { private Statistics computeGenerate(Generate generate) { Statistics stats = groupExpression.childStatistics(0); - double count = stats.getRowCount() * generate.getGeneratorOutput().size() * 5; + int statsFactor = ConnectContext.get().getSessionVariable().generateStatsFactor; + double count = stats.getRowCount() * generate.getGeneratorOutput().size() * statsFactor; Map<Expression, ColumnStatistic> columnStatsMap = Maps.newHashMap(); for (Map.Entry<Expression, ColumnStatistic> entry : stats.columnStatistics().entrySet()) { ColumnStatistic columnStatistic = new ColumnStatisticBuilder(entry.getValue()).setCount(count).build(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java index 12083f17c13..55066fab565 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java @@ -431,6 +431,8 @@ public class SessionVariable implements Serializable, Writable { public static final String HUGE_TABLE_DEFAULT_SAMPLE_ROWS = "huge_table_default_sample_rows"; public static final String HUGE_TABLE_LOWER_BOUND_SIZE_IN_BYTES = "huge_table_lower_bound_size_in_bytes"; + public static final String GENERATE_STATS_FACTOR = "generate_stats_factor"; + public static final String HUGE_TABLE_AUTO_ANALYZE_INTERVAL_IN_MILLIS = "huge_table_auto_analyze_interval_in_millis"; @@ -648,6 +650,13 @@ public class SessionVariable implements Serializable, Writable { @VariableMgr.VarAttr(name = ENABLE_BUCKET_SHUFFLE_DOWNGRADE, needForward = true) public boolean enableBucketShuffleDownGrade = false; + /** + * explode function row count enlarge factor. + */ + @VariableMgr.VarAttr(name = GENERATE_STATS_FACTOR, checker = "checkGenerateStatsFactor", + setter = "setGenerateStatsFactor") + public int generateStatsFactor = 5; + @VariableMgr.VarAttr(name = PREFER_JOIN_METHOD) public String preferJoinMethod = "broadcast"; @@ -2362,6 +2371,31 @@ public class SessionVariable implements Serializable, Writable { } } + public void checkGenerateStatsFactor(String generateStatsFactor) { + int value = Integer.valueOf(generateStatsFactor); + if (value <= 0) { + UnsupportedOperationException exception = + new UnsupportedOperationException("Generate stats factor " + value + " should greater than 0"); + LOG.warn("Check generate stats factor failed", exception); + throw exception; + } + } + + public void setGenerateStatsFactor(int factor) { + this.generateStatsFactor = factor; + if (factor <= 0) { + LOG.warn("Invalid generate stats factor: {}", factor, new RuntimeException("")); + } + } + + public void setGenerateStatsFactor(String factor) { + this.generateStatsFactor = Integer.valueOf(factor); + if (generateStatsFactor <= 0) { + LOG.warn("Invalid generate stats factor: {}", generateStatsFactor, new RuntimeException("")); + } + } + + public boolean isEnableFileCache() { return enableFileCache; } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org