agora inbox for [email protected]help / color / mirror / Atom feed
[PATCH v2 2/3] Deprecate CREATE MATERIALIZED VIEW IF NOT EXISTS 79+ messages / 2 participants [nested] [flat]
* [PATCH v2 2/3] Deprecate CREATE MATERIALIZED VIEW IF NOT EXISTS @ 2024-05-28 00:19 Erik Wienhold <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Erik Wienhold @ 2024-05-28 00:19 UTC (permalink / raw) --- src/backend/parser/gram.y | 14 +++++++++++++ .../expected/test_extensions.out | 18 +++++++++++++++++ src/test/regress/expected/matview.out | 20 +++++++++++++++++++ 3 files changed, 52 insertions(+) diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index ed477806d1..b1100bdec1 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -4830,6 +4830,20 @@ CreateMatViewStmt: $8->rel->relpersistence = $2; $8->skipData = !($11); $$ = (Node *) ctas; + + if (ctas->into->rel->schemaname) + ereport(WARNING, + errmsg("IF NOT EXISTS is deprecated in materialized view creation"), + errhint("Use CREATE OR REPLACE MATERIALIZED VIEW %s.%s.", + ctas->into->rel->schemaname, + ctas->into->rel->relname), + parser_errposition(@1)); + else + ereport(WARNING, + errmsg("IF NOT EXISTS is deprecated in materialized view creation"), + errhint("Use CREATE OR REPLACE MATERIALIZED VIEW %s.", + ctas->into->rel->relname), + parser_errposition(@1)); } | CREATE OR REPLACE OptNoLog MATERIALIZED VIEW create_mv_target AS SelectStmt opt_with_data { diff --git a/src/test/modules/test_extensions/expected/test_extensions.out b/src/test/modules/test_extensions/expected/test_extensions.out index f357cc21aa..ecd453b29d 100644 --- a/src/test/modules/test_extensions/expected/test_extensions.out +++ b/src/test/modules/test_extensions/expected/test_extensions.out @@ -377,41 +377,57 @@ Objects in extension "test_ext_cor" CREATE COLLATION ext_cine_coll ( LC_COLLATE = "C", LC_CTYPE = "C" ); CREATE EXTENSION test_ext_cine; -- fail +WARNING: IF NOT EXISTS is deprecated in materialized view creation +HINT: Use CREATE OR REPLACE MATERIALIZED VIEW ext_cine_mv. ERROR: collation ext_cine_coll is not a member of extension "test_ext_cine" DETAIL: An extension may only use CREATE ... IF NOT EXISTS to skip object creation if the conflicting object is one that it already owns. DROP COLLATION ext_cine_coll; CREATE MATERIALIZED VIEW ext_cine_mv AS SELECT 11 AS f1; CREATE EXTENSION test_ext_cine; -- fail +WARNING: IF NOT EXISTS is deprecated in materialized view creation +HINT: Use CREATE OR REPLACE MATERIALIZED VIEW ext_cine_mv. ERROR: materialized view ext_cine_mv is not a member of extension "test_ext_cine" DETAIL: An extension may only use CREATE ... IF NOT EXISTS to skip object creation if the conflicting object is one that it already owns. DROP MATERIALIZED VIEW ext_cine_mv; CREATE FOREIGN DATA WRAPPER dummy; CREATE SERVER ext_cine_srv FOREIGN DATA WRAPPER dummy; CREATE EXTENSION test_ext_cine; -- fail +WARNING: IF NOT EXISTS is deprecated in materialized view creation +HINT: Use CREATE OR REPLACE MATERIALIZED VIEW ext_cine_mv. ERROR: server ext_cine_srv is not a member of extension "test_ext_cine" DETAIL: An extension may only use CREATE ... IF NOT EXISTS to skip object creation if the conflicting object is one that it already owns. DROP SERVER ext_cine_srv; CREATE SCHEMA ext_cine_schema; CREATE EXTENSION test_ext_cine; -- fail +WARNING: IF NOT EXISTS is deprecated in materialized view creation +HINT: Use CREATE OR REPLACE MATERIALIZED VIEW ext_cine_mv. ERROR: schema ext_cine_schema is not a member of extension "test_ext_cine" DETAIL: An extension may only use CREATE ... IF NOT EXISTS to skip object creation if the conflicting object is one that it already owns. DROP SCHEMA ext_cine_schema; CREATE SEQUENCE ext_cine_seq; CREATE EXTENSION test_ext_cine; -- fail +WARNING: IF NOT EXISTS is deprecated in materialized view creation +HINT: Use CREATE OR REPLACE MATERIALIZED VIEW ext_cine_mv. ERROR: sequence ext_cine_seq is not a member of extension "test_ext_cine" DETAIL: An extension may only use CREATE ... IF NOT EXISTS to skip object creation if the conflicting object is one that it already owns. DROP SEQUENCE ext_cine_seq; CREATE TABLE ext_cine_tab1 (x int); CREATE EXTENSION test_ext_cine; -- fail +WARNING: IF NOT EXISTS is deprecated in materialized view creation +HINT: Use CREATE OR REPLACE MATERIALIZED VIEW ext_cine_mv. ERROR: table ext_cine_tab1 is not a member of extension "test_ext_cine" DETAIL: An extension may only use CREATE ... IF NOT EXISTS to skip object creation if the conflicting object is one that it already owns. DROP TABLE ext_cine_tab1; CREATE TABLE ext_cine_tab2 AS SELECT 42 AS y; CREATE EXTENSION test_ext_cine; -- fail +WARNING: IF NOT EXISTS is deprecated in materialized view creation +HINT: Use CREATE OR REPLACE MATERIALIZED VIEW ext_cine_mv. ERROR: table ext_cine_tab2 is not a member of extension "test_ext_cine" DETAIL: An extension may only use CREATE ... IF NOT EXISTS to skip object creation if the conflicting object is one that it already owns. DROP TABLE ext_cine_tab2; CREATE EXTENSION test_ext_cine; +WARNING: IF NOT EXISTS is deprecated in materialized view creation +HINT: Use CREATE OR REPLACE MATERIALIZED VIEW ext_cine_mv. \dx+ test_ext_cine Objects in extension "test_ext_cine" Object description @@ -433,6 +449,8 @@ Objects in extension "test_ext_cine" (14 rows) ALTER EXTENSION test_ext_cine UPDATE TO '1.1'; +WARNING: IF NOT EXISTS is deprecated in materialized view creation +HINT: Use CREATE OR REPLACE MATERIALIZED VIEW ext_cine_mv. \dx+ test_ext_cine Objects in extension "test_ext_cine" Object description diff --git a/src/test/regress/expected/matview.out b/src/test/regress/expected/matview.out index e2e2a13396..cefd0d442c 100644 --- a/src/test/regress/expected/matview.out +++ b/src/test/regress/expected/matview.out @@ -565,6 +565,10 @@ CREATE MATERIALIZED VIEW mvtest_mv_foo AS SELECT * FROM mvtest_foo_data; CREATE MATERIALIZED VIEW mvtest_mv_foo AS SELECT * FROM mvtest_foo_data; ERROR: relation "mvtest_mv_foo" already exists CREATE MATERIALIZED VIEW IF NOT EXISTS mvtest_mv_foo AS SELECT * FROM mvtest_foo_data; +WARNING: IF NOT EXISTS is deprecated in materialized view creation +LINE 1: CREATE MATERIALIZED VIEW IF NOT EXISTS mvtest_mv_foo AS SELE... + ^ +HINT: Use CREATE OR REPLACE MATERIALIZED VIEW mvtest_mv_foo. NOTICE: relation "mvtest_mv_foo" already exists, skipping CREATE UNIQUE INDEX ON mvtest_mv_foo (i); RESET ROLE; @@ -662,12 +666,20 @@ CREATE MATERIALIZED VIEW matview_ine_tab AS SELECT 1 / 0; -- error ERROR: relation "matview_ine_tab" already exists CREATE MATERIALIZED VIEW IF NOT EXISTS matview_ine_tab AS SELECT 1 / 0; -- ok +WARNING: IF NOT EXISTS is deprecated in materialized view creation +LINE 1: CREATE MATERIALIZED VIEW IF NOT EXISTS matview_ine_tab AS + ^ +HINT: Use CREATE OR REPLACE MATERIALIZED VIEW matview_ine_tab. NOTICE: relation "matview_ine_tab" already exists, skipping CREATE MATERIALIZED VIEW matview_ine_tab AS SELECT 1 / 0 WITH NO DATA; -- error ERROR: relation "matview_ine_tab" already exists CREATE MATERIALIZED VIEW IF NOT EXISTS matview_ine_tab AS SELECT 1 / 0 WITH NO DATA; -- ok +WARNING: IF NOT EXISTS is deprecated in materialized view creation +LINE 1: CREATE MATERIALIZED VIEW IF NOT EXISTS matview_ine_tab AS + ^ +HINT: Use CREATE OR REPLACE MATERIALIZED VIEW matview_ine_tab. NOTICE: relation "matview_ine_tab" already exists, skipping EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) CREATE MATERIALIZED VIEW matview_ine_tab AS @@ -676,6 +688,10 @@ ERROR: relation "matview_ine_tab" already exists EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) CREATE MATERIALIZED VIEW IF NOT EXISTS matview_ine_tab AS SELECT 1 / 0; -- ok +WARNING: IF NOT EXISTS is deprecated in materialized view creation +LINE 2: CREATE MATERIALIZED VIEW IF NOT EXISTS matview_ine_tab AS + ^ +HINT: Use CREATE OR REPLACE MATERIALIZED VIEW matview_ine_tab. NOTICE: relation "matview_ine_tab" already exists, skipping QUERY PLAN ------------ @@ -688,6 +704,10 @@ ERROR: relation "matview_ine_tab" already exists EXPLAIN (ANALYZE, COSTS OFF, SUMMARY OFF, TIMING OFF) CREATE MATERIALIZED VIEW IF NOT EXISTS matview_ine_tab AS SELECT 1 / 0 WITH NO DATA; -- ok +WARNING: IF NOT EXISTS is deprecated in materialized view creation +LINE 2: CREATE MATERIALIZED VIEW IF NOT EXISTS matview_ine_tab AS + ^ +HINT: Use CREATE OR REPLACE MATERIALIZED VIEW matview_ine_tab. NOTICE: relation "matview_ine_tab" already exists, skipping QUERY PLAN ------------ -- 2.45.2 --nrp556lrhtfteavd Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v2-0003-Replace-matview-WITH-OLD-DATA.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
* [PATCH v3 1/7] Track retired system procedures in pg_retired.dat @ 2026-01-29 23:47 Mark Wong <[email protected]> 0 siblings, 0 replies; 79+ messages in thread From: Mark Wong @ 2026-01-29 23:47 UTC (permalink / raw) System procedures may be removed from time to time. Keep track of previously used OIDs to prevent potential conflicts from reusing OIDs after an upgrade. --- src/include/catalog/pg_retired.dat | 20 ++++++++++++++++++++ src/include/catalog/renumber_oids.pl | 9 +++++++++ src/include/catalog/unused_oids | 7 +++++++ 3 files changed, 36 insertions(+) create mode 100644 src/include/catalog/pg_retired.dat diff --git a/src/include/catalog/pg_retired.dat b/src/include/catalog/pg_retired.dat new file mode 100644 index 00000000000..413b68ad1cd --- /dev/null +++ b/src/include/catalog/pg_retired.dat @@ -0,0 +1,20 @@ +#---------------------------------------------------------------------- +# +# pg_retired.dat +# Entries that have been removed from pg_proc.dat with OIDs that are +# are not to be reused. +# +# Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group +# Portions Copyright (c) 1994, Regents of the University of California +# +# src/include/catalog/pg_retired.dat +# +#---------------------------------------------------------------------- + +[ + +# What's primarily important here is knowing which OIDs are not to be reused. +# At the same time, it may be good to be reminded what procedure was associated +# with it. + +] diff --git a/src/include/catalog/renumber_oids.pl b/src/include/catalog/renumber_oids.pl index f6e25d0f1e1..7489be02a50 100755 --- a/src/include/catalog/renumber_oids.pl +++ b/src/include/catalog/renumber_oids.pl @@ -68,6 +68,15 @@ my $oids = Catalog::FindAllOidsFromHeaders(@header_files); my %oidhash; @oidhash{@$oids} = undef; +# Also include OIDs listed in pg_retired.dat to prevent new OIDs to be mapped +# to OIDs that have been retired. +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + $oidhash{ $row->{oid} } = undef + if ref $row eq 'HASH' && defined $row->{oid}; +} + # Select new OIDs for existing OIDs in the mapped range. # We do this first so that we preserve the ordering of the mapped OIDs # (for reproducibility's sake), and so that if we fail due to running out diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index 147fba5e209..aeb485d9b5e 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -32,6 +32,13 @@ my @input_files = glob("pg_*.h"); my $oids = Catalog::FindAllOidsFromHeaders(@input_files); +# Also exclude OIDs listed in pg_retired.dat +my $retired_data = Catalog::ParseData('pg_retired.dat', undef, 0); +foreach my $row (@$retired_data) +{ + push @{$oids}, $row->{oid} if ref $row eq 'HASH' && defined $row->{oid}; +} + # Also push FirstGenbkiObjectId to serve as a terminator for the last gap. my $FirstGenbkiObjectId = Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId'); -- 2.43.0 --zd8Z8rlPOcTi77n/ Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0002-Handle-pg_get_ruledef-default-args-in-system_func.patch" ^ permalink raw reply [nested|flat] 79+ messages in thread
end of thread, other threads:[~2026-01-29 23:47 UTC | newest] Thread overview: 79+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2024-05-28 00:19 [PATCH v2 2/3] Deprecate CREATE MATERIALIZED VIEW IF NOT EXISTS Erik Wienhold <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]> 2026-01-29 23:47 [PATCH v3 1/7] Track retired system procedures in pg_retired.dat Mark Wong <[email protected]>
This inbox is served by agora; see mirroring instructions for how to clone and mirror all data and code used for this inbox