Thread
Commits
-
Cope with lateral references in the quals of a subquery RTE.
- dc6bb09949c8 9.6.19 landed
- d3b642ad99e9 12.4 landed
- 80d8f6d1d633 9.5.23 landed
- 6443cd2e2421 10.14 landed
- 3753df8f8ae8 11.9 landed
- a742ecf9c63d 14.0 landed
- 0734dbc45034 13.0 landed
-
Small query using LATERAL that segfaults Postgres
Tom Ellis <tom-lists-postgresql.org@jaguarpaw.co.uk> — 2020-07-13T17:51:24Z
This small query seems to segfault Postgres. I've tried on the version of Postgres 11 that comes with Debian Stable and all versions on https://www.db-fiddle.com/ including 13 (Beta). DB Fiddle actually says "An unexpected error occurred." but I suspect that's the segfault. Tom SELECT 0 FROM (SELECT TRUE as "r", SUM(0) ) as "T1", LATERAL (SELECT TRUE as "b" UNION ALL SELECT "r" as "b" FROM (SELECT 0 ORDER BY COALESCE(0)) as "T1" ) as "T2" WHERE "b" -
Re: Small query using LATERAL that segfaults Postgres
Pavel Stehule <pavel.stehule@gmail.com> — 2020-07-13T18:27:25Z
po 13. 7. 2020 v 20:06 odesílatel Tom Ellis < tom-lists-postgresql.org@jaguarpaw.co.uk> napsal: > This small query seems to segfault Postgres. I've tried on the > version of Postgres 11 that comes with Debian Stable and all versions > on https://www.db-fiddle.com/ including 13 (Beta). DB Fiddle actually > says "An unexpected error occurred." but I suspect that's the > segfault. > > Tom > > > SELECT > 0 > FROM (SELECT > TRUE as "r", > SUM(0) > ) as "T1", > LATERAL > (SELECT TRUE as "b" > UNION ALL > SELECT > "r" as "b" > FROM (SELECT 0 ORDER BY COALESCE(0)) as "T1" > ) as "T2" > WHERE "b" > > here is stacktrace Program received signal SIGABRT, Aborted. 0x00007f269e6e9a25 in raise () from /lib64/libc.so.6 Missing separate debuginfos, use: dnf debuginfo-install libgcc-10.1.1-1.fc32.x86_64 (gdb) bt #0 0x00007f269e6e9a25 in raise () from /lib64/libc.so.6 #1 0x00007f269e6d2895 in abort () from /lib64/libc.so.6 #2 0x000000000090340b in ExceptionalCondition (conditionName=conditionName@entry=0xa55fef "var->varno == rti", errorType=errorType@entry=0x959029 "FailedAssertion", fileName=fileName@entry=0xa55f10 "allpaths.c", lineNumber=lineNumber@entry=3532) at assert.c:67 #3 0x00000000006e3041 in qual_is_pushdown_safe (subquery=0x2b7cc40, safetyInfo=0x7ffcc3355530, qual=0x2b7a998, rti=6) at allpaths.c:3532 #4 set_subquery_pathlist (rte=0x2b77258, rti=<optimized out>, rel=0x2b7a5e0, root=0x2b6fdb0) at allpaths.c:2262 #5 set_rel_size (root=root@entry=0x2b6fdb0, rel=rel@entry=0x2b7a5e0, rti=rti@entry=6, rte=rte@entry=0x2b77258) at allpaths.c:422 #6 0x00000000006e2101 in set_append_rel_size (rte=0x2b77258, rti=2, rel=0x2b6e850, root=0x2b798a0) at allpaths.c:1111 #7 set_rel_size (root=root@entry=0x2b6fdb0, rel=rel@entry=0x2b6e850, rti=rti@entry=2, rte=rte@entry=0x2b68098) at allpaths.c:383 #8 0x00000000006e4ea0 in set_base_rel_sizes (root=<optimized out>) at allpaths.c:323 #9 make_one_rel (root=root@entry=0x2b6fdb0, joinlist=joinlist@entry=0x2b79f08) at allpaths.c:185 #10 0x0000000000709b69 in query_planner (root=root@entry=0x2b6fdb0, qp_callback=qp_callback@entry=0x70a240 <standard_qp_callback>, qp_extra=qp_extra@entry=0x7ffcc33557a0) at planmain.c:269 #11 0x000000000070edfb in grouping_planner (root=<optimized out>, inheritance_update=false, tuple_fraction=<optimized out>) at planner.c:2058 #12 0x0000000000711907 in subquery_planner (glob=glob@entry=0x2b67ac8, parse=parse@entry=0x2b67be0, parent_root=parent_root@entry=0x0, hasRecursion=hasRecursion@entry=false, tuple_fraction=tuple_fraction@entry=0) at planner.c:1015 #13 0x0000000000712cbb in standard_planner (parse=0x2b67be0, query_string=<optimized out>, cursorOptions=256, boundParams=<optimized out>) at planner.c:405 #14 0x00000000007dd4a8 in pg_plan_query (querytree=0x2b67be0, query_string=query_string@entry=0x2aa23f0 "SELECT\n0\nFROM (SELECT\n TRUE as \"r\",\n SUM(0)\n ) as \"T1\",\nLATERAL\n(SELECT TRUE as \"b\"\n UNION ALL\n SELECT\n \"r\" as \"b\"\n FROM (SELECT 0 ORDER BY COALESCE(0)) as \""..., cursorOptions=cursorOptions@entry=256, boundParams=boundParams@entry=0x0) at postgres.c:875 #15 0x00000000007dd5a1 in pg_plan_queries (querytrees=0x2b6fd58, query_string=query_string@entry=0x2aa23f0 "SELECT\n0\nFROM (SELECT\n TRUE as \"r\",\n SUM(0)\n ) as \"T1\",\nLATERAL\n(SELECT TRUE as \"b\"\n UNION ALL\n SELECT\n \"r\" as \"b\"\n FROM (SELECT 0 ORDER BY COALESCE(0)) as \""..., cursorOptions=cursorOptions@entry=256, boundParams=boundParams@entry=0x0) at postgres.c:966 #16 0x00000000007dd8f8 in exec_simple_query ( query_string=0x2aa23f0 "SELECT\n0\nFROM (SELECT\n TRUE as \"r\",\n SUM(0)\n ) as \"T1\",\nLATERAL\n(SELECT TRUE as \"b\"\n UNION ALL\n SELECT\n \"r\" as \"b\"\n FROM (SELECT 0 ORDER BY COALESCE(0)) as \""...) at postgres.c:1158 #17 0x00000000007df755 in PostgresMain (argc=<optimized out>, argv=argv@entry=0x2ad06e8, dbname=<optimized out>, username=<optimized out>) at postgres.c:4315 #18 0x00000000007579e9 in BackendRun (port=0x2ac6fe0) at postmaster.c:4523 Regards Pavel -
Re: Small query using LATERAL that segfaults Postgres
Tom Lane <tgl@sss.pgh.pa.us> — 2020-07-14T00:40:38Z
Tom Ellis <tom-lists-postgresql.org@jaguarpaw.co.uk> writes: > This small query seems to segfault Postgres. I've tried on the > version of Postgres 11 that comes with Debian Stable and all versions > on https://www.db-fiddle.com/ including 13 (Beta). DB Fiddle actually > says "An unexpected error occurred." but I suspect that's the > segfault. Hm, looks like this has been wrong since we introduced LATERAL :-(. I pushed a band-aid fix. Thanks for the report! regards, tom lane
-
Re: Small query using LATERAL that segfaults Postgres
Tom Ellis <tom-lists-postgresql.org@jaguarpaw.co.uk> — 2020-07-14T09:00:18Z
On Mon, Jul 13, 2020 at 08:40:38PM -0400, Tom Lane wrote: > Tom Ellis <tom-lists-postgresql.org@jaguarpaw.co.uk> writes: > > This small query seems to segfault Postgres. I've tried on the > > version of Postgres 11 that comes with Debian Stable and all versions > > on https://www.db-fiddle.com/ including 13 (Beta). DB Fiddle actually > > says "An unexpected error occurred." but I suspect that's the > > segfault. > > Hm, looks like this has been wrong since we introduced LATERAL :-(. > I pushed a band-aid fix. Thanks for the report! Thanks Tom. Could you send a link to the fix? I'd be interested to see what the problem was. Tom
-
Re: Small query using LATERAL that segfaults Postgres
David Rowley <dgrowleyml@gmail.com> — 2020-07-14T09:04:25Z
On Tue, 14 Jul 2020 at 21:00, Tom Ellis <tom-lists-postgresql.org@jaguarpaw.co.uk> wrote: > Thanks Tom. Could you send a link to the fix? I'd be interested to > see what the problem was. https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=a742ecf9c63d454ccb107a357288c8ec1444ca12 David