From 19733fa0b42caffa92463bb8a8098a40d8963d76 Mon Sep 17 00:00:00 2001 From: John Naylor Date: Mon, 10 Aug 2026 17:31:29 +0700 Subject: [PATCH] Rename sort support integer comparators for clarity The previous names used "unsigned" for Datum-width abbreviated keys and "signed" for 64-bit signed integers. This may have made more sense when Datum width was platform-dependent, but commit 805c64f84 added a 32-bit unsigned variant for OIDs, so it makes even less sense now. Rename all to be explicit about signedness and width. Suggested-by: David Rowley Discussion: https://postgr.es/m/CAApHDvrNMz5ahN1x=uK9yscTogmLupfLBy-_qMW9Z+k=HE5u_A@mail.gmail.com --- src/backend/access/gist/gistproc.c | 2 +- src/backend/access/nbtree/nbtcompare.c | 4 ++-- src/backend/utils/adt/bytea.c | 4 ++-- src/backend/utils/adt/mac.c | 4 ++-- src/backend/utils/adt/network.c | 2 +- src/backend/utils/adt/timestamp.c | 2 +- src/backend/utils/adt/uuid.c | 4 ++-- src/backend/utils/adt/varlena.c | 4 ++-- src/backend/utils/sort/tuplesort.c | 12 ++++++------ src/include/utils/sortsupport.h | 4 ++-- 10 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/backend/access/gist/gistproc.c b/src/backend/access/gist/gistproc.c index bb84030b23d..a7340bb9c8c 100644 --- a/src/backend/access/gist/gistproc.c +++ b/src/backend/access/gist/gistproc.c @@ -1750,7 +1750,7 @@ gist_point_sortsupport(PG_FUNCTION_ARGS) if (ssup->abbreviate) { - ssup->comparator = ssup_datum_unsigned_cmp; + ssup->comparator = ssup_datum_uint64_cmp; ssup->abbrev_converter = gist_bbox_zorder_abbrev_convert; ssup->abbrev_abort = gist_bbox_zorder_abbrev_abort; ssup->abbrev_full_comparator = gist_bbox_zorder_cmp; diff --git a/src/backend/access/nbtree/nbtcompare.c b/src/backend/access/nbtree/nbtcompare.c index d646f61a0c9..4e3a3a0f7ce 100644 --- a/src/backend/access/nbtree/nbtcompare.c +++ b/src/backend/access/nbtree/nbtcompare.c @@ -275,7 +275,7 @@ btint8sortsupport(PG_FUNCTION_ARGS) { SortSupport ssup = (SortSupport) PG_GETARG_POINTER(0); - ssup->comparator = ssup_datum_signed_cmp; + ssup->comparator = ssup_datum_int64_cmp; PG_RETURN_VOID(); } @@ -495,7 +495,7 @@ btoid8sortsupport(PG_FUNCTION_ARGS) { SortSupport ssup = (SortSupport) PG_GETARG_POINTER(0); - ssup->comparator = ssup_datum_unsigned_cmp; + ssup->comparator = ssup_datum_uint64_cmp; PG_RETURN_VOID(); } diff --git a/src/backend/utils/adt/bytea.c b/src/backend/utils/adt/bytea.c index a1f5d4e572b..f83bbfb9ca0 100644 --- a/src/backend/utils/adt/bytea.c +++ b/src/backend/utils/adt/bytea.c @@ -1127,7 +1127,7 @@ bytea_abbrev_convert(Datum original, SortSupport ssup) /* * Byteswap on little-endian machines. * - * This is needed so that ssup_datum_unsigned_cmp() works correctly on all + * This is needed so that ssup_datum_uint64_cmp() works correctly on all * platforms. */ res = DatumBigEndianToNative(res); @@ -1234,7 +1234,7 @@ bytea_sortsupport(PG_FUNCTION_ARGS) ssup->ssup_extra = bss; ssup->abbrev_full_comparator = ssup->comparator; - ssup->comparator = ssup_datum_unsigned_cmp; + ssup->comparator = ssup_datum_uint64_cmp; ssup->abbrev_converter = bytea_abbrev_convert; ssup->abbrev_abort = bytea_abbrev_abort; } diff --git a/src/backend/utils/adt/mac.c b/src/backend/utils/adt/mac.c index 923c5af54f8..3edaac8bb53 100644 --- a/src/backend/utils/adt/mac.c +++ b/src/backend/utils/adt/mac.c @@ -358,7 +358,7 @@ macaddr_sortsupport(PG_FUNCTION_ARGS) if (ssup->abbreviate) { - ssup->comparator = ssup_datum_unsigned_cmp; + ssup->comparator = ssup_datum_uint64_cmp; ssup->abbrev_converter = macaddr_abbrev_convert; ssup->abbrev_abort = macaddr_abbrev_abort; ssup->abbrev_full_comparator = macaddr_fast_cmp; @@ -419,7 +419,7 @@ macaddr_abbrev_convert(Datum original, SortSupport ssup) /* * Byteswap on little-endian machines. * - * This is needed so that ssup_datum_unsigned_cmp() (an unsigned integer + * This is needed so that ssup_datum_uint64_cmp() (an unsigned integer * 3-way comparator) works correctly on all platforms. Without this, the * comparator would have to call memcmp() with a pair of pointers to the * first byte of each abbreviated key, which is slower. diff --git a/src/backend/utils/adt/network.c b/src/backend/utils/adt/network.c index f4bf9c3b532..1702f717e71 100644 --- a/src/backend/utils/adt/network.c +++ b/src/backend/utils/adt/network.c @@ -451,7 +451,7 @@ network_sortsupport(PG_FUNCTION_ARGS) ssup->ssup_extra = uss; - ssup->comparator = ssup_datum_unsigned_cmp; + ssup->comparator = ssup_datum_uint64_cmp; ssup->abbrev_converter = network_abbrev_convert; ssup->abbrev_abort = network_abbrev_abort; ssup->abbrev_full_comparator = network_fast_cmp; diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c index a20e7ea1d11..1ce37bf7e3e 100644 --- a/src/backend/utils/adt/timestamp.c +++ b/src/backend/utils/adt/timestamp.c @@ -2292,7 +2292,7 @@ timestamp_sortsupport(PG_FUNCTION_ARGS) { SortSupport ssup = (SortSupport) PG_GETARG_POINTER(0); - ssup->comparator = ssup_datum_signed_cmp; + ssup->comparator = ssup_datum_int64_cmp; PG_RETURN_VOID(); } diff --git a/src/backend/utils/adt/uuid.c b/src/backend/utils/adt/uuid.c index 246225a8735..28e18940a9d 100644 --- a/src/backend/utils/adt/uuid.c +++ b/src/backend/utils/adt/uuid.c @@ -330,7 +330,7 @@ uuid_sortsupport(PG_FUNCTION_ARGS) ssup->ssup_extra = uss; - ssup->comparator = ssup_datum_unsigned_cmp; + ssup->comparator = ssup_datum_uint64_cmp; ssup->abbrev_converter = uuid_abbrev_convert; ssup->abbrev_abort = uuid_abbrev_abort; ssup->abbrev_full_comparator = uuid_fast_cmp; @@ -441,7 +441,7 @@ uuid_abbrev_convert(Datum original, SortSupport ssup) /* * Byteswap on little-endian machines. * - * This is needed so that ssup_datum_unsigned_cmp() (an unsigned integer + * This is needed so that ssup_datum_uint64_cmp() (an unsigned integer * 3-way comparator) works correctly on all platforms. If we didn't do * this, the comparator would have to call memcmp() with a pair of * pointers to the first byte of each abbreviated key, which is slower. diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c index 0c6d3ba4d22..8a2fdbea201 100644 --- a/src/backend/utils/adt/varlena.c +++ b/src/backend/utils/adt/varlena.c @@ -1794,7 +1794,7 @@ varstr_sortsupport(SortSupport ssup, Oid typid, Oid collid) initHyperLogLog(&sss->abbr_card, 10); initHyperLogLog(&sss->full_card, 10); ssup->abbrev_full_comparator = ssup->comparator; - ssup->comparator = ssup_datum_unsigned_cmp; + ssup->comparator = ssup_datum_uint64_cmp; ssup->abbrev_converter = varstr_abbrev_convert; ssup->abbrev_abort = varstr_abbrev_abort; } @@ -2179,7 +2179,7 @@ done: /* * Byteswap on little-endian machines. * - * This is needed so that ssup_datum_unsigned_cmp() (an unsigned integer + * This is needed so that ssup_datum_uint64_cmp() (an unsigned integer * 3-way comparator) works correctly on all platforms. If we didn't do * this, the comparator would have to call memcmp() with a pair of * pointers to the first byte of each abbreviated key, which is slower. diff --git a/src/backend/utils/sort/tuplesort.c b/src/backend/utils/sort/tuplesort.c index 4a0ddccc1ad..063cfe8a9f1 100644 --- a/src/backend/utils/sort/tuplesort.c +++ b/src/backend/utils/sort/tuplesort.c @@ -2587,9 +2587,9 @@ normalize_datum(Datum orig, SortSupport ssup) { Datum norm_datum1; - if (ssup->comparator == ssup_datum_signed_cmp) + if (ssup->comparator == ssup_datum_int64_cmp) norm_datum1 = orig + (Int64GetDatum(PG_INT64_MAX)) + 1; - else if (ssup->comparator == ssup_datum_unsigned_cmp) + else if (ssup->comparator == ssup_datum_uint64_cmp) norm_datum1 = orig; else { @@ -3010,8 +3010,8 @@ tuplesort_sort_memtuples(Tuplesortstate *state) /* Does it compare as an integer? */ if (state->memtupcount >= QSORT_THRESHOLD && - (ssup->comparator == ssup_datum_unsigned_cmp || - ssup->comparator == ssup_datum_signed_cmp || + (ssup->comparator == ssup_datum_uint64_cmp || + ssup->comparator == ssup_datum_int64_cmp || ssup->comparator == ssup_datum_uint32_cmp || ssup->comparator == ssup_datum_int32_cmp)) { @@ -3449,7 +3449,7 @@ free_sort_tuple(Tuplesortstate *state, SortTuple *stup) } int -ssup_datum_unsigned_cmp(Datum x, Datum y, SortSupport ssup) +ssup_datum_uint64_cmp(Datum x, Datum y, SortSupport ssup) { if (x < y) return -1; @@ -3460,7 +3460,7 @@ ssup_datum_unsigned_cmp(Datum x, Datum y, SortSupport ssup) } int -ssup_datum_signed_cmp(Datum x, Datum y, SortSupport ssup) +ssup_datum_int64_cmp(Datum x, Datum y, SortSupport ssup) { int64 xx = DatumGetInt64(x); int64 yy = DatumGetInt64(y); diff --git a/src/include/utils/sortsupport.h b/src/include/utils/sortsupport.h index 41923f6364c..37cf4677e42 100644 --- a/src/include/utils/sortsupport.h +++ b/src/include/utils/sortsupport.h @@ -272,8 +272,8 @@ ApplySortAbbrevFullComparator(Datum datum1, bool isNull1, * Datatypes that install these as their comparator or abbreviated comparator * are eligible for faster sorting. */ -extern int ssup_datum_unsigned_cmp(Datum x, Datum y, SortSupport ssup); -extern int ssup_datum_signed_cmp(Datum x, Datum y, SortSupport ssup); +extern int ssup_datum_uint64_cmp(Datum x, Datum y, SortSupport ssup); +extern int ssup_datum_int64_cmp(Datum x, Datum y, SortSupport ssup); extern int ssup_datum_uint32_cmp(Datum x, Datum y, SortSupport ssup); extern int ssup_datum_int32_cmp(Datum x, Datum y, SortSupport ssup);