maria:bb-10-ext-mdev-13369

Last commit made on 2017-08-10
Get this branch:
git clone -b bb-10-ext-mdev-13369 https://git.launchpad.net/maria

Branch merges

Branch information

Name:
bb-10-ext-mdev-13369
Repository:
lp:maria

Recent commits

5a71e6b... by Igor Babaev on 2017-08-10

Merge branch 'bb-10.2-ext' into bb-10-ext-mdev-13369

# Conflicts:
# mysql-test/r/derived_cond_pushdown.result
# mysql-test/t/derived_cond_pushdown.test
# sql/sql_derived.cc
# sql/sql_select.cc
# sql/sql_select.h

bf75dca... by Igor Babaev on 2017-08-10

This is a modification of the first patch committed for mdev-13369
developed to cover the case of mdev-13389: "Optimization for equi-joins
of derived tables with window functions".

b14e2b0... by Igor Babaev on 2017-08-04

This first patch prepared for the task MDEV-13369:
"Optimization for equi-joins of derived tables with GROUP BY"
should be considered rather as a 'proof of concept'.

The task itself is targeted at an optimization that employs re-writing
equi-joins with grouping derived tables / views into lateral
derived tables. Here's an example of such transformation:
  select t1.a,t.max,t.min
  from t1 [left] join
       (select a, max(t2.b) max, min(t2.b) min from t2
       group by t2.a) as t
       on t1.a=t.a;
=>
  select t1.a,tl.max,tl.min
  from t1 [left] join
       lateral (select a, max(t2.b) max, min(t2.b) min from t2
                where t1.a=t2.a) as t
       on 1=1;
The transformation pushes the equi-join condition t1.a=t.a into the
derived table making it dependent on table t1. It means that for
every row from t1 a new derived table must be filled out. However
the size of any of these derived tables is just a fraction of the
original derived table t. One could say that transformation 'splits'
the rows used for the GROUP BY operation into separate groups
performing aggregation for a group only in the case when there is
a match for the current row of t1.
Apparently the transformation may produce a query with a better
performance only in the case when
 - the GROUP BY list refers only to fields returned by the derived table
 - there is an index I on one of the tables T used in FROM list of
   the specification of the derived table whose prefix covers the
   the fields from the proper beginning of the GROUP BY list or
   fields that are equal to those fields.
Whether the result of the re-writing can be executed faster depends
on many factors:
  - the size of the original derived table
  - the size of the table T
  - whether the index I is clustering for table T
  - whether the index I fully covers the GROUP BY list.

This patch only tries to improve the chosen execution plan using
this transformation. It tries to do it only when the chosen
plan reaches the derived table by a key whose prefix covers
all the fields of the derived table produced by the fields of
the table T from the GROUP BY list.
The code of the patch does not evaluates the cost of the improved
plan. If certain conditions are met the transformation is applied.

6685cdc... by Marko Mäkelä on 2017-08-09

Temporarily record wrong result for the MDEV-12604 JSON_EXTRACT test

0930d66... by Marko Mäkelä on 2017-08-09

Merge 10.2 into bb-10.2-ext

6b14fd6... by Sergey Petrunia on 2017-08-09

A followup to MDEV-13470: remove the code that is now useless

d0c66c8... by Marko Mäkelä on 2017-08-09

Fix a random result mismatch of encryption.innodb_encrypt_log

Disable change buffering, so that some data that was previously
written to the encrypted redo log will not end up being copied
to the unencrypted redo log due to change buffer merge.

c720e68... by Marko Mäkelä on 2017-08-08

MDEV-13472 rpl.rpl_semi_sync_wait_point crashes because of thd_destructor_proxy

The thd_destructor_proxy detects that no transactions are active and
starts srv_shutdown_bg_undo_sources(), but fails to take into account
that new transactions can still start, especially be slave but also
by other threads. In addition there is no mutex when checking for
active transaction so this is not safe.

We relax the failing InnoDB debug assertion by allowing the execution
of user transactions after the purge thread has been shut down.

FIXME: If innodb_fast_shutdown=0, we should somehow guarantee that no
new transactions can start after thd_destructor_proxy observed that
trx_sys_any_active_transactions() did not hold.

ffa3789... by Marko Mäkelä on 2017-08-08

Follow-up to MDEV-11487: Remove InnoDB internal temporary tables

row_update_for_mysql(): Remove the wrapper function and
rename the function from row_update_for_mysql_using_upd_graph().
Remove the unused parameter mysql_rec.

c3f9fde... by Marko Mäkelä on 2017-08-08

Add DBUG "trx" instrumentation that was used for catching MDEV-13470