pub(crate) fn exists_for_access_method(name: &str, am: Option<&str>) -> bool {
let am = am.unwrap_or("btree");
let list: &[&str] = match am {
"btree" => BTREE,
"gin" => GIN,
"brin" => BRIN,
"gist" => GIST,
"spgist" => SPGIST,
"hash" => HASH,
"hnsw" | "ivfflat" => VECTOR,
_ => return true,
};
list.contains(&name)
}
const BTREE: &[&str] = &[
"array_ops",
"bit_ops",
"bool_ops",
"bpchar_ops",
"bpchar_pattern_ops",
"bytea_ops",
"char_ops",
"cidr_ops",
"date_ops",
"enum_ops",
"float4_ops",
"float8_ops",
"inet_ops",
"int2_ops",
"int4_ops",
"int8_ops",
"interval_ops",
"jsonb_ops",
"macaddr8_ops",
"macaddr_ops",
"money_ops",
"multirange_ops",
"name_ops",
"numeric_ops",
"oid_ops",
"oidvector_ops",
"pg_lsn_ops",
"range_ops",
"record_image_ops",
"record_ops",
"text_ops",
"text_pattern_ops",
"tid_ops",
"time_ops",
"timestamp_ops",
"timestamptz_ops",
"timetz_ops",
"tsquery_ops",
"tsvector_ops",
"uuid_ops",
"varbit_ops",
"varchar_ops",
"varchar_pattern_ops",
"xid8_ops",
];
const GIN: &[&str] = &[
"array_ops",
"jsonb_ops",
"jsonb_path_ops",
"tsvector_ops",
"gin_trgm_ops",
];
const BRIN: &[&str] = &[
"bit_minmax_ops",
"box_inclusion_ops",
"bpchar_bloom_ops",
"bpchar_minmax_ops",
"bytea_bloom_ops",
"bytea_minmax_ops",
"char_bloom_ops",
"char_minmax_ops",
"date_bloom_ops",
"date_minmax_multi_ops",
"date_minmax_ops",
"float4_bloom_ops",
"float4_minmax_multi_ops",
"float4_minmax_ops",
"float8_bloom_ops",
"float8_minmax_multi_ops",
"float8_minmax_ops",
"inet_bloom_ops",
"inet_inclusion_ops",
"inet_minmax_multi_ops",
"inet_minmax_ops",
"int2_bloom_ops",
"int2_minmax_multi_ops",
"int2_minmax_ops",
"int4_bloom_ops",
"int4_minmax_multi_ops",
"int4_minmax_ops",
"int8_bloom_ops",
"int8_minmax_multi_ops",
"int8_minmax_ops",
"interval_bloom_ops",
"interval_minmax_multi_ops",
"interval_minmax_ops",
"macaddr8_bloom_ops",
"macaddr8_minmax_multi_ops",
"macaddr8_minmax_ops",
"macaddr_bloom_ops",
"macaddr_minmax_multi_ops",
"macaddr_minmax_ops",
"name_bloom_ops",
"name_minmax_ops",
"numeric_bloom_ops",
"numeric_minmax_multi_ops",
"numeric_minmax_ops",
"oid_bloom_ops",
"oid_minmax_multi_ops",
"oid_minmax_ops",
"pg_lsn_bloom_ops",
"pg_lsn_minmax_multi_ops",
"pg_lsn_minmax_ops",
"range_inclusion_ops",
"text_bloom_ops",
"text_minmax_ops",
"tid_bloom_ops",
"tid_minmax_multi_ops",
"tid_minmax_ops",
"time_bloom_ops",
"time_minmax_multi_ops",
"time_minmax_ops",
"timestamp_bloom_ops",
"timestamp_minmax_multi_ops",
"timestamp_minmax_ops",
"timestamptz_bloom_ops",
"timestamptz_minmax_multi_ops",
"timestamptz_minmax_ops",
"timetz_bloom_ops",
"timetz_minmax_multi_ops",
"timetz_minmax_ops",
"uuid_bloom_ops",
"uuid_minmax_multi_ops",
"uuid_minmax_ops",
"varbit_minmax_ops",
];
const GIST: &[&str] = &[
"box_ops",
"circle_ops",
"inet_ops",
"multirange_ops",
"point_ops",
"poly_ops",
"range_ops",
"tsquery_ops",
"tsvector_ops",
"gist_trgm_ops",
];
const SPGIST: &[&str] = &[
"box_ops",
"inet_ops",
"kd_point_ops",
"poly_ops",
"quad_point_ops",
"range_ops",
"text_ops",
];
const HASH: &[&str] = &[
"aclitem_ops",
"array_ops",
"bool_ops",
"bpchar_ops",
"bpchar_pattern_ops",
"bytea_ops",
"char_ops",
"cid_ops",
"cidr_ops",
"date_ops",
"enum_ops",
"float4_ops",
"float8_ops",
"inet_ops",
"int2_ops",
"int4_ops",
"int8_ops",
"interval_ops",
"jsonb_ops",
"macaddr8_ops",
"macaddr_ops",
"multirange_ops",
"name_ops",
"numeric_ops",
"oid_ops",
"oidvector_ops",
"pg_lsn_ops",
"range_ops",
"record_ops",
"text_ops",
"text_pattern_ops",
"tid_ops",
"time_ops",
"timestamp_ops",
"timestamptz_ops",
"timetz_ops",
"uuid_ops",
"varchar_ops",
"varchar_pattern_ops",
"xid8_ops",
"xid_ops",
];
const VECTOR: &[&str] = &[
"vector_cosine_ops",
"vector_l2_ops",
"vector_ip_ops",
"vector_l1_ops",
"halfvec_cosine_ops",
"halfvec_l2_ops",
"halfvec_ip_ops",
"halfvec_l1_ops",
"sparsevec_cosine_ops",
"sparsevec_l2_ops",
"sparsevec_ip_ops",
"sparsevec_l1_ops",
"bit_hamming_ops",
"bit_jaccard_ops",
"sq8_cosine_ops",
"sq8_l2_ops",
"sq8_ip_ops",
];