]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Use the proper comparator in gbt_bit_ssup_cmp.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 3 Jul 2026 17:11:14 +0000 (13:11 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 3 Jul 2026 17:11:14 +0000 (13:11 -0400)
If we're dealing with leaf entries, the function to call is bitcmp
not byteacmp.  Using byteacmp didn't lead to any obvious failure,
but it did result in sorting the entries in a way not matching the
datatype's actual sort order.  Hence the constructed index would be
less efficient than one would expect, and in particular worse than
what you got before this code was added in v18 (by commit e4309f73f).

We might want to recommend that users reindex btree_gist indexes
on bit/varbit columns.

Author: Tom Lane <tgl@sss.pgh.pa.us>
Reviewed-by: Ayush Tiwari <ayushtiwari.slg01@gmail.com>
Discussion: https://postgr.es/m/AH*AvQCYKhQGVvPWi1GiU4oY.8.1781609375063.Hmail.3020001251@tju.edu.cn
Backpatch-through: 18

contrib/btree_gist/btree_bit.c

index 2b9c18a586f3718e6dc591ea576b474503a9be0d..ad1d201311607b41857d0ef2a6f359f66a024349 100644 (file)
@@ -217,7 +217,7 @@ gbt_bit_ssup_cmp(Datum x, Datum y, SortSupport ssup)
        Datum           result;
 
        /* for leaf items we expect lower == upper, so only compare lower */
-       result = DirectFunctionCall2(byteacmp,
+       result = DirectFunctionCall2(bitcmp,
                                                                 PointerGetDatum(arg1.lower),
                                                                 PointerGetDatum(arg2.lower));