diff --git a/presto-main/src/main/java/com/facebook/presto/sql/planner/plan/WindowNode.java b/presto-main/src/main/java/com/facebook/presto/sql/planner/plan/WindowNode.java index 7b3047adb849c..684ea96438113 100644 --- a/presto-main/src/main/java/com/facebook/presto/sql/planner/plan/WindowNode.java +++ b/presto-main/src/main/java/com/facebook/presto/sql/planner/plan/WindowNode.java @@ -394,6 +394,7 @@ public boolean equals(Object obj) Objects.equals(this.ignoreNulls, other.ignoreNulls); } + @JsonProperty public boolean isIgnoreNulls() { return ignoreNulls; diff --git a/presto-tests/src/main/java/com/facebook/presto/tests/AbstractTestQueries.java b/presto-tests/src/main/java/com/facebook/presto/tests/AbstractTestQueries.java index 2e229de75184f..d8f779476ed66 100644 --- a/presto-tests/src/main/java/com/facebook/presto/tests/AbstractTestQueries.java +++ b/presto-tests/src/main/java/com/facebook/presto/tests/AbstractTestQueries.java @@ -8272,6 +8272,31 @@ public void testRightJoinWithEmptyProbeSide() "WITH small_part AS (SELECT * FROM part WHERE name = 'a') SELECT lineitem.orderkey FROM small_part RIGHT JOIN lineitem ON small_part.partkey = lineitem.partkey"); } + @Test + public void testLastValueIgnoreNulls() + { + assertQuery( + "WITH T AS (" + + " SELECT" + + " p," + + " v" + + " FROM (" + + " VALUES" + + " (2, 2)," + + " (1, 1)," + + " (3, NULL)" + + " ) T(p, v)" + + ")" + + "SELECT" + + " LAST_VALUE(v) IGNORE NULLS OVER (" + + " PARTITION BY 1" + + " ORDER BY" + + " p ASC" + + " )" + + "FROM T", + "Values 1, 2, 2"); + } + protected Session noJoinReordering() { return Session.builder(getSession())