Commit 461cac89 authored by Dmitry Shulga's avatar Dmitry Shulga

MDEV-26150: The test main.opt_trace fails in case it is run in PS mode

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'.
parent 429382c2
if (`SELECT $PS_PROTOCOL != 0`)
{
--skip Test temporarily disabled for ps-protocol
}
--source include/not_embedded.inc --source include/not_embedded.inc
--source include/have_sequence.inc --source include/have_sequence.inc
--source include/protocol.inc
SELECT table_name, column_name FROM information_schema.columns where table_name="OPTIMIZER_TRACE"; SELECT table_name, column_name FROM information_schema.columns where table_name="OPTIMIZER_TRACE";
show variables like 'optimizer_trace'; show variables like 'optimizer_trace';
set optimizer_trace="enabled=on"; set optimizer_trace="enabled=on";
...@@ -267,12 +264,14 @@ begin ...@@ -267,12 +264,14 @@ begin
return a; return a;
end| end|
--enable_prepare_warnings
create function f2(a int) returns int create function f2(a int) returns int
begin begin
declare a int default 0; declare a int default 0;
select count(*) from t2 into a; select count(*) from t2 into a;
return a; return a;
end| end|
--disable_prepare_warnings
delimiter ;| delimiter ;|
set optimizer_trace='enabled=on'; set optimizer_trace='enabled=on';
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment