init
This commit is contained in:
78
db_include/catalog/unused_oids
Executable file
78
db_include/catalog/unused_oids
Executable file
@@ -0,0 +1,78 @@
|
||||
#!/usr/bin/perl
|
||||
#----------------------------------------------------------------------
|
||||
#
|
||||
# unused_oids
|
||||
# Finds blocks of manually-assignable OIDs that have not already been
|
||||
# claimed by previous hackers. The main use is for finding available
|
||||
# OIDs for new internal functions. The numbers printed are inclusive
|
||||
# ranges of unused OIDs.
|
||||
#
|
||||
# Before using a large empty block, make sure you aren't about
|
||||
# to take over what was intended as expansion space for something
|
||||
# else.
|
||||
#
|
||||
# Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
|
||||
# Portions Copyright (c) 1994, Regents of the University of California
|
||||
#
|
||||
# src/include/catalog/unused_oids
|
||||
#
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
# Must run in src/include/catalog
|
||||
use FindBin;
|
||||
chdir $FindBin::RealBin or die "could not cd to $FindBin::RealBin: $!\n";
|
||||
|
||||
use lib "$FindBin::RealBin/../../backend/catalog/";
|
||||
use Catalog;
|
||||
|
||||
my @input_files = glob("pg_*.h");
|
||||
|
||||
my $oids = Catalog::FindAllOidsFromHeaders(@input_files);
|
||||
|
||||
# Also push FirstGenbkiObjectId to serve as a terminator for the last gap.
|
||||
my $FirstGenbkiObjectId =
|
||||
Catalog::FindDefinedSymbol('access/transam.h', '..', 'FirstGenbkiObjectId');
|
||||
push @{$oids}, $FirstGenbkiObjectId;
|
||||
|
||||
my $prev_oid = 0;
|
||||
my @sortedoids = sort { $a <=> $b } @{$oids};
|
||||
foreach my $oid (@sortedoids)
|
||||
{
|
||||
if ($oid > $prev_oid + 1)
|
||||
{
|
||||
if ($oid > $prev_oid + 2)
|
||||
{
|
||||
printf "%d - %d\n", $prev_oid + 1, $oid - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf "%d\n", $prev_oid + 1;
|
||||
}
|
||||
}
|
||||
$prev_oid = $oid;
|
||||
}
|
||||
|
||||
my $suggestion;
|
||||
do
|
||||
{
|
||||
$suggestion = int(8000 + rand(2000));
|
||||
} while (grep(/^$suggestion$/, @{$oids}));
|
||||
|
||||
my $navailable = 0;
|
||||
foreach my $oid (@sortedoids)
|
||||
{
|
||||
if ($oid > $suggestion)
|
||||
{
|
||||
$navailable = $oid - $suggestion;
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
printf "Patches should use a more-or-less consecutive range of OIDs.\n";
|
||||
printf
|
||||
"Best practice is to start with a random choice in the range 8000-9999.\n";
|
||||
printf
|
||||
"Suggested random unused OID: $suggestion ($navailable consecutive OID(s) available starting here)\n";
|
||||
Reference in New Issue
Block a user