Fixed Bug #803410.
Due to this bug in the function generate_derived_keys_for_table some
key definitions to access materialized derived tables or materialized
views were constructed with invalid info for their key parts.
This could make the server crash when it optimized queries using
materialized derived tables or materialized views.
[merge]
Tue 2011-06-28 19:56:30 -0700
Merge.
Tue 2011-06-28 18:31:54 -0700
Tue 2011-06-28 15:48:44 +0300
Fixed
Analysis:
Tue 2011-06-28 11:11:26 +0400
: Valgrind warning / sporadic crash in evaluate_join_record sql_select.cc:14099 with semijoin
Added testcase. The bug is most likely fixed by code.
[merge]
Mon 2011-06-27 23:36:20 -0700
Merge
Mon 2011-06-27 23:07:46 -0700
[merge]
Tue 2011-06-28 00:18:42 +0300
Automatic merge
[merge]
Tue 2011-06-28 00:13:22 +0300
Mon 2011-06-27 23:38:56 +0400
Added TODO comments
Sun 2011-06-26 21:55:32 -0700
Fixed .
Ensured valid calculations of the estimates stored in JOIN_TAB::used_fieldlength.
Sat 2011-06-25 14:02:27 -0700
Fixed .
Made mergeable views and mergeable derived tables transparent for
the MIN/MAX optimization.
Fri 2011-06-24 21:18:20 -0700
Added test cases for and
fixed by the patch for .
Fri 2011-06-24 18:42:14 -0700
Fixed .
The following were missing in the patch for mwl106:
KEY_PART_INFO::fieldnr were not set for generated keys to access
tmp tables storing the rows of materialized derived tables/views
Fri 2011-06-24 14:38:53 -0700
Fixed .
If a view/derived table is non-mergeable then the definition of the tmp table
to store the rows for it is created at the prepare stage. In this case if the
view definition uses outer joins and a view column belongs to an inner table
of one of them then the column should be considered as nullable independently
on nullability of the underlying column. If the underlying column happens to be
defined as non-nullable then the function create_tmp_field_from_item rather
than the function create_tmp_field_from_field should be employed to create
the definition of the interesting column in the tmp table.
[merge]
Fri 2011-06-24 21:43:31 +0400
Merge 5.2 -> 5.3
(testcase for now crashes)
Thu 2011-06-23 22:12:22 -0700
Fixed a valgrind problem.
The function setup_tables should handle table_list elements for
semijoin materialized tables in a special way when executing
a prepared statement for the second time.
Thu 2011-06-23 14:48:45 -0700
Fixed .
The function simple_pred did not take into account that a multiple equality
could include ref items (more exactly items of the class Item_direct_view_ref).
It caused crashes for queries over derived tables or views if the
min/max optimization could be applied to these queries.
[merge]
Tue 2011-06-21 18:17:28 -0700
Merge
Tue 2011-06-21 18:00:58 -0700
Tue 2011-06-21 23:01:01 +0300
Removed forgotten EXPLAIN EXTENDED from the test file.
[merge]
Tue 2011-06-21 16:00:41 +0300
Automerged with 5.3.
Tue 2011-06-21 15:50:07 +0300
Fri 2011-06-17 23:00:26 +0200
- fix missing alpha/beta etc in MSI and ZIP package names.
[merge]
Fri 2011-06-17 17:45:41 +0400
Merge fix for .
Wed 2011-06-15 18:37:01 +0400
[merge]
Wed 2011-06-15 21:48:38 -0700
Merge of mwl #106 into 5.3.
Thu 2011-06-09 12:43:28 -0700
Wed 2011-06-15 17:40:18 +0400
: Update .result file
Wed 2011-06-15 16:02:32 +0400
: partition.test produces valgrind errors in 5.3-based branches
Testcase
Wed 2011-06-15 15:32:24 +0400
: InnoDB: Error: row_search_for_mysql() is called without ha_innobase::external_lock() in maria-5.3
Testcase
Wed 2011-06-15 13:43:04 +0400
Assertion `!table->file || table->file->inited == handler::NONE' failed with subquery
Add testcase
Tue 2011-06-14 18:45:14 +0200
fix for cast of negative numbers to datetime
Sun 2011-06-12 11:28:22 +0200
a couple of fixes for pbxt tests
Tue 2011-06-14 15:21:54 +0200
Another attempt at fixing the rare random failures of rpl_corruption
The previous patch partially fixed things by waiting for the old dump thread
on the master to exit before injecting the DBUG error. This prevents the error
injection going to the wrong thread.
Mon 2011-06-13 12:41:19 +0400
Remove redundant code that is a result of a wrong merge.
(Changeset sp1r-igor@olga.mysql.com-20070526173301-38848 moved this loop from one place
to another, then the merge of sp1r-gshchepa/uchum@gleb.loc-20070527192244-26330 have
kept both copies).
Sun 2011-06-12 00:35:53 +0400
In make_join_select():
move attempt to evaluate join->exec_const_cond() out of the "Extract constant part of each ON expression" loop
(it got there by mistake when merging).
[merge]
Sat 2011-06-11 12:04:42 +0300
Merge with Sergei's tree to get in latest microsecond patches and also fixes to innodb_plugin.
Fri 2011-06-10 21:15:13 +0200
Sat 2011-06-11 11:41:46 +0300
Fixed build failures with maria3.test and widows build
[merge]
Sat 2011-06-11 11:09:17 +0300
Merge with main 5.3
[merge]
Fri 2011-06-10 12:09:21 +0300
Fri 2011-06-10 12:45:43 +0400
: does not trigger with non-comma joins
Add a testcase (the bug has already been fixed)
Fri 2011-06-10 12:36:06 +0400
[No BUG#] end_tab_idx==-1 passed as parameter to JOIN::get_partial_cost_and_fanout()
Handle the case when the subquery's join is degenerate and so has zero tables.
Thu 2011-06-09 21:39:31 +0300
Removed depricated --maria-options from mysqld.
Thu 2011-06-09 13:35:01 +0300
Fixed compile failure when we don't use system zlib
Fixed crash when setting query_cache_type to 0.
Thu 2011-06-09 11:13:03 +0300
Fixed build failure on OpenSolaris
Tue 2011-06-07 14:19:49 +0300
Upgraded to latest handlersocket code. This fixed "Assertion `next_insert_id == 0' failed with handlersocket"
Tue 2011-06-07 10:54:37 +0300
Fixed that mysqld --no-defaults --help --verbose doesn't give a lot of irrelevant error messages.
Tue 2011-06-07 10:29:08 +0300
Fixed strict alias problem by replacing = with memcpy()
Mon 2011-06-06 15:50:46 -0700
Fixed .
The code that added semi-join transformations missed checking
the state of the fixed flag for the items built with the
and_items function before calls of the fix_fields method.
This could lead to an abort failure when the first argument
of and_items() happened to be NULL.
[merge]
Mon 2011-06-06 19:37:33 +0300
Merge with 5.2 to get bug fixes for thr_lock
Mon 2011-06-06 17:25:01 +0300
Fixed that SHOW COLUMNS for a virtual persistent column shows 'PERSISTENT' instead of 'VIRTUAL'
Strict mode now gives error if one tries to update a virtual column.
Fri 2011-06-03 21:45:24 +0400
Buildbot fixes:
make sp.test work both with and without query_cache (attempt 2)
Fri 2011-06-03 15:06:13 +0200
Fixed compiler warning in central header file mysql_priv.h.
Fri 2011-06-03 13:42:02 +0400
More changes from optimizer_use_mrr to optimizer_switch
Fri 2011-06-03 11:32:21 +0400
Buildbot fixes: don't use @@optimizer_use_mrr, it has been moved into @@optimizer_switch
Fri 2011-06-03 10:49:50 +0400
Buildbot fixes: let mysql-test/t/sp.test set @@query_cache_size only if the server has query cache.
[merge]
Fri 2011-06-03 09:38:59 +0400
Merge
Fri 2011-06-03 00:25:58 +0400
[merge]
Thu 2011-06-02 17:33:08 -0700
Merge
Tue 2011-05-31 09:39:35 -0700
[merge]
Thu 2011-06-02 23:52:36 +0400
Merge fix for .
Thu 2011-06-02 23:48:33 +0400
Thu 2011-06-02 16:46:47 +0400
Change suite/rpl/t/rpl_row_basic_11bugs.test to require query cache.
[merge]
Tue 2011-05-31 12:16:02 +0200
automerge
Tue 2011-05-31 12:14:21 +0200
Mon 2011-05-30 11:19:40 +0400
Remove compiler warning
Remove garbage comments
[merge]
Mon 2011-05-30 10:51:41 +0400
Merge 5.3-main ->
Sun 2011-05-29 20:48:14 -0700
Eliminated the member original_cond from the class SQL_SELECT
introduced at the latest merge 5.1->5.2->5.3.
It is basically not needed since if SQL_SELECT::pre_idx_push_select_cond
is not NULL then SQL_SELECT::original_cond would point to the same condition
as SQL_SELECT::pre_idx_push_select_cond. Otherwise SQL_SELECT::original_cond
would be equal to SQL_SELECT::cond.
Sat 2011-05-28 22:07:56 -0700
Fixed the abort failure of a test case from vcol.vcol_misc.
The fix blocks execution of any constant sub-expressions of
the defining expressions for virtual columns when context
analysis if these expressions is performed.
Fixed a compiler warning.
Sat 2011-05-28 19:28:39 +0200
Fix gcc warning.
Sat 2011-05-28 16:57:58 +0200
Fix compile errors and warnings and test errors introduced by microseconds push.
Also, change windows timespec definition to be Unix-ish - simplifies handling a lot.
Changed MariaDB error numbers to start from 1900 to not conflict with MySQL error numbers
Fri 2011-05-20 19:52:24 +0400
Fix a comment (unmatched '{' and '}' screw up jumping in advanced editors)
Fri 2011-05-20 19:08:55 +0400
Stabilize a testcase after fix for , part 2
Fri 2011-05-20 14:15:22 +0400
Stabilize a testcase after fix for
[merge]
Fri 2011-05-20 10:13:02 +0400
Merge fix for
Fri 2011-05-20 01:05:06 +0400
Changelog — page: 2
This page is licensed: CC BY-SA / Gnu FDL
Fixed Bug #802860.
This crashing bug could manifest itself at execution of join queries
over materialized derived tables with IN subquery predicates in the
where clause. If for such a query the optimizer chose to use duplicate
weed-out with duplicates in a materialized derived table and chose to
employ join cache the execution could cause a crash of the server.
It happened because the JOIN_CACHE::init method assumed that the value
of TABLE::file::ref is set at the moment when the method was called
for the employed join cache. It's true for regular tables, but it's
not true for materialized derived tables that are filled now at the
first access to them, i.e. after the JOIN_CACHE::init has done its job.
To fix this problem for any ROWID field of materialized derived table
the procedure that copies fields from record buffers into the employed
join buffer first checks whether the value of TABLE::file::ref has
been set for the table, and if it's not so the procedure sets this value.
The failed assert ensured that the choice of subquery strategy
is performed only for queries with at least one table. If there
is a LIMIT 0 clause all tables are removed, and the subquery is
neither optimized, nor executed during actual optimization. However,
if the query is EXPLAIN-ed, the EXPLAIN execution path doesn't remove
the query tables if there is a LIMIT 0 clause. As a result, the
subquery optimization code is called, which violates the ASSERT
condition.
Solution:
Transform the assert into a condition, and if the outer query
has no tables assume that there will be at most one subquery
execution.
There is potentially a better solution by reengineering the
EXPLAIN/optimize code, so that subquery optimization is not
done if not needed. Such a solution would be a lot bigger and
more complex than a bug fix.
Fixed Bug #800535.
The function create_view_field in some cases incorrectly set the maybe_null
flag for the returned items.
New status variables: Rows_tmp_read, Handler_tmp_update and Handler_tmp_write
Split status variable Rows_read to Rows_read and Rows_tmp_read so that one can see how much real data is read.
Same was done with Handler_update and Handler_write.
Fixed bug in MEMORY tables where some variables was counted twice.
Added new internal handler call 'ha_close()' to have one place to gather statistics.
Fixed bug where thd->open_options was set to wrong value when doing admin_recreate_table()
Mon 2011-06-27 12:51:13 +0300
Updated version tag to beta
[merge]
Mon 2011-06-27 12:48:53 +0300
Automatic merge
Mon 2011-06-27 12:45:03 +0300
TABLE_SHARE::column_bitmap_size was not set for tmp tables storing
the rows of materialized derived tables/views.
The patch for Bug #717577 and Bug #724942 has missed to make adjustments for the
call item_equal->add_const(const_item, orig_field_item) in the function
check_simple_equality that builds multiple equality for a field and a constant.
As a result, when this field happens to be a view field and the corresponding
Item_field object F is wrapped in an Item_direct_view_ref object R the object
F is placed in the multiple equality instead of the object R.
A substitution of an equal item for F potentially can cause very serious
problems and in some cases can lead to crashes of the server.
Added regression test with queries over the WORLD database.
Discovered and fixed several bugs in the related cost calculation
functionality both in the semijoin and non-semijon subquery code.
Added DBUG printing of the cost variables used to decide between
IN-EXISTS and MATERIALIZATION.
Bug #778406: Crash in hp_movelink with Aria engine and subqueries
-In do_sj_dups_weedout(), set nulls_ptr to point to NULL bytes (and not to length bytes) of the DuplicateWeedout column.
The function generate_derived_keys did not take into account the fact
that the last element in the array of keyuses could be just a barrier
element. In some cases it could lead to a crash of the server.
Also fixed a couple of other bugs in generate_derived_keys: the inner
loop in the body of if this function did not change the cycle variables
properly.
Fixed Bug #794038.
INSERT/UPDATE/DELETE statement that used a temptable view v1 could lead to
a crash if v1 was defined as a select from a mergeable view v2 that selected
rows from a temptable view v3.
When INSERT/UPDATE/DELETE uses a view that is not updatable then field
translation for the view should be created before the prepare phase.
When looking for the execution plan of a derived table to be materialized
JOIN::optimize finds out that all joined tables of the derived table
contain not more than one row then the derived table should be maretialized
at the optimization stage.
if the flag is off then all derived tables are materialized
if the flag is on then mergeable derived tables are merged
'derived_with_keys':
if the flag is off then no keys are created for derived tables
if the flag is on then for any derived table a key to access
the derived table may be created.
Now by default both flags are on.
Later the default values for the flags will be off to comply with
the current behaviour of mysql-5.1.
Uncommented previously commented out test case from parts.partition_repair_myisam
after having added an explicit requirement to materialize the derived
table used in the test case.
Merged the code of MWL#106 into the latest 5.3 with MWL#90 pushed.
Resolved all conflicts and failures.
However, there is still the problem that the old dump thread may never exit,
causing the wait to time out. This happens if the dump thread manages to write
all events down the socket before the socket is closed by the slave. The
master dump thread only checks for slave gone when writing a new event, so if
no new events are generated, old dump threads can hang around forever on the
master after the slave disconnects.
Fix by explicitly killing the old dump thread if it is still around.
revert a suggested "optimization" that introduced a bug
compilation error in mysys/my_getsystime.c fixed
some redundant code removed
sec_to_time, time_to_sec, from_unixtime, unix_timestamp, @@timestamp now
use decimal, not double for numbers with a fractional part.
purge_master_logs_before_date() fixed
many bugs in corner cases fixed
Thu 2011-05-26 19:16:10 +0200
innodb compatibility fix
Thu 2011-05-26 18:11:26 +0200
fix for double or decimal to datetime conversion
Merge with 5.2
fix compile warning in make_sort_key(), as directed by SergeiG
Change optimizer_use_mrr=auto|disable|force
to be optimizer_switch flags mrr=on|off and mrr_cost_based=on|off.
Corrected the previous patch concerning elimination of SQL_SELECT::original_cond.
Corrected the code from the patch for Bug #702322.
Bug #787299: Valgrind complains on a join query with two IN subqueries
Don't attempt to construct FirstMatch access method if we've
just figured three lines above that it can't be used (because join
prefix doesn't have the needed tables), and so have set
pos->first_firstmatch_table= MAX_TABLES
Attempts to analyze join->positions[MAX_TABLES] caused valgrind warnings
Attempt to fix rpl.rpl_corruption failure seen in Buildbot on Windows.
There is a potential race when we stop the slave. It may take some time for
the master to detect that the slave connection is closed (eg. if scheduling
delays the TCP RSET packet or whatever). Since we inject only a single corrupt
binlog event, we may be unfortunate enough to inject it on the wrong
connection, to a slave io thread that's already stopped.
Fix by waiting for the old dump thread on the master to go away before
injecting the corrupt event.
Bug #784723: Wrong result with semijoin + nested subqueries in maria-5.3
in advance_sj_state(), remember join->cur_dups_producing_tables in
pos->prefix_dups_producing_tables before we modify it, so that
restore_prev_sj_state() restores cur_dups_producing_tables in all cases.
Updated test results in subselect_sj2[_jcl6].result (the original EXPLAIN
was invalid there)
Be notified of new MariaDB Server releases automatically by subscribing to the MariaDB Foundation community announce 'at' lists.mariadb.org announcement list (this is a low traffic, announce-only list). MariaDB plc customers will be notified for all new releases, security issues and critical bug fixes for all MariaDB plc products thanks to the Notification Services.
MariaDB may already be included in your favorite OS distribution. More information can be found on the page.