postgresql/src/include/catalog
Amit Kapila d9f01a287a Fix a deadlock during ALTER SUBSCRIPTION ... DROP PUBLICATION.
A deadlock can occur when the DDL command and the apply worker acquire
catalog locks in different orders while dropping replication origins.

The issue is rare in PG16 and higher branches because, in most cases, the
tablesync worker performs the origin drop in those branches, and its
locking sequence does not conflict with DDL operations.

This patch ensures consistent lock acquisition to prevent such deadlocks.

As per buildfarm.

Reported-by: Alexander Lakhin <exclusion@gmail.com>
Author: Ajin Cherian <itsajin@gmail.com>
Reviewed-by: Hayato Kuroda <kuroda.hayato@fujitsu.com>
Reviewed-by: vignesh C <vignesh21@gmail.com>
Reviewed-by: Amit Kapila <amit.kapila16@gmail.com>
Backpatch-through: 14, where it was introduced
Discussion: https://postgr.es/m/bab95e12-6cc5-4ebb-80a8-3e41956aa297@gmail.com
2025-08-01 07:46:22 +00:00
..
.gitignore Put genbki.pl output into src/include/catalog/ directly 2024-03-14 07:11:21 +01:00
binary_upgrade.h Update copyright for 2025 2025-01-01 11:21:55 -05:00
catalog.h Assert lack of hazardous buffer locks before possible catalog read. 2025-04-17 05:00:30 -07:00
catversion.h Do pre-release housekeeping on catalog data. 2025-06-29 21:43:39 -04:00
dependency.h Update copyright for 2025 2025-01-01 11:21:55 -05:00
duplicate_oids Update copyright for 2025 2025-01-01 11:21:55 -05:00
genbki.h Update copyright for 2025 2025-01-01 11:21:55 -05:00
heap.h Remove now-dead code in StoreAttrDefault(). 2025-03-03 13:09:20 -05:00
index.h Update copyright for 2025 2025-01-01 11:21:55 -05:00
indexing.h Update copyright for 2025 2025-01-01 11:21:55 -05:00
Makefile Update copyright for 2025 2025-01-01 11:21:55 -05:00
meson.build Update copyright for 2025 2025-01-01 11:21:55 -05:00
namespace.h Update copyright for 2025 2025-01-01 11:21:55 -05:00
objectaccess.h Update copyright for 2025 2025-01-01 11:21:55 -05:00
objectaddress.h Update copyright for 2025 2025-01-01 11:21:55 -05:00
partition.h Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_aggregate.dat Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_aggregate.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_am.dat Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_am.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_amop.dat Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_amop.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_amproc.dat Rename gist stratnum support function 2025-06-02 08:41:27 +02:00
pg_amproc.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_attrdef.h Remove now-dead code in StoreAttrDefault(). 2025-03-03 13:09:20 -05:00
pg_attribute.h Allow NOT NULL constraints to be added as NOT VALID 2025-04-07 19:19:50 +02:00
pg_auth_members.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_authid.dat Do pre-release housekeeping on catalog data. 2025-06-29 21:43:39 -04:00
pg_authid.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_cast.dat Allow casting between bytea and integer types. 2025-03-07 09:31:18 +00:00
pg_cast.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_class.dat Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_class.h Place "extern" declaration in the right part of pg_class.h. 2025-03-21 15:14:15 -04:00
pg_collation.dat Do pre-release housekeeping on catalog data. 2025-06-29 21:43:39 -04:00
pg_collation.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_constraint.h Allow NOT NULL constraints to be added as NOT VALID 2025-04-07 19:19:50 +02:00
pg_control.h Add default_char_signedness field to ControlFileData. 2025-02-21 10:12:08 -08:00
pg_conversion.dat Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_conversion.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_database.dat Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_database.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_db_role_setting.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_default_acl.h Extend ALTER DEFAULT PRIVILEGES to define default privileges for large objects. 2025-04-04 19:02:17 +09:00
pg_depend.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_description.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_enum.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_event_trigger.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_extension.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_foreign_data_wrapper.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_foreign_server.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_foreign_table.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_index.h Do pre-release housekeeping on catalog data. 2025-06-29 21:43:39 -04:00
pg_inherits.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_init_privs.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_language.dat Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_language.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_largeobject.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_largeobject_metadata.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_namespace.dat Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_namespace.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_opclass.dat Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_opclass.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_operator.dat Fix NO ACTION temporal foreign keys when the referenced endpoints change 2025-01-21 14:39:24 +01:00
pg_operator.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_opfamily.dat Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_opfamily.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_parameter_acl.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_partitioned_table.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_policy.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_proc.dat Do pre-release housekeeping on catalog data. 2025-06-29 21:43:39 -04:00
pg_proc.h Fix erroneous construction of functions' dependencies on transforms. 2025-04-07 13:31:37 -04:00
pg_publication.h Rename pubgencols_type to pubgencols in pg_publication. 2025-01-28 10:42:46 +05:30
pg_publication_namespace.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_publication_rel.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_range.dat Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_range.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_replication_origin.h Remove pg_replication_origin's TOAST table. 2025-05-07 14:47:36 -05:00
pg_rewrite.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_seclabel.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_sequence.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_shdepend.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_shdescription.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_shseclabel.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_statistic.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_statistic_ext.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_statistic_ext_data.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_subscription.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_subscription_rel.h Fix a deadlock during ALTER SUBSCRIPTION ... DROP PUBLICATION. 2025-08-01 07:46:22 +00:00
pg_tablespace.dat Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_tablespace.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_transform.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_trigger.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_ts_config.dat Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_ts_config.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_ts_config_map.dat Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_ts_config_map.h Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_ts_dict.dat Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_ts_dict.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_ts_parser.dat Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_ts_parser.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_ts_template.dat Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_ts_template.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_type.dat Update copyright for 2025 2025-01-01 11:21:55 -05:00
pg_type.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
pg_user_mapping.h IWYU pragmas for catalog headers 2025-01-15 18:57:53 +01:00
reformat_dat_file.pl Fix an assortment of spelling mistakes and typos 2025-01-02 12:42:01 +13:00
renumber_oids.pl Update copyright for 2025 2025-01-01 11:21:55 -05:00
storage.h Update copyright for 2025 2025-01-01 11:21:55 -05:00
storage_xlog.h Update copyright for 2025 2025-01-01 11:21:55 -05:00
toasting.h Update copyright for 2025 2025-01-01 11:21:55 -05:00
unused_oids Update copyright for 2025 2025-01-01 11:21:55 -05:00