16beta2 SQL parser: different defaults on absent_on_null

Started by Martin Butteralmost 3 years ago3 messageshackers
Jump to latest
#1Martin Butter
martin.butter@splendiddata.com

While adapting a Java implementation of the SQL parser, I noticed that
in structures JsonArrayAgg, JsonArrayConstructor,
JsonArrayQueryConstructor and JsonObjectConstrutor, the absent_on_null
field defaults to TRUE.
But in JsonObjectAgg, absent_on_null defaults to FALSE.
Is that intentionally?

Regards,
Martin.

#2Daniel Gustafsson
daniel@yesql.se
In reply to: Martin Butter (#1)
Re: 16beta2 SQL parser: different defaults on absent_on_null

On 14 Jul 2023, at 07:53, Martin Butter <martin.butter@splendiddata.com> wrote:

While adapting a Java implementation of the SQL parser, I noticed that in structures JsonArrayAgg, JsonArrayConstructor, JsonArrayQueryConstructor and JsonObjectConstrutor, the absent_on_null field defaults to TRUE.
But in JsonObjectAgg, absent_on_null defaults to FALSE.
Is that intentionally?

I would say so, an empty NULL|ABSENT ON NULL clause for arrays is defined as
true, while for objects it's defined as false (which is shared between both
json_object() and json_objectagg()).

--
Daniel Gustafsson

#3Martin Butter
martin.butter@splendiddata.com
In reply to: Daniel Gustafsson (#2)
Re: 16beta2 SQL parser: different defaults on absent_on_null

Hello Daniel,

Thanks for the explanation, it sounds reasonable. I'm glad it is not a bug.

Regards,
Martin.

On 14/07/2023 10:29, Daniel Gustafsson wrote:

On 14 Jul 2023, at 07:53, Martin Butter<martin.butter@splendiddata.com> wrote:
While adapting a Java implementation of the SQL parser, I noticed that in structures JsonArrayAgg, JsonArrayConstructor, JsonArrayQueryConstructor and JsonObjectConstrutor, the absent_on_null field defaults to TRUE.
But in JsonObjectAgg, absent_on_null defaults to FALSE.
Is that intentionally?

I would say so, an empty NULL|ABSENT ON NULL clause for arrays is defined as
true, while for objects it's defined as false (which is shared between both
json_object() and json_objectagg()).

--
Daniel Gustafsson

--
Martin Butter
Developer

Splendid Data Nederland B.V.
Binnenhof 62A
1412 LC  NAARDEN

T: +31 (0)85 773 19 99
M: +31 (0)6 226 946 62
E: martin.butter@splendiddata.com

http://www.splendiddata.com/