pgsql: Refine error reporting for null treatment on non-window function - Mailing list pgsql-committers

From Fujii Masao
Subject pgsql: Refine error reporting for null treatment on non-window function
Date
Msg-id E1wcDbu-001c5T-1T@gemulon.postgresql.org
Whole thread
List pgsql-committers
Refine error reporting for null treatment on non-window functions

Commit 4e5920e6de8 disallowed RESPECT NULLS/IGNORE NULLS on
non-window functions, but it also caused the parser to check for
that clause too early in some cases. As a result, calls such as a
nonexistent function with IGNORE NULLS no longer reported the more
helpful "function ... does not exist" error, and aggregate functions
used as window functions reported "only window functions accept ..."
instead of the more accurate aggregate-specific error.

This commit moves the RESPECT NULLS/IGNORE NULLS checks so that
helpful existing errors are preserved where appropriate. This restores
"function ... does not exist" for nonexistent functions, while still
reporting that plain functions are not window functions and that
aggregates do not accept null treatment.

Author: Fujii Masao <masao.fujii@gmail.com>
Reviewed-by: Tatsuo Ishii <ishii@postgresql.org>
Reviewed-by: Chao Li <li.evan.chao@gmail.com>
Reviewed-by: Álvaro Herrera <alvherre@kurilemu.de>
Discussion: https://postgr.es/m/CAHGQGwH7VY_0GkhycyYZ4czkPGL0uGzDyOxk3uuFOSRR7wFY3g@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/419ce13b7019f906ebc010af3be09a9deffc2a47

Modified Files
--------------
src/backend/parser/parse_func.c      | 23 ++++++++++++++---------
src/test/regress/expected/window.out | 17 +++++++++++++++--
src/test/regress/sql/window.sql      |  3 +++
3 files changed, 32 insertions(+), 11 deletions(-)


pgsql-committers by date:

Previous
From: Richard Guo
Date:
Subject: pgsql: plperl: Fix NULL pointer dereference for forged array object
Next
From: Michael Paquier
Date:
Subject: pgsql: Fix set of typos and grammar mistakes