Commit graph

7 commits

Author SHA1 Message Date
unknown
36c7cfd71e Bug#20396 Bin Log does not get DELIMETER cmd - Recover StoredProc fails
Problem: when loading mysqlbinlog dumps, CREATE PROCEDURE having semicolons
in their bodies failed.
Fix: Using safe delimiter "/*!*/;" to dump log entries.


client/mysqlbinlog.cc:
  - Adding PRINT_EVENT_INFO argument to dump_xxx_log_entries()
  - Setting delimiter to "/*!*/;" before calling dump functions
mysql-test/r/ctype_ucs_binlog.result:
  Fixing test results
mysql-test/r/mix_innodb_myisam_binlog.result:
  Fixing test results
mysql-test/r/mysqlbinlog.result:
  Fixing test results
  Adding test case
mysql-test/r/mysqlbinlog2.result:
  Fixing test results
mysql-test/r/rpl_charset.result:
  Fixing test results
mysql-test/r/rpl_timezone.result:
  Fixing test results
mysql-test/r/user_var-binlog.result:
  Fixing test results
mysql-test/t/mix_innodb_myisam_binlog.test:
  Fixing LIKE expression
mysql-test/t/mysqlbinlog.test:
  Adding test case
sql/log_event.cc:
  Using print_event_info->delimiter instead of
  hard-coded semicolon as a query end marker.
sql/log_event.h:
  Adding new member to store delimiter.
2006-11-28 16:26:15 +04:00
unknown
e025e47a76 BUG#16217 forced to introduce a separate mysql client command to adopt its
internal charset to one associated with currently being handled query. 
To note such a query can come from interactive client either.

There was a discussion within replication team and Monty who's suggestion won.
It avoids straightforward parsing of all `set' queries that could affect client side 
character set. 
According to the idea, mysql client does not parse `set' queries but rather cares of
`charset new_cs_name' command.
This command is generated by mysqlbinlog in form of exclaiming comment (Lars' suggestion)
so that enlightened clients like `mysql' knows what to do with it.

Interactive human can switch between many multi-byte charsets during the session 
providing the command explicitly. 
To note that setting new internal mysql's charset does not
trigger sending any `SET' sql statement to the server. 


client/mysql.cc:
  BUG#16217 revealed the problem of switching between charsets in mysql client.
  Such switching is necessary in a case when being scanned query consists of 
  multi-byte chars and internal charset was initialized differently. mysql finds 
  `/' escape and misiterprete it 
  while in fact one could be a part of a multi-byte symbol like the bug page reported. 
  
  This patch extends mysql `charset' command, '\C' shortcut.
mysql-test/r/ctype_ucs_binlog.result:
  comment line generated by mysqlbinlog for processing of logs with multi-byte chars.
mysql-test/r/mysql.result:
  results are altered due to #16217
mysql-test/r/mysqlbinlog.result:
  Results are altered due to #16217
mysql-test/r/mysqlbinlog2.result:
  commeted command for mysql client due to multi-byte binlog
mysql-test/r/rpl_charset.result:
  commented command for mysql due to multi-byte binlogs
mysql-test/r/rpl_timezone.result:
  commented command for mysql client due to multi-byte binlogs
mysql-test/r/user_var-binlog.result:
  commented command for mysql client due to multi-byte binlogs
mysql-test/t/mysql.test:
  Main test for mysql client is extended to check `charset' command.
mysql-test/t/mysqlbinlog.test:
  Checking how /*! \C cs_name */ are added to the output of mysqlbinlog.
  The exclaiming comment is for further processing by mysql client.
  The added part mimics the failure to recover tables from binlog - see BUG#16217.
sql/log_event.cc:
  Sending into output instructions for mysql client to switch internally 
  to appropriate charset.
  mysql client is supposed to be invoked with --default-character-set=
  "to default character set of the server created the binlog".
2006-02-09 16:23:09 +02:00
unknown
0ce12f70ed Reviewing new pushed code
- CHAR() now returns binary string as default
- CHAR(X*65536+Y*256+Z) is now equal to CHAR(X,Y,Z) independent of the character set for CHAR()
- Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
  (Some old systems returns ETIME and it's safer to test for both values
   than to try to write a wrapper for each old system)
- Fixed new introduced bug in NOT BETWEEN X and X
- Ensure we call commit_by_xid or rollback_by_xid for all engines, even if one engine has failed
- Use octet2hex() for all conversion of string to hex
- Simplify and optimize code


client/mysqldump.c:
  Simple optimizations of new code
  Indentation fixes
client/mysqltest.c:
  Removed not needed variable
include/mysql_com.h:
  Made octec2hex() more usable
mysql-test/r/ctype_utf8.result:
  CHAR() now returns binary string as default
mysql-test/r/func_str.result:
  CHAR() now returns binary string as default
mysql-test/r/range.result:
  Added test to verify new introduced bug in NOT BETWEEN X and X
mysql-test/r/user_var-binlog.result:
  CHAR() now returns binary string as default
mysql-test/r/view.result:
  More tests of view rename
mysql-test/t/ctype_utf8.test:
  CHAR() now returns binary string as default
mysql-test/t/func_str.test:
  CHAR() now returns binary string as default
mysql-test/t/range.test:
  Added test to verify new introduced bug in NOT BETWEEN X and X
mysql-test/t/view.test:
  More tests of view rename
mysys/mf_keycache.c:
  Indentation changes
  Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
mysys/my_os2cond.c:
  Fix to MySQL coding style
  Optimized functions
mysys/thr_lock.c:
  Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
mysys/thr_mutex.c:
  Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
server-tools/instance-manager/instance.cc:
  Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
server-tools/instance-manager/thread_registry.cc:
  Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
sql/ha_federated.cc:
  Use octet2hex()
sql/ha_ndbcluster.cc:
  Removed not used variable
sql/handler.cc:
  Simplify code
  Use *NONE* instead of 'none' for not existing storage engine
  Ensure we call commit_by_xid or rollback_by_xid for all engines, even if one engine has failed
sql/item.h:
  Remove not needed test for *ref.  (If ref is set, it should never point at 0)
sql/item_func.cc:
  Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
  Simplify code
  More comments
  Require that last argument to find_and_check_access() is given
  (Made code shorter and faster)
sql/item_strfunc.cc:
  Changed CHAR() to return result in binary collation
  CHAR(X*65536+Y*256+Z) is now equal to CHAR(X,Y,Z) independent of the character set for CHAR()
  
  Bar will shortly add the following syntax:
  CHAR(.... USING character_set)
  and ensure that
  CONVERT(CHAR(....) USING utf8) cuts not legal utf8 strings
  Use ocet2hex()
sql/item_strfunc.h:
  CHAR() now returns a binary string
sql/log_event.cc:
  Use octet2hex()
  Simplify code
sql/parse_file.cc:
  Indentation fixes
  Use for() instead of while()
sql/password.c:
  Make octet2hex() more generally usable by returning pointer to end 0
sql/slave.cc:
  Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
sql/sql_base.cc:
  Indentation fixes
sql/sql_insert.cc:
  Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
sql/sql_manager.cc:
  Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
sql/sql_parse.cc:
  Don't check thd->db when checking for function privileges
sql/sql_prepare.cc:
  Fixed wrong merge
sql/sql_select.cc:
  Fixed new bug for NOT BETWEEN X and X
sql/sql_show.cc:
  Removed not used variable
sql/sql_table.cc:
  Indentation fixed
  Removed DBUG_PRINT that is obvious from context
sql/sql_view.cc:
  Simplify code
sql/unireg.cc:
  Use octet2hex()
2005-10-12 00:58:22 +03:00
unknown
1e148ca472 Tell the user that this ROLLBACK is added by mysqlbinlog (so that he does not wonder if it's present in binlog). This was brought up by Salle - thanks Salle.
client/mysqlbinlog.cc:
  tell the user that this ROLLBACK is added by mysqlbinlog (so that he does not wonder if it's present in binlog)
mysql-test/r/ctype_ucs_binlog.result:
  update
mysql-test/r/mysqlbinlog.result:
  update
mysql-test/r/mysqlbinlog2.result:
  update
mysql-test/r/rpl_charset.result:
  update
mysql-test/r/rpl_timezone.result:
  update
mysql-test/r/user_var-binlog.result:
  update
2005-09-30 10:58:24 +02:00
unknown
906cd821e2 Added clarification comment regarding added ROLLBACK to mysqlbinlog output 2005-09-21 14:27:41 +02:00
unknown
754874fd00 Fix merge of tests that were split out of other test files
mysql-test/r/ctype_ucs_binlog.result:
  Update results
mysql-test/r/timezone_grant.result:
  Update results
mysql-test/r/user_var-binlog.result:
  Update results
mysql-test/t/ctype_ucs_binlog.test:
  Update binlog starting position
mysql-test/t/timezone_grant.test:
  Update error numbers
mysql-test/t/user_var-binlog.test:
  Update binlog starting position
2005-04-04 16:34:24 -07:00
unknown
57221d3d08 Eliminate most of the remaining hardcoded list of tests to skip
by adding check for embedded server within tests and splitting some
tests into multiple test files.


mysql-test/mysql-test-run.sh:
  Remove most of hardcoded list of tests to skip
mysql-test/r/ps_1general.result:
  Update results
mysql-test/r/timezone2.result:
  Update results
mysql-test/r/user_var.result:
  Update results
mysql-test/r/variables.result:
  Update results
mysql-test/t/mix_innodb_myisam_binlog.test:
  Disable test with embedded server
mysql-test/t/mysql_protocols.test:
  Disable test with embedded server
mysql-test/t/mysqlbinlog.test:
  Disable test with embedded server
mysql-test/t/mysqlbinlog2.test:
  Disable test with embedded server
mysql-test/t/mysqldump.test:
  Disable test with embedded server
mysql-test/t/packet.test:
  Disable test with embedded server
mysql-test/t/ps_1general.test:
  Move parts of test to new ps_grant
mysql-test/t/rename.test:
  Disable test with embedded server
mysql-test/t/show_check.test:
  Disable test with embedded server
mysql-test/t/system_mysql_db_fix.test:
  Disable test with embedded server
mysql-test/t/timezone2.test:
  Move part of test to timezone_grant
mysql-test/t/user_var.test:
  Move part of test to new user_var-binlog
mysql-test/t/variables.test:
  Move part of test to rpl_variables
2005-03-29 17:17:46 -08:00