Thomas Tauber-Marshall has uploaded a new patch set (#9). Change subject: IMPALA-3210: last/first_value() support for IGNORE NULLS ......................................................................
IMPALA-3210: last/first_value() support for IGNORE NULLS Added support for the 'ignore nulls' keyword to the last_value and first_value analytic functions, eg. 'last_value(col ignore nulls)', which would return the last value from the window that is not null, or null if all of the values in the window are null. We handle 'ignore nulls' in the FE in the same way that we handle 'distinct' - by adding isIgnoreNulls as a field in FunctionParams. To avoid affecting performance when 'ignore nulls' is not used, and to avoid having to special case 'ignore nulls' on the backend, this patch adds 'last_value_ignore_nulls' and 'first_value_ignore_nulls' builtin analytic functions that wrap 'last_value' and 'first_value' respectively. This patch also removes 'first_value_rewrite' - this was a minor performance improvement for certain special cases of first_value, but it significantly complicates the code, and isn't compatible with 'ignore nulls'. Change-Id: Ic27525e2237fb54318549d2674f1610884208e9b --- M be/src/exec/analytic-eval-node.cc M be/src/exec/analytic-eval-node.h M be/src/exprs/aggregate-functions-ir.cc M be/src/exprs/aggregate-functions.h M fe/src/main/cup/sql-parser.cup M fe/src/main/java/com/cloudera/impala/analysis/AnalyticExpr.java M fe/src/main/java/com/cloudera/impala/analysis/FunctionCallExpr.java M fe/src/main/java/com/cloudera/impala/analysis/FunctionParams.java M fe/src/main/java/com/cloudera/impala/catalog/BuiltinsDb.java M fe/src/main/java/com/cloudera/impala/planner/AnalyticPlanner.java M testdata/workloads/functional-planner/queries/PlannerTest/analytic-fns.test M testdata/workloads/functional-query/queries/QueryTest/analytic-fns.test M testdata/workloads/functional-query/queries/QueryTest/decimal.test 13 files changed, 865 insertions(+), 322 deletions(-) git pull ssh://gerrit.cloudera.org:29418/Impala refs/changes/28/3328/9 -- To view, visit http://gerrit.cloudera.org:8080/3328 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ic27525e2237fb54318549d2674f1610884208e9b Gerrit-PatchSet: 9 Gerrit-Project: Impala Gerrit-Branch: cdh5-trunk Gerrit-Owner: Thomas Tauber-Marshall <[email protected]> Gerrit-Reviewer: Marcel Kornacker <[email protected]> Gerrit-Reviewer: Matthew Jacobs <[email protected]> Gerrit-Reviewer: Thomas Tauber-Marshall <[email protected]>
