Re: Tom Lane > Improve default and empty privilege outputs in psql. I'm sorry to report this when 17.0 has already been wrapped, but this change is breaking `psql -l` against 9.3-or-earlier servers:
$ /usr/lib/postgresql/17/bin/psql psql (17rc1 (Debian 17~rc1-1.pgdg+2), Server 9.3.25) Geben Sie »help« für Hilfe ein. postgres =# \set ECHO_HIDDEN on postgres =# \l /******* ANFRAGE ********/ SELECT d.datname as "Name", pg_catalog.pg_get_userbyid(d.datdba) as "Owner", pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding", 'libc' AS "Locale Provider", d.datcollate as "Collate", d.datctype as "Ctype", NULL as "Locale", NULL as "ICU Rules", CASE WHEN pg_catalog.cardinality(d.datacl) = 0 THEN '(none)' ELSE pg_catalog.array_to_string(d.datacl, E'\n') END AS "Access privileges" FROM pg_catalog.pg_database d ORDER BY 1; /************************/ FEHLER: 42883: Funktion pg_catalog.cardinality(aclitem[]) existiert nicht ZEILE 10: CASE WHEN pg_catalog.cardinality(d.datacl) = 0 THEN '(none... ^ TIP: Keine Funktion stimmt mit dem angegebenen Namen und den Argumenttypen überein. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen. ORT: ParseFuncOrColumn, parse_func.c:299 The psql docs aren't really explicit about which old versions are still supported, but there's some mentioning that \d should work back to 9.2: <para><application>psql</application> works best with servers of the same or an older major version. Backslash commands are particularly likely to fail if the server is of a newer version than <application>psql</application> itself. However, backslash commands of the <literal>\d</literal> family should work with servers of versions back to 9.2, though not necessarily with servers newer than <application>psql</application> itself. \l seems a tad more important even. Christoph