From: | "Plettenbacher, Tobias (LWF)" <Tobias(dot)Plettenbacher(at)lwf(dot)bayern(dot)de> |
---|---|
To: | "pgsql-bugs(at)lists(dot)postgresql(dot)org" <pgsql-bugs(at)lists(dot)postgresql(dot)org> |
Subject: | Bug or strange result of Max() on arrays containing NULL values |
Date: | 2024-08-24 12:54:26 |
Message-ID: | 325d78c062e945ebb286091f0eaa8b72@lwf.bayern.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
Hi,
I'm getting strange results when using the Max() aggregate function on arrays containing NULL values.
With Max(Value) I get the expected result (in this case 2):
SELECT Max(Val) FROM (VALUES (1, 5), (2, 6), (NULL, 7)) AS T(Val, ID);
With Max(ARRAY[]) I get a strange result (in this case {NULL,7}):
SELECT Max(ARRAY[Val, ID]) FROM (VALUES (1, 5), (2, 6), (NULL, 7)) AS T(Val, ID);
But with Min(ARRAY[]) I get the expected result (in this case {-2,6}):
SELECT Min(ARRAY[-Val, ID]) FROM (VALUES (1, 5), (2, 6), (NULL, 7)) AS T(Val, ID);
Is this a bug or the correct result of Max(ARRAY[]), i.e. should Max() return NULL as the maximum value?
I often use Max(ARRAY[]) to get the ID of the maximum value. As a workaround
I must use (Min(ARRAY[-Val, ID]))[2] or (Max(ARRAY[Coalesce(Val, 0), ID]))[2].
I'm using PostgreSQL 13.16 on x86_64-pc-linux-gnu, compiled by gcc (SUSE Linux) 7.5.0, 64-bit
With kind regards
Tobias Plettenbacher
SB
Abt.3
LWF
Hans-Carl-von-Carlowitz-Platz 1
85354 Freising
Telefon +49 8161 4591-317
Tobias(dot)Plettenbacher(at)lwf(dot)bayern(dot)de
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2024-08-24 14:54:48 | Re: Bug or strange result of Max() on arrays containing NULL values |
Previous Message | Andy Fan | 2024-08-23 01:47:45 | Re: BUG #18588: Cannot force/let database use parallel execution in simple case. |