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

Wrong results in COUNT() query with EXISTS and exists_to_in

Details

    • 10.2.10, 5.5.58, 10.1.29, 10.1.30, 10.2.12, 5.5.59

    Description

      A COUNT() query containing EXISTS and subqueries returns wrong results.
      Sometimes disabling the optimizer switch exists_to_in works as expected, I can't always reproduce this behaviour thou.
      Dropping an index (see sample.txt) also seems to fix, but there it's still 1 row off: 468 vs 469)

      Attachments

        Activity

          claudio.nanni Claudio Nanni created issue -

          claudio.nanni, the 1-row difference between the conditional SELECT and unconditional one seems to be legitimate, at least in the attached test case.
          There is one line in sceb205fa121 with dia34a99d3bc = 21, which is naturally counted by the unconditional SELECT. The WHERE clause in the conditional SELECT has two EXISTS:

          SELECT COUNT(1) FROM sceb205fa121 sch 
          WHERE 
            EXISTS (SELECT 1 FROM ed8ec6a6b8d1 WHERE dia34a99d3bc = sch.dia34a99d3bc AND moc979966566 = 4 AND ye91b4a70018 = 34 ) 
          AND 
            EXISTS (SELECT 1 FROM us23a3719e74 usr INNER JOIN di569c818b1e dis ON usr.dia34a99d3bc = dis.idb80bb77402 WHERE usr.st9ed39e2ea9 = 0 AND usr.dia34a99d3bc = sch.dia34a99d3bc AND usr.ty94757cae63 IN (3, 4, 5));
          

          For the first EXISTS, there is no row in ed8ec6a6b8d1 which would have values (21,4,34), so the row is excluded from the count.

          elenst Elena Stepanova added a comment - claudio.nanni , the 1-row difference between the conditional SELECT and unconditional one seems to be legitimate, at least in the attached test case. There is one line in sceb205fa121 with dia34a99d3bc = 21 , which is naturally counted by the unconditional SELECT . The WHERE clause in the conditional SELECT has two EXISTS : SELECT COUNT (1) FROM sceb205fa121 sch WHERE EXISTS ( SELECT 1 FROM ed8ec6a6b8d1 WHERE dia34a99d3bc = sch.dia34a99d3bc AND moc979966566 = 4 AND ye91b4a70018 = 34 ) AND EXISTS ( SELECT 1 FROM us23a3719e74 usr INNER JOIN di569c818b1e dis ON usr.dia34a99d3bc = dis.idb80bb77402 WHERE usr.st9ed39e2ea9 = 0 AND usr.dia34a99d3bc = sch.dia34a99d3bc AND usr.ty94757cae63 IN (3, 4, 5)); For the first EXISTS , there is no row in ed8ec6a6b8d1 which would have values (21,4,34) , so the row is excluded from the count.
          elenst Elena Stepanova made changes -
          Field Original Value New Value
          Comment [ {code:sql|title=Test case 1 (where switching exists_to_in off fixes the problem)}
          DROP TABLE IF EXISTS t1, t2, t3;

          CREATE TABLE t1 (a INT NOT NULL);
          INSERT INTO t1 VALUES (1),(1),(1),(5),(5);

          CREATE TABLE t2 (b INT);
          INSERT INTO t2 VALUES (5),(1);

          CREATE TABLE t3 (c INT, KEY(c));
          INSERT INTO t3 VALUES (5),(5);

          SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE b = t1.a) AND EXISTS (SELECT 1 FROM t3 WHERE c = t1.a);

          SET optimizer_switch='exists_to_in=off';

          SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE b = t1.a) AND EXISTS (SELECT 1 FROM t3 WHERE c = t1.a);

          DROP TABLE t1, t2, t3;
          {code}
          {noformat:title=Result with the default switch (wrong)}
          +---+
          | a |
          +---+
          | 5 |
          | 5 |
          | 5 |
          | 5 |
          +---+
          4 rows in set (0.00 sec)
          {noformat}
          {noformat:title=Result with exists_to_in=OFF (correct)}
          +---+
          | a |
          +---+
          | 5 |
          | 5 |
          +---+
          2 rows in set (0.00 sec)
          {noformat} ]

          Test case

          DROP TABLE IF EXISTS t1, t2, t3;
           
          CREATE TABLE t1 (a INT NOT NULL);
          INSERT INTO t1 VALUES (1),(1),(1),(5),(5);
           
          CREATE TABLE t2 (b INT);
          INSERT INTO t2 VALUES (5),(1);
           
          CREATE TABLE t3 (c INT, KEY(c));
          INSERT INTO t3 VALUES (5),(5);
           
          SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE b = t1.a) AND EXISTS (SELECT 1 FROM t3 WHERE c = t1.a);
           
          SET optimizer_switch='exists_to_in=off';
           
          SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE b = t1.a) AND EXISTS (SELECT 1 FROM t3 WHERE c = t1.a);
           
          DROP TABLE t1, t2, t3;
          

          Result with the default switch (wrong)

          +---+
          | a |
          +---+
          | 5 |
          | 5 |
          | 5 |
          | 5 |
          +---+
          4 rows in set (0.00 sec)
          

          plan

          MariaDB [test]> EXPLAIN EXTENDED SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE b = t1.a) AND EXISTS (SELECT 1 FROM t3 WHERE c = t1.a);
          +------+--------------+-------------+-------+---------------+------+---------+------+------+----------+-------------------------------------------------+
          | id   | select_type  | table       | type  | possible_keys | key  | key_len | ref  | rows | filtered | Extra                                           |
          +------+--------------+-------------+-------+---------------+------+---------+------+------+----------+-------------------------------------------------+
          |    1 | PRIMARY      | t3          | index | c             | c    | 5       | NULL |    2 |   100.00 | Using index                                     |
          |    1 | PRIMARY      | <subquery2> | ALL   | distinct_key  | NULL | NULL    | NULL |    2 |   100.00 | Using where                                     |
          |    1 | PRIMARY      | t1          | ALL   | NULL          | NULL | NULL    | NULL |    5 |   100.00 | Using where; Using join buffer (flat, BNL join) |
          |    2 | MATERIALIZED | t2          | ALL   | NULL          | NULL | NULL    | NULL |    2 |   100.00 |                                                 |
          +------+--------------+-------------+-------+---------------+------+---------+------+------+----------+-------------------------------------------------+
          

          Result with exists_to_in=OFF (correct)

          +---+
          | a |
          +---+
          | 5 |
          | 5 |
          +---+
          2 rows in set (0.00 sec)
          

          plan

          +------+--------------------+-------+------+---------------+------+---------+-----------+------+----------+-------------+
          | id   | select_type        | table | type | possible_keys | key  | key_len | ref       | rows | filtered | Extra       |
          +------+--------------------+-------+------+---------------+------+---------+-----------+------+----------+-------------+
          |    1 | PRIMARY            | t1    | ALL  | NULL          | NULL | NULL    | NULL      |    5 |   100.00 | Using where |
          |    3 | DEPENDENT SUBQUERY | t3    | ref  | c             | c    | 5       | test.t1.a |    1 |   100.00 | Using index |
          |    2 | DEPENDENT SUBQUERY | t2    | ALL  | NULL          | NULL | NULL    | NULL      |    2 |   100.00 | Using where |
          +------+--------------------+-------+------+---------------+------+---------+-----------+------+----------+-------------+
          

          Reproducible on 10.x, both with MyISAM and InnoDB. Not reproducible on 5.5.

          elenst Elena Stepanova added a comment - Test case DROP TABLE IF EXISTS t1, t2, t3;   CREATE TABLE t1 (a INT NOT NULL ); INSERT INTO t1 VALUES (1),(1),(1),(5),(5);   CREATE TABLE t2 (b INT ); INSERT INTO t2 VALUES (5),(1);   CREATE TABLE t3 (c INT , KEY (c)); INSERT INTO t3 VALUES (5),(5);   SELECT * FROM t1 WHERE EXISTS ( SELECT 1 FROM t2 WHERE b = t1.a) AND EXISTS ( SELECT 1 FROM t3 WHERE c = t1.a);   SET optimizer_switch= 'exists_to_in=off' ;   SELECT * FROM t1 WHERE EXISTS ( SELECT 1 FROM t2 WHERE b = t1.a) AND EXISTS ( SELECT 1 FROM t3 WHERE c = t1.a);   DROP TABLE t1, t2, t3; Result with the default switch (wrong) +---+ | a | +---+ | 5 | | 5 | | 5 | | 5 | +---+ 4 rows in set (0.00 sec) plan MariaDB [test]> EXPLAIN EXTENDED SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE b = t1.a) AND EXISTS (SELECT 1 FROM t3 WHERE c = t1.a); +------+--------------+-------------+-------+---------------+------+---------+------+------+----------+-------------------------------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +------+--------------+-------------+-------+---------------+------+---------+------+------+----------+-------------------------------------------------+ | 1 | PRIMARY | t3 | index | c | c | 5 | NULL | 2 | 100.00 | Using index | | 1 | PRIMARY | <subquery2> | ALL | distinct_key | NULL | NULL | NULL | 2 | 100.00 | Using where | | 1 | PRIMARY | t1 | ALL | NULL | NULL | NULL | NULL | 5 | 100.00 | Using where; Using join buffer (flat, BNL join) | | 2 | MATERIALIZED | t2 | ALL | NULL | NULL | NULL | NULL | 2 | 100.00 | | +------+--------------+-------------+-------+---------------+------+---------+------+------+----------+-------------------------------------------------+ Result with exists_to_in=OFF (correct) +---+ | a | +---+ | 5 | | 5 | +---+ 2 rows in set (0.00 sec) plan +------+--------------------+-------+------+---------------+------+---------+-----------+------+----------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +------+--------------------+-------+------+---------------+------+---------+-----------+------+----------+-------------+ | 1 | PRIMARY | t1 | ALL | NULL | NULL | NULL | NULL | 5 | 100.00 | Using where | | 3 | DEPENDENT SUBQUERY | t3 | ref | c | c | 5 | test.t1.a | 1 | 100.00 | Using index | | 2 | DEPENDENT SUBQUERY | t2 | ALL | NULL | NULL | NULL | NULL | 2 | 100.00 | Using where | +------+--------------------+-------+------+---------------+------+---------+-----------+------+----------+-------------+ Reproducible on 10.x, both with MyISAM and InnoDB. Not reproducible on 5.5.
          elenst Elena Stepanova made changes -
          Fix Version/s 10.1 [ 16100 ]
          Fix Version/s 10.2 [ 14601 ]
          Affects Version/s 10.0 [ 16000 ]
          Affects Version/s 10.1 [ 16100 ]
          Affects Version/s 10.2 [ 14601 ]
          Assignee Oleksandr Byelkin [ sanja ]
          Summary Wrong results in COUNT() query with EXISTS Wrong results in COUNT() query with EXISTS and exists_to_in
          elenst Elena Stepanova made changes -
          Status Open [ 1 ] Confirmed [ 10101 ]
          serg Sergei Golubchik made changes -
          Sprint 10.2.10 [ 183 ]
          sanja Oleksandr Byelkin made changes -
          Status Confirmed [ 10101 ] In Progress [ 3 ]

          It looks like the result is just result of usual join instead of 'semi-'

          select `test`.`t1`.`a` AS `a` from `test`.`t1` join (`test`.`t2`) join (`test`.`t3`) where ((`test`.`t2`.`b` = `test`.`t3`.`c`) and (`test`.`t1`.`a` = `test`.`t3`.`c`));
          a
          5
          5
          5
          5

          sanja Oleksandr Byelkin added a comment - It looks like the result is just result of usual join instead of 'semi-' select `test`.`t1`.`a` AS `a` from `test`.`t1` join (`test`.`t2`) join (`test`.`t3`) where ((`test`.`t2`.`b` = `test`.`t3`.`c`) and (`test`.`t1`.`a` = `test`.`t3`.`c`)); a 5 5 5 5

          This is a bug of semi-join, here is the proof (2 last selects return correct results):

          SET @optimiser_switch_save= @@optimizer_switch;
           
          CREATE TABLE t1 (a INT NOT NULL);
          INSERT INTO t1 VALUES (1),(1),(1),(5),(5);
           
          CREATE TABLE t2 (b INT);
          INSERT INTO t2 VALUES (5),(1);
           
          CREATE TABLE t3 (c INT, KEY(c));
          INSERT INTO t3 VALUES (5),(5);
           
          SET optimizer_switch='exists_to_in=on';
           
          explain
          SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE b = t1.a) AND EXISTS (SELECT 1 FROM t3 WHERE c = t1.a);
          SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE b = t1.a) AND EXISTS (SELECT 1 FROM t3 WHERE c = t1.a);
           
          SET optimizer_switch='semijoin=off';
          explain
          SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE b = t1.a) AND EXISTS (SELECT 1 FROM t3 WHERE c = t1.a);
          SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE b = t1.a) AND EXISTS (SELECT 1 FROM t3 WHERE c = t1.a);
           
          SET optimizer_switch='exists_to_in=off';
          explain
          SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE b = t1.a) AND EXISTS (SELECT 1 FROM t3 WHERE c = t1.a);
          SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE b = t1.a) AND EXISTS (SELECT 1 FROM t3 WHERE c = t1.a);
           
          SET @@optimiser_switch= @optimizer_switch_save;
          DROP TABLE t1, t2, t3;
          

          sanja Oleksandr Byelkin added a comment - This is a bug of semi-join, here is the proof (2 last selects return correct results): SET @optimiser_switch_save= @@optimizer_switch;   CREATE TABLE t1 (a INT NOT NULL); INSERT INTO t1 VALUES (1),(1),(1),(5),(5);   CREATE TABLE t2 (b INT); INSERT INTO t2 VALUES (5),(1);   CREATE TABLE t3 (c INT, KEY(c)); INSERT INTO t3 VALUES (5),(5);   SET optimizer_switch='exists_to_in=on';   explain SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE b = t1.a) AND EXISTS (SELECT 1 FROM t3 WHERE c = t1.a); SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE b = t1.a) AND EXISTS (SELECT 1 FROM t3 WHERE c = t1.a);   SET optimizer_switch='semijoin=off'; explain SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE b = t1.a) AND EXISTS (SELECT 1 FROM t3 WHERE c = t1.a); SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE b = t1.a) AND EXISTS (SELECT 1 FROM t3 WHERE c = t1.a);   SET optimizer_switch='exists_to_in=off'; explain SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE b = t1.a) AND EXISTS (SELECT 1 FROM t3 WHERE c = t1.a); SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE b = t1.a) AND EXISTS (SELECT 1 FROM t3 WHERE c = t1.a);   SET @@optimiser_switch= @optimizer_switch_save; DROP TABLE t1, t2, t3;

          It is only semi-join problem:

          select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`)
          and t1.a in (select `test`.`t3`.`c` from `test`.`t3`);
          a
          5
          5
          5
          5
          SET optimizer_switch='semijoin=off';
          select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`)
          and t1.a in (select `test`.`t3`.`c` from `test`.`t3`);
          a
          5
          5
          

          sanja Oleksandr Byelkin added a comment - It is only semi-join problem: select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`) and t1.a in (select `test`.`t3`.`c` from `test`.`t3`); a 5 5 5 5 SET optimizer_switch='semijoin=off'; select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`) and t1.a in (select `test`.`t3`.`c` from `test`.`t3`); a 5 5

          MariaDB [test]> EXPLAIN EXTENDED SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE b = t1.a) AND EXISTS (SELECT 1 FROM t3 WHERE c = t1.a);
          +------+--------------+-------------+-------+---------------+------+---------+------+------+----------+-------------------------------------------------+
          | id   | select_type  | table       | type  | possible_keys | key  | key_len | ref  | rows | filtered | Extra                                           |
          +------+--------------+-------------+-------+---------------+------+---------+------+------+----------+-------------------------------------------------+
          |    1 | PRIMARY      | t3          | index | c             | c    | 5       | NULL |    2 |   100.00 | Using index                                     |
          |    1 | PRIMARY      | <subquery2> | ALL   | distinct_key  | NULL | NULL    | NULL |    2 |   100.00 | Using where                                     |
          |    1 | PRIMARY      | t1          | ALL   | NULL          | NULL | NULL    | NULL |    5 |   100.00 | Using where; Using join buffer (flat, BNL join) |
          |    2 | MATERIALIZED | t2          | ALL   | NULL          | NULL | NULL    | NULL |    2 |   100.00 |                                                 |
          +------+--------------+-------------+-------+---------------+------+---------+------+------+----------+-------------------------------------------------+
          

          The query plan is incorrect.

          • EXPLAIN EXTENDED + SHOW WARNINGS show that the subqueries were converted into semi-joins (but not inner joins).
          • The query plan has no ways to remove duplicate matches produced by table t3.
          psergei Sergei Petrunia added a comment - MariaDB [test]> EXPLAIN EXTENDED SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE b = t1.a) AND EXISTS (SELECT 1 FROM t3 WHERE c = t1.a); +------+--------------+-------------+-------+---------------+------+---------+------+------+----------+-------------------------------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +------+--------------+-------------+-------+---------------+------+---------+------+------+----------+-------------------------------------------------+ | 1 | PRIMARY | t3 | index | c | c | 5 | NULL | 2 | 100.00 | Using index | | 1 | PRIMARY | <subquery2> | ALL | distinct_key | NULL | NULL | NULL | 2 | 100.00 | Using where | | 1 | PRIMARY | t1 | ALL | NULL | NULL | NULL | NULL | 5 | 100.00 | Using where; Using join buffer (flat, BNL join) | | 2 | MATERIALIZED | t2 | ALL | NULL | NULL | NULL | NULL | 2 | 100.00 | | +------+--------------+-------------+-------+---------------+------+---------+------+------+----------+-------------------------------------------------+ The query plan is incorrect. EXPLAIN EXTENDED + SHOW WARNINGS show that the subqueries were converted into semi-joins (but not inner joins). The query plan has no ways to remove duplicate matches produced by table t3 .
          psergei Sergei Petrunia added a comment - - edited

          Debugging. The optimizer constructs this join prefix:

          idx=0, table=t3  
          idx=1, table=t2
          idx=2, table=t1 
          

          without any parts to remove duplicates (dups_producing_tables=6, 6=2+4={t2,t3}).
          Then, in advance_sj_state():

          • LooseScan strategy is used to remove duplicates produced by table t3.
          • SJ-Materialization-scan is used to remove duplicates produced by table t2.

          However, one can store only one value at a time in join->positions[2].sj_strategy.

          Thus, information about the need to use LooseScan for t3 is lost.
          fix_semijoin_strategies_for_picked_join_order() only sets up execution for SJ_MATERIALIZE_SCAN.

          psergei Sergei Petrunia added a comment - - edited Debugging. The optimizer constructs this join prefix: idx=0, table=t3 idx=1, table=t2 idx=2, table=t1 without any parts to remove duplicates (dups_producing_tables=6, 6=2+4={t2,t3}). Then, in advance_sj_state(): LooseScan strategy is used to remove duplicates produced by table t3. SJ-Materialization-scan is used to remove duplicates produced by table t2. However, one can store only one value at a time in join->positions[2].sj_strategy . Thus, information about the need to use LooseScan for t3 is lost. fix_semijoin_strategies_for_picked_join_order() only sets up execution for SJ_MATERIALIZE_SCAN.

          Possible ways to fix this:

          • Allow multiple semi-join strategies to be attached to one POSITION object.
          • * I am not sure about all consequences of an attempt to do this
          • Resolve such "collisions" between strategies by falling back to DuplicateElimination. That strategy is special as it can handle multiple semi-joins at once and is always applicable (so all fanout will be removed). It is not always the most performant, though.
          psergei Sergei Petrunia added a comment - Possible ways to fix this: Allow multiple semi-join strategies to be attached to one POSITION object. * I am not sure about all consequences of an attempt to do this Resolve such "collisions" between strategies by falling back to DuplicateElimination. That strategy is special as it can handle multiple semi-joins at once and is always applicable (so all fanout will be removed). It is not always the most performant, though.

          5.5 test suite

          SET @optimiser_switch_save= @@optimizer_switch;
           
          CREATE TABLE t1 (a INT NOT NULL);
          INSERT INTO t1 VALUES (1),(1),(1),(5),(5);
           
          CREATE TABLE t2 (b INT);
          INSERT INTO t2 VALUES (5),(1);
           
          CREATE TABLE t3 (c INT, KEY(c));
          INSERT INTO t3 VALUES (5),(5);
           
          SET optimizer_switch='semijoin=on';
          select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`)
          and t1.a in (select `test`.`t3`.`c` from `test`.`t3`);
           
          SET optimizer_switch='semijoin=off';
          select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`)
          and t1.a in (select `test`.`t3`.`c` from `test`.`t3`);
           
          SET @@optimiser_switch= @optimizer_switch_save;
          DROP TABLE t1, t2, t3;
          

          sanja Oleksandr Byelkin added a comment - 5.5 test suite SET @optimiser_switch_save= @@optimizer_switch;   CREATE TABLE t1 (a INT NOT NULL); INSERT INTO t1 VALUES (1),(1),(1),(5),(5);   CREATE TABLE t2 (b INT); INSERT INTO t2 VALUES (5),(1);   CREATE TABLE t3 (c INT, KEY(c)); INSERT INTO t3 VALUES (5),(5);   SET optimizer_switch='semijoin=on'; select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`) and t1.a in (select `test`.`t3`.`c` from `test`.`t3`);   SET optimizer_switch='semijoin=off'; select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`) and t1.a in (select `test`.`t3`.`c` from `test`.`t3`);   SET @@optimiser_switch= @optimizer_switch_save; DROP TABLE t1, t2, t3;
          sanja Oleksandr Byelkin made changes -
          Affects Version/s 5.5 [ 15800 ]
          sanja Oleksandr Byelkin made changes -
          Fix Version/s 5.5 [ 15800 ]
          Fix Version/s 10.0 [ 16000 ]
          sanja Oleksandr Byelkin made changes -
          Assignee Oleksandr Byelkin [ sanja ] Sergei Petrunia [ psergey ]
          Status In Progress [ 3 ] In Review [ 10002 ]
          serg Sergei Golubchik made changes -
          Sprint 10.2.10 [ 183 ] 10.2.10, 5.5.58 [ 183, 197 ]
          serg Sergei Golubchik made changes -
          Sprint 10.2.10, 5.5.58 [ 183, 197 ] 10.2.10, 5.5.58, 10.1.29 [ 183, 197, 202 ]
          serg Sergei Golubchik made changes -
          Sprint 10.2.10, 5.5.58, 10.1.29 [ 183, 197, 202 ] 10.2.10, 5.5.58, 10.1.29, 10.1.30 [ 183, 197, 202, 215 ]

          I was unable to find any issues in the patch.

          Let's still ask elenst (or should we ask alice now?) to do a test pass with a semi-join RQG grammar, with various values of the firstmatch,loosescan,materialization flags in @@optimizer_switch.

          psergei Sergei Petrunia added a comment - I was unable to find any issues in the patch. Let's still ask elenst (or should we ask alice now?) to do a test pass with a semi-join RQG grammar, with various values of the firstmatch,loosescan,materialization flags in @@optimizer_switch.
          psergei Sergei Petrunia made changes -
          Assignee Sergei Petrunia [ psergey ] Oleksandr Byelkin [ sanja ]
          Status In Review [ 10002 ] Stalled [ 10000 ]
          sanja Oleksandr Byelkin made changes -
          Assignee Oleksandr Byelkin [ sanja ] Alice Sherepa [ alice ]
          serg Sergei Golubchik made changes -
          Sprint 10.2.10, 5.5.58, 10.1.29, 10.1.30 [ 183, 197, 202, 215 ] 10.2.10, 5.5.58, 10.1.29, 10.1.30, 10.2.12 [ 183, 197, 202, 215, 216 ]
          sanja Oleksandr Byelkin made changes -
          Sprint 10.2.10, 5.5.58, 10.1.29, 10.1.30, 10.2.12 [ 183, 197, 202, 215, 216 ] 10.2.10, 5.5.58, 10.1.29, 10.1.30, 10.2.12, 5.5.59 [ 183, 197, 202, 215, 216, 221 ]
          sanja Oleksandr Byelkin made changes -
          Assignee Alice Sherepa [ alice ] Oleksandr Byelkin [ sanja ]
          sanja Oleksandr Byelkin made changes -
          Fix Version/s 5.5.59 [ 22612 ]
          Fix Version/s 10.0.34 [ 22613 ]
          Fix Version/s 10.3.4 [ 22904 ]
          Fix Version/s 10.1.31 [ 22907 ]
          Fix Version/s 10.2.13 [ 22910 ]
          Fix Version/s 10.2 [ 14601 ]
          Fix Version/s 5.5 [ 15800 ]
          Fix Version/s 10.0 [ 16000 ]
          Fix Version/s 10.1 [ 16100 ]
          Resolution Fixed [ 1 ]
          Status Stalled [ 10000 ] Closed [ 6 ]
          serg Sergei Golubchik made changes -
          Workflow MariaDB v3 [ 82827 ] MariaDB v4 [ 152902 ]
          mariadb-jira-automation Jira Automation (IT) made changes -
          Zendesk Related Tickets 145664

          People

            sanja Oleksandr Byelkin
            claudio.nanni Claudio Nanni
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Git Integration

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