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 105b08f37d1f0a..1cf808e32f744b 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 Lag withChildren(List children) { } @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 1666e9cab1bfb6..a3a21ce20cab45 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 R accept(ExpressionVisitor visitor, C context) { } @Override - public void checkLegalityBeforeTypeCoercion() { + public void checkLegalityAfterRewrite() { if (children().size() == 1) { return; } @@ -107,7 +107,7 @@ public void checkLegalityBeforeTypeCoercion() { } } 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 00000000000000..b8d7b980fa8de1 --- /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 5dde98a95a0f5c..9d9618fdcaf4a4 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