Skip to content

Commit

Permalink
[fix](nereids)remove literal partition by and order by expression in …
Browse files Browse the repository at this point in the history
…window function (#26899)
  • Loading branch information
starocean999 authored Nov 23, 2023
1 parent 2ec3395 commit 1555b11
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@

import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
Expand All @@ -52,14 +53,24 @@ public Rule build() {
List<NamedExpression> outputs =
ExpressionUtils.rewriteDownShortCircuit(project.getProjects(), output -> {
if (output instanceof WindowExpression) {
WindowExpression windowExpression = (WindowExpression) output;
Expression expression = ((WindowExpression) output).getFunction();
if (expression instanceof Sum || expression instanceof Max
|| expression instanceof Min || expression instanceof Avg) {
// sum, max, min and avg in window function should be always nullable
return ((WindowExpression) output)
windowExpression = ((WindowExpression) output)
.withFunction(((NullableAggregateFunction) expression)
.withAlwaysNullable(true));
}
// remove literal partition by and order by keys
return windowExpression.withPartitionKeysOrderKeys(
windowExpression.getPartitionKeys().stream()
.filter(partitionExpr -> !partitionExpr.isConstant())
.collect(Collectors.toList()),
windowExpression.getOrderKeys().stream()
.filter(orderExpression -> !orderExpression
.getOrderKey().getExpr().isConstant())
.collect(Collectors.toList()));
}
return output;
});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
-- This file is automatically generated. You should know what you did if you want to edit this
-- !sql --
1
2
3
4
5
6
7

-- !sql --
JDR 2014-10-02T00:00 12.86 12.875
JDR 2014-10-03T00:00 12.89 12.896666667
Expand Down Expand Up @@ -609,3 +618,5 @@ USA Pete Hello
32767 6 12 32767
32767 6 6 32767



Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ suite("test_window_function") {

sql """ INSERT INTO ${windowFunctionTable1} VALUES ('JDR',12.86,'2014-10-02 00:00:00','2014-10-02 00:00:00.111111','2014-10-02 00:00:00.111111','2014-10-02 00:00:00.111111'),('JDR',12.89,'2014-10-03 00:00:00','2014-10-03 00:00:00.111111','2014-10-03 00:00:00.111111','2014-10-03 00:00:00.111111'),('JDR',12.94,'2014-10-04 00:00:00','2014-10-04 00:00:00.111111','2014-10-04 00:00:00.111111','2014-10-04 00:00:00.111111'),('JDR',12.55,'2014-10-05 00:00:00','2014-10-05 00:00:00.111111','2014-10-05 00:00:00.111111','2014-10-05 00:00:00.111111'),('JDR',14.03,'2014-10-06 00:00:00','2014-10-06 00:00:00.111111','2014-10-06 00:00:00.111111','2014-10-06 00:00:00.111111'),('JDR',14.75,'2014-10-07 00:00:00','2014-10-07 00:00:00.111111','2014-10-07 00:00:00.111111','2014-10-07 00:00:00.111111'),('JDR',13.98,'2014-10-08 00:00:00','2014-10-08 00:00:00.111111','2014-10-08 00:00:00.111111','2014-10-08 00:00:00.111111') """

qt_sql """SELECT row_number() OVER (partition by 1 order by 2) from ${windowFunctionTable1} order by 1; """
// Nereids does't support window function
// qt_sql """
// SELECT /*+SET_VAR(parallel_fragment_exec_instance_num=1) */
Expand Down

0 comments on commit 1555b11

Please sign in to comment.