This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-4.0 by this push:
new 8fa5b988793 branch-4.0: [fix](window) allow constant expression
evaluation in LAG/LEAD offset parameter #58200 (#58261)
8fa5b988793 is described below
commit 8fa5b988793b974d448afdc0ba7794f0bfb57731
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Tue Nov 25 09:51:02 2025 +0800
branch-4.0: [fix](window) allow constant expression evaluation in LAG/LEAD
offset parameter #58200 (#58261)
Cherry-picked from #58200
Co-authored-by: zhangstar333 <[email protected]>
---
.../trees/expressions/functions/window/Lag.java | 2 +-
.../trees/expressions/functions/window/Lead.java | 4 +--
.../data/nereids_syntax_p0/lag_lead_signature.out | 25 +++++++++++++++++
.../nereids_syntax_p0/lag_lead_signature.groovy | 31 ++++++++++++++++++++--
4 files changed, 57 insertions(+), 5 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/window/Lag.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/window/Lag.java
index 105b08f37d1..1cf808e32f7 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/window/Lag.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/window/Lag.java
@@ -93,7 +93,7 @@ public class Lag extends WindowFunction implements
TernaryExpression, Explicitly
}
@Override
- public void checkLegalityBeforeTypeCoercion() {
+ public void checkLegalityAfterRewrite() {
if (children().size() == 1) {
return;
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/window/Lead.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/window/Lead.java
index 1666e9cab1b..a3a21ce20ca 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/window/Lead.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/window/Lead.java
@@ -94,7 +94,7 @@ public class Lead extends WindowFunction implements
TernaryExpression, Explicitl
}
@Override
- public void checkLegalityBeforeTypeCoercion() {
+ public void checkLegalityAfterRewrite() {
if (children().size() == 1) {
return;
}
@@ -107,7 +107,7 @@ public class Lead extends WindowFunction implements
TernaryExpression, Explicitl
}
} else {
throw new AnalysisException(
- "The offset parameter of LAG must be a constant positive
integer: " + this.toSql());
+ "The offset parameter of LEAD must be a constant positive
integer: " + this.toSql());
}
}
}
diff --git a/regression-test/data/nereids_syntax_p0/lag_lead_signature.out
b/regression-test/data/nereids_syntax_p0/lag_lead_signature.out
new file mode 100644
index 00000000000..b8d7b980fa8
--- /dev/null
+++ b/regression-test/data/nereids_syntax_p0/lag_lead_signature.out
@@ -0,0 +1,25 @@
+-- This file is automatically generated. You should know what you did if you
want to edit this
+-- !sql1 --
+0
+0
+
+-- !sql2 --
+0
+44
+
+-- !sql3 --
+0
+0
+
+-- !sql4 --
+0
+0
+
+-- !sql5 --
+0
+28
+
+-- !sql6 --
+0
+0
+
diff --git a/regression-test/suites/nereids_syntax_p0/lag_lead_signature.groovy
b/regression-test/suites/nereids_syntax_p0/lag_lead_signature.groovy
index 5dde98a95a0..9d9618fdcaf 100644
--- a/regression-test/suites/nereids_syntax_p0/lag_lead_signature.groovy
+++ b/regression-test/suites/nereids_syntax_p0/lag_lead_signature.groovy
@@ -20,7 +20,8 @@ suite("lag_lead_signature") {
sql "SET enable_fallback_to_original_planner=false"
sql """drop table if exists lag_lead_signature_t"""
sql """ CREATE TABLE lag_lead_signature_t (
- `k` VARCHAR(200) NULL
+ `k` VARCHAR(200) NULL,
+ `id` BIGINT NULL
) ENGINE=OLAP
DUPLICATE KEY(`k`)
DISTRIBUTED BY HASH(`k`) BUCKETS 3
@@ -28,8 +29,34 @@ suite("lag_lead_signature") {
"replication_allocation" = "tag.location.default: 1"
);"""
- sql "insert into lag_lead_signature_t values ('44'), ('28');"
+ sql "insert into lag_lead_signature_t values ('44','10'), ('28','11');"
sql "select lag(k, 1, 0) over(), lead(k, 1, 0) over() from
lag_lead_signature_t;"
+ qt_sql1 "select lag(k, 1 + 1, 0) over(order by id) from
lag_lead_signature_t order by 1;"
+ qt_sql2 "select lag(k, abs(1), 0) over(order by id) from
lag_lead_signature_t order by 1;"
+ qt_sql3 "select lag(k, abs(1) + 1, 0) over(order by id) from
lag_lead_signature_t order by 1;"
+ qt_sql4 "select lead(k, 1 + 1, 0) over(order by id) from
lag_lead_signature_t order by 1;"
+ qt_sql5 "select lead(k, abs(1), 0) over(order by id) from
lag_lead_signature_t order by 1;"
+ qt_sql6 "select lead(k, abs(1) + 1, 0) over(order by id) from
lag_lead_signature_t order by 1;"
+
+ test {
+ sql "select lag(k, -100, 0) over() from lag_lead_signature_t;"
+ exception "be a constant positive integer"
+ }
+
+ test {
+ sql "select lead(k, -100, 0) over() from lag_lead_signature_t;"
+ exception "be a constant positive integer"
+ }
+
+ test {
+ sql "select lead(k, id, 0) over() from lag_lead_signature_t;"
+ exception "must be a constant value"
+ }
+
+ test {
+ sql "select lag(k, id, 0) over() from lag_lead_signature_t;"
+ exception "must be a constant value"
+ }
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]