mirror of
https://github.com/MariaDB/server.git
synced 2026-10-23 18:49:29 +03:00
Walking back over the tables a join buffer scan feeds from takes a copy of each table's status and clears it, then puts the copy back when the scan closes. For a table standing for a run of other tables, the tables in that run were left out of the copy but were still written to when the copy was put back, so they received a value the copy had never taken. They now take part in both directions. The work for one table moved into a function that reaches the tables of any run it stands for, however deeply those runs nest, which is what the rest of the join order walking already does. This is a defect in the handling of a materialized semi join, which is the only kind of run a released version produces, so it is not specific to FULL JOIN. No query is known to reach it today. The FULL JOIN work that follows produces runs that nest, which reaches it.
147 KiB
147 KiB