maria:bb-10.3-MDEV-14500

Last commit made on 2018-02-20
Get this branch:
git clone -b bb-10.3-MDEV-14500 https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-10.3-MDEV-14500
Repository:
lp:maria

Recent commits

884b83e... by Jacob Mathew

MDEV-14500: Support engines without rnd_pos() and
            engines with inefficient rnd_pos()

Some engines have not implemented rnd_pos(). There are other engines whose
implementation of rnd_pos() is inherently inefficient. Spider is such an
engine, whose implementation of rnd_pos() needs to access a table on a remote
data node to retrieve a single table row.

To address these limitations, a new temporary table has been added to filesort.
When filesort sequentially reads the table being sorted, each row is written to
the filesort temp table in addition to being copied to the sort buffer.
Subsequent calls to rnd_pos() will then access the table row in the filesort
temp table instead of in the table being sorted.

The following logic changes incorporate the new filesort temp table into the
server:
- A new handler method to determine whether a call to the engine's
  rnd_pos() is expensive. The default return value is FALSE. Engines without
  rnd_pos() or with an inefficient rnd_pos() should return TRUE.
- Create the filesort temp table only if:
  - There are no add-on columns for filesort; and
  - The engine's implementation of rnd_pos() is expensive.
- Write to the temp table each row that is read from the table being sorted.
- Do subsequent row retrievals that use rnd_pos() on the temp table instead of
  on the table being sorted. Upon retrieving a row from the temp table, copy
  its column values to the record of the table being sorted.
- Upon completion of retrieval of the sorted result rows, delete the filesort
  temp table and free the memory allocated for using it.

The logic changes are in the following areas:
- Table handler.
- Partition engine.
- Spider engine.
- Filesort.
- Read record manager.

Note that these changes only address the use of rnd_pos() by filesort. They do
not address the use of rnd_pos() in other areas such as:
- Quick select.
- Insert.
- Update.
- Window functions.
- Multi Range Read.

Author:
  Jacob Mathew.

Reviewer:
  Sergei Golubchik.

d23fcc4... by Alexey Botchkov

MDEV-14593 human-readable XA RECOVER.

        sql_yacc_ora.yy fixed.

5521994... by Marko Mäkelä

Pull request #614: various small code changes

2ba487c... by Marko Mäkelä

Merge bb-10.2-ext into 10.3

ef3147b... by Monty <email address hidden>

Fix for MDEV-15105 (memory loss with LOCK sequence)

MDEV 15105 "Bytes lost and Assertion `global_status_var.global_memory_used == 0' fails on shutdown after attempts
to LOCK/RENAME sequence"

06ba07c... by Monty <email address hidden>

Test case for MDEV-12887 (bug fixed long ago)

MDEV-12887 UT_LIST_GET_LEN(trx->lock.trx_locks) == 0 when mysqldump
sequence

278c036... by Marko Mäkelä

Merge 10.2 into bb-10.2-ext

112cb56... by Marko Mäkelä

Add suppressions for background page read errors

3c419fd... by Marko Mäkelä

Cleanup after commit ac8e3c85a40467de0ffc908dd9c5214acf23b38a

srv_conc_t::n_active: Correct the comment, and remove an
assertion that trivially holds now that the type is unsigned.

acab33a... by Vladislav Vaintroub

Merge branch '10.2-backup-fixes' into 10.2