From c1ccd88fc2dc8c671191c141b4d99550a8624fe2 Mon Sep 17 00:00:00 2001
From: Tomas Vondra <tomas.vondra@postgresql.org>
Date: Mon, 22 Mar 2021 03:22:41 +0100
Subject: [PATCH 4/5] move bloom to contrib

---
 contrib/Makefile                              |   1 +
 contrib/brin_bloom/.gitignore                 |   4 +
 contrib/brin_bloom/Makefile                   |  23 +
 contrib/brin_bloom/brin_bloom--1.0.sql        | 358 ++++++++++++++
 .../brin => contrib/brin_bloom}/brin_bloom.c  |  19 +-
 contrib/brin_bloom/brin_bloom.control         |   6 +
 .../brin_bloom}/expected/brin_bloom.out       |  21 +
 .../brin_bloom}/sql/brin_bloom.sql            |  25 +
 src/backend/access/brin/Makefile              |   1 -
 src/include/catalog/pg_amop.dat               | 115 -----
 src/include/catalog/pg_amproc.dat             | 447 ------------------
 src/include/catalog/pg_opclass.dat            |  72 ---
 src/include/catalog/pg_opfamily.dat           |  38 --
 src/include/catalog/pg_proc.dat               |  34 --
 src/include/catalog/pg_type.dat               |   6 -
 src/test/regress/expected/opr_sanity.out      |   3 +-
 src/test/regress/expected/psql.out            |   3 +-
 src/test/regress/expected/type_sanity.out     |   3 +-
 src/test/regress/parallel_schedule            |   2 +-
 src/test/regress/serial_schedule              |   1 -
 20 files changed, 460 insertions(+), 722 deletions(-)
 create mode 100644 contrib/brin_bloom/.gitignore
 create mode 100644 contrib/brin_bloom/Makefile
 create mode 100644 contrib/brin_bloom/brin_bloom--1.0.sql
 rename {src/backend/access/brin => contrib/brin_bloom}/brin_bloom.c (97%)
 create mode 100644 contrib/brin_bloom/brin_bloom.control
 rename {src/test/regress => contrib/brin_bloom}/expected/brin_bloom.out (96%)
 rename {src/test/regress => contrib/brin_bloom}/sql/brin_bloom.sql (96%)

diff --git a/contrib/Makefile b/contrib/Makefile
index f27e458482..f878287429 100644
--- a/contrib/Makefile
+++ b/contrib/Makefile
@@ -12,6 +12,7 @@ SUBDIRS = \
 		bloom		\
 		btree_gin	\
 		btree_gist	\
+		brin_bloom	\
 		citext		\
 		cube		\
 		dblink		\
diff --git a/contrib/brin_bloom/.gitignore b/contrib/brin_bloom/.gitignore
new file mode 100644
index 0000000000..5dcb3ff972
--- /dev/null
+++ b/contrib/brin_bloom/.gitignore
@@ -0,0 +1,4 @@
+# Generated subdirectories
+/log/
+/results/
+/tmp_check/
diff --git a/contrib/brin_bloom/Makefile b/contrib/brin_bloom/Makefile
new file mode 100644
index 0000000000..d8ca383cf1
--- /dev/null
+++ b/contrib/brin_bloom/Makefile
@@ -0,0 +1,23 @@
+# contrib/brin_bloom/Makefile
+
+MODULE_big = brin_bloom
+OBJS = \
+	$(WIN32RES) \
+	brin_bloom.o
+
+EXTENSION = brin_bloom
+DATA = brin_bloom--1.0.sql
+PGFILEDESC = "brin_bloom - BRIN bloom operator classes"
+
+REGRESS = brin_bloom
+
+ifdef USE_PGXS
+PG_CONFIG = pg_config
+PGXS := $(shell $(PG_CONFIG) --pgxs)
+include $(PGXS)
+else
+subdir = contrib/brin_bloom
+top_builddir = ../..
+include $(top_builddir)/src/Makefile.global
+include $(top_srcdir)/contrib/contrib-global.mk
+endif
diff --git a/contrib/brin_bloom/brin_bloom--1.0.sql b/contrib/brin_bloom/brin_bloom--1.0.sql
new file mode 100644
index 0000000000..bc3e9ca35f
--- /dev/null
+++ b/contrib/brin_bloom/brin_bloom--1.0.sql
@@ -0,0 +1,358 @@
+/* contrib/brin_bloom/brin_bloom--1.0.sql */
+
+-- complain if script is sourced in psql, rather than via CREATE EXTENSION
+\echo Use "CREATE EXTENSION brin_bloom" to load this file. \quit
+
+CREATE TYPE brin_bloom_summary;
+
+-- BRIN bloom summary data type
+CREATE FUNCTION brin_bloom_summary_in(cstring)
+RETURNS brin_bloom_summary
+AS 'MODULE_PATHNAME'
+LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
+
+CREATE FUNCTION brin_bloom_summary_out(brin_bloom_summary)
+RETURNS cstring
+AS 'MODULE_PATHNAME'
+LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
+
+CREATE FUNCTION brin_bloom_summary_recv(internal)
+RETURNS brin_bloom_summary
+AS 'MODULE_PATHNAME'
+LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
+
+CREATE FUNCTION brin_bloom_summary_send(brin_bloom_summary)
+RETURNS bytea
+AS 'MODULE_PATHNAME'
+LANGUAGE C STRICT IMMUTABLE PARALLEL SAFE;
+
+CREATE TYPE brin_bloom_summary (
+	INTERNALLENGTH = -1,
+	INPUT = brin_bloom_summary_in,
+	OUTPUT = brin_bloom_summary_out,
+	RECEIVE = brin_bloom_summary_recv,
+	SEND = brin_bloom_summary_send,
+	STORAGE = extended
+);
+
+-- BRIN support procedures
+CREATE FUNCTION brin_bloom_opcinfo(internal)
+RETURNS internal
+AS 'MODULE_PATHNAME'
+LANGUAGE C STRICT IMMUTABLE;
+
+CREATE FUNCTION brin_bloom_add_value(internal, internal, internal, internal)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE C STRICT IMMUTABLE;
+
+CREATE FUNCTION brin_bloom_consistent(internal, internal, internal, int4)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE C STRICT IMMUTABLE;
+
+CREATE FUNCTION brin_bloom_union(internal, internal, internal)
+RETURNS bool
+AS 'MODULE_PATHNAME'
+LANGUAGE C STRICT IMMUTABLE;
+
+CREATE FUNCTION brin_bloom_options(internal)
+RETURNS void
+AS 'MODULE_PATHNAME'
+LANGUAGE C IMMUTABLE;
+
+CREATE OPERATOR FAMILY datetime_bloom_ops USING brin;
+
+CREATE OPERATOR CLASS bpchar_bloom_ops
+FOR TYPE bpchar USING brin
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      hashbpchar(bpchar),
+STORAGE         bpchar;
+
+CREATE OPERATOR CLASS bytea_bloom_ops
+FOR TYPE bytea USING brin
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      hashvarlena(internal),
+STORAGE         bytea;
+
+CREATE OPERATOR CLASS char_bloom_ops
+FOR TYPE "char" USING brin
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      hashchar("char"),
+STORAGE         "char";
+
+CREATE OPERATOR CLASS date_bloom_ops
+FOR TYPE date USING brin FAMILY datetime_bloom_ops
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      hashint4(int4),
+STORAGE         date;
+
+CREATE OPERATOR FAMILY float_bloom_ops USING brin;
+
+CREATE OPERATOR CLASS float4_bloom_ops
+FOR TYPE float4 USING brin FAMILY float_bloom_ops
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      hashfloat4(float4),
+STORAGE         float4;
+
+CREATE OPERATOR CLASS float8_bloom_ops
+FOR TYPE float8 USING brin FAMILY float_bloom_ops
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      hashfloat8(float8),
+STORAGE         float8;
+
+CREATE OPERATOR FAMILY network_bloom_ops USING brin;
+
+CREATE OPERATOR CLASS inet_bloom_ops
+FOR TYPE inet USING brin FAMILY network_bloom_ops
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      hashinet(inet),
+STORAGE         inet;
+
+CREATE OPERATOR FAMILY integer_bloom_ops USING brin;
+
+CREATE OPERATOR CLASS int2_bloom_ops
+FOR TYPE int2 USING brin FAMILY integer_bloom_ops
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      hashint2(int2),
+STORAGE         int2;
+
+CREATE OPERATOR CLASS int4_bloom_ops
+FOR TYPE int4 USING brin FAMILY integer_bloom_ops
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      hashint4(int4),
+STORAGE         int4;
+
+CREATE OPERATOR CLASS int8_bloom_ops
+FOR TYPE int8 USING brin FAMILY integer_bloom_ops
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      hashint8(int8),
+STORAGE         int8;
+
+CREATE OPERATOR CLASS interval_bloom_ops
+FOR TYPE interval USING brin
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      interval_hash(interval),
+STORAGE         interval;
+
+CREATE OPERATOR CLASS macaddr_bloom_ops
+FOR TYPE macaddr USING brin
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      hashmacaddr(macaddr),
+STORAGE         macaddr;
+
+CREATE OPERATOR CLASS macaddr8_bloom_ops
+FOR TYPE macaddr8 USING brin
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      hashmacaddr8(macaddr8),
+STORAGE         macaddr8;
+
+CREATE OPERATOR CLASS name_bloom_ops
+FOR TYPE name USING brin
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      hashname(name),
+STORAGE         name;
+
+CREATE OPERATOR CLASS numeric_bloom_ops
+FOR TYPE numeric USING brin
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      hash_numeric(numeric),
+STORAGE         numeric;
+
+CREATE OPERATOR CLASS oid_bloom_ops
+FOR TYPE oid USING brin
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      hashoid(oid),
+STORAGE         oid;
+
+CREATE OPERATOR CLASS pg_lsn_bloom_ops
+FOR TYPE pg_lsn USING brin
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      pg_lsn_hash(pg_lsn),
+STORAGE         pg_lsn;
+
+CREATE OPERATOR CLASS text_bloom_ops
+FOR TYPE text USING brin
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      hashtext(text),
+STORAGE         text;
+
+CREATE OPERATOR CLASS tid_bloom_ops
+FOR TYPE tid USING brin
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      hashtid(tid),
+STORAGE         tid;
+
+CREATE OPERATOR CLASS time_bloom_ops
+FOR TYPE time USING brin
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      time_hash(time),
+STORAGE         time;
+
+CREATE OPERATOR CLASS timestamp_bloom_ops
+FOR TYPE timestamp USING brin FAMILY datetime_bloom_ops
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      timestamp_hash(timestamp),
+STORAGE         timestamp;
+
+CREATE OPERATOR CLASS timestamptz_bloom_ops
+FOR TYPE timestamptz USING brin FAMILY datetime_bloom_ops
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      timestamp_hash(timestamp),
+STORAGE         timestamptz;
+
+CREATE OPERATOR CLASS timetz_bloom_ops
+FOR TYPE timetz USING brin
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      timetz_hash(timetz),
+STORAGE         timetz;
+
+CREATE OPERATOR CLASS uuid_bloom_ops
+FOR TYPE uuid USING brin
+AS
+    OPERATOR        1       =,
+    FUNCTION        1       brin_bloom_opcinfo(internal),
+    FUNCTION        2       brin_bloom_add_value(internal, internal, internal, internal),
+    FUNCTION        3       brin_bloom_consistent(internal, internal, internal, int4),
+    FUNCTION        4       brin_bloom_union(internal, internal, internal),
+    FUNCTION        5       brin_bloom_options(internal),
+    FUNCTION        11      uuid_hash(uuid),
+STORAGE         uuid;
diff --git a/src/backend/access/brin/brin_bloom.c b/contrib/brin_bloom/brin_bloom.c
similarity index 97%
rename from src/backend/access/brin/brin_bloom.c
rename to contrib/brin_bloom/brin_bloom.c
index 2214fb4d0c..51e96ed1ef 100644
--- a/src/backend/access/brin/brin_bloom.c
+++ b/contrib/brin_bloom/brin_bloom.c
@@ -123,6 +123,7 @@
 #include "access/htup_details.h"
 #include "access/reloptions.h"
 #include "access/stratnum.h"
+#include "catalog/namespace.h"
 #include "catalog/pg_type.h"
 #include "catalog/pg_amop.h"
 #include "utils/builtins.h"
@@ -133,6 +134,9 @@
 
 #include <math.h>
 
+PG_MODULE_MAGIC;
+
+
 #define BloomEqualStrategyNumber	1
 
 /*
@@ -225,6 +229,18 @@ typedef struct BloomOptions
 #define BLOOM_SEED_1	0x71d924af
 #define BLOOM_SEED_2	0xba48b314
 
+
+PG_FUNCTION_INFO_V1(brin_bloom_summary_in);
+PG_FUNCTION_INFO_V1(brin_bloom_summary_out);
+PG_FUNCTION_INFO_V1(brin_bloom_summary_send);
+PG_FUNCTION_INFO_V1(brin_bloom_summary_recv);
+
+PG_FUNCTION_INFO_V1(brin_bloom_opcinfo);
+PG_FUNCTION_INFO_V1(brin_bloom_options);
+PG_FUNCTION_INFO_V1(brin_bloom_add_value);
+PG_FUNCTION_INFO_V1(brin_bloom_consistent);
+PG_FUNCTION_INFO_V1(brin_bloom_union);
+
 /*
  * Bloom Filter
  *
@@ -424,6 +440,7 @@ Datum
 brin_bloom_opcinfo(PG_FUNCTION_ARGS)
 {
 	BrinOpcInfo *result;
+	Oid	typoid = TypenameGetTypidExtended("brin_bloom_summary", false);
 
 	/*
 	 * opaque->strategy_procinfos is initialized lazily; here it is set to
@@ -438,7 +455,7 @@ brin_bloom_opcinfo(PG_FUNCTION_ARGS)
 	result->oi_regular_nulls = true;
 	result->oi_opaque = (BloomOpaque *)
 		MAXALIGN((char *) result + SizeofBrinOpcInfo(1));
-	result->oi_typcache[0] = lookup_type_cache(PG_BRIN_BLOOM_SUMMARYOID, 0);
+	result->oi_typcache[0] = lookup_type_cache(typoid, 0);
 
 	PG_RETURN_POINTER(result);
 }
diff --git a/contrib/brin_bloom/brin_bloom.control b/contrib/brin_bloom/brin_bloom.control
new file mode 100644
index 0000000000..b77048a4ac
--- /dev/null
+++ b/contrib/brin_bloom/brin_bloom.control
@@ -0,0 +1,6 @@
+# brin_bloom extension
+comment = 'support for BRIN bloom indexes'
+default_version = '1.0'
+module_pathname = '$libdir/brin_bloom'
+relocatable = true
+trusted = true
diff --git a/src/test/regress/expected/brin_bloom.out b/contrib/brin_bloom/expected/brin_bloom.out
similarity index 96%
rename from src/test/regress/expected/brin_bloom.out
rename to contrib/brin_bloom/expected/brin_bloom.out
index 32c56a996a..4544d09691 100644
--- a/src/test/regress/expected/brin_bloom.out
+++ b/contrib/brin_bloom/expected/brin_bloom.out
@@ -1,3 +1,24 @@
+CREATE EXTENSION brin_bloom;
+CREATE TABLE tenk1 (
+	unique1		int4,
+	unique2		int4,
+	two			int4,
+	four		int4,
+	ten			int4,
+	twenty		int4,
+	hundred		int4,
+	thousand	int4,
+	twothousand	int4,
+	fivethous	int4,
+	tenthous	int4,
+	odd			int4,
+	even		int4,
+	stringu1	name,
+	stringu2	name,
+	string4		name
+);
+\copy tenk1 from '../../src/test/regress/data/tenk.data'
+CREATE INDEX tenk1_unique1 ON tenk1 USING btree(unique1 int4_ops);
 CREATE TABLE brintest_bloom (byteacol bytea,
 	charcol "char",
 	namecol name,
diff --git a/src/test/regress/sql/brin_bloom.sql b/contrib/brin_bloom/sql/brin_bloom.sql
similarity index 96%
rename from src/test/regress/sql/brin_bloom.sql
rename to contrib/brin_bloom/sql/brin_bloom.sql
index 5d499208e3..fa79053ac5 100644
--- a/src/test/regress/sql/brin_bloom.sql
+++ b/contrib/brin_bloom/sql/brin_bloom.sql
@@ -1,3 +1,28 @@
+CREATE EXTENSION brin_bloom;
+
+CREATE TABLE tenk1 (
+	unique1		int4,
+	unique2		int4,
+	two			int4,
+	four		int4,
+	ten			int4,
+	twenty		int4,
+	hundred		int4,
+	thousand	int4,
+	twothousand	int4,
+	fivethous	int4,
+	tenthous	int4,
+	odd			int4,
+	even		int4,
+	stringu1	name,
+	stringu2	name,
+	string4		name
+);
+
+\copy tenk1 from '../../src/test/regress/data/tenk.data'
+
+CREATE INDEX tenk1_unique1 ON tenk1 USING btree(unique1 int4_ops);
+
 CREATE TABLE brintest_bloom (byteacol bytea,
 	charcol "char",
 	namecol name,
diff --git a/src/backend/access/brin/Makefile b/src/backend/access/brin/Makefile
index a386cb71f1..75eb87ec10 100644
--- a/src/backend/access/brin/Makefile
+++ b/src/backend/access/brin/Makefile
@@ -14,7 +14,6 @@ include $(top_builddir)/src/Makefile.global
 
 OBJS = \
 	brin.o \
-	brin_bloom.o \
 	brin_inclusion.o \
 	brin_minmax.o \
 	brin_minmax_multi.o \
diff --git a/src/include/catalog/pg_amop.dat b/src/include/catalog/pg_amop.dat
index 8135854163..51bef55a57 100644
--- a/src/include/catalog/pg_amop.dat
+++ b/src/include/catalog/pg_amop.dat
@@ -1814,11 +1814,6 @@
   amoprighttype => 'bytea', amopstrategy => '5', amopopr => '>(bytea,bytea)',
   amopmethod => 'brin' },
 
-# bloom bytea
-{ amopfamily => 'brin/bytea_bloom_ops', amoplefttype => 'bytea',
-  amoprighttype => 'bytea', amopstrategy => '1', amopopr => '=(bytea,bytea)',
-  amopmethod => 'brin' },
-
 # minmax "char"
 { amopfamily => 'brin/char_minmax_ops', amoplefttype => 'char',
   amoprighttype => 'char', amopstrategy => '1', amopopr => '<(char,char)',
@@ -1836,11 +1831,6 @@
   amoprighttype => 'char', amopstrategy => '5', amopopr => '>(char,char)',
   amopmethod => 'brin' },
 
-# bloom "char"
-{ amopfamily => 'brin/char_bloom_ops', amoplefttype => 'char',
-  amoprighttype => 'char', amopstrategy => '1', amopopr => '=(char,char)',
-  amopmethod => 'brin' },
-
 # minmax name
 { amopfamily => 'brin/name_minmax_ops', amoplefttype => 'name',
   amoprighttype => 'name', amopstrategy => '1', amopopr => '<(name,name)',
@@ -1858,11 +1848,6 @@
   amoprighttype => 'name', amopstrategy => '5', amopopr => '>(name,name)',
   amopmethod => 'brin' },
 
-# bloom name
-{ amopfamily => 'brin/name_bloom_ops', amoplefttype => 'name',
-  amoprighttype => 'name', amopstrategy => '1', amopopr => '=(name,name)',
-  amopmethod => 'brin' },
-
 # minmax integer
 
 { amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8',
@@ -2155,20 +2140,6 @@
   amoprighttype => 'int8', amopstrategy => '5', amopopr => '>(int4,int8)',
   amopmethod => 'brin' },
 
-# bloom integer
-
-{ amopfamily => 'brin/integer_bloom_ops', amoplefttype => 'int8',
-  amoprighttype => 'int8', amopstrategy => '1', amopopr => '=(int8,int8)',
-  amopmethod => 'brin' },
-
-{ amopfamily => 'brin/integer_bloom_ops', amoplefttype => 'int2',
-  amoprighttype => 'int2', amopstrategy => '1', amopopr => '=(int2,int2)',
-  amopmethod => 'brin' },
-
-{ amopfamily => 'brin/integer_bloom_ops', amoplefttype => 'int4',
-  amoprighttype => 'int4', amopstrategy => '1', amopopr => '=(int4,int4)',
-  amopmethod => 'brin' },
-
 # minmax text
 { amopfamily => 'brin/text_minmax_ops', amoplefttype => 'text',
   amoprighttype => 'text', amopstrategy => '1', amopopr => '<(text,text)',
@@ -2186,11 +2157,6 @@
   amoprighttype => 'text', amopstrategy => '5', amopopr => '>(text,text)',
   amopmethod => 'brin' },
 
-# bloom text
-{ amopfamily => 'brin/text_bloom_ops', amoplefttype => 'text',
-  amoprighttype => 'text', amopstrategy => '1', amopopr => '=(text,text)',
-  amopmethod => 'brin' },
-
 # minmax oid
 { amopfamily => 'brin/oid_minmax_ops', amoplefttype => 'oid',
   amoprighttype => 'oid', amopstrategy => '1', amopopr => '<(oid,oid)',
@@ -2225,11 +2191,6 @@
   amoprighttype => 'oid', amopstrategy => '5', amopopr => '>(oid,oid)',
   amopmethod => 'brin' },
 
-# bloom oid
-{ amopfamily => 'brin/oid_bloom_ops', amoplefttype => 'oid',
-  amoprighttype => 'oid', amopstrategy => '1', amopopr => '=(oid,oid)',
-  amopmethod => 'brin' },
-
 # minmax tid
 { amopfamily => 'brin/tid_minmax_ops', amoplefttype => 'tid',
   amoprighttype => 'tid', amopstrategy => '1', amopopr => '<(tid,tid)',
@@ -2247,10 +2208,6 @@
   amoprighttype => 'tid', amopstrategy => '5', amopopr => '>(tid,tid)',
   amopmethod => 'brin' },
 
-# tid oid
-{ amopfamily => 'brin/tid_bloom_ops', amoplefttype => 'tid',
-  amoprighttype => 'tid', amopstrategy => '1', amopopr => '=(tid,tid)',
-  amopmethod => 'brin' },
 # minmax multi tid
 { amopfamily => 'brin/tid_minmax_multi_ops', amoplefttype => 'tid',
   amoprighttype => 'tid', amopstrategy => '1', amopopr => '<(tid,tid)',
@@ -2400,14 +2357,6 @@
   amoprighttype => 'float8', amopstrategy => '5', amopopr => '>(float8,float8)',
   amopmethod => 'brin' },
 
-# bloom float
-{ amopfamily => 'brin/float_bloom_ops', amoplefttype => 'float4',
-  amoprighttype => 'float4', amopstrategy => '1', amopopr => '=(float4,float4)',
-  amopmethod => 'brin' },
-{ amopfamily => 'brin/float_bloom_ops', amoplefttype => 'float8',
-  amoprighttype => 'float8', amopstrategy => '1', amopopr => '=(float8,float8)',
-  amopmethod => 'brin' },
-
 # minmax macaddr
 { amopfamily => 'brin/macaddr_minmax_ops', amoplefttype => 'macaddr',
   amoprighttype => 'macaddr', amopstrategy => '1',
@@ -2442,11 +2391,6 @@
   amoprighttype => 'macaddr', amopstrategy => '5',
   amopopr => '>(macaddr,macaddr)', amopmethod => 'brin' },
 
-# bloom macaddr
-{ amopfamily => 'brin/macaddr_bloom_ops', amoplefttype => 'macaddr',
-  amoprighttype => 'macaddr', amopstrategy => '1',
-  amopopr => '=(macaddr,macaddr)', amopmethod => 'brin' },
-
 # minmax macaddr8
 { amopfamily => 'brin/macaddr8_minmax_ops', amoplefttype => 'macaddr8',
   amoprighttype => 'macaddr8', amopstrategy => '1',
@@ -2481,11 +2425,6 @@
   amoprighttype => 'macaddr8', amopstrategy => '5',
   amopopr => '>(macaddr8,macaddr8)', amopmethod => 'brin' },
 
-# bloom macaddr8
-{ amopfamily => 'brin/macaddr8_bloom_ops', amoplefttype => 'macaddr8',
-  amoprighttype => 'macaddr8', amopstrategy => '1',
-  amopopr => '=(macaddr8,macaddr8)', amopmethod => 'brin' },
-
 # minmax inet
 { amopfamily => 'brin/network_minmax_ops', amoplefttype => 'inet',
   amoprighttype => 'inet', amopstrategy => '1', amopopr => '<(inet,inet)',
@@ -2520,11 +2459,6 @@
   amoprighttype => 'inet', amopstrategy => '5', amopopr => '>(inet,inet)',
   amopmethod => 'brin' },
 
-# bloom inet
-{ amopfamily => 'brin/network_bloom_ops', amoplefttype => 'inet',
-  amoprighttype => 'inet', amopstrategy => '1', amopopr => '=(inet,inet)',
-  amopmethod => 'brin' },
-
 # inclusion inet
 { amopfamily => 'brin/network_inclusion_ops', amoplefttype => 'inet',
   amoprighttype => 'inet', amopstrategy => '3', amopopr => '&&(inet,inet)',
@@ -2562,11 +2496,6 @@
   amoprighttype => 'bpchar', amopstrategy => '5', amopopr => '>(bpchar,bpchar)',
   amopmethod => 'brin' },
 
-# bloom character
-{ amopfamily => 'brin/bpchar_bloom_ops', amoplefttype => 'bpchar',
-  amoprighttype => 'bpchar', amopstrategy => '1', amopopr => '=(bpchar,bpchar)',
-  amopmethod => 'brin' },
-
 # minmax time without time zone
 { amopfamily => 'brin/time_minmax_ops', amoplefttype => 'time',
   amoprighttype => 'time', amopstrategy => '1', amopopr => '<(time,time)',
@@ -2601,11 +2530,6 @@
   amoprighttype => 'time', amopstrategy => '5', amopopr => '>(time,time)',
   amopmethod => 'brin' },
 
-# bloom time without time zone
-{ amopfamily => 'brin/time_bloom_ops', amoplefttype => 'time',
-  amoprighttype => 'time', amopstrategy => '1', amopopr => '=(time,time)',
-  amopmethod => 'brin' },
-
 # minmax datetime (date, timestamp, timestamptz)
 
 { amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp',
@@ -2898,20 +2822,6 @@
   amoprighttype => 'timestamptz', amopstrategy => '5',
   amopopr => '>(timestamptz,timestamptz)', amopmethod => 'brin' },
 
-# bloom datetime (date, timestamp, timestamptz)
-
-{ amopfamily => 'brin/datetime_bloom_ops', amoplefttype => 'timestamp',
-  amoprighttype => 'timestamp', amopstrategy => '1',
-  amopopr => '=(timestamp,timestamp)', amopmethod => 'brin' },
-
-{ amopfamily => 'brin/datetime_bloom_ops', amoplefttype => 'date',
-  amoprighttype => 'date', amopstrategy => '1', amopopr => '=(date,date)',
-  amopmethod => 'brin' },
-
-{ amopfamily => 'brin/datetime_bloom_ops', amoplefttype => 'timestamptz',
-  amoprighttype => 'timestamptz', amopstrategy => '1',
-  amopopr => '=(timestamptz,timestamptz)', amopmethod => 'brin' },
-
 # minmax interval
 { amopfamily => 'brin/interval_minmax_ops', amoplefttype => 'interval',
   amoprighttype => 'interval', amopstrategy => '1',
@@ -2946,11 +2856,6 @@
   amoprighttype => 'interval', amopstrategy => '5',
   amopopr => '>(interval,interval)', amopmethod => 'brin' },
 
-# bloom interval
-{ amopfamily => 'brin/interval_bloom_ops', amoplefttype => 'interval',
-  amoprighttype => 'interval', amopstrategy => '1',
-  amopopr => '=(interval,interval)', amopmethod => 'brin' },
-
 # minmax time with time zone
 { amopfamily => 'brin/timetz_minmax_ops', amoplefttype => 'timetz',
   amoprighttype => 'timetz', amopstrategy => '1', amopopr => '<(timetz,timetz)',
@@ -2985,11 +2890,6 @@
   amoprighttype => 'timetz', amopstrategy => '5', amopopr => '>(timetz,timetz)',
   amopmethod => 'brin' },
 
-# bloom time with time zone
-{ amopfamily => 'brin/timetz_bloom_ops', amoplefttype => 'timetz',
-  amoprighttype => 'timetz', amopstrategy => '1', amopopr => '=(timetz,timetz)',
-  amopmethod => 'brin' },
-
 # minmax bit
 { amopfamily => 'brin/bit_minmax_ops', amoplefttype => 'bit',
   amoprighttype => 'bit', amopstrategy => '1', amopopr => '<(bit,bit)',
@@ -3058,11 +2958,6 @@
   amoprighttype => 'numeric', amopstrategy => '5',
   amopopr => '>(numeric,numeric)', amopmethod => 'brin' },
 
-# bloom numeric
-{ amopfamily => 'brin/numeric_bloom_ops', amoplefttype => 'numeric',
-  amoprighttype => 'numeric', amopstrategy => '1',
-  amopopr => '=(numeric,numeric)', amopmethod => 'brin' },
-
 # minmax uuid
 { amopfamily => 'brin/uuid_minmax_ops', amoplefttype => 'uuid',
   amoprighttype => 'uuid', amopstrategy => '1', amopopr => '<(uuid,uuid)',
@@ -3097,11 +2992,6 @@
   amoprighttype => 'uuid', amopstrategy => '5', amopopr => '>(uuid,uuid)',
   amopmethod => 'brin' },
 
-# bloom uuid
-{ amopfamily => 'brin/uuid_bloom_ops', amoplefttype => 'uuid',
-  amoprighttype => 'uuid', amopstrategy => '1', amopopr => '=(uuid,uuid)',
-  amopmethod => 'brin' },
-
 # inclusion range types
 { amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange',
   amoprighttype => 'anyrange', amopstrategy => '1',
@@ -3180,11 +3070,6 @@
   amoprighttype => 'pg_lsn', amopstrategy => '5', amopopr => '>(pg_lsn,pg_lsn)',
   amopmethod => 'brin' },
 
-# bloom pg_lsn
-{ amopfamily => 'brin/pg_lsn_bloom_ops', amoplefttype => 'pg_lsn',
-  amoprighttype => 'pg_lsn', amopstrategy => '1', amopopr => '=(pg_lsn,pg_lsn)',
-  amopmethod => 'brin' },
-
 # inclusion box
 { amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box',
   amoprighttype => 'box', amopstrategy => '1', amopopr => '<<(box,box)',
diff --git a/src/include/catalog/pg_amproc.dat b/src/include/catalog/pg_amproc.dat
index f2c0ccfa1f..68c3342eeb 100644
--- a/src/include/catalog/pg_amproc.dat
+++ b/src/include/catalog/pg_amproc.dat
@@ -805,24 +805,6 @@
 { amprocfamily => 'brin/bytea_minmax_ops', amproclefttype => 'bytea',
   amprocrighttype => 'bytea', amprocnum => '4', amproc => 'brin_minmax_union' },
 
-# bloom bytea
-{ amprocfamily => 'brin/bytea_bloom_ops', amproclefttype => 'bytea',
-  amprocrighttype => 'bytea', amprocnum => '1',
-  amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/bytea_bloom_ops', amproclefttype => 'bytea',
-  amprocrighttype => 'bytea', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/bytea_bloom_ops', amproclefttype => 'bytea',
-  amprocrighttype => 'bytea', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/bytea_bloom_ops', amproclefttype => 'bytea',
-  amprocrighttype => 'bytea', amprocnum => '4', amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/bytea_bloom_ops', amproclefttype => 'bytea',
-  amprocrighttype => 'bytea', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/bytea_bloom_ops', amproclefttype => 'bytea',
-  amprocrighttype => 'bytea', amprocnum => '11', amproc => 'hashvarlena' },
-
 # minmax "char"
 { amprocfamily => 'brin/char_minmax_ops', amproclefttype => 'char',
   amprocrighttype => 'char', amprocnum => '1',
@@ -836,24 +818,6 @@
 { amprocfamily => 'brin/char_minmax_ops', amproclefttype => 'char',
   amprocrighttype => 'char', amprocnum => '4', amproc => 'brin_minmax_union' },
 
-# bloom "char"
-{ amprocfamily => 'brin/char_bloom_ops', amproclefttype => 'char',
-  amprocrighttype => 'char', amprocnum => '1',
-  amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/char_bloom_ops', amproclefttype => 'char',
-  amprocrighttype => 'char', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/char_bloom_ops', amproclefttype => 'char',
-  amprocrighttype => 'char', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/char_bloom_ops', amproclefttype => 'char',
-  amprocrighttype => 'char', amprocnum => '4', amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/char_bloom_ops', amproclefttype => 'char',
-  amprocrighttype => 'char', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/char_bloom_ops', amproclefttype => 'char',
-  amprocrighttype => 'char', amprocnum => '11', amproc => 'hashchar' },
-
 # minmax name
 { amprocfamily => 'brin/name_minmax_ops', amproclefttype => 'name',
   amprocrighttype => 'name', amprocnum => '1',
@@ -867,24 +831,6 @@
 { amprocfamily => 'brin/name_minmax_ops', amproclefttype => 'name',
   amprocrighttype => 'name', amprocnum => '4', amproc => 'brin_minmax_union' },
 
-# bloom name
-{ amprocfamily => 'brin/name_bloom_ops', amproclefttype => 'name',
-  amprocrighttype => 'name', amprocnum => '1',
-  amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/name_bloom_ops', amproclefttype => 'name',
-  amprocrighttype => 'name', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/name_bloom_ops', amproclefttype => 'name',
-  amprocrighttype => 'name', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/name_bloom_ops', amproclefttype => 'name',
-  amprocrighttype => 'name', amprocnum => '4', amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/name_bloom_ops', amproclefttype => 'name',
-  amprocrighttype => 'name', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/name_bloom_ops', amproclefttype => 'name',
-  amprocrighttype => 'name', amprocnum => '11', amproc => 'hashname' },
-
 # minmax integer: int2, int4, int8
 { amprocfamily => 'brin/integer_minmax_ops', amproclefttype => 'int8',
   amprocrighttype => 'int8', amprocnum => '1',
@@ -1132,58 +1078,6 @@
 { amprocfamily => 'brin/integer_minmax_multi_ops', amproclefttype => 'int4',
   amprocrighttype => 'int2', amprocnum => '11', amproc => 'brin_minmax_multi_distance_int4' },
 
-# bloom integer: int2, int4, int8
-{ amprocfamily => 'brin/integer_bloom_ops', amproclefttype => 'int8',
-  amprocrighttype => 'int8', amprocnum => '1',
-  amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/integer_bloom_ops', amproclefttype => 'int8',
-  amprocrighttype => 'int8', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/integer_bloom_ops', amproclefttype => 'int8',
-  amprocrighttype => 'int8', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/integer_bloom_ops', amproclefttype => 'int8',
-  amprocrighttype => 'int8', amprocnum => '4', amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/integer_bloom_ops', amproclefttype => 'int8',
-  amprocrighttype => 'int8', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/integer_bloom_ops', amproclefttype => 'int8',
-  amprocrighttype => 'int8', amprocnum => '11', amproc => 'hashint8' },
-
-{ amprocfamily => 'brin/integer_bloom_ops', amproclefttype => 'int2',
-  amprocrighttype => 'int2', amprocnum => '1',
-  amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/integer_bloom_ops', amproclefttype => 'int2',
-  amprocrighttype => 'int2', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/integer_bloom_ops', amproclefttype => 'int2',
-  amprocrighttype => 'int2', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/integer_bloom_ops', amproclefttype => 'int2',
-  amprocrighttype => 'int2', amprocnum => '4', amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/integer_bloom_ops', amproclefttype => 'int2',
-  amprocrighttype => 'int2', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/integer_bloom_ops', amproclefttype => 'int2',
-  amprocrighttype => 'int2', amprocnum => '11', amproc => 'hashint2' },
-
-{ amprocfamily => 'brin/integer_bloom_ops', amproclefttype => 'int4',
-  amprocrighttype => 'int4', amprocnum => '1',
-  amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/integer_bloom_ops', amproclefttype => 'int4',
-  amprocrighttype => 'int4', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/integer_bloom_ops', amproclefttype => 'int4',
-  amprocrighttype => 'int4', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/integer_bloom_ops', amproclefttype => 'int4',
-  amprocrighttype => 'int4', amprocnum => '4', amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/integer_bloom_ops', amproclefttype => 'int4',
-  amprocrighttype => 'int4', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/integer_bloom_ops', amproclefttype => 'int4',
-  amprocrighttype => 'int4', amprocnum => '11', amproc => 'hashint4' },
-
 # minmax text
 { amprocfamily => 'brin/text_minmax_ops', amproclefttype => 'text',
   amprocrighttype => 'text', amprocnum => '1',
@@ -1197,24 +1091,6 @@
 { amprocfamily => 'brin/text_minmax_ops', amproclefttype => 'text',
   amprocrighttype => 'text', amprocnum => '4', amproc => 'brin_minmax_union' },
 
-# bloom text
-{ amprocfamily => 'brin/text_bloom_ops', amproclefttype => 'text',
-  amprocrighttype => 'text', amprocnum => '1',
-  amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/text_bloom_ops', amproclefttype => 'text',
-  amprocrighttype => 'text', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/text_bloom_ops', amproclefttype => 'text',
-  amprocrighttype => 'text', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/text_bloom_ops', amproclefttype => 'text',
-  amprocrighttype => 'text', amprocnum => '4', amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/text_bloom_ops', amproclefttype => 'text',
-  amprocrighttype => 'text', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/text_bloom_ops', amproclefttype => 'text',
-  amprocrighttype => 'text', amprocnum => '11', amproc => 'hashtext' },
-
 # minmax oid
 { amprocfamily => 'brin/oid_minmax_ops', amproclefttype => 'oid',
   amprocrighttype => 'oid', amprocnum => '1', amproc => 'brin_minmax_opcinfo' },
@@ -1244,23 +1120,6 @@
 { amprocfamily => 'brin/oid_minmax_multi_ops', amproclefttype => 'oid',
   amprocrighttype => 'oid', amprocnum => '11', amproc => 'brin_minmax_multi_distance_int4' },
 
-# bloom oid
-{ amprocfamily => 'brin/oid_bloom_ops', amproclefttype => 'oid',
-  amprocrighttype => 'oid', amprocnum => '1', amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/oid_bloom_ops', amproclefttype => 'oid',
-  amprocrighttype => 'oid', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/oid_bloom_ops', amproclefttype => 'oid',
-  amprocrighttype => 'oid', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/oid_bloom_ops', amproclefttype => 'oid',
-  amprocrighttype => 'oid', amprocnum => '4', amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/oid_bloom_ops', amproclefttype => 'oid',
-  amprocrighttype => 'oid', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/oid_bloom_ops', amproclefttype => 'oid',
-  amprocrighttype => 'oid', amprocnum => '11', amproc => 'hashoid' },
-
 # minmax tid
 { amprocfamily => 'brin/tid_minmax_ops', amproclefttype => 'tid',
   amprocrighttype => 'tid', amprocnum => '1', amproc => 'brin_minmax_opcinfo' },
@@ -1273,23 +1132,6 @@
 { amprocfamily => 'brin/tid_minmax_ops', amproclefttype => 'tid',
   amprocrighttype => 'tid', amprocnum => '4', amproc => 'brin_minmax_union' },
 
-# bloom tid
-{ amprocfamily => 'brin/tid_bloom_ops', amproclefttype => 'tid',
-  amprocrighttype => 'tid', amprocnum => '1', amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/tid_bloom_ops', amproclefttype => 'tid',
-  amprocrighttype => 'tid', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/tid_bloom_ops', amproclefttype => 'tid',
-  amprocrighttype => 'tid', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/tid_bloom_ops', amproclefttype => 'tid',
-  amprocrighttype => 'tid', amprocnum => '4', amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/tid_bloom_ops', amproclefttype => 'tid',
-  amprocrighttype => 'tid', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/tid_bloom_ops', amproclefttype => 'tid',
-  amprocrighttype => 'tid', amprocnum => '11', amproc => 'hashtid' },
-
 # minmax multi tid
 { amprocfamily => 'brin/tid_minmax_multi_ops', amproclefttype => 'tid',
   amprocrighttype => 'tid', amprocnum => '1', amproc => 'brin_minmax_multi_opcinfo' },
@@ -1431,45 +1273,6 @@
   amprocrighttype => 'float4', amprocnum => '11',
   amproc => 'brin_minmax_multi_distance_float8' },
 
-# bloom float
-{ amprocfamily => 'brin/float_bloom_ops', amproclefttype => 'float4',
-  amprocrighttype => 'float4', amprocnum => '1',
-  amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/float_bloom_ops', amproclefttype => 'float4',
-  amprocrighttype => 'float4', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/float_bloom_ops', amproclefttype => 'float4',
-  amprocrighttype => 'float4', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/float_bloom_ops', amproclefttype => 'float4',
-  amprocrighttype => 'float4', amprocnum => '4',
-  amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/float_bloom_ops', amproclefttype => 'float4',
-  amprocrighttype => 'float4', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/float_bloom_ops', amproclefttype => 'float4',
-  amprocrighttype => 'float4', amprocnum => '11',
-  amproc => 'hashfloat4' },
-
-{ amprocfamily => 'brin/float_bloom_ops', amproclefttype => 'float8',
-  amprocrighttype => 'float8', amprocnum => '1',
-  amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/float_bloom_ops', amproclefttype => 'float8',
-  amprocrighttype => 'float8', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/float_bloom_ops', amproclefttype => 'float8',
-  amprocrighttype => 'float8', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/float_bloom_ops', amproclefttype => 'float8',
-  amprocrighttype => 'float8', amprocnum => '4',
-  amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/float_bloom_ops', amproclefttype => 'float8',
-  amprocrighttype => 'float8', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/float_bloom_ops', amproclefttype => 'float8',
-  amprocrighttype => 'float8', amprocnum => '11',
-  amproc => 'hashfloat8' },
-
 # minmax macaddr
 { amprocfamily => 'brin/macaddr_minmax_ops', amproclefttype => 'macaddr',
   amprocrighttype => 'macaddr', amprocnum => '1',
@@ -1504,26 +1307,6 @@
   amprocrighttype => 'macaddr', amprocnum => '11',
   amproc => 'brin_minmax_multi_distance_macaddr' },
 
-# bloom macaddr
-{ amprocfamily => 'brin/macaddr_bloom_ops', amproclefttype => 'macaddr',
-  amprocrighttype => 'macaddr', amprocnum => '1',
-  amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/macaddr_bloom_ops', amproclefttype => 'macaddr',
-  amprocrighttype => 'macaddr', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/macaddr_bloom_ops', amproclefttype => 'macaddr',
-  amprocrighttype => 'macaddr', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/macaddr_bloom_ops', amproclefttype => 'macaddr',
-  amprocrighttype => 'macaddr', amprocnum => '4',
-  amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/macaddr_bloom_ops', amproclefttype => 'macaddr',
-  amprocrighttype => 'macaddr', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/macaddr_bloom_ops', amproclefttype => 'macaddr',
-  amprocrighttype => 'macaddr', amprocnum => '11',
-  amproc => 'hashmacaddr' },
-
 # minmax macaddr8
 { amprocfamily => 'brin/macaddr8_minmax_ops', amproclefttype => 'macaddr8',
   amprocrighttype => 'macaddr8', amprocnum => '1',
@@ -1558,26 +1341,6 @@
   amprocrighttype => 'macaddr8', amprocnum => '11',
   amproc => 'brin_minmax_multi_distance_macaddr8' },
 
-# bloom macaddr8
-{ amprocfamily => 'brin/macaddr8_bloom_ops', amproclefttype => 'macaddr8',
-  amprocrighttype => 'macaddr8', amprocnum => '1',
-  amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/macaddr8_bloom_ops', amproclefttype => 'macaddr8',
-  amprocrighttype => 'macaddr8', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/macaddr8_bloom_ops', amproclefttype => 'macaddr8',
-  amprocrighttype => 'macaddr8', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/macaddr8_bloom_ops', amproclefttype => 'macaddr8',
-  amprocrighttype => 'macaddr8', amprocnum => '4',
-  amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/macaddr8_bloom_ops', amproclefttype => 'macaddr8',
-  amprocrighttype => 'macaddr8', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/macaddr8_bloom_ops', amproclefttype => 'macaddr8',
-  amprocrighttype => 'macaddr8', amprocnum => '11',
-  amproc => 'hashmacaddr8' },
-
 # minmax inet
 { amprocfamily => 'brin/network_minmax_ops', amproclefttype => 'inet',
   amprocrighttype => 'inet', amprocnum => '1',
@@ -1611,24 +1374,6 @@
   amprocrighttype => 'inet', amprocnum => '11',
   amproc => 'brin_minmax_multi_distance_inet' },
 
-# bloom inet
-{ amprocfamily => 'brin/network_bloom_ops', amproclefttype => 'inet',
-  amprocrighttype => 'inet', amprocnum => '1',
-  amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/network_bloom_ops', amproclefttype => 'inet',
-  amprocrighttype => 'inet', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/network_bloom_ops', amproclefttype => 'inet',
-  amprocrighttype => 'inet', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/network_bloom_ops', amproclefttype => 'inet',
-  amprocrighttype => 'inet', amprocnum => '4', amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/network_bloom_ops', amproclefttype => 'inet',
-  amprocrighttype => 'inet', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/network_bloom_ops', amproclefttype => 'inet',
-  amprocrighttype => 'inet', amprocnum => '11', amproc => 'hashinet' },
-
 # inclusion inet
 { amprocfamily => 'brin/network_inclusion_ops', amproclefttype => 'inet',
   amprocrighttype => 'inet', amprocnum => '1',
@@ -1663,26 +1408,6 @@
   amprocrighttype => 'bpchar', amprocnum => '4',
   amproc => 'brin_minmax_union' },
 
-# bloom character
-{ amprocfamily => 'brin/bpchar_bloom_ops', amproclefttype => 'bpchar',
-  amprocrighttype => 'bpchar', amprocnum => '1',
-  amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/bpchar_bloom_ops', amproclefttype => 'bpchar',
-  amprocrighttype => 'bpchar', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/bpchar_bloom_ops', amproclefttype => 'bpchar',
-  amprocrighttype => 'bpchar', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/bpchar_bloom_ops', amproclefttype => 'bpchar',
-  amprocrighttype => 'bpchar', amprocnum => '4',
-  amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/bpchar_bloom_ops', amproclefttype => 'bpchar',
-  amprocrighttype => 'bpchar', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/bpchar_bloom_ops', amproclefttype => 'bpchar',
-  amprocrighttype => 'bpchar', amprocnum => '11',
-  amproc => 'hashbpchar' },
-
 # minmax time without time zone
 { amprocfamily => 'brin/time_minmax_ops', amproclefttype => 'time',
   amprocrighttype => 'time', amprocnum => '1',
@@ -1715,24 +1440,6 @@
   amprocrighttype => 'time', amprocnum => '11',
   amproc => 'brin_minmax_multi_distance_time' },
 
-# bloom time without time zone
-{ amprocfamily => 'brin/time_bloom_ops', amproclefttype => 'time',
-  amprocrighttype => 'time', amprocnum => '1',
-  amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/time_bloom_ops', amproclefttype => 'time',
-  amprocrighttype => 'time', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/time_bloom_ops', amproclefttype => 'time',
-  amprocrighttype => 'time', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/time_bloom_ops', amproclefttype => 'time',
-  amprocrighttype => 'time', amprocnum => '4', amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/time_bloom_ops', amproclefttype => 'time',
-  amprocrighttype => 'time', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/time_bloom_ops', amproclefttype => 'time',
-  amprocrighttype => 'time', amprocnum => '11', amproc => 'time_hash' },
-
 # minmax datetime (date, timestamp, timestamptz)
 { amprocfamily => 'brin/datetime_minmax_ops', amproclefttype => 'timestamp',
   amprocrighttype => 'timestamp', amprocnum => '1',
@@ -2004,62 +1711,6 @@
   amprocrighttype => 'timestamptz', amprocnum => '11',
   amproc => 'brin_minmax_multi_distance_date' },
 
-# bloom datetime (date, timestamp, timestamptz)
-{ amprocfamily => 'brin/datetime_bloom_ops', amproclefttype => 'timestamp',
-  amprocrighttype => 'timestamp', amprocnum => '1',
-  amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/datetime_bloom_ops', amproclefttype => 'timestamp',
-  amprocrighttype => 'timestamp', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/datetime_bloom_ops', amproclefttype => 'timestamp',
-  amprocrighttype => 'timestamp', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/datetime_bloom_ops', amproclefttype => 'timestamp',
-  amprocrighttype => 'timestamp', amprocnum => '4',
-  amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/datetime_bloom_ops', amproclefttype => 'timestamp',
-  amprocrighttype => 'timestamp', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/datetime_bloom_ops', amproclefttype => 'timestamp',
-  amprocrighttype => 'timestamp', amprocnum => '11',
-  amproc => 'timestamp_hash' },
-
-{ amprocfamily => 'brin/datetime_bloom_ops', amproclefttype => 'timestamptz',
-  amprocrighttype => 'timestamptz', amprocnum => '1',
-  amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/datetime_bloom_ops', amproclefttype => 'timestamptz',
-  amprocrighttype => 'timestamptz', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/datetime_bloom_ops', amproclefttype => 'timestamptz',
-  amprocrighttype => 'timestamptz', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/datetime_bloom_ops', amproclefttype => 'timestamptz',
-  amprocrighttype => 'timestamptz', amprocnum => '4',
-  amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/datetime_bloom_ops', amproclefttype => 'timestamptz',
-  amprocrighttype => 'timestamptz', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/datetime_bloom_ops', amproclefttype => 'timestamptz',
-  amprocrighttype => 'timestamptz', amprocnum => '11',
-  amproc => 'timestamp_hash' },
-
-{ amprocfamily => 'brin/datetime_bloom_ops', amproclefttype => 'date',
-  amprocrighttype => 'date', amprocnum => '1',
-  amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/datetime_bloom_ops', amproclefttype => 'date',
-  amprocrighttype => 'date', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/datetime_bloom_ops', amproclefttype => 'date',
-  amprocrighttype => 'date', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/datetime_bloom_ops', amproclefttype => 'date',
-  amprocrighttype => 'date', amprocnum => '4', amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/datetime_bloom_ops', amproclefttype => 'date',
-  amprocrighttype => 'date', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/datetime_bloom_ops', amproclefttype => 'date',
-  amprocrighttype => 'date', amprocnum => '11', amproc => 'hashint4' },
-
 # minmax interval
 { amprocfamily => 'brin/interval_minmax_ops', amproclefttype => 'interval',
   amprocrighttype => 'interval', amprocnum => '1',
@@ -2094,26 +1745,6 @@
   amprocrighttype => 'interval', amprocnum => '11',
   amproc => 'brin_minmax_multi_distance_interval' },
 
-# bloom interval
-{ amprocfamily => 'brin/interval_bloom_ops', amproclefttype => 'interval',
-  amprocrighttype => 'interval', amprocnum => '1',
-  amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/interval_bloom_ops', amproclefttype => 'interval',
-  amprocrighttype => 'interval', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/interval_bloom_ops', amproclefttype => 'interval',
-  amprocrighttype => 'interval', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/interval_bloom_ops', amproclefttype => 'interval',
-  amprocrighttype => 'interval', amprocnum => '4',
-  amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/interval_bloom_ops', amproclefttype => 'interval',
-  amprocrighttype => 'interval', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/interval_bloom_ops', amproclefttype => 'interval',
-  amprocrighttype => 'interval', amprocnum => '11',
-  amproc => 'interval_hash' },
-
 # minmax time with time zone
 { amprocfamily => 'brin/timetz_minmax_ops', amproclefttype => 'timetz',
   amprocrighttype => 'timetz', amprocnum => '1',
@@ -2148,26 +1779,6 @@
   amprocrighttype => 'timetz', amprocnum => '11',
   amproc => 'brin_minmax_multi_distance_timetz' },
 
-# bloom time with time zone
-{ amprocfamily => 'brin/timetz_bloom_ops', amproclefttype => 'timetz',
-  amprocrighttype => 'timetz', amprocnum => '1',
-  amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/timetz_bloom_ops', amproclefttype => 'timetz',
-  amprocrighttype => 'timetz', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/timetz_bloom_ops', amproclefttype => 'timetz',
-  amprocrighttype => 'timetz', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/timetz_bloom_ops', amproclefttype => 'timetz',
-  amprocrighttype => 'timetz', amprocnum => '4',
-  amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/timetz_bloom_ops', amproclefttype => 'timetz',
-  amprocrighttype => 'timetz', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/timetz_bloom_ops', amproclefttype => 'timetz',
-  amprocrighttype => 'timetz', amprocnum => '11',
-  amproc => 'timetz_hash' },
-
 # minmax bit
 { amprocfamily => 'brin/bit_minmax_ops', amproclefttype => 'bit',
   amprocrighttype => 'bit', amprocnum => '1', amproc => 'brin_minmax_opcinfo' },
@@ -2228,26 +1839,6 @@
   amprocrighttype => 'numeric', amprocnum => '11',
   amproc => 'brin_minmax_multi_distance_numeric' },
 
-# bloom numeric
-{ amprocfamily => 'brin/numeric_bloom_ops', amproclefttype => 'numeric',
-  amprocrighttype => 'numeric', amprocnum => '1',
-  amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/numeric_bloom_ops', amproclefttype => 'numeric',
-  amprocrighttype => 'numeric', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/numeric_bloom_ops', amproclefttype => 'numeric',
-  amprocrighttype => 'numeric', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/numeric_bloom_ops', amproclefttype => 'numeric',
-  amprocrighttype => 'numeric', amprocnum => '4',
-  amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/numeric_bloom_ops', amproclefttype => 'numeric',
-  amprocrighttype => 'numeric', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/numeric_bloom_ops', amproclefttype => 'numeric',
-  amprocrighttype => 'numeric', amprocnum => '11',
-  amproc => 'hash_numeric' },
-
 # minmax uuid
 { amprocfamily => 'brin/uuid_minmax_ops', amproclefttype => 'uuid',
   amprocrighttype => 'uuid', amprocnum => '1',
@@ -2282,24 +1873,6 @@
   amprocrighttype => 'uuid', amprocnum => '11',
   amproc => 'brin_minmax_multi_distance_uuid' },
 
-# bloom uuid
-{ amprocfamily => 'brin/uuid_bloom_ops', amproclefttype => 'uuid',
-  amprocrighttype => 'uuid', amprocnum => '1',
-  amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/uuid_bloom_ops', amproclefttype => 'uuid',
-  amprocrighttype => 'uuid', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/uuid_bloom_ops', amproclefttype => 'uuid',
-  amprocrighttype => 'uuid', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/uuid_bloom_ops', amproclefttype => 'uuid',
-  amprocrighttype => 'uuid', amprocnum => '4', amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/uuid_bloom_ops', amproclefttype => 'uuid',
-  amprocrighttype => 'uuid', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/uuid_bloom_ops', amproclefttype => 'uuid',
-  amprocrighttype => 'uuid', amprocnum => '11', amproc => 'uuid_hash' },
-
 # inclusion range types
 { amprocfamily => 'brin/range_inclusion_ops', amproclefttype => 'anyrange',
   amprocrighttype => 'anyrange', amprocnum => '1',
@@ -2357,26 +1930,6 @@
   amprocrighttype => 'pg_lsn', amprocnum => '11',
   amproc => 'brin_minmax_multi_distance_pg_lsn' },
 
-# bloom pg_lsn
-{ amprocfamily => 'brin/pg_lsn_bloom_ops', amproclefttype => 'pg_lsn',
-  amprocrighttype => 'pg_lsn', amprocnum => '1',
-  amproc => 'brin_bloom_opcinfo' },
-{ amprocfamily => 'brin/pg_lsn_bloom_ops', amproclefttype => 'pg_lsn',
-  amprocrighttype => 'pg_lsn', amprocnum => '2',
-  amproc => 'brin_bloom_add_value' },
-{ amprocfamily => 'brin/pg_lsn_bloom_ops', amproclefttype => 'pg_lsn',
-  amprocrighttype => 'pg_lsn', amprocnum => '3',
-  amproc => 'brin_bloom_consistent' },
-{ amprocfamily => 'brin/pg_lsn_bloom_ops', amproclefttype => 'pg_lsn',
-  amprocrighttype => 'pg_lsn', amprocnum => '4',
-  amproc => 'brin_bloom_union' },
-{ amprocfamily => 'brin/pg_lsn_bloom_ops', amproclefttype => 'pg_lsn',
-  amprocrighttype => 'pg_lsn', amprocnum => '5',
-  amproc => 'brin_bloom_options' },
-{ amprocfamily => 'brin/pg_lsn_bloom_ops', amproclefttype => 'pg_lsn',
-  amprocrighttype => 'pg_lsn', amprocnum => '11',
-  amproc => 'pg_lsn_hash' },
-
 # inclusion box
 { amprocfamily => 'brin/box_inclusion_ops', amproclefttype => 'box',
   amprocrighttype => 'box', amprocnum => '1',
diff --git a/src/include/catalog/pg_opclass.dat b/src/include/catalog/pg_opclass.dat
index da25befefe..e510e28655 100644
--- a/src/include/catalog/pg_opclass.dat
+++ b/src/include/catalog/pg_opclass.dat
@@ -266,67 +266,40 @@
 { opcmethod => 'brin', opcname => 'bytea_minmax_ops',
   opcfamily => 'brin/bytea_minmax_ops', opcintype => 'bytea',
   opckeytype => 'bytea' },
-{ opcmethod => 'brin', opcname => 'bytea_bloom_ops',
-  opcfamily => 'brin/bytea_bloom_ops', opcintype => 'bytea',
-  opckeytype => 'bytea', opcdefault => 'f' },
 { opcmethod => 'brin', opcname => 'char_minmax_ops',
   opcfamily => 'brin/char_minmax_ops', opcintype => 'char',
   opckeytype => 'char' },
-{ opcmethod => 'brin', opcname => 'char_bloom_ops',
-  opcfamily => 'brin/char_bloom_ops', opcintype => 'char',
-  opckeytype => 'char', opcdefault => 'f' },
 { opcmethod => 'brin', opcname => 'name_minmax_ops',
   opcfamily => 'brin/name_minmax_ops', opcintype => 'name',
   opckeytype => 'name' },
-{ opcmethod => 'brin', opcname => 'name_bloom_ops',
-  opcfamily => 'brin/name_bloom_ops', opcintype => 'name',
-  opckeytype => 'name', opcdefault => 'f' },
 { opcmethod => 'brin', opcname => 'int8_minmax_ops',
   opcfamily => 'brin/integer_minmax_ops', opcintype => 'int8',
   opckeytype => 'int8' },
 { opcmethod => 'brin', opcname => 'int8_minmax_multi_ops',
   opcfamily => 'brin/integer_minmax_multi_ops', opcintype => 'int8',
   opckeytype => 'int8', opcdefault => 'f' },
-{ opcmethod => 'brin', opcname => 'int8_bloom_ops',
-  opcfamily => 'brin/integer_bloom_ops', opcintype => 'int8',
-  opckeytype => 'int8', opcdefault => 'f' },
 { opcmethod => 'brin', opcname => 'int2_minmax_ops',
   opcfamily => 'brin/integer_minmax_ops', opcintype => 'int2',
   opckeytype => 'int2' },
 { opcmethod => 'brin', opcname => 'int2_minmax_multi_ops',
   opcfamily => 'brin/integer_minmax_multi_ops', opcintype => 'int2',
   opckeytype => 'int2', opcdefault => 'f' },
-{ opcmethod => 'brin', opcname => 'int2_bloom_ops',
-  opcfamily => 'brin/integer_bloom_ops', opcintype => 'int2',
-  opckeytype => 'int2', opcdefault => 'f' },
 { opcmethod => 'brin', opcname => 'int4_minmax_ops',
   opcfamily => 'brin/integer_minmax_ops', opcintype => 'int4',
   opckeytype => 'int4' },
 { opcmethod => 'brin', opcname => 'int4_minmax_multi_ops',
   opcfamily => 'brin/integer_minmax_multi_ops', opcintype => 'int4',
   opckeytype => 'int4', opcdefault => 'f' },
-{ opcmethod => 'brin', opcname => 'int4_bloom_ops',
-  opcfamily => 'brin/integer_bloom_ops', opcintype => 'int4',
-  opckeytype => 'int4', opcdefault => 'f' },
 { opcmethod => 'brin', opcname => 'text_minmax_ops',
   opcfamily => 'brin/text_minmax_ops', opcintype => 'text',
   opckeytype => 'text' },
-{ opcmethod => 'brin', opcname => 'text_bloom_ops',
-  opcfamily => 'brin/text_bloom_ops', opcintype => 'text',
-  opckeytype => 'text', opcdefault => 'f' },
 { opcmethod => 'brin', opcname => 'oid_minmax_ops',
   opcfamily => 'brin/oid_minmax_ops', opcintype => 'oid', opckeytype => 'oid' },
 { opcmethod => 'brin', opcname => 'oid_minmax_multi_ops',
   opcfamily => 'brin/oid_minmax_multi_ops', opcintype => 'oid',
   opckeytype => 'oid', opcdefault => 'f' },
-{ opcmethod => 'brin', opcname => 'oid_bloom_ops',
-  opcfamily => 'brin/oid_bloom_ops', opcintype => 'oid',
-  opckeytype => 'oid', opcdefault => 'f' },
 { opcmethod => 'brin', opcname => 'tid_minmax_ops',
   opcfamily => 'brin/tid_minmax_ops', opcintype => 'tid', opckeytype => 'tid' },
-{ opcmethod => 'brin', opcname => 'tid_bloom_ops',
-  opcfamily => 'brin/tid_bloom_ops', opcintype => 'tid', opckeytype => 'tid',
-  opcdefault => 'f'},
 { opcmethod => 'brin', opcname => 'tid_minmax_multi_ops',
   opcfamily => 'brin/tid_minmax_multi_ops', opcintype => 'tid',
   opckeytype => 'tid', opcdefault => 'f' },
@@ -336,108 +309,72 @@
 { opcmethod => 'brin', opcname => 'float4_minmax_multi_ops',
   opcfamily => 'brin/float_minmax_multi_ops', opcintype => 'float4',
   opckeytype => 'float4', opcdefault => 'f' },
-{ opcmethod => 'brin', opcname => 'float4_bloom_ops',
-  opcfamily => 'brin/float_bloom_ops', opcintype => 'float4',
-  opckeytype => 'float4', opcdefault => 'f' },
 { opcmethod => 'brin', opcname => 'float8_minmax_ops',
   opcfamily => 'brin/float_minmax_ops', opcintype => 'float8',
   opckeytype => 'float8' },
 { opcmethod => 'brin', opcname => 'float8_minmax_multi_ops',
   opcfamily => 'brin/float_minmax_multi_ops', opcintype => 'float8',
   opckeytype => 'float8', opcdefault => 'f' },
-{ opcmethod => 'brin', opcname => 'float8_bloom_ops',
-  opcfamily => 'brin/float_bloom_ops', opcintype => 'float8',
-  opckeytype => 'float8', opcdefault => 'f' },
 { opcmethod => 'brin', opcname => 'macaddr_minmax_ops',
   opcfamily => 'brin/macaddr_minmax_ops', opcintype => 'macaddr',
   opckeytype => 'macaddr' },
 { opcmethod => 'brin', opcname => 'macaddr_minmax_multi_ops',
   opcfamily => 'brin/macaddr_minmax_multi_ops', opcintype => 'macaddr',
   opckeytype => 'macaddr', opcdefault => 'f' },
-{ opcmethod => 'brin', opcname => 'macaddr_bloom_ops',
-  opcfamily => 'brin/macaddr_bloom_ops', opcintype => 'macaddr',
-  opckeytype => 'macaddr', opcdefault => 'f' },
 { opcmethod => 'brin', opcname => 'macaddr8_minmax_ops',
   opcfamily => 'brin/macaddr8_minmax_ops', opcintype => 'macaddr8',
   opckeytype => 'macaddr8' },
 { opcmethod => 'brin', opcname => 'macaddr8_minmax_multi_ops',
   opcfamily => 'brin/macaddr8_minmax_multi_ops', opcintype => 'macaddr8',
   opckeytype => 'macaddr8', opcdefault => 'f' },
-{ opcmethod => 'brin', opcname => 'macaddr8_bloom_ops',
-  opcfamily => 'brin/macaddr8_bloom_ops', opcintype => 'macaddr8',
-  opckeytype => 'macaddr8', opcdefault => 'f' },
 { opcmethod => 'brin', opcname => 'inet_minmax_ops',
   opcfamily => 'brin/network_minmax_ops', opcintype => 'inet',
   opcdefault => 'f', opckeytype => 'inet' },
 { opcmethod => 'brin', opcname => 'inet_minmax_multi_ops',
   opcfamily => 'brin/network_minmax_multi_ops', opcintype => 'inet',
   opcdefault => 'f', opckeytype => 'inet', opcdefault => 'f' },
-{ opcmethod => 'brin', opcname => 'inet_bloom_ops',
-  opcfamily => 'brin/network_bloom_ops', opcintype => 'inet',
-  opcdefault => 'f', opckeytype => 'inet', opcdefault => 'f' },
 { opcmethod => 'brin', opcname => 'inet_inclusion_ops',
   opcfamily => 'brin/network_inclusion_ops', opcintype => 'inet',
   opckeytype => 'inet' },
 { opcmethod => 'brin', opcname => 'bpchar_minmax_ops',
   opcfamily => 'brin/bpchar_minmax_ops', opcintype => 'bpchar',
   opckeytype => 'bpchar' },
-{ opcmethod => 'brin', opcname => 'bpchar_bloom_ops',
-  opcfamily => 'brin/bpchar_bloom_ops', opcintype => 'bpchar',
-  opckeytype => 'bpchar', opcdefault => 'f' },
 { opcmethod => 'brin', opcname => 'time_minmax_ops',
   opcfamily => 'brin/time_minmax_ops', opcintype => 'time',
   opckeytype => 'time' },
 { opcmethod => 'brin', opcname => 'time_minmax_multi_ops',
   opcfamily => 'brin/time_minmax_multi_ops', opcintype => 'time',
   opckeytype => 'time', opcdefault => 'f' },
-{ opcmethod => 'brin', opcname => 'time_bloom_ops',
-  opcfamily => 'brin/time_bloom_ops', opcintype => 'time',
-  opckeytype => 'time', opcdefault => 'f' },
 { opcmethod => 'brin', opcname => 'date_minmax_ops',
   opcfamily => 'brin/datetime_minmax_ops', opcintype => 'date',
   opckeytype => 'date' },
 { opcmethod => 'brin', opcname => 'date_minmax_multi_ops',
   opcfamily => 'brin/datetime_minmax_multi_ops', opcintype => 'date',
   opckeytype => 'date', opcdefault => 'f' },
-{ opcmethod => 'brin', opcname => 'date_bloom_ops',
-  opcfamily => 'brin/datetime_bloom_ops', opcintype => 'date',
-  opckeytype => 'date', opcdefault => 'f' },
 { opcmethod => 'brin', opcname => 'timestamp_minmax_ops',
   opcfamily => 'brin/datetime_minmax_ops', opcintype => 'timestamp',
   opckeytype => 'timestamp' },
 { opcmethod => 'brin', opcname => 'timestamp_minmax_multi_ops',
   opcfamily => 'brin/datetime_minmax_multi_ops', opcintype => 'timestamp',
   opckeytype => 'timestamp', opcdefault => 'f' },
-{ opcmethod => 'brin', opcname => 'timestamp_bloom_ops',
-  opcfamily => 'brin/datetime_bloom_ops', opcintype => 'timestamp',
-  opckeytype => 'timestamp', opcdefault => 'f' },
 { opcmethod => 'brin', opcname => 'timestamptz_minmax_ops',
   opcfamily => 'brin/datetime_minmax_ops', opcintype => 'timestamptz',
   opckeytype => 'timestamptz' },
 { opcmethod => 'brin', opcname => 'timestamptz_minmax_multi_ops',
   opcfamily => 'brin/datetime_minmax_multi_ops', opcintype => 'timestamptz',
   opckeytype => 'timestamptz', opcdefault => 'f' },
-{ opcmethod => 'brin', opcname => 'timestamptz_bloom_ops',
-  opcfamily => 'brin/datetime_bloom_ops', opcintype => 'timestamptz',
-  opckeytype => 'timestamptz', opcdefault => 'f' },
 { opcmethod => 'brin', opcname => 'interval_minmax_ops',
   opcfamily => 'brin/interval_minmax_ops', opcintype => 'interval',
   opckeytype => 'interval' },
 { opcmethod => 'brin', opcname => 'interval_minmax_multi_ops',
   opcfamily => 'brin/interval_minmax_multi_ops', opcintype => 'interval',
   opckeytype => 'interval', opcdefault => 'f' },
-{ opcmethod => 'brin', opcname => 'interval_bloom_ops',
-  opcfamily => 'brin/interval_bloom_ops', opcintype => 'interval',
-  opckeytype => 'interval', opcdefault => 'f' },
 { opcmethod => 'brin', opcname => 'timetz_minmax_ops',
   opcfamily => 'brin/timetz_minmax_ops', opcintype => 'timetz',
   opckeytype => 'timetz' },
 { opcmethod => 'brin', opcname => 'timetz_minmax_multi_ops',
   opcfamily => 'brin/timetz_minmax_multi_ops', opcintype => 'timetz',
   opckeytype => 'timetz', opcdefault => 'f' },
-{ opcmethod => 'brin', opcname => 'timetz_bloom_ops',
-  opcfamily => 'brin/timetz_bloom_ops', opcintype => 'timetz',
-  opckeytype => 'timetz', opcdefault => 'f' },
 { opcmethod => 'brin', opcname => 'bit_minmax_ops',
   opcfamily => 'brin/bit_minmax_ops', opcintype => 'bit', opckeytype => 'bit' },
 { opcmethod => 'brin', opcname => 'varbit_minmax_ops',
@@ -449,9 +386,6 @@
 { opcmethod => 'brin', opcname => 'numeric_minmax_multi_ops',
   opcfamily => 'brin/numeric_minmax_multi_ops', opcintype => 'numeric',
   opckeytype => 'numeric', opcdefault => 'f' },
-{ opcmethod => 'brin', opcname => 'numeric_bloom_ops',
-  opcfamily => 'brin/numeric_bloom_ops', opcintype => 'numeric',
-  opckeytype => 'numeric', opcdefault => 'f' },
 
 # no brin opclass for record, anyarray
 
@@ -461,9 +395,6 @@
 { opcmethod => 'brin', opcname => 'uuid_minmax_multi_ops',
   opcfamily => 'brin/uuid_minmax_multi_ops', opcintype => 'uuid',
   opckeytype => 'uuid', opcdefault => 'f' },
-{ opcmethod => 'brin', opcname => 'uuid_bloom_ops',
-  opcfamily => 'brin/uuid_bloom_ops', opcintype => 'uuid',
-  opckeytype => 'uuid', opcdefault => 'f' },
 { opcmethod => 'brin', opcname => 'range_inclusion_ops',
   opcfamily => 'brin/range_inclusion_ops', opcintype => 'anyrange',
   opckeytype => 'anyrange' },
@@ -473,9 +404,6 @@
 { opcmethod => 'brin', opcname => 'pg_lsn_minmax_multi_ops',
   opcfamily => 'brin/pg_lsn_minmax_multi_ops', opcintype => 'pg_lsn',
   opckeytype => 'pg_lsn', opcdefault => 'f' },
-{ opcmethod => 'brin', opcname => 'pg_lsn_bloom_ops',
-  opcfamily => 'brin/pg_lsn_bloom_ops', opcintype => 'pg_lsn',
-  opckeytype => 'pg_lsn', opcdefault => 'f' },
 
 # no brin opclass for enum, tsvector, tsquery, jsonb
 
diff --git a/src/include/catalog/pg_opfamily.dat b/src/include/catalog/pg_opfamily.dat
index 04edca6cb0..6218eade08 100644
--- a/src/include/catalog/pg_opfamily.dat
+++ b/src/include/catalog/pg_opfamily.dat
@@ -184,96 +184,62 @@
   opfmethod => 'brin', opfname => 'integer_minmax_ops' },
 { oid => '4602',
   opfmethod => 'brin', opfname => 'integer_minmax_multi_ops' },
-{ oid => '4572',
-  opfmethod => 'brin', opfname => 'integer_bloom_ops' },
 { oid => '4055',
   opfmethod => 'brin', opfname => 'numeric_minmax_ops' },
 { oid => '4603',
   opfmethod => 'brin', opfname => 'numeric_minmax_multi_ops' },
 { oid => '4056',
   opfmethod => 'brin', opfname => 'text_minmax_ops' },
-{ oid => '4573',
-  opfmethod => 'brin', opfname => 'text_bloom_ops' },
-{ oid => '4574',
-  opfmethod => 'brin', opfname => 'numeric_bloom_ops' },
 { oid => '4058',
   opfmethod => 'brin', opfname => 'timetz_minmax_ops' },
 { oid => '4604',
   opfmethod => 'brin', opfname => 'timetz_minmax_multi_ops' },
-{ oid => '4575',
-  opfmethod => 'brin', opfname => 'timetz_bloom_ops' },
 { oid => '4059',
   opfmethod => 'brin', opfname => 'datetime_minmax_ops' },
 { oid => '4605',
   opfmethod => 'brin', opfname => 'datetime_minmax_multi_ops' },
-{ oid => '4576',
-  opfmethod => 'brin', opfname => 'datetime_bloom_ops' },
 { oid => '4062',
   opfmethod => 'brin', opfname => 'char_minmax_ops' },
-{ oid => '4577',
-  opfmethod => 'brin', opfname => 'char_bloom_ops' },
 { oid => '4064',
   opfmethod => 'brin', opfname => 'bytea_minmax_ops' },
-{ oid => '4578',
-  opfmethod => 'brin', opfname => 'bytea_bloom_ops' },
 { oid => '4065',
   opfmethod => 'brin', opfname => 'name_minmax_ops' },
-{ oid => '4579',
-  opfmethod => 'brin', opfname => 'name_bloom_ops' },
 { oid => '4068',
   opfmethod => 'brin', opfname => 'oid_minmax_ops' },
 { oid => '4606',
   opfmethod => 'brin', opfname => 'oid_minmax_multi_ops' },
-{ oid => '4580',
-  opfmethod => 'brin', opfname => 'oid_bloom_ops' },
 { oid => '4069',
   opfmethod => 'brin', opfname => 'tid_minmax_ops' },
-{ oid => '4581',
-  opfmethod => 'brin', opfname => 'tid_bloom_ops' },
 { oid => '4607',
   opfmethod => 'brin', opfname => 'tid_minmax_multi_ops' },
 { oid => '4070',
   opfmethod => 'brin', opfname => 'float_minmax_ops' },
 { oid => '4608',
   opfmethod => 'brin', opfname => 'float_minmax_multi_ops' },
-{ oid => '4582',
-  opfmethod => 'brin', opfname => 'float_bloom_ops' },
 { oid => '4074',
   opfmethod => 'brin', opfname => 'macaddr_minmax_ops' },
 { oid => '4609',
   opfmethod => 'brin', opfname => 'macaddr_minmax_multi_ops' },
-{ oid => '4583',
-  opfmethod => 'brin', opfname => 'macaddr_bloom_ops' },
 { oid => '4109',
   opfmethod => 'brin', opfname => 'macaddr8_minmax_ops' },
 { oid => '4610',
   opfmethod => 'brin', opfname => 'macaddr8_minmax_multi_ops' },
-{ oid => '4584',
-  opfmethod => 'brin', opfname => 'macaddr8_bloom_ops' },
 { oid => '4075',
   opfmethod => 'brin', opfname => 'network_minmax_ops' },
 { oid => '4611',
   opfmethod => 'brin', opfname => 'network_minmax_multi_ops' },
 { oid => '4102',
   opfmethod => 'brin', opfname => 'network_inclusion_ops' },
-{ oid => '4585',
-  opfmethod => 'brin', opfname => 'network_bloom_ops' },
 { oid => '4076',
   opfmethod => 'brin', opfname => 'bpchar_minmax_ops' },
-{ oid => '4586',
-  opfmethod => 'brin', opfname => 'bpchar_bloom_ops' },
 { oid => '4077',
   opfmethod => 'brin', opfname => 'time_minmax_ops' },
 { oid => '4612',
   opfmethod => 'brin', opfname => 'time_minmax_multi_ops' },
-{ oid => '4587',
-  opfmethod => 'brin', opfname => 'time_bloom_ops' },
 { oid => '4078',
   opfmethod => 'brin', opfname => 'interval_minmax_ops' },
 { oid => '4613',
   opfmethod => 'brin', opfname => 'interval_minmax_multi_ops' },
-{ oid => '4588',
-  opfmethod => 'brin', opfname => 'interval_bloom_ops' },
 { oid => '4079',
   opfmethod => 'brin', opfname => 'bit_minmax_ops' },
 { oid => '4080',
@@ -282,16 +248,12 @@
   opfmethod => 'brin', opfname => 'uuid_minmax_ops' },
 { oid => '4614',
   opfmethod => 'brin', opfname => 'uuid_minmax_multi_ops' },
-{ oid => '4589',
-  opfmethod => 'brin', opfname => 'uuid_bloom_ops' },
 { oid => '4103',
   opfmethod => 'brin', opfname => 'range_inclusion_ops' },
 { oid => '4082',
   opfmethod => 'brin', opfname => 'pg_lsn_minmax_ops' },
 { oid => '4615',
   opfmethod => 'brin', opfname => 'pg_lsn_minmax_multi_ops' },
-{ oid => '4590',
-  opfmethod => 'brin', opfname => 'pg_lsn_bloom_ops' },
 { oid => '4104',
   opfmethod => 'brin', opfname => 'box_inclusion_ops' },
 { oid => '5000',
diff --git a/src/include/catalog/pg_proc.dat b/src/include/catalog/pg_proc.dat
index 183358c1ba..cb7d421d5a 100644
--- a/src/include/catalog/pg_proc.dat
+++ b/src/include/catalog/pg_proc.dat
@@ -8309,26 +8309,6 @@
   proargtypes => 'internal internal internal',
   prosrc => 'brin_inclusion_union' },
 
-# BRIN bloom
-{ oid => '4591', descr => 'BRIN bloom support',
-  proname => 'brin_bloom_opcinfo', prorettype => 'internal',
-  proargtypes => 'internal', prosrc => 'brin_bloom_opcinfo' },
-{ oid => '4592', descr => 'BRIN bloom support',
-  proname => 'brin_bloom_add_value', prorettype => 'bool',
-  proargtypes => 'internal internal internal internal',
-  prosrc => 'brin_bloom_add_value' },
-{ oid => '4593', descr => 'BRIN bloom support',
-  proname => 'brin_bloom_consistent', prorettype => 'bool',
-  proargtypes => 'internal internal internal int4',
-  prosrc => 'brin_bloom_consistent' },
-{ oid => '4594', descr => 'BRIN bloom support',
-  proname => 'brin_bloom_union', prorettype => 'bool',
-  proargtypes => 'internal internal internal',
-  prosrc => 'brin_bloom_union' },
-{ oid => '4595', descr => 'BRIN bloom support',
-  proname => 'brin_bloom_options', prorettype => 'void', proisstrict => 'f',
-  proargtypes => 'internal', prosrc => 'brin_bloom_options' },
-
 # userlock replacements
 { oid => '2880', descr => 'obtain exclusive advisory lock',
   proname => 'pg_advisory_lock', provolatile => 'v', proparallel => 'r',
@@ -11502,20 +11482,6 @@
   proname => 'is_normalized', prorettype => 'bool', proargtypes => 'text text',
   prosrc => 'unicode_is_normalized' },
 
-{ oid => '4596', descr => 'I/O',
-  proname => 'brin_bloom_summary_in', prorettype => 'pg_brin_bloom_summary',
-  proargtypes => 'cstring', prosrc => 'brin_bloom_summary_in' },
-{ oid => '4597', descr => 'I/O',
-  proname => 'brin_bloom_summary_out', prorettype => 'cstring',
-  proargtypes => 'pg_brin_bloom_summary', prosrc => 'brin_bloom_summary_out' },
-{ oid => '4598', descr => 'I/O',
-  proname => 'brin_bloom_summary_recv', provolatile => 's',
-  prorettype => 'pg_brin_bloom_summary', proargtypes => 'internal',
-  prosrc => 'brin_bloom_summary_recv' },
-{ oid => '4599', descr => 'I/O',
-  proname => 'brin_bloom_summary_send', provolatile => 's', prorettype => 'bytea',
-  proargtypes => 'pg_brin_bloom_summary', prosrc => 'brin_bloom_summary_send' },
-
 { oid => '4638', descr => 'I/O',
   proname => 'brin_minmax_multi_summary_in', prorettype => 'pg_brin_minmax_multi_summary',
   proargtypes => 'cstring', prosrc => 'brin_minmax_multi_summary_in' },
diff --git a/src/include/catalog/pg_type.dat b/src/include/catalog/pg_type.dat
index 8c145c00be..387d25d66a 100644
--- a/src/include/catalog/pg_type.dat
+++ b/src/include/catalog/pg_type.dat
@@ -679,12 +679,6 @@
   typtype => 'p', typcategory => 'P', typinput => 'anycompatiblemultirange_in',
   typoutput => 'anycompatiblemultirange_out', typreceive => '-', typsend => '-',
   typalign => 'd', typstorage => 'x' },
-{ oid => '4600',
-  descr => 'BRIN bloom summary',
-  typname => 'pg_brin_bloom_summary', typlen => '-1', typbyval => 'f', typcategory => 'S',
-  typinput => 'brin_bloom_summary_in', typoutput => 'brin_bloom_summary_out',
-  typreceive => 'brin_bloom_summary_recv', typsend => 'brin_bloom_summary_send',
-  typalign => 'i', typstorage => 'x', typcollation => 'default' },
 { oid => '4601',
   descr => 'BRIN minmax-multi summary',
   typname => 'pg_brin_minmax_multi_summary', typlen => '-1', typbyval => 'f', typcategory => 'S',
diff --git a/src/test/regress/expected/opr_sanity.out b/src/test/regress/expected/opr_sanity.out
index ef4b4444b9..254ca06d3d 100644
--- a/src/test/regress/expected/opr_sanity.out
+++ b/src/test/regress/expected/opr_sanity.out
@@ -2037,7 +2037,6 @@ ORDER BY 1, 2, 3;
        2742 |           16 | @@
        3580 |            1 | <
        3580 |            1 | <<
-       3580 |            1 | =
        3580 |            2 | &<
        3580 |            2 | <=
        3580 |            3 | &&
@@ -2101,7 +2100,7 @@ ORDER BY 1, 2, 3;
        4000 |           28 | ^@
        4000 |           29 | <^
        4000 |           30 | >^
-(124 rows)
+(123 rows)
 
 -- Check that all opclass search operators have selectivity estimators.
 -- This is not absolutely required, but it seems a reasonable thing
diff --git a/src/test/regress/expected/psql.out b/src/test/regress/expected/psql.out
index 76050af797..ee45e37b84 100644
--- a/src/test/regress/expected/psql.out
+++ b/src/test/regress/expected/psql.out
@@ -4993,10 +4993,9 @@ List of access methods
                       List of operator classes
   AM  | Input type | Storage type |    Operator class    | Default? 
 ------+------------+--------------+----------------------+----------
- brin | oid        |              | oid_bloom_ops        | no
  brin | oid        |              | oid_minmax_multi_ops | no
  brin | oid        |              | oid_minmax_ops       | yes
-(3 rows)
+(2 rows)
 
 \dAf spgist
           List of operator families
diff --git a/src/test/regress/expected/type_sanity.out b/src/test/regress/expected/type_sanity.out
index 5480f979c6..26f4b6097b 100644
--- a/src/test/regress/expected/type_sanity.out
+++ b/src/test/regress/expected/type_sanity.out
@@ -72,10 +72,9 @@ ORDER BY p1.oid;
   194 | pg_node_tree
  3361 | pg_ndistinct
  3402 | pg_dependencies
- 4600 | pg_brin_bloom_summary
  4601 | pg_brin_minmax_multi_summary
  5017 | pg_mcv_list
-(6 rows)
+(5 rows)
 
 -- Make sure typarray points to a "true" array type of our own base
 SELECT p1.oid, p1.typname as basetype, p2.typname as arraytype,
diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule
index c6e49affeb..1c6bbfcf54 100644
--- a/src/test/regress/parallel_schedule
+++ b/src/test/regress/parallel_schedule
@@ -80,7 +80,7 @@ test: brin gin gist spgist privileges init_privs security_label collate matview
 # ----------
 # Additional BRIN tests
 # ----------
-test: brin_bloom brin_multi
+test: brin_multi
 
 # ----------
 # Another group of parallel tests
diff --git a/src/test/regress/serial_schedule b/src/test/regress/serial_schedule
index 1d7eb418a7..dd3f3a9f0b 100644
--- a/src/test/regress/serial_schedule
+++ b/src/test/regress/serial_schedule
@@ -108,7 +108,6 @@ test: delete
 test: namespace
 test: prepared_xacts
 test: brin
-test: brin_bloom
 test: brin_multi
 test: gin
 test: gist
-- 
2.30.2

