Bug fix for cache lookup failure for statistic_ext type

Mark Dilger <mark.dilger@enterprisedb.com>

From: Mark Dilger <mark.dilger@enterprisedb.com>
To: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2021-08-04T22:03:57Z
Lists: pgsql-hackers

Attachments

Hackers,

You can easily get a cache lookup failure by changing the regression tests as included in this small patch.  The failure looks thus:

+COMMENT ON STATISTICS ab1_a_b_stats IS 'new comment';
+CREATE ROLE temp_role;
+SET SESSION AUTHORIZATION temp_role;
+COMMENT ON STATISTICS ab1_a_b_stats IS 'changed comment';
+ERROR:  cache lookup failed for type 27447
+DROP STATISTICS ab1_a_b_stats;
+ERROR:  cache lookup failed for type 27447
+ALTER STATISTICS ab1_a_b_stats RENAME TO ab1_a_b_stats_new;
+ERROR:  must be owner of statistics object ab1_a_b_stats
+RESET SESSION AUTHORIZATION;
+DROP ROLE temp_role;

I believe this case simply has not had any test coverage, as I don't see any way the current code would ever work.  It treats the Oid of the statistics object as a type, which it is not.

Commits

  1. Rename the role in stats_ext to have regress_ prefix

  2. Fix lookup error in extended stats ownership check