maria:bb-10.5-19708

Last commit made on 2019-08-07
Get this branch:
git clone -b bb-10.5-19708 https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-10.5-19708
Repository:
lp:maria

Recent commits

9998744... by Sachin Setiya on 2019-08-07

Commit final

7197c40... by Sachin Setiya on 2019-08-07

try 3

29cded3... by Sachin Setiya on 2019-07-31

Commit try 1

0c69b8d... by Sachin Setiya on 2019-07-21

Finally able to compile and server does not crash

16a00eb... by Sachin Setiya on 2019-07-19

ABC

08e32aa... by Sachin Setiya on 2019-06-22

MDEV-19708 RBR replication looses data silently ignoring important column attributes

Cherry-pick the commits the mysql and some changes.
WL#4618 RBR: extended table metadata in the binary log

This patch extends Table Map Event. It appends some new fields for
more metadata. The new metadata includes:
- Signedness of Numberic Columns
- Character Set of Character Columns and Binary Columns
- Column Name
- String Value of SET Columns
- String Value of ENUM Columns
- Primary Key
- Geometry Type

Some of them are optional, the patch introduces a GLOBAL system
variable to control it. It is binlog_row_metadata.
- Scope: GLOBAL
- Dynamic: Yes
- Type: ENUM
- Values: {MINIMAL, FULL}
- Default: MINIMAL
  Only Signedness, character set and geometry type are logged if it is MINIMAL.
  Otherwise all of them are logged.

984d710... by Marko Mäkelä on 2019-06-13

Merge 10.4 into 10.5

d46db41... by Marko Mäkelä on 2019-06-12

MDEV-19738: Skip doublewrite on MLOG_ZIP_PAGE_COMPRESS

page_zip_compress(), page_zip_compress_write_log(),
page_zip_copy_recs(): Replace the parameters page,page_zip with block,
and set buf_page_t::init_on_flush on success
if innodb_log_optimize_ddl=OFF.

page_zip_parse_compress_no_data(): Merge with the only caller
recv_parse_or_apply_log_rec_body().

8bb4ea2... by Marko Mäkelä on 2019-06-12

MDEV-19738: Doublewrite buffer is unnecessarily used for newly (re)initialized pages

Thanks to MDEV-12699, the doublewrite buffer will only be needed in
those cases when a page is being updated in the data file. If the page
had never been written to the data file since it was initialized,
then recovery will be able to reconstruct the page based solely on
the contents of the redo log files.

The doublewrite buffer is only really needed when recovery needs to read
the page in order to apply redo log.

Note: As noted in MDEV-19739, we cannot safely disable the doublewrite
buffer if any MLOG_INDEX_LOAD records were written in the past or will
be written in the future. These records denote that redo logging was
disabled for some pages in a tablespace. Ideally, we would have
the setting innodb_log_optimize_ddl=OFF by default, and would not allow
it to be set while the server is running. If we wanted to make this
safe, assignments with SET GLOBAL innodb_log_optimize_ddl=...
should not only issue a redo log checkpoint (including a write of all
dirty pages from the entire buffer pool), but it should also wait for
all pending ALTER TABLE activity to complete. We elect not to do this.

Avoiding unnecessary use of the doublewrite buffer should improve the
write performance of InnoDB.

buf_page_t::init_on_flush: A new flag to indicate whether it is safe to
skip doublewrite buffering when writing the page.

fsp_init_file_page(): When writing a MLOG_INIT_FILE_PAGE2 record,
set the init_on_flush flag if innodb_log_optimize_ddl=OFF.
This is the only function that writes that log record.

buf_flush_write_block_low(): Skip doublewrite if init_on_flush is set.

fil_aio_wait(): Clear init_on_flush.

38018f4... by Marko Mäkelä on 2019-06-12

MDEV-19586: Remove unnecessary iteration

recv_apply_hashed_log_recs(): Refer directly to recs.last->end_lsn
instead of iterating the entire list starting from recs.log.