Thread: psql "\d" no longer working

psql "\d" no longer working

From
Rob Sargent
Date:

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.

Re: psql "\d" no longer working

From
"Georg H."
Date:

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

Re: psql "\d" no longer working

From
Adrian Klaver
Date:
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




Re: psql "\d" no longer working

From
Ron
Date:
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.

Re: psql "\d" no longer working

From
Adrian Klaver
Date:
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




Re: psql "\d" no longer working

From
Rob Sargent
Date:
> 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