#----------------------------------------------------------------------
#
# pg_amop.dat
#    Initial contents of the pg_amop system catalog.
#
# Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
# Portions Copyright (c) 1994, Regents of the University of California
#
# src/include/catalog/pg_amop.dat
#
#----------------------------------------------------------------------

[

# btree integer_ops

# default operators int2
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2',
  amoprighttype => 'int2', amopstrategy => '1', amopopr => '<(int2,int2)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2',
  amoprighttype => 'int2', amopstrategy => '2', amopopr => '<=(int2,int2)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2',
  amoprighttype => 'int2', amopstrategy => '3', amopopr => '=(int2,int2)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2',
  amoprighttype => 'int2', amopstrategy => '4', amopopr => '>=(int2,int2)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2',
  amoprighttype => 'int2', amopstrategy => '5', amopopr => '>(int2,int2)',
  amopmethod => 'btree' },

# crosstype operators int24
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2',
  amoprighttype => 'int4', amopstrategy => '1', amopopr => '<(int2,int4)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2',
  amoprighttype => 'int4', amopstrategy => '2', amopopr => '<=(int2,int4)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2',
  amoprighttype => 'int4', amopstrategy => '3', amopopr => '=(int2,int4)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2',
  amoprighttype => 'int4', amopstrategy => '4', amopopr => '>=(int2,int4)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2',
  amoprighttype => 'int4', amopstrategy => '5', amopopr => '>(int2,int4)',
  amopmethod => 'btree' },

# crosstype operators int28
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2',
  amoprighttype => 'int8', amopstrategy => '1', amopopr => '<(int2,int8)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2',
  amoprighttype => 'int8', amopstrategy => '2', amopopr => '<=(int2,int8)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2',
  amoprighttype => 'int8', amopstrategy => '3', amopopr => '=(int2,int8)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2',
  amoprighttype => 'int8', amopstrategy => '4', amopopr => '>=(int2,int8)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int2',
  amoprighttype => 'int8', amopstrategy => '5', amopopr => '>(int2,int8)',
  amopmethod => 'btree' },

# default operators int4
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4',
  amoprighttype => 'int4', amopstrategy => '1', amopopr => '<(int4,int4)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4',
  amoprighttype => 'int4', amopstrategy => '2', amopopr => '<=(int4,int4)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4',
  amoprighttype => 'int4', amopstrategy => '3', amopopr => '=(int4,int4)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4',
  amoprighttype => 'int4', amopstrategy => '4', amopopr => '>=(int4,int4)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4',
  amoprighttype => 'int4', amopstrategy => '5', amopopr => '>(int4,int4)',
  amopmethod => 'btree' },

# crosstype operators int42
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4',
  amoprighttype => 'int2', amopstrategy => '1', amopopr => '<(int4,int2)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4',
  amoprighttype => 'int2', amopstrategy => '2', amopopr => '<=(int4,int2)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4',
  amoprighttype => 'int2', amopstrategy => '3', amopopr => '=(int4,int2)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4',
  amoprighttype => 'int2', amopstrategy => '4', amopopr => '>=(int4,int2)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4',
  amoprighttype => 'int2', amopstrategy => '5', amopopr => '>(int4,int2)',
  amopmethod => 'btree' },

# crosstype operators int48
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4',
  amoprighttype => 'int8', amopstrategy => '1', amopopr => '<(int4,int8)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4',
  amoprighttype => 'int8', amopstrategy => '2', amopopr => '<=(int4,int8)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4',
  amoprighttype => 'int8', amopstrategy => '3', amopopr => '=(int4,int8)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4',
  amoprighttype => 'int8', amopstrategy => '4', amopopr => '>=(int4,int8)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int4',
  amoprighttype => 'int8', amopstrategy => '5', amopopr => '>(int4,int8)',
  amopmethod => 'btree' },

# default operators int8
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8',
  amoprighttype => 'int8', amopstrategy => '1', amopopr => '<(int8,int8)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8',
  amoprighttype => 'int8', amopstrategy => '2', amopopr => '<=(int8,int8)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8',
  amoprighttype => 'int8', amopstrategy => '3', amopopr => '=(int8,int8)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8',
  amoprighttype => 'int8', amopstrategy => '4', amopopr => '>=(int8,int8)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8',
  amoprighttype => 'int8', amopstrategy => '5', amopopr => '>(int8,int8)',
  amopmethod => 'btree' },

# crosstype operators int82
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8',
  amoprighttype => 'int2', amopstrategy => '1', amopopr => '<(int8,int2)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8',
  amoprighttype => 'int2', amopstrategy => '2', amopopr => '<=(int8,int2)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8',
  amoprighttype => 'int2', amopstrategy => '3', amopopr => '=(int8,int2)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8',
  amoprighttype => 'int2', amopstrategy => '4', amopopr => '>=(int8,int2)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8',
  amoprighttype => 'int2', amopstrategy => '5', amopopr => '>(int8,int2)',
  amopmethod => 'btree' },

# crosstype operators int84
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8',
  amoprighttype => 'int4', amopstrategy => '1', amopopr => '<(int8,int4)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8',
  amoprighttype => 'int4', amopstrategy => '2', amopopr => '<=(int8,int4)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8',
  amoprighttype => 'int4', amopstrategy => '3', amopopr => '=(int8,int4)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8',
  amoprighttype => 'int4', amopstrategy => '4', amopopr => '>=(int8,int4)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/integer_ops', amoplefttype => 'int8',
  amoprighttype => 'int4', amopstrategy => '5', amopopr => '>(int8,int4)',
  amopmethod => 'btree' },

# btree oid_ops

{ amopfamily => 'btree/oid_ops', amoplefttype => 'oid', amoprighttype => 'oid',
  amopstrategy => '1', amopopr => '<(oid,oid)', amopmethod => 'btree' },
{ amopfamily => 'btree/oid_ops', amoplefttype => 'oid', amoprighttype => 'oid',
  amopstrategy => '2', amopopr => '<=(oid,oid)', amopmethod => 'btree' },
{ amopfamily => 'btree/oid_ops', amoplefttype => 'oid', amoprighttype => 'oid',
  amopstrategy => '3', amopopr => '=(oid,oid)', amopmethod => 'btree' },
{ amopfamily => 'btree/oid_ops', amoplefttype => 'oid', amoprighttype => 'oid',
  amopstrategy => '4', amopopr => '>=(oid,oid)', amopmethod => 'btree' },
{ amopfamily => 'btree/oid_ops', amoplefttype => 'oid', amoprighttype => 'oid',
  amopstrategy => '5', amopopr => '>(oid,oid)', amopmethod => 'btree' },

# btree xid8_ops

{ amopfamily => 'btree/xid8_ops', amoplefttype => 'xid8',
  amoprighttype => 'xid8', amopstrategy => '1', amopopr => '<(xid8,xid8)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/xid8_ops', amoplefttype => 'xid8',
  amoprighttype => 'xid8', amopstrategy => '2', amopopr => '<=(xid8,xid8)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/xid8_ops', amoplefttype => 'xid8',
  amoprighttype => 'xid8', amopstrategy => '3', amopopr => '=(xid8,xid8)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/xid8_ops', amoplefttype => 'xid8',
  amoprighttype => 'xid8', amopstrategy => '4', amopopr => '>=(xid8,xid8)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/xid8_ops', amoplefttype => 'xid8',
  amoprighttype => 'xid8', amopstrategy => '5', amopopr => '>(xid8,xid8)',
  amopmethod => 'btree' },

# btree tid_ops

{ amopfamily => 'btree/tid_ops', amoplefttype => 'tid', amoprighttype => 'tid',
  amopstrategy => '1', amopopr => '<(tid,tid)', amopmethod => 'btree' },
{ amopfamily => 'btree/tid_ops', amoplefttype => 'tid', amoprighttype => 'tid',
  amopstrategy => '2', amopopr => '<=(tid,tid)', amopmethod => 'btree' },
{ amopfamily => 'btree/tid_ops', amoplefttype => 'tid', amoprighttype => 'tid',
  amopstrategy => '3', amopopr => '=(tid,tid)', amopmethod => 'btree' },
{ amopfamily => 'btree/tid_ops', amoplefttype => 'tid', amoprighttype => 'tid',
  amopstrategy => '4', amopopr => '>=(tid,tid)', amopmethod => 'btree' },
{ amopfamily => 'btree/tid_ops', amoplefttype => 'tid', amoprighttype => 'tid',
  amopstrategy => '5', amopopr => '>(tid,tid)', amopmethod => 'btree' },

# btree oidvector_ops

{ amopfamily => 'btree/oidvector_ops', amoplefttype => 'oidvector',
  amoprighttype => 'oidvector', amopstrategy => '1',
  amopopr => '<(oidvector,oidvector)', amopmethod => 'btree' },
{ amopfamily => 'btree/oidvector_ops', amoplefttype => 'oidvector',
  amoprighttype => 'oidvector', amopstrategy => '2',
  amopopr => '<=(oidvector,oidvector)', amopmethod => 'btree' },
{ amopfamily => 'btree/oidvector_ops', amoplefttype => 'oidvector',
  amoprighttype => 'oidvector', amopstrategy => '3',
  amopopr => '=(oidvector,oidvector)', amopmethod => 'btree' },
{ amopfamily => 'btree/oidvector_ops', amoplefttype => 'oidvector',
  amoprighttype => 'oidvector', amopstrategy => '4',
  amopopr => '>=(oidvector,oidvector)', amopmethod => 'btree' },
{ amopfamily => 'btree/oidvector_ops', amoplefttype => 'oidvector',
  amoprighttype => 'oidvector', amopstrategy => '5',
  amopopr => '>(oidvector,oidvector)', amopmethod => 'btree' },

# btree float_ops

# default operators float4
{ amopfamily => 'btree/float_ops', amoplefttype => 'float4',
  amoprighttype => 'float4', amopstrategy => '1', amopopr => '<(float4,float4)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/float_ops', amoplefttype => 'float4',
  amoprighttype => 'float4', amopstrategy => '2',
  amopopr => '<=(float4,float4)', amopmethod => 'btree' },
{ amopfamily => 'btree/float_ops', amoplefttype => 'float4',
  amoprighttype => 'float4', amopstrategy => '3', amopopr => '=(float4,float4)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/float_ops', amoplefttype => 'float4',
  amoprighttype => 'float4', amopstrategy => '4',
  amopopr => '>=(float4,float4)', amopmethod => 'btree' },
{ amopfamily => 'btree/float_ops', amoplefttype => 'float4',
  amoprighttype => 'float4', amopstrategy => '5', amopopr => '>(float4,float4)',
  amopmethod => 'btree' },

# crosstype operators float48
{ amopfamily => 'btree/float_ops', amoplefttype => 'float4',
  amoprighttype => 'float8', amopstrategy => '1', amopopr => '<(float4,float8)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/float_ops', amoplefttype => 'float4',
  amoprighttype => 'float8', amopstrategy => '2',
  amopopr => '<=(float4,float8)', amopmethod => 'btree' },
{ amopfamily => 'btree/float_ops', amoplefttype => 'float4',
  amoprighttype => 'float8', amopstrategy => '3', amopopr => '=(float4,float8)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/float_ops', amoplefttype => 'float4',
  amoprighttype => 'float8', amopstrategy => '4',
  amopopr => '>=(float4,float8)', amopmethod => 'btree' },
{ amopfamily => 'btree/float_ops', amoplefttype => 'float4',
  amoprighttype => 'float8', amopstrategy => '5', amopopr => '>(float4,float8)',
  amopmethod => 'btree' },

# default operators float8
{ amopfamily => 'btree/float_ops', amoplefttype => 'float8',
  amoprighttype => 'float8', amopstrategy => '1', amopopr => '<(float8,float8)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/float_ops', amoplefttype => 'float8',
  amoprighttype => 'float8', amopstrategy => '2',
  amopopr => '<=(float8,float8)', amopmethod => 'btree' },
{ amopfamily => 'btree/float_ops', amoplefttype => 'float8',
  amoprighttype => 'float8', amopstrategy => '3', amopopr => '=(float8,float8)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/float_ops', amoplefttype => 'float8',
  amoprighttype => 'float8', amopstrategy => '4',
  amopopr => '>=(float8,float8)', amopmethod => 'btree' },
{ amopfamily => 'btree/float_ops', amoplefttype => 'float8',
  amoprighttype => 'float8', amopstrategy => '5', amopopr => '>(float8,float8)',
  amopmethod => 'btree' },

# crosstype operators float84
{ amopfamily => 'btree/float_ops', amoplefttype => 'float8',
  amoprighttype => 'float4', amopstrategy => '1', amopopr => '<(float8,float4)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/float_ops', amoplefttype => 'float8',
  amoprighttype => 'float4', amopstrategy => '2',
  amopopr => '<=(float8,float4)', amopmethod => 'btree' },
{ amopfamily => 'btree/float_ops', amoplefttype => 'float8',
  amoprighttype => 'float4', amopstrategy => '3', amopopr => '=(float8,float4)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/float_ops', amoplefttype => 'float8',
  amoprighttype => 'float4', amopstrategy => '4',
  amopopr => '>=(float8,float4)', amopmethod => 'btree' },
{ amopfamily => 'btree/float_ops', amoplefttype => 'float8',
  amoprighttype => 'float4', amopstrategy => '5', amopopr => '>(float8,float4)',
  amopmethod => 'btree' },

# btree char_ops

{ amopfamily => 'btree/char_ops', amoplefttype => 'char',
  amoprighttype => 'char', amopstrategy => '1', amopopr => '<(char,char)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/char_ops', amoplefttype => 'char',
  amoprighttype => 'char', amopstrategy => '2', amopopr => '<=(char,char)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/char_ops', amoplefttype => 'char',
  amoprighttype => 'char', amopstrategy => '3', amopopr => '=(char,char)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/char_ops', amoplefttype => 'char',
  amoprighttype => 'char', amopstrategy => '4', amopopr => '>=(char,char)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/char_ops', amoplefttype => 'char',
  amoprighttype => 'char', amopstrategy => '5', amopopr => '>(char,char)',
  amopmethod => 'btree' },

# btree text_ops

{ amopfamily => 'btree/text_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '1', amopopr => '<(text,text)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '2', amopopr => '<=(text,text)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '3', amopopr => '=(text,text)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '4', amopopr => '>=(text,text)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '5', amopopr => '>(text,text)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_ops', amoplefttype => 'name',
  amoprighttype => 'name', amopstrategy => '1', amopopr => '<(name,name)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_ops', amoplefttype => 'name',
  amoprighttype => 'name', amopstrategy => '2', amopopr => '<=(name,name)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_ops', amoplefttype => 'name',
  amoprighttype => 'name', amopstrategy => '3', amopopr => '=(name,name)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_ops', amoplefttype => 'name',
  amoprighttype => 'name', amopstrategy => '4', amopopr => '>=(name,name)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_ops', amoplefttype => 'name',
  amoprighttype => 'name', amopstrategy => '5', amopopr => '>(name,name)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_ops', amoplefttype => 'name',
  amoprighttype => 'text', amopstrategy => '1', amopopr => '<(name,text)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_ops', amoplefttype => 'name',
  amoprighttype => 'text', amopstrategy => '2', amopopr => '<=(name,text)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_ops', amoplefttype => 'name',
  amoprighttype => 'text', amopstrategy => '3', amopopr => '=(name,text)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_ops', amoplefttype => 'name',
  amoprighttype => 'text', amopstrategy => '4', amopopr => '>=(name,text)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_ops', amoplefttype => 'name',
  amoprighttype => 'text', amopstrategy => '5', amopopr => '>(name,text)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_ops', amoplefttype => 'text',
  amoprighttype => 'name', amopstrategy => '1', amopopr => '<(text,name)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_ops', amoplefttype => 'text',
  amoprighttype => 'name', amopstrategy => '2', amopopr => '<=(text,name)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_ops', amoplefttype => 'text',
  amoprighttype => 'name', amopstrategy => '3', amopopr => '=(text,name)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_ops', amoplefttype => 'text',
  amoprighttype => 'name', amopstrategy => '4', amopopr => '>=(text,name)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_ops', amoplefttype => 'text',
  amoprighttype => 'name', amopstrategy => '5', amopopr => '>(text,name)',
  amopmethod => 'btree' },

# btree bpchar_ops

{ amopfamily => 'btree/bpchar_ops', amoplefttype => 'bpchar',
  amoprighttype => 'bpchar', amopstrategy => '1', amopopr => '<(bpchar,bpchar)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/bpchar_ops', amoplefttype => 'bpchar',
  amoprighttype => 'bpchar', amopstrategy => '2',
  amopopr => '<=(bpchar,bpchar)', amopmethod => 'btree' },
{ amopfamily => 'btree/bpchar_ops', amoplefttype => 'bpchar',
  amoprighttype => 'bpchar', amopstrategy => '3', amopopr => '=(bpchar,bpchar)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/bpchar_ops', amoplefttype => 'bpchar',
  amoprighttype => 'bpchar', amopstrategy => '4',
  amopopr => '>=(bpchar,bpchar)', amopmethod => 'btree' },
{ amopfamily => 'btree/bpchar_ops', amoplefttype => 'bpchar',
  amoprighttype => 'bpchar', amopstrategy => '5', amopopr => '>(bpchar,bpchar)',
  amopmethod => 'btree' },

# btree bytea_ops

{ amopfamily => 'btree/bytea_ops', amoplefttype => 'bytea',
  amoprighttype => 'bytea', amopstrategy => '1', amopopr => '<(bytea,bytea)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/bytea_ops', amoplefttype => 'bytea',
  amoprighttype => 'bytea', amopstrategy => '2', amopopr => '<=(bytea,bytea)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/bytea_ops', amoplefttype => 'bytea',
  amoprighttype => 'bytea', amopstrategy => '3', amopopr => '=(bytea,bytea)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/bytea_ops', amoplefttype => 'bytea',
  amoprighttype => 'bytea', amopstrategy => '4', amopopr => '>=(bytea,bytea)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/bytea_ops', amoplefttype => 'bytea',
  amoprighttype => 'bytea', amopstrategy => '5', amopopr => '>(bytea,bytea)',
  amopmethod => 'btree' },

# btree datetime_ops

# default operators date
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date',
  amoprighttype => 'date', amopstrategy => '1', amopopr => '<(date,date)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date',
  amoprighttype => 'date', amopstrategy => '2', amopopr => '<=(date,date)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date',
  amoprighttype => 'date', amopstrategy => '3', amopopr => '=(date,date)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date',
  amoprighttype => 'date', amopstrategy => '4', amopopr => '>=(date,date)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date',
  amoprighttype => 'date', amopstrategy => '5', amopopr => '>(date,date)',
  amopmethod => 'btree' },

# crosstype operators vs timestamp
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date',
  amoprighttype => 'timestamp', amopstrategy => '1',
  amopopr => '<(date,timestamp)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date',
  amoprighttype => 'timestamp', amopstrategy => '2',
  amopopr => '<=(date,timestamp)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date',
  amoprighttype => 'timestamp', amopstrategy => '3',
  amopopr => '=(date,timestamp)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date',
  amoprighttype => 'timestamp', amopstrategy => '4',
  amopopr => '>=(date,timestamp)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date',
  amoprighttype => 'timestamp', amopstrategy => '5',
  amopopr => '>(date,timestamp)', amopmethod => 'btree' },

# crosstype operators vs timestamptz
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date',
  amoprighttype => 'timestamptz', amopstrategy => '1',
  amopopr => '<(date,timestamptz)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date',
  amoprighttype => 'timestamptz', amopstrategy => '2',
  amopopr => '<=(date,timestamptz)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date',
  amoprighttype => 'timestamptz', amopstrategy => '3',
  amopopr => '=(date,timestamptz)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date',
  amoprighttype => 'timestamptz', amopstrategy => '4',
  amopopr => '>=(date,timestamptz)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'date',
  amoprighttype => 'timestamptz', amopstrategy => '5',
  amopopr => '>(date,timestamptz)', amopmethod => 'btree' },

# default operators timestamp
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamp', amopstrategy => '1',
  amopopr => '<(timestamp,timestamp)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamp', amopstrategy => '2',
  amopopr => '<=(timestamp,timestamp)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamp', amopstrategy => '3',
  amopopr => '=(timestamp,timestamp)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamp', amopstrategy => '4',
  amopopr => '>=(timestamp,timestamp)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamp', amopstrategy => '5',
  amopopr => '>(timestamp,timestamp)', amopmethod => 'btree' },

# crosstype operators vs date
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp',
  amoprighttype => 'date', amopstrategy => '1', amopopr => '<(timestamp,date)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp',
  amoprighttype => 'date', amopstrategy => '2', amopopr => '<=(timestamp,date)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp',
  amoprighttype => 'date', amopstrategy => '3', amopopr => '=(timestamp,date)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp',
  amoprighttype => 'date', amopstrategy => '4', amopopr => '>=(timestamp,date)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp',
  amoprighttype => 'date', amopstrategy => '5', amopopr => '>(timestamp,date)',
  amopmethod => 'btree' },

# crosstype operators vs timestamptz
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamptz', amopstrategy => '1',
  amopopr => '<(timestamp,timestamptz)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamptz', amopstrategy => '2',
  amopopr => '<=(timestamp,timestamptz)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamptz', amopstrategy => '3',
  amopopr => '=(timestamp,timestamptz)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamptz', amopstrategy => '4',
  amopopr => '>=(timestamp,timestamptz)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamptz', amopstrategy => '5',
  amopopr => '>(timestamp,timestamptz)', amopmethod => 'btree' },

# default operators timestamptz
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamptz', amopstrategy => '1',
  amopopr => '<(timestamptz,timestamptz)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamptz', amopstrategy => '2',
  amopopr => '<=(timestamptz,timestamptz)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamptz', amopstrategy => '3',
  amopopr => '=(timestamptz,timestamptz)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamptz', amopstrategy => '4',
  amopopr => '>=(timestamptz,timestamptz)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamptz', amopstrategy => '5',
  amopopr => '>(timestamptz,timestamptz)', amopmethod => 'btree' },

# crosstype operators vs date
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'date', amopstrategy => '1',
  amopopr => '<(timestamptz,date)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'date', amopstrategy => '2',
  amopopr => '<=(timestamptz,date)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'date', amopstrategy => '3',
  amopopr => '=(timestamptz,date)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'date', amopstrategy => '4',
  amopopr => '>=(timestamptz,date)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'date', amopstrategy => '5',
  amopopr => '>(timestamptz,date)', amopmethod => 'btree' },

# crosstype operators vs timestamp
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamp', amopstrategy => '1',
  amopopr => '<(timestamptz,timestamp)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamp', amopstrategy => '2',
  amopopr => '<=(timestamptz,timestamp)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamp', amopstrategy => '3',
  amopopr => '=(timestamptz,timestamp)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamp', amopstrategy => '4',
  amopopr => '>=(timestamptz,timestamp)', amopmethod => 'btree' },
{ amopfamily => 'btree/datetime_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamp', amopstrategy => '5',
  amopopr => '>(timestamptz,timestamp)', amopmethod => 'btree' },

# btree time_ops

{ amopfamily => 'btree/time_ops', amoplefttype => 'time',
  amoprighttype => 'time', amopstrategy => '1', amopopr => '<(time,time)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/time_ops', amoplefttype => 'time',
  amoprighttype => 'time', amopstrategy => '2', amopopr => '<=(time,time)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/time_ops', amoplefttype => 'time',
  amoprighttype => 'time', amopstrategy => '3', amopopr => '=(time,time)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/time_ops', amoplefttype => 'time',
  amoprighttype => 'time', amopstrategy => '4', amopopr => '>=(time,time)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/time_ops', amoplefttype => 'time',
  amoprighttype => 'time', amopstrategy => '5', amopopr => '>(time,time)',
  amopmethod => 'btree' },

# btree timetz_ops

{ amopfamily => 'btree/timetz_ops', amoplefttype => 'timetz',
  amoprighttype => 'timetz', amopstrategy => '1', amopopr => '<(timetz,timetz)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/timetz_ops', amoplefttype => 'timetz',
  amoprighttype => 'timetz', amopstrategy => '2',
  amopopr => '<=(timetz,timetz)', amopmethod => 'btree' },
{ amopfamily => 'btree/timetz_ops', amoplefttype => 'timetz',
  amoprighttype => 'timetz', amopstrategy => '3', amopopr => '=(timetz,timetz)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/timetz_ops', amoplefttype => 'timetz',
  amoprighttype => 'timetz', amopstrategy => '4',
  amopopr => '>=(timetz,timetz)', amopmethod => 'btree' },
{ amopfamily => 'btree/timetz_ops', amoplefttype => 'timetz',
  amoprighttype => 'timetz', amopstrategy => '5', amopopr => '>(timetz,timetz)',
  amopmethod => 'btree' },

# btree interval_ops

{ amopfamily => 'btree/interval_ops', amoplefttype => 'interval',
  amoprighttype => 'interval', amopstrategy => '1',
  amopopr => '<(interval,interval)', amopmethod => 'btree' },
{ amopfamily => 'btree/interval_ops', amoplefttype => 'interval',
  amoprighttype => 'interval', amopstrategy => '2',
  amopopr => '<=(interval,interval)', amopmethod => 'btree' },
{ amopfamily => 'btree/interval_ops', amoplefttype => 'interval',
  amoprighttype => 'interval', amopstrategy => '3',
  amopopr => '=(interval,interval)', amopmethod => 'btree' },
{ amopfamily => 'btree/interval_ops', amoplefttype => 'interval',
  amoprighttype => 'interval', amopstrategy => '4',
  amopopr => '>=(interval,interval)', amopmethod => 'btree' },
{ amopfamily => 'btree/interval_ops', amoplefttype => 'interval',
  amoprighttype => 'interval', amopstrategy => '5',
  amopopr => '>(interval,interval)', amopmethod => 'btree' },

# btree macaddr

{ amopfamily => 'btree/macaddr_ops', amoplefttype => 'macaddr',
  amoprighttype => 'macaddr', amopstrategy => '1',
  amopopr => '<(macaddr,macaddr)', amopmethod => 'btree' },
{ amopfamily => 'btree/macaddr_ops', amoplefttype => 'macaddr',
  amoprighttype => 'macaddr', amopstrategy => '2',
  amopopr => '<=(macaddr,macaddr)', amopmethod => 'btree' },
{ amopfamily => 'btree/macaddr_ops', amoplefttype => 'macaddr',
  amoprighttype => 'macaddr', amopstrategy => '3',
  amopopr => '=(macaddr,macaddr)', amopmethod => 'btree' },
{ amopfamily => 'btree/macaddr_ops', amoplefttype => 'macaddr',
  amoprighttype => 'macaddr', amopstrategy => '4',
  amopopr => '>=(macaddr,macaddr)', amopmethod => 'btree' },
{ amopfamily => 'btree/macaddr_ops', amoplefttype => 'macaddr',
  amoprighttype => 'macaddr', amopstrategy => '5',
  amopopr => '>(macaddr,macaddr)', amopmethod => 'btree' },

# btree macaddr8

{ amopfamily => 'btree/macaddr8_ops', amoplefttype => 'macaddr8',
  amoprighttype => 'macaddr8', amopstrategy => '1',
  amopopr => '<(macaddr8,macaddr8)', amopmethod => 'btree' },
{ amopfamily => 'btree/macaddr8_ops', amoplefttype => 'macaddr8',
  amoprighttype => 'macaddr8', amopstrategy => '2',
  amopopr => '<=(macaddr8,macaddr8)', amopmethod => 'btree' },
{ amopfamily => 'btree/macaddr8_ops', amoplefttype => 'macaddr8',
  amoprighttype => 'macaddr8', amopstrategy => '3',
  amopopr => '=(macaddr8,macaddr8)', amopmethod => 'btree' },
{ amopfamily => 'btree/macaddr8_ops', amoplefttype => 'macaddr8',
  amoprighttype => 'macaddr8', amopstrategy => '4',
  amopopr => '>=(macaddr8,macaddr8)', amopmethod => 'btree' },
{ amopfamily => 'btree/macaddr8_ops', amoplefttype => 'macaddr8',
  amoprighttype => 'macaddr8', amopstrategy => '5',
  amopopr => '>(macaddr8,macaddr8)', amopmethod => 'btree' },

# btree network

{ amopfamily => 'btree/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '1', amopopr => '<(inet,inet)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '2', amopopr => '<=(inet,inet)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '3', amopopr => '=(inet,inet)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '4', amopopr => '>=(inet,inet)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '5', amopopr => '>(inet,inet)',
  amopmethod => 'btree' },

# btree numeric

{ amopfamily => 'btree/numeric_ops', amoplefttype => 'numeric',
  amoprighttype => 'numeric', amopstrategy => '1',
  amopopr => '<(numeric,numeric)', amopmethod => 'btree' },
{ amopfamily => 'btree/numeric_ops', amoplefttype => 'numeric',
  amoprighttype => 'numeric', amopstrategy => '2',
  amopopr => '<=(numeric,numeric)', amopmethod => 'btree' },
{ amopfamily => 'btree/numeric_ops', amoplefttype => 'numeric',
  amoprighttype => 'numeric', amopstrategy => '3',
  amopopr => '=(numeric,numeric)', amopmethod => 'btree' },
{ amopfamily => 'btree/numeric_ops', amoplefttype => 'numeric',
  amoprighttype => 'numeric', amopstrategy => '4',
  amopopr => '>=(numeric,numeric)', amopmethod => 'btree' },
{ amopfamily => 'btree/numeric_ops', amoplefttype => 'numeric',
  amoprighttype => 'numeric', amopstrategy => '5',
  amopopr => '>(numeric,numeric)', amopmethod => 'btree' },

# btree bool

{ amopfamily => 'btree/bool_ops', amoplefttype => 'bool',
  amoprighttype => 'bool', amopstrategy => '1', amopopr => '<(bool,bool)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/bool_ops', amoplefttype => 'bool',
  amoprighttype => 'bool', amopstrategy => '2', amopopr => '<=(bool,bool)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/bool_ops', amoplefttype => 'bool',
  amoprighttype => 'bool', amopstrategy => '3', amopopr => '=(bool,bool)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/bool_ops', amoplefttype => 'bool',
  amoprighttype => 'bool', amopstrategy => '4', amopopr => '>=(bool,bool)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/bool_ops', amoplefttype => 'bool',
  amoprighttype => 'bool', amopstrategy => '5', amopopr => '>(bool,bool)',
  amopmethod => 'btree' },

# btree bit

{ amopfamily => 'btree/bit_ops', amoplefttype => 'bit', amoprighttype => 'bit',
  amopstrategy => '1', amopopr => '<(bit,bit)', amopmethod => 'btree' },
{ amopfamily => 'btree/bit_ops', amoplefttype => 'bit', amoprighttype => 'bit',
  amopstrategy => '2', amopopr => '<=(bit,bit)', amopmethod => 'btree' },
{ amopfamily => 'btree/bit_ops', amoplefttype => 'bit', amoprighttype => 'bit',
  amopstrategy => '3', amopopr => '=(bit,bit)', amopmethod => 'btree' },
{ amopfamily => 'btree/bit_ops', amoplefttype => 'bit', amoprighttype => 'bit',
  amopstrategy => '4', amopopr => '>=(bit,bit)', amopmethod => 'btree' },
{ amopfamily => 'btree/bit_ops', amoplefttype => 'bit', amoprighttype => 'bit',
  amopstrategy => '5', amopopr => '>(bit,bit)', amopmethod => 'btree' },

# btree varbit

{ amopfamily => 'btree/varbit_ops', amoplefttype => 'varbit',
  amoprighttype => 'varbit', amopstrategy => '1', amopopr => '<(varbit,varbit)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/varbit_ops', amoplefttype => 'varbit',
  amoprighttype => 'varbit', amopstrategy => '2',
  amopopr => '<=(varbit,varbit)', amopmethod => 'btree' },
{ amopfamily => 'btree/varbit_ops', amoplefttype => 'varbit',
  amoprighttype => 'varbit', amopstrategy => '3', amopopr => '=(varbit,varbit)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/varbit_ops', amoplefttype => 'varbit',
  amoprighttype => 'varbit', amopstrategy => '4',
  amopopr => '>=(varbit,varbit)', amopmethod => 'btree' },
{ amopfamily => 'btree/varbit_ops', amoplefttype => 'varbit',
  amoprighttype => 'varbit', amopstrategy => '5', amopopr => '>(varbit,varbit)',
  amopmethod => 'btree' },

# btree text pattern

{ amopfamily => 'btree/text_pattern_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '1', amopopr => '~<~(text,text)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_pattern_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '2', amopopr => '~<=~(text,text)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_pattern_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '3', amopopr => '=(text,text)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_pattern_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '4', amopopr => '~>=~(text,text)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/text_pattern_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '5', amopopr => '~>~(text,text)',
  amopmethod => 'btree' },

# btree bpchar pattern

{ amopfamily => 'btree/bpchar_pattern_ops', amoplefttype => 'bpchar',
  amoprighttype => 'bpchar', amopstrategy => '1',
  amopopr => '~<~(bpchar,bpchar)', amopmethod => 'btree' },
{ amopfamily => 'btree/bpchar_pattern_ops', amoplefttype => 'bpchar',
  amoprighttype => 'bpchar', amopstrategy => '2',
  amopopr => '~<=~(bpchar,bpchar)', amopmethod => 'btree' },
{ amopfamily => 'btree/bpchar_pattern_ops', amoplefttype => 'bpchar',
  amoprighttype => 'bpchar', amopstrategy => '3', amopopr => '=(bpchar,bpchar)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/bpchar_pattern_ops', amoplefttype => 'bpchar',
  amoprighttype => 'bpchar', amopstrategy => '4',
  amopopr => '~>=~(bpchar,bpchar)', amopmethod => 'btree' },
{ amopfamily => 'btree/bpchar_pattern_ops', amoplefttype => 'bpchar',
  amoprighttype => 'bpchar', amopstrategy => '5',
  amopopr => '~>~(bpchar,bpchar)', amopmethod => 'btree' },

# btree money_ops

{ amopfamily => 'btree/money_ops', amoplefttype => 'money',
  amoprighttype => 'money', amopstrategy => '1', amopopr => '<(money,money)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/money_ops', amoplefttype => 'money',
  amoprighttype => 'money', amopstrategy => '2', amopopr => '<=(money,money)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/money_ops', amoplefttype => 'money',
  amoprighttype => 'money', amopstrategy => '3', amopopr => '=(money,money)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/money_ops', amoplefttype => 'money',
  amoprighttype => 'money', amopstrategy => '4', amopopr => '>=(money,money)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/money_ops', amoplefttype => 'money',
  amoprighttype => 'money', amopstrategy => '5', amopopr => '>(money,money)',
  amopmethod => 'btree' },

# btree array_ops

{ amopfamily => 'btree/array_ops', amoplefttype => 'anyarray',
  amoprighttype => 'anyarray', amopstrategy => '1',
  amopopr => '<(anyarray,anyarray)', amopmethod => 'btree' },
{ amopfamily => 'btree/array_ops', amoplefttype => 'anyarray',
  amoprighttype => 'anyarray', amopstrategy => '2',
  amopopr => '<=(anyarray,anyarray)', amopmethod => 'btree' },
{ amopfamily => 'btree/array_ops', amoplefttype => 'anyarray',
  amoprighttype => 'anyarray', amopstrategy => '3',
  amopopr => '=(anyarray,anyarray)', amopmethod => 'btree' },
{ amopfamily => 'btree/array_ops', amoplefttype => 'anyarray',
  amoprighttype => 'anyarray', amopstrategy => '4',
  amopopr => '>=(anyarray,anyarray)', amopmethod => 'btree' },
{ amopfamily => 'btree/array_ops', amoplefttype => 'anyarray',
  amoprighttype => 'anyarray', amopstrategy => '5',
  amopopr => '>(anyarray,anyarray)', amopmethod => 'btree' },

# btree record_ops

{ amopfamily => 'btree/record_ops', amoplefttype => 'record',
  amoprighttype => 'record', amopstrategy => '1', amopopr => '<(record,record)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/record_ops', amoplefttype => 'record',
  amoprighttype => 'record', amopstrategy => '2',
  amopopr => '<=(record,record)', amopmethod => 'btree' },
{ amopfamily => 'btree/record_ops', amoplefttype => 'record',
  amoprighttype => 'record', amopstrategy => '3', amopopr => '=(record,record)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/record_ops', amoplefttype => 'record',
  amoprighttype => 'record', amopstrategy => '4',
  amopopr => '>=(record,record)', amopmethod => 'btree' },
{ amopfamily => 'btree/record_ops', amoplefttype => 'record',
  amoprighttype => 'record', amopstrategy => '5', amopopr => '>(record,record)',
  amopmethod => 'btree' },

# btree record_image_ops

{ amopfamily => 'btree/record_image_ops', amoplefttype => 'record',
  amoprighttype => 'record', amopstrategy => '1',
  amopopr => '*<(record,record)', amopmethod => 'btree' },
{ amopfamily => 'btree/record_image_ops', amoplefttype => 'record',
  amoprighttype => 'record', amopstrategy => '2',
  amopopr => '*<=(record,record)', amopmethod => 'btree' },
{ amopfamily => 'btree/record_image_ops', amoplefttype => 'record',
  amoprighttype => 'record', amopstrategy => '3',
  amopopr => '*=(record,record)', amopmethod => 'btree' },
{ amopfamily => 'btree/record_image_ops', amoplefttype => 'record',
  amoprighttype => 'record', amopstrategy => '4',
  amopopr => '*>=(record,record)', amopmethod => 'btree' },
{ amopfamily => 'btree/record_image_ops', amoplefttype => 'record',
  amoprighttype => 'record', amopstrategy => '5',
  amopopr => '*>(record,record)', amopmethod => 'btree' },

# btree uuid_ops

{ amopfamily => 'btree/uuid_ops', amoplefttype => 'uuid',
  amoprighttype => 'uuid', amopstrategy => '1', amopopr => '<(uuid,uuid)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/uuid_ops', amoplefttype => 'uuid',
  amoprighttype => 'uuid', amopstrategy => '2', amopopr => '<=(uuid,uuid)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/uuid_ops', amoplefttype => 'uuid',
  amoprighttype => 'uuid', amopstrategy => '3', amopopr => '=(uuid,uuid)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/uuid_ops', amoplefttype => 'uuid',
  amoprighttype => 'uuid', amopstrategy => '4', amopopr => '>=(uuid,uuid)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/uuid_ops', amoplefttype => 'uuid',
  amoprighttype => 'uuid', amopstrategy => '5', amopopr => '>(uuid,uuid)',
  amopmethod => 'btree' },

# btree pg_lsn_ops

{ amopfamily => 'btree/pg_lsn_ops', amoplefttype => 'pg_lsn',
  amoprighttype => 'pg_lsn', amopstrategy => '1', amopopr => '<(pg_lsn,pg_lsn)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/pg_lsn_ops', amoplefttype => 'pg_lsn',
  amoprighttype => 'pg_lsn', amopstrategy => '2',
  amopopr => '<=(pg_lsn,pg_lsn)', amopmethod => 'btree' },
{ amopfamily => 'btree/pg_lsn_ops', amoplefttype => 'pg_lsn',
  amoprighttype => 'pg_lsn', amopstrategy => '3', amopopr => '=(pg_lsn,pg_lsn)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/pg_lsn_ops', amoplefttype => 'pg_lsn',
  amoprighttype => 'pg_lsn', amopstrategy => '4',
  amopopr => '>=(pg_lsn,pg_lsn)', amopmethod => 'btree' },
{ amopfamily => 'btree/pg_lsn_ops', amoplefttype => 'pg_lsn',
  amoprighttype => 'pg_lsn', amopstrategy => '5', amopopr => '>(pg_lsn,pg_lsn)',
  amopmethod => 'btree' },

# hash index_ops

# bpchar_ops
{ amopfamily => 'hash/bpchar_ops', amoplefttype => 'bpchar',
  amoprighttype => 'bpchar', amopstrategy => '1', amopopr => '=(bpchar,bpchar)',
  amopmethod => 'hash' },

# char_ops
{ amopfamily => 'hash/char_ops', amoplefttype => 'char',
  amoprighttype => 'char', amopstrategy => '1', amopopr => '=(char,char)',
  amopmethod => 'hash' },

# date_ops
{ amopfamily => 'hash/date_ops', amoplefttype => 'date',
  amoprighttype => 'date', amopstrategy => '1', amopopr => '=(date,date)',
  amopmethod => 'hash' },

# float_ops
{ amopfamily => 'hash/float_ops', amoplefttype => 'float4',
  amoprighttype => 'float4', amopstrategy => '1', amopopr => '=(float4,float4)',
  amopmethod => 'hash' },
{ amopfamily => 'hash/float_ops', amoplefttype => 'float8',
  amoprighttype => 'float8', amopstrategy => '1', amopopr => '=(float8,float8)',
  amopmethod => 'hash' },
{ amopfamily => 'hash/float_ops', amoplefttype => 'float4',
  amoprighttype => 'float8', amopstrategy => '1', amopopr => '=(float4,float8)',
  amopmethod => 'hash' },
{ amopfamily => 'hash/float_ops', amoplefttype => 'float8',
  amoprighttype => 'float4', amopstrategy => '1', amopopr => '=(float8,float4)',
  amopmethod => 'hash' },

# network_ops
{ amopfamily => 'hash/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '1', amopopr => '=(inet,inet)',
  amopmethod => 'hash' },

# integer_ops
{ amopfamily => 'hash/integer_ops', amoplefttype => 'int2',
  amoprighttype => 'int2', amopstrategy => '1', amopopr => '=(int2,int2)',
  amopmethod => 'hash' },
{ amopfamily => 'hash/integer_ops', amoplefttype => 'int4',
  amoprighttype => 'int4', amopstrategy => '1', amopopr => '=(int4,int4)',
  amopmethod => 'hash' },
{ amopfamily => 'hash/integer_ops', amoplefttype => 'int8',
  amoprighttype => 'int8', amopstrategy => '1', amopopr => '=(int8,int8)',
  amopmethod => 'hash' },
{ amopfamily => 'hash/integer_ops', amoplefttype => 'int2',
  amoprighttype => 'int4', amopstrategy => '1', amopopr => '=(int2,int4)',
  amopmethod => 'hash' },
{ amopfamily => 'hash/integer_ops', amoplefttype => 'int2',
  amoprighttype => 'int8', amopstrategy => '1', amopopr => '=(int2,int8)',
  amopmethod => 'hash' },
{ amopfamily => 'hash/integer_ops', amoplefttype => 'int4',
  amoprighttype => 'int2', amopstrategy => '1', amopopr => '=(int4,int2)',
  amopmethod => 'hash' },
{ amopfamily => 'hash/integer_ops', amoplefttype => 'int4',
  amoprighttype => 'int8', amopstrategy => '1', amopopr => '=(int4,int8)',
  amopmethod => 'hash' },
{ amopfamily => 'hash/integer_ops', amoplefttype => 'int8',
  amoprighttype => 'int2', amopstrategy => '1', amopopr => '=(int8,int2)',
  amopmethod => 'hash' },
{ amopfamily => 'hash/integer_ops', amoplefttype => 'int8',
  amoprighttype => 'int4', amopstrategy => '1', amopopr => '=(int8,int4)',
  amopmethod => 'hash' },

# interval_ops
{ amopfamily => 'hash/interval_ops', amoplefttype => 'interval',
  amoprighttype => 'interval', amopstrategy => '1',
  amopopr => '=(interval,interval)', amopmethod => 'hash' },

# macaddr_ops
{ amopfamily => 'hash/macaddr_ops', amoplefttype => 'macaddr',
  amoprighttype => 'macaddr', amopstrategy => '1',
  amopopr => '=(macaddr,macaddr)', amopmethod => 'hash' },

# macaddr8_ops
{ amopfamily => 'hash/macaddr8_ops', amoplefttype => 'macaddr8',
  amoprighttype => 'macaddr8', amopstrategy => '1',
  amopopr => '=(macaddr8,macaddr8)', amopmethod => 'hash' },

# oid_ops
{ amopfamily => 'hash/oid_ops', amoplefttype => 'oid', amoprighttype => 'oid',
  amopstrategy => '1', amopopr => '=(oid,oid)', amopmethod => 'hash' },

# oidvector_ops
{ amopfamily => 'hash/oidvector_ops', amoplefttype => 'oidvector',
  amoprighttype => 'oidvector', amopstrategy => '1',
  amopopr => '=(oidvector,oidvector)', amopmethod => 'hash' },

# record_ops
{ amopfamily => 'hash/record_ops', amoplefttype => 'record',
  amoprighttype => 'record', amopstrategy => '1', amopopr => '=(record,record)',
  amopmethod => 'hash' },

# text_ops
{ amopfamily => 'hash/text_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '1', amopopr => '=(text,text)',
  amopmethod => 'hash' },
{ amopfamily => 'hash/text_ops', amoplefttype => 'name',
  amoprighttype => 'name', amopstrategy => '1', amopopr => '=(name,name)',
  amopmethod => 'hash' },
{ amopfamily => 'hash/text_ops', amoplefttype => 'name',
  amoprighttype => 'text', amopstrategy => '1', amopopr => '=(name,text)',
  amopmethod => 'hash' },
{ amopfamily => 'hash/text_ops', amoplefttype => 'text',
  amoprighttype => 'name', amopstrategy => '1', amopopr => '=(text,name)',
  amopmethod => 'hash' },

# time_ops
{ amopfamily => 'hash/time_ops', amoplefttype => 'time',
  amoprighttype => 'time', amopstrategy => '1', amopopr => '=(time,time)',
  amopmethod => 'hash' },

# timestamptz_ops
{ amopfamily => 'hash/timestamptz_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamptz', amopstrategy => '1',
  amopopr => '=(timestamptz,timestamptz)', amopmethod => 'hash' },

# timetz_ops
{ amopfamily => 'hash/timetz_ops', amoplefttype => 'timetz',
  amoprighttype => 'timetz', amopstrategy => '1', amopopr => '=(timetz,timetz)',
  amopmethod => 'hash' },

# timestamp_ops
{ amopfamily => 'hash/timestamp_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamp', amopstrategy => '1',
  amopopr => '=(timestamp,timestamp)', amopmethod => 'hash' },

# bool_ops
{ amopfamily => 'hash/bool_ops', amoplefttype => 'bool',
  amoprighttype => 'bool', amopstrategy => '1', amopopr => '=(bool,bool)',
  amopmethod => 'hash' },

# bytea_ops
{ amopfamily => 'hash/bytea_ops', amoplefttype => 'bytea',
  amoprighttype => 'bytea', amopstrategy => '1', amopopr => '=(bytea,bytea)',
  amopmethod => 'hash' },

# xid_ops
{ amopfamily => 'hash/xid_ops', amoplefttype => 'xid', amoprighttype => 'xid',
  amopstrategy => '1', amopopr => '=(xid,xid)', amopmethod => 'hash' },

# xid8_ops
{ amopfamily => 'hash/xid8_ops', amoplefttype => 'xid8',
  amoprighttype => 'xid8', amopstrategy => '1', amopopr => '=(xid8,xid8)',
  amopmethod => 'hash' },

# cid_ops
{ amopfamily => 'hash/cid_ops', amoplefttype => 'cid', amoprighttype => 'cid',
  amopstrategy => '1', amopopr => '=(cid,cid)', amopmethod => 'hash' },

# tid_ops
{ amopfamily => 'hash/tid_ops', amoplefttype => 'tid', amoprighttype => 'tid',
  amopstrategy => '1', amopopr => '=(tid,tid)', amopmethod => 'hash' },

# text_pattern_ops
{ amopfamily => 'hash/text_pattern_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '1', amopopr => '=(text,text)',
  amopmethod => 'hash' },

# bpchar_pattern_ops
{ amopfamily => 'hash/bpchar_pattern_ops', amoplefttype => 'bpchar',
  amoprighttype => 'bpchar', amopstrategy => '1', amopopr => '=(bpchar,bpchar)',
  amopmethod => 'hash' },

# aclitem_ops
{ amopfamily => 'hash/aclitem_ops', amoplefttype => 'aclitem',
  amoprighttype => 'aclitem', amopstrategy => '1',
  amopopr => '=(aclitem,aclitem)', amopmethod => 'hash' },

# uuid_ops
{ amopfamily => 'hash/uuid_ops', amoplefttype => 'uuid',
  amoprighttype => 'uuid', amopstrategy => '1', amopopr => '=(uuid,uuid)',
  amopmethod => 'hash' },

# pg_lsn_ops
{ amopfamily => 'hash/pg_lsn_ops', amoplefttype => 'pg_lsn',
  amoprighttype => 'pg_lsn', amopstrategy => '1', amopopr => '=(pg_lsn,pg_lsn)',
  amopmethod => 'hash' },

# numeric_ops
{ amopfamily => 'hash/numeric_ops', amoplefttype => 'numeric',
  amoprighttype => 'numeric', amopstrategy => '1',
  amopopr => '=(numeric,numeric)', amopmethod => 'hash' },

# array_ops
{ amopfamily => 'hash/array_ops', amoplefttype => 'anyarray',
  amoprighttype => 'anyarray', amopstrategy => '1',
  amopopr => '=(anyarray,anyarray)', amopmethod => 'hash' },

# gist box_ops
{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '1', amopopr => '<<(box,box)', amopmethod => 'gist' },
{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '2', amopopr => '&<(box,box)', amopmethod => 'gist' },
{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '3', amopopr => '&&(box,box)', amopmethod => 'gist' },
{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '4', amopopr => '&>(box,box)', amopmethod => 'gist' },
{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '5', amopopr => '>>(box,box)', amopmethod => 'gist' },
{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '6', amopopr => '~=(box,box)', amopmethod => 'gist' },
{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '7', amopopr => '@>(box,box)', amopmethod => 'gist' },
{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '8', amopopr => '<@(box,box)', amopmethod => 'gist' },
{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '9', amopopr => '&<|(box,box)', amopmethod => 'gist' },
{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '10', amopopr => '<<|(box,box)', amopmethod => 'gist' },
{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '11', amopopr => '|>>(box,box)', amopmethod => 'gist' },
{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '12', amopopr => '|&>(box,box)', amopmethod => 'gist' },
{ amopfamily => 'gist/box_ops', amoplefttype => 'box', amoprighttype => 'point',
  amopstrategy => '15', amoppurpose => 'o', amopopr => '<->(box,point)',
  amopmethod => 'gist', amopsortfamily => 'btree/float_ops' },

# gist point_ops
{ amopfamily => 'gist/point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '11', amopopr => '|>>(point,point)',
  amopmethod => 'gist' },
{ amopfamily => 'gist/point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '30', amopopr => '>^(point,point)',
  amopmethod => 'gist' },
{ amopfamily => 'gist/point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '1', amopopr => '<<(point,point)',
  amopmethod => 'gist' },
{ amopfamily => 'gist/point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '5', amopopr => '>>(point,point)',
  amopmethod => 'gist' },
{ amopfamily => 'gist/point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '10', amopopr => '<<|(point,point)',
  amopmethod => 'gist' },
{ amopfamily => 'gist/point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '29', amopopr => '<^(point,point)',
  amopmethod => 'gist' },
{ amopfamily => 'gist/point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '6', amopopr => '~=(point,point)',
  amopmethod => 'gist' },
{ amopfamily => 'gist/point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '15', amoppurpose => 'o',
  amopopr => '<->(point,point)', amopmethod => 'gist',
  amopsortfamily => 'btree/float_ops' },
{ amopfamily => 'gist/point_ops', amoplefttype => 'point',
  amoprighttype => 'box', amopstrategy => '28', amopopr => '<@(point,box)',
  amopmethod => 'gist' },
{ amopfamily => 'gist/point_ops', amoplefttype => 'point',
  amoprighttype => 'polygon', amopstrategy => '48',
  amopopr => '<@(point,polygon)', amopmethod => 'gist' },
{ amopfamily => 'gist/point_ops', amoplefttype => 'point',
  amoprighttype => 'circle', amopstrategy => '68',
  amopopr => '<@(point,circle)', amopmethod => 'gist' },

# gist poly_ops (supports polygons)
{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '1',
  amopopr => '<<(polygon,polygon)', amopmethod => 'gist' },
{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '2',
  amopopr => '&<(polygon,polygon)', amopmethod => 'gist' },
{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '3',
  amopopr => '&&(polygon,polygon)', amopmethod => 'gist' },
{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '4',
  amopopr => '&>(polygon,polygon)', amopmethod => 'gist' },
{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '5',
  amopopr => '>>(polygon,polygon)', amopmethod => 'gist' },
{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '6',
  amopopr => '~=(polygon,polygon)', amopmethod => 'gist' },
{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '7',
  amopopr => '@>(polygon,polygon)', amopmethod => 'gist' },
{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '8',
  amopopr => '<@(polygon,polygon)', amopmethod => 'gist' },
{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '9',
  amopopr => '&<|(polygon,polygon)', amopmethod => 'gist' },
{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '10',
  amopopr => '<<|(polygon,polygon)', amopmethod => 'gist' },
{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '11',
  amopopr => '|>>(polygon,polygon)', amopmethod => 'gist' },
{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '12',
  amopopr => '|&>(polygon,polygon)', amopmethod => 'gist' },
{ amopfamily => 'gist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'point', amopstrategy => '15', amoppurpose => 'o',
  amopopr => '<->(polygon,point)', amopmethod => 'gist',
  amopsortfamily => 'btree/float_ops' },

# gist circle_ops
{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle',
  amoprighttype => 'circle', amopstrategy => '1',
  amopopr => '<<(circle,circle)', amopmethod => 'gist' },
{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle',
  amoprighttype => 'circle', amopstrategy => '2',
  amopopr => '&<(circle,circle)', amopmethod => 'gist' },
{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle',
  amoprighttype => 'circle', amopstrategy => '3',
  amopopr => '&&(circle,circle)', amopmethod => 'gist' },
{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle',
  amoprighttype => 'circle', amopstrategy => '4',
  amopopr => '&>(circle,circle)', amopmethod => 'gist' },
{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle',
  amoprighttype => 'circle', amopstrategy => '5',
  amopopr => '>>(circle,circle)', amopmethod => 'gist' },
{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle',
  amoprighttype => 'circle', amopstrategy => '6',
  amopopr => '~=(circle,circle)', amopmethod => 'gist' },
{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle',
  amoprighttype => 'circle', amopstrategy => '7',
  amopopr => '@>(circle,circle)', amopmethod => 'gist' },
{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle',
  amoprighttype => 'circle', amopstrategy => '8',
  amopopr => '<@(circle,circle)', amopmethod => 'gist' },
{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle',
  amoprighttype => 'circle', amopstrategy => '9',
  amopopr => '&<|(circle,circle)', amopmethod => 'gist' },
{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle',
  amoprighttype => 'circle', amopstrategy => '10',
  amopopr => '<<|(circle,circle)', amopmethod => 'gist' },
{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle',
  amoprighttype => 'circle', amopstrategy => '11',
  amopopr => '|>>(circle,circle)', amopmethod => 'gist' },
{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle',
  amoprighttype => 'circle', amopstrategy => '12',
  amopopr => '|&>(circle,circle)', amopmethod => 'gist' },
{ amopfamily => 'gist/circle_ops', amoplefttype => 'circle',
  amoprighttype => 'point', amopstrategy => '15', amoppurpose => 'o',
  amopopr => '<->(circle,point)', amopmethod => 'gist',
  amopsortfamily => 'btree/float_ops' },

# gin array_ops
{ amopfamily => 'gin/array_ops', amoplefttype => 'anyarray',
  amoprighttype => 'anyarray', amopstrategy => '1',
  amopopr => '&&(anyarray,anyarray)', amopmethod => 'gin' },
{ amopfamily => 'gin/array_ops', amoplefttype => 'anyarray',
  amoprighttype => 'anyarray', amopstrategy => '2',
  amopopr => '@>(anyarray,anyarray)', amopmethod => 'gin' },
{ amopfamily => 'gin/array_ops', amoplefttype => 'anyarray',
  amoprighttype => 'anyarray', amopstrategy => '3',
  amopopr => '<@(anyarray,anyarray)', amopmethod => 'gin' },
{ amopfamily => 'gin/array_ops', amoplefttype => 'anyarray',
  amoprighttype => 'anyarray', amopstrategy => '4',
  amopopr => '=(anyarray,anyarray)', amopmethod => 'gin' },

# btree enum_ops
{ amopfamily => 'btree/enum_ops', amoplefttype => 'anyenum',
  amoprighttype => 'anyenum', amopstrategy => '1',
  amopopr => '<(anyenum,anyenum)', amopmethod => 'btree' },
{ amopfamily => 'btree/enum_ops', amoplefttype => 'anyenum',
  amoprighttype => 'anyenum', amopstrategy => '2',
  amopopr => '<=(anyenum,anyenum)', amopmethod => 'btree' },
{ amopfamily => 'btree/enum_ops', amoplefttype => 'anyenum',
  amoprighttype => 'anyenum', amopstrategy => '3',
  amopopr => '=(anyenum,anyenum)', amopmethod => 'btree' },
{ amopfamily => 'btree/enum_ops', amoplefttype => 'anyenum',
  amoprighttype => 'anyenum', amopstrategy => '4',
  amopopr => '>=(anyenum,anyenum)', amopmethod => 'btree' },
{ amopfamily => 'btree/enum_ops', amoplefttype => 'anyenum',
  amoprighttype => 'anyenum', amopstrategy => '5',
  amopopr => '>(anyenum,anyenum)', amopmethod => 'btree' },

# hash enum_ops
{ amopfamily => 'hash/enum_ops', amoplefttype => 'anyenum',
  amoprighttype => 'anyenum', amopstrategy => '1',
  amopopr => '=(anyenum,anyenum)', amopmethod => 'hash' },

# btree tsvector_ops
{ amopfamily => 'btree/tsvector_ops', amoplefttype => 'tsvector',
  amoprighttype => 'tsvector', amopstrategy => '1',
  amopopr => '<(tsvector,tsvector)', amopmethod => 'btree' },
{ amopfamily => 'btree/tsvector_ops', amoplefttype => 'tsvector',
  amoprighttype => 'tsvector', amopstrategy => '2',
  amopopr => '<=(tsvector,tsvector)', amopmethod => 'btree' },
{ amopfamily => 'btree/tsvector_ops', amoplefttype => 'tsvector',
  amoprighttype => 'tsvector', amopstrategy => '3',
  amopopr => '=(tsvector,tsvector)', amopmethod => 'btree' },
{ amopfamily => 'btree/tsvector_ops', amoplefttype => 'tsvector',
  amoprighttype => 'tsvector', amopstrategy => '4',
  amopopr => '>=(tsvector,tsvector)', amopmethod => 'btree' },
{ amopfamily => 'btree/tsvector_ops', amoplefttype => 'tsvector',
  amoprighttype => 'tsvector', amopstrategy => '5',
  amopopr => '>(tsvector,tsvector)', amopmethod => 'btree' },

# GiST tsvector_ops
{ amopfamily => 'gist/tsvector_ops', amoplefttype => 'tsvector',
  amoprighttype => 'tsquery', amopstrategy => '1',
  amopopr => '@@(tsvector,tsquery)', amopmethod => 'gist' },

# GIN tsvector_ops
{ amopfamily => 'gin/tsvector_ops', amoplefttype => 'tsvector',
  amoprighttype => 'tsquery', amopstrategy => '1',
  amopopr => '@@(tsvector,tsquery)', amopmethod => 'gin' },
{ amopfamily => 'gin/tsvector_ops', amoplefttype => 'tsvector',
  amoprighttype => 'tsquery', amopstrategy => '2',
  amopopr => '@@@(tsvector,tsquery)', amopmethod => 'gin' },

# btree tsquery_ops
{ amopfamily => 'btree/tsquery_ops', amoplefttype => 'tsquery',
  amoprighttype => 'tsquery', amopstrategy => '1',
  amopopr => '<(tsquery,tsquery)', amopmethod => 'btree' },
{ amopfamily => 'btree/tsquery_ops', amoplefttype => 'tsquery',
  amoprighttype => 'tsquery', amopstrategy => '2',
  amopopr => '<=(tsquery,tsquery)', amopmethod => 'btree' },
{ amopfamily => 'btree/tsquery_ops', amoplefttype => 'tsquery',
  amoprighttype => 'tsquery', amopstrategy => '3',
  amopopr => '=(tsquery,tsquery)', amopmethod => 'btree' },
{ amopfamily => 'btree/tsquery_ops', amoplefttype => 'tsquery',
  amoprighttype => 'tsquery', amopstrategy => '4',
  amopopr => '>=(tsquery,tsquery)', amopmethod => 'btree' },
{ amopfamily => 'btree/tsquery_ops', amoplefttype => 'tsquery',
  amoprighttype => 'tsquery', amopstrategy => '5',
  amopopr => '>(tsquery,tsquery)', amopmethod => 'btree' },

# GiST tsquery_ops
{ amopfamily => 'gist/tsquery_ops', amoplefttype => 'tsquery',
  amoprighttype => 'tsquery', amopstrategy => '7',
  amopopr => '@>(tsquery,tsquery)', amopmethod => 'gist' },
{ amopfamily => 'gist/tsquery_ops', amoplefttype => 'tsquery',
  amoprighttype => 'tsquery', amopstrategy => '8',
  amopopr => '<@(tsquery,tsquery)', amopmethod => 'gist' },

# btree range_ops
{ amopfamily => 'btree/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '1',
  amopopr => '<(anyrange,anyrange)', amopmethod => 'btree' },
{ amopfamily => 'btree/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '2',
  amopopr => '<=(anyrange,anyrange)', amopmethod => 'btree' },
{ amopfamily => 'btree/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '3',
  amopopr => '=(anyrange,anyrange)', amopmethod => 'btree' },
{ amopfamily => 'btree/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '4',
  amopopr => '>=(anyrange,anyrange)', amopmethod => 'btree' },
{ amopfamily => 'btree/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '5',
  amopopr => '>(anyrange,anyrange)', amopmethod => 'btree' },

# hash range_ops
{ amopfamily => 'hash/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '1',
  amopopr => '=(anyrange,anyrange)', amopmethod => 'hash' },

# GiST range_ops
{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '1',
  amopopr => '<<(anyrange,anyrange)', amopmethod => 'gist' },
{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anymultirange', amopstrategy => '1',
  amopopr => '<<(anyrange,anymultirange)', amopmethod => 'gist' },
{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '2',
  amopopr => '&<(anyrange,anyrange)', amopmethod => 'gist' },
{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anymultirange', amopstrategy => '2',
  amopopr => '&<(anyrange,anymultirange)', amopmethod => 'gist' },
{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '3',
  amopopr => '&&(anyrange,anyrange)', amopmethod => 'gist' },
{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anymultirange', amopstrategy => '3',
  amopopr => '&&(anyrange,anymultirange)', amopmethod => 'gist' },
{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '4',
  amopopr => '&>(anyrange,anyrange)', amopmethod => 'gist' },
{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anymultirange', amopstrategy => '4',
  amopopr => '&>(anyrange,anymultirange)', amopmethod => 'gist' },
{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '5',
  amopopr => '>>(anyrange,anyrange)', amopmethod => 'gist' },
{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anymultirange', amopstrategy => '5',
  amopopr => '>>(anyrange,anymultirange)', amopmethod => 'gist' },
{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '6',
  amopopr => '-|-(anyrange,anyrange)', amopmethod => 'gist' },
{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anymultirange', amopstrategy => '6',
  amopopr => '-|-(anyrange,anymultirange)', amopmethod => 'gist' },
{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '7',
  amopopr => '@>(anyrange,anyrange)', amopmethod => 'gist' },
{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anymultirange', amopstrategy => '7',
  amopopr => '@>(anyrange,anymultirange)', amopmethod => 'gist' },
{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '8',
  amopopr => '<@(anyrange,anyrange)', amopmethod => 'gist' },
{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anymultirange', amopstrategy => '8',
  amopopr => '<@(anyrange,anymultirange)', amopmethod => 'gist' },
{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyelement', amopstrategy => '16',
  amopopr => '@>(anyrange,anyelement)', amopmethod => 'gist' },
{ amopfamily => 'gist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '18',
  amopopr => '=(anyrange,anyrange)', amopmethod => 'gist' },

# GiST multirange_ops
{ amopfamily => 'gist/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anymultirange', amopstrategy => '1',
  amopopr => '<<(anymultirange,anymultirange)', amopmethod => 'gist' },
{ amopfamily => 'gist/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anyrange', amopstrategy => '1',
  amopopr => '<<(anymultirange,anyrange)', amopmethod => 'gist' },
{ amopfamily => 'gist/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anymultirange', amopstrategy => '2',
  amopopr => '&<(anymultirange,anymultirange)', amopmethod => 'gist' },
{ amopfamily => 'gist/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anyrange', amopstrategy => '2',
  amopopr => '&<(anymultirange,anyrange)', amopmethod => 'gist' },
{ amopfamily => 'gist/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anymultirange', amopstrategy => '3',
  amopopr => '&&(anymultirange,anymultirange)', amopmethod => 'gist' },
{ amopfamily => 'gist/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anyrange', amopstrategy => '3',
  amopopr => '&&(anymultirange,anyrange)', amopmethod => 'gist' },
{ amopfamily => 'gist/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anymultirange', amopstrategy => '4',
  amopopr => '&>(anymultirange,anymultirange)', amopmethod => 'gist' },
{ amopfamily => 'gist/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anyrange', amopstrategy => '4',
  amopopr => '&>(anymultirange,anyrange)', amopmethod => 'gist' },
{ amopfamily => 'gist/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anymultirange', amopstrategy => '5',
  amopopr => '>>(anymultirange,anymultirange)', amopmethod => 'gist' },
{ amopfamily => 'gist/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anyrange', amopstrategy => '5',
  amopopr => '>>(anymultirange,anyrange)', amopmethod => 'gist' },
{ amopfamily => 'gist/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anymultirange', amopstrategy => '6',
  amopopr => '-|-(anymultirange,anymultirange)', amopmethod => 'gist' },
{ amopfamily => 'gist/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anyrange', amopstrategy => '6',
  amopopr => '-|-(anymultirange,anyrange)', amopmethod => 'gist' },
{ amopfamily => 'gist/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anymultirange', amopstrategy => '7',
  amopopr => '@>(anymultirange,anymultirange)', amopmethod => 'gist' },
{ amopfamily => 'gist/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anyrange', amopstrategy => '7',
  amopopr => '@>(anymultirange,anyrange)', amopmethod => 'gist' },
{ amopfamily => 'gist/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anymultirange', amopstrategy => '8',
  amopopr => '<@(anymultirange,anymultirange)', amopmethod => 'gist' },
{ amopfamily => 'gist/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anyrange', amopstrategy => '8',
  amopopr => '<@(anymultirange,anyrange)', amopmethod => 'gist' },
{ amopfamily => 'gist/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anyelement', amopstrategy => '16',
  amopopr => '@>(anymultirange,anyelement)', amopmethod => 'gist' },
{ amopfamily => 'gist/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anymultirange', amopstrategy => '18',
  amopopr => '=(anymultirange,anymultirange)', amopmethod => 'gist' },

# btree multirange_ops
{ amopfamily => 'btree/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anymultirange', amopstrategy => '1',
  amopopr => '<(anymultirange,anymultirange)', amopmethod => 'btree' },
{ amopfamily => 'btree/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anymultirange', amopstrategy => '2',
  amopopr => '<=(anymultirange,anymultirange)', amopmethod => 'btree' },
{ amopfamily => 'btree/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anymultirange', amopstrategy => '3',
  amopopr => '=(anymultirange,anymultirange)', amopmethod => 'btree' },
{ amopfamily => 'btree/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anymultirange', amopstrategy => '4',
  amopopr => '>=(anymultirange,anymultirange)', amopmethod => 'btree' },
{ amopfamily => 'btree/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anymultirange', amopstrategy => '5',
  amopopr => '>(anymultirange,anymultirange)', amopmethod => 'btree' },

# hash multirange_ops
{ amopfamily => 'hash/multirange_ops', amoplefttype => 'anymultirange',
  amoprighttype => 'anymultirange', amopstrategy => '1',
  amopopr => '=(anymultirange,anymultirange)', amopmethod => 'hash' },

# SP-GiST quad_point_ops
{ amopfamily => 'spgist/quad_point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '11', amopopr => '|>>(point,point)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/quad_point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '30', amopopr => '>^(point,point)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/quad_point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '1', amopopr => '<<(point,point)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/quad_point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '5', amopopr => '>>(point,point)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/quad_point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '10', amopopr => '<<|(point,point)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/quad_point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '29', amopopr => '<^(point,point)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/quad_point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '6', amopopr => '~=(point,point)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/quad_point_ops', amoplefttype => 'point',
  amoprighttype => 'box', amopstrategy => '8', amopopr => '<@(point,box)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/quad_point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '15', amoppurpose => 'o',
  amopopr => '<->(point,point)', amopmethod => 'spgist',
  amopsortfamily => 'btree/float_ops' },

# SP-GiST kd_point_ops
{ amopfamily => 'spgist/kd_point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '11', amopopr => '|>>(point,point)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/kd_point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '30', amopopr => '>^(point,point)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/kd_point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '1', amopopr => '<<(point,point)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/kd_point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '5', amopopr => '>>(point,point)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/kd_point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '10', amopopr => '<<|(point,point)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/kd_point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '29', amopopr => '<^(point,point)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/kd_point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '6', amopopr => '~=(point,point)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/kd_point_ops', amoplefttype => 'point',
  amoprighttype => 'box', amopstrategy => '8', amopopr => '<@(point,box)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/kd_point_ops', amoplefttype => 'point',
  amoprighttype => 'point', amopstrategy => '15', amoppurpose => 'o',
  amopopr => '<->(point,point)', amopmethod => 'spgist',
  amopsortfamily => 'btree/float_ops' },

# SP-GiST text_ops
{ amopfamily => 'spgist/text_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '1', amopopr => '~<~(text,text)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/text_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '2', amopopr => '~<=~(text,text)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/text_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '3', amopopr => '=(text,text)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/text_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '4', amopopr => '~>=~(text,text)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/text_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '5', amopopr => '~>~(text,text)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/text_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '11', amopopr => '<(text,text)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/text_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '12', amopopr => '<=(text,text)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/text_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '14', amopopr => '>=(text,text)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/text_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '15', amopopr => '>(text,text)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/text_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '28', amopopr => '^@(text,text)',
  amopmethod => 'spgist' },

# btree jsonb_ops
{ amopfamily => 'btree/jsonb_ops', amoplefttype => 'jsonb',
  amoprighttype => 'jsonb', amopstrategy => '1', amopopr => '<(jsonb,jsonb)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/jsonb_ops', amoplefttype => 'jsonb',
  amoprighttype => 'jsonb', amopstrategy => '2', amopopr => '<=(jsonb,jsonb)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/jsonb_ops', amoplefttype => 'jsonb',
  amoprighttype => 'jsonb', amopstrategy => '3', amopopr => '=(jsonb,jsonb)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/jsonb_ops', amoplefttype => 'jsonb',
  amoprighttype => 'jsonb', amopstrategy => '4', amopopr => '>=(jsonb,jsonb)',
  amopmethod => 'btree' },
{ amopfamily => 'btree/jsonb_ops', amoplefttype => 'jsonb',
  amoprighttype => 'jsonb', amopstrategy => '5', amopopr => '>(jsonb,jsonb)',
  amopmethod => 'btree' },

# hash jsonb_ops
{ amopfamily => 'hash/jsonb_ops', amoplefttype => 'jsonb',
  amoprighttype => 'jsonb', amopstrategy => '1', amopopr => '=(jsonb,jsonb)',
  amopmethod => 'hash' },

# GIN jsonb_ops
{ amopfamily => 'gin/jsonb_ops', amoplefttype => 'jsonb',
  amoprighttype => 'jsonb', amopstrategy => '7', amopopr => '@>(jsonb,jsonb)',
  amopmethod => 'gin' },
{ amopfamily => 'gin/jsonb_ops', amoplefttype => 'jsonb',
  amoprighttype => 'text', amopstrategy => '9', amopopr => '?(jsonb,text)',
  amopmethod => 'gin' },
{ amopfamily => 'gin/jsonb_ops', amoplefttype => 'jsonb',
  amoprighttype => '_text', amopstrategy => '10', amopopr => '?|(jsonb,_text)',
  amopmethod => 'gin' },
{ amopfamily => 'gin/jsonb_ops', amoplefttype => 'jsonb',
  amoprighttype => '_text', amopstrategy => '11', amopopr => '?&(jsonb,_text)',
  amopmethod => 'gin' },
{ amopfamily => 'gin/jsonb_ops', amoplefttype => 'jsonb',
  amoprighttype => 'jsonpath', amopstrategy => '15',
  amopopr => '@?(jsonb,jsonpath)', amopmethod => 'gin' },
{ amopfamily => 'gin/jsonb_ops', amoplefttype => 'jsonb',
  amoprighttype => 'jsonpath', amopstrategy => '16',
  amopopr => '@@(jsonb,jsonpath)', amopmethod => 'gin' },

# GIN jsonb_path_ops
{ amopfamily => 'gin/jsonb_path_ops', amoplefttype => 'jsonb',
  amoprighttype => 'jsonb', amopstrategy => '7', amopopr => '@>(jsonb,jsonb)',
  amopmethod => 'gin' },
{ amopfamily => 'gin/jsonb_path_ops', amoplefttype => 'jsonb',
  amoprighttype => 'jsonpath', amopstrategy => '15',
  amopopr => '@?(jsonb,jsonpath)', amopmethod => 'gin' },
{ amopfamily => 'gin/jsonb_path_ops', amoplefttype => 'jsonb',
  amoprighttype => 'jsonpath', amopstrategy => '16',
  amopopr => '@@(jsonb,jsonpath)', amopmethod => 'gin' },

# SP-GiST range_ops
{ amopfamily => 'spgist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '1',
  amopopr => '<<(anyrange,anyrange)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '2',
  amopopr => '&<(anyrange,anyrange)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '3',
  amopopr => '&&(anyrange,anyrange)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '4',
  amopopr => '&>(anyrange,anyrange)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '5',
  amopopr => '>>(anyrange,anyrange)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '6',
  amopopr => '-|-(anyrange,anyrange)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '7',
  amopopr => '@>(anyrange,anyrange)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '8',
  amopopr => '<@(anyrange,anyrange)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyelement', amopstrategy => '16',
  amopopr => '@>(anyrange,anyelement)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/range_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '18',
  amopopr => '=(anyrange,anyrange)', amopmethod => 'spgist' },

# SP-GiST box_ops
{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '1', amopopr => '<<(box,box)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '2', amopopr => '&<(box,box)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '3', amopopr => '&&(box,box)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '4', amopopr => '&>(box,box)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '5', amopopr => '>>(box,box)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '6', amopopr => '~=(box,box)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '7', amopopr => '@>(box,box)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '8', amopopr => '<@(box,box)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '9', amopopr => '&<|(box,box)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '10', amopopr => '<<|(box,box)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '11', amopopr => '|>>(box,box)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/box_ops', amoplefttype => 'box', amoprighttype => 'box',
  amopstrategy => '12', amopopr => '|&>(box,box)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/box_ops', amoplefttype => 'box',
  amoprighttype => 'point', amopstrategy => '15', amoppurpose => 'o',
  amopopr => '<->(box,point)', amopmethod => 'spgist',
  amopsortfamily => 'btree/float_ops' },

# SP-GiST poly_ops (supports polygons)
{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '1',
  amopopr => '<<(polygon,polygon)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '2',
  amopopr => '&<(polygon,polygon)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '3',
  amopopr => '&&(polygon,polygon)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '4',
  amopopr => '&>(polygon,polygon)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '5',
  amopopr => '>>(polygon,polygon)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '6',
  amopopr => '~=(polygon,polygon)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '7',
  amopopr => '@>(polygon,polygon)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '8',
  amopopr => '<@(polygon,polygon)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '9',
  amopopr => '&<|(polygon,polygon)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '10',
  amopopr => '<<|(polygon,polygon)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '11',
  amopopr => '|>>(polygon,polygon)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'polygon', amopstrategy => '12',
  amopopr => '|&>(polygon,polygon)', amopmethod => 'spgist' },
{ amopfamily => 'spgist/poly_ops', amoplefttype => 'polygon',
  amoprighttype => 'point', amopstrategy => '15', amoppurpose => 'o',
  amopopr => '<->(polygon,point)', amopmethod => 'spgist',
  amopsortfamily => 'btree/float_ops' },

# GiST inet_ops
{ amopfamily => 'gist/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '3', amopopr => '&&(inet,inet)',
  amopmethod => 'gist' },
{ amopfamily => 'gist/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '18', amopopr => '=(inet,inet)',
  amopmethod => 'gist' },
{ amopfamily => 'gist/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '19', amopopr => '<>(inet,inet)',
  amopmethod => 'gist' },
{ amopfamily => 'gist/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '20', amopopr => '<(inet,inet)',
  amopmethod => 'gist' },
{ amopfamily => 'gist/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '21', amopopr => '<=(inet,inet)',
  amopmethod => 'gist' },
{ amopfamily => 'gist/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '22', amopopr => '>(inet,inet)',
  amopmethod => 'gist' },
{ amopfamily => 'gist/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '23', amopopr => '>=(inet,inet)',
  amopmethod => 'gist' },
{ amopfamily => 'gist/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '24', amopopr => '<<(inet,inet)',
  amopmethod => 'gist' },
{ amopfamily => 'gist/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '25', amopopr => '<<=(inet,inet)',
  amopmethod => 'gist' },
{ amopfamily => 'gist/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '26', amopopr => '>>(inet,inet)',
  amopmethod => 'gist' },
{ amopfamily => 'gist/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '27', amopopr => '>>=(inet,inet)',
  amopmethod => 'gist' },

# SP-GiST inet_ops
{ amopfamily => 'spgist/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '3', amopopr => '&&(inet,inet)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '18', amopopr => '=(inet,inet)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '19', amopopr => '<>(inet,inet)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '20', amopopr => '<(inet,inet)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '21', amopopr => '<=(inet,inet)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '22', amopopr => '>(inet,inet)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '23', amopopr => '>=(inet,inet)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '24', amopopr => '<<(inet,inet)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '25', amopopr => '<<=(inet,inet)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '26', amopopr => '>>(inet,inet)',
  amopmethod => 'spgist' },
{ amopfamily => 'spgist/network_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '27', amopopr => '>>=(inet,inet)',
  amopmethod => 'spgist' },

# BRIN opclasses

# minmax bytea
{ amopfamily => 'brin/bytea_minmax_ops', amoplefttype => 'bytea',
  amoprighttype => 'bytea', amopstrategy => '1', amopopr => '<(bytea,bytea)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/bytea_minmax_ops', amoplefttype => 'bytea',
  amoprighttype => 'bytea', amopstrategy => '2', amopopr => '<=(bytea,bytea)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/bytea_minmax_ops', amoplefttype => 'bytea',
  amoprighttype => 'bytea', amopstrategy => '3', amopopr => '=(bytea,bytea)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/bytea_minmax_ops', amoplefttype => 'bytea',
  amoprighttype => 'bytea', amopstrategy => '4', amopopr => '>=(bytea,bytea)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/bytea_minmax_ops', amoplefttype => 'bytea',
  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)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/char_minmax_ops', amoplefttype => 'char',
  amoprighttype => 'char', amopstrategy => '2', amopopr => '<=(char,char)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/char_minmax_ops', amoplefttype => 'char',
  amoprighttype => 'char', amopstrategy => '3', amopopr => '=(char,char)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/char_minmax_ops', amoplefttype => 'char',
  amoprighttype => 'char', amopstrategy => '4', amopopr => '>=(char,char)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/char_minmax_ops', amoplefttype => 'char',
  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)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/name_minmax_ops', amoplefttype => 'name',
  amoprighttype => 'name', amopstrategy => '2', amopopr => '<=(name,name)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/name_minmax_ops', amoplefttype => 'name',
  amoprighttype => 'name', amopstrategy => '3', amopopr => '=(name,name)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/name_minmax_ops', amoplefttype => 'name',
  amoprighttype => 'name', amopstrategy => '4', amopopr => '>=(name,name)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/name_minmax_ops', amoplefttype => 'name',
  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',
  amoprighttype => 'int8', amopstrategy => '1', amopopr => '<(int8,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8',
  amoprighttype => 'int8', amopstrategy => '2', amopopr => '<=(int8,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8',
  amoprighttype => 'int8', amopstrategy => '3', amopopr => '=(int8,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8',
  amoprighttype => 'int8', amopstrategy => '4', amopopr => '>=(int8,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8',
  amoprighttype => 'int8', amopstrategy => '5', amopopr => '>(int8,int8)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8',
  amoprighttype => 'int2', amopstrategy => '1', amopopr => '<(int8,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8',
  amoprighttype => 'int2', amopstrategy => '2', amopopr => '<=(int8,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8',
  amoprighttype => 'int2', amopstrategy => '3', amopopr => '=(int8,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8',
  amoprighttype => 'int2', amopstrategy => '4', amopopr => '>=(int8,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8',
  amoprighttype => 'int2', amopstrategy => '5', amopopr => '>(int8,int2)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8',
  amoprighttype => 'int4', amopstrategy => '1', amopopr => '<(int8,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8',
  amoprighttype => 'int4', amopstrategy => '2', amopopr => '<=(int8,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8',
  amoprighttype => 'int4', amopstrategy => '3', amopopr => '=(int8,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8',
  amoprighttype => 'int4', amopstrategy => '4', amopopr => '>=(int8,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int8',
  amoprighttype => 'int4', amopstrategy => '5', amopopr => '>(int8,int4)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2',
  amoprighttype => 'int2', amopstrategy => '1', amopopr => '<(int2,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2',
  amoprighttype => 'int2', amopstrategy => '2', amopopr => '<=(int2,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2',
  amoprighttype => 'int2', amopstrategy => '3', amopopr => '=(int2,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2',
  amoprighttype => 'int2', amopstrategy => '4', amopopr => '>=(int2,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2',
  amoprighttype => 'int2', amopstrategy => '5', amopopr => '>(int2,int2)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2',
  amoprighttype => 'int8', amopstrategy => '1', amopopr => '<(int2,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2',
  amoprighttype => 'int8', amopstrategy => '2', amopopr => '<=(int2,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2',
  amoprighttype => 'int8', amopstrategy => '3', amopopr => '=(int2,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2',
  amoprighttype => 'int8', amopstrategy => '4', amopopr => '>=(int2,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2',
  amoprighttype => 'int8', amopstrategy => '5', amopopr => '>(int2,int8)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2',
  amoprighttype => 'int4', amopstrategy => '1', amopopr => '<(int2,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2',
  amoprighttype => 'int4', amopstrategy => '2', amopopr => '<=(int2,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2',
  amoprighttype => 'int4', amopstrategy => '3', amopopr => '=(int2,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2',
  amoprighttype => 'int4', amopstrategy => '4', amopopr => '>=(int2,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int2',
  amoprighttype => 'int4', amopstrategy => '5', amopopr => '>(int2,int4)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4',
  amoprighttype => 'int4', amopstrategy => '1', amopopr => '<(int4,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4',
  amoprighttype => 'int4', amopstrategy => '2', amopopr => '<=(int4,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4',
  amoprighttype => 'int4', amopstrategy => '3', amopopr => '=(int4,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4',
  amoprighttype => 'int4', amopstrategy => '4', amopopr => '>=(int4,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4',
  amoprighttype => 'int4', amopstrategy => '5', amopopr => '>(int4,int4)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4',
  amoprighttype => 'int2', amopstrategy => '1', amopopr => '<(int4,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4',
  amoprighttype => 'int2', amopstrategy => '2', amopopr => '<=(int4,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4',
  amoprighttype => 'int2', amopstrategy => '3', amopopr => '=(int4,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4',
  amoprighttype => 'int2', amopstrategy => '4', amopopr => '>=(int4,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4',
  amoprighttype => 'int2', amopstrategy => '5', amopopr => '>(int4,int2)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4',
  amoprighttype => 'int8', amopstrategy => '1', amopopr => '<(int4,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4',
  amoprighttype => 'int8', amopstrategy => '2', amopopr => '<=(int4,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4',
  amoprighttype => 'int8', amopstrategy => '3', amopopr => '=(int4,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4',
  amoprighttype => 'int8', amopstrategy => '4', amopopr => '>=(int4,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_ops', amoplefttype => 'int4',
  amoprighttype => 'int8', amopstrategy => '5', amopopr => '>(int4,int8)',
  amopmethod => 'brin' },

# minmax multi integer

{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int8',
  amoprighttype => 'int8', amopstrategy => '1', amopopr => '<(int8,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int8',
  amoprighttype => 'int8', amopstrategy => '2', amopopr => '<=(int8,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int8',
  amoprighttype => 'int8', amopstrategy => '3', amopopr => '=(int8,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int8',
  amoprighttype => 'int8', amopstrategy => '4', amopopr => '>=(int8,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int8',
  amoprighttype => 'int8', amopstrategy => '5', amopopr => '>(int8,int8)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int8',
  amoprighttype => 'int2', amopstrategy => '1', amopopr => '<(int8,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int8',
  amoprighttype => 'int2', amopstrategy => '2', amopopr => '<=(int8,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int8',
  amoprighttype => 'int2', amopstrategy => '3', amopopr => '=(int8,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int8',
  amoprighttype => 'int2', amopstrategy => '4', amopopr => '>=(int8,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int8',
  amoprighttype => 'int2', amopstrategy => '5', amopopr => '>(int8,int2)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int8',
  amoprighttype => 'int4', amopstrategy => '1', amopopr => '<(int8,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int8',
  amoprighttype => 'int4', amopstrategy => '2', amopopr => '<=(int8,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int8',
  amoprighttype => 'int4', amopstrategy => '3', amopopr => '=(int8,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int8',
  amoprighttype => 'int4', amopstrategy => '4', amopopr => '>=(int8,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int8',
  amoprighttype => 'int4', amopstrategy => '5', amopopr => '>(int8,int4)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int2',
  amoprighttype => 'int2', amopstrategy => '1', amopopr => '<(int2,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int2',
  amoprighttype => 'int2', amopstrategy => '2', amopopr => '<=(int2,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int2',
  amoprighttype => 'int2', amopstrategy => '3', amopopr => '=(int2,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int2',
  amoprighttype => 'int2', amopstrategy => '4', amopopr => '>=(int2,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int2',
  amoprighttype => 'int2', amopstrategy => '5', amopopr => '>(int2,int2)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int2',
  amoprighttype => 'int8', amopstrategy => '1', amopopr => '<(int2,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int2',
  amoprighttype => 'int8', amopstrategy => '2', amopopr => '<=(int2,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int2',
  amoprighttype => 'int8', amopstrategy => '3', amopopr => '=(int2,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int2',
  amoprighttype => 'int8', amopstrategy => '4', amopopr => '>=(int2,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int2',
  amoprighttype => 'int8', amopstrategy => '5', amopopr => '>(int2,int8)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int2',
  amoprighttype => 'int4', amopstrategy => '1', amopopr => '<(int2,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int2',
  amoprighttype => 'int4', amopstrategy => '2', amopopr => '<=(int2,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int2',
  amoprighttype => 'int4', amopstrategy => '3', amopopr => '=(int2,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int2',
  amoprighttype => 'int4', amopstrategy => '4', amopopr => '>=(int2,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int2',
  amoprighttype => 'int4', amopstrategy => '5', amopopr => '>(int2,int4)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int4',
  amoprighttype => 'int4', amopstrategy => '1', amopopr => '<(int4,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int4',
  amoprighttype => 'int4', amopstrategy => '2', amopopr => '<=(int4,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int4',
  amoprighttype => 'int4', amopstrategy => '3', amopopr => '=(int4,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int4',
  amoprighttype => 'int4', amopstrategy => '4', amopopr => '>=(int4,int4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int4',
  amoprighttype => 'int4', amopstrategy => '5', amopopr => '>(int4,int4)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int4',
  amoprighttype => 'int2', amopstrategy => '1', amopopr => '<(int4,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int4',
  amoprighttype => 'int2', amopstrategy => '2', amopopr => '<=(int4,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int4',
  amoprighttype => 'int2', amopstrategy => '3', amopopr => '=(int4,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int4',
  amoprighttype => 'int2', amopstrategy => '4', amopopr => '>=(int4,int2)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int4',
  amoprighttype => 'int2', amopstrategy => '5', amopopr => '>(int4,int2)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int4',
  amoprighttype => 'int8', amopstrategy => '1', amopopr => '<(int4,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int4',
  amoprighttype => 'int8', amopstrategy => '2', amopopr => '<=(int4,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int4',
  amoprighttype => 'int8', amopstrategy => '3', amopopr => '=(int4,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int4',
  amoprighttype => 'int8', amopstrategy => '4', amopopr => '>=(int4,int8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/integer_minmax_multi_ops', amoplefttype => 'int4',
  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)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/text_minmax_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '2', amopopr => '<=(text,text)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/text_minmax_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '3', amopopr => '=(text,text)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/text_minmax_ops', amoplefttype => 'text',
  amoprighttype => 'text', amopstrategy => '4', amopopr => '>=(text,text)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/text_minmax_ops', amoplefttype => 'text',
  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)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/oid_minmax_ops', amoplefttype => 'oid',
  amoprighttype => 'oid', amopstrategy => '2', amopopr => '<=(oid,oid)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/oid_minmax_ops', amoplefttype => 'oid',
  amoprighttype => 'oid', amopstrategy => '3', amopopr => '=(oid,oid)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/oid_minmax_ops', amoplefttype => 'oid',
  amoprighttype => 'oid', amopstrategy => '4', amopopr => '>=(oid,oid)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/oid_minmax_ops', amoplefttype => 'oid',
  amoprighttype => 'oid', amopstrategy => '5', amopopr => '>(oid,oid)',
  amopmethod => 'brin' },

# minmax multi oid
{ amopfamily => 'brin/oid_minmax_multi_ops', amoplefttype => 'oid',
  amoprighttype => 'oid', amopstrategy => '1', amopopr => '<(oid,oid)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/oid_minmax_multi_ops', amoplefttype => 'oid',
  amoprighttype => 'oid', amopstrategy => '2', amopopr => '<=(oid,oid)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/oid_minmax_multi_ops', amoplefttype => 'oid',
  amoprighttype => 'oid', amopstrategy => '3', amopopr => '=(oid,oid)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/oid_minmax_multi_ops', amoplefttype => 'oid',
  amoprighttype => 'oid', amopstrategy => '4', amopopr => '>=(oid,oid)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/oid_minmax_multi_ops', amoplefttype => 'oid',
  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)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/tid_minmax_ops', amoplefttype => 'tid',
  amoprighttype => 'tid', amopstrategy => '2', amopopr => '<=(tid,tid)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/tid_minmax_ops', amoplefttype => 'tid',
  amoprighttype => 'tid', amopstrategy => '3', amopopr => '=(tid,tid)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/tid_minmax_ops', amoplefttype => 'tid',
  amoprighttype => 'tid', amopstrategy => '4', amopopr => '>=(tid,tid)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/tid_minmax_ops', amoplefttype => 'tid',
  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)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/tid_minmax_multi_ops', amoplefttype => 'tid',
  amoprighttype => 'tid', amopstrategy => '2', amopopr => '<=(tid,tid)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/tid_minmax_multi_ops', amoplefttype => 'tid',
  amoprighttype => 'tid', amopstrategy => '3', amopopr => '=(tid,tid)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/tid_minmax_multi_ops', amoplefttype => 'tid',
  amoprighttype => 'tid', amopstrategy => '4', amopopr => '>=(tid,tid)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/tid_minmax_multi_ops', amoplefttype => 'tid',
  amoprighttype => 'tid', amopstrategy => '5', amopopr => '>(tid,tid)',
  amopmethod => 'brin' },

# minmax float (float4, float8)

{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float4',
  amoprighttype => 'float4', amopstrategy => '1', amopopr => '<(float4,float4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float4',
  amoprighttype => 'float4', amopstrategy => '2',
  amopopr => '<=(float4,float4)', amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float4',
  amoprighttype => 'float4', amopstrategy => '3', amopopr => '=(float4,float4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float4',
  amoprighttype => 'float4', amopstrategy => '4',
  amopopr => '>=(float4,float4)', amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float4',
  amoprighttype => 'float4', amopstrategy => '5', amopopr => '>(float4,float4)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float4',
  amoprighttype => 'float8', amopstrategy => '1', amopopr => '<(float4,float8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float4',
  amoprighttype => 'float8', amopstrategy => '2',
  amopopr => '<=(float4,float8)', amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float4',
  amoprighttype => 'float8', amopstrategy => '3', amopopr => '=(float4,float8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float4',
  amoprighttype => 'float8', amopstrategy => '4',
  amopopr => '>=(float4,float8)', amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float4',
  amoprighttype => 'float8', amopstrategy => '5', amopopr => '>(float4,float8)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float8',
  amoprighttype => 'float4', amopstrategy => '1', amopopr => '<(float8,float4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float8',
  amoprighttype => 'float4', amopstrategy => '2',
  amopopr => '<=(float8,float4)', amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float8',
  amoprighttype => 'float4', amopstrategy => '3', amopopr => '=(float8,float4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float8',
  amoprighttype => 'float4', amopstrategy => '4',
  amopopr => '>=(float8,float4)', amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float8',
  amoprighttype => 'float4', amopstrategy => '5', amopopr => '>(float8,float4)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float8',
  amoprighttype => 'float8', amopstrategy => '1', amopopr => '<(float8,float8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float8',
  amoprighttype => 'float8', amopstrategy => '2',
  amopopr => '<=(float8,float8)', amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float8',
  amoprighttype => 'float8', amopstrategy => '3', amopopr => '=(float8,float8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float8',
  amoprighttype => 'float8', amopstrategy => '4',
  amopopr => '>=(float8,float8)', amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_ops', amoplefttype => 'float8',
  amoprighttype => 'float8', amopstrategy => '5', amopopr => '>(float8,float8)',
  amopmethod => 'brin' },

# minmax multi float (float4, float8)

{ amopfamily => 'brin/float_minmax_multi_ops', amoplefttype => 'float4',
  amoprighttype => 'float4', amopstrategy => '1', amopopr => '<(float4,float4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_multi_ops', amoplefttype => 'float4',
  amoprighttype => 'float4', amopstrategy => '2',
  amopopr => '<=(float4,float4)', amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_multi_ops', amoplefttype => 'float4',
  amoprighttype => 'float4', amopstrategy => '3', amopopr => '=(float4,float4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_multi_ops', amoplefttype => 'float4',
  amoprighttype => 'float4', amopstrategy => '4',
  amopopr => '>=(float4,float4)', amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_multi_ops', amoplefttype => 'float4',
  amoprighttype => 'float4', amopstrategy => '5', amopopr => '>(float4,float4)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/float_minmax_multi_ops', amoplefttype => 'float4',
  amoprighttype => 'float8', amopstrategy => '1', amopopr => '<(float4,float8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_multi_ops', amoplefttype => 'float4',
  amoprighttype => 'float8', amopstrategy => '2',
  amopopr => '<=(float4,float8)', amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_multi_ops', amoplefttype => 'float4',
  amoprighttype => 'float8', amopstrategy => '3', amopopr => '=(float4,float8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_multi_ops', amoplefttype => 'float4',
  amoprighttype => 'float8', amopstrategy => '4',
  amopopr => '>=(float4,float8)', amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_multi_ops', amoplefttype => 'float4',
  amoprighttype => 'float8', amopstrategy => '5', amopopr => '>(float4,float8)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/float_minmax_multi_ops', amoplefttype => 'float8',
  amoprighttype => 'float4', amopstrategy => '1', amopopr => '<(float8,float4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_multi_ops', amoplefttype => 'float8',
  amoprighttype => 'float4', amopstrategy => '2',
  amopopr => '<=(float8,float4)', amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_multi_ops', amoplefttype => 'float8',
  amoprighttype => 'float4', amopstrategy => '3', amopopr => '=(float8,float4)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_multi_ops', amoplefttype => 'float8',
  amoprighttype => 'float4', amopstrategy => '4',
  amopopr => '>=(float8,float4)', amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_multi_ops', amoplefttype => 'float8',
  amoprighttype => 'float4', amopstrategy => '5', amopopr => '>(float8,float4)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/float_minmax_multi_ops', amoplefttype => 'float8',
  amoprighttype => 'float8', amopstrategy => '1', amopopr => '<(float8,float8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_multi_ops', amoplefttype => 'float8',
  amoprighttype => 'float8', amopstrategy => '2',
  amopopr => '<=(float8,float8)', amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_multi_ops', amoplefttype => 'float8',
  amoprighttype => 'float8', amopstrategy => '3', amopopr => '=(float8,float8)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_multi_ops', amoplefttype => 'float8',
  amoprighttype => 'float8', amopstrategy => '4',
  amopopr => '>=(float8,float8)', amopmethod => 'brin' },
{ amopfamily => 'brin/float_minmax_multi_ops', amoplefttype => 'float8',
  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',
  amopopr => '<(macaddr,macaddr)', amopmethod => 'brin' },
{ amopfamily => 'brin/macaddr_minmax_ops', amoplefttype => 'macaddr',
  amoprighttype => 'macaddr', amopstrategy => '2',
  amopopr => '<=(macaddr,macaddr)', amopmethod => 'brin' },
{ amopfamily => 'brin/macaddr_minmax_ops', amoplefttype => 'macaddr',
  amoprighttype => 'macaddr', amopstrategy => '3',
  amopopr => '=(macaddr,macaddr)', amopmethod => 'brin' },
{ amopfamily => 'brin/macaddr_minmax_ops', amoplefttype => 'macaddr',
  amoprighttype => 'macaddr', amopstrategy => '4',
  amopopr => '>=(macaddr,macaddr)', amopmethod => 'brin' },
{ amopfamily => 'brin/macaddr_minmax_ops', amoplefttype => 'macaddr',
  amoprighttype => 'macaddr', amopstrategy => '5',
  amopopr => '>(macaddr,macaddr)', amopmethod => 'brin' },

# minmax multi macaddr
{ amopfamily => 'brin/macaddr_minmax_multi_ops', amoplefttype => 'macaddr',
  amoprighttype => 'macaddr', amopstrategy => '1',
  amopopr => '<(macaddr,macaddr)', amopmethod => 'brin' },
{ amopfamily => 'brin/macaddr_minmax_multi_ops', amoplefttype => 'macaddr',
  amoprighttype => 'macaddr', amopstrategy => '2',
  amopopr => '<=(macaddr,macaddr)', amopmethod => 'brin' },
{ amopfamily => 'brin/macaddr_minmax_multi_ops', amoplefttype => 'macaddr',
  amoprighttype => 'macaddr', amopstrategy => '3',
  amopopr => '=(macaddr,macaddr)', amopmethod => 'brin' },
{ amopfamily => 'brin/macaddr_minmax_multi_ops', amoplefttype => 'macaddr',
  amoprighttype => 'macaddr', amopstrategy => '4',
  amopopr => '>=(macaddr,macaddr)', amopmethod => 'brin' },
{ amopfamily => 'brin/macaddr_minmax_multi_ops', amoplefttype => 'macaddr',
  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',
  amopopr => '<(macaddr8,macaddr8)', amopmethod => 'brin' },
{ amopfamily => 'brin/macaddr8_minmax_ops', amoplefttype => 'macaddr8',
  amoprighttype => 'macaddr8', amopstrategy => '2',
  amopopr => '<=(macaddr8,macaddr8)', amopmethod => 'brin' },
{ amopfamily => 'brin/macaddr8_minmax_ops', amoplefttype => 'macaddr8',
  amoprighttype => 'macaddr8', amopstrategy => '3',
  amopopr => '=(macaddr8,macaddr8)', amopmethod => 'brin' },
{ amopfamily => 'brin/macaddr8_minmax_ops', amoplefttype => 'macaddr8',
  amoprighttype => 'macaddr8', amopstrategy => '4',
  amopopr => '>=(macaddr8,macaddr8)', amopmethod => 'brin' },
{ amopfamily => 'brin/macaddr8_minmax_ops', amoplefttype => 'macaddr8',
  amoprighttype => 'macaddr8', amopstrategy => '5',
  amopopr => '>(macaddr8,macaddr8)', amopmethod => 'brin' },

# minmax multi macaddr8
{ amopfamily => 'brin/macaddr8_minmax_multi_ops', amoplefttype => 'macaddr8',
  amoprighttype => 'macaddr8', amopstrategy => '1',
  amopopr => '<(macaddr8,macaddr8)', amopmethod => 'brin' },
{ amopfamily => 'brin/macaddr8_minmax_multi_ops', amoplefttype => 'macaddr8',
  amoprighttype => 'macaddr8', amopstrategy => '2',
  amopopr => '<=(macaddr8,macaddr8)', amopmethod => 'brin' },
{ amopfamily => 'brin/macaddr8_minmax_multi_ops', amoplefttype => 'macaddr8',
  amoprighttype => 'macaddr8', amopstrategy => '3',
  amopopr => '=(macaddr8,macaddr8)', amopmethod => 'brin' },
{ amopfamily => 'brin/macaddr8_minmax_multi_ops', amoplefttype => 'macaddr8',
  amoprighttype => 'macaddr8', amopstrategy => '4',
  amopopr => '>=(macaddr8,macaddr8)', amopmethod => 'brin' },
{ amopfamily => 'brin/macaddr8_minmax_multi_ops', amoplefttype => 'macaddr8',
  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)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/network_minmax_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '2', amopopr => '<=(inet,inet)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/network_minmax_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '3', amopopr => '=(inet,inet)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/network_minmax_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '4', amopopr => '>=(inet,inet)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/network_minmax_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '5', amopopr => '>(inet,inet)',
  amopmethod => 'brin' },

# minmax multi inet
{ amopfamily => 'brin/network_minmax_multi_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '1', amopopr => '<(inet,inet)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/network_minmax_multi_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '2', amopopr => '<=(inet,inet)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/network_minmax_multi_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '3', amopopr => '=(inet,inet)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/network_minmax_multi_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '4', amopopr => '>=(inet,inet)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/network_minmax_multi_ops', amoplefttype => 'inet',
  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)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/network_inclusion_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '7', amopopr => '>>=(inet,inet)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/network_inclusion_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '8', amopopr => '<<=(inet,inet)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/network_inclusion_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '18', amopopr => '=(inet,inet)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/network_inclusion_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '24', amopopr => '>>(inet,inet)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/network_inclusion_ops', amoplefttype => 'inet',
  amoprighttype => 'inet', amopstrategy => '26', amopopr => '<<(inet,inet)',
  amopmethod => 'brin' },

# minmax character
{ amopfamily => 'brin/bpchar_minmax_ops', amoplefttype => 'bpchar',
  amoprighttype => 'bpchar', amopstrategy => '1', amopopr => '<(bpchar,bpchar)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/bpchar_minmax_ops', amoplefttype => 'bpchar',
  amoprighttype => 'bpchar', amopstrategy => '2',
  amopopr => '<=(bpchar,bpchar)', amopmethod => 'brin' },
{ amopfamily => 'brin/bpchar_minmax_ops', amoplefttype => 'bpchar',
  amoprighttype => 'bpchar', amopstrategy => '3', amopopr => '=(bpchar,bpchar)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/bpchar_minmax_ops', amoplefttype => 'bpchar',
  amoprighttype => 'bpchar', amopstrategy => '4',
  amopopr => '>=(bpchar,bpchar)', amopmethod => 'brin' },
{ amopfamily => 'brin/bpchar_minmax_ops', amoplefttype => 'bpchar',
  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)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/time_minmax_ops', amoplefttype => 'time',
  amoprighttype => 'time', amopstrategy => '2', amopopr => '<=(time,time)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/time_minmax_ops', amoplefttype => 'time',
  amoprighttype => 'time', amopstrategy => '3', amopopr => '=(time,time)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/time_minmax_ops', amoplefttype => 'time',
  amoprighttype => 'time', amopstrategy => '4', amopopr => '>=(time,time)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/time_minmax_ops', amoplefttype => 'time',
  amoprighttype => 'time', amopstrategy => '5', amopopr => '>(time,time)',
  amopmethod => 'brin' },

# minmax multi time without time zone
{ amopfamily => 'brin/time_minmax_multi_ops', amoplefttype => 'time',
  amoprighttype => 'time', amopstrategy => '1', amopopr => '<(time,time)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/time_minmax_multi_ops', amoplefttype => 'time',
  amoprighttype => 'time', amopstrategy => '2', amopopr => '<=(time,time)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/time_minmax_multi_ops', amoplefttype => 'time',
  amoprighttype => 'time', amopstrategy => '3', amopopr => '=(time,time)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/time_minmax_multi_ops', amoplefttype => 'time',
  amoprighttype => 'time', amopstrategy => '4', amopopr => '>=(time,time)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/time_minmax_multi_ops', amoplefttype => 'time',
  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',
  amoprighttype => 'timestamp', amopstrategy => '1',
  amopopr => '<(timestamp,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamp', amopstrategy => '2',
  amopopr => '<=(timestamp,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamp', amopstrategy => '3',
  amopopr => '=(timestamp,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamp', amopstrategy => '4',
  amopopr => '>=(timestamp,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamp', amopstrategy => '5',
  amopopr => '>(timestamp,timestamp)', amopmethod => 'brin' },

{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp',
  amoprighttype => 'date', amopstrategy => '1', amopopr => '<(timestamp,date)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp',
  amoprighttype => 'date', amopstrategy => '2', amopopr => '<=(timestamp,date)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp',
  amoprighttype => 'date', amopstrategy => '3', amopopr => '=(timestamp,date)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp',
  amoprighttype => 'date', amopstrategy => '4', amopopr => '>=(timestamp,date)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp',
  amoprighttype => 'date', amopstrategy => '5', amopopr => '>(timestamp,date)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamptz', amopstrategy => '1',
  amopopr => '<(timestamp,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamptz', amopstrategy => '2',
  amopopr => '<=(timestamp,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamptz', amopstrategy => '3',
  amopopr => '=(timestamp,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamptz', amopstrategy => '4',
  amopopr => '>=(timestamp,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamptz', amopstrategy => '5',
  amopopr => '>(timestamp,timestamptz)', amopmethod => 'brin' },

{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date',
  amoprighttype => 'date', amopstrategy => '1', amopopr => '<(date,date)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date',
  amoprighttype => 'date', amopstrategy => '2', amopopr => '<=(date,date)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date',
  amoprighttype => 'date', amopstrategy => '3', amopopr => '=(date,date)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date',
  amoprighttype => 'date', amopstrategy => '4', amopopr => '>=(date,date)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date',
  amoprighttype => 'date', amopstrategy => '5', amopopr => '>(date,date)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date',
  amoprighttype => 'timestamp', amopstrategy => '1',
  amopopr => '<(date,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date',
  amoprighttype => 'timestamp', amopstrategy => '2',
  amopopr => '<=(date,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date',
  amoprighttype => 'timestamp', amopstrategy => '3',
  amopopr => '=(date,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date',
  amoprighttype => 'timestamp', amopstrategy => '4',
  amopopr => '>=(date,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date',
  amoprighttype => 'timestamp', amopstrategy => '5',
  amopopr => '>(date,timestamp)', amopmethod => 'brin' },

{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date',
  amoprighttype => 'timestamptz', amopstrategy => '1',
  amopopr => '<(date,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date',
  amoprighttype => 'timestamptz', amopstrategy => '2',
  amopopr => '<=(date,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date',
  amoprighttype => 'timestamptz', amopstrategy => '3',
  amopopr => '=(date,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date',
  amoprighttype => 'timestamptz', amopstrategy => '4',
  amopopr => '>=(date,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'date',
  amoprighttype => 'timestamptz', amopstrategy => '5',
  amopopr => '>(date,timestamptz)', amopmethod => 'brin' },

{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'date', amopstrategy => '1',
  amopopr => '<(timestamptz,date)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'date', amopstrategy => '2',
  amopopr => '<=(timestamptz,date)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'date', amopstrategy => '3',
  amopopr => '=(timestamptz,date)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'date', amopstrategy => '4',
  amopopr => '>=(timestamptz,date)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'date', amopstrategy => '5',
  amopopr => '>(timestamptz,date)', amopmethod => 'brin' },

{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamp', amopstrategy => '1',
  amopopr => '<(timestamptz,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamp', amopstrategy => '2',
  amopopr => '<=(timestamptz,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamp', amopstrategy => '3',
  amopopr => '=(timestamptz,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamp', amopstrategy => '4',
  amopopr => '>=(timestamptz,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamp', amopstrategy => '5',
  amopopr => '>(timestamptz,timestamp)', amopmethod => 'brin' },

{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamptz', amopstrategy => '1',
  amopopr => '<(timestamptz,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamptz', amopstrategy => '2',
  amopopr => '<=(timestamptz,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamptz', amopstrategy => '3',
  amopopr => '=(timestamptz,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamptz', amopstrategy => '4',
  amopopr => '>=(timestamptz,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamptz', amopstrategy => '5',
  amopopr => '>(timestamptz,timestamptz)', amopmethod => 'brin' },

# minmax multi datetime (date, timestamp, timestamptz)

{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamp', amopstrategy => '1',
  amopopr => '<(timestamp,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamp', amopstrategy => '2',
  amopopr => '<=(timestamp,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamp', amopstrategy => '3',
  amopopr => '=(timestamp,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamp', amopstrategy => '4',
  amopopr => '>=(timestamp,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamp', amopstrategy => '5',
  amopopr => '>(timestamp,timestamp)', amopmethod => 'brin' },

{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamp',
  amoprighttype => 'date', amopstrategy => '1', amopopr => '<(timestamp,date)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamp',
  amoprighttype => 'date', amopstrategy => '2', amopopr => '<=(timestamp,date)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamp',
  amoprighttype => 'date', amopstrategy => '3', amopopr => '=(timestamp,date)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamp',
  amoprighttype => 'date', amopstrategy => '4', amopopr => '>=(timestamp,date)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamp',
  amoprighttype => 'date', amopstrategy => '5', amopopr => '>(timestamp,date)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamptz', amopstrategy => '1',
  amopopr => '<(timestamp,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamptz', amopstrategy => '2',
  amopopr => '<=(timestamp,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamptz', amopstrategy => '3',
  amopopr => '=(timestamp,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamptz', amopstrategy => '4',
  amopopr => '>=(timestamp,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamp',
  amoprighttype => 'timestamptz', amopstrategy => '5',
  amopopr => '>(timestamp,timestamptz)', amopmethod => 'brin' },

{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'date',
  amoprighttype => 'date', amopstrategy => '1', amopopr => '<(date,date)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'date',
  amoprighttype => 'date', amopstrategy => '2', amopopr => '<=(date,date)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'date',
  amoprighttype => 'date', amopstrategy => '3', amopopr => '=(date,date)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'date',
  amoprighttype => 'date', amopstrategy => '4', amopopr => '>=(date,date)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'date',
  amoprighttype => 'date', amopstrategy => '5', amopopr => '>(date,date)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'date',
  amoprighttype => 'timestamp', amopstrategy => '1',
  amopopr => '<(date,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'date',
  amoprighttype => 'timestamp', amopstrategy => '2',
  amopopr => '<=(date,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'date',
  amoprighttype => 'timestamp', amopstrategy => '3',
  amopopr => '=(date,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'date',
  amoprighttype => 'timestamp', amopstrategy => '4',
  amopopr => '>=(date,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'date',
  amoprighttype => 'timestamp', amopstrategy => '5',
  amopopr => '>(date,timestamp)', amopmethod => 'brin' },

{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'date',
  amoprighttype => 'timestamptz', amopstrategy => '1',
  amopopr => '<(date,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'date',
  amoprighttype => 'timestamptz', amopstrategy => '2',
  amopopr => '<=(date,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'date',
  amoprighttype => 'timestamptz', amopstrategy => '3',
  amopopr => '=(date,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'date',
  amoprighttype => 'timestamptz', amopstrategy => '4',
  amopopr => '>=(date,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'date',
  amoprighttype => 'timestamptz', amopstrategy => '5',
  amopopr => '>(date,timestamptz)', amopmethod => 'brin' },

{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'date', amopstrategy => '1',
  amopopr => '<(timestamptz,date)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'date', amopstrategy => '2',
  amopopr => '<=(timestamptz,date)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'date', amopstrategy => '3',
  amopopr => '=(timestamptz,date)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'date', amopstrategy => '4',
  amopopr => '>=(timestamptz,date)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'date', amopstrategy => '5',
  amopopr => '>(timestamptz,date)', amopmethod => 'brin' },

{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamp', amopstrategy => '1',
  amopopr => '<(timestamptz,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamp', amopstrategy => '2',
  amopopr => '<=(timestamptz,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamp', amopstrategy => '3',
  amopopr => '=(timestamptz,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamp', amopstrategy => '4',
  amopopr => '>=(timestamptz,timestamp)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamp', amopstrategy => '5',
  amopopr => '>(timestamptz,timestamp)', amopmethod => 'brin' },

{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamptz', amopstrategy => '1',
  amopopr => '<(timestamptz,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamptz', amopstrategy => '2',
  amopopr => '<=(timestamptz,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamptz', amopstrategy => '3',
  amopopr => '=(timestamptz,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamptz',
  amoprighttype => 'timestamptz', amopstrategy => '4',
  amopopr => '>=(timestamptz,timestamptz)', amopmethod => 'brin' },
{ amopfamily => 'brin/datetime_minmax_multi_ops', amoplefttype => 'timestamptz',
  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',
  amopopr => '<(interval,interval)', amopmethod => 'brin' },
{ amopfamily => 'brin/interval_minmax_ops', amoplefttype => 'interval',
  amoprighttype => 'interval', amopstrategy => '2',
  amopopr => '<=(interval,interval)', amopmethod => 'brin' },
{ amopfamily => 'brin/interval_minmax_ops', amoplefttype => 'interval',
  amoprighttype => 'interval', amopstrategy => '3',
  amopopr => '=(interval,interval)', amopmethod => 'brin' },
{ amopfamily => 'brin/interval_minmax_ops', amoplefttype => 'interval',
  amoprighttype => 'interval', amopstrategy => '4',
  amopopr => '>=(interval,interval)', amopmethod => 'brin' },
{ amopfamily => 'brin/interval_minmax_ops', amoplefttype => 'interval',
  amoprighttype => 'interval', amopstrategy => '5',
  amopopr => '>(interval,interval)', amopmethod => 'brin' },

# minmax multi interval
{ amopfamily => 'brin/interval_minmax_multi_ops', amoplefttype => 'interval',
  amoprighttype => 'interval', amopstrategy => '1',
  amopopr => '<(interval,interval)', amopmethod => 'brin' },
{ amopfamily => 'brin/interval_minmax_multi_ops', amoplefttype => 'interval',
  amoprighttype => 'interval', amopstrategy => '2',
  amopopr => '<=(interval,interval)', amopmethod => 'brin' },
{ amopfamily => 'brin/interval_minmax_multi_ops', amoplefttype => 'interval',
  amoprighttype => 'interval', amopstrategy => '3',
  amopopr => '=(interval,interval)', amopmethod => 'brin' },
{ amopfamily => 'brin/interval_minmax_multi_ops', amoplefttype => 'interval',
  amoprighttype => 'interval', amopstrategy => '4',
  amopopr => '>=(interval,interval)', amopmethod => 'brin' },
{ amopfamily => 'brin/interval_minmax_multi_ops', amoplefttype => 'interval',
  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)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/timetz_minmax_ops', amoplefttype => 'timetz',
  amoprighttype => 'timetz', amopstrategy => '2',
  amopopr => '<=(timetz,timetz)', amopmethod => 'brin' },
{ amopfamily => 'brin/timetz_minmax_ops', amoplefttype => 'timetz',
  amoprighttype => 'timetz', amopstrategy => '3', amopopr => '=(timetz,timetz)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/timetz_minmax_ops', amoplefttype => 'timetz',
  amoprighttype => 'timetz', amopstrategy => '4',
  amopopr => '>=(timetz,timetz)', amopmethod => 'brin' },
{ amopfamily => 'brin/timetz_minmax_ops', amoplefttype => 'timetz',
  amoprighttype => 'timetz', amopstrategy => '5', amopopr => '>(timetz,timetz)',
  amopmethod => 'brin' },

# minmax multi time with time zone
{ amopfamily => 'brin/timetz_minmax_multi_ops', amoplefttype => 'timetz',
  amoprighttype => 'timetz', amopstrategy => '1', amopopr => '<(timetz,timetz)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/timetz_minmax_multi_ops', amoplefttype => 'timetz',
  amoprighttype => 'timetz', amopstrategy => '2',
  amopopr => '<=(timetz,timetz)', amopmethod => 'brin' },
{ amopfamily => 'brin/timetz_minmax_multi_ops', amoplefttype => 'timetz',
  amoprighttype => 'timetz', amopstrategy => '3', amopopr => '=(timetz,timetz)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/timetz_minmax_multi_ops', amoplefttype => 'timetz',
  amoprighttype => 'timetz', amopstrategy => '4',
  amopopr => '>=(timetz,timetz)', amopmethod => 'brin' },
{ amopfamily => 'brin/timetz_minmax_multi_ops', amoplefttype => 'timetz',
  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)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/bit_minmax_ops', amoplefttype => 'bit',
  amoprighttype => 'bit', amopstrategy => '2', amopopr => '<=(bit,bit)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/bit_minmax_ops', amoplefttype => 'bit',
  amoprighttype => 'bit', amopstrategy => '3', amopopr => '=(bit,bit)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/bit_minmax_ops', amoplefttype => 'bit',
  amoprighttype => 'bit', amopstrategy => '4', amopopr => '>=(bit,bit)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/bit_minmax_ops', amoplefttype => 'bit',
  amoprighttype => 'bit', amopstrategy => '5', amopopr => '>(bit,bit)',
  amopmethod => 'brin' },

# minmax bit varying
{ amopfamily => 'brin/varbit_minmax_ops', amoplefttype => 'varbit',
  amoprighttype => 'varbit', amopstrategy => '1', amopopr => '<(varbit,varbit)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/varbit_minmax_ops', amoplefttype => 'varbit',
  amoprighttype => 'varbit', amopstrategy => '2',
  amopopr => '<=(varbit,varbit)', amopmethod => 'brin' },
{ amopfamily => 'brin/varbit_minmax_ops', amoplefttype => 'varbit',
  amoprighttype => 'varbit', amopstrategy => '3', amopopr => '=(varbit,varbit)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/varbit_minmax_ops', amoplefttype => 'varbit',
  amoprighttype => 'varbit', amopstrategy => '4',
  amopopr => '>=(varbit,varbit)', amopmethod => 'brin' },
{ amopfamily => 'brin/varbit_minmax_ops', amoplefttype => 'varbit',
  amoprighttype => 'varbit', amopstrategy => '5', amopopr => '>(varbit,varbit)',
  amopmethod => 'brin' },

# minmax numeric
{ amopfamily => 'brin/numeric_minmax_ops', amoplefttype => 'numeric',
  amoprighttype => 'numeric', amopstrategy => '1',
  amopopr => '<(numeric,numeric)', amopmethod => 'brin' },
{ amopfamily => 'brin/numeric_minmax_ops', amoplefttype => 'numeric',
  amoprighttype => 'numeric', amopstrategy => '2',
  amopopr => '<=(numeric,numeric)', amopmethod => 'brin' },
{ amopfamily => 'brin/numeric_minmax_ops', amoplefttype => 'numeric',
  amoprighttype => 'numeric', amopstrategy => '3',
  amopopr => '=(numeric,numeric)', amopmethod => 'brin' },
{ amopfamily => 'brin/numeric_minmax_ops', amoplefttype => 'numeric',
  amoprighttype => 'numeric', amopstrategy => '4',
  amopopr => '>=(numeric,numeric)', amopmethod => 'brin' },
{ amopfamily => 'brin/numeric_minmax_ops', amoplefttype => 'numeric',
  amoprighttype => 'numeric', amopstrategy => '5',
  amopopr => '>(numeric,numeric)', amopmethod => 'brin' },

# minmax multi numeric
{ amopfamily => 'brin/numeric_minmax_multi_ops', amoplefttype => 'numeric',
  amoprighttype => 'numeric', amopstrategy => '1',
  amopopr => '<(numeric,numeric)', amopmethod => 'brin' },
{ amopfamily => 'brin/numeric_minmax_multi_ops', amoplefttype => 'numeric',
  amoprighttype => 'numeric', amopstrategy => '2',
  amopopr => '<=(numeric,numeric)', amopmethod => 'brin' },
{ amopfamily => 'brin/numeric_minmax_multi_ops', amoplefttype => 'numeric',
  amoprighttype => 'numeric', amopstrategy => '3',
  amopopr => '=(numeric,numeric)', amopmethod => 'brin' },
{ amopfamily => 'brin/numeric_minmax_multi_ops', amoplefttype => 'numeric',
  amoprighttype => 'numeric', amopstrategy => '4',
  amopopr => '>=(numeric,numeric)', amopmethod => 'brin' },
{ amopfamily => 'brin/numeric_minmax_multi_ops', amoplefttype => 'numeric',
  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)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/uuid_minmax_ops', amoplefttype => 'uuid',
  amoprighttype => 'uuid', amopstrategy => '2', amopopr => '<=(uuid,uuid)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/uuid_minmax_ops', amoplefttype => 'uuid',
  amoprighttype => 'uuid', amopstrategy => '3', amopopr => '=(uuid,uuid)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/uuid_minmax_ops', amoplefttype => 'uuid',
  amoprighttype => 'uuid', amopstrategy => '4', amopopr => '>=(uuid,uuid)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/uuid_minmax_ops', amoplefttype => 'uuid',
  amoprighttype => 'uuid', amopstrategy => '5', amopopr => '>(uuid,uuid)',
  amopmethod => 'brin' },

# minmax multi uuid
{ amopfamily => 'brin/uuid_minmax_multi_ops', amoplefttype => 'uuid',
  amoprighttype => 'uuid', amopstrategy => '1', amopopr => '<(uuid,uuid)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/uuid_minmax_multi_ops', amoplefttype => 'uuid',
  amoprighttype => 'uuid', amopstrategy => '2', amopopr => '<=(uuid,uuid)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/uuid_minmax_multi_ops', amoplefttype => 'uuid',
  amoprighttype => 'uuid', amopstrategy => '3', amopopr => '=(uuid,uuid)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/uuid_minmax_multi_ops', amoplefttype => 'uuid',
  amoprighttype => 'uuid', amopstrategy => '4', amopopr => '>=(uuid,uuid)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/uuid_minmax_multi_ops', amoplefttype => 'uuid',
  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',
  amopopr => '<<(anyrange,anyrange)', amopmethod => 'brin' },
{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '2',
  amopopr => '&<(anyrange,anyrange)', amopmethod => 'brin' },
{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '3',
  amopopr => '&&(anyrange,anyrange)', amopmethod => 'brin' },
{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '4',
  amopopr => '&>(anyrange,anyrange)', amopmethod => 'brin' },
{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '5',
  amopopr => '>>(anyrange,anyrange)', amopmethod => 'brin' },
{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '7',
  amopopr => '@>(anyrange,anyrange)', amopmethod => 'brin' },
{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '8',
  amopopr => '<@(anyrange,anyrange)', amopmethod => 'brin' },
{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyelement', amopstrategy => '16',
  amopopr => '@>(anyrange,anyelement)', amopmethod => 'brin' },
{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '17',
  amopopr => '-|-(anyrange,anyrange)', amopmethod => 'brin' },
{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '18',
  amopopr => '=(anyrange,anyrange)', amopmethod => 'brin' },
{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '20',
  amopopr => '<(anyrange,anyrange)', amopmethod => 'brin' },
{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '21',
  amopopr => '<=(anyrange,anyrange)', amopmethod => 'brin' },
{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '22',
  amopopr => '>(anyrange,anyrange)', amopmethod => 'brin' },
{ amopfamily => 'brin/range_inclusion_ops', amoplefttype => 'anyrange',
  amoprighttype => 'anyrange', amopstrategy => '23',
  amopopr => '>=(anyrange,anyrange)', amopmethod => 'brin' },

# minmax pg_lsn
{ amopfamily => 'brin/pg_lsn_minmax_ops', amoplefttype => 'pg_lsn',
  amoprighttype => 'pg_lsn', amopstrategy => '1', amopopr => '<(pg_lsn,pg_lsn)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/pg_lsn_minmax_ops', amoplefttype => 'pg_lsn',
  amoprighttype => 'pg_lsn', amopstrategy => '2',
  amopopr => '<=(pg_lsn,pg_lsn)', amopmethod => 'brin' },
{ amopfamily => 'brin/pg_lsn_minmax_ops', amoplefttype => 'pg_lsn',
  amoprighttype => 'pg_lsn', amopstrategy => '3', amopopr => '=(pg_lsn,pg_lsn)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/pg_lsn_minmax_ops', amoplefttype => 'pg_lsn',
  amoprighttype => 'pg_lsn', amopstrategy => '4',
  amopopr => '>=(pg_lsn,pg_lsn)', amopmethod => 'brin' },
{ amopfamily => 'brin/pg_lsn_minmax_ops', amoplefttype => 'pg_lsn',
  amoprighttype => 'pg_lsn', amopstrategy => '5', amopopr => '>(pg_lsn,pg_lsn)',
  amopmethod => 'brin' },

# minmax multi pg_lsn
{ amopfamily => 'brin/pg_lsn_minmax_multi_ops', amoplefttype => 'pg_lsn',
  amoprighttype => 'pg_lsn', amopstrategy => '1', amopopr => '<(pg_lsn,pg_lsn)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/pg_lsn_minmax_multi_ops', amoplefttype => 'pg_lsn',
  amoprighttype => 'pg_lsn', amopstrategy => '2',
  amopopr => '<=(pg_lsn,pg_lsn)', amopmethod => 'brin' },
{ amopfamily => 'brin/pg_lsn_minmax_multi_ops', amoplefttype => 'pg_lsn',
  amoprighttype => 'pg_lsn', amopstrategy => '3', amopopr => '=(pg_lsn,pg_lsn)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/pg_lsn_minmax_multi_ops', amoplefttype => 'pg_lsn',
  amoprighttype => 'pg_lsn', amopstrategy => '4',
  amopopr => '>=(pg_lsn,pg_lsn)', amopmethod => 'brin' },
{ amopfamily => 'brin/pg_lsn_minmax_multi_ops', amoplefttype => 'pg_lsn',
  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)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box',
  amoprighttype => 'box', amopstrategy => '2', amopopr => '&<(box,box)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box',
  amoprighttype => 'box', amopstrategy => '3', amopopr => '&&(box,box)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box',
  amoprighttype => 'box', amopstrategy => '4', amopopr => '&>(box,box)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box',
  amoprighttype => 'box', amopstrategy => '5', amopopr => '>>(box,box)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box',
  amoprighttype => 'box', amopstrategy => '6', amopopr => '~=(box,box)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box',
  amoprighttype => 'box', amopstrategy => '7', amopopr => '@>(box,box)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box',
  amoprighttype => 'box', amopstrategy => '8', amopopr => '<@(box,box)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box',
  amoprighttype => 'box', amopstrategy => '9', amopopr => '&<|(box,box)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box',
  amoprighttype => 'box', amopstrategy => '10', amopopr => '<<|(box,box)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box',
  amoprighttype => 'box', amopstrategy => '11', amopopr => '|>>(box,box)',
  amopmethod => 'brin' },
{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box',
  amoprighttype => 'box', amopstrategy => '12', amopopr => '|&>(box,box)',
  amopmethod => 'brin' },

{ amopfamily => 'brin/box_inclusion_ops', amoplefttype => 'box',
  amoprighttype => 'point', amopstrategy => '7', amopopr => '@>(box,point)',
  amopmethod => 'brin' },

]
