• Dmitry Shulga's avatar
    MDEV-26150: The test main.opt_trace fails in case it is run in PS mode · 461cac89
    Dmitry Shulga authored
    In case the test main.opt_trace is run with the option --ps-protocol
    it fails since querying from the table INFORMATION_SCHEMA.OPTIMIZER_TRACE
    produces an output that differed from the expected one in the following way:
      @@ -2829,14 +2829,6 @@
                         }
                       },
                       {
      -                  "transformation": {
      -                    "select_id": 2,
      -                    "from": "IN (SELECT)",
      -                    "to": "semijoin",
      -                    "chosen": true
      -                  }
      -                },
      -                {
                         "expanded_query": "/* select#2 */ select t10.pk from t10"
                       }
    
    The table INFORMATION_SCHEMA.OPTIMIZER_TRACE is filled when optimizer_trace is on.
    The reason of missing above mentioned pieces in query result set is that
    the C++ macros
      OPT_TRACE_TRANSFORM(thd, trace_wrapper, trace_transform,
                          select_lex->select_number,
                          "IN (SELECT)", "semijoin");
    located in the standalone function check_and_do_in_subquery_rewrites()
    is executed twice in case the statement
      explain extended select * from t1 where a in (select pk from t10);
    is run in PS mode. The first time it is executed on PREPARE phase and
    the second time on EXECUTE phase. The output produced by this macros on
    EXECUTE phase rewrites the output produced on PREPARE phase.
    In result test failed in case it was run in PS mode.
    
    To make test output uniform regardless the test is run in PS or normal
    mode the operator '--source include/protocol.inc' has been added to
    the file opt_trace.test and extra opt_trace,ps.rdiff file has been added.
    
    Additionally, added operators
      --enable_prepared_warnings/--disable_prepared_warnings
    in order to store warnings in result file that received on PREPARE phase
    during running the statemement 'SELECT INTO'.
    461cac89
opt_trace.test 27.1 KB