View Bazaar branches
Get this repository:
git clone https://git.launchpad.net/maria

MariaDB has 18 active reviews.

Branches

Name Last Modified Last Commit
vice-1 2019-10-21 08:33:53 UTC 4 hours ago
Trigger

Author: Vicențiu Ciorbaru
Author Date: 2019-10-21 08:33:53 UTC

Trigger

bb-10.3-hf 2019-10-21 02:38:27 UTC 10 hours ago
MDEV-18371

Author: Alexey Botchkov
Author Date: 2019-10-21 02:38:27 UTC

MDEV-18371

get_file_sample() used instad of m_file[0].

bb-10.5-wlad-MDEV-16264 2019-10-20 18:44:55 UTC 18 hours ago
try to find a cause of a sporadical hang in table_flags,4K on Linux

Author: Vladislav Vaintroub
Author Date: 2019-10-20 18:44:55 UTC

try to find a cause of a sporadical hang in table_flags,4K on Linux

bb-10.5-MENT-344-backup_to_s3 2019-10-20 18:42:32 UTC 18 hours ago
MENT-344: Store Backups in S3

Author: Vlad Lesin
Author Date: 2019-10-20 18:42:32 UTC

MENT-344: Store Backups in S3

Mtr test is required, but there must be ability to remove backup from S3
to test it with MTR.

10.4 2019-10-20 12:48:20 UTC 2019-10-20
Ensure that full_crc32_import doesn't fail

Author: Monty
Author Date: 2019-10-20 12:48:20 UTC

Ensure that full_crc32_import doesn't fail

Test should die if innodb_compression_algorithm=3 doesn't exists

bb-10.5-hf 2019-10-20 11:08:36 UTC 2019-10-20
MDEV-14024 PCRE2.

Author: Alexey Botchkov
Author Date: 2019-10-20 11:08:36 UTC

MDEV-14024 PCRE2.

Related changes in the server code.

10.5 2019-10-20 09:16:52 UTC 2019-10-20
Don't crash in S3 if Aria is not initialzed

Author: Monty
Author Date: 2019-10-20 09:16:52 UTC

Don't crash in S3 if Aria is not initialzed

10.3 2019-10-20 08:52:29 UTC 2019-10-20
Write error message if aria_log.??????? files are missing

Author: Monty
Author Date: 2019-10-20 08:52:20 UTC

Write error message if aria_log.??????? files are missing

This can happen if one uses a backup where not all aria_log.* files
are copied or if the last one is too short. In this case the data
files will contain data that is not in the logs and recovery will fail.

Other things:
- Fixed tprint() to not print extra new line to debug trace

bb-10.5-midenok-MDEV-20480 2019-10-19 14:31:27 UTC 2019-10-19
Close referenced shares on RENAME TABLE

Author: midenok
Author Date: 2019-10-19 14:31:27 UTC

Close referenced shares on RENAME TABLE

bb-10.2-release 2019-10-19 12:17:55 UTC 2019-10-19
MDEV-20864 Introduce debug option innodb_change_buffer_dump

Author: Marko Mäkelä
Author Date: 2019-10-19 12:16:47 UTC

MDEV-20864 Introduce debug option innodb_change_buffer_dump

To diagnose a hang in slow shutdown (innodb_fast_shutdown=0),
let us introduce a Boolean startup option in debug builds
that will cause the contents of the InnoDB change buffer
to be dumped to the server error log at startup.

10.2 2019-10-19 12:16:47 UTC 2019-10-19
MDEV-20864 Introduce debug option innodb_change_buffer_dump

Author: Marko Mäkelä
Author Date: 2019-10-19 12:16:47 UTC

MDEV-20864 Introduce debug option innodb_change_buffer_dump

To diagnose a hang in slow shutdown (innodb_fast_shutdown=0),
let us introduce a Boolean startup option in debug builds
that will cause the contents of the InnoDB change buffer
to be dumped to the server error log at startup.

5.5 2019-10-19 09:48:38 UTC 2019-10-19
crash in string-to-int conversion

Author: Sergei Golubchik
Author Date: 2019-10-19 07:32:11 UTC

crash in string-to-int conversion

using a specially crafted strings one could overflow `shift`
variable and cause a crash by dereferencing d10[-2147483648]
(on a sufficiently old gcc).

This is a correct fix and a test case for

Bug #29723340: MYSQL SERVER CRASH AFTER SQL QUERY WITH DATA ?AST

bb-5.5-serg 2019-10-18 22:35:43 UTC 2019-10-18
crash in string-to-int conversion

Author: Chandan Kunal
Author Date: 2019-06-25 07:12:27 UTC

crash in string-to-int conversion

using a specially crafted strings one could overflow `shift`
variable and cause a crash by dereferencing d10[-2147483648]
(on a sufficiently old gcc).

This is a correct fix and a test case for

Bug #29723340: MYSQL SERVER CRASH AFTER SQL QUERY WITH DATA ?AST

bb-10.2-thiru 2019-10-18 11:09:39 UTC 2019-10-18
MDEV-20621 Locking issue freezes mariadb

Author: THIRUNARAYANAN BALATHANDAYUTHAPANI
Author Date: 2019-10-18 11:09:39 UTC

MDEV-20621 Locking issue freezes mariadb

- fts_optimize_thread() uses dict_table_t object instead of table id.
So that it doesn't acquire dict_sys->mutex. It leads to remove the
hang of dict_sys->mutex between fts_optimize_thread() and other threads.

- in_queue to indicate whether the table is in fts_optimize_queue. It
is set, clear under protection of fts_optimize_wq->mutex to avoid
the race condition.

bb-10.1-thiru 2019-10-18 10:24:28 UTC 2019-10-18
MDEV-20621 Locking issue freezes mariadb

Author: THIRUNARAYANAN BALATHANDAYUTHAPANI
Author Date: 2019-10-18 10:23:58 UTC

MDEV-20621 Locking issue freezes mariadb

- fts_optimize_thread() uses dict_table_t object instead of table id.
So that it doesn't acquire dict_sys->mutex. It leads to remove the
hang of dict_sys->mutex between fts_optimize_thread() and other threads.

- in_queue to indicate whether the table is in fts_optimize_queue. It
is set, clear under protection of fts_optimize_wq->mutex to avoid
the race condition.

bb-10.4-galera 2019-10-18 09:13:29 UTC 2019-10-18
Fix #2 for galera_sr_ddl_master.

Author: Jan Lindström
Author Date: 2019-10-18 09:13:29 UTC

Fix #2 for galera_sr_ddl_master.

bb-10.5-bar 2019-10-18 09:09:37 UTC 2019-10-18
MDEV-20844 RBR from binary(16) to inet6 fails with error 171: The event was c...

Author: Alexander Barkov
Author Date: 2019-10-18 09:09:37 UTC

MDEV-20844 RBR from binary(16) to inet6 fails with error 171: The event was corrupt, leading to illegal data being read

This patch changes the way how INET6 is packed to the RBR binary log,
from fixed length 16 bytes to BINARY(16) compatible variable length style
with trailing 0x00 byte compression.

This is to make INET6 fully compatible with BINARY(16),
so RBR replication works in this scenarios:

- Old master BINARY(16) -> New slave INET6
- New master INET6 -> Old slave BINARY(16)

A new class StringPack was added to share the code between
Field_string and Field_inet6.

bb-10.4-MDEV-20732 2019-10-18 08:35:54 UTC 2019-10-18
MDEV-20732 MDB now correctly estimates a length of the FORMAT() result for

Author: Roman Nozdrin
Author Date: 2019-10-09 08:13:13 UTC

    MDEV-20732 MDB now correctly estimates a length of the FORMAT() result for
    doubles in scientific notation with a big integer part.

bb-10.5-anel-MYSQL_PWD-MDEV-20125 2019-10-18 08:12:38 UTC 2019-10-18
Redact MYSQL_PWD environment variable under Linux

Author: Georg Sauthoff
Author Date: 2019-07-22 18:36:50 UTC

Redact MYSQL_PWD environment variable under Linux

Under Linux, when using the `mysql` client binary, passing the
password via the MYSQL_PWD environment variable is more secure
than passing it on the command line with the --password option,
because:

- the argument vector is world-readable via /proc/$pid/cmdline
- although the cmdline password is overwritten by the `mysql`
  process (with a bunch of `x` characters),
  there is still a time window after process start and overwrite
  where the password can be observed by any user
- in contrast to that, the environment vector is only readable by
  the `mysql` invoking user and root

But having the password in cleartext easily accesible via
/proc/$pid/environ (or via an equivalent ps command) - even for a
restricted set of users - for the complete `mysql` client
runtime is suboptimal on sensitive systems.

As a defense-in-depth measure, this change redacts the MYSQL_PWD
environment variable under Linux. Thus, this increases the effort
for an attacker to read out the password (in contrast to just
being able to read out /proc/$pid/environ).

Note that this approach might also be effective on other systems,
but I've just tested it on Linux.

This change complements how the `mysql` client deals with
passwords supplied on the command line (cf. the --password option).

bb-10.5-serg 2019-10-16 12:50:28 UTC 2019-10-16
post-review 2

Author: Sergei Golubchik
Author Date: 2019-10-11 12:12:38 UTC

post-review 2

bb-10.3-midenok 2019-10-15 08:43:36 UTC 2019-10-15
MDEV-20812 Unexpected ER_ROW_IS_REFERENCED_2 upon DELETE from versioned table...

Author: midenok
Author Date: 2019-10-14 12:07:21 UTC

MDEV-20812 Unexpected ER_ROW_IS_REFERENCED_2 upon DELETE from versioned table with FK

MDEV-16210 original case was wrongly allowed versioned DELETE from
referenced table where reference is by non-primary key. InnoDB UPDATE
has optimization for new rows not changing its clustered index
position. In this case InnoDB doesn't update all secondary indexes and
misses the one holding the referenced key. The fix was to disable this
optimization for versioned DELETE. In case of versioned DELETE we
forcely update all secondary indexes and therefore check them for
constraints.

But the above fix raised another problem with versioned DELETE on
foreign table side. In case when there was no corresponding record in
referenced table (illegal foreign reference can be done with "set
foreign_key_checks=off") there was spurious constraint check (because
versioned DELETE is actually UPDATE) and hence the operation failed
with constraint error.

MDEV-16210 tried to fix the above problem by checking foreign table
instead of referenced table and that at least was illegal.

Constraint check is done by row_ins_check_foreign_constraint() no
matter what kind of table is checked, referenced or foreign
(controlled by check_ref argument).

Referenced table is checked by row_upd_check_references_constraints().
Foreign table is checked by row_ins_check_foreign_constraints().

Current fix rolls back the wrong fix for the above problem and
disables referenced table check for DELETE on foreign side by
introducing `check_foreign` argument which when set to *false* skips
row_ins_check_foreign_constraints() call.

bb-10.4-MDEV-20726-alter-utf8 2019-10-14 15:57:28 UTC 2019-10-14
MDEV-20726 InnoDB: Assertion failure in file data0type.cc line 67

Author: Eugene
Author Date: 2019-10-14 15:13:02 UTC

MDEV-20726 InnoDB: Assertion failure in file data0type.cc line 67

Do not rebuild index when it's key part converted from utf8mb3 to utf8mb4
but key part stays the same.

bb-10.3-monty 2019-10-14 15:22:27 UTC 2019-10-14
Simplify TABLE::decide_logging_format()

Author: Monty
Author Date: 2019-10-14 15:22:27 UTC

Simplify TABLE::decide_logging_format()

- Use local variables table and share to simplify code
- Use sql_command_flags to detect what kind of command was used
- Added CF_DELETES_DATA to simplify detecton of delete commands
- Removed duplicate error in create_table_from_items().

10.1 2019-10-14 13:38:28 UTC 2019-10-14
MDEV-20813: Remove the buf_flush_init_for_writing() assertion

Author: Marko Mäkelä
Author Date: 2019-10-14 13:38:28 UTC

MDEV-20813: Remove the buf_flush_init_for_writing() assertion

Old InnoDB/XtraDB versions only initialized FIL_PAGE_TYPE for
B-tree pages (to FIL_PAGE_INDEX), and left it uninitialized
(possibly containing FIL_PAGE_INDEX) for others. In MySQL
or MariaDB 5.5, the field is initialized on almost all pages,
but still not all of them.

In MariaDB 10.2 and later, buf_flush_init_for_writing() would
initialize the FIL_PAGE_TYPE on such old pages, but only after
passing the debug assertion that we are now removing from 10.1.
There, we will be able to modify fil_crypt_rotate_page() so
that it will skip the key rotation for pages that contain 0
in FIL_PAGE_TYPE.

In MariaDB 10.1, there is no logic that would initialize
FIL_PAGE_TYPE on data pages in old data files after an update.
So, encryption key rotation may routinely cause page flushes
on pages that contain 0 in FIL_PAGE_TYPE.

bb-10.4-sachin 2019-10-14 10:40:54 UTC 2019-10-14
MDEV-19848 Server crashes in check_vcol_forward_refs upon INSERT DELAYED into...

Author: Sachin Setiya
Author Date: 2019-10-14 09:59:14 UTC

MDEV-19848 Server crashes in check_vcol_forward_refs upon INSERT DELAYED into table with long blob key

Problem:- Insert delayed is not working with Long Unique Index.
It is failing with
1. INSERT DELAYED INTO t1 VALUES();
2. INSERT DELAYED INTO t1 VALUES(1);
3. Potential Race condition When Insert DELAYED gets dup key error(After fix),
And it will change original table key_info by calling
re_setup_keyinfo_hash, And second thread is in check_duplicate_long_entries
4. Insert delayed into INVISIBLE COLUMN will also not work.

There are 4 main issue

1. while calling make_new_field we forgot to & LONG_UNIQUE_HASH_FIELD
flag into new field flags.

2. New field created created into get_local_table by make_new_field does
not respect old field visibility, Assigning old field visibility will
solve Problem 4 and part of problem 2.

3. As we know Problem 3 race condition is caused because table and
delayed table share same key_info, So we will make a copy of original table
key_info in get_local_table.

4. In parse_vcol_defs we have this code block
  keypart->field->vcol_info=
    table->field[keypart->field->field_index]->vcol_info;
  Which is wrong because we should not change original
table->field->vcol_info with vcol_info which is create on delayed
thread.

bb-10.5-sujatha 2019-10-14 10:27:57 UTC 2019-10-14
MDEV-18648: slave_parallel_mode= optimistic default in 10.5

Author: Sujatha
Author Date: 2019-10-14 10:27:36 UTC

MDEV-18648: slave_parallel_mode= optimistic default in 10.5

Description:
============
To change 'CONSERVATIVE' @@global.slave_parallel_mode default to 'OPTIMISTIC'
in 10.5.

@sql/sys_vars.cc
Changed default parallel_mode to 'OPTIMISTIC'

@sql/rpl_filter.cc
Changed default parallel_mode to 'OPTIMISTIC'

@sql/mysqld.cc
Removed the initialization of 'SLAVE_PARALLEL_CONSERVATIVE' to
'opt_slave_parallel_mode' variable.

@mysql-test/suite/rpl/t/rpl_parallel_mdev6589.test
@mysql-test/suite/rpl/t/rpl_mdev6386.test
Added 'mtr' suppression to ignore 'ER_PRIOR_COMMIT_FAILED'. In case of
'OPTIMISTIC' mode if a transaction gets killed during "wait_for_prior_commit"
it results in above error "1964". Hence suppression needs to be added for this
error.

@mysql-test/suite/rpl/t/rpl_parallel_conflicts.test
Test has a 'slave.opt' which explicitly sets slave_parallel_mode to
'conservative'. When the test ends this mode conflicts with new default mode.
Hence check test case reports an error. The 'slave.opt' is removed and options
are set and reset within test.

@mysql-test/suite/multi_source/info_logs.result
@mysql-test/suite/multi_source/reset_slave.result
@mysql-test/suite/multi_source/simple.result
Result content mismatch in "show slave status" output. This is expected as new
slave_parallel_mode='OPTIMISTIC'.

@mysql-test/include/check-testcase.test
Updated default 'slave_parallel_mode' to 'optimistic'.

Refactored rpl_parallel.test into following test cases.
Test case 1: @mysql-test/suite/rpl/t/rpl_parallel_domain.test
Test case 2: @mysql-test/suite/rpl/t/rpl_parallel_domain_slave_single_grp.test
Test case 3: @mysql-test/suite/rpl/t/rpl_parallel_single_grpcmt.test
Test case 4: @mysql-test/suite/rpl/t/rpl_parallel_stop_slave.test
Test case 5: @mysql-test/suite/rpl/t/rpl_parallel_slave_bgc_kill.test
Test case 6: @mysql-test/suite/rpl/t/rpl_parallel_gco_wait_kill.test
Test case 7: @mysql-test/suite/rpl/t/rpl_parallel_free_deferred_event.test
Test case 8: @mysql-test/suite/rpl/t/rpl_parallel_missed_error_handling.test
Test case 9: @mysql-test/suite/rpl/t/rpl_parallel_innodb_lock_conflict.test
Test case 10: @mysql-test/suite/rpl/t/rpl_parallel_gtid_slave_pos_update_fail.test
Test case 11: @mysql-test/suite/rpl/t/rpl_parallel_wrong_exec_master_pos.test
Test case 12: @mysql-test/suite/rpl/t/rpl_parallel_partial_binlog_trans.test
Test case 13: @mysql-test/suite/rpl/t/rpl_parallel_ignore_error_on_rotate.test
Test case 14: @mysql-test/suite/rpl/t/rpl_parallel_wrong_binlog_order.test
Test case 15: @mysql-test/suite/rpl/t/rpl_parallel_incorrect_relay_pos.test
Test case 16: @mysql-test/suite/rpl/t/rpl_parallel_retry_deadlock.test
Test case 17: @mysql-test/suite/rpl/t/rpl_parallel_deadlock_corrupt_binlog.test
Test case 18: @mysql-test/suite/rpl/t/rpl_parallel_mode.test
Test case 19: @mysql-test/suite/rpl/t/rpl_parallel_analyze_table_hang.test
Test case 20: @mysql-test/suite/rpl/t/rpl_parallel_record_gtid_wakeup.test
Test case 21: @mysql-test/suite/rpl/t/rpl_parallel_stop_on_con_kill.test
Test case 22: @mysql-test/suite/rpl/t/rpl_parallel_rollback_assert.test

bb-10.4-sujatha 2019-10-14 06:38:28 UTC 2019-10-14
MDEV-20707: Missing memory barrier in parallel replication error handler in w...

Author: Sujatha
Author Date: 2019-10-14 06:38:28 UTC

MDEV-20707: Missing memory barrier in parallel replication error handler in wait_for_prior_commit()

revision-id: 673e253724979fd9fe43a4a22bd7e1b2c3a5269e
Author: Kristian Nielsen

Fix missing memory barrier in wait_for_commit.

The function wait_for_commit::wait_for_prior_commit() has a fast path where it
checks without locks if wakeup_subsequent_commits() has already been called.
This check was missing a memory barrier. The waitee thread does two writes to
variables `waitee' and `wakeup_error', and if the waiting thread sees the
first write it _must_ also see the second or incorrect behavior will occur.
This requires memory barriers between both the writes (release semantics) and
the reads (acquire semantics) of those two variables.

Other accesses to these variables are done under lock or where only one thread
will be accessing them, and can be done without barriers (relaxed semantics).

bb-10.2-MDEV-18546-nikita 2019-10-11 06:26:27 UTC 2019-10-11
MDEV-18546 ASAN heap-use-after-free in innobase_get_computed_value / row_purge

Author: Nikita Malyavin
Author Date: 2019-07-30 12:39:55 UTC

MDEV-18546 ASAN heap-use-after-free in innobase_get_computed_value / row_purge

the bug was already fixed in MDEV-17005, so now only test is added

bb-10.2-kevgs 2019-10-10 19:53:35 UTC 2019-10-10
MDEV-20778 UBSAN: call to function free_rpl_filter() through pointer to incor...

Author: Eugene
Author Date: 2019-10-09 00:09:48 UTC

MDEV-20778 UBSAN: call to function free_rpl_filter() through pointer to incorrect function type

Proper C-style type erasure is done via void*, not via char* or something else.

free_key_cache()
free_rpl_filter(): types were fixed to avoid function pointer type cast which
is still undefined behavior.

Note, that casting from void* to any other pointer type is safe and correct.

bb-10.5-varun 2019-10-10 19:48:22 UTC 2019-10-10
MDEV-13694: Wrong result upon GROUP BY with orderby_uses_equalities=on

Author: varun
Author Date: 2019-09-28 05:34:20 UTC

MDEV-13694: Wrong result upon GROUP BY with orderby_uses_equalities=on

For the case when the SJM scan table is the first table in the join order,
then if we want to do the sorting on the SJM scan table, then we need to
make sure that we unpack the values to base table fields in two cases:
  1) Reading the SJM table and writing the sort-keys inside the sort-buffer
  2) Reading the sorted data from the sort file

bb-10.4-svoj-MDEV-17882 2019-10-10 12:09:27 UTC 2019-10-10
Removed tc_purge() and purge_tables() argument

Author: Sergey Vojtovich
Author Date: 2019-06-19 14:20:49 UTC

Removed tc_purge() and purge_tables() argument

It was mistakenly used by tdc_start_shutdown() to make sure TABLE_SHARE
gets evicted from table definition cache when it becomes unused. However
same effect is achieved by resetting tdc_size and tc_size.

Part of MDEV-17882 - Cleanup refresh version

bb-10.1-robert 2019-10-10 11:47:59 UTC 2019-10-10
MDEV-17896 Assertion `pfs->get_refcount() > 0' failed

Author: Robert Bindar
Author Date: 2019-10-10 09:58:29 UTC

MDEV-17896 Assertion `pfs->get_refcount() > 0' failed

Unfortunate DROP TEMPORARY..IF EXISTS on a regular table may allow
subsequent CREATE TABLE statements to steal away the PFS_table_share
instance from the dropped table.

10.5-mdev8306 2019-10-09 09:37:34 UTC 2019-10-09
Improved description

Author: varun
Author Date: 2019-10-08 18:22:14 UTC

Improved description

bb-10.4-robert 2019-10-09 09:01:23 UTC 2019-10-09
MDEV-17896 Assertion `pfs->get_refcount() > 0' failed

Author: Robert Bindar
Author Date: 2019-10-08 12:27:05 UTC

MDEV-17896 Assertion `pfs->get_refcount() > 0' failed

Unfortunate DROP TEMPORARY..IF EXISTS on a regular table may allow
subsequent CREATE TABLE statements to steal away the PFS_table_share
instance from the table attempted to be dropped before using
DROP TEMPORARY.

bb-10.5-nikita-expr-arena-old 2019-10-09 06:54:49 UTC 2019-10-09
MDEV-19130 Assertion `next_insert_id >= auto_inc_interval_for_cur_row.minimum...

Author: Nikita Malyavin
Author Date: 2019-10-09 06:48:50 UTC

MDEV-19130 Assertion `next_insert_id >= auto_inc_interval_for_cur_row.minimum()' failed in handler::update_auto_increment after error 167

bb-10.2-anel-mytop 2019-10-09 05:02:11 UTC 2019-10-09
MDEV-4476: mytop tracker

Author: Jean Weisbuch
Author Date: 2019-10-04 07:45:32 UTC

MDEV-4476: mytop tracker

bb-10.5-MDEV-19514 2019-10-08 14:03:45 UTC 2019-10-08
Try to catch writes of all-zero pages

Author: Marko Mäkelä
Author Date: 2019-10-08 14:03:45 UTC

Try to catch writes of all-zero pages

buf_flush_init_for_writing(): Assert that FIL_PAGE_TYPE is set

buf_dblwr_create(): Ensure that FIL_PAGE_TYPE on all pages
will be initialized. Reset buf_dblwr_being_created at the end.

bb-10.4-sysprg-MDEV-20626 2019-10-08 08:53:41 UTC 2019-10-08
MDEV-20626: MariaDB crash if wsrep_sst_method enabled without wsrep_cluster_a...

Author: Julius Goryavsky
Author Date: 2019-10-08 08:25:23 UTC

MDEV-20626: MariaDB crash if wsrep_sst_method enabled without wsrep_cluster_address

bb-10.4-sysprg-MDEV-20625 2019-10-08 08:47:30 UTC 2019-10-08
MDEV-20625: MariaDB asserting when enabling wsrep=on

Author: Julius Goryavsky
Author Date: 2019-10-08 08:47:30 UTC

MDEV-20625: MariaDB asserting when enabling wsrep=on

bb-mdev-274 2019-10-08 04:05:21 UTC 2019-10-08
MDEV-274 The data type for IPv6/IPv4 addresses in MariaDB

Author: Alexander Barkov
Author Date: 2019-10-08 04:05:21 UTC

MDEV-274 The data type for IPv6/IPv4 addresses in MariaDB

bb-10.1-sysprg 2019-10-07 10:34:08 UTC 2019-10-07
MDEV-20728: /usr/sbin/mysqld: unknown variable 'defaults-group-suffix=mysqld1

Author: Julius Goryavsky
Author Date: 2019-10-07 10:34:08 UTC

MDEV-20728: /usr/sbin/mysqld: unknown variable 'defaults-group-suffix=mysqld1

When the mysqld_multi script passes the --defaults-group-suffix
option to mysqld, it must remove the initial substring with the
group name ("mysqld") from option value, because otherwise substring
"mysqld" will be added to the group name and then the group name
will contain the word "mysqld" twice, which is wrong, because
mysqld itself adds the suffix received to the group name.

10.5-mdev8306-2 2019-10-07 06:35:31 UTC 2019-10-07
Introduced an optimizer_switch for ORDER BY LIMIT

Author: varun
Author Date: 2019-10-07 06:34:51 UTC

Introduced an optimizer_switch for ORDER BY LIMIT

bb-10.3-sachin 2019-10-07 04:53:13 UTC 2019-10-07
MDEV-16239 Many test in rpl suite fails

Author: Sachin Setiya
Author Date: 2018-05-17 09:10:55 UTC

MDEV-16239 Many test in rpl suite fails

Fix rpl_skip_error test.
  We cant reset Slave_skipped_errors(even with FLUSH STATUS), So instead
of absolute slave_skipped_errors we look for delta of slave_skipped_errors
Fix rpl.rpl_binlog_errors and binlog_encryption.rpl_binlog_errors
  We create the $load_file and $load_file2 but we never remove them.
Fix rpl_000011.test
  Instead of real value use delta value , Since flush status wont flush
LONGLONG variable.
Fix rpl_row_find_row_debug
  Instead of searching whole log_error_ file we will use search_pattern_in_file
which runs pattern search only on latest test run , instead of full file.
Fix rpl_ip_mix rpl_ip_mix2
  We should call reset slave all because we also want to reset master_host
otherwise show slave status wont be empty and making repeat N a failure.
Fix rpl_rotate_logs
  First we have to remove master.info file (cleanup) and second we have to
call reset slave all because if we do not call reset slave all then we wont
read master.info file beacuse we already have master config in memory.
And this makes start slave to pass , which shoud fail becuase its permision
is 000
Fix circular_serverid0 test
  The reason is that ++dbug_rows_event_count == 2 in queue_event does
not take --repeat into account. So I have reseted the dbug_rows_event_count
in if body.

bb-10.5-bar-m20016 2019-10-04 14:33:09 UTC 2019-10-04
MDEV-20016 Add MariaDB_DATA_TYPE_PLUGIN

Author: Alexander Barkov
Author Date: 2019-10-04 14:33:09 UTC

MDEV-20016 Add MariaDB_DATA_TYPE_PLUGIN

bb-10.2-MDEV-19344 2019-10-04 08:48:45 UTC 2019-10-04
MDEV-19344 InnoDB purge buffering may corrupt a page

Author: Marko Mäkelä
Author Date: 2019-10-04 08:48:45 UTC

MDEV-19344 InnoDB purge buffering may corrupt a page

MySQL 5.5 introduced the ability of InnoDB to buffer delete-mark
and delete operations (the insert buffer was generalized to the
change buffer). These operations were only buffered on DELETE,
UPDATE (of a key) and the purge of history of committed transactions.

We never buffered anything on ROLLBACK; it could have been beneficial
for rolling back a large recovered transaction.

The delete-mark buffering appears to work fine, but there are problems
with the purge buffering.

MySQL Bug #61104 InnoDB: Failing assertion: page_get_n_recs(page) > 1
reported a problem with the purge buffering: an index page could
become empty, which essentially means that the secondary index becomes
corrupted. At MariaDB, we got closer to the root cause, by making
a failure repeatable with innodb.innodb-change-buffer-recovery-innodb
when an additional debug assertion is present.

page_header_set_field(): Enable the assertion that PAGE_N_RECS
must never be set to 0. (This function will not be invoked when
initializing an empty page. If an index page is empty, it must
be the root page, and the table must be empty. No changes to
the root page are ever buffered.)

A combination of two asynchronous, inherently nondeterministic operations
(purge and change buffering) is difficult to cover in tests or to reason
about. The purge buffering required a complex mechanism in the buffer pool,
the buffer pool watch. If we no longer buffer purge operations, we
can remove the watch as well.

We fix this by ceasing to buffer delete (purge) operations,
that is, by treating innodb_change_buffering=all (the default)
in the same way as innodb_change_buffering=changes
and treating innodb_change_buffering=purges
in the same way as innodb_change_buffering=deletes.

MDEV-16260 will attempt to improve the performance of purge in a more
controlled fashion by scaling the effort according to the workload.

We will retain the code that merges buffered purge operations,
so that upgrades from older versions will be possible.

BTR_DELETE_OP, BTR_DELETE, BUF_BLOCK_POOL_WATCH,
BUF_GET_IF_IN_POOL_OR_WATCH, BUF_POOL_WATCH_SIZE,
ROW_NOT_DELETED_REF: Remove.

btr_cur_t::purge_node, buf_pool_t::watch: Remove.

ibuf_get_volume_buffered_hash(): Remove. It is no longer necessary
to estimate whether the page could become empty.

bb-10.1-sujatha 2019-10-04 08:15:33 UTC 2019-10-04
MDEV-18046: Assortment of crashes, assertion failures and ASAN errors in mysq...

Author: Sujatha
Author Date: 2019-10-04 08:15:33 UTC

MDEV-18046: Assortment of crashes, assertion failures and ASAN errors in mysql_show_binlog_events

Problem:
========
SHOW BINLOG EVENTS FROM <pos> causes a variety of failures, some of which are
listed below. It is not a race condition issue, but there is some
non-determinism in it.

Fix:
====

Assert 1: With ASAN
========
Rows_log_event::Rows_log_event(const char*, uint,
    const Format_description_log_event*):
Assertion `var_header_len >= 2'

Implemented upstream patch.
commit a3a497ccf7ecacc900551fb1e47ea4078b45c351

Fix: Added checks to avoid reading out of buffer limits.

Assert 2:
=========
Table_map_log_event::Table_map_log_event(const char*, uint,
    const Format_description_log_event*)
Assertion `m_field_metadata_size <= (m_colcnt * 2)' failed.

Fix: Converted debug assert to error handler code.

ASAN Error: head-buffer-overflow within "my_strndup" in Rotate_log_event
===========
my_strndup /home/sujatha/bug_repo/tmp-10.1/mysys/my_malloc.c:254
Rotate_log_event::Rotate_log_event(char const*, unsigned int,
    Format_description_log_event const*)

Fix: Improved the check for event_len validation.

ASAN Error: AddressSanitizer: SEGV on unknown address
==========
in inline_mysql_mutex_destroy
in my_bitmap_free
in Update_rows_log_event::~Update_rows_log_event()

Fix: Intialize m_cols_ai.bitmap to NULL.

ASAN Error: AddressSanitizer: heap-buffer-overflow on address 0x60400002acb8
==========
Load_log_event::copy_log_event(char const*, unsigned long, int,
    Format_description_log_event const*)

Fix: Moved the event_len validation to the begin of copy_log_event function.

ASAN Error: AddressSanitizer: SEGV on unknown address
==========
The signal is caused by a READ memory access.
User_var_log_event::User_var_log_event(char const*, unsigned int,
    Format_description_log_event const*)

Implemented upstream patch.
commit a3a497ccf7ecacc900551fb1e47ea4078b45c351

User_var_log_event::User_var_log_event: added checks to avoid reading out of
buffer limits.

ASAN Error: AddressSanitizer: heap-buffer-overflow on address
==========
String::append(char const*, unsigned int)
Query_log_event::pack_info(Protocol*)

Fix: Added check to ensure that query_len is within event_length

bb-10.4-serg 2019-10-04 08:11:47 UTC 2019-10-04
if the test uses example plugin, it has to check whether plugin exists

Author: Sergei Golubchik
Author Date: 2019-10-04 08:11:47 UTC

if the test uses example plugin, it has to check whether plugin exists

bb-10.2-sachin 2019-10-04 07:05:01 UTC 2019-10-04
MDEV-20574 Position of events reported by mysqlbinlog is wrong with encrypted...

Author: Sachin Setiya
Author Date: 2019-09-26 09:35:55 UTC

MDEV-20574 Position of events reported by mysqlbinlog is wrong with encrypted binlogs, SHOW BINLOG EVENTS reports the correct one.

Analysis

Mysqlbinlog output for encrypted binary log
#Q> insert into tab1 values (3,'row 003')
#190912 17:36:35 server id 10221 end_log_pos 980 CRC32 0x53bcb3d3 Table_map: `test`.`tab1` mapped to number 19
# at 940
#190912 17:36:35 server id 10221 end_log_pos 1026 CRC32 0xf2ae5136 Write_rows: table id 19 flags: STMT_END_F

Here we can see Table_map_log_event ends at 980 but Next event starts at 940.
And the reason for that is we do not send START_ENCRYPTION_EVENT to the slave

Solution:-
Send Start_encryption_log_event as Ignorable_log_event to slave(mysqlbinlog),
So that mysqlbinlog can update its log_pos.
Since Slave can request multiple FORMAT_DESCRIPTION_EVENT while master does not
have so We only update slave master pos when master actually have the
FORMAT_DESCRIPTION_EVENT. Similar logic should be applied for START_ENCRYPTION_EVENT.

Also added the test case when new server reads the data from old server which
does not send START_ENCRYPTION_EVENT to slave.

Master Slave Upgrade Scenario.
  When Slave is updated first, Slave will have extra logic of handling
  START_ENCRYPTION_EVENT But master willnot be sending START_ENCRYPTION_EVENT.
  So there will be no issue.
  When Master is updated first, It will send START_ENCRYPTION_EVENT to
  slave , But slave will ignore this event in queue_event.

bb-10.2-sujatha 2019-10-03 08:28:02 UTC 2019-10-03
MDEV-18046: Assortment of crashes, assertion failures and ASAN errors in mysq...

Author: Sujatha
Author Date: 2019-10-03 08:28:02 UTC

MDEV-18046: Assortment of crashes, assertion failures and ASAN errors in mysql_show_binlog_events

Problem:
========
SHOW BINLOG EVENTS FROM <pos> causes a variety of failures, some of which are
listed below. It is not a race condition issue, but there is some
non-determinism in it.

Fix:
====

Assert 1: With ASAN
========
Rows_log_event::Rows_log_event(const char*, uint,
    const Format_description_log_event*):
  Assertion `var_header_len >= 2'

Implemented upstream patch.
commit a3a497ccf7ecacc900551fb1e47ea4078b45c351

Fix: Added checks to avoid reading out of buffer limits.

Assert 2:
=========
Table_map_log_event::Table_map_log_event(const char*, uint,
    const Format_description_log_event*)
  : Assertion `m_field_metadata_size <= (m_colcnt * 2)' failed.

Fix: Converted debug assert to error handler code.

Assert 3:
=========
Query_log_event::Query_log_event(const char*, uint,
    const Format_description_log_event*, Log_event_type):
  Assertion `(pos) + (6) <= (end)' failed

Fix: Removed additional DBUG_ASSERT.

ASAN Error: head-buffer-overflow within "my_strndup" in Rotate_log_event
===========
READ of size 511 at 0x60e0000adf60 thread T24
     in my_strndup /home/sujatha/bug_repo/tmp-10.1/mysys/my_malloc.c:254
     in Rotate_log_event::Rotate_log_event(char const*, unsigned int,
         Format_description_log_event const*)

Fix: Improved the check for event_len validation.

ASAN Error: AddressSanitizer: SEGV on unknown address
==========
in inline_mysql_mutex_destroy
in my_bitmap_free
in Update_rows_log_event::~Update_rows_log_event()

Fix: Intialize m_cols_ai.bitmap to NULL.

ASAN Error: AddressSanitizer: heap-buffer-overflow on address 0x60400002acb8
==========
READ of size 1 at 0x60400002acb8 thread T24
 in Load_log_event::copy_log_event(char const*, unsigned long, int,
     Format_description_log_event const*)

Fix: Moved the event_len validation to the begin of copy_log_event function.

ASAN Error: AddressSanitizer: SEGV on unknown address
==========
The signal is caused by a READ memory access.
User_var_log_event::User_var_log_event(char const*, unsigned int,
    Format_description_log_event const*)

Implemented upstream patch.
commit a3a497ccf7ecacc900551fb1e47ea4078b45c351

User_var_log_event::User_var_log_event: added checks to avoid reading out of
buffer limits.

bb-10.3-anel-mtr-correct-strace 2019-10-03 06:00:13 UTC 2019-10-03
MDEV-15503: mtr fix --strace

Author: Daniel Black
Author Date: 2018-02-11 03:42:11 UTC

MDEV-15503: mtr fix --strace

$glob_mysql_test_dir was the wrong directory for strace output as
it was for in-tree builds only so failed for:
* out of tree builds
* --parallel; and
* --mem

strace output wasn't saved.

strace-option never replaced existing arguments (so ammended
documentation).

strace-client didn't accept an argument as described.

Replaced specification of client with this with 'stracer' to be
consistent with --debugger option.

For consistency with debugger options, --client-strace was added to
execute the strace on the mysqltest.

Example:

$ mysql-test/mtr --strace --client-strace --mem --parallel=3 main.select
Logging: /home/dan/software_projects/mariadb-server/mysql-test/mysql-test-run.pl --strace --client-strace --mem --parallel=3 main.select
vardir: /home/dan/software_projects/build-mariadb-10.3/mysql-test/var
Checking leftover processes...
Removing old var directory...
Creating var directory '/home/dan/software_projects/build-mariadb-10.3/mysql-test/var'...
 - symlinking 'var' to '/dev/shm/var_auto_0v2E'
Checking supported features...
MariaDB Version 10.3.7-MariaDB
 - SSL connections supported
Collecting tests...
Installing system database...

==============================================================================

TEST WORKER RESULT TIME (ms) or COMMENT
--------------------------------------------------------------------------

worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 16000..16019
worker[3] - 'localhost:16040' was not free
worker[2] Using MTR_BUILD_THREAD 301, with reserved ports 16020..16039
worker[3] Using MTR_BUILD_THREAD 303, with reserved ports 16060..16079
main.select w1 [ pass ] 7310
--------------------------------------------------------------------------
The servers were restarted 0 times
Spent 7.310 of 11 seconds executing testcases

Completed: All 1 tests were successful.

$ find mysql-test/var/ -name \*strace -ls
  5213766 1212 -rw-r--r-- 1 dan dan 1237817 May 20 16:47 mysql-test/var/1/mysqltest.strace
  5214733 13016 -rw-r--r-- 1 dan dan 13328335 May 20 16:47 mysql-test/var/1/mysqld.1.strace

$ mysql-test/mtr --strace --client-strace --strace-option='-e' --strace-option='trace=openat' --mem --parallel=3 main.select
...
$ find mysql-test/var/ -name \*strace -ls 5220790 8 -rw-r--r-- 1 dan dan 6291 May 20 17:02 mysql-test/var/3/mysqltest.strace
  5224140 308 -rw-r--r-- 1 dan dan 314356 May 20 17:02 mysql-test/var/3/mysqld.1.strace
$ more mysql-test/var/3/mysqltest.strace
1692 openat(AT_FDCWD, "/home/dan/software_projects/mariadb-server/libmysql/.libs/tls/x86_64/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) =
-1 ENOENT (No such file or directory)
1692 openat(AT_FDCWD, "/home/dan/software_projects/mariadb-server/libmysql/.libs/tls/x86_64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = -1 ENOE
NT (No such file or directory)
....

bb-10.1-svoj-MDEV-19536 2019-10-02 18:30:44 UTC 2019-10-02
Fixup

Author: Sergey Vojtovich
Author Date: 2019-10-02 18:30:44 UTC

Fixup

Simplified away statistics_for_command_is_needed().
Removed redundant get_use_stat_tables_mode() check.

bb-10.5-MDEV-20051 2019-10-02 12:22:11 UTC 2019-10-02
Fix hang.

Author: Jan Lindström
Author Date: 2019-10-02 12:22:11 UTC

Fix hang.

bb-10.5-nikita-expr-arena 2019-10-02 11:14:12 UTC 2019-10-02
MDEV-16039 Crash when selecting virtual columns generated using functions wit...

Author: Nikita Malyavin
Author Date: 2019-09-03 18:29:03 UTC

MDEV-16039 Crash when selecting virtual columns generated using functions with DAYNAME()

Due to collation specifics an Item tree could change while fixing. Virtual fields.

1. This should be done on the correct query arena, which is table->expr_arena.
2. Doing it once per table open is enough. Furthermore, fixing virtual exprs after open sets the collation to the one definde by `SET NAMES`, which is incorrect: only the native table collation should be used, and it shouldn't be changed after the table is created.

bb-10.2-robert 2019-10-01 10:54:27 UTC 2019-10-01
MDEV-20647 actually enable the suite and fix parallel run bug

Author: Robert Bindar
Author Date: 2019-10-01 10:54:15 UTC

MDEV-20647 actually enable the suite and fix parallel run bug

bb-10.4-20574 2019-10-01 09:41:02 UTC 2019-10-01
MDEV-20574 Position of events reported by mysqlbinlog is wrong with encrypted...

Author: Sachin Setiya
Author Date: 2019-09-26 09:35:55 UTC

MDEV-20574 Position of events reported by mysqlbinlog is wrong with encrypted binlogs, SHOW BINLOG EVENTS reports the correct one.

Analysis

Mysqlbinlog output for encrypted binary log
#Q> insert into tab1 values (3,'row 003')
#190912 17:36:35 server id 10221 end_log_pos 980 CRC32 0x53bcb3d3 Table_map: `test`.`tab1` mapped to number 19
# at 940
#190912 17:36:35 server id 10221 end_log_pos 1026 CRC32 0xf2ae5136 Write_rows: table id 19 flags: STMT_END_F

Here we can see Table_map_log_event ends at 980 but Next event starts at 940.
And the reason for that is we do not send START_ENCRYPTION_EVENT to the slave

Solution:-
Send Start_encryption_log_event as Ignorable_log_event to slave(mysqlbinlog),
So that mysqlbinlog can update its log_pos.
Since Slave can request multiple FORMAT_DESCRIPTION_EVENT while master does not
have so We only update slave master pos when master actually have the
FORMAT_DESCRIPTION_EVENT. Similar logic should be applied for START_ENCRYPTION_EVENT.

Also added the test case when new server reads the data from old server which
does not send START_ENCRYPTION_EVENT to slave.

bb-10.3-20574 2019-10-01 09:34:08 UTC 2019-10-01
MDEV-20574 Position of events reported by mysqlbinlog is wrong with encrypted...

Author: Sachin Setiya
Author Date: 2019-09-26 09:35:55 UTC

MDEV-20574 Position of events reported by mysqlbinlog is wrong with encrypted binlogs, SHOW BINLOG EVENTS reports the correct one.

Analysis

Mysqlbinlog output for encrypted binary log
#Q> insert into tab1 values (3,'row 003')
#190912 17:36:35 server id 10221 end_log_pos 980 CRC32 0x53bcb3d3 Table_map: `test`.`tab1` mapped to number 19
# at 940
#190912 17:36:35 server id 10221 end_log_pos 1026 CRC32 0xf2ae5136 Write_rows: table id 19 flags: STMT_END_F

Here we can see Table_map_log_event ends at 980 but Next event starts at 940.
And the reason for that is we do not send START_ENCRYPTION_EVENT to the slave

Solution:-
Send Start_encryption_log_event as Ignorable_log_event to slave(mysqlbinlog),
So that mysqlbinlog can update its log_pos.
Since Slave can request multiple FORMAT_DESCRIPTION_EVENT while master does not
have so We only update slave master pos when master actually have the
FORMAT_DESCRIPTION_EVENT. Similar logic should be applied for START_ENCRYPTION_EVENT.

Also added the test case when new server reads the data from old server which
does not send START_ENCRYPTION_EVENT to slave.

bb-10.5-robert 2019-09-30 10:57:35 UTC 2019-09-30
MDEV-20435 ALTER USER prints bad error message

Author: Robert Bindar
Author Date: 2019-09-30 10:54:18 UTC

MDEV-20435 ALTER USER prints bad error message

bb-10.3-sujatha 2019-09-29 15:16:09 UTC 2019-09-29
MDEV-20645-10.2 - Upmerge Testing.

Author: Sujatha
Author Date: 2019-09-29 15:15:17 UTC

MDEV-20645-10.2 - Upmerge Testing.

bb-10.4-alice 2019-09-27 16:45:58 UTC 2019-09-27
slave runs with 5sec lag (before- 10 sec)

Author: Larysa Sherepa
Author Date: 2019-09-27 16:45:58 UTC

slave runs with 5sec lag (before- 10 sec)

bb-10.5-midenok 2019-09-27 15:27:23 UTC 2019-09-27
SQL: followup misc rename on versioning

Author: midenok
Author Date: 2018-09-18 11:20:09 UTC

SQL: followup misc rename on versioning

vers_sys_type_t -> vers_kind_t

bb-10.3-sysprg 2019-09-27 15:17:14 UTC 2019-09-27
MDEV-20614: Syntax error, and option put in wrong place

Author: Julius Goryavsky
Author Date: 2019-09-25 12:00:39 UTC

MDEV-20614: Syntax error, and option put in wrong place

A syntax error in the mysqld_multi.sh script has been fixed
here + a "--defaults-group-suffix" option has been moved to
the top of the mysqld options list.

bb-10.1-serg 2019-09-27 11:20:11 UTC 2019-09-27
chkconfig in RPM server scriptlets

Author: Sergei Golubchik
Author Date: 2019-09-27 11:20:00 UTC

chkconfig in RPM server scriptlets

chkconfig --add and --del [might] invoke /sbin/insserv
and even if chkconfig exists, insserv might not (SLES15).

Ignore chkconfig --del errors - it's a "best effort" cleanup anyway

bb-10.3-MDEV-18546-nikita 2019-09-27 08:13:16 UTC 2019-09-27
MDEV-18546 ASAN heap-use-after-free in innobase_get_computed_value / row_purge

Author: Nikita Malyavin
Author Date: 2019-07-30 12:39:55 UTC

MDEV-18546 ASAN heap-use-after-free in innobase_get_computed_value / row_purge

the bug was already fixed in MDEV-17005, so now only test is added

bb-10.2-sysprg 2019-09-26 15:34:18 UTC 2019-09-26
MDEV-20614: Syntax error, and option put in wrong place

Author: Julius Goryavsky
Author Date: 2019-09-25 12:00:39 UTC

MDEV-20614: Syntax error, and option put in wrong place

A syntax error in the mysqld_multi.sh script has been fixed
here + a "--defaults-group-suffix" option has been moved to
the top of the mysqld options list.

10.5-MDEV-11107 2019-09-25 17:57:09 UTC 2019-09-25
MDEV-11107 Use table check constraints in optimizer

Author: Galina Shalygina
Author Date: 2019-09-25 17:57:09 UTC

MDEV-11107 Use table check constraints in optimizer

Project code on 10.5 branch

10.5-mdev-11588 2019-09-25 16:18:29 UTC 2019-09-25
Cleaned tests, added new tests.

Author: Galina Shalygina
Author Date: 2019-09-25 16:18:29 UTC

Cleaned tests, added new tests.
Removed additional is_deterministic() checks.
Added check: subquery used in ON expression.

bb-10.5-MDEV-16678 2019-09-25 12:11:56 UTC 2019-09-25
MDEV-16678 Use MDL for innodb background threads instead of dict_operation_lock

Author: THIRUNARAYANAN BALATHANDAYUTHAPANI
Author Date: 2019-09-25 12:11:56 UTC

MDEV-16678 Use MDL for innodb background threads instead of dict_operation_lock

- Removing test case from gcol.innodb_virtual_debug_purge because
purge and Drop table can't work on the same table at the same time.

bb-10.1-MDEV-20614 2019-09-25 12:00:39 UTC 2019-09-25
MDEV-20614: Syntax error, and option put in wrong place

Author: Julius Goryavsky
Author Date: 2019-09-25 12:00:39 UTC

MDEV-20614: Syntax error, and option put in wrong place

A syntax error has been fixed here + a new option has been
moved to the top of the mysqld options list.

bb-10.5-svoj-MDEV-20630 2019-09-24 16:26:53 UTC 2019-09-24
lf_hash_iterate() no zero-bucket initialization

Author: Sergey Vojtovich
Author Date: 2019-09-24 02:06:45 UTC

lf_hash_iterate() no zero-bucket initialization

Return immediately if hash is empty.

Part of MDEV-20630 - lf_hash get performance regression since the bucket
                     size won't decrease

bb-5.5-anel-mysqld_multi_strict 2019-09-24 12:05:55 UTC 2019-09-24
Add strict and warnings to script

Author: Anel Husakovic
Author Date: 2019-09-24 11:52:46 UTC

Add strict and warnings to script

bb-10.4-igor 2019-09-23 16:57:37 UTC 2019-09-23
MDEV-19956 Queries with subqueries containing UNION are not parsed

Author: Igor Babaev
Author Date: 2019-09-20 16:03:38 UTC

MDEV-19956 Queries with subqueries containing UNION are not parsed

Shift-Reduce conflicts prevented parsing some queries with subqueries that
used set operations when the subqueries occurred in expressions or in IN
predicands.
The grammar rules for query expression were transformed in order to avoid
these conflicts. New grammar rules employ an idea taken from MySQL 8.0.

10.5-MDEV-16678 2019-09-23 08:16:24 UTC 2019-09-23
- Reverted 2c4844c9e76427525e8c39a2d72686085efe89c3. The scenario

Author: THIRUNARAYANAN BALATHANDAYUTHAPANI
Author Date: 2019-09-23 07:55:11 UTC

- Reverted 2c4844c9e76427525e8c39a2d72686085efe89c3. The scenario
become useless after purge thread uses MDL

bb-10.1-varun 2019-09-20 19:52:40 UTC 2019-09-20
MDEV-18094: Query with order by limit picking index scan over filesort

Author: varun
Author Date: 2019-09-20 19:37:51 UTC

MDEV-18094: Query with order by limit picking index scan over filesort

In the function test_if_cheaper_ordering we make a decision if using an index is better than
using filesort for ordering. If we chose to do range access then in test_quick_select we
should make sure that cost for table scan is set to DBL_MAX so that it is not picked.

bb-10.5-svoj-MDEV-17084 2019-09-20 11:09:26 UTC 2019-09-20
MDEV-17084 - Optimize append only files for NVDIMM

Author: Monty
Author Date: 2019-09-20 11:09:26 UTC

MDEV-17084 - Optimize append only files for NVDIMM

Minor fixes.

bb-10.3.16-xtrabackup_copy_logfile_failed-MDEV-18611-dev 2019-09-18 19:41:44 UTC 2019-09-18
Some extra logging is added

Author: Vlad Lesin
Author Date: 2019-09-18 16:50:28 UTC

Some extra logging is added

(cherry picked from commit 7ff6e33d7ff7104fefb4df4a33c6f3fa54c0093d)

bb-10.2-serg 2019-09-18 12:00:32 UTC 2019-09-18
gis2 test no longer exists after 3fe38574fbdd

Author: Sergei Golubchik
Author Date: 2019-09-18 12:00:32 UTC

gis2 test no longer exists after 3fe38574fbdd

bb-10.2-varun 2019-09-17 20:49:55 UTC 2019-09-17
MDEV-20589: Server still crashes in Field::set_warning_truncated_wrong_value

Author: varun
Author Date: 2019-09-17 20:29:29 UTC

MDEV-20589: Server still crashes in Field::set_warning_truncated_wrong_value

The flag is_stat_field is not set for the min_value and max_value of field items
inside table share. This is a must requirement as we don't want to throw
warnings of truncation when we read values from the statistics table to the column
statistics of table share fields.

bb-10.2-compatibility-build22257-opt-fixes 2019-09-16 11:42:24 UTC 2019-09-16
MDEV-20371: Invalid reads at plan refinement stage: join->positions...

Author: Sergey Petrunia
Author Date: 2019-09-16 11:42:24 UTC

MDEV-20371: Invalid reads at plan refinement stage: join->positions...

(Backported to 10.2-compatiblity, build 22257)

best_access_path() is called from two optimization phases:

1. Plan choice phase, in choose_plan(). Here, the join prefix being
   considered is in join->positions[]

2. Plan refinement stage, in fix_semijoin_strategies_for_picked_join_order
   Here, the join prefix is in join->best_positions[]

It used to access join->positions[] from stage #2. This didnt cause any
valgrind or asan failures (as join->positions[] has been written-to before)
but the effect was similar to that of reading the random data:
The join prefix we've picked (in join->best_positions) could have
nothing in common with the join prefix that was last to be considered
(in join->positions).

bb-10.2-MDEV-20194-CHECK-row-size 2019-09-15 19:10:52 UTC 2019-09-15
MDEV-20194 Warnings inconsistently issued upon CHECK on table from older vers...

Author: Eugene
Author Date: 2019-08-28 10:52:51 UTC

MDEV-20194 Warnings inconsistently issued upon CHECK on table from older versions

This patch changes conditions for HA_ERR_TO_BIG_ROW and users will complain!
But I hope now we really have a correct row size check.

This patch will be hard to merge because of changed tests.

Ideally, all row size checks code should live now in innodb.max_record_size
or innodb.max_record_size_compressed.

Now check for too big row size performed for every index on CREATE TABLE,
and for added index on ALTER TABLE. This is how the topic issue was fixed.

Error message for COMPRESSED tables might contain an incorrect maximum
possible row size if overflowed index was not clustered. Fixing it will
require some more effort.

create_table_info_t::row_size_is_acceptable(): high level too big row size
check interface.

record_size_info_t dict_index_t::record_size_info(): this is a low level
interface to perform too big row checks. Also can be used to get maximum
potential row size.

get_max_record_size_leaf_page()
get_max_record_size_non_leaf_page(): these are uniform way to get maximum
allows row size for a given page size and index row format. One function
instead of 5 slightly different computations.

format_too_big_row_error_message(): one function for formatting too big
row error messages instead of several.

bb-10.1-MDEV-19529 2019-09-13 17:39:28 UTC 2019-09-13
MDEV-19529 InnoDB hang on DROP FULLTEXT INDEX

Author: THIRUNARAYANAN BALATHANDAYUTHAPANI
Author Date: 2019-09-13 17:39:06 UTC

MDEV-19529 InnoDB hang on DROP FULLTEXT INDEX

Problem:
=======
  During dropping of fts index, InnoDB waits for fts_optimize_remove_table()
and it holds dict_sys->mutex and dict_operaiton_lock even though the
table id is not present in the queue. But fts_optimize_thread does wait
for dict_sys->mutex to process the unrelated table id from the slot.

Solution:
========
  Whenever table is added to fts_optimize_wq, update the fts_status
of in-memory fts subsystem to TABLE_IN_QUEUE. Whenever drop index
wants to remove table from the queue, it can check the fts_status
to decide whether it should send the MSG_DELETE_TABLE to the queue.

Removed the following functions because these are all deadcode.
dict_table_wait_for_bg_threads_to_exit(),
fts_wait_for_background_thread_to_start(),fts_start_shutdown(), fts_shudown().

bb-10.5-19708 2019-09-13 10:37:26 UTC 2019-09-13
Fix compile error in macOS caused by MDEV-20477

Author: Sachin Setiya
Author Date: 2019-09-13 10:37:26 UTC

Fix compile error in macOS caused by MDEV-20477

bb-10.4-bar 2019-09-13 07:04:23 UTC 2019-09-13
MDEV-18153 Assertion `0' or Assertion `btr_validate_index(index, 0)' failed i...

Author: Alexander Barkov
Author Date: 2019-09-13 07:04:23 UTC

MDEV-18153 Assertion `0' or Assertion `btr_validate_index(index, 0)' failed in row_upd_sec_index_entry or error code 126: Index is corrupted upon UPDATE with TIME_ROUND_FRACTIONAL

Conversion to a temporal data type resulting into a lower precision
depends on TIME_ROUND_FRACTIONAL. Taking into account this dependency in:
- indexed generated virtual column expressions
- persistent virtual column expressions

A warning is now issued if conversion from the generation expression
to the column data type depends on TIME_ROUND_FRACTIONAL.

The warning will be changed to error in 10.5

bb-10.4-mdev20371 2019-09-12 16:29:07 UTC 2019-09-12
MDEV-20371: Invalid reads at plan refinement stage: join->positions...

Author: Sergey Petrunia
Author Date: 2019-09-11 17:22:08 UTC

MDEV-20371: Invalid reads at plan refinement stage: join->positions...

(re-committing in 10.4)
best_access_path() is called from two optimization phases:

1. Plan choice phase, in choose_plan(). Here, the join prefix being
   considered is in join->positions[]

2. Plan refinement stage, in fix_semijoin_strategies_for_picked_join_order
   Here, the join prefix is in join->best_positions[]

It used to access join->positions[] from stage #2. This didnt cause any
valgrind or asan failures (as join->positions[] has been written-to before)
but the effect was similar to that of reading the random data:
The join prefix we've picked (in join->best_positions) could have
nothing in common with the join prefix that was last to be considered
(in join->positions).

bb-10.2-galera 2019-09-12 04:23:24 UTC 2019-09-12
Force rebuild.

Author: Jan Lindström
Author Date: 2019-09-12 04:23:24 UTC

Force rebuild.

10.4-nikita-merge 2019-09-11 16:36:09 UTC 2019-09-11
cherry-pick MDEV-16490

Author: Nikita Malyavin
Author Date: 2018-06-22 13:26:43 UTC

cherry-pick MDEV-16490

bb-10.5-MDEV-12353 2019-09-11 13:34:10 UTC 2019-09-11
Remove page_copy_rec_list_end_to_created_page()

Author: Marko Mäkelä
Author Date: 2019-09-11 13:09:18 UTC

Remove page_copy_rec_list_end_to_created_page()

Also remove the log records MLOG_LIST_END_COPY_CREATED,
MLOG_COMP_LIST_END_COPY_CREATED and
page_parse_copy_rec_list_to_created_page().

This will improve the fill factor of some pages.
Adjust some tests accordingly.

FIXME: Remove remaining references to the function and deduplicate code.

TODO: Implement new reusable function (template?) for insert+reorganize.

bb-10.2-mdev20371 2019-09-10 20:51:42 UTC 2019-09-10
MDEV-20371: Invalid reads at plan refinement stage: join->positions...

Author: Sergey Petrunia
Author Date: 2019-09-10 20:51:42 UTC

MDEV-20371: Invalid reads at plan refinement stage: join->positions...

best_access_path() is called from two optimization phases:

1. Plan choice phase, in choose_plan(). Here, the join prefix being
   considered is in join->positions[]

2. Plan refinement stage, in fix_semijoin_strategies_for_picked_join_order
   Here, the join prefix is in join->best_positions[]

It used to access join->positions[] from stage #2. This didnt cause any
valgrind or asan failures (as join->positions[] has been written-to before)
but the effect was similar to that of reading the random data:
The join prefix we've picked (in join->best_positions) could have
nothing in common with the join prefix that was last to be considered
(in join->positions).

bb-10.2-nikita 2019-09-10 13:14:50 UTC 2019-09-10
MDEV-20143 innodb.innodb-virtual-columns-debug failed in buildbot with wrong ...

Author: Nikita Malyavin
Author Date: 2019-09-10 11:54:31 UTC

MDEV-20143 innodb.innodb-virtual-columns-debug failed in buildbot with wrong result

there was a SELECT/DELETE race

bb-10.4-varun 2019-09-10 09:13:53 UTC 2019-09-10
Moved the function trace_plan_prefix to the optimizer_trace file

Author: varun
Author Date: 2019-09-10 08:31:31 UTC

Moved the function trace_plan_prefix to the optimizer_trace file

Also improved the comments to the function and did some minor cleanup

bb-10.4-MDEV-20320 2019-09-10 06:04:38 UTC 2019-09-10
MDEV-20320 Tablespace flags mismatch for full_crc32 format

Author: THIRUNARAYANAN BALATHANDAYUTHAPANI
Author Date: 2019-09-10 06:04:38 UTC

MDEV-20320 Tablespace flags mismatch for full_crc32 format

Problem:
=======
   Tablespace flag mismatch happen when innodb_compression_algorithm set to different
value during restart for full_crc32 format.

Solution:
========
  Remove the innodb_compression_algorithm check while comparing the table flags and
tablespace flags stored in page0.

bb-10.5-MDEV-20487 2019-09-09 11:18:24 UTC 2019-09-09
MDEV-20487 Remove the InnoDB adaptive hash index

Author: Marko Mäkelä
Author Date: 2019-09-09 11:03:03 UTC

MDEV-20487 Remove the InnoDB adaptive hash index

Based on the performance testing that was conducted in MDEV-17492,
the InnoDB adaptive hash index could only help performance in specific,
almost-read-only workloads. It could slow down all kinds of workloads
(especially DROP TABLE, TRUNCATE TABLE, ALTER TABLE, or DROP INDEX
operations), and it can become corrupted, causing crashes
and possibly data corruption. Furthermore, the adaptive hash index
consumes space from the InnoDB buffer pool, which could hurt performance
when the working set would almost fit in the buffer pool.

Given all this, it is best to remove innodb_adaptive_hash_index.
For now, we will change the default value of the build option
WITH_INNODB_AHI to OFF and adjust tests.

The test rpl.rpl_failed_drop_tbl_binlog depends on DROP TABLE being
able to be interrupted while it is dropping pages from the
adaptive hash index. It will be skipped from now on by default,
but it will be tested for builds WITH_INNODB_AHI=ON.

bb-10.1-hf 2019-09-08 21:35:03 UTC 2019-09-08
MDEV-16594 ALTER DATA DIRECTORY in PARTITIONS of InnoDB storage does nothing ...

Author: Alexey Botchkov
Author Date: 2019-09-08 21:35:03 UTC

MDEV-16594 ALTER DATA DIRECTORY in PARTITIONS of InnoDB storage does nothing silently.

bb-10.4-mdev17171 2019-09-06 19:11:29 UTC 2019-09-06
MDEV-17171: RocksDB Tables do not have "Creation Date"

Author: Sergey Petrunia
Author Date: 2019-09-06 19:11:29 UTC

MDEV-17171: RocksDB Tables do not have "Creation Date"

Support Create_time and Update_time for MyRocks tables.
- Create_time is stored in the MyRocks' internal data dictionary.
- Update_time is in-memory only (like in InnoDB).

bb-10.5-wlad 2019-09-05 12:26:38 UTC 2019-09-05
Merge branch '10.5' into bb-10.5-wlad

Author: Vladislav Vaintroub
Author Date: 2019-09-05 12:26:38 UTC

Merge branch '10.5' into bb-10.5-wlad

# Conflicts:
# storage/innobase/CMakeLists.txt
# storage/innobase/os/os0file.cc

bb-10.3-MDEV-20485 2019-09-04 06:21:07 UTC 2019-09-04
MDEV-20485: Galera test failure on galera.galera_var_node_address

Author: Jan Lindström
Author Date: 2019-09-04 06:21:07 UTC

MDEV-20485: Galera test failure on galera.galera_var_node_address

Test changes only.

bb-10.2-monty 2019-09-03 22:59:35 UTC 2019-09-03
Fix of query cache bug in Aria

Author: Monty
Author Date: 2019-09-03 22:59:35 UTC

Fix of query cache bug in Aria

MDEV-5817 query cache bug (returning inconsistent/old result
set) with aria table parallel inserts, row format = page

The problem is that for transactional aria tables
(row_type=PAGE and transactional=1), maria_lock_database()
didn't flush the state or the query cache.
Not flushing the state is correct for transactional tables as
this is done by checkpoint, but not flushing the query cache
was wrong and could cause concurrent SELECT queries to not
be deleted from the cache.

Fixed by introducing a flush of the query cache as part of commit, if the table has changed.
t for transactional aria tables (row_type=PAGE and transactional=1), maria_lock_table() didn't flush their state or the query cache.

bb-10.3-serg 2019-09-03 13:29:18 UTC 2019-09-03
MDEV-20079 When setting back the system time while mysqld is running, NOW() a...

Author: Sergei Golubchik
Author Date: 2019-09-03 13:28:32 UTC

MDEV-20079 When setting back the system time while mysqld is running, NOW() and UNIX_TIMESTAMP() results get stuck

typo. system_time.start wasn't updated when system_time.sec
and system_time.sec_part were.

bb-10.2-wlad 2019-09-03 12:48:36 UTC 2019-09-03
Connect : Remove debug cmake output, find packages QUIETly

Author: Vladislav Vaintroub
Author Date: 2019-09-03 12:48:36 UTC

Connect : Remove debug cmake output, find packages QUIETly

10.5-MDEV-19514 2019-09-03 12:26:19 UTC 2019-09-03
- Fixes main.tc_heuristic_recover test case hang.

Author: THIRUNARAYANAN BALATHANDAYUTHAPANI
Author Date: 2019-09-03 12:12:53 UTC

- Fixes main.tc_heuristic_recover test case hang.

bb-10.2-anel-default_charset 2019-09-03 08:53:30 UTC 2019-09-03
Enable the auto parametar of the flag `default-character-set`

Author: Anel Husakovic
Author Date: 2018-04-16 20:49:27 UTC

Enable the auto parametar of the flag `default-character-set`

When invoking option `--default-character-set=auto` character set
from underlying OS settings should be detected for mysqldump.

1100 of 451 results

Other repositories

Name Last Modified
lp:maria 56 seconds ago
lp:~maria-captains/maria/+git/connector-c 2018-01-08
12 of 2 results
You can't create new repositories for MariaDB.