Re: IGNORE/RESPECT NULLS can be specified for (prokind == 'f').

From: Tatsuo Ishii <ishii(at)postgresql(dot)org>
To: jian(dot)universality(at)gmail(dot)com
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: IGNORE/RESPECT NULLS can be specified for (prokind == 'f').
Date: 2026-06-16 23:47:35
Message-ID: 20260617.084735.2009669103270889697.ishii@postgresql.org
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

>> 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.

I'm going to push the patch today if there's no objection.
--
Tatsuo Ishii
SRA OSS K.K.
English: http://www.sraoss.co.jp/index_en/
Japanese:http://www.sraoss.co.jp

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Fujii Masao 2026-06-17 00:12:33 Re: Fix ALTER DOMAIN VALIDATE CONSTRAINT locking
Previous Message Bruce Momjian 2026-06-16 23:41:23 Re: First draft of PG 19 release notes