maria:bb-10.4-MDEV-18726

Last commit made on 2019-03-15
Get this branch:
git clone -b bb-10.4-MDEV-18726 https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-10.4-MDEV-18726
Repository:
lp:maria

Recent commits

1cdddce... by Marko Mäkelä on 2019-03-15

Merge branch '10.4-MDEV-18726-large-page-overallocate' of https://github.com/grooverdan/mariadb-server into HEAD

2e34a03... by sachin on 2019-03-15

MDEV-18809 Server crash in fields_in_hash_keyinfo or Assertion `key_info->key_part->field->flags & (1<< 30)' failed in setup_keyinfo_hash

Move calling setup_keyinfo_hash until all continue is exhausted.
And also call re_setup_keyinfo_hash for goto err.

ecf0730... by Daniele Sciascia <email address hidden> on 2019-03-15

MDEV-18915 Re-record MTR test galera.galera_many_rows (#1228)

d27aa35... by Jan Lindström on 2019-03-15

Disable mysql-wsrep#198

050280c... by sachin on 2019-03-15

MDEV-18922 Alter on long unique varchar column makes result null

Don't add long key into share->keys_for_keyread

1ef50a3... by Teemu Ollakka <email address hidden> on 2019-03-15

10.4 wsrep group commit fixes (#1224)

* MDEV-16509 Improve wsrep commit performance with binlog disabled

Release commit order critical section early after trx_commit_low() if
binlog is not transaction coordinator. In order to avoid two phase commit,
binlog_hton is not registered for THD during IO_CACHE population.

Implemented a test which verifies that the transactions release
commit order early.

This optimization will change behavior during recovery as the commit
is not two phase when binlog is off. Fixed and recorded wsrep-recover-v25
and wsrep-recover to match the behavior.

* MDEV-18730 Ordering for wsrep binlog group commit

Previously out of order execution was allowed for wsrep commits.
Established proper ordering by populating wait_for_commit
for every wsrep THD and making group commit leader to wait for
prior commits before proceeding to trx_group_commit_leader().

* MDEV-18730 Added a test case to verify correct commit ordering

* MDEV-16509, MDEV-18730 Review fixes

Use WSREP_EMULATE_BINLOG() macro to decide if the binlog_hton
should be registered. Whitespace/syntax fixes and cleanups.

* MDEV-16509 Require binlog for galera_var_innodb_disallow_writes test

If the commit to InnoDB is done in one phase, the native InnoDB behavior
is that the transaction is committed in memory before it is persisted to
disk. This means that the innodb_disallow_writes=ON may not prevent
transaction to become visible to other readers before commit is completely
over. On the other hand, if the commit is two phase (as it is with binlog),
the transaction will be blocked in prepare phase.

Fixed the test to use binlog, which enforces two phase commit, which
in turn makes commit to block before the changes become visible to
other connections. This guarantees that the test produces expected
result.

b234f81... by Igor Babaev on 2019-03-15

MDEV-18640 TABLE::prune_range_rowid_filters: Conditional jump or move
           depends on uninitialized value

This problem most probably was resolved by the patch for MDEV-18816.
This commit adds only the test case from the bug entry.

938889a... by Daniel Black on 2019-02-27

MDEV-18726: innodb buffer pool size not consistent with large pages

Rather than add a small extra amount on the size of chunks, keep it
of the specified size. The rest of the chunk initialization code
adapts to this small size reduction. This has been made in the general
case, not just large pages, to keep it simple.

The chunks size is controlled by innodb-buffer-pool-chunk-size. In the
code increasing this by a descriptor table size length makes it
difficult with large pages. With innodb-buffer-pool-chunk-size set to 2M
the code before this commit would of added a small amount extra to this
value when it tried to allocate this. While not normally a problem it is
with large pages, it now requires addition space, a whole extra large
page. With a number of pools, or with 1G or 16G large pages this is
quite significant.

By removing this additional amount, DBAs can set
innodb-buffer-pool-chunk size to the large page size, or a multiple of
it, and actually get that amount allocated. Previously they had to fudge
a value less.

The innodb.test results show how this is fudged over a number of tests. With
this change the values are just between 488 and 500 depending on architecture
and build options.

Tested with --large-pages --innodb-buffer-pool-size=256M
--innodb-buffer-pool-chunk-size=2M on x86_64 with 2M default large page
size. Breaking before buf_pool init, one large page was allocated in
MyISAM, by the end of the function 128 huge pages where allocated as
expected. A further 16 pages where allocated for a 32M log buffer and
during startup 1 page was allocated briefly to the redo log.

e3ebeeb... by Andrei Elkin <email address hidden> on 2019-03-14

MDEV-18450 followup: fixing rpl_shutdown_wait. The test
appeared to leave warning due to expectable full exit of IO threads.
Fixed to ignore warnings at the final START SLAVEs.

e012d26... by Marko Mäkelä on 2019-03-14

row_undo(): Do not return an undefined value

Note: any error from row_undo() will lead to the server being
killed by InnoDB.