maria:bb-10.8-MDEV-25719

Last commit made on 2022-01-17
Get this branch:
git clone -b bb-10.8-MDEV-25719 https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-10.8-MDEV-25719
Repository:
lp:maria

Recent commits

f86e1fd... by Marko Mäkelä

MDEV-27519 2-argument CRC32 call upon Columnstore table returns a wrong value

6e615c6... by Sergei Golubchik

make crc32() behave consistently with other functions that take an INT

5879996... by Marko Mäkelä

squash! 3d04e67d6fe799069f4bbadc06c376dc24d428c8

MDEV-27480 2-argument versions of CRC32 and CRC32C don't validate
the first argument beyond being numeric

uint32_truncate_warning(): Issue ER_DATA_TRUNCATED warning
for an integer that does not fit in INT UNSIGNED.

ca27e8b... by Marko Mäkelä

squash! 3d04e67d6fe799069f4bbadc06c376dc24d428c8

MDEV-27482 2-argument CRC32 and CRC32C don't work in
virtual column expressions

Virtual columns assume that the arguments are being passed
to the Item_func constructor in the original order.

3d04e67... by Marko Mäkelä

MDEV-27208: Extend CRC32() and implement CRC32C()

We used to define a native unary function crc32() that computes the CRC-32
of a string using the ISO 3309 polynomial that is being used by zlib
and many others.

Often, CRC is computed in pieces. To faciliate this, we introduce a
2-ary variant of the function that inputs a previous CRC as the first
argument: CRC32('MariaDB')=CRC32(CRC32('Maria'),'DB').

InnoDB and MyRocks use a different polynomial, which was implemented
in SSE4.2 instructions that were introduced in the
Intel Nehalem microarchitecture. This is commonly called CRC-32C
(Castagnoli).

We introduce a native function that uses the Castagnoli polynomial:
CRC32C('MariaDB')=CRC32C(CRC32C('Maria'),'DB'). This allows
SELECT...INTO DUMPFILE to be used for the creation of files with
valid checksums, such as a logically empty InnoDB redo log file
ib_logfile0 corresponding to a particular log sequence number.

bc90f5d... by Alexander Barkov

MDEV-23570 deprecate keep_files_on_create

ebc6494... by Rucha Deodhar <email address hidden>

MDEV-26238: Remove inconsistent behaviour of --default-* options
in my_print_defaults

Analysis: --defaults* option is recognized anywhere in the commandline
instead of only at the beginning because handle_options() recognizes
options in any order.
Fix: use get_defaults_options() which recognizes --defaults* options only at
the beginning. After this is done, we only want to recognize other options
given in any order which can be done using handle_options(). So only skip
--defaults* options and pass rest of them to handle_options().
Also, removed -e, -g and -c because only my_print_defaults supports them.

ffeaf42... by Alexander Barkov

MDEV-27265 Improve contraction performance in UCA collations

Adding a hash table for contractions.

The old code iterated through all items in MY_CONTRACTIONS,
and was much slower, especially for those contractions
in the end of the list.

a1fb943... by Alexander Barkov

MDEV-27266 Improve UCA collation performance for utf8mb3 and utf8mb4

Adding two levels of optimization:

1. For every bytes pair [00..FF][00..FF] which:
  a. consists of two ASCII characters or makes a well-formed two-byte character
  b. whose total weight string fits into 4 weights
     (concatenated weight string in case of two ASCII characters,
     or a single weight string in case of a two-byte character)
  c. whose weight is context independent (i.e. does not depend on contractions
     or previous context pairs)
  store weights in a separate array of MY_UCA_2BYTES_ITEM,
  so during scanner_next() we can scan two bytes at a time.
  Byte pairs that do not match the conditions a-c are marked in this array
  as not applicable for optimization and scanned as before.

2. For every byte pair which is applicable for optimization in #1,
   and which produces only one or two weights, store
   weights in one more array of MY_UCA_WEIGHT2. So in the beginning
   of strnncoll*() we can skip equal prefixes using an even more efficient
   loop. This loop consumes two bytes at a time. The loop scans while the
   two bytes on both sides produce weight strings of equal length
   (i.e. one weight on both sides, or two weight on both sides).
   This allows to compare efficiently:
   - Context independent sequences consisting of two ASCII characters
   - Context independent 2-byte characters
   - Contractions consisting of two ASCII characters, e.g. Czech "ch".
   - Some tricky cases: "ss" vs "SHARP S"
     ("ss" produces two weights, 0xC39F also produces two weights)

6208228... by Sergei Golubchik

disable galera_3nodes.galera_ipv6_mariabackup

and galera_3nodes.galera_ipv6_mariabackup_section
until their corresponding MDEV's are fixed.

They fail almost everywhere.