BTW ... while I'm thinking about it: it seems to me to be a serious
error that the consistent() function isn't given nkeys so that it can
know the length of the arrays it's being handed. I suppose it's
possible for it to re-deduce nkeys by examining the query datum, but
that could be quite expensive; and it's certainly error-prone to have
to keep extractQuery() and consistent() in sync on this. Since we are
adding arguments to consistent() anyway for 8.4, I propose that its
signature ought to be
bool consistent(bool check[], StrategyNumber n, Datum query, int32 nkeys, bool *recheck, Pointer
extra_data[])
where the first three arguments are what existed in 8.3.
regards, tom lane