The following query ...
with t as (
select 'foo' x from dual union all
select 'bar' x from dual union all
select null x from dual union all
select 'baz' x from dual
)
select
json_arrayagg(x null on null) xnn,
json_arrayagg(x absent on null) xan
from
t;
... returns
XNN XAN
------------------- -------------------
["foo","bar","baz"] ["foo","bar","baz"]
I believe this is a bug on Oracle's part and XNN
should evaluate to ["foo","bar", null, "baz"]
.
Can someone confirm my suspicion?