From: | steven(dot)winfield(at)cantabcapital(dot)com |
---|---|
To: | pgsql-bugs(at)postgresql(dot)org |
Cc: | steven(dot)winfield(at)cantabcapital(dot)com |
Subject: | BUG #14953: pg_blocking_pids / array_length inconsistency |
Date: | 2017-12-07 14:40:28 |
Message-ID: | 20171207144028.21691.76008@wrigleys.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
The following bug has been logged on the website:
Bug reference: 14953
Logged by: Steven Winfield
Email address: steven(dot)winfield(at)cantabcapital(dot)com
PostgreSQL version: 10.0
Operating system: Linux
Description:
It seems as though pg_blocking_pids() can return a zero-length,
one-dimensional array whereas users can only create NULL-length,
zero-dimensional arrays (even though the type suggests it is one
dimensional: 'integer[]')
test=# SELECT pg_blocking_pids(pg_backend_pid()),
array_length(pg_blocking_pids(pg_backend_pid()), 1), '{}'::integer[],
array_length('{}'::integer[], 1);
pg_blocking_pids | array_length | int4 | array_length
------------------+--------------+------+--------------
{} | 0 | {} |
(1 row)
This means that, for example, the code to check for an empty array of PIDs
must be special-cased.
For what it's worth, I think having array_length('{}'::integer[], 1) = 0 is
far more sensible, and
making differently-dimensioned empty arrays compare equal (as mentioned
previously[1]) is quite confusing.
[1]
https://www.postgresql.org/message-id/tencent_5D502954744B7F744ED6F34E%40qq.com
From | Date | Subject | |
---|---|---|---|
Next Message | Marko Tiikkaja | 2017-12-07 15:07:27 | Re: BUG #14953: pg_blocking_pids / array_length inconsistency |
Previous Message | Raghavendra Rao Jsv -X (rjsv - SCARLET WIRELESS INDIA PRIVATE LIMITED at Cisco) | 2017-12-07 14:21:30 | missing chunk number 0 for toast value 1086251 in pg_toast_2619 |