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

LP:668290 - Wrong result in maria-5.3-mwl128 with join_cache_level = 4 and small join_buffer_size and join buffer (flat, BNLH join)

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:

      Description

      The following query:

      SELECT t2 .col_int_key FROM t2 JOIN t1 ON t2 .col_varchar_10_latin1_key = t1 .col_varchar_10_utf8_key ;

      returns no rows when executed with join_cache_level = 4, join_buffer_size = 164 , even though there are rows for which the condition t2 .col_varchar_10_latin1_key = t1 .col_varchar_10_utf8_key is TRUE.

      The execution strategy is reported as "Using join buffer (flat, BNLH join)". maria-5.3 is not affected.

        Gliffy Diagrams

          Attachments

            Activity

            Hide
            philipstoev Philip Stoev added a comment -

            Re: Wrong result in maria-5.3-mwl128 with join_cache_level = 4 and small join_buffer_size
            Test case:

            --disable_warnings
            DROP TABLE /*! IF EXISTS */ t1;
            DROP TABLE /*! IF EXISTS */ t2;
            --enable_warnings

            CREATE TABLE t1 (
            col_int_key int(11) DEFAULT NULL,
            col_varchar_10_latin1_key varchar(10) DEFAULT NULL,
            col_varchar_10_utf8_key varchar(10) CHARACTER SET utf8 DEFAULT NULL,
            KEY col_int_key (col_int_key),
            KEY col_varchar_10_latin1_key (col_varchar_10_latin1_key),
            KEY col_varchar_10_utf8_key (col_varchar_10_utf8_key)
            ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
            INSERT INTO t1 VALUES (650903552,'cmxffkpsel','z'),(535298048,'tvtjrcmxff','y'),(1626865664,'when','for'),(39649280,'rcvljitvtj','ercvljitvt'),(792068096,'ttercvljit','jttercvlji');
            CREATE TABLE t2 (
            col_varchar_10_utf8_key varchar(10) CHARACTER SET utf8 DEFAULT NULL,
            col_int_key int(11) DEFAULT NULL,
            col_varchar_10_latin1_key varchar(10) DEFAULT NULL,
            KEY col_varchar_10_utf8_key (col_varchar_10_utf8_key),
            KEY col_int_key (col_int_key),
            KEY col_varchar_10_latin1_key (col_varchar_10_latin1_key)
            ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
            INSERT INTO t2 VALUES ('g',7,'like'),('fujttercvl',6,'y'),('s',2,'e'),('didn\'t',0,'v'),('gvdrodpedk',8,'chogvdrodp'),('jichogvdro',7,'will');

            SELECT t2 .col_int_key FROM t2 JOIN t1 ON t2 .col_varchar_10_latin1_key = t1 .col_varchar_10_utf8_key ;
            EXPLAIN SELECT t2 .col_int_key FROM t2 JOIN t1 ON t2 .col_varchar_10_latin1_key = t1 .col_varchar_10_utf8_key ;

            SET SESSION join_cache_level = 4;
            SET SESSION join_buffer_size = 164;

            SELECT t2 .col_int_key FROM t2 JOIN t1 ON t2 .col_varchar_10_latin1_key = t1 .col_varchar_10_utf8_key ;
            EXPLAIN SELECT t2 .col_int_key FROM t2 JOIN t1 ON t2 .col_varchar_10_latin1_key = t1 .col_varchar_10_utf8_key ;

            Show
            philipstoev Philip Stoev added a comment - Re: Wrong result in maria-5.3-mwl128 with join_cache_level = 4 and small join_buffer_size Test case: --disable_warnings DROP TABLE /*! IF EXISTS */ t1; DROP TABLE /*! IF EXISTS */ t2; --enable_warnings CREATE TABLE t1 ( col_int_key int(11) DEFAULT NULL, col_varchar_10_latin1_key varchar(10) DEFAULT NULL, col_varchar_10_utf8_key varchar(10) CHARACTER SET utf8 DEFAULT NULL, KEY col_int_key (col_int_key), KEY col_varchar_10_latin1_key (col_varchar_10_latin1_key), KEY col_varchar_10_utf8_key (col_varchar_10_utf8_key) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO t1 VALUES (650903552,'cmxffkpsel','z'),(535298048,'tvtjrcmxff','y'),(1626865664,'when','for'),(39649280,'rcvljitvtj','ercvljitvt'),(792068096,'ttercvljit','jttercvlji'); CREATE TABLE t2 ( col_varchar_10_utf8_key varchar(10) CHARACTER SET utf8 DEFAULT NULL, col_int_key int(11) DEFAULT NULL, col_varchar_10_latin1_key varchar(10) DEFAULT NULL, KEY col_varchar_10_utf8_key (col_varchar_10_utf8_key), KEY col_int_key (col_int_key), KEY col_varchar_10_latin1_key (col_varchar_10_latin1_key) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO t2 VALUES ('g',7,'like'),('fujttercvl',6,'y'),('s',2,'e'),('didn\'t',0,'v'),('gvdrodpedk',8,'chogvdrodp'),('jichogvdro',7,'will'); SELECT t2 .col_int_key FROM t2 JOIN t1 ON t2 .col_varchar_10_latin1_key = t1 .col_varchar_10_utf8_key ; EXPLAIN SELECT t2 .col_int_key FROM t2 JOIN t1 ON t2 .col_varchar_10_latin1_key = t1 .col_varchar_10_utf8_key ; SET SESSION join_cache_level = 4; SET SESSION join_buffer_size = 164; SELECT t2 .col_int_key FROM t2 JOIN t1 ON t2 .col_varchar_10_latin1_key = t1 .col_varchar_10_utf8_key ; EXPLAIN SELECT t2 .col_int_key FROM t2 JOIN t1 ON t2 .col_varchar_10_latin1_key = t1 .col_varchar_10_utf8_key ;
            Hide
            ratzpo Rasmus Johansson added a comment -

            Launchpad bug id: 668290

            Show
            ratzpo Rasmus Johansson added a comment - Launchpad bug id: 668290

              People

              • Assignee:
                igor Igor Babaev
                Reporter:
                philipstoev Philip Stoev
              • Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: