• Sergei Golubchik's avatar
    MDEV-14820 System versioning is applied incorrectly to CTEs · 531acda4
    Sergei Golubchik authored
    Make sure that SELECT_LEX_UNIT::derived, behaves as documented
    (points to the "TABLE_LIST representing this union in the
    embedding select"). For recursive CTE this was not necessarily
    the case, it could've pointed to the TABLE_LIST inside the CTE,
    not in the embedding select.
    
    To fix:
    * don't update unit->derived in mysql_derived_prepare(), pass derived
      as an argument to st_select_lex_unit::prepare()
    * prefer to set unit->derived in TABLE_LIST::init_derived()
      to the TABLE_LIST in the embedding select, not to the recursive
      reference. Fail if there are many TABLE_LISTs in the embedding
      select with conflicting FOR SYSTEM_TIME clauses.
    
    cleanup:
    * remove redundant THD* argument from st_select_lex_unit::prepare()
    531acda4
table.cc 266 KB