mirror of
https://github.com/postgres/postgres.git
synced 2025-06-27 23:21:58 +03:00
pgstattuple: Fix failure with pgstathashindex() for partitioned indexes
As coded, the function relied on index_open() when opening an index relation, allowing partitioned indexes to be processed by pgstathashindex(). This was leading to a "could not open file" error because partitioned indexes have no physical files, or to a crash with an assertion failure (like on HEAD). This issue is fixed by applying the same checks as the other stat functions for indexes, with a lookup at both RELKIND_INDEX and the index AM expected. Author: Alexander Lakhin Discussion: https://postgr.es/m/18246-f4d9ff7cb3af77e6@postgresql.org Backpatch-through: 12
This commit is contained in:
@ -65,6 +65,7 @@ select pgstatginindex('test_hashidx');
|
||||
-- check that using any of these functions with unsupported relations will fail
|
||||
create table test_partitioned (a int) partition by range (a);
|
||||
create index test_partitioned_index on test_partitioned(a);
|
||||
create index test_partitioned_hash_index on test_partitioned using hash(a);
|
||||
-- these should all fail
|
||||
select pgstattuple('test_partitioned');
|
||||
select pgstattuple('test_partitioned_index');
|
||||
@ -73,6 +74,7 @@ select pg_relpages('test_partitioned');
|
||||
select pgstatindex('test_partitioned');
|
||||
select pgstatginindex('test_partitioned');
|
||||
select pgstathashindex('test_partitioned');
|
||||
select pgstathashindex('test_partitioned_hash_index');
|
||||
|
||||
create view test_view as select 1;
|
||||
-- these should all fail
|
||||
|
Reference in New Issue
Block a user