Commit graph

165116 commits

Author SHA1 Message Date
Kristian Nielsen
c41e4d3b49 Merge MDEV-7847 and MDEV-7882 into 10.0.
Conflicts:
	mysql-test/suite/rpl/r/rpl_parallel.result
	mysql-test/suite/rpl/t/rpl_parallel.test
2015-03-30 14:51:25 +02:00
Kristian Nielsen
880f2273fd MDEV-7847: "Slave worker thread retried transaction 10 time(s) in vain, giving up", followed by replication hanging
This patch fixes a bug in the error handling in parallel replication, when one
worker thread gets a failure and other worker threads processing later
transactions have to rollback and abort.

The problem was with the lifetime of group_commit_orderer objects (GCOs).
A GCO is freed when we register that its last event group has committed. This
relies on register_wait_for_prior_commit() and wait_for_prior_commit() to
ensure that the fact that T2 has committed implies that any earlier T1 has
also committed, and can thus no longer execute mark_start_commit().

However, in the error case, the code was skipping the
register_wait_for_prior_commit() and wait_for_prior_commit() calls. Thus
commit ordering was not guaranteed, and a GCO could be freed too early. Then a
later mark_start_commit() would reference deallocated GCO, which could lead to
lost wakeup (causing slave threads to hang) or other corruption.

This patch makes also the error case respect commit order. This way, also the
error case gets the GCO lifetime correct, and the hang no longer occurs.
2015-03-30 14:33:44 +02:00
Kristian Nielsen
a4082918c8 MDEV-7882: Excessive transaction retry in parallel replication
When a transaction in parallel replication needs to retry (eg. because of
deadlock kill), first wait for all prior transactions to commit before doing
the retry. This way, we avoid the retry once again conflicting with a prior
transaction, requiring yet another retry.

Without this patch, we saw "in the wild" that transactions had to be retried
more than 10 times to succeed, which exceeds the default
--slave_transaction_retries value and is in any case undesirable.

(We already do this in 10.1 in "optimistic" parallel replication mode; this
patch just makes the code use the same logic for "conservative" mode (only
mode in 10.0)).
2015-03-30 14:16:57 +02:00
Alexander Barkov
59df100922 Removing Item_string::m_cs_specified and
making Item_string::is_cs_specified() virtual instead.
2015-03-30 10:57:44 +04:00
Elena Stepanova
49220f76aa Increased the version number 2015-03-30 01:11:14 +03:00
Elena Stepanova
bf963d3b52 MDEV-7874 deb package installation fails with "dpkg: dependency problems prevent configuration of mariadb-server"
Added usr/share/mysql/maria_add_gis_sp_bootstrap.sql to the file lists
2015-03-30 01:09:59 +03:00
Oleksandr Byelkin
b2a1187307 MDEV-7812: ANALYZE FORMAT=JSON UPDATE/DELETE doesnt print the r_total_time_ms
Tracking total time added in UPDATE/DELETE
Fixed selectivity calculation in UPDATE/DELETE
Macro definitions of time tracting fixed.
2015-03-29 15:33:15 +02:00
Sergei Petrunia
9b8f86f895 Better comments 2015-03-27 23:44:06 +03:00
Jan Lindström
47c26d5aee Skip necessary encryption tests if required plugin is not found. 2015-03-27 11:36:43 +02:00
Alexander Barkov
50eee60504 Preparatory refactoring for:
MDEV-6218 Wrong result of CHAR_LENGTH(non-BMP-character) with 3-byte utf8
- Moving get_text() as a method to Lex_input_stream.
- Moving the unescaping part into a separate function,
  this piece of code will later go to /strings most likely.
- Removing Lex_input_string::yytoklen, as it's not needed any more.
2015-03-26 20:44:12 +04:00
f4rnham
4feaa06c84 MDEV-7816 ALTER with DROP INDEX and ADD INDEX .. COMMENT='comment2' ignores the new comment
Consider two indexes different if their comments differ
2015-03-26 00:01:14 +01:00
Oleksandr Byelkin
01d7da6785 MDEV-7834: ANALYZE FORMAT=JSON output column should be named ANALYZE 2015-03-25 19:55:11 +01:00
Sergei Petrunia
e15d792697 Trivial test results updates 2015-03-25 21:21:01 +03:00
Sergei Petrunia
3841e921ba Merge branch 'bb-10.1-explain-analyze' into 10.1 2015-03-25 21:07:23 +03:00
Sergei Petrunia
323a7e93ee Backport from 10.1 to 10.0: Merge pull request #33 from k0da/mdev-7839
Fix BigEndian build for Cassandra SE
2015-03-25 19:44:31 +03:00
Sergei Petrunia
34fcc28e7b Merge pull request #33 from k0da/mdev-7839
Fix BigEndian build for Cassandra SE
2015-03-25 19:34:08 +03:00
Dinar Valeev
71bbff8de3 Fix BigEndian build
On BigEndian build fails with:
[ 109s]
/home/abuild/rpmbuild/BUILD/mariadb-10.0.17/storage/cassandra/ha_cassandra.cc:890:22:
error: invalid conversion from 'longlong*
{aka long long int*}

' to 'long long int' [-fpermissive]
[ 109s] value->x.long_value= (longlong *)*cass_data;
[ 109s] ^

This commit fixes it

Signed-off-by: Dinar Valeev <dvaleev@suse.com>
2015-03-25 17:21:52 +01:00
Sergei Petrunia
f42064a172 Fix valgrind failure: correclty clean up handler::tracker 2015-03-25 12:20:16 +03:00
Alexander Barkov
651a142ad0 MDEV-7831 Bad warning for DATE_ADD(timestamp_column, INTERVAL 10 SECOND) 2015-03-25 13:06:04 +04:00
Kristian Nielsen
bd2ae787ea MDEV-7825: Parallel replication race condition on gco->flags, possibly resulting in slave hang
The patch for optimistic parallel replication as a memory optimisation moved
the gco->installed field into a bit in gco->flags. However, that is just plain
wrong. The gco->flags field is owned by the SQL driver thread, but
gco->installed is used by the worker threads, so this will cause a race
condition.

The user-visible problem might be conflicts between transactions and/or slave
threads hanging.

So revert this part of the optimistic parallel replication patch, going back
to using a separate field gco->installed like in 10.0.
2015-03-24 16:33:51 +01:00
Sergei Petrunia
664ce4c507 Fix linking: move the inline functions 2015-03-24 17:35:29 +03:00
Sergei Petrunia
4106dfe89b Merge branch 'bb-10.1-explain-analyze' into 10.1 2015-03-24 16:26:42 +03:00
Sergei Petrunia
77e16ce7d6 MDEV-7648: Extra data in ANALYZE FORMAT=JSON $stmt
Switch from relying on PERFORMANCE_SCHEMA to using our
own hooks for counting the time spent reading rows from
tables.
2015-03-24 16:17:41 +03:00
Sergei Petrunia
b273e4a5c0 Better comments 2015-03-24 13:22:03 +03:00
Alexander Barkov
ec68494beb MDEV-7677 my_charset_handler_filename has a wrong "ismbchar" member 2015-03-23 17:38:55 +04:00
Vicențiu Ciorbaru
4fbba09824 MDEV-7813 analyze_stmt fails with --embedded flag set
Moved the privilege checking code which does not apply for embedded
to a separate test case.
2015-03-21 19:56:31 +02:00
Jan Lindström
3578419b77 MDEV-7797: file_key_management_plugin uses static IV for a key
Currently crypt data is written to file space always. Use
that to obtain random IV for every object (file).

Beatify code to confort InnoDB coding styles.

Conflicts:
	storage/innobase/fil/fil0crypt.cc
	storage/xtradb/fil/fil0crypt.cc
2015-03-20 13:09:07 +02:00
Alexander Barkov
0c26c0032c A preparatory patch for MDEV-7284 INDEX: CREATE OR REPLACE.
Removing "bool Key::create_if_not_exists" and deriving Key from
DDL_options instead.
2015-03-20 13:51:41 +04:00
Alexander Barkov
2a2cc16478 Refactoring in sql_yacc.yy. A pre-requirement patch for
MDEV-7801 Unexpected syntax error in ALTER TABLE t1 ADD INDEX TYPE BTREE
MDEV-7284 INDEX: CREATE OR REPLACE
2015-03-20 11:46:44 +04:00
Vicențiu Ciorbaru
e3795318ab MDEV-5214 Status variables for number of global/db/table/column/role grants
Updated information_schema test result;
2015-03-20 09:10:59 +02:00
Nirbhay Choubey
ce0427a622 Update galera.global_suppressions with galera warnings. 2015-03-19 20:41:57 -04:00
Vicențiu Ciorbaru
1a32993537 MDEV-5214 Status variables for number of global/db/table/column/role grants
Implemented the status variables for use with the feedback plugin.
2015-03-19 22:41:43 +02:00
Nirbhay Choubey
f8381d9382 MDEV-6069: Remove old logic for 3.23-to-higher upgrades from upgrade SQL scripts
Fix for failing tests.

* Update mysql_system_tables_fix.sql to makeup the differences in system
tables in 5.1.17 (main.system_mysql_db_fix50117)
* Removed system_mysql_db tests for versions 5.0.30 & 4.1.23.
2015-03-19 09:47:20 -04:00
Jan Lindström
b3438f24a1 MDEV-7803: Encryption metadata (crypt_data) is written to InnoDB file space page 0 even when encryption is not enabled 2015-03-19 14:09:49 +02:00
Daniel Black
41c337a171 add group_commit_reason_immediate to binlog_commit_wait test 2015-03-19 21:47:51 +11:00
Jan Lindström
81113dae17 Merge branch '10.1' into bb-10.1-jan 2015-03-19 10:22:27 +02:00
Daniel Black
f3eb1d0e27 rpl_parallel_multilevel2 can be 1 or 3 binlog groups 2015-03-19 19:21:22 +11:00
Jan Lindström
64a290dc31 MDEV-7797: file_key_management_plugin uses static IV for a key
Currently crypt data is written to file space always. Use
that to obtain random IV for every object (file).

Beatify code to confort InnoDB coding styles.
2015-03-19 10:18:40 +02:00
Jan Lindström
bab0bdbb5c Introduce two debug crash points while writing crypt data to test
redo operations.
2015-03-19 07:13:07 +02:00
Daniel Black
54287adc27 MDEV-7802 Add status binlog_group_commit_reason_*
The following global status variables where added:
* binlog_group_commit_reason_count
* binlog_group_commit_reason_usec
* binlog_group_commit_reason_transaction
* binlog_group_commit_reason_immediate

binlog_group_commit_reason_count corresponds to group commits made by
virtue of the binlog_commit_wait_count variable.

binlog_group_commit_reason_usec corresponds to the binlog_commit_wait_usec
variable.

binlog_group_commit_reason_transaction is a result of ordered
transaction that need to occur in the same order on the slave and can't
be parallelised.

binlog_group_commit_reason_immediate is caused to prevent stalls with
row locks as described in log.cc:binlog_report_wait_for. This immediate
count is also counted a second time in binlog_group_commit_reason_transaction.

Overall binlog_group_commits = binlog_group_commit_reason_count +
binlog_group_commit_reason_usec + binlog_group_commit_reason_transaction

This work was funded thanks to Open Source Developers Club Australia.
2015-03-19 15:26:58 +11:00
Jan Lindström
1020d56934 Better and more correct comment. 2015-03-18 15:17:17 +02:00
Alexander Barkov
e28a241907 MDEV-7661 Unexpected result for: CAST(0xHHHH AS CHAR CHARACTER SET xxx)
for incorrect byte sequences
2015-03-18 17:10:48 +04:00
Sergey Vojtovich
a471b7098f Fixed innodb and innodb_bug59641 failures on PPC64.
innodb_buffer_pool_pages_total depends on page size. On Power8 it is 65k
compared to 4k on Intel. As we round allocations on page size we may get
slightly more memory for buffer pool.

Sort XA RECOVER as rows order depend on endianness.
2015-03-18 15:25:34 +04:00
Jan Lindström
2bdbfd334b Fix assertion failure seen on Buildbot win32-debug
There is a bug in Visual Studio 2010
Visual Studio has a feature "Checked Iterators". In a debug build, every
iterator operation is checked at runtime for errors, e g, out of range.
Disable this "Checked Iterators" for Windows and Debug if defined.
2015-03-18 12:18:39 +02:00
Jan Lindström
c14d9c21f0 Make sure that sync level vector is emptied. 2015-03-18 06:25:10 +02:00
Jan Lindström
99a2c061d7 MDEV-7754: innodb assert "array->n_elems < array->max_elems" on a huge blob update
Problem was that static array was used for storing thread mutex sync levels.
Fixed by using std::vector instead.

Does not contain test case to avoid too big memory/disk space usage
on buildbot VMs.
2015-03-17 20:35:05 +02:00
Jan Lindström
5e6905bb7f Replace static usage of AES_CTR with current encryption algorithm. 2015-03-17 14:51:23 +02:00
Alexey Botchkov
b0542b78c8 Installation fix. 2015-03-17 14:56:14 +04:00
Alexey Botchkov
015994f226 MDEV-7515 GIS: No AddGeometryColumn or DropGeometryColumn in the tree.
Installation scripts added to setup the required SP-s with the mysql_install_db.
2015-03-17 14:44:59 +04:00
Kristian Nielsen
3d4850158f Fix embarrassing bug in test case that caused sporadic test failures. 2015-03-17 10:36:38 +01:00