From 219af0a8367ad7f5f008ec8252ffa728e0087b12 Mon Sep 17 00:00:00 2001
From: Peter Geoghegan <pg@bowt.ie>
Date: Fri, 2 Aug 2019 10:25:02 -0700
Subject: [PATCH v3] unused_oids suggestion

---
 src/include/catalog/unused_oids | 28 +++++++++++++++++++++++++++-
 1 file changed, 27 insertions(+), 1 deletion(-)

diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids
index e3fcd913e8..16925771ea 100755
--- a/src/include/catalog/unused_oids
+++ b/src/include/catalog/unused_oids
@@ -38,7 +38,8 @@ my $FirstGenbkiObjectId =
 push @{$oids}, $FirstGenbkiObjectId;
 
 my $prev_oid = 0;
-foreach my $oid (sort { $a <=> $b } @{$oids})
+my @sortedoids = sort {$a <=> $b} @{$oids};
+foreach my $oid (@sortedoids)
 {
 	if ($oid > $prev_oid + 1)
 	{
@@ -53,3 +54,28 @@ foreach my $oid (sort { $a <=> $b } @{$oids})
 	}
 	$prev_oid = $oid;
 }
+
+my $suggestion;
+do
+{
+	$suggestion = int(8000 + rand(2000));
+} while (grep(/^$suggestion$/, @{$oids}));
+
+my $navailable = 0;
+$prev_oid = 0;
+foreach my $oid (@sortedoids)
+{
+	if ($oid > $suggestion)
+	{
+		if ($oid > $prev_oid + 2)
+		{
+			$navailable = $oid - $suggestion;
+			last;
+		}
+	}
+	$prev_oid = $oid;
+}
+
+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";
-- 
2.17.1

