Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-19078

Support lateral derived tables

    XMLWordPrintable

Details

    Description

      Currently MariaDB does not allow to use lateral derived tables in queries though it
      uses builds them internally for when employing split optimization.
      Consider the following query

      SELECT t.b FROM t1, LATERAL (SELECT * FROM t2 WHERE t1.a=t2.a) AS t 
      

      Here the reference t1.a in the WHERE condition of derived table t refers to the field a
      of the table t1 used in the same FROM list as t.

      SQL standard allows lateral derived tables and MySQL 8.0 supports them.

      In MySQL the table can depend only on other tables in the same SELECT. If record in dependent table changes it invalidate table.

      My idea is use Item_cache to store external references values on which current content of the table was generated.
      Also maintain table map of dependence (including OUTER_REF_TABLE_BIT) and put check outer values/invalidate of the tables as we get and approved value executing the step in JOIN_TAB array processing (all dependent tables defined and got values in the records )

      In case of only outer dependence do not forget "join->outer_ref_cond->val_int()" in do_select()

      Attachments

        Issue Links

          Activity

            People

              monty Michael Widenius
              igor Igor Babaev
              Votes:
              47 Vote for this issue
              Watchers:
              40 Start watching this issue

              Dates

                Created:
                Updated:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.