Bug or strange result of Max() on arrays containing NULL values - Mailing list pgsql-bugs

From Plettenbacher, Tobias (LWF)
Subject Bug or strange result of Max() on arrays containing NULL values
Date
Msg-id 325d78c062e945ebb286091f0eaa8b72@lwf.bayern.de
Whole thread Raw
Responses Re: Bug or strange result of Max() on arrays containing NULL values
Re: Bug or strange result of Max() on arrays containing NULL values
List 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.Plettenbacher@lwf.bayern.de


 

pgsql-bugs by date:

Previous
From: Andy Fan
Date:
Subject: Re: BUG #18588: Cannot force/let database use parallel execution in simple case.
Next
From: Tom Lane
Date:
Subject: Re: Bug or strange result of Max() on arrays containing NULL values