BUG #18290: \di+ can not show the same name indexes

Started by PG Bug reporting formover 2 years ago3 messagesbugs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following bug has been logged on the website:

Bug reference: 18290
Logged by: Yongtao Huang
Email address: yongtaoh2022@gmail.com
PostgreSQL version: 16.1
Operating system: centos7
Description:

``` SQL
gpadmin@gpadmin-host:~$ psql
psql (16.1)
Type "help" for help.

gpadmin=# create table t1(c1 int);
CREATE TABLE
gpadmin=# create temp table t2(c1 int);
CREATE TABLE
gpadmin=#
gpadmin=# create index idx1 on t1(c1);
CREATE INDEX
gpadmin=# create index idx1 on t2(c1);
CREATE INDEX

gpadmin=# \d+ t1
Table "public.t1"
Column | Type | Collation | Nullable | Default | Storage | Compression |
Stats target | Description
--------+---------+-----------+----------+---------+---------+-------------+--------------+-------------
c1 | integer | | | | plain | |
|
Indexes:
"idx1" btree (c1)
Access method: heap

gpadmin=# \d+ t2
Table "pg_temp_3.t2"
Column | Type | Collation | Nullable | Default | Storage | Compression |
Stats target | Description
--------+---------+-----------+----------+---------+---------+-------------+--------------+-------------
c1 | integer | | | | plain | |
|
Indexes:
"idx1" btree (c1)
Access method: heap

gpadmin=# \di+
List of relations
Schema | Name | Type | Owner | Table | Persistence | Access method |
Size | Description
-----------+------+-------+---------+-------+-------------+---------------+------------+-------------
pg_temp_3 | idx1 | index | gpadmin | t2 | temporary | btree |
8192 bytes |
(1 row)

```
Both table `t1` and temp table `t2` have index idx, but `\di` only shows the
index of table `t2`.

Related link: https://github.com/greenplum-db/gpdb/issues/15791

Bug catcher: Hao Zhang <hao-hz.zhang@broadcom.com> and Yongtao Huang
<yongtaoh2022@gmail.com>

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: PG Bug reporting form (#1)
Re: BUG #18290: \di+ can not show the same name indexes

PG Bug reporting form <noreply@postgresql.org> writes:

gpadmin=# \di+
List of relations
Schema | Name | Type | Owner | Table | Persistence | Access method |
Size | Description
-----------+------+-------+---------+-------+-------------+---------------+------------+-------------
pg_temp_3 | idx1 | index | gpadmin | t2 | temporary | btree |
8192 bytes |
(1 row)

Both table `t1` and temp table `t2` have index idx, but `\di` only shows the
index of table `t2`.

This is not a bug: \di is operating as documented, namely showing you
the indexes that are visible in your current search_path. The
temp index masks the similarly-named one in public. You could see
both of them with "\di+ *.*", "\di+ *.idx1", or other forms. For
more info see

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

regards, tom lane

#3jian he
jian.universality@gmail.com
In reply to: PG Bug reporting form (#1)
Re: BUG #18290: \di+ can not show the same name indexes

On Sun, Jan 14, 2024 at 6:33 PM PG Bug reporting form
<noreply@postgresql.org> wrote:

The following bug has been logged on the website:

Bug reference: 18290
Logged by: Yongtao Huang
Email address: yongtaoh2022@gmail.com
PostgreSQL version: 16.1
Operating system: centos7
Description:

gpadmin=# \di+
List of relations
Schema | Name | Type | Owner | Table | Persistence | Access method |
Size | Description
-----------+------+-------+---------+-------+-------------+---------------+------------+-------------
pg_temp_3 | idx1 | index | gpadmin | t2 | temporary | btree |
8192 bytes |
(1 row)

```
Both table `t1` and temp table `t2` have index idx, but `\di` only shows the
index of table `t2`.

Related link: https://github.com/greenplum-db/gpdb/issues/15791

Bug catcher: Hao Zhang <hao-hz.zhang@broadcom.com> and Yongtao Huang
<yongtaoh2022@gmail.com>

you can use
\set ECHO_HIDDEN
to figure out the magic behind \di

related post: https://stackoverflow.com/questions/11024099/postgresql-outputting-query-of-underlying-function