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

FULL OUTER JOIN: Name resolution, aka semantic analysis

    XMLWordPrintable

Details

    • Task
    • Status: In Progress (View Workflow)
    • Major
    • Resolution: Unresolved
    • 12.3
    • Optimizer
    • None
    • Q4/2025 Server Development

    Description

      MDEV-37932 has made the Parser accept FULL OUTER JOIN syntax. Then, we fail immediately after the parser:

        bool mysql_parse_status= thd->variables.sql_mode & MODE_ORACLE
                                 ? ORAparse(thd) : MYSQLparse(thd);
       
        /* While we accept full join syntax, such joins are not yet supported. */
        mysql_parse_status|= thd->lex->has_full_outer_join;
        if (thd->lex->has_full_outer_join)
          my_error(ER_NOT_SUPPORTED_YET, MYF(0), "full join");
      

      This task is about the next step: Name resolution or semantic analysis.
      It seems, it should just work. This needs to be checked.

      After this task is done, the piece

        if (thd->lex->has_full_outer_join)
          my_error(ER_NOT_SUPPORTED_YET, MYF(0), "full join");
      

      should be moved to the end of JOIN::prepare().

      Queries that have full outer join's ON expression refer to the wrong table, like

      select * from t1, t2 full outer join t3 on t2.c=t3.e and t3.f=t1.a;
      

      should produce name resolution error.
      Queries that are correctly formed should produce ER_NOT_SUPPORTED_YET.

      Attachments

        Issue Links

          Activity

            People

              Gosselin Dave Gosselin
              psergei Sergei Petrunia
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated: