Re: tuple radix sort

John Naylor <johncnaylorls@gmail.com>

From: John Naylor <johncnaylorls@gmail.com>
To: cca5507 <cca5507@qq.com>
Cc: zengman <zengman@halodbtech.com>, pgsql-hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-04-08T07:17:22Z
Lists: pgsql-hackers
On Wed, Apr 1, 2026 at 4:27 PM cca5507 <cca5507@qq.com> wrote:
>
> Hi John,
>
> How about adding an assertion here:

> +       Assert(next_level > level);
> +

Good idea.

I also thought we should change this cast:

        if (ssup->comparator == ssup_datum_signed_cmp)
        {
-               norm_datum1 = orig + ((uint64) PG_INT64_MAX) + 1;
+               norm_datum1 = orig + (Int64GetDatum(PG_INT64_MAX)) + 1;
        }

Upthread you mention something else about treating Datum as an
integer, but I'm not sure if this is what you meant since you didn't
say. If you have concrete suggestions, feel free to share them.

--
John Naylor
Amazon Web Services



Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Cosmetic fixes for radix sort

  2. Skip common prefixes during radix sort

  3. Perform radix sort on SortTuples with pass-by-value Datums

  4. Grab the low-hanging fruit from forcing sizeof(Datum) to 8.

  5. Add missing Datum conversions