- 03 Sep, 2008 6 commits
-
-
Mats Kindahl authored
The assertion indicates that some data was left in the transaction cache when the server was shut down, which means that a previous statement did not commit or rollback correctly. What happened was that a bug in the rollback of a transactional table caused the transaction cache to be emptied, but not reset. The error can be triggered by having a failing UPDATE or INSERT, on a transactional table, causing an implicit rollback. Fixed by always flushing the pending event to reset the state properly. mysql-test/extra/rpl_tests/rpl_row_basic.test: Testing that a failed update (that writes some rows to the transaction cache) does not cause the transaction cache to hold on to the data or forget to reset the transaction cache. sql/log.cc: Added call to remove pending event when the transaction cache is emptied instead of written to binary log. The call will also clear the outstanding table map count so that the cache is not left it in a state of "empty but not reset". Added function MYSQL_BIN_LOG::remove_pending_rows_event(). sql/log.h: Added function MYSQL_BIN_LOG::remove_pending_rows_event(). sql/sql_class.cc: Adding function THD::binlog_remove_pending_rows_event(). sql/sql_class.h: Adding function THD::binlog_remove_pending_rows_event().
-
Andrei Elkin authored
-
Andrei Elkin authored
The replication filtering rules were inappropiately applied when executing BINLOG pseudo-query. The rules are supposed to be active only at times when the slave's sql thread executes an event. Fixed with correcting a condition to call replication rules only if the slave sql thread executes the event. mysql-test/suite/rpl/r/rpl_binlog_query_filter_rules.result: new result file mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules-master.opt: a filtering option that would refuse to replicate a row event of the main test on slave mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules.test: a regression test for the bug sql/log_event.cc: avoiding to call the filtering rules if the execution thread is not a slave.
-
Gleb Shchepa authored
-
Gleb Shchepa authored
-
Gleb Shchepa authored
INSERT .. SELECT .. ON DUPLICATE KEY UPDATE col=DEFAULT In order to get correct values from update fields that belongs to the SELECT part in the INSERT .. SELECT .. ON DUPLICATE KEY UPDATE statement, the server adds referenced fields to the select list. Part of the code that does this transformation is shared between implementations of the DEFAULT(col) function and the DEFAULT keyword (in the col=DEFAULT expression), and an implementation of the DEFAULT keyword is incomplete. mysql-test/r/default.result: Added test case for bug #39002. mysql-test/t/default.test: Added test case for bug #39002. sql/item.cc: The Item_default_value::transform() function has been modified to take into account the fact that the DEFAULT keyword has no arguments unlike the DEFAULT(col) function that always has an argument.
-
- 28 Aug, 2008 3 commits
-
-
Georgi Kodinov authored
-
Georgi Kodinov authored
-
Georgi Kodinov authored
-
- 27 Aug, 2008 11 commits
-
-
Gleb Shchepa authored
returns unexpected result If: 1. a table has a not nullable BIT column c1 with a length shorter than 8 bits and some additional not nullable columns c2 etc, and 2. the WHERE clause is like: (c1 = constant) AND c2 ..., the SELECT query returns unexpected result set. The server stores BIT columns in a tricky way to save disk space: if column's bit length is not divisible by 8, the server places reminder bits among the null bits at the start of a record. The rest bytes are stored in the record itself, and Field::ptr points to these rest bytes. However if a bit length of the whole column is less than 8, there are no remaining bytes, and there is nothing to store in the record at its regular place. In this case Field::ptr points to bytes actually occupied by the next column in a record. If both columns (BIT and the next column) are NOT NULL, the Field::eq function incorrectly deduces that this is the same column, so query transformation/equal item elimination code (see build_equal_items_for_cond) may mix these columns and damage conditions containing references to them. mysql-test/r/type_bit.result: Added test case for bug #37799. mysql-test/t/type_bit.test: Added test case for bug #37799. sql/field.h: 1. The Field::eq function has been modified to take types of comparing columns into account to distinguish between BIT and not BIT columns referencing the same bytes in a record. 2. Unnecessary type comparison has been removed from the Field_bit::eq function (moved to Field::eq).
-
Mats Kindahl authored
-
Georgi Kodinov authored
-
Georgi Kodinov authored
When switching to indexed ORDER BY we must be sure to reset the index read flag if we are switching from a covering index to non-covering. mysql-test/r/subselect.result: Bug#37548: test case mysql-test/t/subselect.test: Bug#37548: test case sql/sql_select.cc: Bug#37548: update the index read flag if the index for indexed ORDER BY is not covering.
-
Mats Kindahl authored
-
Mats Kindahl authored
-
Evgeny Potemkin authored
used causes server crash. When the loose index scan access method is used values of aggregated functions are precomputed by it. Aggregation of such functions shouldn't be performed in this case and functions should be treated as normal ones. The create_tmp_table function wasn't taking this into account and this led to a crash if a query has MIN/MAX aggregate functions and employs temporary table and loose index scan. Now the JOIN::exec and the create_tmp_table functions treat MIN/MAX aggregate functions as normal ones when the loose index scan is used. mysql-test/r/group_min_max.result: Added a test case for the bug#38195. mysql-test/t/group_min_max.test: Added a test case for the bug#38195. sql/sql_select.cc: Bug#38195: Incorrect handling of aggregate functions when loose index scan is used causes server crash. The JOIN::exec and the create_tmp_table functions treat MIN/MAX aggregate functions as normal ones when the loose index scan is used.
-
Mats Kindahl authored
-
Mats Kindahl authored
-
Mats Kindahl authored
tables open When executing a DROP DATABASE statement in ROW mode and having temporary tables open at the same time, the existance of temporary tables prevent the server from switching back to row mode after temporarily switching to statement mode to handle the logging of the statement. Fixed the problem by removing the code to switch to statement mode and added code to temporarily disable the binary log while dropping the objects in the database. mysql-test/extra/binlog_tests/database.test: Added test to ensure that DROP DATABASE does not affect the replication mode. sql/sql_db.cc: Removed code that clears the current_stmt_binlog_row_based flag. Added code to disable the binary log while dropping the objects in a database.
-
Davi Arnaut authored
-
- 26 Aug, 2008 18 commits
-
-
Davi Arnaut authored
-
Davi Arnaut authored
-
Mattias Jonsson authored
-
Mattias Jonsson authored
post push fix Updated partition_symlink since different error behavior if embedded (or not partitioned) mysql-test/r/partition_symlink.result: Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY updated result file mysql-test/t/partition_symlink.test: Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY Fix for embedded
-
Ramil Kalimullin authored
-
Ramil Kalimullin authored
Typo fixed. No test case as we actually don't use rtree_get_first() and rtree_get_next() at present.
-
Ramil Kalimullin authored
Problem: data consistency check (maximum record length) for a correct MyISAM table with CHECKSUM=1 and ROW_FORMAT=DYNAMIC option may fail due to wrong inner MyISAM parameter. In result we may have the table marked as 'corrupted'. Fix: properly set MyISAM maximum record length parameter. myisam/mi_create.c: Fix for bug #37310: 'on update CURRENT_TIMESTAMP' option crashes the table Use HA_OPTION_PACK_RECORD instead of HA_PACK_RECORD (typo?) calculating packed record length.
-
He Zhenxing authored
mysql-test/include/wait_for_slave_sql_error_and_skip.inc: include/start_slave.inc not exist yet, changed to start slave and source include/wait_for_slave_to_start.inc mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result: update result
-
Alexey Botchkov authored
-
Alexey Botchkov authored
-
He Zhenxing authored
-
He Zhenxing authored
-
Alexander Barkov authored
-
Alexey Botchkov authored
-
Alexey Botchkov authored
-
Alexey Botchkov authored
-
Alexey Botchkov authored
-
Alexander Barkov authored
-
- 25 Aug, 2008 2 commits
-
-
Sergey Petrunia authored
-
Sergey Petrunia authored
-