Re: \d is not showing global(normal) table info if we create temporary table with same name as global table

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Mahendra Singh <mahi6run(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: \d is not showing global(normal) table info if we create temporary table with same name as global table
Date: 2020-01-02 19:10:23
Message-ID: 28638.1577992223@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Robert Haas <robertmhaas(at)gmail(dot)com> writes:
> On Thu, Jan 2, 2020 at 12:59 PM Mahendra Singh <mahi6run(at)gmail(dot)com> wrote:
>> While reading code and doing some testing, I found that if we create a temporary table with same name as we created a normal(global) table, then \d is showing only temporary table info.

> That's because the query that \d issues to the backend includes:
> AND pg_catalog.pg_table_is_visible(c.oid)
> So I'd say it's not a bug, because that bit of SQL didn't get included
> in the query by accident.

It's also documented:

Whenever the pattern parameter is omitted completely, the \d commands
display all objects that are visible in the current schema search path
— this is equivalent to using * as the pattern. (An object is said to
be visible if its containing schema is in the search path and no
object of the same kind and name appears earlier in the search
path. This is equivalent to the statement that the object can be
referenced by name without explicit schema qualification.) To see all
objects in the database regardless of visibility, use *.* as the
pattern.

Perhaps that's not clear enough, but the behavior is certainly as-intended.

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Stephen Frost 2020-01-02 19:52:02 Re: Recognizing superuser in pg_hba.conf
Previous Message Robert Haas 2020-01-02 18:39:39 Re: \d is not showing global(normal) table info if we create temporary table with same name as global table