Обсуждение: About psql \dt unable display same name table which have different schema

Поиск
Список
Период
Сортировка

About psql \dt unable display same name table which have different schema

От
徐志宇徐
Дата:
Hello All

   I experience a problem. The psql \dt command unable display
   same name table which have different schema.

   The table new. test10 unable display.
    Owing to the public.test10 exist.   The pg_type_is_visible display "F"

I don't know why this problem exist. Why unable display both table " public.test10 、 new. test10 "

For example:

 new01=# create table public.test10 (id int);
CREATE TABLE
new01=# create table new.test10(id int);
CREATE TABLE
new01=# create table new.test11(id int);
CREATE TABLE
new01=# show search_path ;
        search_path
----------------------------
 "$user", public, new2, new
(1 row)

new01=# \dt
         List of relations
 Schema |  Name  | Type  |  Owner
--------+--------+-------+----------
 new    | test01 | table | test01
 new    | test02 | table | postgres
 new    | test11 | table | postgres
 public | tbl_a  | table | postgres
 public | tbl_c  | table | postgres
 public | test10 | table | postgres
(6 rows)
new01=# SELECT pg_type_is_visible('public.test10'::regtype);
 pg_type_is_visible
--------------------
 t
(1 row)

new01=# SELECT pg_type_is_visible('new.test10'::regtype);
 pg_type_is_visible
--------------------
 f
(1 row)

Re: About psql \dt unable display same name table which have different schema

От
Tom Lane
Дата:
=?UTF-8?B?5b6Q5b+X5a6H5b6Q?= <xuzhiyuster@gmail.com> writes:
> I don't know why this problem exist. Why unable display both table "
> public.test10 、 new. test10 "

That's behaving as designed: \dt will show you tables that are
accessible with an unqualified name, but new.test10 is hidden
behind public.test10, so it's not accessible except by
qualification.

You can do "\dt *.*" or "\dt new.*", etc, to see such tables.

See here for more info:

https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-PATTERNS

            regards, tom lane



Re: About psql \dt unable display same name table which have different schema

От
徐志宇徐
Дата:
Hi Tom.

  Thanks for your explanation. I got it.
  I really appreciate it.

                                                                                  Jack Xu.

Tom Lane <tgl@sss.pgh.pa.us> 于2022年5月25日周三 00:16写道:
徐志宇徐 <xuzhiyuster@gmail.com> writes:
> I don't know why this problem exist. Why unable display both table "
> public.test10 、 new. test10 "

That's behaving as designed: \dt will show you tables that are
accessible with an unqualified name, but new.test10 is hidden
behind public.test10, so it's not accessible except by
qualification.

You can do "\dt *.*" or "\dt new.*", etc, to see such tables.

See here for more info:

https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-PATTERNS

                        regards, tom lane