I came across an assert failure in _bt_preprocess_array_keys regarding the sanity check on the datatype of the array elements. It can be reproduced with the query below.
create table t (c int4range); create unique index on t (c); select * from t where c in ('(1, 100]'::int4range, '(50, 300]'::int4range); It fails on this Assert: + elemtype = cur->sk_subtype; + if (elemtype == InvalidOid) + elemtype = rel->rd_opcintype[cur->sk_attno - 1]; + Assert(elemtype == ARR_ELEMTYPE(arrayval)); ... which was introduced in 5bf748b86b. I didn't spend much time digging into it, but I wonder if this Assert is sensible. I noticed that before commit 5bf748b86b, the two datatypes were not equal to each other either (anyrange vs. int4range). Thanks Richard