Thread
Commits
-
Fix improper interaction of FULL JOINs with lateral references.
- 051c71c67463 10.8 landed
- 68e745ed0d23 11.3 landed
- 45f8eaa8e303 12.0 landed
- c6df3a28ff40 9.4.22 landed
- 2f78974e29bd 9.5.17 landed
- 23791c41576a 9.6.13 landed
-
BUG #15741: ERROR: failed to build any 3-way joins
The Post Office <noreply@postgresql.org> — 2019-04-08T13:32:44Z
The following bug has been logged on the website: Bug reference: 15741 Logged by: Anthony SKORSKI Email address: skorski.anthony@gmail.com PostgreSQL version: 10.6 Operating system: Ubuntu 18.04 Description: Hi Trying to build a tool which automatically builds queries to "flatten" JSONB fields, I came to a `ERROR: failed to build any 3-way joins` message while trying to execute some of those queries. It is reproducible from a simple table... `CREATE TABLE random_table (random_field JSONB);` ... some JSON data in nested arrays ... `INSERT INTO public.random_table (random_field) VALUES ('{"bar": [[[1, 2, 3, 4]]], "foo": [[["abc", "def"], ["tuw", "xyz"]]]}');` ... and a WIP query to flatten this JSON data. ``` SELECT * FROM random_table LEFT OUTER JOIN LATERAL ( SELECT * FROM jsonb_array_elements(random_table.random_field -> 'foo') WITH ORDINALITY AS foo_level_1(foo_1, foo_1_index) LEFT OUTER JOIN LATERAL ( SELECT * FROM jsonb_array_elements(foo_1) WITH ORDINALITY AS foo_level_2(foo_2, foo_2_index) --LEFT OUTER JOIN LATERAL ( -- SELECT * -- FROM jsonb_array_elements(foo_2) -- WITH ORDINALITY AS foo_level_3(foo_3, foo_3_index) --) AS foo_lateral_2 ON TRUE ) AS foo_lateral_1 ON TRUE FULL OUTER JOIN jsonb_array_elements(random_table.random_field -> 'bar') WITH ORDINALITY AS bar_level_1(bar_1, bar_1_index) ON FALSE LEFT OUTER JOIN LATERAL ( SELECT * FROM jsonb_array_elements(bar_1) WITH ORDINALITY AS bar_level_2(bar_2, bar_2_index) ) AS bar_lateral_1 ON TRUE ) AS pouet ON TRUE; ``` Note the commented part. As is the query works as expected (for its WIP sstatus). Once uncommented, the `ERROR: failed to build any 3-way joins` occurs and I did not find anything about such a potential Postgresql limitation or any workaround. This behavior occurs on every Postgres version I tested. A fiddle is available here to highlight the problem: https://dbfiddle.uk/?rdbms=postgres_10&fiddle=0c40ba750b3e477e002f879edd0d6841 Please let me know if it actually is a bug and if it has a chance to be fixed. Regards. -
Re: BUG #15741: ERROR: failed to build any 3-way joins
Tom Lane <tgl@sss.pgh.pa.us> — 2019-04-08T14:13:58Z
PG Bug reporting form <noreply@postgresql.org> writes: > Trying to build a tool which automatically builds queries to "flatten" JSONB > fields, I came to a `ERROR: failed to build any 3-way joins` message while > trying to execute some of those queries. Yeah, that's certainly a bug. I'll take a look later ... regards, tom lane
-
Re: BUG #15741: ERROR: failed to build any 3-way joins
Tom Lane <tgl@sss.pgh.pa.us> — 2019-04-08T20:13:42Z
I wrote: > PG Bug reporting form <noreply@postgresql.org> writes: >> Trying to build a tool which automatically builds queries to "flatten" JSONB >> fields, I came to a `ERROR: failed to build any 3-way joins` message while >> trying to execute some of those queries. > Yeah, that's certainly a bug. I'll take a look later ... Fixed at https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=051c71c6746309782d9bf1ebb257d3b5f88e6fb7 regards, tom lane
-
Re: BUG #15741: ERROR: failed to build any 3-way joins
Anthony SKORSKI <skorski.anthony@gmail.com> — 2019-04-09T08:00:58Z
Thanks for the impressive reactivity. I will test it as soon as possible. Regards Le lun. 8 avr. 2019 à 22:13, Tom Lane <tgl@sss.pgh.pa.us> a écrit : > I wrote: > > PG Bug reporting form <noreply@postgresql.org> writes: > >> Trying to build a tool which automatically builds queries to "flatten" > JSONB > >> fields, I came to a `ERROR: failed to build any 3-way joins` message > while > >> trying to execute some of those queries. > > > Yeah, that's certainly a bug. I'll take a look later ... > > Fixed at > > https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=051c71c6746309782d9bf1ebb257d3b5f88e6fb7 > > regards, tom lane >
-
Re: BUG #15741: ERROR: failed to build any 3-way joins
Anthony SKORSKI <skorski.anthony@gmail.com> — 2019-05-01T17:30:00Z
> Fixed at > https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=051c71c6746309782d9bf1ebb257d3b5f88e6fb7 > > regards, tom lane I finally just managed to test this commit and I confirm that it fixed the error I was encountering. Thanks again for the impressive efficiency. Regards, Anthony SKORSKI