Commit graph

188637 commits

Author SHA1 Message Date
Vladislav Vaintroub
f37a56de3c MDEV-21586 Server does not start if lc_messages setting was not english.
Fixed a bug introduced in  MDEV-11345, server did not start if
non-english error messages were set in startup parameters.

Added lc_messages=de_DE option into an existing test case.
2020-01-30 18:43:50 +01:00
mkaruza
74f7620636 MDEV-21598 Galera test galera.galera_sst_mysqldump does not take wsrep-new-cluster into account
Variable `wsrep_new_cluster` should be set to false after `wsrep_init_startup`.
Problem was that this was done before when mysqldump is used as SST method so option
wsrep-new-cluster didn't have any effect.
2020-01-30 14:53:42 +02:00
Thirunarayanan Balathandayuthapani
afe9caa82d MDEV-21564 Assert in trx_purge_add_update_undo_to_history during shutdown
- dict_table_try_drop_aborted() can generate undo logs. So it should
be avoided after shutdown of background threads.
2020-01-30 17:54:49 +05:30
Monty
4d61f1247a Fixed compiler warnings from gcc 7.4.1
- Fixed possible error in rocksdb/rdb_datadic.cc
2020-01-29 23:23:55 +02:00
Monty
cd2c0e013c Added error output wsrep_print_version
This helps to determinate why galera library doesn't load
2020-01-29 23:14:41 +02:00
mkaruza
41bc736871 Galera GTID support
Support for galera GTID consistency thru cluster. All nodes in cluster
should have same GTID for replicated events which are originating from cluster.
Cluster originating commands need to contain sequential WSREP GTID seqno
Ignore manual setting of gtid_seq_no=X.

In master-slave scenario where master is non galera node replicated GTID is
replicated and is preserved in all nodes.

To have this - domain_id, server_id and seqnos should be same on all nodes.
Node which bootstraps the cluster, to achieve this, sends domain_id and
server_id to other nodes and this combination is used to write GTID for events
that are replicated inside cluster.

Cluster nodes that are executing non replicated events are going to have different
GTID than replicated ones, difference will be visible in domain part of gtid.

With wsrep_gtid_domain_id you can set domain_id for WSREP cluster.

Functions WSREP_LAST_WRITTEN_GTID, WSREP_LAST_SEEN_GTID and
WSREP_SYNC_WAIT_UPTO_GTID now works with "native" GTID format.

Fixed galera tests to reflect this chances.

Add variable to manually update WSREP GTID seqno in cluster

Add variable to manipulate and change WSREP GTID seqno. Next command
originating from cluster and on same thread will have set seqno and
cluster should change their internal counter to it's value.
Behavior is same as using @@gtid_seq_no for non WSREP transaction.
2020-01-29 15:06:06 +02:00
Marko Mäkelä
5defdc382b Cleanup: Remove mtr_state_t and mtr_t::m_state
mtr_t::is_active(), mtr_t::is_committed(): Make debug-only.
2020-01-29 14:28:45 +02:00
Anel Husakovic
4932ec871f Clean the comment for table_f_c unt parameter
Deleted with commit: c70a9fa1e3
2020-01-29 12:50:17 +01:00
Marko Mäkelä
c69a8629f7 MDEV-21362: Do not call memcmp on null pointers
Starting with commit 373443903b
we would invoke memcmp() unconditionally, even if the length is zero.
But, a call to memcmp() is undefined if any parameter is a null pointer,
even if the length is zero.

In the following tests, a null pointer is being passed to the comparison:
vcol.vcol_keys_innodb gcol.gcol_keys_innodb main.func_group_innodb
innodb.innodb_bug53592

cmp_data(): Keep WITH_UBSAN happy and avoid potential future bugs
in optimized builds, like the one addressed by
commit fc168c3a5e (MDEV-15587).
2020-01-29 13:43:20 +02:00
Sujatha
d89bb88674 MDEV-20923:UBSAN: member access within address … which does not point to an object of type 'xid_count_per_binlog'
Problem:
-------
Accessing a member within 'xid_count_per_binlog' structure results in
following error when 'UBSAN' is enabled.

member access within address 0xXXX which does not point to an object of type
'xid_count_per_binlog'

Analysis:
---------
The problem appears to be that no constructor for 'xid_count_per_binlog' is
being called, and thus the vtable will not be initialized.

Fix:
---
Defined a parameterized constructor for 'xid_count_per_binlog' class.
2020-01-29 16:33:05 +05:30
Marko Mäkelä
50324ce624 MDEV-21351 Replace recv_sys.heap with list of buf_block_t
InnoDB crash recovery used a special type of mem_heap_t that
allocates backing store from the buffer pool. That incurred
a significant overhead, leading to underutilization of memory,
and limiting the maximum contiguous allocated size of a log record.

recv_sys_t::blocks: A linked list of buf_block_t that are allocated
by buf_block_alloc() for redo log records. Replaces recv_sys_t::heap.
We repurpose buf_block_t::unzip_LRU for linking the elements.

recv_sys_t::max_log_blocks: Renamed from recv_n_pool_free_frames.

recv_sys_t::max_blocks(): Accessor for max_log_blocks.

recv_sys_t::alloc(): Allocate memory from the current recv_sys_t::blocks
element, or allocate another block.  In debug builds, various free()
member functions must be invoked, because we repurpose
buf_page_t::buf_fix_count for tracking allocations.

recv_sys_t::free_corrupted_page(): Renamed from recv_recover_corrupt_page()

recv_sys_t::is_memory_exhausted(): Renamed from recv_sys_heap_check()

recv_sys_t::pages and its elements are allocated directly by the
system memory allocator.

recv_parse_log_recs(): Remove the parameter available_memory.

We rename some variables 'store_to_hash' to 'store', because
recv_sys.pages is not actually a hash table.

This is joint work with Thirunarayanan Balathandayuthapani.
2020-01-29 12:53:39 +02:00
Daniel Black
5271d43648 MDEV-14330 Move mysqltest.1 man page to appropriate test package from server package
Original patch from Daniel Black <daniel@linux.ibm.com>, backported to 10.1.
2020-01-28 19:55:32 +02:00
Vicențiu Ciorbaru
07e34cddb6 MDEV-14330: move tokudb manpages to right packages
Move tokuftdump and tokuft_logprint man pages to storage/tokudb.

The man pages are now part of tokudb-engine cmake component. This change
is mostly for RPM & DEB based packaging generated through CMake & CPack.

Debian upstream already handles this change via the custom scripts in debian/
2020-01-28 18:27:18 +02:00
Vicențiu Ciorbaru
9aaa3e1fda Ingore sysusers and tmpfiles artifacts 2020-01-28 17:48:57 +02:00
Thirunarayanan Balathandayuthapani
a134ec3736 MDEV-21550 Assertion `!table->fts->in_queue' failed in fts_optimize_remove_table
Problem:
=======
  The problem is that InnoDB doesn't add the table in fts slots if drop table fails. InnoDB marks the table is in fts slots while processing sync message. So the consecutive alter statement assumes that table is in queue and tries to remove it. But InnoDB can't find the table in fts_slots.

Solution:
=========
  i)  Removal of in_queue in fts_t while processing the fts sync message.
  ii) Add the table to fts_slots when drop table fails.
2020-01-28 18:21:00 +05:30
Marko Mäkelä
a983b24407 Merge 10.4 into 10.5 2020-01-28 14:17:09 +02:00
Alexander Barkov
a915142f48 Fixing a compilation failure of Windows (introduced in MDEV-21581) 2020-01-28 15:29:05 +04:00
Oleksandr Byelkin
bc89105496 Merge branch 'bb-10.4-release' into 10.4 2020-01-28 09:42:21 +01:00
Alexander Barkov
f1e13fdc8d MDEV-21581 Helper functions and methods for CHARSET_INFO 2020-01-28 12:29:23 +04:00
Oleksandr Byelkin
dbbe9961a5 Merge branch 'bb-10.3-release' into 10.3 2020-01-28 09:28:18 +01:00
Oleksandr Byelkin
c5df6e1448 Merge branch 'bb-10.1-release' into 10.1 2020-01-28 09:23:53 +01:00
Daniel Bartholomew
1ef8d0b45d
bump the VERSION 2020-01-27 15:12:05 -05:00
Daniel Bartholomew
8b8d333d7f
bump the VERSION 2020-01-27 15:10:11 -05:00
Daniel Bartholomew
afc16a6faa
bump the VERSION 2020-01-27 15:08:36 -05:00
Daniel Bartholomew
a7d02e8d24
bump the VERSION 2020-01-27 15:06:54 -05:00
Daniel Bartholomew
585e32cf3a
bump the VERSION 2020-01-27 15:01:14 -05:00
Rasmus Johansson
dd68ba74f3
Changed Travis to 10.5
Changed Travis status to show status of branch 10.5 (it was still pointing to 10.4)
2020-01-27 10:37:32 +02:00
Elena Stepanova
ba6bfc402c List of unstable tests for 10.4.12 release 2020-01-26 22:39:52 +02:00
Elena Stepanova
0152704ae3 List of unstable tests for 10.3.22 release 2020-01-26 20:34:09 +02:00
Elena Stepanova
0a891ad6a6 List of unstable tests for 10.2.31 release 2020-01-26 18:40:22 +02:00
Sergei Petrunia
ee33c4a694 Post-merge fix 2020-01-26 11:47:16 +01:00
Elena Stepanova
84d4005bad List of unstable tests for 10.1.44 release 2020-01-25 23:50:41 +02:00
Oleksandr Byelkin
70815ed5b9 Merge branch '10.3' into 10.4 2020-01-25 16:10:48 +01:00
Oleksandr Byelkin
e10e922afd Merge branch 'MDEV-21383' into 10.3 2020-01-25 16:09:34 +01:00
Sergei Petrunia
7e8a58020b MDEV-21383: Possible range plan is not used under certain conditions
[Variant 2 of the fix: collect the attached conditions]

Problem:
make_join_select() has a section of code which starts with
 "We plan to scan all rows. Check again if we should use an index."

the code in that section will [unnecessarily] re-run the range
optimizer using this condition:

  condition_attached_to_current_table AND current_table's_ON_expr

Note that the original invocation of range optimizer in
make_join_statistics was done using the whole select's WHERE condition.
Taking the whole select's WHERE condition and using multiple-equalities
allowed the range optimizer to infer more range restrictions.

The fix:
- Do range optimization using a condition that is an AND of this table's
condition and all of the previous tables' conditions.
- Also, fix the range optimizer to prefer SEL_ARGs with type=KEY_RANGE
over SEL_ARGS with type=MAYBE_KEY, regardless of the key part.
Computing
key_and(
  SEL_ARG(type=MAYBE_KEY key_part=1),
  SEL_ARG(type=KEY_RANGE, key_part=2)
)
will now produce the SEL_ARG with type=KEY_RANGE.
2020-01-24 22:07:22 +03:00
Eugene Kosov
b534a6675c cleanup redo log
class log_file_t: more or less sane RAII wrapper around redo log file
descriptor and its path.

This change is motivated by the need of using that log_file_t somewhere else.
2020-01-24 23:27:38 +08:00
Oleksandr Byelkin
fdb9b05cbb fix tests 2020-01-24 15:38:25 +01:00
Oleksandr Byelkin
bfc24bb2ec Merge branch '10.3' into 10.4 2020-01-24 14:50:23 +01:00
Oleksandr Byelkin
2833e90619 fix perfschema.start_server_innodb test (related to MDEV-17571) 2020-01-24 14:34:07 +01:00
Oleksandr Byelkin
ceda5f724f Merge branch '10.2' into 10.3 2020-01-24 14:16:20 +01:00
Oleksandr Byelkin
f2ccfcaca1 Merge branch '10.1' into 10.2 2020-01-24 13:46:49 +01:00
Marko Mäkelä
ac3e3e12ad MDEV-21509: Work around occasional lost DEBUG_SYNC 2020-01-24 14:43:19 +02:00
Rafli Akmal
742c36d048 MDEV-15052: Allow sysusers and tmpfiles install for non-systemd users
..as they have their own tools that parses those files, such as
opensysusers[1] that handles sysusers file and opentmpfiles[2] that
handles tmpfiles.d settings

Because of this. Move both sysusers and tmpfiles 'if' function
outside systemd function, allowing independent install

Signed-off-by: Rafli Akmal <thefallenrat@artixlinux.org>

[1] - https://github.com/artix-linux/opensysusers
[2] - https://github.com/OpenRC/opentmpfiles

Changes done by vicentiu@mariadb.org, from original author patch:

Installing sysusers and tmpfiles without checking for systemd existence
means that by default, cmake will ALWAYS install these files. Our
general policy is we do not install things which are not needed.
However, there is a valid use case when these files are useful, as is
described above.

To allow this, provide an extra switch that can be enabled during
configuring by doing -DINSTALL_SYSTEMD_{SYSUSERS|TMPFILES}=True

This will use the default path INSTALL_SYSTEMD_{SYSUSERS|TMPFILES}DIR
fetched from install_layout.cmake for rpm & deb based layouts
respectively, or they must be overriden if the install_layout is
standalone.

Example:

cmake . -DINSTALL_SYSTEMD_SYSUSERS=True -DINSTALL_SYSTEMD_SYSUSERSDIR=/etc/sysusers.d
2020-01-24 14:07:19 +02:00
Christian Hesse
b472bc2eba MDEV-17028: Use descriptive file names for sysusers and tmpfiles configuration
These files were installed to:

${INSTALL_SYSTEMD_SYSUSERSDIR}/sysusers.conf
${INSTALL_SYSTEMD_TMPFILESDIR}/tmpfiles.conf

Instead rename the files to more descriptive file names 'mariadb.conf'.
2020-01-24 14:05:20 +02:00
Marko Mäkelä
6af00b2cc6 MDEV-16678: Ignore #sql-ib tables in --suite=parts
We missed these in commit 89633995e4
and commit ccd87d34a4.
2020-01-24 12:59:56 +02:00
Sujatha
599a06098b MDEV-21490: binlog tests fail with valgrind: Conditional jump or move depends on uninitialised value in sql_ex_info::init
Problem:
=======
P1) Conditional jump or move depends on uninitialised value(s)
    sql_ex_info::init(char const*, char const*, bool) (log_event.cc:3083)

code: All the following variables are not initialized.
----
  return ((cached_new_format != -1) ? cached_new_format :
    (cached_new_format=(field_term_len > 1 || enclosed_len > 1 ||
    line_term_len > 1 || line_start_len > 1 || escaped_len > 1)));

P2) Conditional jump or move depends on uninitialised value(s)
    Rows_log_event::Rows_log_event(char const*, unsigned
      int, Format_description_log_event const*) (log_event.cc:9571)

Code: Uninitialized values is reported for 'var_header_len' variable.
----
  if (var_header_len < 2 || event_len < static_cast<unsigned
      int>(var_header_len + (post_start - buf)))

P3) Conditional jump or move depends on uninitialised value(s)
    Table_map_log_event::pack_info(Protocol*) (log_event.cc:11553)

code:'m_table_id' is uninitialized.
----
  void Table_map_log_event::pack_info(Protocol *protocol)
  ...
  size_t bytes= my_snprintf(buf, sizeof(buf), "table_id: %lu (%s.%s)",
                              m_table_id, m_dbnam, m_tblnam);

Fix:
===
P1 - Fix)
Initialize cached_new_format,field_term_len, enclosed_len, line_term_len,
line_start_len, escaped_len members in default constructor.

P2 - Fix)
"var_header_len" is initialized by reading the event buffer. In case of an
invalid event the buffer will contain invalid data. Hence added a check to
validate the event data. If event_len is smaller than valid header length
return immediately.

P3 - Fix)
'm_table_id' within Table_map_log_event is initialized by reading data from
the event buffer. Use 'VALIDATE_BYTES_READ' macro to validate the current
state of the buffer. If it is invalid return immediately.
2020-01-24 13:35:03 +05:30
Sergei Golubchik
26a46444b4 don't run main.ssl_system_ca in --embedded
this test needs a *server* and tries to connect with $MYSQL to it
2020-01-23 23:26:01 +01:00
Alexey Botchkov
683a49889c MENT-464 ASAN MTR quick test - some failures to be investigated.
PCRE reports small frame size working with ASAN, so the test has to be ready
for the minimlas possible size.
2020-01-24 00:29:06 +04:00
Eugene Kosov
34dafb7e3a redo log mics fixes
os_file_flush_data_func(): fix builds on POSIX OSs where fdatasync()
is not avaiable

log_t::files::flush_data_only(): rename from fdatasync()

log_t::files::fsync(): removed and replaced with flush_data_only().
It will flush everything we need for using redo log files.
2020-01-23 22:46:43 +08:00
Marko Mäkelä
7aa443ca7d Remove an unused tokuvalgrind script
This is the only symlink in the repository. Symlinks can cause
trouble when using file systems or operating systems that do not
support them.

Also remove the unused file DartConfig.cmake that refers to the script.
2020-01-23 16:31:25 +02:00