| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
and join_tab->cache_select->cond for blocked joins.
BNL and BNLH joins pre-filter the records from a joined table via JOIN_TAB::cache_select->cond.
There is no need to re-evaluate the same conditions via JOIN_TAB::select_cond. This patch removes
the duplicated conditions from the top-level conjuncts of each pushed condition.
The added "Using where" in few EXPLAINs is due to taking into account tab->cache_select->cond
in addition to tab->select_cond in JOIN::save_explain_data_intern.
|
|\ |
|
| |\ |
|
| | |\ |
|
| | | |\ |
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
depends on uninitialised value(s) in JOIN::save_explain_data_intern"
- Make find_best() /* the old join optimizer code */ also use table
condition selectivity.
|
|\ \ \ \ \
| |/ / / / |
|
| |\ \ \ \
| | |/ / / |
|
| | |\ \ \
| | | |/ / |
|
| | | |\ \
| | | | |/ |
|
| | |\ \ \
| | | | |/
| | | |/| |
|
| | | | | |
|
|\ \ \ \ \
| |/ / / / |
|
| |\ \ \ \
| | |/ / / |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
MDEV-5034:Wrong result on LEFT JOIN with a SELECT SQ or a merge view, UNION in IN subquery
Make reset null_row same as it was set in evaluate_null_complemented_join_record().
The problem was that view firlds detect null_row by not-yet-reset table.
|
|\ \ \ \ \
| |/ / / / |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
(and in HOST_STATISTICS)
fix for SP & PS
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
(and in HOST_STATISTICS)
Added collection statistics for queries resolved via query cache.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Local variable table_name_buffer went out of scope while
its content was still being used by a String instance.
Moved the variable to the function scope.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
binlog.binlog_base64_flag:
- It turns out, there are statements that will call lex_start(thd->lex)
after parsing has been finished. lex_start() will set lex->explain=NULL,
which will lose the pointer to already allocated Explain_plan object.
- To get rid of this, switch to lazy creation of lex->explain. Now, it is
created only when we get a part ot query plan.
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
- MYSQL_MULTI_DELETE_DONE probe compile failure
- show_explain_non_select.test
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
- When showing EXPLAIN output in the slow query log,
format it so that one could use grep or other tool
to get the output.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
- Save the query plan after the statement was executed so that its gets into
the slow query log.
|
|\ \ \ \ \
| | | | | |
| | | | | |
| | | | | | |
- Merge with 10.0-base
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- Port grant_explain_non_select.{test,result} from mysql-5.6
- Per Sanja's hint, fix mysql_make_view() to take into
account that EXPLAIN now is not necessarily EXPLAIN SELECT.
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- Fix a problem with EXPLAIN multi_table UPDATE:
= Do use multi_update object, because multi_update::prepare() does
various setup, e.g. it disables index-only for the tables to be updated.
= Protect multi_update::prepare() from being invoked multiple times.
If the query has subqueries, they may try to invoke it, for some reason.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- eliminate join_save_qpf() function.
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Update the SHOW EXPLAIN code to work with the
new architecture (part#1):
Before, SHOW EXPLAIN operated on real query plan structures,
which meant it had to check when SELECTs are created/deleted.
SELECTs would call apc_target->enable() when they got a query
plan and disable() when their query plan was deleted.
Now, Explain data structure becomes available at once (and we
call apc_target->enable()) and then it stays until it is deleted
(when that happens, we call apc_target->disable()).
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- Fix EXPLAIN INSERT DELAYED ... : do call end_delayed_insert().
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- When INSERT catches an error, it should not attempt to send parts of
EXPLAIN output.
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- Don't save UNION's EXPLAIN data if optimization failed with
an error. We could end up saving incomplete plan, which will
cause a crash when we attempt to print it.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Backport mysql-test/t/myisam_explain_non_select_all.test from mysql-5.6
- the .result file was modified because MariaDB choses different
query plans in a number cases. Also, we don't have some of the
"incorrect EXPLAIN output" bugs that they still have.
The .test file and includes were taken verbatim with one
exception: two tests were disabled with --disable parsing:
1. @@sql_safe_updates is not enforced EXPLAINs of multitable
updates. In MariaDB, the execution itself will produce
ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE, but EXPLAIN won't.
2. Their case #71 hits some old bug in MyISAM (See their comments
in explain_non_select.inc for details).
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- Produce correct `key_len` when type=index.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- Produce correct #rows for ORDER BY ... LIMIT N queries that take advantage of
ordered index read to read only N rows.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- Generate correct contents of `Extra` column for UPDATEs/DELETEs that use quick selects
- UPDATEs with used_key_is_modified=true will show "Using buffer"
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- Update test results after last few csets
- Generate correct value for `possible_keys` column for single table UPDATE/DELETE.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- if EXPLAIN DELETE prints "Deleting all rows", it should show the
expected number of rows in the rows column.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- Add support for EXPLAIN INSERT.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- Better EXPLAIN-saving methods for quick selects
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- Run probes like MYSQL_INSERT_SELECT_START or
MYSQL_MULTI_DELETE_START for EXPLAIN, too.
We should run them, because 1. EXPLAIN SELECT does it, and
2. MySQL also does it.
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- Handle the case when EXPLAIN UPDATE/DELETE has pruned away all partitions.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
- Address review feedback: more renames
|