Thank the Maker, it is reproduceable: returning an expanded header in the _in function is not appreciated in a very narrow number of cases.
Edit arrayfuncs.c:array_in(), change the return line thus: // PG_RETURN_ARRAYTYPE_P(retval); PG_RETURN_DATUM(expand_array(PointerGetDatum(retval), CurrentMemoryContext, my_extra)); And here is a small test case that exercises it: CREATE TABLE orderby_expanded ( id integer, a integer[] ); INSERT INTO orderby_expanded (id, a) VALUES (1, ARRAY[1,2]); -- works SELECT id, a FROM orderby_expanded ORDER BY a = '{1,2}'::integer[]; -- ERROR: could not find pathkey item to sort SELECT id FROM orderby_expanded ORDER BY a = '{1,2}'::integer[]; -- works SELECT id FROM orderby_expanded ORDER BY a = ARRAY[1,2]; -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers