1
0
mirror of https://github.com/MariaDB/server.git synced 2025-10-21 08:47:42 +03:00
Commit Graph

3079 Commits

Author SHA1 Message Date
Alexander Nozdrin
077e7c9a87 Manual merge from mysql-trunk-merge.
Conflicts:
  - mysql-test/collections/default.experimental
  - mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result
  - mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test
2010-01-31 00:26:38 +03:00
Alexander Nozdrin
2b90de942c Manual merge from mysql-trunk-merge.
Conflicts:
  - sql/event_db_repository.cc
  - sql/events.cc
  - sql/sp.cc
  - sql/sql_acl.cc
  - sql/sql_udf.cc
2010-01-30 23:09:31 +03:00
unknown
54fc7997e2 Auto Merge fix for bug#50157 2010-01-31 03:14:29 +08:00
Alexander Nozdrin
0da16c7c2a Manual merge from mysql-5.1-bugteam.
Conflicts:
  - mysql-test/collections/default.experimental
  - mysql-test/suite/rpl/r/rpl_binlog_grant.result
  - mysql-test/suite/rpl/r/rpl_sp.result
  - mysql-test/suite/rpl/t/rpl_binlog_grant.test
  - mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test
2010-01-30 22:13:36 +03:00
Alexander Nozdrin
5aa4c33e32 Manual merge from mysql-5.1-bugteam.
Conflicts:
  - sql/mysql_priv.h
2010-01-30 21:47:11 +03:00
Alexander Nozdrin
6ee51dc7ef Auto-merge from mysql-5.1-bugteam. 2010-01-30 21:27:06 +03:00
unknown
a1bfae20cb BUG#50157 Assertion !active_tranxs_->is_tranx_end_pos(..) in ReplSemiSyncMaster::commitTrx
The root cause of the crash is that a TranxNode is freed before it is used.
A TranxNode is allocated and inserted into the active list each time 
a log event is written and flushed into the binlog file. 
The memory for TranxNode is allocated with thd_alloc and will be freed 
at the end of the statement. The after_commit/after_rollback callback
was supposed to be called before the end of each statement and remove the node from
the active list. However this assumption is not correct in all cases(e.g. call 
'CREATE TEMPORARY TABLE myisam_t SELECT * FROM innodb_t' in a transaction
 and delete all temporary tables automatically when a session closed), 
and can cause the memory allocated for TranxNode be freed
before it was removed from the active list. So The TranxNode pointer in the active
list would become a wild pointer and cause the crash.

After this patch, We have a class called a TranxNodeAllocate which manages the memory
for allocating and freeing TranxNode. It uses my_malloc to allocate memory.


sql/rpl_handler.cc:
  params are not initialized.
2010-01-31 02:26:51 +08:00
unknown
d9e9a73e8f Bug #48321 CURRENT_USER() incorrectly replicated for DROP/RENAME USER;
REVOKE/GRANT; ALTER EVENT.

The following statements support the CURRENT_USER() where a user is needed.
  DROP USER 
  RENAME USER CURRENT_USER() ...
  GRANT ... TO CURRENT_USER()
  REVOKE ... FROM CURRENT_USER()
  ALTER DEFINER = CURRENT_USER() EVENT
but, When these statements are binlogged, CURRENT_USER() just is binlogged
as 'CURRENT_USER()', it is not expanded to the real user name. When slave 
executes the log event, 'CURRENT_USER()' is expand to the user of slave 
SQL thread, but SQL thread's user name always NULL. This breaks the replication.

After this patch, All above statements are rewritten when they are binlogged.
The CURRENT_USER() is expanded to the real user's name and host.
2010-01-30 20:49:25 +08:00
Andrei Elkin
b5291fb782 merging to a local bug fixes tree 2010-01-29 21:28:11 +02:00
Andrei Elkin
8d240586b5 Bug #50192 Strange effect in replication test, trigger, auto_increment
The auto-inc unsafe warning makes sense even though it's just
one auto-inc table could be involved via a trigger or a stored
function.
However its content was not updated by bug@45677 fixes continuing to mention
two tables whereas the fixes refined semantics of replication of auto_increment 
in stored routine.

Fixed with updating the error message, renaming the error and an internal unsafe-condition 
constants.

A documentation notice
======================

      Inserting into an autoincrement column in a stored function or a trigger
      is unsafe for replication.
      Even with just one autoincrement column, if the routine is invoked more than 
      once slave is not guaranteed to execute the statement graph same way as 
      the master.
      And since it's impossible to estimate how many times a routine can be invoked at 
      the query pre-execution phase (see lock_tables), the statement is marked
      pessimistically unsafe. 



mysql-test/suite/binlog/r/binlog_stm_unsafe_warning.result:
  results updated to include the expected unsafe warning.
mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test:
  regression test for bug#50192 to diplaying the unsafe warning comes out to the user warning stack.
sql/share/errmsg-utf8.txt:
  Updating the auto-inc unsafe message to correspond to bug@45677 fixes' new sematics.
sql/share/errmsg.txt:
  Updating the auto-inc unsafe message to correspond to bug@45677 fixes' new sematics.
sql/sql_base.cc:
  changing a symbolic name to correspond to updated by bug@45677 fixes new sematics.
sql/sql_lex.cc:
  changing a symbolic name to correspond to updated by bug@45677 fixes new sematics.
sql/sql_lex.h:
  changing a symbolic name to correspond to updated by bug@45677 fixes new sematics
  and description comments.
2010-01-29 15:55:35 +02:00
Horst.Hunger
f594cc4b3b New patch for bug#49579, now with "have_ipv4_mapped.inc". 2010-01-29 11:48:11 +01:00
Omer BarNir
013dcdbd67 Modified and added tests following review of WL#4738.
- Added tests for innodb and semisync plugin
 - Modified existing tests to include variable values in I_S tables
 - Updated the all_vars test to include optional checkes for INNODB and semisync plugin 
   if loaded

mysql-test/suite/sys_vars/r/innodb_adaptive_flushing_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_adaptive_hash_index_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_change_buffering_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_file_format_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_file_format_check_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_io_capacity_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_old_blocks_pct_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_old_blocks_time_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_read_ahead_threshold_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_read_io_threads_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_replication_delay_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_spin_wait_delay_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_stats_on_metadata_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_stats_sample_pages_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_strict_mode_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_thread_sleep_delay_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/innodb_use_sys_malloc_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_version_basic.result:
  New result file
mysql-test/suite/sys_vars/r/innodb_write_io_threads_basic.result:
  New result file
mysql-test/suite/sys_vars/r/last_insert_id_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/lc_messages_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/log_slow_queries_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/lower_case_file_system_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/lower_case_table_names_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/max_join_size_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/old_alter_table_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/optimizer_switch_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/profiling_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/profiling_history_size_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/pseudo_thread_id_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/rand_seed1_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/rand_seed2_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/relay_log_recovery_basic.result:
  Updated result file
mysql-test/suite/sys_vars/r/rpl_semi_sync_master_enabled_basic.result:
  New result file
mysql-test/suite/sys_vars/r/rpl_semi_sync_master_timeout_basic.result:
  New result file
mysql-test/suite/sys_vars/r/rpl_semi_sync_master_trace_level_basic.result:
  New result file
mysql-test/suite/sys_vars/r/rpl_semi_sync_master_wait_no_slave_basic.result:
  New result file
mysql-test/suite/sys_vars/r/rpl_semi_sync_slave_enabled_basic.result:
  New result file
mysql-test/suite/sys_vars/r/rpl_semi_sync_slave_trace_level_basic.result:
  New result file
mysql-test/suite/sys_vars/r/sql_log_update_basic.result:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/r/sql_max_join_size_basic.result:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/r/sql_select_limit_basic.result:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/r/thread_cache_size_basic.result:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/all_vars-master.opt:
  Added opt file for all_vars.test
mysql-test/suite/sys_vars/t/all_vars.test:
  Modified test to check for semisync plugin and innodb
mysql-test/suite/sys_vars/t/innodb_adaptive_flushing_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_adaptive_hash_index_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_change_buffering_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_file_format_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_file_format_check_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_io_capacity_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_old_blocks_pct_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_old_blocks_time_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_read_ahead_threshold_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_read_io_threads_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_replication_delay_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_spin_wait_delay_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_stats_on_metadata_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_stats_sample_pages_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_strict_mode_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_thread_sleep_delay_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_use_sys_malloc_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_version_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/innodb_write_io_threads_basic.test:
  Added test for innodb variable
mysql-test/suite/sys_vars/t/last_insert_id_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/lc_messages_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/log_slow_queries_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/lower_case_file_system_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/lower_case_table_names_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/max_join_size_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/old_alter_table_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/optimizer_switch_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/profiling_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/profiling_history_size_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/pseudo_thread_id_basic.test:
  Added check for variable values in I_S tables and check for session variable 
  being numeric
mysql-test/suite/sys_vars/t/rand_seed1_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/rand_seed2_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/relay_log_recovery_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/rpl_semi_sync_master_enabled_basic-master.opt:
  Added option file for semisync variable test
mysql-test/suite/sys_vars/t/rpl_semi_sync_master_enabled_basic.test:
  Added test file for semisync variable
mysql-test/suite/sys_vars/t/rpl_semi_sync_master_timeout_basic-master.opt:
  Added option file for semisync variable test
mysql-test/suite/sys_vars/t/rpl_semi_sync_master_timeout_basic.test:
  Added test file for semisync variable
mysql-test/suite/sys_vars/t/rpl_semi_sync_master_trace_level_basic-master.opt:
  Added option file for semisync variable test
mysql-test/suite/sys_vars/t/rpl_semi_sync_master_trace_level_basic.test:
  Added test file for semisync variable
mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_no_slave_basic-master.opt:
  Added option file for semisync variable test
mysql-test/suite/sys_vars/t/rpl_semi_sync_master_wait_no_slave_basic.test:
  Added test file for semisync variable
mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_enabled_basic-master.opt:
  Added option file for semisync variable test
mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_enabled_basic.test:
  Added test file for semisync variable
mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_trace_level_basic-master.opt:
  Added option file for semisync variable test
mysql-test/suite/sys_vars/t/rpl_semi_sync_slave_trace_level_basic.test:
  Added test file for semisync variable
mysql-test/suite/sys_vars/t/sql_log_update_basic.test:
  Added check for variable values in I_S tables and check for ON/OFF value changes
mysql-test/suite/sys_vars/t/sql_max_join_size_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/sql_select_limit_basic.test:
  Added check for variable values in I_S tables
mysql-test/suite/sys_vars/t/thread_cache_size_basic.test:
  Added check for variable values in I_S tables
2010-01-28 22:33:00 -08:00
Andrei Elkin
0c0eb1d44a merging from 5.1-bt to a local bugfix branch 2010-01-28 11:51:57 +02:00
Alexander Nozdrin
2f3d117ae3 Manual merge from mysql-trunk-merge.
Conflicts:
  - mysql-test/extra/rpl_tests/rpl_mixing_engines.inc
  - sql/log.cc
  - sql/mysqld.cc
  - sql/set_var.cc
  - sql/sql_class.h
2010-01-28 01:07:44 +03:00
Alexander Nozdrin
be53d298e1 Manual merge from mysql-trunk-merge.
Conflicts:
  - sql/sql_partition.cc
2010-01-27 22:55:51 +03:00
Alexander Nozdrin
992fc07377 Auto-merge from mysql-trunk-merge. 2010-01-27 22:35:04 +03:00
Alexander Nozdrin
7cd628cfab Auto-merge from mysql-trunk-merge. 2010-01-27 21:44:01 +03:00
Andrei Elkin
a589499986 bug#47142
merging patches prepared for 5.0 to 5.1-bt. That caused a few changes in the test file
2010-01-27 19:27:49 +02:00
Marc Alff
4a7a3371c5 Merge mysql-next-mr (revno 2965) --> mysql-next-mr-marc 2010-01-27 09:34:13 -07:00
Marc Alff
af37c866de Misc cleanup 2010-01-27 08:26:05 -07:00
Staale Smedseng
f4a16558c8 Bug #47905 stored procedures with conditional statements not
being logged to slow query log

The problem is that the execution time for a multi-statement
stored procedure as a whole may not be accurate, and thus not
be entered into the slow query log even if the total time
exceeds long_query_time. The reason for this is that
THD::utime_after_lock used for time calculation may be reset
at the start of each new statement, possibly leaving the total
SP execution equal to the time spent executing the last
statement in the SP.

This patch stores the utime on start of SP execution, and
restores it on exit of SP execution. A test is added.


mysql-test/suite/sys_vars/r/slow_query_log_func.result:
  New test results for #47905.
mysql-test/suite/sys_vars/t/slow_query_log_func.test:
  New test case for #47905.
sql/sp_head.cc:
  Save and restore the THD::utime_after_lock on entry and 
  exit of execute_procedure().
2010-02-11 21:10:13 +01:00
Magne Mahre
e0fb0d9d01 Bug#47974 'TYPE=storage_engine' is deprecated and will be
removed in MySQL 6.0

CREATE TABLE... TYPE= returns the warning "The syntax 
'TYPE=storage_engine' is deprecated and will be removed in 
MySQL 6.0. Please use 'ENGINE=storage_engine' instead" 

This syntax is deprecated already from version 5.4.4, so
the message has been changed.

In addition, the deprecation macro was changed to reflect
the ServerPT decision not to include version number in the
warning message.

A number of test result files have been changed as a
consequence of the change in the deprecation macro.
2010-02-09 11:30:50 +01:00
Magne Mahre
35c6bb89e6 WL#5182 Remove more deprecated 4.1/5.0 features
WL#5182 is a follow-up to WL#5154, deprecating a few more options
and system variables.


client/client_priv.h:
  The warning message has been changed to not include
  a specific version number in the text.
client/mysql.cc:
  --no-tee is deprecated
client/mysqldump.c:
  --all is deprecated
  -a now points to create-options
mysql-test/r/mysqlbinlog.result:
  Warning text changed
mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result:
  Warning text changed
sql/mysql_priv.h:
  The warning message has been changed to not include
  a specific version number in the text.
sql/mysqld.cc:
  --use-symbolic-links is deprecated
  -s now points to --symbolic-links
  --warnings is deprecated
  -W now points to --log-warnings
          
  myisam_max_extra_sort_file_size is deprecated
  record_buffer is deprecated
          
  --log-update is deprecated
  --sql-bin-update-same is deprecated
  --skip-locking is deprecated
  --skip-symlink is deprecated
  --enable-locking is deprecated
  --delay-key-write-for-all-tables is deprecated
2010-01-27 13:23:28 +01:00
unknown
c12c9780cd Bug #49191 rpl_get_master_version_and_clock failed on PB2: COM_REGISTER_SLAVE failed
The 'rpl_get_master_version_and_clock' test verifies if the slave I/O
thread tries to reconnect to master when it tries to get the values of
the UNIX_TIMESTAMP, SERVER_ID from master under network disconnection.
So the master server is restarted for making the transient network
disconnection, during the period the COM_REGISTER_SLAVE failures are
produced in server log file when the slave I/O thread tries to
register on master.

To fix the problem, suppress COM_REGISTER_SLAVE failures in server log
file by mtr suppression, because they are expected.


mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result:
  Removed mtr.add_suppression("Get master clock failed with error: ")
  and mtr.add_suppression("Get master SERVER_ID failed with error: ").
  Because they are suppressed globally.
2010-01-27 10:52:13 +08:00
Luis Soares
3ad1e4edf9 Automerge from bug branch. 2010-01-26 10:08:56 +00:00
unknown
32b6e90455 Bug #45855 row events in binlog after switch from binlog_fmt=mix to stmt with open tmp tbl
Bug #45856  	can't switch from binlog_format=row to mix with open tmp tbl


If binlog_format=MIXED, there are open temporary tables, an unsafe statement
is executed, and the user issues 'SET @@session.binlog_format = STATEMENT',
then subsequent DML statements will be written in row format despite 
binlog_format=STATEMENT. Because the binlog format can't be reset to
statement based by 'reset_current_stmt_binlog_row_based' function.

If binlog_format=ROW, there are open temporary tables, and an unsafe statement
is executed, then the statement 'SET @@session.binlog_format = MIXED' generates
the error:
"Cannot switch out of the row-based binary log format when the session has open
temporary tables"
However, it is safe to switch to MIXED mode because events in row format are allowed.


To fix the above two problems, generate ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR
and forbid switching from MIXED or ROW to STATEMENT when there are open temp
tables and we are logging in row format. There is no error in any other case.


mysql-test/suite/binlog/r/binlog_format_switch_in_tmp_table.result:
  Test result for bug#45855 and bug#45856.
mysql-test/suite/binlog/t/binlog_format_switch_in_tmp_table.test:
  Added test file to verify if the program will generate
  ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR error and forbid
  switching from MIXED or ROW to STATEMENT when there are
  open temp tables and we are logging in row format. There
  is no error in any other case.
2010-01-26 17:41:15 +08:00
Luis Soares
9ac2343cc3 automerge: mysql-5.1-bugteam branch --> mysql-5.1-bugteam latest
NOTE: added TODO to the comments requested by reviewer during this
      merge.
2010-01-26 08:55:22 +00:00
Marc Alff
e17faeeaaa Bug#50436 perfschema.aggregate fails on HPUX in 6.0
Relaxed the test conditions to account for objects destroyed,
as was intended in the comments in mysql-test/suite/perfschema/t/aggregate.test
2010-01-25 21:53:04 -07:00
Vladislav Vaintroub
9129685e51 merge, add plugin/audit_null/CMakeLists.txt 2010-01-26 05:39:48 +01:00
Marc Alff
f2338872bb Bug#50596 Spurious test failures in perfschema.dml_mutex_instances
Fixed the dml_mutex_instances and dml_rwlock_instances to be more reliable.
In particular, the tests may not assume a mutex or rwlock is never locked.
2010-01-25 20:12:20 -07:00
Alexander Nozdrin
13d68d4202 Auto-merge from mysql-next-mr. 2010-01-25 19:48:45 +03:00
Alexander Nozdrin
2c41498fde Auto-merge from mysql-next-mr. 2010-01-25 19:02:02 +03:00
Bjorn Munch
eb20a69fba merge from mysql-next-mr 2010-01-25 11:28:46 +01:00
unknown
dad4291b78 Manual merge with Conflicts:
sql_udf.cc
2010-01-25 10:55:05 +08:00
He Zhenxing
2b16517522 Backport Bug#37148 to 5.1 2010-01-24 15:03:23 +08:00
Alexey Kopytov
4a1b59b7ab Manual merge of mysql-5.1-bugteam into mysql-trunk-merge. 2010-01-24 00:09:23 +03:00
Vladislav Vaintroub
cb5b0d4ffa merge 2010-01-22 12:50:33 +01:00
unknown
3cae7d1187 Bug #49132 Replication failure on temporary table + DDL
In RBR, DDL statement will change binlog format to non row-based
format before it is binlogged, but the binlog format was not be
restored, and then manipulating a temporary table can not reset binlog
format to row-based format rightly. So that the manipulated statement
is binlogged with statement-based format.

To fix the problem, restore the state of binlog format after the DDL
statement is binlogged.

mysql-test/extra/rpl_tests/rpl_tmp_table_and_DDL.test:
  Added the test file to verify if executing DDL statement before
  trying to manipulate a temporary table causes row-based replication
  to break with error 'table does not exist'.
mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result:
  Correct the test result, all the above binlog event
  should be row-based after the bug49132 is fixed IN RBR.
mysql-test/suite/ndb/r/ndb_tmp_table_and_DDL.result:
  Test result for bug#49132 base on ndb engine.
mysql-test/suite/ndb/t/ndb_tmp_table_and_DDL.test:
  Added the test file to verify if executing DDL statement before
  trying to manipulate a temporary table causes row-based replication
  to break with error 'table does not exist' base on ndb engine.
mysql-test/suite/rpl/r/rpl_tmp_table_and_DDL.result:
  Test result for bug#49132 base on myisam engine.
mysql-test/suite/rpl/t/rpl_tmp_table_and_DDL.test:
  Added the test file to verify if executing DDL statement before
  trying to manipulate a temporary table causes row-based replication
  to break with error 'table does not exist' base on myisam engine.
sql/event_db_repository.cc:
  Added code to restore the state of binlog format after the DDL
  statement is binlogged.
sql/events.cc:
  Added code to restore the state of binlog format after the DDL
  statement is binlogged.
sql/sp.cc:
  Added code to restore the state of binlog format after the DDL
  statement is binlogged.
sql/sql_acl.cc:
  Added code to restore the state of binlog format after the DDL
  statement is binlogged.
sql/sql_udf.cc:
  Added code to restore the state of binlog format after the DDL
  statement is binlogged.
2010-01-22 17:38:21 +08:00
Magne Mahre
f42a200e9e Post-commit fix of two tests
The WL#5154 commit added a couple of warning messages that
was not fixed in the result files for two RPL tests.
2010-01-22 10:37:44 +01:00
Sergey Vojtovich
1c4a72feea Merge backport of WL#3771 with mysql-next-mr. 2010-01-22 12:37:51 +04:00
Alexander Nozdrin
403fb62d26 Auto-merge from mysql-next-mr. 2010-01-22 11:20:13 +03:00
Alexander Nozdrin
a112586e11 Auto-merge from mysql-next-mr. 2010-01-22 11:20:05 +03:00
Vladislav Vaintroub
68c66c645a cherrypick a followup fix from marc 2010-01-22 02:21:54 +01:00
Marc Alff
7610c9eba5 Fixed merge problem (naming of CRYPTO_dynlock_value::lock in the tests) 2010-01-21 17:57:57 -07:00
Marc Alff
62fcfbd6c3 Bug#50513 Build failure with ifdef HAVE_OPENSSL + ifndef HAVE_YASSL
When compiling wiht ./configure --with-ssl=/usr,
which used OPEN_SSL but not YASSL, the code in sql/mysqld.cc
failed to build because of an incomplete performance schema instrumentation.

This fix implements properly the instrumentation for the rwlock
used in openssl_lock_t.

Verified that the code builds, and the ssl + performance schema tests
do pass.
2010-01-21 11:06:03 -07:00
Luis Soares
73f10f0662 BUG#49481: RBR: MyISAM and bit fields may cause slave to stop on delete:
cant find record

Some engines return data for the record. Despite the fact that
the null bit is set for some fields, their old value may still in
the row. This can happen when unpacking an AI from the binlog on
top of a previous record in which a field is set to NULL, which
previously contained a value. Ultimately, this may cause the
comparison of records to fail when the slave is doing an index or
range scan.

We fix this by deploying a call to reset() for each field that is
set to null while unpacking a row from the binary log.
Furthermore, we also add mixed mode test case to cover the
scenario where updating and setting a field to null through a
Query event and later searching it through a rows event will
succeed.

Finally, we also change the reset() method, from Field_bit class,
so that it takes into account bits stored among the null bits and
not only the ones stored in the record.

mysql-test/suite/rpl/t/rpl_set_null_innodb.test:
  InnoDB test.
mysql-test/suite/rpl/t/rpl_set_null_myisam.test:
  MyISAM test.
mysql-test/suite/rpl_ndb/t/rpl_ndb_set_null.test:
  NDB test.
sql/field.h:
  Changed reset so that it also clears the bits
  among the null_bits for the Field_bit class.
sql/rpl_record.cc:
  Resetting field after setting it to null when unpacking
  row.
2010-01-21 17:20:24 +00:00
Alfranio Correia
83f7a74bd4 BUG#50397 rpl.rpl_heartbeat_basic fails in mysql-trunk-merge
Resetting the master before stopping the slave was generating the message
"[ERROR] Slave I/O: Got fatal error 1236 from master when reading data from
binary log: 'could not find next log', Error_code: 1236". In consequence,
the test case was failing because the message had not been suppressed.

To circumvent the failure, we rewrote the test stopping the slave before
resetting the master. We prefer this alternative rather than suppressing
the message.
2010-01-21 14:16:12 +00:00
Alfranio Correia
4009bf1a15 BUG#46364 MyISAM transbuffer problems (NTM problem)
It is well-known that due to concurrency issues, a slave can become
inconsistent when a transaction contains updates to both transaction and
non-transactional tables.
                    
In a nutshell, the current code-base tries to preserve causality among the
statements by writing non-transactional statements to the txn-cache which
is flushed upon commit. However, modifications done to non-transactional
tables on behalf of a transaction become immediately visible to other
connections but may not immediately get into the binary log and therefore
consistency may be broken.
            
In general, it is impossible to automatically detect causality/dependency
among statements by just analyzing the statements sent to the server. This
happen because dependency may be hidden in the application code and it is
necessary to know a priori all the statements processed in the context of
a transaction such as in a procedure. Moreover, even for the few cases that
we could automatically address in the server, the computation effort
required could make the approach infeasible.
            
So, in this patch we introduce the option
      - "--binlog-direct-non-transactional-updates" that can be used to bypass
      the current behavior in order to write directly to binary log statements
      that change non-transactional tables.

Besides, it is used to enable the WL#2687 which is disabled by default.

mysql-test/extra/rpl_tests/rpl_binlog_max_cache_size.test:
  Changes the result set as the STMT mode behaves as both the ROW and MIXED modes and as such uses the non-trx-cache and takes longer to fill the trx-cache up and trigger an error.
mysql-test/extra/rpl_tests/rpl_implicit_commit_binlog.test:
  Changes the result set as the STMT mode behaves as both the ROW and MIXED modes and as such uses the non-trx-cache. It also fixes comments.
mysql-test/extra/rpl_tests/rpl_mixing_engines.test:
  The STMT mode is unsafe when mixed-statements are executed thus making slaves to go out of sync. For that reason, it checks consistency if not in STMT mode.
mysql-test/include/default_mysqld.cnf:
  Makes binlog-direct-non-transactional-updates "TRUE" by default in the test
  cases.
mysql-test/r/mysqld--help-notwin.result:
  Updates the result file with the new option.
mysql-test/r/mysqld--help-win.result:
  Updates the result file with the new option.
mysql-test/suite/binlog/r/binlog_multi_engine.result:
  Updates the result file because non-trx-changes are written ahead of the
  transaction.
mysql-test/suite/binlog/r/binlog_switch_inside_trans.result:
  Verifies if the user cannot change the opion binlog_direct_non_transactional_updates
  within a transaction or a procedure/function/trigger.
mysql-test/suite/binlog/t/binlog_stm_mix_innodb_myisam-master.opt:
  Sets binlog_direct_non_transactional_updates to FALSE in order to avoid changing
  the test case and its result file.
mysql-test/suite/binlog/t/binlog_switch_inside_trans.test:
  Verifies if the user cannot change the opion binlog_direct_non_transactional_updates
  within a transaction or a procedure/function/trigger.
mysql-test/suite/ndb/r/ndb_binlog_format.result:
  Updates the result file because non-trx-changes are written ahead of the
  transaction.
mysql-test/suite/rpl/r/rpl_begin_commit_rollback.result:
  Sets binlog_direct_non_transactional_updates to FALSE in order to avoid changing the test case and its result file.
mysql-test/suite/rpl/r/rpl_concurrency_error.result:
  Updates the result file because non-trx-changes are written ahead of the
  transaction
mysql-test/suite/rpl/r/rpl_mixed_implicit_commit_binlog.result:
  Updates the result file because non-trx-changes are written ahead of the
  transaction.
mysql-test/suite/rpl/r/rpl_mixed_mixing_engines.result:
  Updates the result file because non-trx-changes are written ahead of the
  transaction.
mysql-test/suite/rpl/r/rpl_stm_binlog_max_cache_size.result:
  Changes the result set as the STMT mode behaves as both the ROW and MIXED modes and as such uses the non-trx-cache and takes longer to fill the trx-cache up and trigger an error.
mysql-test/suite/rpl/r/rpl_stm_implicit_commit_binlog.result:
  Updates the result file because non-trx-changes are written ahead of the
  transaction.
mysql-test/suite/rpl/r/rpl_stm_mixing_engines.result:
  Updates the result file because non-trx-changes are written ahead of the
  transaction.
mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result:
  Sets binlog_direct_non_transactional_updates to FALSE in order to avoid changing the test case and its result file.
mysql-test/suite/rpl/r/rpl_stm_stop_middle_group.result:
  Sets binlog_direct_non_transactional_updates to FALSE in order to avoid changing the test case and its result file.
mysql-test/suite/rpl/t/rpl_begin_commit_rollback.test:
  Sets binlog_direct_non_transactional_updates to FALSE in order to avoid changing the test case and its result file.
mysql-test/suite/rpl/t/rpl_stm_start_stop_slave.test:
  Sets binlog_direct_non_transactional_updates to FALSE in order to avoid changing the test case and its result file.
mysql-test/suite/rpl/t/rpl_stm_stop_middle_group.test:
  Sets binlog_direct_non_transactional_updates to FALSE in order to avoid changing the test case and its result file.
sql/log.cc:
  Verifies if changes should be written to either the trx-cache or non-trx-cache through the use of the function use_trans_cache(). It also organizes the code.
sql/log.h:
  Changes the signature of some functions by adding the modifier "const" to the thd parameter. Specifically, the following functions are changed: 
          bool trans_has_updated_trans_table(const THD* thd);
          bool stmt_has_updated_trans_table(const THD *thd);
          bool use_trans_cache(const THD*, bool is_transactional);
sql/share/errmsg-utf8.txt:
  Creates error messages to report when an user tries to change the new option
  binlog_direct_non_transactional_updates within a transaction or a procedure/
  function/trigger.
sql/share/errmsg.txt:
  Creates error messages to report when an user tries to change the new option
  binlog_direct_non_transactional_updates within a transaction or a procedure/
  function/trigger.
sql/sql_class.h:
  Adds the new option binlog_direct_non_transactional_updates.
sql/sys_vars.cc:
  Adds the new option binlog_direct_non_transactional_updates.
support-files/my-small.cnf.sh:
  Adds binlog-direct-non-transactional-updates to the example file. By default
  the option is disabled.
2010-01-21 13:10:34 +00:00
Vladislav Vaintroub
e4687956c1 Cherrypick fix for -DWITH_SSL=system by Marc Alff (Bug#50513) 2010-01-21 19:41:01 +01:00
Alexander Nozdrin
08bcd2d8f6 Auto-merge from mysql-next-mr. 2010-01-21 12:14:34 +03:00