- 10 Jun, 2012 2 commits
-
-
Sergey Petrunya authored
-
Sergey Petrunya authored
- Add the VIA_SYM token into keyword_sp list, which makes it allowed for use as keyword and SP label.
-
- 05 Jun, 2012 1 commit
-
-
unknown authored
Analysis: When the method JOIN::choose_subquery_plan() decided to apply the IN-TO-EXISTS strategy, it set the unit and select_lex uncacheable flag to UNCACHEABLE_DEPENDENT_INJECTED unconditionally. As result, even if IN-TO-EXISTS injected non-correlated predicates, the subquery was still treated as correlated. Solution: Set the subquery as correlated only if the injected predicate(s) depend on the outer query.
-
- 04 Jun, 2012 1 commit
-
-
Sergei Golubchik authored
remove the offending assert. take the test case from mysql Bug#58015
-
- 02 Jun, 2012 1 commit
-
-
Sergey Petrunya authored
-
- 01 Jun, 2012 2 commits
-
-
Sergey Petrunya authored
- Set index columns to be read when using index_merge, even if TABLE->no_keyread is set for the table (happens for multi-table UPDATEs)
-
unknown authored
The constructor for Query_log_event allocated 2 bytes too few for extra space needed by Query cache. (Not sure if this is reproducible in practice, as there are often a couple of extra bytes allocated for unused string zero terminators, but better safe than sorry).
-
- 30 May, 2012 1 commit
-
-
unknown authored
Analysis: When a subquery that needs a temp table is executed during the prepare or optimize phase of the outer query, at the end of the subquery execution all the JOIN_TABs of the subquery are replaced by a new JOIN_TAB that selects from the temp table. However that temp table has no corresponding TABLE_LIST. Once EXPLAIN execution reaches its last phase, it tries to print the names of the subquery tables through its TABLE_LISTs, but in the case of this bug there is no such TABLE_LIST (it is NULL), hence a crash. Solution: The fix is to block subquery evaluation inside Item_func_like::fix_fields and Item_func_like::select_optimize() using the Item::is_expensive() test.
-
- 29 May, 2012 1 commit
-
-
Alexey Botchkov authored
Optimizator fails using index with ST_Within(g, constant_poly). per-file comments: mysql-test/r/gis-rt-precise.result test result fixed. mysql-test/r/gis-rtree.result test result fixed. mysql-test/suite/maria/r/maria-gis-rtree-dynamic.result test result fixed. mysql-test/suite/maria/r/maria-gis-rtree-trans.result test result fixed. mysql-test/suite/maria/r/maria-gis-rtree.result test result fixed. storage/maria/ma_rt_index.c Use MBR_INTERSECT mode when optimizing the select WITH ST_Within. storage/myisam/rt_index.c Use MBR_INTERSECT mode when optimizing the select WITH ST_Within.
-
- 25 May, 2012 2 commits
-
-
Igor Babaev authored
-
Igor Babaev authored
could lead an to exponential growth of the imerge lists.
-
- 24 May, 2012 1 commit
-
-
Sergey Petrunya authored
- In JOIN::exec(), make the having->update_used_tables() call before we've made the JOIN::cleanup(full=true) call. The latter frees SJ-Materialization structures, which correlated subquery predicate items attempt to walk afterwards.
-
- 23 May, 2012 3 commits
-
-
Sergey Petrunya authored
-
Sergey Petrunya authored
- Correct testcases.
-
Sergey Petrunya authored
- Disable IndexConditionPushdown for reverse scans.
-
- 22 May, 2012 1 commit
-
-
unknown authored
Analysis: The optimizer detects an empty result through constant table optimization. Then it calls return_zero_rows(), which in turns calls inderctly Item_maxmin_subselect::no_rows_in_result(). The latter method set "value=0", however "value" is pointer to Item_cache, and not just an integer value. All of the Item_[maxmin | singlerow]_subselect::val_XXX methods does: if (forced_const) return value->val_real(); which of course crashes when value is a NULL pointer. Solution: When the optimizer discovers an empty result set, set Item_singlerow_subselect::value to a FALSE constant Item instead of NULL.
-
- 21 May, 2012 1 commit
-
-
Alexey Botchkov authored
Handle the 'set read_only=1' in lighter way, than the FLUSH TABLES READ LOCK; For the transactional engines we don't wait for operations on that tables to finish. per-file comments: mysql-test/r/read_only_innodb.result MDEV-136 Non-blocking "set read_only". test result updated. mysql-test/t/read_only_innodb.test MDEV-136 Non-blocking "set read_only". test case added. sql/mysql_priv.h MDEV-136 Non-blocking "set read_only". The close_cached_tables_set_readonly() declared. sql/set_var.cc MDEV-136 Non-blocking "set read_only". Call close_cached_tables_set_readonly() for the read_only::set_var. sql/sql_base.cc MDEV-136 Non-blocking "set read_only". Parameters added to the close_cached_tables implementation, close_cached_tables_set_readonly declared. Prevent blocking on the transactional tables if the set_readonly_mode is on.
-
- 20 May, 2012 1 commit
-
-
Sergei Golubchik authored
-
- 18 May, 2012 4 commits
-
-
Sergey Petrunya authored
-
Sergey Petrunya authored
BUG#1000269: Wrong result (extra rows) with semijoin+materialization, IN subqueries, join_cache_level>0 - make make_cond_after_sjm() correctly handle OR clauses where one branch refers to the semi-join table while the other branch refers to the non-semijoin table.
-
Sergei Golubchik authored
-
Sergei Golubchik authored
sql/slave.cc: add mutex protection, like in sql_parse.cc
-
- 17 May, 2012 3 commits
-
-
Sergei Golubchik authored
-
unknown authored
-
unknown authored
The problem is that we can't check null_value field of non-basic constant without the item execution.:
-
- 15 May, 2012 1 commit
-
-
unknown authored
If we did nothing in resolving unique table conflict we should not retry (it leed to infinite loop). Now we retry (recheck) unique table check only in case if we materialized a table.
-
- 13 May, 2012 1 commit
-
-
Sergey Petrunya authored
- Let fix_semijoin_strategies_for_picked_join_order() set POSITION::prefix_record_count for POSITION records that it copies from SJ_MATERIALIZATION_INFO::tables. (These records do not have prefix_record_count set, because they are optimized as joins-inside-semijoin-nests, without full advance_sj_state() processing).
-
- 12 May, 2012 3 commits
-
-
Sergey Petrunya authored
-
Sergey Petrunya authored
-
Sergey Petrunya authored
in greedy_search with LEFT JOINs and unique keys - Backport the fix for BUG#806524 from MariaDB 5.3
-
- 11 May, 2012 2 commits
-
-
unknown authored
-
unknown authored
The not_null_tables() of Item_func_not_all and Item_in_optimizer was inherited from Item_func by mistake. It made the optimizer think that subquery predicates with ALL/ANY/IN were null-rejecting. This could trigger invalid conversions of outer joins into inner joins.
-
- 10 May, 2012 1 commit
-
-
unknown authored
-
- 08 May, 2012 3 commits
-
-
unknown authored
-
unknown authored
It is problem of constant propagated to ref* access method (the problem was hiden by using debug binaries for testing).
-
Vladislav Vaintroub authored
The failures are missing entries in the slow query log. The reason for the failure are sleep() calls with short duration 10ms, which is less than the default system timer resolution for various WaitForXXXObject functions (15.6 ms) and thus can't work reliably. The fix is to make sleeps tiny bit longer (20ms from 10ms) in the test.
-
- 07 May, 2012 4 commits
-
-
Vladislav Vaintroub authored
let x = `SELECT <something>` The fix is to detect the condition "no active connection", to report error and die. Note, that the check for no active connection was already in place for ordinary commands, and was missing only for assign-variable command.
-
unknown authored
In 5.3 we substitute constants in ref access values it can't be null so we do not need add NOT NULL for early NULL filtering.
-
unknown authored
Optimization of aggregate functions detected constant under max() and evalueted it, but condition in the WHWRE clause (which is always FALSE) was not taken into account
-
unknown authored
The patch backports two patches from mysql 5.6: - BUG#12640437: USING SQL_BUFFER_RESULT RESULTS IN A DIFFERENT QUERY OUTPUT - Bug#12578908: SELECT SQL_BUFFER_RESULT OUTPUTS TOO MANY ROWS WHEN GROUP IS OPTIMIZED AWAY Original comment: ----------------- 3714 Jorgen Loland 2012-03-01 BUG#12640437 - USING SQL_BUFFER_RESULT RESULTS IN A DIFFERENT QUERY OUTPUT For all but simple grouped queries, temporary tables are used to resolve grouping. In these cases, the list of grouping fields is stored in the temporary table and grouping is resolved there (e.g. by adding a unique constraint on the involved fields). Because of this, grouping is already done when the rows are read from the temporary table. In the case where a group clause may be optimized away, grouping does not have to be resolved using a temporary table. However, if a temporary table is explicitly requested (e.g. because the SQL_BUFFER_RESULT hint is used, or the statement is INSERT...SELECT), a temporary table is used anyway. In this case, the temporary table is created with an empty group list (because the group clause was optimized away) and it will therefore not create groups. Since the temporary table does not take care of grouping, JOIN::group shall not be set to false in make_simple_join(). This was fixed in bug 12578908. However, there is an exception where make_simple_join() should set JOIN::group to false even if the query uses a temporary table that was explicitly requested but is not strictly needed. That exception is if the loose index scan access method (explain says "Using index for group-by") is used to read into the temporary table. With loose index scan, grouping is resolved by the access method. This is exactly what happens in this bug.
-