intarray sort returns wrong result
Hackorum builds and tests every patch posted to the lists, not only commitfest submissions. This is Hackorum's own CI rather than the PostgreSQL project's, and it is still under testing - please report anything that looks wrong.
You can run a PostgreSQL built from this patch straight from Docker, with no checkout and no build:
docker run --rm -p 5432:5432 ghcr.io/hackorum-dev/postgres-patch:t50548psql -h localhost -U postgresBuilt from patchset v1 (message #1), July 27, 2026 at 10:35 PM.
Every patchset is also pushed to a branch of our PostgreSQL fork, so you can check out the same tree CI built. Without a PostgreSQL checkout:
git clone --branch t50548_1 https://github.com/hackorum-dev/postgres.gitIn a checkout you already have, add the fork once:
git remote add hackorum https://github.com/hackorum-dev/postgres.gitthen, for this patchset and every later one:
git fetch hackorum t50548_1 && git checkout t50548_1Patchset v1 (message #1) is on t50548_1
Hi Hackers,
While working on general array sort[1]/messages/by-id/CAEG8a3KD7ZmQpxNhfPxyc0BjTTTUXiqb56VuMgB7Muu0+yV=qQ@mail.gmail.com, I played with intarray
extension, found a bug (or at least inconsistency) when sorting
multidimensional int array:
create extension intarray;
select sort('{{1,2,3}, {2,3,4}}');
this returns {{1,2,2},{3,3,4}} instead of {{1,2,3},{2,3,4}}
I think this is misleading, if int array is only for one dimension
array, we should
error out when sorting multidimensional int array. Or we can do something like
attached POC patch to make it work with multidimensional int array.
Thoughts?
[1]: /messages/by-id/CAEG8a3KD7ZmQpxNhfPxyc0BjTTTUXiqb56VuMgB7Muu0+yV=qQ@mail.gmail.com
--
Regards
Junwang Zhao
Junwang Zhao <zhjwpku@gmail.com> writes:
While working on general array sort[1], I played with intarray
extension, found a bug (or at least inconsistency) when sorting
multidimensional int array:
create extension intarray;
select sort('{{1,2,3}, {2,3,4}}');
this returns {{1,2,2},{3,3,4}} instead of {{1,2,3},{2,3,4}}
This is documented, isn't it?
Many of these operations are only sensible for one-dimensional
arrays. Although they will accept input arrays of more dimensions,
the data is treated as though it were a linear array in storage
order.
I don't think anyone will thank us for changing intarray's behavior
many years after the fact.
regards, tom lane
On Tue, Nov 12, 2024 at 9:13 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Junwang Zhao <zhjwpku@gmail.com> writes:
While working on general array sort[1], I played with intarray
extension, found a bug (or at least inconsistency) when sorting
multidimensional int array:create extension intarray;
select sort('{{1,2,3}, {2,3,4}}');this returns {{1,2,2},{3,3,4}} instead of {{1,2,3},{2,3,4}}
This is documented, isn't it?
Many of these operations are only sensible for one-dimensional
arrays. Although they will accept input arrays of more dimensions,
the data is treated as though it were a linear array in storage
order.
I did not notice this statement, my bad 😞
I don't think anyone will thank us for changing intarray's behavior
many years after the fact.
Agreed. Sorry for the noise.
regards, tom lane
--
Regards
Junwang Zhao