Commit graph

184375 commits

Author SHA1 Message Date
Vladislav Vaintroub
c4ec6bb69e "flush ssl" ASAN warnings with yassl
avoid calling SSL_get_verify_mode() and  SSL_get_verify_depth(),
since yassl implementation of the function accesses the acceptor context,
which can be freed on FLUSH SSL command.
2018-12-28 00:16:49 +01:00
Sergey Vojtovich
0ce7f6b0bf MDEV-17441 - InnoDB transition to C++11 atomics
purge_sys_t::m_enabled transition to std::atomic.

enabled_latched() doesn't make much sense: in this particular case it is
as fast as atomic load. The sole caller has to reload it's value anyway,
due to rw_lock_x_lock(&purge_sys.latch) issuing acquire memory barrier.

When purge_sys_t::close() is reached, m_enabled must be false, otherwise
we may free members, which are still in use by the coordinator thread.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
f401ba477c MDEV-17441 - InnoDB transition to C++11 atomics
purge_sys_t::m_paused transition to Atomic_counter.

paused_latched() doesn't make much sense: in this particular case it is
as fast as atomic load. The sole caller has to reload it's value anyway,
due to rw_lock_x_lock(&purge_sys.latch) issuing acquire memory barrier.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
5cc6b48f39 MDEV-17441 - InnoDB transition to C++11 atomics
onlineddl_rowlog_rows transition to Atomic_counter.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
4ef481f5bc MDEV-17441 - InnoDB transition to C++11 atomics
os_aio_validate_count transition to Atomic_counter.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
dbd40edfe6 MDEV-17441 - InnoDB transition to C++11 atomics
ibuf_t::n_merges transition to Atomic_counter.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
66ec8adb77 MDEV-17441 - InnoDB transition to C++11 atomics
dict_table_t::n_foreign_key_checks_running transition to
Atomic_counter.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
edde1f6e0d MDEV-17441 - InnoDB transition to C++11 atomics
trx_sys_t::rseg_history_len transition to Atomic_counter.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
de32e66336 MDEV-17441 - InnoDB transition to C++11 atomics
fil_space_t::redo_skipped_count transition to Atomic_counter.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
b1c3e6c2f2 MDEV-17441 - InnoDB transition to C++11 atomics
srv_conc_t.n_active and srv_conc_t.n_waiting transition to
Atomic_counter.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
d93653bf96 MDEV-17441 - InnoDB transition to C++11 atomics
btr_defragment_compression_failures, btr_defragment_failures and
btr_defragment_count transition to Atomic_counter.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
8c82ca171e MDEV-17441 - InnoDB transition to C++11 atomics
os_thread_count transition to Atomic_counter.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
e60dc209d4 MDEV-17441 - InnoDB transition to C++11 atomics
Almost trivial rw_lock_t::waiters transition. Since C++11 doesn't
seem to allow mixed (atomic and non-atomic) access to atomic variables,
we have to perform atomic initialisation.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
9581c4a8f5 MDEV-17441 - InnoDB transition to C++11 atomics
Almost trivial rw_lock_t::lock_word transition. Since C++11 doesn't
seem to allow mixed (atomic and non-atomic) access to atomic variables,
we have to perform atomic initialisation.

Also made previously broken code in gis0sea.cc even more broken. It is
unclear how it was supposed to work and what exactly it was supposed to
do.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
4404ee2901 MDEV-17441 - InnoDB transition to C++11 atomics
os_total_large_mem_allocated transition to Atomic_counter.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
dab38ce023 MDEV-17441 - InnoDB transition to C++11 atomics
Replaced simple_atomic_counter with Atomic_counter.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
e976c7dbf2 MDEV-17441 - InnoDB transition to C++11 atomics
Trivial buf_tmp_buffer_t::reserved transition.

Relaxed memory order looks suspicious when used by methods that have
acquire()/release() names. Especially if intention is to transfer some
variable or memory region from one thread to another. Or is memory
ordering guaranteed by something else, e.g. some mutex that protects
broader range of acquire/release functionality?
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
6a150e26d9 MDEV-17441 - InnoDB transition to C++11 atomics
Almost trivial TTASEventMutex::m_lock_word transition. Since C++11 doesn't
seem to allow mixed (atomic and non-atomic) access to atomic variables,
we have to perform all accesses atomically.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
601f45fdcd MDEV-17441 - InnoDB transition to C++11 atomics
Almost trivial TTASMutex::m_lock_word transition. Since C++11 doesn't
seem to allow mixed (atomic and non-atomic) access to atomic variables,
we have to perform all accesses atomically.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
2e5d35961d MDEV-17441 - InnoDB transition to C++11 atomics
dict_table_t::n_ref_count transition to Atomic_counter.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
5c657e9fa5 MDEV-17441 - InnoDB transition to C++11 atomics
Trivial srv_running transition.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
67dbfe6e9c MDEV-17441 - InnoDB transition to C++11 atomics
trx_t::n_ref transition to Atomic_counter.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
4abdd798f7 MDEV-17441 - InnoDB transition to C++11 atomics
rw_trx_hash_element_t::no transition to Atomic_counter. Since C++11
doesn't seem to allow mixed (atomic and non-atomic) access to atomic
variables, we have to perform atomic initialisation.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
8023fc6d45 MDEV-17441 - InnoDB transition to C++11 atomics
Almost trivial trx_sys_t::m_rw_trx_hash_version transition. Since C++11
doesn't seem to allow mixed (atomic and non-atomic) access to atomic
variables, we have to perform atomic initialisation.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
90377b8028 MDEV-17441 - InnoDB transition to C++11 atomics
trx_sys_t::m_max_trx_id transition to Atomic_counter. Since C++11 doesn't
seem to allow mixed (atomic and non-atomic) access to atomic variables,
we have to perform atomic initialisation.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
03e461634d MDEV-17441 - InnoDB transition to C++11 atomics
fil_validate_count transition to Atomic_counter.
2018-12-27 22:46:38 +04:00
Sergey Vojtovich
ca83115b3e MDEV-17441 - InnoDB transition to C++11 atomics
Added Atomic_counter class to replace big set of atomic operations uses
in InnoDB, as well as in the server.
2018-12-27 22:46:38 +04:00
Marko Mäkelä
88b7b8199a MDEV-18076/MDEV-18077 Crash on AUTO_INCREMENT column after instant DROP
The fix for MDEV-17901 did not cover cases where the AUTO_INCREMENT
column was not dropped, but some other columns before it were.

commit_cache_norebuild(): Revert the MDEV-17901 fix.

dict_index_t::clear_instant_alter(): Update table->persistent_autoinc.
2018-12-27 16:31:27 +02:00
Marko Mäkelä
003720755f MDEV-18033/MDEV-18034: Assertion failed on NOT NULL removal
innobase_instant_try(): Only try to update the hidden metadata
record if the number of columns is changing (increasing) or
a metadata BLOB is being added due to permuting or dropping columns
for the first time.

dict_table_t::instant_column(), ha_innobase_inplace_ctx::instant_column():
Return whether the metadata record needs to be updated.
2018-12-27 16:31:27 +02:00
Teodor Mircea Ionita
3b5e8d799a travis: Fix ccache not used on macOS targets 2018-12-27 14:07:55 +00:00
Alexander Barkov
f409eb4d36 MDEV-17959 Assertion `opt_bootstrap || mysql_parse_status || thd->lex->select_stack_top == 0' failed in parse_sql upon DELETE HISTORY under ORACLE mode 2018-12-27 10:32:33 +04:00
Teodor Mircea Ionita
829fce9ea6 travis: upgrade Ubuntu target dist to 16.04 Xenial
Ubuntu 14.04 Trusty is LTS until April 2019 and since we are
approaching that, upgrade to Xenial which is LTS until April 2021.

One bonus of this upgrade is that the Travis Xenial virtual images
have a much bigger disk size, thus no need to limit ccache below
the default of 5G anymore.

Also had to remove linux/clang-8 toolchain testing since
llvm-toolchain-xenial is not listed at:
https://github.com/travis-ci/apt-source-safelist/blob/master/ubuntu.json

And fails with:
Disallowing sources: llvm-toolchain-xenial
...
E: Unable to locate package clang-8
E: Unable to locate package llvm-8-dev
2018-12-26 16:26:36 +00:00
Shinnok
838c196f26
Merge pull request #937 from grooverdan/10.4-travis
10.4 travis - newer compilers, ignore common clang warnings
2018-12-25 11:39:13 +00:00
Alexander Barkov
ca619ed123 MDEV-18072 Assertion `is_null() == item->null_value || conv' failed in Timestamp_or_zero_datetime_native_null::Timestamp_or_zero_datetime_native_null upon query with GROUP BY 2018-12-25 10:23:20 +04:00
Alexander Barkov
7d7df70c11 MDEV-18070 Assertion `nanoseconds <= 1000000000' failed in Temporal::add_nanoseconds_ssff with TIME_ROUND_FRACTIONAL
The previous patch was erroneously marked as MDEV-18072.
It was actualy for MDEV-18070.
2018-12-25 08:31:09 +04:00
Alexander Barkov
b316989223 MDEV-18072 Assertion `is_null() == item->null_value || conv' failed in Timestamp_or_zero_datetime_native_null::Timestamp_or_zero_datetime_native_null upon query with GROUP BY 2018-12-25 08:27:07 +04:00
Marko Mäkelä
a8eb0c76bf MDEV-18048: Relax a too strict debug assertion
This assertion should have been relaxed when implementing the first part of
MDEV-15563: instant removal of NOT NULL attribute for ROW_FORMAT=REDUNDANT
tables.

For ROW_FORMAT=REDUNDANT, there is no bitmap of null columns;
the null flags are encoded in the end offset of each field.
We do not really care about the number of fields that can be NULL.
2018-12-21 17:43:01 +02:00
Marko Mäkelä
ccb1acbd3c MDEV-18035 Failing assertion on DELETE
instant_alter_column_possible(): Do not allow instant removal of NOT NULL
attribute from a column that belongs to the key of the clustered index.
2018-12-21 17:43:01 +02:00
Marko Mäkelä
2fe40a7af0 MDEV-18009 Missing redo log flush in innodb.instant_alter_crash
Ensure that the 'auxiliary transactions' that are there for
flushing the incomplete undo log of the to-be-recovered DDL
transactions are actually making modifications.
2018-12-20 18:18:21 +02:00
Daniel Bartholomew
505f283189 bump the VERSION 2018-12-20 11:07:40 -05:00
Oleksandr Byelkin
30641f9df7 Fix of maturity status 2018-12-18 16:38:08 +01:00
Marko Mäkelä
1b3770acda Merge 10.3 into 10.4 2018-12-18 11:53:31 +02:00
Marko Mäkelä
75e7e0b90f Merge 10.2 into 10.3 2018-12-18 11:51:44 +02:00
Marko Mäkelä
b5763ecd01 Merge 10.3 into 10.4 2018-12-18 11:33:53 +02:00
Marko Mäkelä
0032170940 Merge 10.1 into 10.2 2018-12-18 10:01:15 +02:00
Marko Mäkelä
84f119f25c MDEV-12112/MDEV-12114: Relax strict_innodb, strict_none
Starting with commit 6b6987154a
the encrypted page checksum is only computed with crc32.
Encrypted data pages that were written earlier can contain
other checksums, but new ones will only contain crc32.

Because of this, it does not make sense to implement strict
checks of innodb_checksum_algorithm for other than strict_crc32.

fil_space_verify_crypt_checksum(): Treat strict_innodb as innodb
and strict_none as none. That is, allow a match from any of the
algorithms none, innodb, crc32. (This is how it worked before the
second MDEV-12112 fix.)

Thanks to Thirunarayanan Balathandayuthapani for pointing this out.
2018-12-18 09:52:28 +02:00
Jan Lindström
af9731071d
Merge pull request #1031 from tempesta-tech/sysprg/MDEV-17786
DEV-17786: Add mariabackup test case for galera_sst_xtrabackup-v2_data_dir
2018-12-18 09:44:49 +02:00
Marko Mäkelä
45531949ae Merge 10.2 into 10.3 2018-12-18 09:15:41 +02:00
Marko Mäkelä
ed13a0d221 MDEV-12112: Support WITH_INNODB_BUG_ENDIAN_CRC32
fil_space_verify_crypt_checksum(): Compute the bug-compatible variant
of the CRC-32C checksum if the correct one does not match.
2018-12-17 22:45:21 +02:00
Marko Mäkelä
fae7e350a8 Merge 10.1 into 10.2 2018-12-17 22:35:32 +02:00