maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #06664
Re: [Commits] Rev 3963: MDEV-5426: Assertion `toku_ft_needed_unlocked(src_h)' failed (errno=11) ... in file:///home/psergey/chroot/saucy-x64/home/psergey/dev2/10.0/
Hi Jan,
On Tue, Jan 21, 2014 at 12:18:13PM +0200, Jan Lindström wrote:
> Hi,
>
> While the original problem is tokudb related and below fix does
> nicely address it and I'm sure that you did run regression testing,
> my question is does below change have any affect on other storage
> engines ? Why not add test case that is run all/most of the
> supported storage engines ?
The problem is that I am not aware of any location where I could add a test and
then it would be run for every available storage engine.
The effect of the change is that now EXPLAIN INSERT ... SELECT does not make
a handler->start_bulk_insert() call that's not paired with a end_bulk_insert()
call.
>
> R: Jan
>
> >At file:///home/psergey/chroot/saucy-x64/home/psergey/dev2/10.0/
> >
> >------------------------------------------------------------
> >revno: 3963
> >revision-id: psergey@xxxxxxxxxxxx-20140121100256-pwiacbt684azw6kj
> >parent: elenst@xxxxxxxxxxxxx-20131228163657-kk32bmtqogy61mwm
> >committer: Sergey Petrunya <psergey@xxxxxxxxxxxx>
> >branch nick: 10.0
> >timestamp: Tue 2014-01-21 14:02:56 +0400
> >message:
> > MDEV-5426: Assertion `toku_ft_needed_unlocked(src_h)' failed (errno=11) ...
> > - the problem was caused by EXPLAIN INSERT SELECT. For that statement,
> > the code would call select_insert::prepare2(), which would call
> > handler->ha_start_bulk_insert(). The corresponding handler->end_bulk_insert()
> > call is made from select_insert::send_eof or select_insert::abort_result_set
> > which are never called for EXPLAIN INSERT SELECT.
> > - Fixed by re-using approach of mysql-5.6: don't call ha_start_bulk_insert() if
> > we are in EXPLAIN.
> >=== modified file 'sql/sql_insert.cc'
> >--- a/sql/sql_insert.cc 2013-12-16 12:02:21 +0000
> >+++ b/sql/sql_insert.cc 2014-01-21 10:02:56 +0000
> >@@ -3555,7 +3555,8 @@ int select_insert::prepare2(void)
> > {
> > DBUG_ENTER("select_insert::prepare2");
> > if (thd->lex->current_select->options & OPTION_BUFFER_RESULT &&
> >- thd->locked_tables_mode <= LTM_LOCK_TABLES)
> >+ thd->locked_tables_mode <= LTM_LOCK_TABLES &&
> >+ !thd->lex->describe)
> > table->file->ha_start_bulk_insert((ha_rows) 0);
> > DBUG_RETURN(0);
> > }
> >
> >=== added file 'storage/tokudb/mysql-test/tokudb_mariadb/r/mdev5426.result'
> >--- a/storage/tokudb/mysql-test/tokudb_mariadb/r/mdev5426.result 1970-01-01 00:00:00 +0000
> >+++ b/storage/tokudb/mysql-test/tokudb_mariadb/r/mdev5426.result 2014-01-21 10:02:56 +0000
> >@@ -0,0 +1,6 @@
> >+CREATE TABLE t1 (i INT) ENGINE=TokuDB;
> >+EXPLAIN INSERT INTO t1 SELECT * FROM t1;
> >+id select_type table type possible_keys key key_len ref rows Extra
> >+1 SIMPLE t1 ALL NULL NULL NULL NULL 1 Using temporary
> >+INSERT INTO t1 SELECT * FROM t1;
> >+DROP TABLE t1;
> >
> >=== added file 'storage/tokudb/mysql-test/tokudb_mariadb/t/mdev5426.test'
> >--- a/storage/tokudb/mysql-test/tokudb_mariadb/t/mdev5426.test 1970-01-01 00:00:00 +0000
> >+++ b/storage/tokudb/mysql-test/tokudb_mariadb/t/mdev5426.test 2014-01-21 10:02:56 +0000
> >@@ -0,0 +1,10 @@
> >+
> >+CREATE TABLE t1 (i INT) ENGINE=TokuDB;
> >+EXPLAIN INSERT INTO t1 SELECT * FROM t1;
> >+
> >+--connect con1,localhost,root,,test
> >+INSERT INTO t1 SELECT * FROM t1;
> >+
> >+--connection default
> >+--disconnect con1
> >+DROP TABLE t1;
> >
--
BR
Sergei
--
Sergei Petrunia, Software Developer
MariaDB | Skype: sergefp | Blog: http://s.petrunia.net/blog