summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* After constant row substitution the optimizer should call the methodIgor Babaev2014-02-2017-24/+24
| | | | | | | | | update_used_tables for the the where condition to update cached indicators of constant subexpressions. It should be done before further possible simplification of the where condition. This change caused simplification of the executed where conditions in many test cases.
* Backport the following from 5.5 to 5.3:Sergey Petrunya2014-02-193-0/+55
| | | | | | | | | MDEV-4556 Server crashes in SEL_ARG::rb_insert with index_merge+index_merge_sort_union, FORCE INDEX - merge_same_index_scans() may put the same SEL_ARG tree in multiple result plans. make it call incr_refs() on the SEL_ARG trees that it does key_or() on, because key_or(sel_arg_tree_1, sel_arg_tree_2) call may invalidate SEL_ARG trees pointed by sel_arg_tree_1 and sel_arg_tree_2.
* Fix compile failure:Sergey Petrunya2014-02-191-1/+2
| | | | | | | | | In function ‘void* memset(void*, int, size_t)’, inlined from ‘void Lifo_buffer::set_buffer_space(uchar*, uchar*)’ at sql_lifo_buffer.h:70:5, inlined from ‘int DsMrr_impl::dsmrr_init(handler*, RANGE_SEQ_IF*, void*, uint, uint, HANDLER_BUFFER*)’ at multi_range_read.cc:895:62: /usr/include/i386-linux-gnu/bits/string3.h:82:32: error: call to ‘__warn_memset_zero_len’ declared with attribute warning: memset used with constant zero length parameter; this could be due to transposed parameters [-Werror] It was intentional that the buffer is set to zero length there.
* Add a debugger helper function that does this:Sergey Petrunya2014-02-191-0/+79
| | | | | (gdb) p dbug_print_table_row(table) $33 = "SUBQUERY2_t1(col_int_key,col_varchar_nokey)=(7,c)"
* MDEV-5600: Wrong result on 2nd execution of PS depending on the length of ↵Sergey Petrunya2014-02-191-0/+1
| | | | | | | | | | | | | | the query - Item_direct_view_ref didn't clear its pointer to item_equal in ::cleanup. - Some Item_direct_view_ref objects have statement lifetime (i.e. they survive across multiple EXECUTE commands). Item_equal objects live only for the duration of one EXECUTE. This caused Item_direct_view_ref to have a stale pointer, which could cause all sorts of effects. (In this bug's testcase it was pointing to the wrong Item_equal, causing wrong query result) - Fixed by doing what Item_field::cleanup() does - don't keep item_equal pointer value. - There is no testcase because the only testcase I've got is highly fragile (e.g. the bug will not show up if @@datadir is of the wrong length).
* MDEV-5481 mysqldump fails to dump geometry types properly.Alexey Botchkov2014-02-183-1/+31
| | | | | Fixed so the MYSQL_TYPE_GEOMETRY is treated as BLOB.
* MDEV-5615 crash in Gcalc_function::add_operation.Alexey Botchkov2014-02-184-3/+12
| | | | | | | The result is EMPTY for a buffer(line, -1), but we still need one FALSE operation to be stored in the condition. And we actually add it but forgot to alloc memory to store it.
* MergeSergey Petrunya2014-02-156-3/+56
|\
| * MDEV-5581: Server crashes in in JOIN::prepare on 2nd execution of PS with ↵Sergey Petrunya2014-02-156-3/+56
| | | | | | | | | | | | | | | | | | | | | | materialization+semijoin - The problem was that JOIN::prepare() tried to set TABLE::maybe_null for a table in join. Non-merged semi-join tables 1) are present as join's base tables on second EXECUTE, but 2) do not yet have a TABLE object. Worked around the problem by putting mixed_implicit_grouping into JOIN object, and then passing it to JTBM tables in setup_jtbm_semi_joins().
* | fix suite/sphinx/suite.pm to not start searchd twiceSergei Golubchik2014-02-141-0/+1
|/
* fix the testSergei Golubchik2014-02-142-1/+2
|
* record incorrect result for MDEV-5539 Empty results in UNION with Sphinx engineSergei Golubchik2014-02-142-0/+25
| | | | (just to have the test in the tree when we merge the upstream fix)
* MDEV-714 LP:1020645 - crash (sig 11) with union querySergei Golubchik2014-02-133-1/+16
| | | | Don't ignore the error from st_select_lex_unit::optimize()
* use a different error for MySQL bug#11747970 - kill the query,Sergei Golubchik2014-02-133-9/+3
| | | | | as it was supposed to be in bug#11747970, don't fake an error. (this kill can be useful for other bugs too)
* Remove the fix from MySQL-5.1 that's not necessary in 5.3Sergei Golubchik2014-02-132-7/+3
|
* 5.2 mergeSergei Golubchik2014-02-138-21/+38
|\
| * 5.1 mergeSergei Golubchik2014-02-1310-33/+38
| |\
| | * fix embedded testsSergei Golubchik2014-02-137-23/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (mainly by backporting 5.5. changes) mysql-test/suite/maria/t/distinct.test: Remove the test that requires SSL. One test case for a bug is enough. sql/scheduler.cc: make it the same as in 5.5 storage/innodb_plugin/row/row0mysql.c: make it the same as in 5.5 storage/innodb_plugin/row/row0sel.c: make it the same as in 5.5 storage/xtradb/row/row0mysql.c: make it the same as in 5.5 storage/xtradb/row/row0sel.c: make it the same as in 5.5
| | * MDEV-5655 Server crashes on NAME_CONST containing AND/OR expressionsSergei Golubchik2014-02-123-10/+38
| | | | | | | | | | | | | | | fix the NAME_CONST check to only allow literals, negated literals, and literals with the explicit collation.
* | | MergeIgor Babaev2014-02-073-1/+17
|\ \ \
| * | | Fixed bug mdev-5611.Igor Babaev2014-02-073-1/+17
| | | | | | | | | | | | | | | | | | | | The method Item_field::update_table_bitmaps() should not try to mark the bit for a self-referencing virtual column.
* | | | MergeSergey Petrunya2014-02-077-4/+78
|\ \ \ \ | |/ / / |/| | |
| * | | MDEV-5582: Plugin 'MEMORY' has ref_count=1 after shutdown with ↵Sergey Petrunya2014-02-077-4/+78
| | | | | | | | | | | | | | | | | | | | | | | | materialization+semijoin - Let cleanup_empty_jtbm_semi_joins() walk into semi-join nests.
* | | | Fixed bug mdev-5468.Igor Babaev2014-02-053-0/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The field JOIN::select_lex->where should be updated after the call of remove_eq_conds() in the function make_join_statistics(). This matters for subselects.
* | | | MDEV-5369: Wrong result (0 instead of NULL) on 2nd execution of PS with LEFT ↵unknown2014-01-283-1/+45
| | | | | | | | | | | | | | | | | | | | | | | | JOIN, TEMPTABLE view Set of JOIN_TYPE_OUTER made only once to avoid interference with optimization joins which made only once per query.
* | | | 5.2 mergeSergei Golubchik2014-01-281-1/+1
|\ \ \ \ | | |/ / | |/| |
| * | | 5.1 mergeSergei Golubchik2014-01-284-16/+6
| |\ \ \ | | | |/ | | |/|
| | * | fixed a client-side overflow in mysql cliSergei Golubchik2014-01-281-1/+1
| | | |
* | | | MDEV-5506 safe_mutex: Trying to lock unitialized mutex at safemalloc.cAlexander Barkov2014-01-288-14/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | on server shutdown after SELECT with CONVERT_TZ It's wrong to return my_empty_string from val_str(). Removing my_empty_string. Using make_empty_result() instead.
* | | | MDEV-5458 RQG hits 'sql/tztime.cc:799: my_time_t sec_since_epoch(...):Alexander Barkov2014-01-278-25/+63
| |_|/ |/| | | | | | | | | | | Assertion `mon > 0 && mon < 13' failed.'
* | | [Backport to 5.3]Sergey Petrunya2014-01-253-1/+54
| | | | | | | | | | | | | | | | | | | | | | | | MDEV-5337: Wrong result in mariadb 5.5.32 with ORDER BY + LIMIT when index_condition_pushdown=on - in test_if_skip_sort_order(), correct the condition under which we have the code that restores the previously pushed index condition.
* | | MDEV-5504 Server crashes in String::length on SELECT with MONTHNAME, GROUP ↵Alexander Barkov2014-01-244-12/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | BY, ROLLUP The crash happened because Item_func_monthname was derived from Item_func_month, so Item_func_monthname::is_null() did not work fine. Backporting a change from 5.5: Item_func_monthname is now derived from Item_str_func.
* | | MDEV-5368: Server crashes in Item_in_subselect::optimize on ...Sergey Petrunya2014-01-234-1/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - convert_subq_to_sj() must connect child select's tables into parent select's TABLE_LIST::next_local chain. - The problem was that it took child's leaf_tables.head() which is different. This could cause certain tables (in this bug's case, child select's non-merged semi-join) not to be present in TABLE_LIST::next_local chain. Which would cause non-merged semi-join not to be initialized in setup_tables(), which would lead to NULL pointer dereference.
* | | merge of MDEV-5356 5.1->5.3 (with more fixes and test suite).unknown2014-01-238-39/+65
|\ \ \ | | |/ | |/| | | | | | | | | | | | | | | | | | | THD::thd->activate_stmt_arena_if_needed() should be used to temporary activating statement arena instead of direct usage of THD::set_n_backup_active_arena() because possible such scenario: 1) func1 saves current arena and activates copy1 of statement arena 2) func2 saves copy1 of statement arena setup by func1 and activates copy2 3) some changes made for copy 2 4) func2 stores changed copy2 back to statenet arena and activates copy1 5) func1 store unchanged copy1 back to statemnt arena (rewrite changed copy 2 so changes become lost) and activates arena which was before.
| * | MDEV-5356: Server crashes in Item_equal::contains on 2nd execution of a PSunknown2014-01-233-15/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | THD::thd->activate_stmt_arena_if_needed() should be used to temporary activating statement arena instead of direct usage of THD::set_n_backup_active_arena() because possible such scenario: 1) func1 saves current arena and activates copy1 of statement arena 2) func2 saves copy1 of statement arena setup by func1 and activates copy2 3) some changes made for copy 2 4) func2 stores changed copy2 back to statenet arena and activates copy1 5) func1 store unchanged copy1 back to statemnt arena (rewrite changed copy 2 so changes become lost) and activates arena which was before.
* | | 5.2 mergeSergei Golubchik2014-01-216-4/+46
|\ \ \ | | |/ | |/|
| * | 5.1 mergeSergei Golubchik2014-01-2113-12/+54
| |\ \ | | |/
| | * fix a warningSergei Golubchik2014-01-201-1/+1
| | |
| | * MDEV-5543 MyISAM repair unsafe usage of TMD files Sergei Golubchik2014-01-204-2/+44
| | |
| | * make 5.1 compiling with modern gcc.unknown2013-12-208-9/+9
| | |
* | | MDEV-5515: 2nd execution of a prepared statement returns wrong resultsunknown2014-01-133-1/+71
| | | | | | | | | | | | update_used_tables() should be called after handling derived tables in any case.
* | | MDEV-5414: RAND() in a subselect : different behavior in MariaDB and MySQLunknown2013-12-188-3/+261
| | | | | | | | | | | | | | | | | | Materialization forced in case if rand() used in view or derived table to avoud several calls of rand for gting value of a field. Fixed set variable uncachable flag from - it shouldbe a side effect not a random value.
* | | Fixed bug mdev-5410.Igor Babaev2013-12-124-5/+59
| | | | | | | | | | | | | | | The fix for bug #27937 was incomplete: it did not handle correctly the queries containing UNION with global ORDER BY in subselects.
* | | Another attempt to fix the memory leak of mdev-5400.Igor Babaev2013-12-112-0/+2
| | |
* | | Fixed bug mdev-5400:Igor Babaev2013-12-071-1/+0
| | | | | | | | | | | | a memory leak in save_index() first seen in the test case for mdev-5382.
* | | MergeIgor Babaev2013-12-053-2/+33
|\ \ \
| * | | Fixed bug mdev-5382Igor Babaev2013-12-053-2/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | When marking used columns the function find_field_in_table_ref() erroneously called the walk method for the real item behind a view/derived table field with the second parameter set to TRUE. This erroneous code was introduced in 2006.
* | | | MDEV-5353: server crash on subselect if WHERE applied to some result fieldunknown2013-12-044-6/+31
|/ / / | | | | | | | | | Correct processing of view/derived with no tables added.
* | | MDEV-5374 main.func_time fails with valgrind warningAlexander Barkov2013-12-031-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | "Conditional jump or move depends on uninitialised" in Item_time_typecast::get_date. Adding "null_value" into the debug assert condition.
* | | 5.2 mergeSergei Golubchik2013-12-023-19/+40
|\ \ \ | |/ /