CREATE/DROP TEMPORARY TABLE + ROLLBACK on master
The transaction ability of the storage engines of
the tables on the replication master and the replication
slave must generally be the same.
When the storage engine type of the slave is
non-transactional then transactions on the master that
mix update of transactional and non-transactional tables
should be avoided because they will cause inconsistency of
the data between the master's transactional table and the
slave's non-transactional table.
The effect described by this bug is actually expected.
A detailed test case is added (to be merged later to
the updated rpl_ddl.test), as there was no coverage
by the existing tests.
Some code cleanup is also added by this change.
mysql-test/r/rpl_innodb.result:
Bug #26418: test case
mysql-test/t/rpl_innodb.test:
Bug #26418: test case
sql/events.cc:
Bug #26418: replace repeating code with a function call
sql/sp.cc:
Bug #26418: replace repeating code with a function call
sql/sql_acl.cc:
Bug #26418: replace repeating code with a function call
sql/sql_class.cc:
Bug #26418: remove dead code
sql/sql_class.h:
Bug #26418: remove dead code
sql/sql_delete.cc:
Bug #26418: replace repeating code with a function call
sql/sql_parse.cc:
Bug #26418: replace repeating code with a function call
sql/sql_rename.cc:
Bug #26418: replace repeating code with a function call
sql/sql_tablespace.cc:
Bug #26418: replace repeating code with a function call
sql/sql_trigger.cc:
Bug #26418: replace repeating code with a function call
sql/sql_udf.cc:
Bug #26418: replace repeating code with a function call
sql/sql_view.cc:
Bug #26418: replace repeating code with a function call
Problem: we use 'sleep 2; wait_for_slave_to_stop;' to reach some slave's states
which is buggy, wasteful of time, platform dependant etc.
Fix: use include/wait_for_slave_***.inc's where it's possible instead.
mysql-test/include/wait_for_slave_io_to_stop.inc:
Fix for bug #28772: rpl_row_until fails in pushbuild
- changed to use query_vertical so that it is easier to read the output.
mysql-test/include/wait_for_slave_sql_to_stop.inc:
Fix for bug #28772: rpl_row_until fails in pushbuild
- changed to use query_vertical so that it is easier to read the output.
mysql-test/include/wait_for_slave_to_start.inc:
Fix for bug #28772: rpl_row_until fails in pushbuild
- changed to use query_vertical so that it is easier to read the output.
mysql-test/include/wait_for_slave_to_stop.inc:
Fix for bug #28772: rpl_row_until fails in pushbuild
- changed to use query_vertical so that it is easier to read the output.
mysql-test/t/rpl_row_until.test:
Fix for bug #28772: rpl_row_until fails in pushbuild
- 'sleep 2; wait_for_slave_to_stop;' replaced with sourcing
include/wait_for_slave_sql_to_stop.inc to be more predictable.
mysql-test/t/rpl_stm_until.test:
Fix for bug #28772: rpl_row_until fails in pushbuild
- 'sleep 2; wait_for_slave_to_stop;' replaced with sourcing
include/wait_for_slave_sql_to_stop.inc to be more predictable.
mysql-test/r/sp.result:
Auto merged
mysql-test/t/query_cache.test:
Auto merged
mysql-test/t/sp.test:
Auto merged
sql/handler.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
counters from relay
Updated the test to return columns vertically.
mysql-test/r/rpl_change_master.result:
Bug #29116: test updated
mysql-test/t/rpl_change_master.test:
Bug #29116: test updated
into pilot.(none):/data/msvensson/mysql/mysql-5.1-new-maint
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/t/mysqltest.test:
Auto merged
BitKeeper/deleted/.del-wait_for_slave_io_to_stop.inc:
Auto merged
mysql-test/r/binlog_unsafe.result:
Result change
mysql-test/r/rpl_loaddata_fatal.result:
Result change
mysql-test/r/rpl_udf.result:
Result change
mysql-test/t/binlog_innodb.test:
Test requires binary log
mysql-test/t/binlog_unsafe.test:
Test requires binary log
mysql-test/t/multi_update.test:
Test requires binary log.
Error changed for a statement.
mysql-test/t/rpl_row_basic_11bugs.test:
Error changed for a statement.
- Add test case for this already existing feature
mysql-test/r/mysqltest.result:
Update result file
mysql-test/t/mysqltest.test:
Add test case for this feature
- Move binlog related tests to binlog_innodb.test
- Remove "source include/have_log_bin.inc" from innodb.test
mysql-test/r/innodb.result:
Move binlog related tests to binlog_innodb.test
mysql-test/t/innodb.test:
Move binlog related tests to binlog_innodb.test
mysql-test/r/binlog_innodb.result:
Move binlog related tests to binlog_innodb.test
mysql-test/t/binlog_innodb.test:
Move binlog related tests to binlog_innodb.test
into damien-katzs-computer.local:/Users/dkatz/mysql51
mysql-test/r/udf.result:
Auto merged
mysql-test/t/udf.test:
Auto merged
sql/sql_yacc.yy:
This line that marks the expression as unsafe for caching now belongs in the create() methods for builder objects inheriting from Create_func.
into whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-rpl
mysql-test/extra/rpl_tests/rpl_log.test:
Auto merged
mysql-test/extra/rpl_tests/rpl_row_basic.test:
Auto merged
mysql-test/t/rpl_ndb_bank.test:
Auto merged
mysql-test/t/rpl_ndb_basic.test:
Auto merged
mysql-test/t/rpl_ndb_do_table.test:
Auto merged
mysql-test/t/rpl_ndb_idempotent.test:
Auto merged
mysql-test/t/rpl_ndb_stm_innodb.test:
Auto merged
mysql-test/t/rpl_ndb_sync.test:
Auto merged
sql/ha_ndbcluster_binlog.cc:
Auto merged
storage/ndb/test/run-test/daily-basic-tests.txt:
Auto merged
mysql-test/include/have_multi_ndb.inc:
manual merge
mysql-test/include/have_ndb.inc:
manual merge
mysql-test/t/rpl_ndb_commit_afterflush.test:
manual merge
mysql-test/t/rpl_ndb_ddl.test:
manual merge
mysql-test/t/rpl_ndb_innodb_trans.test:
manual merge
Fixed runtime to no longer allow the caching of queries with UDF calls.
mysql-test/r/udf.result:
Added a test that turns on caching and checks that querys calling UDFs don't get cached.
mysql-test/t/udf.test:
Added a test that turns on caching and checks that querys calling UDFs don't get cached.
sql/sql_yacc.yy:
Fixed code to set safe_to_cache_query=0 regardless if the function call is a UDF or SP. Where it was placed previously -- at the very end of the else testing for UDFs -- it only executed the statement if the function call was a stored procedure call.
Changed code to enforce that SQL_CACHE only in the first SELECT is used to turn on caching(as documented), but any SQL_NO_CACHE will turn off caching (not documented, but a useful behaviour, especially for machine generated queries). Added test cases to explicitly test the documented caching behaviour and test cases for the reported bug.
mysql-test/r/query_cache.result:
Added non-bug specific tests that ensure that only SQL_CACHE in the first SELECT is respected when encountered by the parser. These tests validate what is already documented, that only the outer most SELECTS can use the SQL_CACHE option to turn on caching. Because it would break existing SQL applications, we do not return an error if the SQL_CACHE expression is found in nested SELECTs. Also added test to validate nested SELECT can contain SQL_NO_CACHE and it will always turn off caching for the whole query.
Also added a bug specific test case to validate that the buggy behavior as reported has been fixed.
mysql-test/t/query_cache.test:
Added non-bug specific tests that ensure that only SQL_CACHE in the first SELECT is respected when encountered by the parser. These tests validate what is already documented, that only the outer most SELECTS can use the SQL_CACHE option to turn on caching. Because it would break existing SQL applications, we do not return an error if the SQL_CACHE expression is found in nested SELECTs. Also added test to validate nested SELECT can contain SQL_NO_CACHE and it will always turn off caching for the whole query.
Also added a bug specific test case to validate that the buggy behavior as reported has been fixed.
sql/sql_yacc.yy:
Added an explicit check to make sure "SELECT SQL_CACHE" only works on the first select in a query.
The parser will always hit the outermost SELECT first, and if the SQL_CACHE option is found it sets the safe_to_query flag in the lex. Then, if there are subseqent "uncachable" subqueries or functions, as it parses those elements it sets the safe_to_query to 0. However, this cause problems if nested SELECTs also used the SQL_CACHE option, because then it would set back safe_to_query to 1, even though there are uncacheable expressions previously parsed.
By adding the check to ensure only the first SELECT can turn caching on, it means a subsequent SQL_CACHE option can't turn caching back on after a uncacheable subsequery was already encountered.
When all table blocks were removed from the query cache the client session
hung in a tight loop waiting on an impossible condition while consuming a lot
of CPU.
This patch also corrects an error which caused valid tables to sometimes be
removed from the query cache.
mysql-test/r/query_cache.result:
Added test case to make sure server doesn't hang in a tight loop if last
table block is removed from the cache.
mysql-test/t/query_cache.test:
Added test case to make sure server doesn't hang in a tight loop if last
table block is removed from the cache.
sql/sql_cache.cc:
- Refactored loop over table blocks. The invalidate_table() function effects
the elements over which we iterate. The previous stop condition was broken
due to a compiler optimization error probably caused by the goto-statement
pointing out of the loop. The effect being that tables_blocks was never
checked for null values and thus the loop never terminated.
- The new implementation uses two while loops instead of a goto-statement.
The tables_blocks is a circular list which becomes null if the last table
block is removed from the list.
- make tests wait until ndb connects properly
mysql-test/extra/rpl_tests/rpl_commit_after_flush.test:
make tests wait until ndb connects properly
mysql-test/extra/rpl_tests/rpl_delete_no_where.test:
make tests wait until ndb connects properly
mysql-test/extra/rpl_tests/rpl_insert_ignore.test:
make tests wait until ndb connects properly
mysql-test/extra/rpl_tests/rpl_log.test:
make tests wait until ndb connects properly
mysql-test/extra/rpl_tests/rpl_multi_update2.test:
make tests wait until ndb connects properly
mysql-test/extra/rpl_tests/rpl_multi_update3.test:
make tests wait until ndb connects properly
mysql-test/extra/rpl_tests/rpl_relayrotate.test:
make tests wait until ndb connects properly
mysql-test/extra/rpl_tests/rpl_row_001.test:
make tests wait until ndb connects properly
mysql-test/extra/rpl_tests/rpl_row_UUID.test:
make tests wait until ndb connects properly
mysql-test/extra/rpl_tests/rpl_row_basic.test:
make tests wait until ndb connects properly
mysql-test/extra/rpl_tests/rpl_row_blob.test:
make tests wait until ndb connects properly
mysql-test/extra/rpl_tests/rpl_row_charset.test:
make tests wait until ndb connects properly
mysql-test/extra/rpl_tests/rpl_row_func003.test:
make tests wait until ndb connects properly
mysql-test/extra/rpl_tests/rpl_row_sp003.test:
make tests wait until ndb connects properly
mysql-test/extra/rpl_tests/rpl_row_sp006.test:
make tests wait until ndb connects properly
mysql-test/include/have_multi_ndb.inc:
make tests wait until ndb connects properly
mysql-test/include/have_ndb.inc:
make tests wait until ndb connects properly
mysql-test/include/ndb_not_readonly.inc:
make tests wait until ndb connects properly
mysql-test/t/rpl_commit_after_flush.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_delete_no_where.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_insert_ignore.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_multi_update2.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_multi_update3.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_2innodb.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_2myisam.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_UUID.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_auto_inc.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_bank.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_basic.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_blob.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_blob2.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_charset.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_circular.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_circular_simplex.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_commit_afterflush.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_dd_advance.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_dd_basic.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_dd_partitions.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_ddl.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_delete_nowhere.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_do_db.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_do_table.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_extraCol.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_func003.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_idempotent.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_innodb2ndb.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_innodb_trans.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_insert_ignore.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_load.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_log.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_multi.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_multi_update2.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_multi_update3.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_myisam2ndb.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_relayrotate.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_rep_ignore.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_row_001.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_sp003.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_sp006.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_stm_innodb.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_sync.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndb_trig004.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_ndbapi_multi.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_relayrotate.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_row_001.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_row_UUID.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_row_basic_2myisam.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_row_basic_3innodb.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_row_basic_7ndb.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_row_blob_innodb.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_row_blob_myisam.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_row_charset.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_row_func003.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_row_log.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_row_log_innodb.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_row_sp003.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_row_sp006_InnoDB.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_stm_log.test:
make tests wait until ndb connects properly
mysql-test/t/rpl_truncate_7ndb.test:
make tests wait until ndb connects properly
mysql-test/include/ndb_master-slave.inc:
New BitKeeper file ``mysql-test/include/ndb_master-slave.inc''
The method select_insert::send_error does two things, it rolls back a statement
being executed and outputs an error message. But when a
nonexistent column is referenced, an error message has been published already and
there is no need to publish another.
Fixed by moving all functionality beyond publishing an error message into
select_insert::abort() and calling only that function.
mysql-test/r/errors.result:
Bug#28677: test result
mysql-test/t/errors.test:
Bug#28677: test case
sql/sql_class.h:
Bug#28677: overriding abort()
sql/sql_insert.cc:
Bug#28677:
- moved everything beyond producing an error message out of select_insert::send_error
and into new override select_insert::abort()
- made corresponding move of code from select_create::send_error to select_create::abort
sql/sql_select.cc:
Bug#28677: No need to pusblish an error here
into gleb.loc:/home/uchum/work/bk/5.1-opt
mysql-test/r/func_str.result:
Auto merged
mysql-test/t/func_str.test:
Auto merged
sql/item_strfunc.cc:
Auto merged
into mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge
mysql-test/t/disabled.def:
Auto merged
mysql-test/t/ndb_basic.test:
Auto merged
mysql-test/t/ndb_insert.test:
Auto merged
mysql-test/t/ndb_restore.test:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/handler.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
storage/myisam/ha_myisam.cc:
Auto merged
storage/myisammrg/ha_myisammrg.h:
Auto merged
sql/share/errmsg.txt:
SCCS merged
mysql-test/r/binlog_multi_engine.result:
Result change
mysql-test/t/binlog_multi_engine.test:
Commenting out statements that generate non-deterministic results.
into mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge
mysql-test/t/innodb.test:
Auto merged
mysql-test/t/ndb_basic.test:
Auto merged
mysql-test/t/ndb_charset.test:
Auto merged
mysql-test/t/ndb_index_unique.test:
Auto merged
mysql-test/t/ndb_insert.test:
Auto merged
mysql-test/t/ndb_replace.test:
Auto merged
mysql-test/t/ndb_update.test:
Auto merged
mysql-test/t/rpl_000015.test:
Auto merged
mysql-test/t/rpl_rotate_logs.test:
Auto merged
mysql-test/t/rpl_row_inexist_tbl.test:
Auto merged
sql/Makefile.am:
Auto merged
BitKeeper/deleted/.del-ndb_binlog_basic2.test:
Auto merged
sql/field.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
storage/myisam/ha_myisam.cc:
Auto merged
sql/item_create.cc:
Manual merge
represented by an expression of the type UNSIGNED INT and this
expression was evaluated to 0 then the function erroneously returned
the value of the first argument instead of an empty string.
This problem was introduced by the patch for bug 10963.
The problem has been resolved by a proper modification of the code of
Item_func_substr::val_str.
mysql-test/r/func_str.result:
Added a test case for bug #27130.
mysql-test/t/func_str.test:
Added a test case for bug #27130.
into whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-engines
extra/perror.c:
Auto merged
mysql-test/t/ndb_basic.test:
Auto merged
mysql-test/t/ndb_insert.test:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/handler.h:
Auto merged
sql/mysqld.cc:
Auto merged
storage/ndb/src/common/transporter/Packer.cpp:
Auto merged
storage/ndb/src/common/transporter/TCP_Transporter.hpp:
Auto merged
storage/ndb/src/common/transporter/TransporterRegistry.cpp:
Auto merged
storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp:
Auto merged
storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
Auto merged
storage/ndb/src/mgmclient/main.cpp:
Auto merged
storage/ndb/src/ndbapi/NdbBlob.cpp:
Auto merged
storage/ndb/test/ndbapi/testNdbApi.cpp:
Auto merged
storage/ndb/test/run-test/daily-basic-tests.txt:
Auto merged
storage/ndb/tools/restore/consumer_restore.cpp:
Auto merged
mysql-test/t/disabled.def:
manual merge