BUG #18608: Assert in check_agglevels_and_constraints() fails on creating a rule with aggr(NEW) in subselect

Started by PG Bug reporting formover 1 year ago2 messagesbugs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following bug has been logged on the website:

Bug reference: 18608
Logged by: Alexander Lakhin
Email address: exclusion@gmail.com
PostgreSQL version: 17rc1
Operating system: Ubuntu 22.04
Description:

The following script:
CREATE TABLE t (a int);
CREATE VIEW v AS SELECT 1;

CREATE RULE v_ins AS ON INSERT TO v
DO INSTEAD INSERT INTO t
SELECT * FROM (SELECT count(NEW) FROM t);

triggers an assertion failure:
TRAP: failed Assert("pstate->p_lateral_active"), File: "parse_agg.c", Line:
385, PID: 2785906

Without asserts enabled, it fails with:
ERROR: aggregate functions are not allowed in FROM clause of their own
query level

Reproduced on REL_9_3_STABLE .. master.

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: PG Bug reporting form (#1)
Re: BUG #18608: Assert in check_agglevels_and_constraints() fails on creating a rule with aggr(NEW) in subselect

PG Bug reporting form <noreply@postgresql.org> writes:

[ NEW reference confuses check_agglevels_and_constraints ]

triggers an assertion failure:
TRAP: failed Assert("pstate->p_lateral_active"), File: "parse_agg.c", Line:
385, PID: 2785906

Without asserts enabled, it fails with:
ERROR: aggregate functions are not allowed in FROM clause of their own
query level

Interesting. I'm inclined to just remove the Assert, since it's
evidently wrong and the ensuing error seems sufficiently on-point.

regards, tom lane