This is an automated email from the ASF dual-hosted git repository.
morrysnow pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-1.2-lts by this push:
new 171e48865f [fix](planner)only forbid literal value in AnalyticExpr's
order by list (#21820)
171e48865f is described below
commit 171e48865fe0e65d2ffa233a00a75e85613eeeda
Author: starocean999 <[email protected]>
AuthorDate: Wed Jul 19 13:54:39 2023 +0800
[fix](planner)only forbid literal value in AnalyticExpr's order by list
(#21820)
pick from master https://github.com/apache/doris/pull/21819
The original error is the window function's order by clause doesn't support
a literal value. But we use Expr's isConstant method to check if it's an
literal, this is wrong. So the pr uses the correct method( isLiteral ) to check
if an expr is literal to solve this problem
```sql
select
sortNum,
BITMAP_UNION_COUNT (c.pv) over (ORDER BY **sortNum** ) totalNum
from(
select
ifnull(a.sortNum, b.sortNum) sortNum,
BITMAP_UNION (ifnull(a.c_pv, b.c_pv)) pv
from
(select **_1 sortNum_**, c_pv from ${tableName2} t where t.c_int = 1) a
full join
(select **_2 sortNum_**, c_pv from ${tableName2} t where t.c_int = 2) b
on a.sortNum = b.sortNum
GROUP BY
sortNum
ORDER BY
sortNum
```
---
fe/fe-core/src/main/java/org/apache/doris/analysis/AnalyticExpr.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AnalyticExpr.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AnalyticExpr.java
index f5f1aa5397..8892cf9291 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AnalyticExpr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AnalyticExpr.java
@@ -478,7 +478,7 @@ public class AnalyticExpr extends Expr {
type = getFnCall().getType();
for (Expr e : partitionExprs) {
- if (e.isConstant()) {
+ if (e.isLiteral()) {
throw new AnalysisException(
"Expressions in the PARTITION BY clause must not be
constant: "
+ e.toSql() + " (in " + toSql() + ")");
@@ -486,7 +486,7 @@ public class AnalyticExpr extends Expr {
}
for (OrderByElement e : orderByElements) {
- if (e.getExpr().isConstant()) {
+ if (e.getExpr().isLiteral()) {
throw new AnalysisException(
"Expressions in the ORDER BY clause must not be constant: "
+ e.getExpr().toSql() + " (in " + toSql() + ")");
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]