- 21 Dec, 2010 3 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
This bug fix requires that Bug #58912 be fixed as well (bzr revision id marko.makela@oracle.com-20101221093919-mcmmgd4zpse9567d). Otherwise, another double BLOB free could occur when InnoDB would try to perform an update-in-place as delete-and-insert-by-update-in-place. row_upd_clust_rec_by_insert(): Do not disown the externally stored columns from the old record (btr_cur_mark_extern_inherited_fields()) until after checking the foreign key constraints and successfully inserting the updated record. If a lock wait timeout occurs between the delete-marking of the old record and the insertion of the updated record, mark the columns inherited before retrying the insert. Distinguish the state UPD_NODE_INSERT_BLOB from UPD_NODE_INSERT_CLUSTERED. btr_cur_del_mark_set_clust_rec(): Replace the cursor with block,rec,index,offsets so that the offsets need not be recalculated. Assert that rec is on a clustered index leaf page. btr_cur_disown_inherited_fields(): Renamed from btr_cur_mark_extern_inherited_fields(). Use upd_get_field_by_field_no(). Assert that there are externally stored columns. Assert that a mini-transaction is passed. Remove the return status. (The only caller, row_upd_clust_rec_by_insert(), will have determined that some fields have changed ownership.) btr_cur_mark_dtuple_inherited_extern(): Rename to row_upd_clust_rec_by_insert_inherit_func() and declare as static. Add the debug parameters rec, offsets. When rec is given, assert that the off-page columns match those in the inesrt tuple and that the off-page columns are owned by the record. Assert that the non-updated off-page columns in the insert tuple are owned, and mark them inherited. row_upd_clust_rec_by_insert_inherit(): A wrapper macro for row_upd_clust_rec_by_insert_inherit_func(). row_undo_mod_upd_exist_sec(): Adjust a comment about row_upd_clust_rec_by_insert(). rb:508 approved by Jimmy Yang
-
Marko Mäkelä authored
row_upd_changes_ord_field_binary(): Do not return TRUE if the update vector changes a column that is covered by a prefix index, but does not change the column prefix. Add the row_ext_t parameter for determining whether the prefixes of externally stored columns match. dfield_datas_are_binary_equal(): Add the parameter len, for comparing column prefixes when len > 0. innodb.test: Add a test case where the patch of Bug #55284 failed without this fix. rb:537 approved by Jimmy Yang
-
- 17 Dec, 2010 1 commit
-
-
Sunny Bains authored
With the above bug fix, the maximum autoinc value is preserved when a table is optimized. Update resut file to reflect that.
-
- 16 Dec, 2010 1 commit
-
-
Vasil Dimov authored
InnoDB 1.1.4 was released with MySQL 5.5.8
-
- 14 Dec, 2010 2 commits
-
-
Vasil Dimov authored
-
Vasil Dimov authored
Submitted by: Stewart Smith (via internals@lists.mysql.com)
-
- 12 Dec, 2010 3 commits
-
-
Vasil Dimov authored
-
Vasil Dimov authored
-
Vasil Dimov authored
-
- 10 Dec, 2010 3 commits
-
-
Davi Arnaut authored
-
Dmitry Shulga authored
-
Dmitry Shulga authored
DROP/CREATE SCHEMA, CREATE TABLE, REPAIR. The cause of assert was concurrent execution of DROP DATABASE and REPAIR TABLE where first statement deleted table's file .TMD at the same time as REPAIR TABLE tried to read file details from the old file that was just removed. Additionally was fixed trouble when DROP TABLE try delete all files belong to table being dropped at the same time when REPAIR TABLE statement has just deleted .TMD file. No regression test added because this would require adding a sync point to mysys/my_redel.c. Since this bug is not present in 5.5+, adding test coverage was considered unnecessary. The patch has been verified using RQG testing. sql/sql_db.cc: mysql_rm_known_files() modified: ignore possible ENOENT error when trying delete all table's files. Such aggressive algorithm permits skip already deleted (in another thread) files. Installation of Drop_table_error_handler as internal error handler moved from mysql_rm_db() to mysql_rm_knowns_files() near to place where source of possible errors (call to mysql_rm_table_part2) located. storage/myisam/mi_check.c: mi_repair() was modified: set param->retry_repair= 0 in order to don't call following failover procedure in ha_myisam::repair().
-
- 09 Dec, 2010 16 commits
-
-
Bjorn Munch authored
-
Bjorn Munch authored
-
Bjorn Munch authored
-
unknown authored
mysql-trunk-innodb in rev revno: 3367 Tue 2010-12-07 02:25:25-0800. The crash happens only when lower_case_table_names=2, such as on MacOS, when running the new testcase innodb-system-table-view. Specifically, it crashes when any query is made against the INFORMATION_SCHEMA. INNODB_SYS_FOREIGN table. The function dict_process_sys_foreign_rec() is only used for displaying SYS_FOREIGN records so it does not need a lookup version of those names to be allocated. In this patch, those new function calls are deleted.
-
Bjorn Munch authored
-
Bjorn Munch authored
mysqltest checks if the stmt is one that should be run in ps mode, but regexp doesn't match if preceeded by /* */ comment. Fix: match function will jump over /*..*/ if found at start
-
Bjorn Munch authored
Backported use of setenv() from 5.5 This will remove the leak on systems that have setenv() I have not fixed the string.c leak, it's a local variable that the cleanup function cannot access.
-
Bjorn Munch authored
Fixed some errors Added note about 'no' prefix to options See also follow-up comment to bug report
-
Bjorn Munch authored
Workaround: add --loose-skip-innodb-use-native-aio Only on linux if explicitly using --mem or setting $OPT_MEM
-
Bjorn Munch authored
Add check that there is a RHS of the expression Added to mysqltest.test
-
Bjorn Munch authored
Var's string value was not 0-terminated if intially null. While at it, also removed some reported memory leaks Added sanity check, setting val_len=0 if val==0
-
Bjorn Munch authored
Added option --debug-common which sets 'd' debug flags to the suggested list
-
Ramil Kalimullin authored
-
Ramil Kalimullin authored
my_seek() and my_tell() functions now honour MY_WME flag. include/mysys_err.h: Fix for bug#48451: my_seek and my_tell ignore MY_WME flag - EE_CANT_SEEK added, used in my_seek() and my_tell() functions. mysys/errors.c: Fix for bug#48451: my_seek and my_tell ignore MY_WME flag - EE_CANT_SEEK added, used in my_seek() and my_tell() functions. mysys/my_seek.c: Fix for bug#48451: my_seek and my_tell ignore MY_WME flag - my_seek() and my_tell() handle MY_WME flag. mysys/my_symlink.c: Fix for bug#48451: my_seek and my_tell ignore MY_WME flag - __attribute__((unused)) removed, as myf MyFlags is actually used in the my_realpath() function. storage/myisam/ha_myisam.cc: Fix for bug#48451: my_seek and my_tell ignore MY_WME flag - check my_seek() result.
-
Jimmy Yang authored
-
Jimmy Yang authored
rb://532 approved by Sunny Bains
-
- 08 Dec, 2010 2 commits
-
-
Georgi Kodinov authored
when semijoin=on When setting the aggregate function as having no rows to report the function no_rows_in_result() was calling Item_sum::reset(). However this function in addition to cleaning up the aggregate value by calling aggregator_clear() was also adding the current value to the aggregate value by calling aggregator_add(). Fixed by making no_rows_in_result() to call aggregator_clear() directly. Renamed Item_sum::reset to Item_sum::reset_and_add() to and added a comment to avoid misinterpretation of what the function does.
-
Sergey Vojtovich authored
-
- 07 Dec, 2010 9 commits
-
-
Marc Alff authored
Before this fix, the output of SHOW ENGINE PERFORMANCE_SCHEMA STATUS used uppercase to name performance schema tables. This is inconsistent since performance schema tables have been renamed to lowercase. Also, an old table 'PROCESSLIST' was still visible, even after this table got renamed to 'threads'. This fix: - correctly uses lowercases in the output, to match the current naming. - replaced 'PROCESSLIST' with 'threads'. Tested the output of SHOW ENGINE PERFORMANCE_SCHEMA STATUS manually. No automated test cases can be written for this, since the output is too platform dependent (sizes).
-
Ramil Kalimullin authored
merged from mysql-5.5.8-release tree, revision: ramil@mysql.com-20101203174908-217tdkn150vieha9
-
Guilhem Bichot authored
-
Guilhem Bichot authored
when there was one NULL value, AVG(DISTINCT) could forget about other values. See commit comment of item_sum.cc. mysql-test/r/func_group.result: before the code fix, both SELECTs would return NULL sql/item_sum.cc: Assume we are executing "SELECT AVG([DISTINCT] some_field) FROM some_table". and some_field is the single field of some_table for simplicity. Each time a row is processed (evaluate_join_record()-> end_send_group()->update_sum_func()) an aggregator is notified, which itself notifies an Item_sum_avg. Without DISTINCT, this Item_sum_avg immediately increments its internal "sum of values" and "count of values" (the latter being Item_sum_avg::count). The count is incremented only if the row's value is not NULL (in Item_sum_avg::add()), per AVG() semantices. This row's value is available in args[0] of Item_sum_avg ("args[0]" stands for "the first argument of the item": it's an Item_field which automatically receives the row's value when a row is read from the table). bool Item_sum_avg::add() { if (Item_sum_sum::add()) << calculates the sum (ignores NULL) return TRUE; if (!args[0]->null_value)<<if added value is not NULL count++; <<increment "count" return FALSE; } and everything works. With DISTINCT, when a row is processed by evaluate_join_record(), Item_sum_avg does no immediate computation, rather stores the row's value in a tree (to throw the value away if it is a duplicate of previous value, otherwise to remember all distinct values). It's only when it's time to send the average to the user (at end of the query: sub_select(end_of_records=true)->end_send_group()-> select_send->send_data()->Protocol::send_result_set_row()-> Item::send()->Item_sum_avg->val_str()), that we iterate over the tree, compute the sum and count: for this, for each element of the tree, Item_sum_avg::add() is called and has the same two steps as before: * Item_sum_sum::add() updates the sum (finding the tree element's value correctly, and determining correctly its NULLness - look for "arg_is_null" in that function) * the "if (!args[0]->null_value)" test right after, breaks: it uses args[0], which isn't the tree's element but rather the value for the last row processed by evaluate_join_record(). So if that last row was NULL, "count" stays 0 for each row, and AVG() then returns NULL (count==0 => NULL, per AVG() semantics). The fix is to let the aggregator tell whether the value it just saw was NULL. The aggregator knows where to get the info thanks to virtual functions. Item_sum_sum::add() now asks the aggregator. Item_sum_avg() also asks the aggregator and then knows it shouldn't increment "count". sql/item_sum.h: Aggregator can now tell about value/NULLness of just-aggregated value
-
Nirbhay Choubey authored
-
Davi Arnaut authored
Do not use the same maintainer mode flags for both GCC and ICC. The -Wall option for ICC enables more warnings than its GCC counterpart.
-
Luis Soares authored
Null merge to from mysql-5.1-bugteam to mysql-5.5-bugteam. Test case does not exist in 5.5 tree.
-
Luis Soares authored
Automerging bzr bundle from bug report into latest mysql-5.1-bugteam.
-
Marc Alff authored
-