- 09 Mar, 2011 1 commit
-
-
Michael Widenius authored
-
- 08 Mar, 2011 4 commits
-
-
Michael Widenius authored
-
unknown authored
Analysis: The assert failed because the execution code for partial matching is designed with the assumption that NULLs on the left side are detected as early as possible, and a NULL result is returned before any lookups are performed at all. However, in the case of an Item_cache object on the left side, null was not detected properly, because detection was done via Item::is_null(), which is not implemented at all for Item_cache, and resolved to the default Item::is_null() which always returns FALSE. Solution: Use the property Item::null_value instead of is_null(), which is properly updated for Item_cache objects as well.
-
Michael Widenius authored
-
Michael Widenius authored
Don't check if LAST_IO_Error has changed as this is not a user variable and it may change depending on timing issues between master and slave
-
- 07 Mar, 2011 1 commit
-
-
Vladislav Vaintroub authored
-
- 04 Mar, 2011 6 commits
-
-
Sergey Petrunya authored
-
Michael Widenius authored
-
Michael Widenius authored
-
Michael Widenius authored
-
Sergey Petrunya authored
Generally, we should use only small letters for table names but here it's easier to fix with one --replace.
-
Sergey Petrunya authored
- cleaner code - ability to change from using pointers to offsets at some point
-
- 03 Mar, 2011 4 commits
-
-
Sergey Petrunya authored
-
Sergey Petrunya authored
-
Sergey Petrunya authored
- The problem was that Mrr_ordered_index_reader's interrupt_read() and resume_read() would save and restore 1) index tuple 2) the rowid (as bytes returned by handler->position()). Clustered primary key columns were not saved/restored. They are not explicitly present in the index tuple (i.e. table->key_info[secondary_key].key_parts doesn't list them), but they are actually there, in particular table->field[clustered_primary_key_member].part_of_key(secondary_key) == 1. Index condition pushdown code [correctly] uses the latter as inidication that pushed index condition can refer to clustered PK members. The fix was to make interrupt_read()/resume_read() to save/restore clustered primary key members as well, so that we get correct values for them when evaluating pushed index condition. [3rd attempt: remove the debugging aids, fix comments in testcase]
-
unknown authored
Analysis: The reason for the crash was that the inner subquery was executed via a scan on a final temporary table applied after all other operations. This final operation is implemented by changing the contents of the JOIN object of the subquery to represent a table scan over the temp table. At the same time query optimization of the outer subquery required evaluation of the inner subquery, which happened before the actual EXPLAIN. The evaluation left the JOIN object of the inner subquery in the changed state, where it represented a table scan over a temp table, and EXPLAIN crashed because the temp table is not associated with any table reference (TABLE_LIST object). The reason the JOIN was not restored was because its saving/restoration was controlled by the join->select_lex->uncacheable flag, which was not set in the case of materialization. Solution: In the methods Item_in_subselect::[single | row]_value_transformer() set: select_lex->uncacheable|= UNCACHEABLE_EXPLAIN; In addition, for symmetry, change: master_unit->uncacheable|= UNCACHEABLE_EXPLAIN; instead of UNCACHEABLE_DEPENDENT because if a subquery was not dependent initially, the changed methods do not change this fact. The subquery may later become correlated if it is transformed to an EXISTS query, but it may stay uncorrelated if executed via materialization.
-
- 02 Mar, 2011 1 commit
-
-
Sergey Petrunya authored
- Make DsMrr_impl::dsmrr_init() handle the case of 1. 1st MRR scan using DS-MRR strategy (i.e. doing key sorting and rowid sorting) 2. 2nd MRR scan getting a buffer that's too small to fit one key element and one rowid element, and so falling back to default MRR implementation In this case, dsmrr_init() is invoked with {primary_handler, secondary_handler} initialized for DS-MRR scan and have to reset them to be initialized for the default MRR scan. (attempt 2, with simplified testcase)
-
- 01 Mar, 2011 11 commits
-
-
Michael Widenius authored
-
Sergei Golubchik authored
-
Sergei Golubchik authored
-
unknown authored
-
unknown authored
-
Michael Widenius authored
-
Michael Widenius authored
-
unknown authored
-
Michael Widenius authored
mysql-test/suite/sphinx/suite.pm: Update test to support 1.10-beta storage/maria/unittest/ma_test_all-t: Fixed old filenames
-
Sergey Petrunya authored
-
Igor Babaev authored
-
- 28 Feb, 2011 9 commits
-
-
Michael Widenius authored
-
Michael Widenius authored
- Added ORDER BY to get consistent results to federated_server - Sort slow tests first mysql-test/lib/My/ConfigFactory.pm: Remove usage of port as the test suite is not using that anymore and it causes some probelms in buildbot mysql-test/lib/mtr_cases.pm: Sort slow tests first If a test is marked as 'big_test' also mark it as 'long_test' mysql-test/suite/federated/federated_server.result: Added ORDER BY to get consistent results mysql-test/suite/federated/federated_server.test: Added ORDER BY to get consistent results
-
Sergey Petrunya authored
- Make equality-substitution-for-ref-access code in JOIN::optimize() treat join_tab->ref.key_copy correctly (in the way create_ref_for_key() has filled it).
-
Michael Widenius authored
mysql-test/suite/parts/t/partition_alter4_innodb.test: Removed duplicated big_test marker sql-common/my_time.c: Get rid of compiler warning about uninitialized members
-
Michael Widenius authored
Taged a couple of tests with --big-test configure.in: Upgrade version number mysql-test/suite/parts/t/partition_alter1_1_2_innodb.test: Removed duplicate big_test tag mysql-test/suite/parts/t/partition_alter1_2_innodb.test: Removed duplicate big_test tag mysql-test/suite/parts/t/partition_decimal_innodb.test: Added big_test tag as this takes forever with valgrind mysql-test/suite/parts/t/partition_decimal_myisam.test: Removed duplicate big_test tag
-
Michael Widenius authored
-
Michael Widenius authored
-
Michael Widenius authored
Changed some String.ptr() -> String.c_ptr() for String that are not guaranteed to end with \0 Removed some c_ptr() usage from parameters to functions that takes ptr & length Use preallocate buffers to avoid calling malloc() for most operations. sql/event_db_repository.cc: alias is now a String sql/event_scheduler.cc: c_ptr -> c_ptr_safe() to avoid warnings from valgrind. sql/events.cc: c_ptr -> c_ptr_safe() to avoid warnings from valgrind. c_ptr -> ptr() as function takes ptr & length sql/field.cc: alias is now a String sql/field.h: alias is now a String sql/ha_partition.cc: alias is now a String sql/handler.cc: alias is now a String ptr() -> c_ptr() as string is not guaranteed to be \0 terminated sql/item.cc: Store error parameter in separarte buffer to ensure correct error message sql/item_func.cc: ptr() -> c_ptr_safe() as string is not guaranteed to be \0 terminated sql/item_sum.h: Use my_strtod() instead of my_atof() to not have to make string \0 terminated sql/lock.cc: alias is now a String sql/log.cc: c_ptr() -> ptr() as function takes ptr & length sql/log_event.cc: c_ptr_quick() -> ptr() as we only want to get the pointer to String buffer sql/opt_range.cc: ptr() -> c_ptr() as string is not guaranteed to be \0 terminated sql/opt_table_elimination.cc: alias is now a String sql/set_var.cc: ptr() -> c_ptr() as string is not guaranteed to be \0 terminated c_ptr() -> c_ptr_safe() to avoid warnings from valgrind. c_ptr() -> ptr() as function takes ptr & length Simplify some code. sql/sp.cc: c_ptr() -> ptr() as function takes ptr & length sql/sp_rcontext.cc: alias is now a String sql/sql_base.cc: alias is now a String. Here we win a realloc() for most alias usage. sql/sql_class.cc: Use size descriptor for printf() to avoid accessing bytes outside of buffer sql/sql_insert.cc: Change allocation of TABLE as it's now contains a String _ptr() -> ptr() as function takes ptr & length sql/sql_load.cc: Use preallocate buffers to avoid calling malloc() for most operations. sql/sql_parse.cc: Use c_ptr_safe() to ensure string is \0 terminated. sql/sql_plugin.cc: c_ptr_quick() -> ptr() as function takes ptr & length sql/sql_select.cc: alias is now a String sql/sql_show.cc: alias is now a String sql/sql_string.h: Added move() function to change who owns the string (owner does the free) sql/sql_table.cc: alias is now a String c_ptr() -> c_ptr_safe() to avoid warnings from valgrind. sql/sql_test.cc: c_ptr() -> c_ptr_safe() to avoid warnings from valgrind. alias is now a String sql/sql_trigger.cc: c_ptr() -> c_ptr_safe() to avoid warnings from valgrind. Use field->init() to setup pointers to alias. sql/sql_update.cc: alias is now a String sql/sql_view.cc: ptr() -> c_ptr_safe() as string is not guaranteed to be \0 terminated sql/sql_yacc.yy: r() -> c_ptr() as string is not guaranteed to be \0 terminated sql/table.cc: alias is now a String sql/table.h: alias is now a String storage/federatedx/ha_federatedx.cc: Remove extra 1 byte alloc that is automaticly done by strmake() Ensure that error message ends with \0 storage/maria/ha_maria.cc: alias is now a String storage/myisam/ha_myisam.cc: alias is now a String
-
Igor Babaev authored
The bug in the function print_keyuse() caused crashes if hash join could be used. It happened because the function ignored the fact that KEYUSE structures could be created for hash joins as well.
-
- 27 Feb, 2011 3 commits
-
-
Igor Babaev authored
-
Igor Babaev authored
sql/mysqld.cc: Fixed: optimize_join_buffer_size was missing in the description of possible options for the optimizer switch. sql/sql_select.cc: Fixed: initialization for the field ref_table_rows of the KEYUSE structure was missing (as a result of a lame merge).
-
Igor Babaev authored
-