hstore's "hstore ?& text[]" operator is defined as "contains all", ie,
it will return true if all the key names found in the text array are
present in the hstore.
ISTM that a sane definition of this operator would provide that if the
array is empty, it returns true: every set contains the empty set.
However, the code goes out of its way to return false instead.
Perhaps this was done intentionally because there was no way to make
GIN index searches work compatibly ... but now there is, so I see no
reason to remain bug-compatible with this behavior.
Barring objections, I'm going to fix it.
regards, tom lane