pg.ddx.io  pgsql-bugs@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: dengwenking@gmail.com
Subject: BUG #18948: Equivalent MAX() result in view and inline query yields inconsistent row count
Date: Sat, 07 Jun 2025 02:44:08 +0000
Message-ID: <18948-a05bf0726c2c993a@postgresql.org> (raw)

The following bug has been logged on the website:

Bug reference:      18948
Logged by:          Wenking Deng
Email address:      dengwenking@gmail.com
PostgreSQL version: 15.0
Operating system:   Docker
Description:        

This bug demonstrates a discrepancy in PostgreSQL when comparing the result
of an aggregate function used inline versus stored in a view. The queries
SELECT MAX(c0) FROM t0 and SELECT c0 FROM v1 produce exactly the same value.
However, when applying a WHERE (1 = NULL) condition, the inline version
returns one row (with NULL), while the view version returns zero rows.
Reproduce Steps:
-- Setup: Create table t0 and view v1
CREATE TABLE t0 (c0 REAL);
INSERT INTO t0 (c0) VALUES (1.830250668324684e+38);
INSERT INTO t0 (c0) VALUES (-3.29559603270012e+38);
INSERT INTO t0 (c0) VALUES (3.352134689102562e+38);
CREATE VIEW v1 AS SELECT MAX(c0) AS c0 FROM t0;
-- Query 1: Inline MAX() without WHERE
db1=# SELECT MAX(c0) FROM t0;
      max
---------------
 3.3521347e+38
(1 row)
-- Query 2: View value (same result)
db1=# SELECT c0 FROM v1;
      c0
---------------
 3.3521347e+38
(1 row)
-- Query 3: Inline MAX() with WHERE (1 = NULL)
db1=# SELECT MAX(c0) FROM t0 WHERE (1 = NULL);
 max
-----
(1 row)
-- Query 4: View value with same WHERE clause
db1=# SELECT (c0) FROM v1 WHERE (1 = NULL);
 c0
----
(0 rows)
Expected Result:
Both SELECT should return one row with NULL.



view thread (2+ messages)  latest in thread

Message-ID: <18948-a05bf0726c2c993a@postgresql.org>
Permalink:  ../18948-a05bf0726c2c993a@postgresql.org/
Also on:    postgresql.org/message-id/18948-a05bf0726c2c993a@postgresql.org

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-bugs@postgresql.org
  Cc: noreply@postgresql.org, pgsql-bugs@lists.postgresql.org, dengwenking@gmail.com
  Subject: Re: BUG #18948: Equivalent MAX() result in view and inline query yields inconsistent row count
  In-Reply-To: <18948-a05bf0726c2c993a@postgresql.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox