\d+ fails on index on partition
Justin Pryzby <pryzby@telsasoft.com>
From: Justin Pryzby <pryzby@telsasoft.com>
To: pgsql-hackers@postgresql.org
Cc: Alvaro Herrera <alvherre@2ndquadrant.com>
Date: 2018-09-27T20:00:20Z
Lists: pgsql-hackers
For indices inherited from relkind=p: pryzbyj=# CREATE TABLE tt(i int)PARTITION BY RANGE(i); pryzbyj=# CREATE TABLE tt1 PARTITION OF tt DEFAULT; pryzbyj=# CREATE INDEX ON tt((0+i)); pryzbyj=# ALTER INDEX tt1_expr_idx ALTER COLUMN 1 SET STATISTICS 123; pryzbyj=# \d+ tt1_expr_idx ERROR: 42809: "tt1_expr_idx" is an index LOCATION: heap_open, heapam.c:1305 Failing due to: ********* QUERY ********** SELECT inhparent::pg_catalog.regclass, pg_catalog.pg_get_expr(c.relpartbound, inhrelid), pg_catalog.pg_get_partition_constraintdef(inhrelid) FROM pg_catalog.pg_class c JOIN pg_catalog.pg_inherits i ON c.oid = inhrelid WHERE c.oid = '40129092' AND c.relispartition; ************************** pg_get_partition_constraintdef() doesn't like being passed a relkind='I', "ATTACH"ed index, which I guess is included in pg_inherit (commit 8b08f7d48): pryzbyj=# SELECT inhparent::regclass, inhrelid::regclass, * FROM pg_inherits WHERE inhrelid='tt1_expr_idx'::regclass; inhparent | tt_expr_idx inhrelid | tt1_expr_idx inhrelid | 40129092 inhparent | 40129091 inhseqno | 1 I'll spare you the burden of any fix I might attempt to cobble together. Justin
Commits
-
Fix assorted bugs in pg_get_partition_constraintdef().
- aaf10f32a308 12.0 landed
- dff3f06dc95e 10.6 landed
- 49507dec4601 11.0 landed
-
Local partitioned indexes
- 8b08f7d4820f 11.0 cited