This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new d26bfe030a8 [nereids] explode function stats configurable (#31332)
d26bfe030a8 is described below
commit d26bfe030a810219d616841f8048a0333097f97b
Author: xzj7019 <[email protected]>
AuthorDate: Thu Feb 29 23:52:19 2024 +0800
[nereids] explode function stats configurable (#31332)
---------
Co-authored-by: zhongjian.xzj
<[email protected]>
---
.../doris/nereids/stats/StatsCalculator.java | 3 +-
.../java/org/apache/doris/qe/SessionVariable.java | 33 ++++++++++++++++++++++
2 files changed, 35 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 ad16d3e8f50..08d4a3e781c 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
@@ -957,7 +957,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 ff9916ad717..5f7e8ebc32e 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
@@ -479,6 +479,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";
@@ -740,6 +742,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";
@@ -3331,6 +3340,30 @@ 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 getEnableDescribeExtendVariantColumn() {
return enableDescribeExtendVariantColumn;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]