mirror of
https://github.com/MariaDB/server.git
synced 2026-10-23 18:49:29 +03:00
A JOIN_TAB that reads a temporary table standing for several other tables owned a separately allocated JOIN_TAB_RANGE describing those tables, and the only way to ask whether a JOIN_TAB had such a range was to test that pointer. The range is now a member of the JOIN_TAB and carries the kind of range it is, so the question has a name, has_bush_children. st_nested_join::nest_type becomes an enumeration for the same reason. Asking whether a JOIN_TAB owned a range and asking whether that range holds the inner tables of a materialized semi join were the same question, so every place that reaches a semi join through a range's first JOIN_TAB relied on a materialized semi join being the only thing a range could hold. is_sjm_nest now reads the kind, and the places that reach a semi join that way either ask it or assert it. Places that only care whether a range exists at all keep asking that instead. A kind is named for the range a materialized FULL JOIN nest will hold, which an enclosing join's condition needs so that it sees a nest's rows complete, including the rows the nest produced by null complementing. Nothing produces one yet, so behaviour is unchanged.
333 KiB
333 KiB