Hi, On Mon, Oct 16, 2023 at 5:34 PM Nikita Malakhov <huku...@gmail.com> wrote: > > Hi, > > Also FYI - the following case results in segmentation fault: > > postgres@postgres=# CREATE TABLE test_jsonb_constraints ( > js text, > i int, > x jsonb DEFAULT JSON_QUERY(jsonb '[1,2]', '$[*]' WITH WRAPPER) > CONSTRAINT test_jsonb_constraint1 > CHECK (js IS JSON) > CONSTRAINT test_jsonb_constraint5 > CHECK (JSON_QUERY(js::jsonb, '$.mm' RETURNING char(5) OMIT > QUOTES EMPTY ARRAY ON EMPTY) > 'a' COLLATE "C") > CONSTRAINT test_jsonb_constraint6 > CHECK (JSON_EXISTS(js::jsonb, 'strict $.a' RETURNING int TRUE > ON ERROR) < 2) > ); > CREATE TABLE > Time: 13.518 ms > postgres@postgres=# INSERT INTO test_jsonb_constraints VALUES ('[]'); > server closed the connection unexpectedly > This probably means the server terminated abnormally > before or while processing the request. > The connection to the server was lost. Attempting reset: Failed. > The connection to the server was lost. Attempting reset: Failed. > Time: 6.858 ms > @!> > > We're currently looking into this case.
Thanks for the report. I think I've figured out the problem -- ExecEvalJsonExprCoercion() mishandles the EMPTY ARRAY ON EMPTY case. I'm reading the other 2 patches... -- Thanks, Amit Langote EDB: http://www.enterprisedb.com