Re: BUG #18465: Wrong results from SELECT DISTINCT MIN in scalar subquery using HashAggregate

Dmitry Dolgov <9erthalion6@gmail.com>

From: Dmitry Dolgov <9erthalion6@gmail.com>
To: mtakahar@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2024-05-18T14:18:01Z
Lists: pgsql-bugs
> On Tue, May 14, 2024 at 09:14:34PM +0000, PG Bug reporting form wrote:
>
> postgres=# SELECT (  SELECT  DISTINCT  MIN( col_int  )  FROM B  AS
> SUBQUERY1_t1  WHERE SUBQUERY1_t1 .col_int  = table1 .col_int  ), table1
> .col_int  FROM CC  AS table1    ;
>   min   | col_int
> --------+---------
>  <null> |  <null>
>  <null> |       1        <------- *** wrong ***
>  <null> |       2
> (3 rows)
>
> postgres=# SELECT (  SELECT  DISTINCT  MIN( col_int  )  FROM B  AS
> SUBQUERY1_t1  WHERE SUBQUERY1_t1 .col_int  = table1 .col_int  ), table1
> .col_int  FROM CC  AS table1    ;
>  min | col_int
> -----+---------
>    1 |       1        <------- *** correct ***
>    1 |       2        <------- *** wrong ***
>    1 |  <null>        <------- *** wrong ***
> (3 rows)

Thanks, I could reproduce this in v15 and v16. Interestingly enough it
was fixed in d0d44049d1, but looks like due to lack of error reports the
fix was applied only on the main branch. I assume this one makes it
necessary to back-patch the fix.



Commits

  1. Account for optimized MinMax aggregates during SS_finalize_plan.

  2. Add test case showing that commit d0d44049d fixed a live bug.