PostgreSQLのコア配布物には、表 71.1で示されるBRIN演算子クラスが含まれます。
minmax演算子クラスは、インデックスが貼られた列の範囲内に現れる最小値と最大値を格納します。 inclusion演算子クラスは、インデックスが貼られた列の範囲内に含まれる値を格納します。 bloom演算子クラスは、その範囲内のすべての値に対してブルームフィルタを構築します。 minmax-multi演算子クラスは、インデックスが貼られた列の範囲内に現れる複数の最小値と最大値、代表値を格納します。
表71.1 組み込みBRIN演算子クラス
| 名前 | インデックス可能な演算子 | 
|---|---|
| bit_minmax_ops | = (bit,bit) | 
| < (bit,bit) | |
| > (bit,bit) | |
| <= (bit,bit) | |
| >= (bit,bit) | |
| box_inclusion_ops | @> (box,point) | 
| << (box,box) | |
| &< (box,box) | |
| &> (box,box) | |
| >> (box,box) | |
| <@ (box,box) | |
| @> (box,box) | |
| ~= (box,box) | |
| && (box,box) | |
| <<| (box,box) | |
| &<| (box,box) | |
| |&> (box,box) | |
| |>> (box,box) | |
| bpchar_bloom_ops | = (character,character) | 
| bpchar_minmax_ops | = (character,character) | 
| < (character,character) | |
| <= (character,character) | |
| > (character,character) | |
| >= (character,character) | |
| bytea_bloom_ops | = (bytea,bytea) | 
| bytea_minmax_ops | = (bytea,bytea) | 
| < (bytea,bytea) | |
| <= (bytea,bytea) | |
| > (bytea,bytea) | |
| >= (bytea,bytea) | |
| char_bloom_ops | = ("char","char") | 
| char_minmax_ops | = ("char","char") | 
| < ("char","char") | |
| <= ("char","char") | |
| > ("char","char") | |
| >= ("char","char") | |
| date_bloom_ops | = (date,date) | 
| date_minmax_ops | = (date,date) | 
| < (date,date) | |
| <= (date,date) | |
| > (date,date) | |
| >= (date,date) | |
| date_minmax_multi_ops | = (date,date) | 
| < (date,date) | |
| <= (date,date) | |
| > (date,date) | |
| >= (date,date) | |
| float4_bloom_ops | = (float4,float4) | 
| float4_minmax_ops | = (float4,float4) | 
| < (float4,float4) | |
| > (float4,float4) | |
| <= (float4,float4) | |
| >= (float4,float4) | |
| float4_minmax_multi_ops | = (float4,float4) | 
| < (float4,float4) | |
| > (float4,float4) | |
| <= (float4,float4) | |
| >= (float4,float4) | |
| float8_bloom_ops | = (float8,float8) | 
| float8_minmax_ops | = (float8,float8) | 
| < (float8,float8) | |
| <= (float8,float8) | |
| > (float8,float8) | |
| >= (float8,float8) | |
| float8_minmax_multi_ops | = (float8,float8) | 
| < (float8,float8) | |
| <= (float8,float8) | |
| > (float8,float8) | |
| >= (float8,float8) | |
| inet_inclusion_ops | << (inet,inet) | 
| <<= (inet,inet) | |
| >> (inet,inet) | |
| >>= (inet,inet) | |
| = (inet,inet) | |
| && (inet,inet) | |
| inet_bloom_ops | = (inet,inet) | 
| inet_minmax_ops | = (inet,inet) | 
| < (inet,inet) | |
| <= (inet,inet) | |
| > (inet,inet) | |
| >= (inet,inet) | |
| inet_minmax_multi_ops | = (inet,inet) | 
| < (inet,inet) | |
| <= (inet,inet) | |
| > (inet,inet) | |
| >= (inet,inet) | |
| int2_bloom_ops | = (int2,int2) | 
| int2_minmax_ops | = (int2,int2) | 
| < (int2,int2) | |
| > (int2,int2) | |
| <= (int2,int2) | |
| >= (int2,int2) | |
| int2_minmax_multi_ops | = (int2,int2) | 
| < (int2,int2) | |
| > (int2,int2) | |
| <= (int2,int2) | |
| >= (int2,int2) | |
| int4_bloom_ops | = (int4,int4) | 
| int4_minmax_ops | = (int4,int4) | 
| < (int4,int4) | |
| > (int4,int4) | |
| <= (int4,int4) | |
| >= (int4,int4) | |
| int4_minmax_multi_ops | = (int4,int4) | 
| < (int4,int4) | |
| > (int4,int4) | |
| <= (int4,int4) | |
| >= (int4,int4) | |
| int8_bloom_ops | = (bigint,bigint) | 
| int8_minmax_ops | = (bigint,bigint) | 
| < (bigint,bigint) | |
| > (bigint,bigint) | |
| <= (bigint,bigint) | |
| >= (bigint,bigint) | |
| int8_minmax_multi_ops | = (bigint,bigint) | 
| < (bigint,bigint) | |
| > (bigint,bigint) | |
| <= (bigint,bigint) | |
| >= (bigint,bigint) | |
| interval_bloom_ops | = (interval,interval) | 
| interval_minmax_ops | = (interval,interval) | 
| < (interval,interval) | |
| <= (interval,interval) | |
| > (interval,interval) | |
| >= (interval,interval) | |
| interval_minmax_multi_ops | = (interval,interval) | 
| < (interval,interval) | |
| <= (interval,interval) | |
| > (interval,interval) | |
| >= (interval,interval) | |
| macaddr_bloom_ops | = (macaddr,macaddr) | 
| macaddr_minmax_ops | = (macaddr,macaddr) | 
| < (macaddr,macaddr) | |
| <= (macaddr,macaddr) | |
| > (macaddr,macaddr) | |
| >= (macaddr,macaddr) | |
| macaddr_minmax_multi_ops | = (macaddr,macaddr) | 
| < (macaddr,macaddr) | |
| <= (macaddr,macaddr) | |
| > (macaddr,macaddr) | |
| >= (macaddr,macaddr) | |
| macaddr8_bloom_ops | = (macaddr8,macaddr8) | 
| macaddr8_minmax_ops | = (macaddr8,macaddr8) | 
| < (macaddr8,macaddr8) | |
| <= (macaddr8,macaddr8) | |
| > (macaddr8,macaddr8) | |
| >= (macaddr8,macaddr8) | |
| macaddr8_minmax_multi_ops | = (macaddr8,macaddr8) | 
| < (macaddr8,macaddr8) | |
| <= (macaddr8,macaddr8) | |
| > (macaddr8,macaddr8) | |
| >= (macaddr8,macaddr8) | |
| name_bloom_ops | = (name,name) | 
| name_minmax_ops | = (name,name) | 
| < (name,name) | |
| <= (name,name) | |
| > (name,name) | |
| >= (name,name) | |
| numeric_bloom_ops | = (numeric,numeric) | 
| numeric_minmax_ops | = (numeric,numeric) | 
| < (numeric,numeric) | |
| <= (numeric,numeric) | |
| > (numeric,numeric) | |
| >= (numeric,numeric) | |
| numeric_minmax_multi_ops | = (numeric,numeric) | 
| < (numeric,numeric) | |
| <= (numeric,numeric) | |
| > (numeric,numeric) | |
| >= (numeric,numeric) | |
| oid_bloom_ops | = (oid,oid) | 
| oid_minmax_ops | = (oid,oid) | 
| < (oid,oid) | |
| > (oid,oid) | |
| <= (oid,oid) | |
| >= (oid,oid) | |
| oid_minmax_multi_ops | = (oid,oid) | 
| < (oid,oid) | |
| > (oid,oid) | |
| <= (oid,oid) | |
| >= (oid,oid) | |
| pg_lsn_bloom_ops | = (pg_lsn,pg_lsn) | 
| pg_lsn_minmax_ops | = (pg_lsn,pg_lsn) | 
| < (pg_lsn,pg_lsn) | |
| > (pg_lsn,pg_lsn) | |
| <= (pg_lsn,pg_lsn) | |
| >= (pg_lsn,pg_lsn) | |
| pg_lsn_minmax_multi_ops | = (pg_lsn,pg_lsn) | 
| < (pg_lsn,pg_lsn) | |
| > (pg_lsn,pg_lsn) | |
| <= (pg_lsn,pg_lsn) | |
| >= (pg_lsn,pg_lsn) | |
| range_inclusion_ops | = (anyrange,anyrange) | 
| < (anyrange,anyrange) | |
| <= (anyrange,anyrange) | |
| >= (anyrange,anyrange) | |
| > (anyrange,anyrange) | |
| && (anyrange,anyrange) | |
| @> (anyrange,anyelement) | |
| @> (anyrange,anyrange) | |
| <@ (anyrange,anyrange) | |
| << (anyrange,anyrange) | |
| >> (anyrange,anyrange) | |
| &< (anyrange,anyrange) | |
| &> (anyrange,anyrange) | |
| -|- (anyrange,anyrange) | |
| text_bloom_ops | = (text,text) | 
| text_minmax_ops | = (text,text) | 
| < (text,text) | |
| <= (text,text) | |
| > (text,text) | |
| >= (text,text) | |
| tid_bloom_ops | = (tid,tid) | 
| tid_minmax_ops | = (tid,tid) | 
| < (tid,tid) | |
| > (tid,tid) | |
| <= (tid,tid) | |
| >= (tid,tid) | |
| tid_minmax_multi_ops | = (tid,tid) | 
| < (tid,tid) | |
| > (tid,tid) | |
| <= (tid,tid) | |
| >= (tid,tid) | |
| timestamp_bloom_ops | = (timestamp,timestamp) | 
| timestamp_minmax_ops | = (timestamp,timestamp) | 
| < (timestamp,timestamp) | |
| <= (timestamp,timestamp) | |
| > (timestamp,timestamp) | |
| >= (timestamp,timestamp) | |
| timestamp_minmax_multi_ops | = (timestamp,timestamp) | 
| < (timestamp,timestamp) | |
| <= (timestamp,timestamp) | |
| > (timestamp,timestamp) | |
| >= (timestamp,timestamp) | |
| timestamptz_bloom_ops | = (timestamptz,timestamptz) | 
| timestamptz_minmax_ops | = (timestamptz,timestamptz) | 
| < (timestamptz,timestamptz) | |
| <= (timestamptz,timestamptz) | |
| > (timestamptz,timestamptz) | |
| >= (timestamptz,timestamptz) | |
| timestamptz_minmax_multi_ops | = (timestamptz,timestamptz) | 
| < (timestamptz,timestamptz) | |
| <= (timestamptz,timestamptz) | |
| > (timestamptz,timestamptz) | |
| >= (timestamptz,timestamptz) | |
| time_bloom_ops | = (time,time) | 
| time_minmax_ops | = (time,time) | 
| < (time,time) | |
| <= (time,time) | |
| > (time,time) | |
| >= (time,time) | |
| time_minmax_multi_ops | = (time,time) | 
| < (time,time) | |
| <= (time,time) | |
| > (time,time) | |
| >= (time,time) | |
| timetz_bloom_ops | = (timetz,timetz) | 
| timetz_minmax_ops | = (timetz,timetz) | 
| < (timetz,timetz) | |
| <= (timetz,timetz) | |
| > (timetz,timetz) | |
| >= (timetz,timetz) | |
| timetz_minmax_multi_ops | = (timetz,timetz) | 
| < (timetz,timetz) | |
| <= (timetz,timetz) | |
| > (timetz,timetz) | |
| >= (timetz,timetz) | |
| uuid_bloom_ops | = (uuid,uuid) | 
| uuid_minmax_ops | = (uuid,uuid) | 
| < (uuid,uuid) | |
| > (uuid,uuid) | |
| <= (uuid,uuid) | |
| >= (uuid,uuid) | |
| uuid_minmax_multi_ops | = (uuid,uuid) | 
| < (uuid,uuid) | |
| > (uuid,uuid) | |
| <= (uuid,uuid) | |
| >= (uuid,uuid) | |
| varbit_minmax_ops | = (varbit,varbit) | 
| < (varbit,varbit) | |
| > (varbit,varbit) | |
| <= (varbit,varbit) | |
| >= (varbit,varbit) | 
いくつかの組み込み演算子クラスは演算子クラスの振舞いに影響するパラメータを指定できます。
それぞれの演算子クラスで、指定できる独自のパラメータ群があります。
bloom演算子クラスとminmax-multi演算子クラスのみ特定のパラメータが指定できます。
   
bloom演算子クラスでは次のパラメータを受け取ります。
n_distinct_per_range
BRINブルームインデックスでブルームフィルタのサイズ設定に使用される、ブロックレンジ内の重複しない非NULL値の推定数を定義します。
これは、ALTER TABLEのn_distinctオプションと同様に動作します。
正の値に設定された場合、各ブロックレンジにはこの数の重複しない非NULL値が含まれているとみなされます。
負の値に設定された場合、重複しない非NULL値の数はブロックレンジ内でのタプルの最大数(ブロックあたり約290行)に比例して増加するとみなされ、-1以上である必要があります。
デフォルト値は-0.1で、重複しない非NULL値の最小数は16です。
    
false_positive_rateブルームフィルタのサイズ設定のためにBRINブルームインデックスによって使用される、必要な偽陽性率を定義します。 値は0.0001から0.25の間でなければなりません。デフォルト値は0.01で、これは1%の偽陽性率です。
minmax-multi演算子クラスでは次のパラメータを受け取ります。
values_per_rangeブロック範囲を集計するためにBRIN minmaxインデックスによって格納される値の最大数を定義します。 各値は、点または区間の境界として表すこともできます。値は8から256の間である必要があり、デフォルト値は32です。