diff --git a/src/backend/access/gist/gistscan.c b/src/backend/access/gist/gistscan.c index 4d97ff1d5d2..deff8d59f7f 100644 --- a/src/backend/access/gist/gistscan.c +++ b/src/backend/access/gist/gistscan.c @@ -17,6 +17,7 @@ #include "access/gist_private.h" #include "access/gistscan.h" #include "access/relscan.h" +#include "utils/builtins.h" #include "utils/lsyscache.h" #include "utils/memutils.h" #include "utils/rel.h" @@ -36,8 +37,10 @@ pairingheap_GISTSearchItem_cmp(const pairingheap_node *a, const pairingheap_node /* Order according to distance comparison */ for (i = 0; i < scan->numberOfOrderBys; i++) { - if (sa->distances[i] != sb->distances[i]) - return (sa->distances[i] < sb->distances[i]) ? 1 : -1; + int cmp = -float8_cmp_internal(sa->distances[i], sb->distances[i]); + + if (cmp != 0) + return cmp; } /* Heap items go before inner pages, to ensure a depth-first search */