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

LP:652727 - Crash in create_ref_for_key() with maria-5.3-mwl89

    Details

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

      Description

      When executed with semijoin=off, the following query crashes in maria-5.3-mwl89:

      SELECT `col_int_key` FROM B
      WHERE ( 2 , 6 ) IN ( SELECT SUBQUERY1_t1 .`col_int_nokey` , SUBQUERY1_t1 .`col_int_nokey` FROM C SUBQUERY1_t1 STRAIGHT_JOIN CC SUBQUERY1_t2 ON SUBQUERY1_t2 .`pk` = SUBQUERY1_t1 .`pk` ) ;

      backtrace:

      #4 <signal handler called>
      #5 0x0830e269 in create_ref_for_key (join=0xaeca51d0, j=0xaecab710, org_keyuse=0xaecac484, used_tables=4611686018427387907) at sql_select.cc:6223
      #6 0x0830d87b in get_best_combination (join=0xaeca51d0) at sql_select.cc:6083
      #7 0x083068e4 in make_join_statistics (join=0xaeca51d0, tables_arg=0xaec5ebc0, conds=0xaecaa760, keyuse_array=0xaeca9f0c) at sql_select.cc:3151
      #8 0x082fe797 in JOIN::optimize (this=0xaeca51d0) at sql_select.cc:962
      #9 0x081a7131 in st_select_lex::optimize_unflattened_subqueries (this=0xa28beb8) at sql_lex.cc:3107
      #10 0x083be01d in JOIN::optimize_unflattened_subqueries (this=0xaeca0358) at opt_subselect.cc:3569
      #11 0x082ffb9c in JOIN::optimize (this=0xaeca0358) at sql_select.cc:1312
      #12 0x08304283 in mysql_select (thd=0xa28a548, rref_pointer_array=0xa28bfbc, tables=0xaec5e208, wild_num=0, fields=..., conds=0xaec5f518, og_num=0,
      order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147764736, result=0xaec5f6a0, unit=0xa28bc20, select_lex=0xa28beb8)
      at sql_select.cc:2583
      #13 0x082fc7e3 in handle_select (thd=0xa28a548, lex=0xa28bbc4, result=0xaec5f6a0, setup_tables_done_option=0) at sql_select.cc:276
      #14 0x0829af04 in execute_sqlcom_select (thd=0xa28a548, all_tables=0xaec5e208) at sql_parse.cc:5081
      #15 0x082918e4 in mysql_execute_command (thd=0xa28a548) at sql_parse.cc:2265
      #16 0x0829d0e5 in mysql_parse (thd=0xa28a548,
      inBuf=0xaec5def8 "SELECT `col_int_key` FROM B WHERE ( 2 , 6 ) IN ( SELECT SUBQUERY1_t1 .`col_int_nokey` , SUBQUERY1_t1 .`col_int_nokey` FROM C SUBQUERY1_t1 STRAIGHT_JOIN CC SUBQUERY1_t2 ON SUBQUERY1_t2 .`pk"..., length=226, found_semicolon=0xaedf8230) at sql_parse.cc:6027
      #17 0x0828f316 in dispatch_command (command=COM_QUERY, thd=0xa28a548,
      packet=0xa2a6c19 " SELECT `col_int_key` FROM B WHERE ( 2 , 6 ) IN ( SELECT SUBQUERY1_t1 .`col_int_nokey` , SUBQUERY1_t1 .`col_int_nokey` FROM C SUBQUERY1_t1 STRAIGHT_JOIN CC SUBQUERY1_t2 ON SUBQUERY1_t2 .`p"..., packet_length=230) at sql_parse.cc:1184
      #18 0x0828e7bc in do_command (thd=0xa28a548) at sql_parse.cc:890
      #19 0x0828b91c in handle_one_connection (arg=0xa28a548) at sql_connect.cc:1153
      #20 0x00bea919 in start_thread () from /lib/libpthread.so.0
      #21 0x00b2ccbe in clone () from /lib/libc.so.6

      bzr version-info:

      revision-id: <email address hidden>
      date: 2010-09-30 18:32:44 +0300
      build-date: 2010-10-01 09:27:26 +0300
      revno: 2811
      branch-nick: maria-5.3-mwl89

        Gliffy Diagrams

          Attachments

            Activity

            Hide
            philipstoev Philip Stoev added a comment -

            Re: Crash in create_ref_for_key() with maria-5.3-mwl89
            Test case :

            SET SESSION optimizer_switch='semijoin=off';

            --disable_warnings
            DROP TABLE /*! IF EXISTS */ CC;
            DROP TABLE /*! IF EXISTS */ C;
            DROP TABLE /*! IF EXISTS */ B;
            --enable_warnings

            CREATE TABLE `CC` (
            `pk` int(11) NOT NULL AUTO_INCREMENT,
            `col_int_nokey` int(11) DEFAULT NULL,
            `col_int_key` int(11) DEFAULT NULL,
            `col_varchar_key` varchar(1) DEFAULT NULL,
            PRIMARY KEY (`pk`),
            KEY `col_int_key` (`col_int_key`),
            KEY `col_varchar_key` (`col_varchar_key`,`col_int_key`)
            ) ENGINE=MyISAM AUTO_INCREMENT=30 DEFAULT CHARSET=latin1;
            INSERT INTO `CC` VALUES (10,7,8,'v');
            INSERT INTO `CC` VALUES (11,1,9,'r');
            INSERT INTO `CC` VALUES (12,5,9,'a');
            INSERT INTO `CC` VALUES (13,3,186,'m');
            INSERT INTO `CC` VALUES (14,6,NULL,'y');
            INSERT INTO `CC` VALUES (15,92,2,'j');
            INSERT INTO `CC` VALUES (16,7,3,'d');
            INSERT INTO `CC` VALUES (17,NULL,0,'z');
            INSERT INTO `CC` VALUES (18,3,133,'e');
            INSERT INTO `CC` VALUES (19,5,1,'h');
            INSERT INTO `CC` VALUES (20,1,8,'b');
            INSERT INTO `CC` VALUES (21,2,5,'s');
            INSERT INTO `CC` VALUES (22,NULL,5,'e');
            INSERT INTO `CC` VALUES (23,1,8,'j');
            INSERT INTO `CC` VALUES (24,0,6,'e');
            INSERT INTO `CC` VALUES (25,210,51,'f');
            INSERT INTO `CC` VALUES (26,8,4,'v');
            INSERT INTO `CC` VALUES (27,7,7,'x');
            INSERT INTO `CC` VALUES (28,5,6,'m');
            INSERT INTO `CC` VALUES (29,NULL,4,'c');
            CREATE TABLE `C` (
            `pk` int(11) NOT NULL AUTO_INCREMENT,
            `col_int_nokey` int(11) DEFAULT NULL,
            `col_int_key` int(11) DEFAULT NULL,
            `col_varchar_key` varchar(1) DEFAULT NULL,
            PRIMARY KEY (`pk`),
            KEY `col_int_key` (`col_int_key`),
            KEY `col_varchar_key` (`col_varchar_key`,`col_int_key`)
            ) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=latin1;
            INSERT INTO `C` VALUES (1,NULL,2,'w');
            INSERT INTO `C` VALUES (2,7,9,'m');
            INSERT INTO `C` VALUES (3,9,3,'m');
            INSERT INTO `C` VALUES (4,7,9,'k');
            INSERT INTO `C` VALUES (5,4,NULL,'r');
            INSERT INTO `C` VALUES (6,2,9,'t');
            INSERT INTO `C` VALUES (7,6,3,'j');
            INSERT INTO `C` VALUES (8,8,8,'u');
            INSERT INTO `C` VALUES (9,NULL,8,'h');
            INSERT INTO `C` VALUES (10,5,53,'o');
            INSERT INTO `C` VALUES (11,NULL,0,NULL);
            INSERT INTO `C` VALUES (12,6,5,'k');
            INSERT INTO `C` VALUES (13,188,166,'e');
            INSERT INTO `C` VALUES (14,2,3,'n');
            INSERT INTO `C` VALUES (15,1,0,'t');
            INSERT INTO `C` VALUES (16,1,1,'c');
            INSERT INTO `C` VALUES (17,0,9,'m');
            INSERT INTO `C` VALUES (18,9,5,'y');
            INSERT INTO `C` VALUES (19,NULL,6,'f');
            INSERT INTO `C` VALUES (20,4,2,'d');
            CREATE TABLE `B` (
            `pk` int(11) NOT NULL AUTO_INCREMENT,
            `col_int_nokey` int(11) DEFAULT NULL,
            `col_int_key` int(11) DEFAULT NULL,
            `col_varchar_key` varchar(1) DEFAULT NULL,
            PRIMARY KEY (`pk`),
            KEY `col_int_key` (`col_int_key`),
            KEY `col_varchar_key` (`col_varchar_key`,`col_int_key`)
            ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
            INSERT INTO `B` VALUES (1,1,7,'f');

            SELECT `col_int_key`
            FROM B
            WHERE ( 2 , 6 ) IN (
            SELECT SUBQUERY1_t1 .`col_int_nokey` , SUBQUERY1_t1 .`col_int_nokey`
            FROM C SUBQUERY1_t1 STRAIGHT_JOIN CC SUBQUERY1_t2 ON SUBQUERY1_t2 .`pk` = SUBQUERY1_t1 .`pk` ) ;

            Show
            philipstoev Philip Stoev added a comment - Re: Crash in create_ref_for_key() with maria-5.3-mwl89 Test case : SET SESSION optimizer_switch='semijoin=off'; --disable_warnings DROP TABLE /*! IF EXISTS */ CC; DROP TABLE /*! IF EXISTS */ C; DROP TABLE /*! IF EXISTS */ B; --enable_warnings CREATE TABLE `CC` ( `pk` int(11) NOT NULL AUTO_INCREMENT, `col_int_nokey` int(11) DEFAULT NULL, `col_int_key` int(11) DEFAULT NULL, `col_varchar_key` varchar(1) DEFAULT NULL, PRIMARY KEY (`pk`), KEY `col_int_key` (`col_int_key`), KEY `col_varchar_key` (`col_varchar_key`,`col_int_key`) ) ENGINE=MyISAM AUTO_INCREMENT=30 DEFAULT CHARSET=latin1; INSERT INTO `CC` VALUES (10,7,8,'v'); INSERT INTO `CC` VALUES (11,1,9,'r'); INSERT INTO `CC` VALUES (12,5,9,'a'); INSERT INTO `CC` VALUES (13,3,186,'m'); INSERT INTO `CC` VALUES (14,6,NULL,'y'); INSERT INTO `CC` VALUES (15,92,2,'j'); INSERT INTO `CC` VALUES (16,7,3,'d'); INSERT INTO `CC` VALUES (17,NULL,0,'z'); INSERT INTO `CC` VALUES (18,3,133,'e'); INSERT INTO `CC` VALUES (19,5,1,'h'); INSERT INTO `CC` VALUES (20,1,8,'b'); INSERT INTO `CC` VALUES (21,2,5,'s'); INSERT INTO `CC` VALUES (22,NULL,5,'e'); INSERT INTO `CC` VALUES (23,1,8,'j'); INSERT INTO `CC` VALUES (24,0,6,'e'); INSERT INTO `CC` VALUES (25,210,51,'f'); INSERT INTO `CC` VALUES (26,8,4,'v'); INSERT INTO `CC` VALUES (27,7,7,'x'); INSERT INTO `CC` VALUES (28,5,6,'m'); INSERT INTO `CC` VALUES (29,NULL,4,'c'); CREATE TABLE `C` ( `pk` int(11) NOT NULL AUTO_INCREMENT, `col_int_nokey` int(11) DEFAULT NULL, `col_int_key` int(11) DEFAULT NULL, `col_varchar_key` varchar(1) DEFAULT NULL, PRIMARY KEY (`pk`), KEY `col_int_key` (`col_int_key`), KEY `col_varchar_key` (`col_varchar_key`,`col_int_key`) ) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=latin1; INSERT INTO `C` VALUES (1,NULL,2,'w'); INSERT INTO `C` VALUES (2,7,9,'m'); INSERT INTO `C` VALUES (3,9,3,'m'); INSERT INTO `C` VALUES (4,7,9,'k'); INSERT INTO `C` VALUES (5,4,NULL,'r'); INSERT INTO `C` VALUES (6,2,9,'t'); INSERT INTO `C` VALUES (7,6,3,'j'); INSERT INTO `C` VALUES (8,8,8,'u'); INSERT INTO `C` VALUES (9,NULL,8,'h'); INSERT INTO `C` VALUES (10,5,53,'o'); INSERT INTO `C` VALUES (11,NULL,0,NULL); INSERT INTO `C` VALUES (12,6,5,'k'); INSERT INTO `C` VALUES (13,188,166,'e'); INSERT INTO `C` VALUES (14,2,3,'n'); INSERT INTO `C` VALUES (15,1,0,'t'); INSERT INTO `C` VALUES (16,1,1,'c'); INSERT INTO `C` VALUES (17,0,9,'m'); INSERT INTO `C` VALUES (18,9,5,'y'); INSERT INTO `C` VALUES (19,NULL,6,'f'); INSERT INTO `C` VALUES (20,4,2,'d'); CREATE TABLE `B` ( `pk` int(11) NOT NULL AUTO_INCREMENT, `col_int_nokey` int(11) DEFAULT NULL, `col_int_key` int(11) DEFAULT NULL, `col_varchar_key` varchar(1) DEFAULT NULL, PRIMARY KEY (`pk`), KEY `col_int_key` (`col_int_key`), KEY `col_varchar_key` (`col_varchar_key`,`col_int_key`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; INSERT INTO `B` VALUES (1,1,7,'f'); SELECT `col_int_key` FROM B WHERE ( 2 , 6 ) IN ( SELECT SUBQUERY1_t1 .`col_int_nokey` , SUBQUERY1_t1 .`col_int_nokey` FROM C SUBQUERY1_t1 STRAIGHT_JOIN CC SUBQUERY1_t2 ON SUBQUERY1_t2 .`pk` = SUBQUERY1_t1 .`pk` ) ;
            Hide
            ratzpo Rasmus Johansson added a comment -

            Launchpad bug id: 652727

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

              People

              • Assignee:
                timour Timour Katchaounov
                Reporter:
                philipstoev Philip Stoev
              • Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: