Hi, David,
On Sat, Mar 7, 2026 at 1:41 AM David G. Johnston
<[email protected]> wrote:
>
> On Saturday, March 7, 2026, Igor Korot <[email protected]> wrote:
>>
>>
>> included, NULLIF( TRIM( c.reloptions ), '' ) AS storage FROM pg_index
>> idx, pg_class c, pg_namespace n, pg_class t, pg_indexes ixs WHERE
>> ixs.indexname = c.relname AND c.oid = idx.indexrelid AND t.oid =
>> idx.indrelid AND n.oid = c.relnamespace AND idx.indisprimary AND
>> n.nspname = 'public' AND t.relname = 'leagues';
>> ERROR: function pg_catalog.btrim(text[]) does not exist
>> LINE 1: ...num) OFFSET idx.indnkeyatts) AS included, NULLIF( TRIM( c.re...
>>
>
>
> You are asking the wrong question. The right question is “how does one turn
> an empty array into the null value?” Nullif is correct, you just need to
> specify an empty array (of the correct type) for the second argument.
I don't think pg_class.reloptions is an ARRAY...
draft=# SELECT c.relname AS name, ixs.tablespace, ARRAY(SELECT
a.attname FROM pg_attribute a WHERE a.attrelid = idx.indrelid AND
a.attnum = ANY(idx.indkey) AND a.attnum > 0 ORDER BY
array_position(idx.indkey, a.attnum) OFFSET idx.indnkeyatts) AS
included, c.reloptions AS storage FROM pg_index idx, pg_class c,
pg_namespace n, pg_class t, pg_indexes ixs WHERE ixs.indexname =
c.relname AND c.oid = idx.indexrelid AND t.oid = idx.indrelid AND
n.oid = c.relnamespace AND idx.indisprimary AND n.nspname = 'public'
AND t.relname = 'leagues';
name | tablespace | included | storage
--------------+------------+----------+---------
leagues_pkey | | {} |
(1 row)
Included is one, storage is not.
Thank you.
>
> Given that error message, an array of text is the correct type.
>
> Array[]::text[]
>
> David J.
>