Commit graph

172355 commits

Author SHA1 Message Date
Jan Lindström
18b0176a05 MDEV-8410: Changing file-key-management to example-key-management causes crash and no real error
MDEV-8409: Changing file-key-management-encryption-algorithm causes crash and no real info why

Analysis: Both bugs has two different error cases. Firstly, at startup
when server reads latest checkpoint but requested key_version,
key management plugin or encryption algorithm or method is not found
leading corrupted log entry. Secondly, similarly when reading system
tablespace if requested key_version, key management plugin or encryption
algorithm or method is not found leading buffer pool page corruption.

Fix: Firsly, when reading checkpoint at startup check if the log record
may be encrypted and if we find that it could be encrypted, print error
message and do not start server. Secondly, if page is buffer pool seems
corrupted but we find out that there is crypt_info, print additional
error message before asserting.
2015-08-08 09:56:07 +03:00
Sergei Petrunia
3025c42605 Make ANALYZE FORMAT=JSON show execution time for filesort element. 2015-08-07 17:41:35 +03:00
Kristian Nielsen
afd59b575a Merge branch 'mdev8302-3' into 10.1 2015-08-04 15:47:30 +02:00
Kristian Nielsen
5ca061e65f Fix embedded server build 2015-08-04 15:35:04 +02:00
Kristian Nielsen
dbd205797b Merge MDEV-8302 into 10.1 2015-08-04 12:39:22 +02:00
Kristian Nielsen
9b9c5e890c MDEV-8302: Duplicate key with parallel replication
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.
2015-08-04 11:40:19 +02:00
Sergey Vojtovich
35a019837e MDEV-5096 - Wrong error message on attempt to kill somebody else's query ID
Attempting to kill query owned by different user now returns better error:
"You are not owner of query N" instead of "You are not owner of thread N".
2015-07-24 20:59:50 +04:00
Sergei Golubchik
d517886482 Merge branch 'bb-10.1-serg' into 10.1 2015-07-23 15:48:26 +02:00
Sergei Golubchik
26f249f6db compilation failures on Windows 2015-07-23 10:55:24 +02:00
Sergei Golubchik
0ae8bae98f fix for 32-bit tests 2015-07-22 18:46:36 +02:00
Otto Kekäläinen
f425c71aba Merge documentation parts in debian/control from downstream 2015-07-22 14:58:43 +03:00
Otto Kekäläinen
5a3d752209 Make autobake-deb.sh to omit .git directory from source tar.gz
This is useful for developers who run autobake-deb.sh directly
from the source tree as the resulting source tar package will be
90% smaller and all operations regarding it consequently 10x faster.
2015-07-22 13:45:43 +03:00
Otto Kekäläinen
220b4f2fc2 Merge (most) build dependencies in debian/control with downstream
* dpatch cannot be removed yet, as packaging standard isn't updated
 * we don't want to remove libssl at all, as in upstream we rather
   use system provided OpenSSL than bundled, non-system updated and
   less commonly trusted YaSSL
 * keep versioned dependencies, they might prove helpful when building
   for multiple distros and releases
2015-07-22 13:15:36 +03:00
Otto Kekäläinen
16be184123 Extend debian/control build dependencies to max
For tracking purposes this step is committed first before
the unnecessary dependencies are trimmed away.

libpcre3-dev (>= 2:8.35-3.2~) is however omitted (compared to
downstream Debian packaging) as it is not available in precise
and we don't want to break builds on precise yet.
2015-07-22 11:59:40 +03:00
Otto Kekäläinen
61e31aa5d4 Remove files from debian/* that are unrelevant for this upstream repo
* README and NEWS are very old and mostly plain wrong and not needed
 * Lintian-overrides are relevant only in actual Debian QA systems
 * watch file was plain wrong and anyway relevant only in downstream distros
2015-07-22 11:29:21 +03:00
Otto Kekäläinen
6809fdb741 Update autobake.sh to match control file location. Drop lucid and squeeze support. 2015-07-22 10:28:39 +03:00
Jan Lindström
53623d932a MDEV-8522: InnoDB: Assertion failure in file fil0fil.cc line 475
Analysis: In fil_crypt_space_needs_rotation we first make sure that
tablespace is found and then separately that it is normal tablespace.
Thus, tablespace could be dropped between these two functions calls.

Fix: If space is not found from fil_system return tablespace type
ULINT_UNDEFINED and naturally do not continue rotating space.
2015-07-22 08:42:52 +03:00
Otto Kekäläinen
af9509d0d8 debian/*: wrap and sort for cleaner diffs 2015-07-21 23:24:05 +03:00
Otto Kekäläinen
82e64fde07 Remove debian/dist/* and have just one version
Use the slightly better Ubuntu version in both Ubuntu and
Debian and latest versions of Debian don't have problems
with AppArmor files included in packaging.
2015-07-21 23:21:50 +03:00
Jan Lindström
62b5a56191 MDEV-8501: encryption.create_or_replace fails in buildbot on P8 builders
Analysis: There is race between drop table and encryption threads that
could cause encryption thread to enter mutex that has been already
released.

Fix: When destroying crypt_data first enter the mutex and set crypt data
unavailable, then release the memory and clean up the data. This should
make the race more unprobable. Additionally, added big_test for
create_or_replace as it could fail testcase timeout
if you have slow I/O (tested that testcase passes with --mem).
2015-07-21 12:51:14 +03:00
Sergei Golubchik
3ff9634b43 MDEV-8508 mroonga fails embedded tests in 10.1
as a workaround until the bug is fixed
don't run mroonga tests in --embedded mode by default
2015-07-20 20:28:32 +02:00
Sergei Golubchik
3d4c69d224 compiler warning
WARN_DEPRECATED_NO_REPLACEMENT(NULL, ...) was causing a warning,
because it expanded into NULL->variables.errmsgs[...]
2015-07-20 19:47:46 +02:00
Sergei Golubchik
82c6b259a5 Merge https://github.com/Kentoku/MariaDB/tree/10.1 into 10.1 2015-07-20 19:07:59 +02:00
Sergei Golubchik
e35fd20910 Null-merge branch 'github/10.0-galera' into 10.1
because the actual merge was already done in
dced5146bd
as a patch
2015-07-20 18:14:31 +02:00
Nirbhay Choubey
6d3bd6588e MDEV-8492: Windows builds fail on current 10.1
In non-wsrep builds, wsrep_running_threads should be defined to (0).
2015-07-19 21:33:12 -04:00
Elena Stepanova
c57edf3b9a MDEV-8500 sys_vars.sysvars_innodb '32bit,xtradb' fails
The version in sysvars_innodb,32bit,xtradb.rdiff was not updated
2015-07-20 00:28:22 +03:00
Kristian Nielsen
7046788448 Fix build failures. 2015-07-19 10:31:24 +02:00
Kristian Nielsen
13dbb6fa9e Merge MDEV-8496 into 10.1 2015-07-19 09:30:36 +02:00
Kristian Nielsen
44c4b2304b MDEV-8496: gtid_ignore_duplicates treats gtid_seq_no as 32-bit
--gtid-ignore-duplicates was comparing sequence numbers as 32-bit, so
after 2**32 transactions things would start to fail.
2015-07-19 09:28:22 +02:00
Elena Stepanova
d258f5ff04 MDEV-8495 encryption.innodb_first_page fails sporadically in buildbot
The test did not wait until the server shuts down
2015-07-17 19:20:50 +03:00
Monty
0ad00c66d2 Fix for MySQL bug #77448 Inconsistent handling of RAND() in WHERE and HAVING
Problem was that for queries of type:

select rand() r, rand()  p, rand() = rand() from a having r = p

The optimizer thought that r = p was same as rand() = rand() and this would always be true.

The problem was that when testing if two expressions are equal, we didn't take into account no determinstic functions.

The fix is to not compare non deterministic functions as equal.
2015-07-16 10:36:58 +03:00
Monty
872a953b22 MDEV-8469 Add RESET MASTER TO x to allow specification of binlog file nr
Other things:
- Avoid calling init_and_set_log_file_name() when opening binary log.
- Remove newlines early when reading from index file.
- Ensure that reset_logs() will work even if thd is 0 (Can happen on startup)
- Added thd to sart_slave_threads() for better error handling.
2015-07-16 10:36:58 +03:00
Nirbhay Choubey
df0498fd76 Update sys_vars.sys_vars_wsrep result. 2015-07-14 21:38:17 -04:00
Nirbhay Choubey
ee9bdcf79a Binlog SE doesn't implement abort_transaction(), so skip warning. 2015-07-14 17:33:22 -04:00
Nirbhay Choubey
e204116734 Check supress_my_ok before sending Ok packet (logic lost during merge). 2015-07-14 17:21:35 -04:00
Nirbhay Choubey
0e2ce3b745 Allow binlog row image column marking even for wsrep binlog emulation. 2015-07-14 17:16:28 -04:00
Nirbhay Choubey
dd4d81ddfd Update read_pos after reading from the cache. 2015-07-14 16:58:38 -04:00
Nirbhay Choubey
dced5146bd Merge branch '10.0-galera' into 10.1 2015-07-14 16:05:29 -04:00
Alexander Barkov
75931feabe MDEV-8362 dash '-' is not recognized in charset armscii8 on select where query 2015-07-14 12:00:05 +04:00
Alexander Barkov
657f8a8d60 MDEV-8456 Dead code in Item_cond::fix_fields() and Item_func_between::fix_fields() 2015-07-13 13:16:14 +04:00
Nirbhay Choubey
6771b818a3 MDEV-8383 : "GRANT role TO user" does not replicate
Enable replication of GRANT/REVOKE ROLE commands across
galera nodes.
2015-07-10 19:06:42 -04:00
Monty
f195f93903 Cleanups, fixed warnings from valgrind, fixed failing tests (because on changes in WSREP initialization) 2015-07-10 12:49:05 +03:00
Monty
24881437b7 Fixed bug found by bar where we didn't properely check length of last argument for BETWEEN
This should not have caused any notable errors in most cases.

After fix, we are not using keys to solve MIN/MAX if the string used for comparision is longer thant the column-
2015-07-10 09:18:17 +03:00
Monty
9bb8b74e99 Merge branch '10.1' of github.com:MariaDB/server into 10.1
Conflicts:
	sql/item_subselect.cc

Fixed also typo in comment
2015-07-09 14:47:32 +03:00
Monty
a6c8014387 Speed and code space optimziation:
- Cache variables.lc_messages->errmsgs->errmsgs in variables.errmsgs

This gives us 15 byte less code space and 2 memory references for any access to language dependent message,
of which there are 500 in the server..
2015-07-09 13:09:36 +03:00
Alexander Barkov
7780370343 MDEV-8336 The meaning of NO_ZERO_DATE is not clear for DATETIME.
In some cases NO_ZERO_DATE did not allow datetime values with zero date part
and non-zero time part (e.g. '0000-00-00 10:20:30.123456').
Allowing values of this kind in all known pieces of the code.
2015-07-08 19:20:07 +04:00
Nirbhay Choubey
8154ef4b16 MDEV-7067: Server outputs Galera (WSREP) information, even if Galera is disabled
Additional changes :
* On startup, do not initialize wsrep if wsrep_on=0.
* On shutdown, stop wsrep replication only if > 0 wsrep
threads are running.
2015-07-07 22:26:44 -04:00
Alexander Barkov
b08c4201fa Removing unused String declaration in Create_field::Create_field 2015-07-07 15:59:21 +04:00
Alexander Barkov
e4f8cea356 MDEV-8419 utf32: compare broken bytes as "greater than any non-broken character" 2015-07-07 09:15:58 +04:00
Monty
7332af49e4 - Renaming variables so that they don't shadow others (After this patch one can compile with -Wshadow and get much fewer warnings)
- Changed ER(ER_...) to ER_THD(thd, ER_...) when thd was known or if there was many calls to current_thd in the same function.
- Changed ER(ER_..) to ER_THD_OR_DEFAULT(current_thd, ER...) in some places where current_thd is not necessary defined.
- Removing calls to current_thd when we have access to thd

Part of this is optimization (not calling current_thd when not needed),
but part is bug fixing for error condition when current_thd is not defined
(For example on startup and end of mysqld)

Notable renames done as otherwise a lot of functions would have to be changed:
- In JOIN structure renamed:
   examined_rows -> join_examined_rows
   record_count -> join_record_count
- In Field, renamed new_field() to make_new_field()

Other things:
- Added DBUG_ASSERT(thd == tmp_thd) in Item_singlerow_subselect() just to be safe.
- Removed old 'tab' prefix in JOIN_TAB::save_explain_data() and use members directly
- Added 'thd' as argument to a few functions to avoid calling current_thd.
2015-07-06 20:24:14 +03:00