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


Reply via email to