postgresql/src/include/catalog
Noah Misch 536acda0bc In REASSIGN OWNED of a database, lock the tuple as mandated.
Commit aac2c9b4fd mandated such locking
and attempted to fulfill that mandate, but it missed REASSIGN OWNED.
Hence, it remained possible to lose VACUUM's inplace update of
datfrozenxid if a REASSIGN OWNED processed that database at the same
time.  This didn't affect the other inplace-updated catalog, pg_class.
For pg_class, REASSIGN OWNED calls ATExecChangeOwner() instead of the
generic AlterObjectOwner_internal(), and ATExecChangeOwner() fulfills
the locking mandate.

Like in GRANT, implement this by following the locking protocol for any
catalog subject to the generic AlterObjectOwner_internal().  It would
suffice to do this for IsInplaceUpdateOid() catalogs only.  Back-patch
to v13 (all supported versions).

Kirill Reshke.  Reported by Alexander Kukushkin.

Discussion: https://postgr.es/m/CAFh8B=mpKjAy4Cuun-HP-f_vRzh2HSvYFG3rhVfYbfEBUhBAGg@mail.gmail.com
2024-12-28 07:16:27 -08:00
..
.gitignore Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
binary_upgrade.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
catalog.h Cope with inplace update making catcache stale during TOAST fetch. 2024-06-27 19:21:12 -07:00
catversion.h Finish reverting 3eda9fc09f. 2021-09-07 10:52:25 -04:00
dependency.h In extensions, don't replace objects not belonging to the extension. 2022-08-08 11:12:31 -04:00
duplicate_oids Update copyright for 2021 2021-01-02 13:06:25 -05:00
genbki.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
heap.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
index.h Revert per-index collation version tracking feature. 2021-05-07 21:10:11 +12:00
indexing.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
Makefile Update copyright for 2021 2021-01-02 13:06:25 -05:00
namespace.h Reconsider the handling of procedure OUT parameters. 2021-06-10 17:11:36 -04:00
objectaccess.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
objectaddress.h In REASSIGN OWNED of a database, lock the tuple as mandated. 2024-12-28 07:16:27 -08:00
partition.h ALTER TABLE ... DETACH PARTITION ... CONCURRENTLY 2021-03-25 18:00:28 -03:00
pg_aggregate.dat Initial pgindent and pgperltidy run for v14. 2021-05-12 13:14:10 -04:00
pg_aggregate.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_am.dat Update copyright for 2021 2021-01-02 13:06:25 -05:00
pg_am.h Add primary keys and unique constraints to system catalogs 2021-01-30 19:44:29 +01:00
pg_amop.dat BRIN minmax-multi indexes 2021-03-26 13:54:30 +01:00
pg_amop.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_amproc.dat Dissociate btequalimage() from interval_ops, ending its deduplication. 2023-10-14 16:33:54 -07:00
pg_amproc.h Add primary keys and unique constraints to system catalogs 2021-01-30 19:44:29 +01:00
pg_attrdef.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_attribute.h Rethink definition of pg_attribute.attcompression. 2021-05-27 13:24:27 -04:00
pg_auth_members.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_authid.dat Do pre-release housekeeping on catalog data. 2021-05-12 13:36:06 -04:00
pg_authid.h doc: Improve hyphenation consistency 2021-04-21 08:14:43 +02:00
pg_cast.dat Revert 29854ee8d1 due to buildfarm failures 2021-06-15 21:44:40 +03:00
pg_cast.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_class.dat Update copyright for 2021 2021-01-02 13:06:25 -05:00
pg_class.h Correct comment and some documentation about REPLICA_IDENTITY_INDEX 2021-12-22 16:38:38 +09:00
pg_collation.dat Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_collation.h Do pre-release housekeeping on catalog data. 2021-05-12 13:36:06 -04:00
pg_constraint.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_control.h Fix WAL replay in presence of an incomplete record 2021-09-29 11:41:01 -03:00
pg_conversion.dat Update copyright for 2021 2021-01-02 13:06:25 -05:00
pg_conversion.h Remove special BKI_LOOKUP magic for namespace and role OIDs. 2021-02-03 12:01:48 -05:00
pg_database.dat Update copyright for 2021 2021-01-02 13:06:25 -05:00
pg_database.h Handle DROP DATABASE getting interrupted 2023-07-13 13:03:33 -07:00
pg_db_role_setting.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_default_acl.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_depend.h Revert per-index collation version tracking feature. 2021-05-07 21:10:11 +12:00
pg_description.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_enum.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_event_trigger.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_extension.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_foreign_data_wrapper.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_foreign_server.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_foreign_table.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_index.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_inherits.h Allow a partdesc-omitting-partitions to be cached 2021-04-28 15:44:35 -04:00
pg_init_privs.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_language.dat Update copyright for 2021 2021-01-02 13:06:25 -05:00
pg_language.h Remove special BKI_LOOKUP magic for namespace and role OIDs. 2021-02-03 12:01:48 -05:00
pg_largeobject.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_largeobject_metadata.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_namespace.dat Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_namespace.h Remove special BKI_LOOKUP magic for namespace and role OIDs. 2021-02-03 12:01:48 -05:00
pg_opclass.dat Ensure we allocate NAMEDATALEN bytes for names in Index Only Scans 2024-05-01 13:22:41 +12:00
pg_opclass.h Remove special BKI_LOOKUP magic for namespace and role OIDs. 2021-02-03 12:01:48 -05:00
pg_operator.dat Fix small inconsistencies in catalog definition of multirange operators 2021-07-15 14:18:53 +03:00
pg_operator.h Prevent ALTER TYPE/DOMAIN/OPERATOR from changing extension membership. 2021-08-17 14:29:22 -04:00
pg_opfamily.dat Dissociate btequalimage() from interval_ops, ending its deduplication. 2023-10-14 16:33:54 -07:00
pg_opfamily.h Remove special BKI_LOOKUP magic for namespace and role OIDs. 2021-02-03 12:01:48 -05:00
pg_partitioned_table.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_policy.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_proc.dat Set the volatility of the timestamptz version of date_bin() back to immutable 2021-09-03 13:40:32 -04:00
pg_proc.h Reconsider the handling of procedure OUT parameters. 2021-06-10 17:11:36 -04:00
pg_publication.h Invalidate all partitions for a partitioned table in publication. 2021-09-22 08:13:37 +05:30
pg_publication_rel.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_range.dat Run reformat-dat-files to declutter the catalog data files. 2021-01-13 16:14:38 -05:00
pg_range.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_replication_origin.h Add primary keys and unique constraints to system catalogs 2021-01-30 19:44:29 +01:00
pg_rewrite.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_seclabel.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_sequence.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_shdepend.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_shdescription.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_shseclabel.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_statistic.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_statistic_ext.h Extended statistics on expressions 2021-03-27 00:01:11 +01:00
pg_statistic_ext_data.h Extended statistics on expressions 2021-03-27 00:01:11 +01:00
pg_subscription.h Fix incorrect permissions on pg_subscription. 2021-06-03 14:54:06 -04:00
pg_subscription_rel.h Allow multiple xacts during table sync in logical replication. 2021-02-12 07:41:51 +05:30
pg_tablespace.dat Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_tablespace.h Remove special BKI_LOOKUP magic for namespace and role OIDs. 2021-02-03 12:01:48 -05:00
pg_transform.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_trigger.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
pg_ts_config.dat Update copyright for 2021 2021-01-02 13:06:25 -05:00
pg_ts_config.h Remove special BKI_LOOKUP magic for namespace and role OIDs. 2021-02-03 12:01:48 -05:00
pg_ts_config_map.dat Update copyright for 2021 2021-01-02 13:06:25 -05:00
pg_ts_config_map.h Add primary keys and unique constraints to system catalogs 2021-01-30 19:44:29 +01:00
pg_ts_dict.dat Update copyright for 2021 2021-01-02 13:06:25 -05:00
pg_ts_dict.h Remove special BKI_LOOKUP magic for namespace and role OIDs. 2021-02-03 12:01:48 -05:00
pg_ts_parser.dat Update copyright for 2021 2021-01-02 13:06:25 -05:00
pg_ts_parser.h Remove special BKI_LOOKUP magic for namespace and role OIDs. 2021-02-03 12:01:48 -05:00
pg_ts_template.dat Update copyright for 2021 2021-01-02 13:06:25 -05:00
pg_ts_template.h Remove special BKI_LOOKUP magic for namespace and role OIDs. 2021-02-03 12:01:48 -05:00
pg_type.dat Do pre-release housekeeping on catalog data. 2021-05-12 13:36:06 -04:00
pg_type.h Prevent ALTER TYPE/DOMAIN/OPERATOR from changing extension membership. 2021-08-17 14:29:22 -04:00
pg_user_mapping.h Build in some knowledge about foreign-key relationships in the catalogs. 2021-02-02 17:11:55 -05:00
reformat_dat_file.pl Update copyright for 2021 2021-01-02 13:06:25 -05:00
renumber_oids.pl Initial pgindent and pgperltidy run for v14. 2021-05-12 13:14:10 -04:00
storage.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
storage_xlog.h Update copyright for 2021 2021-01-02 13:06:25 -05:00
toasting.h Fix toast rewrites in logical decoding. 2021-08-25 10:10:50 +05:30
unused_oids Update copyright for 2021 2021-01-02 13:06:25 -05:00