psql "\d" no longer working

Started by Rob Sargentabout 3 years ago6 messagesgeneral
Jump to latest
#1Rob Sargent
robjsargent@gmail.com

Seems I've lost the table definition meta-command

riftehr=> \d actual_and_inf_rel_clean_final
ERROR:  column c.relhasoids does not exist
LINE 1: ..., c.relhasindex, c.relhasrules, c.relhastriggers,
c.relhasoi...

while listing tables still works

riftehr=> \dt act*
List of relations
 Schema |                   Name                    | Type  | Owner
--------+-------------------------------------------+-------+-------
 cell   | actual_and_inf_rel_clean_final            | table | cell
 cell   | actual_and_inf_rel_clean_final_count_rels | table | cell
 cell   | actual_and_inf_rel_part1                  | table | cell
 cell   | actual_and_inf_rel_part1_unique           | table | cell
 cell   | actual_and_inf_rel_part1_unique_clean     | table | cell
 cell   | actual_and_inf_rel_part2                  | table | cell
 cell   | actual_and_inf_rel_part2_unique           | table | cell
 cell   | actual_and_inf_rel_part2_unique_clean     | table | cell
(8 rows)

riftehr=> select version();
version
---------------------------------------------------------------------------------------------------------
 PostgreSQL 14.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC)
8.5.0 20210514 (Red Hat 8.5.0-16), 64-bit
(1 row)

The server was restarted Friday morning (according to systemctl) and the
log file has the complete sql statement:

2023-02-10 13:42:55.214 MST [524159] STATEMENT:  SELECT c.relchecks,
c.relkind, c.relhasindex, c.relhasrules, c.relhastriggers,
c.relhasoids, '', c.reltablespace, CASE WHEN c.reloftype = 0 THEN ''
ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END,
c.relpersistence
        FROM pg_catalog.pg_class c
         LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)
        WHERE c.oid = '219319';
2023-02-10 13:43:01.143 MST [524159] ERROR:  column c.relhasoids
does not exist at character 80

but I don't see any other issue in the log file.

I have yet to find another broken meta-command and no sql of mine has
failed along similar lines as had "\d"

Any pointers much appreciated.

#2Georg H.
georg-h@silentrunner.de
In reply to: Rob Sargent (#1)
Re: psql "\d" no longer working

Hello Rob,

Am 12.02.2023 um 10:02 schrieb Rob Sargent:

Seems I've lost the table definition meta-command

riftehr=> \d actual_and_inf_rel_clean_final
ERROR:  column c.relhasoids does not exist
LINE 1: ..., c.relhasindex, c.relhasrules, c.relhastriggers,
c.relhasoi...

while listing tables still works

riftehr=> \dt act*
List of relations
 Schema |                   Name                    | Type  | Owner
--------+-------------------------------------------+-------+-------
 cell   | actual_and_inf_rel_clean_final            | table | cell
 cell   | actual_and_inf_rel_clean_final_count_rels | table | cell
 cell   | actual_and_inf_rel_part1                  | table | cell
 cell   | actual_and_inf_rel_part1_unique           | table | cell
 cell   | actual_and_inf_rel_part1_unique_clean     | table | cell
 cell   | actual_and_inf_rel_part2                  | table | cell
 cell   | actual_and_inf_rel_part2_unique           | table | cell
 cell   | actual_and_inf_rel_part2_unique_clean     | table | cell
(8 rows)

riftehr=> select version();
version
---------------------------------------------------------------------------------------------------------
 PostgreSQL 14.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC)
8.5.0 20210514 (Red Hat 8.5.0-16), 64-bit
(1 row)

The server was restarted Friday morning (according to systemctl) and
the log file has the complete sql statement:

2023-02-10 13:42:55.214 MST [524159] STATEMENT:  SELECT
c.relchecks, c.relkind, c.relhasindex, c.relhasrules,
c.relhastriggers, c.relhasoids, '', c.reltablespace, CASE WHEN
c.reloftype = 0 THEN '' ELSE
c.reloftype::pg_catalog.regtype::pg_catalog.text END, c.relpersistence
        FROM pg_catalog.pg_class c
         LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid =
tc.oid)
        WHERE c.oid = '219319';
2023-02-10 13:43:01.143 MST [524159] ERROR:  column c.relhasoids
does not exist at character 80

but I don't see any other issue in the log file.

I have yet to find another broken meta-command and no sql of mine has
failed along similar lines as had "\d"

Any pointers much appreciated.

Check the version of your psql binary. I assume it's below v13.
There was a change in pg_catalog.

Clients below 13 assume, the column is still there.

kind regards

Georg

#3Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Georg H. (#2)
Re: psql "\d" no longer working

On 2/12/23 01:24, Georg H. wrote:

Hello Rob,

Check the version of your psql binary. I assume it's below v13.
There was a change in pg_catalog.

Clients below 13 assume, the column is still there.

That would be 11 and below.

kind regards

Georg

--
Adrian Klaver
adrian.klaver@aklaver.com

#4Ron
ronljohnsonjr@gmail.com
In reply to: Rob Sargent (#1)
Re: psql "\d" no longer working

On 2/12/23 03:02, Rob Sargent wrote:

Seems I've lost the table definition meta-command

riftehr=> \d actual_and_inf_rel_clean_final
ERROR:  column c.relhasoids does not exist
LINE 1: ..., c.relhasindex, c.relhasrules, c.relhastriggers, c.relhasoi...

while listing tables still works

riftehr=> \dt act*
List of relations
 Schema |                   Name                    | Type  | Owner
--------+-------------------------------------------+-------+-------
 cell   | actual_and_inf_rel_clean_final            | table | cell
 cell   | actual_and_inf_rel_clean_final_count_rels | table | cell
 cell   | actual_and_inf_rel_part1                  | table | cell
 cell   | actual_and_inf_rel_part1_unique           | table | cell
 cell   | actual_and_inf_rel_part1_unique_clean     | table | cell
 cell   | actual_and_inf_rel_part2                  | table | cell
 cell   | actual_and_inf_rel_part2_unique           | table | cell
 cell   | actual_and_inf_rel_part2_unique_clean     | table | cell
(8 rows)

riftehr=> select version();
version
---------------------------------------------------------------------------------------------------------
 PostgreSQL 14.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0
20210514 (Red Hat 8.5.0-16), 64-bit
(1 row)

The server was restarted Friday morning (according to systemctl) and the
log file has the complete sql statement:

2023-02-10 13:42:55.214 MST [524159] STATEMENT:  SELECT c.relchecks,
c.relkind, c.relhasindex, c.relhasrules, c.relhastriggers,
c.relhasoids, '', c.reltablespace, CASE WHEN c.reloftype = 0 THEN ''
ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END,
c.relpersistence
        FROM pg_catalog.pg_class c
         LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)
        WHERE c.oid = '219319';
2023-02-10 13:43:01.143 MST [524159] ERROR:  column c.relhasoids does
not exist at character 80

but I don't see any other issue in the log file.

I have yet to find another broken meta-command and no sql of mine has
failed along similar lines as had "\d"

Any pointers much appreciated.

What is your search_path set to?

--
Born in Arizona, moved to Babylonia.

#5Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Ron (#4)
Re: psql "\d" no longer working

On 2/12/23 08:49, Ron wrote:

On 2/12/23 03:02, Rob Sargent wrote:

2023-02-10 13:42:55.214 MST [524159] STATEMENT:  SELECT
c.relchecks, c.relkind, c.relhasindex, c.relhasrules,
c.relhastriggers, c.relhasoids, '', c.reltablespace, CASE WHEN
c.reloftype = 0 THEN '' ELSE
c.reloftype::pg_catalog.regtype::pg_catalog.text END, c.relpersistence
        FROM pg_catalog.pg_class c
         LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid =
tc.oid)
        WHERE c.oid = '219319';
2023-02-10 13:43:01.143 MST [524159] ERROR:  column c.relhasoids
does not exist at character 80

but I don't see any other issue in the log file.

I have yet to find another broken meta-command and no sql of mine has
failed along similar lines as had "\d"

Any pointers much appreciated.

What is your search_path set to?

I doubt that is the problem as the issue is the column in the table not
finding the table. pg_class.relhasoids no longer exists 12+, so the post
from Georg is probably pointing in the right direction.

--
Born in Arizona, moved to Babylonia.

--
Adrian Klaver
adrian.klaver@aklaver.com

#6Rob Sargent
robjsargent@gmail.com
In reply to: Adrian Klaver (#5)
Re: psql "\d" no longer working

I doubt that is the problem as the issue is the column in the table
not finding the table. pg_class.relhasoids no longer exists 12+, so
the post from Georg is probably pointing in the right direction.

Ah, yes.  My client machine at compute centre has to be told to put
version 14 on the path.  My session there got axed/restarted and I left
that part out.

Thanks a ton.

rjs