- 06 Oct, 2015 2 commits
-
-
Sergei Petrunia authored
EXPLAIN INSERT ... SELECT tried to use SELECT's execution path. This caused a collection of problems: - SELECT_DESCRIBE flag was not put into select_lex->options, which means it was not in JOIN::select_options either (except for the first member of the UNION). - This caused UNION members to be executed. They would attempt to write join output rows to the output. - (Actual cause of the crash) second join sibling would call result->send_eof() when finished execution. Then, Explain_query::print_explain would attempt to write to query output again, and cause an assertion due to non-empty query output.
-
Sergei Petrunia authored
[EXPLAIN] INSERT .. SELECT creates a select_insert object. select_insert calls handler->start_bulk_insert() during initialization. For MyISAM/Aria this requires that a matching call to handler->end_bulk_insert() call is made. Regular INSERT .. SELECT accomplishes this by calling either select_result->send_eof() or select_result->abort_result_set(). EXPLAIN INSERT ... SELECT didn't call either, which resulted in improper de-initializaiton of handler object. Make it call abort_result_set(), which invokes handler->end_bulk_insert().
-
- 01 Oct, 2015 2 commits
-
-
Sergey Vojtovich authored
Corrected variable name in dead code for consistency. Patch contributed by Michal Hrusecky.
-
Sergey Vojtovich authored
Fixed unclean prototype declaration. According to ISO/IEC 9899:TC2: ... 10. The special case of an unnamed parameter of type void as the only item in the list specifies that the function has no parameters. ... 14. An identifier list declares only the identifiers of the parameters of the function. An empty list in a function declarator that is part of a definition of that function specifies that the function has no parameters. The empty list in a function declarator that is not part of a definition of that function specifies that no information about the number or types of the parameters is supplied. 124) ... 6.11.6 Function declarators The use of function declarators with empty parentheses (not prototype-format parameter type declarators) is an obsolescent feature. ... Patch contributed by Michal Hrusecky.
-
- 22 Sep, 2015 2 commits
-
-
Kristian Nielsen authored
Use sync_with_master_gtid.inc instead of --sync_with_master. The latter is not correct because the test case uses RESET MASTER; this invalidates the existing binlog positions on the slave. In this particular case, there was a small window where --sync_with_master could trigger too early (on the old position), causing the test case to miss one event.
-
Sergei Petrunia authored
Post fix: initialize a variable
-
- 21 Sep, 2015 1 commit
-
-
Sergei Petrunia authored
The crash was caused by range optimizer using RANGE_OPT_PARAM::min_key (and max_key) to store keys. Buffer size was a good upper bound for range analysis and partition pruning, but not for EITS selectivity calculations. Fixed by making these buffers variable-size. The sizes are calculated from [pseudo]indexes used for range analysis.
-
- 14 Sep, 2015 1 commit
-
-
Oleksandr Byelkin authored
MDEV-7990: ERROR 1526 when procedure executed for second time ALTER TABLE partition ... pMAX values less than MAXVALUE Made dipper copy of the lists, so now one execution has no influence on the other.
-
- 11 Sep, 2015 4 commits
-
-
Kristian Nielsen authored
-
Kristian Nielsen authored
Adjust the test case to try and avoid some sporadic failures on loaded test hosts. The wait for SQL thread to stop may complete before worker threads have completed.
-
Kristian Nielsen authored
-
Kristian Nielsen authored
The code was using the wrong variable when comparing the binlog name for the UNTIL position. This could cause the comparison to fail after binlog rotation, in turn causing the UNTIL clause to not trigger slave stop.
-
- 06 Sep, 2015 1 commit
-
-
Oleksandr Byelkin authored
Expression in macro protected by ()
-
- 04 Sep, 2015 1 commit
-
-
Jan Lindström authored
Reduce the number of rounds and operations to avoid testcase timeout.
-
- 03 Sep, 2015 1 commit
-
-
Oleksandr "Sanja" Byelkin authored
Add parenthesis in macro definitions to prevent order of operation problems
-
- 02 Sep, 2015 3 commits
-
-
Kristian Nielsen authored
-
Kristian Nielsen authored
If a transaction T1 needs to wait for a transaction T2, T2's commit will skip the normal binlog_commit_wait_usec delay, in order not to needlessly stall throughput. This works by checking if T2 is already ready to commit. If so, it is woken up. If not, we set a flag in T2 so that when it gets ready to commit, it will do so immediately. But there was a potential race due to insufficient locking, if T2 gets ready to commit just at the point where T1 does the check. If the race hits, the wakeup (and early commit) of T2 might be lost. The race is only theoretical (from code inspection, no known test case), but seems best to fix it anyway, by properly locking LOCK_prepare_ordered around the check.
-
Kristian Nielsen authored
MDEV-8725: Assertion `!(thd->rgi_slave && thd-> rgi_slave->did_mark_start_commit)' failed in ha_rollback_trans The assertion is there to catch cases where we rollback while mark_start_commit() is active. This can allow following event groups to be replicated too early, causing conflicts. But in this case, we have an _explicit_ ROLLBACK event in the binlog, which should not assert. We fix this by delaying the mark_start_commit() in the explicit ROLLBACK case. It seems safest to delay this in ROLLBACK case anyway, and there should be no reason to try to optimise this corner case.
-
- 31 Aug, 2015 1 commit
-
-
Oleksandr Byelkin authored
MDEV-6219: Server crashes in Bitmap<64u>::merge (this=0x180, map2=...) on 2nd execution of PS with INSERT .. SELECT, derived_merge Problem: Not all permanent Item_direct_view_ref was in permanent list of used items of the view. Solution: Detect creating permenent view/derived table reference and put them in the permanent list at once.
-
- 23 Aug, 2015 2 commits
-
-
Elena Stepanova authored
-
Elena Stepanova authored
Test failed because it hit net_write_timeout. It might happen in different circumstances, and that's not what the testcase tests, so the timeout is now set to a bigger value.
-
- 18 Aug, 2015 1 commit
-
-
Sergei Petrunia authored
- Make semi-join optimizer not to choose LooseScan when 1) the index is not covered and 2) full index scan will be required. - Make sure that the code in make_join_select() that may change full index scan into a range scan is not invoked when the table uses full scan.
-
- 12 Aug, 2015 2 commits
-
-
Monty authored
Test did not clean up after itself properly
-
Monty authored
of more than 45G with a key_cache_block_size of 1024 or less. The problem was that some of the arguments to my_multi_malloc() got to be more than 4G. Fix: - Inntroduced my_multi_malloc_large() that can handle big regions. - Changed MyISAM and Aria key caches to use my_multi_malloc_large(). I didn't change the default my_multi_malloc() as this would be a too big patch and we don't allocate 4G blocks anywhere else.
-
- 05 Aug, 2015 3 commits
-
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
Sergei Golubchik authored
5.5 without InnoDB/XtraDB changes
-
- 04 Aug, 2015 8 commits
-
-
Sergei Golubchik authored
5.5 with our InnoDB changes
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
Kristian Nielsen authored
-
Kristian Nielsen authored
-
Kristian Nielsen authored
-
Kristian Nielsen authored
This bug is essentially another variant of MDEV-7458. If a transaction conflict caused a deadlock kill of T2 in record_gtid() during commit, the code would do a rollback _before_ running rgi->unmark_start_commit(). This creates a race where following transactions could start too early (before T2 has completed its transaction retry). This in turn could lead to replication failure, if there was a conflict that caused eg. duplicate key error or similar. The fix is to remove these rollbacks (in Query_log_event::do_apply_event() and Xid_log_event::do_apply_event(). They seem out-of-place; code in log_event.cc generally does not roll back on error, this is handled higher up. In addition, because of the extreme difficulty of reproducing bugs like MDEV-7458 and MDEV-8302, this patch adds some extra precations to try to detect (in debug builds) or prevent (in release builds) similar bugs. ha_rollback_trans() will now call unmark_start_commit() if needed (and assert in debug build when a caller does rollback without unmark first). We also add an extra check for thd->killed() so that we avoid doing mark_start_commit() if we already have a pending deadlock kill. And we add a missing unmark_start_commit() call in the error case, found by the above assertion.
-
Jan Lindström authored
-
- 03 Aug, 2015 5 commits
-
-
Jan Lindström authored
Conflicts: client/mysql_upgrade.c mysql-test/r/func_misc.result mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result mysql-test/suite/innodb/r/innodb-fk.result mysql-test/t/subselect_sj_mat.test sql/item.cc sql/item_func.cc sql/log.cc sql/log_event.cc sql/rpl_utility.cc sql/slave.cc sql/sql_class.cc sql/sql_class.h sql/sql_select.cc storage/innobase/dict/dict0crea.c storage/innobase/dict/dict0dict.c storage/innobase/handler/ha_innodb.cc storage/xtradb/dict/dict0crea.c storage/xtradb/dict/dict0dict.c storage/xtradb/handler/ha_innodb.cc vio/viosslfactories.c
-
Sergei Petrunia authored
The problem was with Materialized_cursor and temporary table it uses. Temorary table's fields had Field::orig_table pointing to the tables that were used in the query that produced data for the cursor. When "FETCH INTO sp_var" statement is executed, those original tables were already closed. However, copying from Materialized_cursor's table into SP variable may cause field_conv() to be invoked which calls field->type() which may access field->orig_table (for certain field types). Fixed by setting Materialized_cursor->table->field[i]->orig_table to point to Materialized_cursor->table. (this is how it is done for regular base tables)
-
Sergei Petrunia authored
-
Sergei Petrunia authored
THD::>save_prep_leaf_list was set to true by multi-table update statements with mergeable selects and never reset. Make every statement reset it at start.
-
Sergei Petrunia authored
THD::>save_prep_leaf_list was set to true by multi-table update statements with mergeable selects and never reset. Make every statement reset it at start.
-