maria:10.4-MDEV-17805

Last commit made on 2019-02-20
Get this branch:
git clone -b 10.4-MDEV-17805 https://git.launchpad.net/maria

Branch merges

Branch information

Name:
10.4-MDEV-17805
Repository:
lp:maria

Recent commits

9f1d752... by Marko Mäkelä

WIP MDEV-17805: Remove InnoDB cache for temporary tables

The intention is to link dict_table_t to TABLE_SHARE.

FIXME: Implement ha_innobase::delete_table() for temporary tables.
FIXME: Implement rollback of ha_innobase::create() for temporary tables.

FIXME: Currently, DBUG_ASSERT(s) fails in ha_innobase::open() because
we fail to pass the InnoDB_share from ha_innobase::create().
This seems to happen for any ALTER TABLE that uses ALGORITHM=COPY

(Old note from December, maybe not true any more:)
An assignment to TABLE_SHARE::ha_share would not work either, because
create() and open() will use different TABLE_SHARE.

662a837... by Marko Mäkelä

Merge 10.4 into HEAD

4932aba... by Marko Mäkelä

MDEV-18649 Assertion supremum[7] == index.n_core_null_bytes failed

This is follow-up to 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.

539a165... by Marko Mäkelä

MDEV-12026: Fix type mismatch

Revert the type casts of 58e525e4f3f65f77321b7978cc3b5df8363e0ebf.

58e525e... by Vladislav Vaintroub

Fix Windows warning/error after c0f47a4a58424c621204dacb8016a94b66cb2bce

c0f47a4... by THIRUNARAYANAN BALATHANDAYUTHAPANI

MDEV-12026: Implement innodb_checksum_algorithm=full_crc32

MariaDB data-at-rest encryption (innodb_encrypt_tables)
had repurposed the same unused data field that was repurposed
in MySQL 5.7 (and MariaDB 10.2) for the Split Sequence Number (SSN)
field of SPATIAL INDEX. Because of this, MariaDB was unable to
support encryption on SPATIAL INDEX pages.

Furthermore, InnoDB page checksums skipped some bytes, and there
are multiple variations and checksum algorithms. By default,
InnoDB accepts all variations of all algorithms that ever existed.
This unnecessarily weakens the page checksums.

We hereby introduce two more innodb_checksum_algorithm variants
(full_crc32, strict_full_crc32) that are special in a way:
When either setting is active, newly created data files will
carry a flag (fil_space_t::full_crc32()) that indicates that
all pages of the file will use a full CRC-32C checksum over the
entire page contents (excluding the bytes where the checksum
is stored, at the very end of the page). Such files will always
use that checksum, no matter what the parameter
innodb_checksum_algorithm is assigned to.

For old files, the old checksum algorithms will continue to be
used. The value strict_full_crc32 will be equivalent to strict_crc32
and the value full_crc32 will be equivalent to crc32.

ROW_FORMAT=COMPRESSED tables will only use the old format.
These tables do not support new features, such as larger
innodb_page_size or instant ADD/DROP COLUMN. They may be
deprecated in the future. We do not want an unnecessary
file format change for them.

The new full_crc32() format also cleans up the MariaDB tablespace
flags. We will reserve flags to store the page_compressed
compression algorithm, and to store the compressed payload length,
so that checksum can be computed over the compressed (and
possibly encrypted) stream and can be validated without
decrypting or decompressing the page.

In the full_crc32 format, there no longer are separate before-encryption
and after-encryption checksums for pages. The single checksum is
computed on the page contents that is written to the file.

We do not make the new algorithm the default for two reasons.
First, MariaDB 10.4.2 was a beta release, and the default values
of parameters should not change after beta. Second, we did not
yet implement the full_crc32 format for page_compressed pages.
This will be fixed in MDEV-18644.

This is joint work with Marko Mäkelä.

93984ff... by Alexander Barkov

Fixing compilation problems with this DBUG_ASSERT_AS_PRINTF

For example, with this cmake command line:

cmake . -DCMAKE_C_FLAGS="-DDBUG_ASSERT_AS_PRINTF" \
        -DCMAKE_CXX_FLAGS="-DDBUG_ASSERT_AS_PRINTF"

abd3c20... by Sergey Vojtovich

Fixed build failure

Apparently DBUG_ASSERT() can co-exist with DBUG_OFF when
-DCMAKE_CXX_FLAGS="-DDBUG_ASSERT_AS_PRINTF".

Removed assertion as it is useless now, since the type is unsigned.

7ae685d... by Teemu Ollakka <email address hidden>

Fixed replaying bugs found with multimaster load

The replayer did not signal replaying waiters. Added
mysql_cond_broadcast() after replaying is over.

Assertion on client error failed after replay attempt failed due
to certification failure. At this point the transaction does not
go through client state, so the client error cannot be overridden.
Assign ER_LOCK_DEADLOCK to thd directly instead.

Use timed cond wait when waiting for replayers to finish and
check if the transaction has been BF aborted during the wait.

48554fe... by Jan Lindström

MDEV-18632: wsrep_is_wsrep_xid: Conditional jump or move depends on uninitialised value

Transaction XID is not initialized before transaction is started.