BUG #15311: Incorrect comparison of the empty array with the value ofthe custom type from the table field - Mailing list pgsql-bugs

From PG Bug reporting form
Subject BUG #15311: Incorrect comparison of the empty array with the value ofthe custom type from the table field
Date
Msg-id 153363599037.1298.18121443062293897247@wrigleys.postgresql.org
Whole thread Raw
Responses Re: BUG #15311: Incorrect comparison of the empty array with the value of the custom type from the table field  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-bugs
The following bug has been logged on the website:

Bug reference:      15311
Logged by:          Виктор Васильев
Email address:      vvvasilev93@gmail.com
PostgreSQL version: 10.4
Operating system:   Ubuntu 16.04 LTS
Description:

test_db=> select version()
PostgreSQL 10.4 (Ubuntu 10.4-2.pgdg16.04+1) on i686-pc-linux-gnu, compiled
by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609, 32-bit

test_db=> create type type_mnemonic as enum ('ex', 'in');
CREATE TYPE

test_db=> create table tbl_for_tst(id integer, type type_mnemonic[]);
CREATE TABLE

test_db=> insert into tbl_for_tst(id, type) values (1, '{ex}'), (2, '{in}'),
(3, '{ex}'), (4, '{in}');
INSERT 0 4

test_db=> select * from tbl_for_tst;
 id | type
----+------
  1 | {ex}
  2 | {in}
  3 | {ex}
  4 | {in}
(4 строки)

test_db=> do $$
declare
  r tbl_for_tst;
  vtbl_for_tst jsonb;
  adata jsonb := '{"type":[]}';
begin
  select to_jsonb(e)
    into vtbl_for_tst
    from tbl_for_tst e
   where e.id = 1;

  r := jsonb_populate_record(r, vtbl_for_tst || adata);

  update tbl_for_tst e
     set type = r.type
   where e.id = 1;
end;
$$;
DO

test_db=> select id, type, type = '{}' as res from tbl_for_tst;
 id | type | res
----+------+----------
  2 | {in} | f
  3 | {ex} | f
  4 | {in} | f
  1 | {}   | f
(4 строки)

test_db=> update tbl_for_tst set type = '{}' where id = 4;
UPDATE 1

test_db=> select id, type, type = '{}' as res from tbl_for_tst;
 id | type | res
----+------+----------
  2 | {in} | f
  3 | {ex} | f
  1 | {}   | f
  4 | {}   | t
(4 строки)


pgsql-bugs by date:

Previous
From: Haribabu Kommi
Date:
Subject: Re: BUG #15310: pg_upgrade dissociates event triggers from extensions
Next
From: PG Bug reporting form
Date:
Subject: BUG #15312: Possible access to unintended variable in"postgres/src/backend/postmaster/pgstat.c" line 2698