Assert failure in _bt_preprocess_array_keys - Mailing list pgsql-hackers

From Richard Guo
Subject Assert failure in _bt_preprocess_array_keys
Date
Msg-id CAMbWs48f5rDOwxaT76Zd40m7n9iGZQcjEk7vG_5p3YWNh6oPfA@mail.gmail.com
Whole thread Raw
Responses Re: Assert failure in _bt_preprocess_array_keys
List pgsql-hackers
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

pgsql-hackers by date:

Previous
From: David Steele
Date:
Subject: Re: pg_combinebackup does not detect missing files
Next
From: Peter Geoghegan
Date:
Subject: Re: Assert failure in _bt_preprocess_array_keys