1
0
mirror of https://github.com/MariaDB/server.git synced 2025-05-10 02:01:19 +03:00

34399 Commits

Author SHA1 Message Date
Dmitry Lenev
fc2c669297 Fix for bug#14188793 - "DEADLOCK CAUSED BY ALTER TABLE DOEN'T CLEAR
STATUS OF ROLLBACKED TRANSACTION" and bug #17054007 - "TRANSACTION
IS NOT FULLY ROLLED BACK IN CASE OF INNODB DEADLOCK".

The problem in the first bug report was that although deadlock involving
metadata locks was reported using the same error code and message as InnoDB
deadlock it didn't rollback transaction like the latter. This caused
confusion to users as in some cases after ER_LOCK_DEADLOCK transaction
could have been restarted immediately and in some cases rollback was
required.

The problem in the second bug report was that although InnoDB deadlock
caused transaction rollback in all storage engines it didn't cause release
of metadata locks. So concurrent DDL on the tables used in transaction was
blocked until implicit or explicit COMMIT or ROLLBACK was issued in the
connection which got InnoDB deadlock.

The former issue has stemmed from the fact that when support for detection
and reporting metadata locks deadlocks was added we erroneously assumed
that InnoDB doesn't rollback transaction on deadlock but only last statement
(while this is what happens on InnoDB lock timeout actually) and so didn't
implement rollback of transactions on MDL deadlocks.

The latter issue was caused by the fact that rollback of transaction due
to deadlock is carried out by setting THD::transaction_rollback_request
flag at the point where deadlock is detected and performing rollback
inside of trans_rollback_stmt() call when this flag is set. And
trans_rollback_stmt() is not aware of MDL locks, so no MDL locks are
released.

This patch solves these two problems in the following way:

- In case when MDL deadlock is detect transaction rollback is requested
  by setting THD::transaction_rollback_request flag.

- Code performing rollback of transaction if THD::transaction_rollback_request
  is moved out from trans_rollback_stmt(). Now we handle rollback request
  on the same level as we call trans_rollback_stmt() and release statement/
  transaction MDL locks.
2013-08-20 13:12:34 +04:00
unknown
84a2fb4836 Backport from 10.0-base fix for tests failing when vardir has no execute permissions. 2013-08-20 10:42:38 +02:00
unknown
dafa458262 mysql-test/r/func_set.result:
merge
2013-08-19 13:12:03 +03:00
Igor Babaev
4eddb2c221 Merge 5.3->5.5.
In particular:
Merged the patch for bug mdev-4418 from 5.3 into 5.5.
Fixed a bug in the patch that should be backported to 5.3.
2013-08-18 19:58:51 -07:00
Igor Babaev
7c85205d19 Fixed bug mdev-4918.
The function SELECT_LEX::mark_const_derived() must take into account that
in DELETE ... RETURNING join == NULL.
2013-08-18 12:29:06 -07:00
Igor Babaev
25c152018d Fixed bug mdev-4418.
After single row substitutions there might appear new equalities.
They should be properly propagated to all AND/OR levels the WHERE
condition. It's done now with an additional call of remove_eq_conds().
2013-08-16 22:01:47 -07:00
Andrew McDonnell
6686a4eb51 Tests for bug #1213120 2013-08-17 00:13:18 +09:30
Andrew McDonnell
007ff24cd4 Another variant of 796647 2013-08-16 23:56:19 +09:30
Andrew McDonnell
da87bf53c7 Regression tests for 796647 2013-08-16 23:51:27 +09:30
unknown
f0deff867a MDEV-4820: Empty master does not give error for slave GTID position that does not exist in the binlog
The main bug here was the following situation:

Suppose we set up a completely new master2 as an extra multi-master to an
existing slave that already has a different master1 for domain_id=0. When the
slave tries to connect to master2, master2 will not have anything that slave
requests in domain_id=0, but that is fine as master2 is supposedly meant to
serve eg. domain_id=1. (This is MDEV-4485).

But suppose that master2 then actually starts sending events from
domain_id=0. In this case, the fix for MDEV-4485 was incomplete, and the code
would fail to give the error that the position requested by the slave in
domain_id=0 was missing from the binlogs of master2. This could lead to lost
events or completely wrong replication.

The patch for this bug fixes this issue.

In addition, it cleans up the code a bit, getting rid of the fake_gtid_hash in
the code. And the error message when slave and master have diverged due to
alternate future is clarified, as requested in the bug description.
2013-08-16 15:10:25 +02:00
Alexander Barkov
4f412a5760 A post-fix for MDEV-4871: Fixing a failire in "mtr --ps" 2013-08-16 11:24:13 +04:00
Igor Babaev
752d5d022d Merge 2013-08-15 16:59:20 -07:00
Igor Babaev
fa7f677218 Fixed bug mdev-4355.
This patch almost totally revised the patch for bug mdev-4177.
The latter had too many defects. In particular, it did not
propagate multiple equalities formed when merging a degenerate
disjunct into underlying AND formula.
2013-08-15 14:16:16 -07:00
Igor Babaev
960720b10d Merge 5.2->5.3 2013-08-15 14:04:20 -07:00
Andrew McDonnell
6e97d93c13 Test case for lp:1133093 order by seq crash 2013-08-15 23:25:56 +09:30
Andrew McDonnell
3723b5bfb7 Test results for 1134355 2013-08-15 23:25:17 +09:30
Andrew McDonnell
f69f62741a Disable ALTER for oqgraph. Fixes crash. 2013-08-15 22:54:14 +09:30
Sergey Vojtovich
df3bedb82d MDEV-4864 - Merge tests for EXCHANGE PARTITION feature
Added partition_exchange test.

Do not set HA_OPTION_PACK_RECORD for InnoDB specific row formats
(e.g. COMPACT, REDUNDANT). Adjusted mysql_compare_tables() accordingly.
2013-08-15 16:45:29 +04:00
Alexander Barkov
c6d9c36f2c An additional test for MDEV-4871 Temporal literals do not accept nanoseconds 2013-08-15 15:32:18 +04:00
Alexander Barkov
e9ca686137 MDEV-4871 Temporal literals do not accept nanoseconds 2013-08-15 15:24:34 +04:00
Sergei Golubchik
3462b6d3d2 fix tests that were relying on @@have_partitioning
sql/sql_partition_admin.cc:
  compilation failures w/o partitioning
2013-08-15 10:47:18 +02:00
Igor Babaev
7ba78277b4 Merge 5.1->5.2 2013-08-14 20:37:38 -07:00
Sergei Golubchik
51e2806661 raise a version 2013-08-14 18:56:41 +02:00
Sergey Vojtovich
f3d26cb1a7 Adjusted test results after recent changes. 2013-08-14 12:50:17 +04:00
Sergey Vojtovich
b7f9c89423 MDEV-4702 - Reduce usage of LOCK_open
Following variables do not require LOCK_open protection anymore:
- table_def_cache (renamed to tdc_hash) is protected by rw-lock
  LOCK_tdc_hash;
- table_def_shutdown_in_progress doesn't need LOCK_open protection;
- last_table_id use atomics;
- TABLE_SHARE::ref_count (renamed to TABLE_SHARE::tdc.ref_count)
  is protected by TABLE_SHARE::tdc.LOCK_table_share;
- TABLE_SHARE::next, ::prev (renamed to tdc.next and tdc.prev),
  oldest_unused_share, end_of_unused_share are protected by
  LOCK_unused_shares;
- TABLE_SHARE::m_flush_tickets (renamed to tdc.m_flush_tickets)
  is protected by TABLE_SHARE::tdc.LOCK_table_share;
- refresh_version (renamed to tdc_version) use atomics.
2013-08-14 12:48:50 +04:00
Igor Babaev
6dd9f049ab Fixed bug mdev-4894.
This a an old legacy performance bug.
When a very selective range scan existed for the second table in a join,
and, at the same time, there was another range condition depending on the
fields of the first table, the optimizer chose a plan with
'Range checked for each record'. This plan was extremely inefficient in
comparison with the regular selective range scan.
As a matter of fact the range scan chosen for each record was the same as
that selective range scan. 

Changed the test case for bug 24776 to preserve the old output for explain.
2013-08-13 15:21:11 -07:00
Sergei Golubchik
b882a3e83e MDEV-4492 InnoDB generates non-existing link to manual based on the server version 2013-08-13 16:02:10 +02:00
Sergei Golubchik
fcf87600a2 MDEV-4865 Change related to --log option/variable was merged partially
Complete the merge of magne.mahre@oracle.com-20101102115354-vxcaxminmzglzalk
(WL#5185 Remove deprecated 5.1 features)
2013-08-13 13:35:36 +02:00
Sergei Golubchik
9747fbb411 MDEV-4786 merge 10.0-monty -> 10.0
remove TDC_RT_REMOVE_NOT_OWN_AND_MARK_NOT_USABLE
2013-08-12 15:46:35 +02:00
Alexander Barkov
b59738a598 Merge from 5.3
modified:
  mysql-test/r/dyncol.result
  mysql-test/r/type_time.result
  mysql-test/t/dyncol.test
  mysql-test/t/type_time.test
  mysys/ma_dyncol.c
  sql/item.cc
  sql/item_func.cc
pending merges:
  Alexander Barkov 2013-08-12 MDEV-4652 Wrong result for CONCAT(GREATEST(T...
    sanja@montyprogr... 2013-08-01 MDEV-4811 Assertion `offset < 0x1f' f...
2013-08-12 17:33:08 +04:00
Alexander Barkov
f1b4718ec8 MDEV-4652 Wrong result for CONCAT(GREATEST(TIME('00:00:01'),TIME('00:00:00')) 2013-08-12 16:47:59 +04:00
Andrew McDonnell
8fceadc73b Updated regression test to force repeat of 1134355. A 'fix' in sql_table, causes assertion in ha_oqgraph 2013-08-11 00:30:55 +09:30
Andrew McDonnell
a4ab3fc633 Test cleanup 2013-08-10 20:49:50 +09:30
Andrew McDonnell
56d3c792af Deal with properly 2013-08-10 20:34:20 +09:30
Andrew McDonnell
653659fa98 test harness for isnull behaviour 2013-08-10 18:55:04 +09:30
Andrew McDonnell
3408a6c5f1 Clean up test case 2013-08-09 22:31:25 +09:30
Andrew McDonnell
54e60bcb46 Add latch='0' test for completeness' 2013-08-09 21:15:12 +09:30
Andrew McDonnell
db048e7855 Updated unit test results arising from prior bugs 2013-08-09 20:59:58 +09:30
Andrew McDonnell
55d9cfc848 Regression test for 1196036 dijkstra weights 2013-08-09 20:57:23 +09:30
Andrew McDonnell
f26fce0925 Regression test for #1196027 2013-08-09 20:25:24 +09:30
Andrew McDonnell
863cfb7e7c Regression test for #1196020 2013-08-09 20:22:05 +09:30
Sergei Golubchik
b718dc449b mysql --skip-column-names flag should not affect alignment of field values,
set num_flag[] unconditionally, not under "if (column_names)"

http://ronaldbradford.com/blog/unexplained-trivial-mysql-behavior-2013-08-02/
2013-08-08 13:33:15 +02:00
Alexander Barkov
cafe9d13f6 Merge from 5.3
pending merges:
  Alexander Barkov 2013-08-08 MDEV-4653 Wrong result for CONVERT_TZ(TIME('...
2013-08-08 13:41:21 +04:00
Alexander Barkov
e9db0da787 MDEV-4653 Wrong result for CONVERT_TZ(TIME('00:00:00'),'+00:00','+7:5') 2013-08-08 12:58:28 +04:00
Alexander Barkov
62484d2e23 Merge from 5.3
pending merges:
  Alexander Barkov 2013-08-08 MDEV-4512 Valgrind warnings in my_long10_to_...
2013-08-08 11:48:49 +04:00
Alexander Barkov
e6a6f653a9 MDEV-4512 Valgrind warnings in my_long10_to_str_8bit on INTERVAL and DATE_ADD with incorrect types
Fixing a typo:  bit AND (&) was erroneously used instead of logical AND (&&)
2013-08-08 11:36:03 +04:00
Igor Babaev
5d20f7b346 Added missing tests for innodb persistent statistics (from mysql-5.6.10)
Made sure that innodb tables for persistent statistics would not
considered by the server as system tables.
2013-08-07 17:08:51 -07:00
Igor Babaev
1b6e66fa20 Added missing tests for GET DIAGNOSTICS. 2013-08-07 13:18:26 -07:00
Sergey Vojtovich
45f8bcb282 Attempt to fix sproadic failures of rpl.rpl_err_ignoredtable.
mysql-test/suite/rpl/t/rpl_err_ignoredtable.test:
  Wait until thread is killed.
2013-08-07 15:55:17 +04:00
Alexander Barkov
1a9f6b1d89 MDEV-4819 Upgrade from MySQL 5.6 does not work 2013-08-07 10:57:45 +04:00