Re: IGNORE/RESPECT NULLS can be specified for (prokind == 'f').
Tatsuo Ishii <ishii@postgresql.org>
From: Tatsuo Ishii <ishii@postgresql.org>
To: jian.universality@gmail.com
Cc: pgsql-hackers@postgresql.org
Date: 2026-06-16T11:59:13Z
Lists: pgsql-hackers
Attachments
> While reviewing the row pattern recognition, > I noticed that the IGNORE NULLS and RESPECT NULLS clauses can be specified for > normal functions (prokind == 'f'). > > create or replace function dummy2(int) returns bigint AS $$ BEGIN > RETURN $1; END$$ STABLE LANGUAGE plpgsql; > select dummy2(1) IGNORE NULLS; > select dummy2(1) RESPECT NULLS; > > This seems unexpected? Yes. Other than true window functions are not allowed to use the null treatment clause per spec. > Also https://git.postgresql.org/cgit/postgresql.git/commit/?id=25a30bbd4235a49c854036c84fe90f2bc5a87652 > Obviously, RESPECT NULLS and IGNORE NULLS can appear in SELECT query, > since they are dedicated keywords, shouldn't they be mentioned in > select.sgml? No, we should fix the code. See attached patch. To fix this, ParseFuncOrColumn() now checks whether other than window functions are used with the null treatment clause. If so, error out. Also remove the unnecessary test for "aggregate functions do not accept RESPECT/IGNORE NULLS" because it is now checked in the early-stage new check. The window regression test expected file is changed accordingly. Regards, -- Tatsuo Ishii SRA OSS K.K. English: http://www.sraoss.co.jp/index_en/ Japanese:http://www.sraoss.co.jp
Commits
-
Remove stray blank line in ParseFuncOrColumn()
- b07664a179bd 19 (unreleased) landed
- d8113095c488 master landed
-
Refine error reporting for null treatment on non-window functions
- 419ce13b7019 19 (unreleased) landed
-
Fix error message typo.
- ab3023ad1e68 19 (unreleased) landed
-
Fix to not allow null treatment to non window functions.
- 4e5920e6de87 19 (unreleased) landed
-
Add IGNORE NULLS/RESPECT NULLS option to Window functions.
- 25a30bbd4235 19 (unreleased) cited