Commit graph

7 commits

Author SHA1 Message Date
unknown
5f75c8f5b4 WL#874 "Extended LOAD DATA".
Now one can use user variables as target for data loaded from file
(besides table's columns). Also LOAD DATA got new SET-clause in which
one can specify values for table columns as expressions.

For example the following is possible:
LOAD DATA INFILE 'words.dat' INTO TABLE t1 (a, @b) SET c = @b + 1;

This patch also implements new way of replicating LOAD DATA.
Now we do it similarly to other queries.
We store LOAD DATA query in new Execute_load_query event
(which is last in the sequence of events representing LOAD DATA).
When we are executing this event we simply rewrite part of query which
holds name of file (we use name of temporary file) and then execute it
as usual query. In the beggining of this sequence we use Begin_load_query
event which is almost identical to Append_file event


client/mysqlbinlog.cc:
  Added support of two new binary log events Begin_load_query_log_event and
  Execute_load_query_log_Event which are used to replicate LOAD DATA INFILE.
mysql-test/r/ctype_ucs.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results and made it more robust for future similar 
  changes.
mysql-test/r/insert_select.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results and made it more robust for future similar 
  changes.
mysql-test/r/loaddata.result:
  Added tests for new LOAD DATA features.
mysql-test/r/mix_innodb_myisam_binlog.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results (don't dare to get rid from binlog positions
  completely since it seems that this test uses them).
mysql-test/r/mysqlbinlog.result:
  New approach for binlogging of LOAD DATA statement. Now we store it as
  usual query and rewrite part in which file is specified when needed.
  So now mysqlbinlog output for LOAD DATA much more closer to its initial
  form. Updated test'd results accordingly.
mysql-test/r/mysqldump.result:
  Made test more robust to other tests failures.
mysql-test/r/rpl000015.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_change_master.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results.
mysql-test/r/rpl_charset.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly
mysql-test/r/rpl_deadlock.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly
mysql-test/r/rpl_error_ignored_table.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results and made it more robust for future similar 
  changes.
mysql-test/r/rpl_flush_log_loop.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_flush_tables.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results and made it more robust for future similar 
  changes.
mysql-test/r/rpl_loaddata.result:
  New way of replicating LOAD DATA. Now we do it similarly to other
  queries. We store LOAD DATA query in new Execute_load_query event
  (which is last in the sequence of events representing LOAD DATA).
  When we are executing this event we simply rewrite part of query which
  holds name of file (we use name of temporary file) and then execute it
  as usual query. In the beggining of this sequence we use Begin_load_query
  event which is almost identical to Append_file event...
  
  Updated test's results wwith new binlog positions.
mysql-test/r/rpl_loaddata_rule_m.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results and made it more robust for future similar 
  changes.
  Since now LOAD DATA is replicated much in the same way as usual query
  --binlog_do/ignore_db work for it inthe same way as for usual queries.
mysql-test/r/rpl_loaddata_rule_s.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_loaddatalocal.result:
  Added nice test for case when it is important that LOAD DATA LOCAL
  ignores duplicates.
mysql-test/r/rpl_log.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly (don't dare to get rid from binlog 
  positions completely since it seems that this test uses them).
mysql-test/r/rpl_log_pos.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_max_relay_size.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_multi_query.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_relayrotate.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_replicate_do.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_reset_slave.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_rotate_logs.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_server_id1.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_server_id2.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly.
mysql-test/r/rpl_temporary.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results and made it more robust for future similar 
  changes.
mysql-test/r/rpl_timezone.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results and made it more robust for future similar 
  changes.
mysql-test/r/rpl_until.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results accordingly and tweaked test a bit to bring it
  back to good shape.
mysql-test/r/rpl_user_variables.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results and made it more robust for future similar 
  changes.
mysql-test/r/user_var.result:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test's results and made it more robust for future similar 
  changes.
mysql-test/t/ctype_ucs.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly and made it more robust for future similar
  changes.
mysql-test/t/insert_select.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly and made it more robust for future similar
  changes.
mysql-test/t/loaddata.test:
  Added test cases for new LOAD DATA functionality.
mysql-test/t/mix_innodb_myisam_binlog.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly.
mysql-test/t/mysqlbinlog.test:
  New way of replicating LOAD DATA local. Now we do it similarly to other
  queries. We store LOAD DATA query in new Execute_load_query event
  (which is last in the sequence of events representing LOAD DATA).
  When we are executing this event we simply rewrite part of query which
  holds name of file (we use name of temporary file) and then execute it
  as usual query. In the beggining of this sequence we use Begin_load_query
  event which is almost identical to Append_file event...
  
  Thus we need new binlog positions for LOAD DATA events.
mysql-test/t/mysqlbinlog2.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly.
mysql-test/t/mysqldump.test:
  Made test more robust for failures of other tests.
mysql-test/t/rpl_charset.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly.
mysql-test/t/rpl_deadlock.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly.
mysql-test/t/rpl_error_ignored_table.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly and made it more robust for future similar
  changes.
mysql-test/t/rpl_flush_tables.test:
  Addition of two new types of binary log events shifted binlog positions.
  Made test more robust for future similar changes.
mysql-test/t/rpl_loaddata.test:
  New way of replicating LOAD DATA. Now we do it similarly to other
  queries. We store LOAD DATA query in new Execute_load_query event
  (which is last in the sequence of events representing LOAD DATA).
  When we are executing this event we simply rewrite part of query which
  holds name of file (we use name of temporary file) and then execute it
  as usual query. In the beggining of this sequence we use Begin_load_query
  event which is almost identical to Append_file event...
  
  Apropritely updated comments in test.
mysql-test/t/rpl_loaddata_rule_m.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly and made it more robust for future similar 
  changes.
  Since now LOAD DATA is replicated much in the same way as usual query
  --binlog_do/ignore_db work for it inthe same way as for usual queries.
mysql-test/t/rpl_loaddata_rule_s.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly.
mysql-test/t/rpl_loaddatalocal.test:
  Added nice test for case when it is important that LOAD DATA LOCAL
  ignores duplicates.
mysql-test/t/rpl_log.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly (don't dare to get rid from binlog positions
  completely since it seems that this test uses them).
mysql-test/t/rpl_log_pos.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly.
mysql-test/t/rpl_multi_query.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly.
mysql-test/t/rpl_temporary.test:
  Addition of two new types of binary log events shifted binlog positions.
  Made test more robust for future similar changes.
mysql-test/t/rpl_timezone.test:
  Addition of two new types of binary log events shifted binlog positions.
  Made test more robust for future similar changes.
mysql-test/t/rpl_until.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly and tweaked it a bit to bring it back to good
  shape.
mysql-test/t/rpl_user_variables.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly and made it more robust for future similar
  changes.
mysql-test/t/user_var.test:
  Addition of two new types of binary log events shifted binlog positions.
  Updated test accordingly and made it more robust for future similar
  changes.
sql/item_func.cc:
  Added Item_user_var_as_out_param class that represents user variable
  which used as out parameter in LOAD DATA.
  
  Moved code from Item_func_set_user_var::update_hash() function to
  separate static function to be able to reuse it in this new class.
sql/item_func.h:
  Added Item_user_var_as_out_param class that represents user variable
  which used as out parameter in LOAD DATA.
sql/log_event.cc:
  New way of replicating LOAD DATA. Now we do it similarly to other
  queries. We store LOAD DATA query in new Execute_load_query event
  (which is last in the sequence of events representing LOAD DATA).
  When we are executing this event we simply rewrite part of query which
  holds name of file (we use name of temporary file) and then execute it
  as usual query. In the beggining of this sequence we use Begin_load_query
  event which is almost identical to Append_file event.
sql/log_event.h:
  New way of replicating LOAD DATA. Now we do it similarly to other
  queries. We store LOAD DATA query in new Execute_load_query event
  (which is last in the sequence of events representing LOAD DATA).
  When we are executing this event we simply rewrite part of query which
  holds name of file (we use name of temporary file) and then execute it
  as usual query. In the beggining of this sequence we use Begin_load_query
  event which is almost identical to Append_file event.
sql/mysql_priv.h:
  Now mysql_load() has two more arguments. They are needed to pass list of
  columns and corresponding expressions from new LOAD DATA's SET clause.
sql/share/errmsg.txt:
  Added new error message which is used to forbid loading of data from
  fixed length rows to variables.
sql/sql_lex.h:
  Added LEX::fname_start/fname_end members. 
  They are pointers to part of LOAD DATA statement which should be
  rewritten during replication (file name + little extra).
sql/sql_load.cc:
  Added support for extended LOAD DATA. 
  Now one can use user variables as target for data loaded from file 
  (besides table's columns). Also LOAD DATA got new SET-clause in which
  one can specify values for table columns as expressions.
  
  Updated mysql_load()/read_fixed_length()/read_sep_field() to support
  this functionality (now they can read data from file to both columns and
  variables and assign do calculations and assignments specified in SET
  clause).
  
  We also use new approach for LOAD DATA binlogging/replication.
sql/sql_parse.cc:
  mysql_execute_command():
    Since now we have SET clause in LOAD DATA we should also check
    permissions for tables used in its expressions. Also mysql_load()
    has two more arguments to pass information about this clause.
sql/sql_repl.cc:
  New way of replicating LOAD DATA. Now we do it similarly to other
  queries. We store LOAD DATA query in new Execute_load_query event
  (which is last in the sequence of events representing LOAD DATA).
  When we are executing this event we simply rewrite part of query which
  holds name of file (we use name of temporary file) and then execute it
  as usual query. In the beggining of this sequence we use Begin_load_query
  event which is almost identical to Append_file event.
sql/sql_repl.h:
  struct st_load_file_info:
    Removed memebers which are no longer needed for LOAD DATA binnlogging.
sql/sql_yacc.yy:
  Added support for extended LOAD DATA syntax. Now one can use
  user variables as target for data loaded from file (besides table's 
  columns). Also LOAD DATA got new SET-clause in which one can specify
  values for table columns as expressions.
  
  For example the following is possible:
  LOAD DATA INFILE 'words.dat' INTO TABLE t1 (a, @b) SET c = @b + 1;
  
  Also now we save pointers to the beginning and to the end of part of 
  LOAD DATA statement which should be rewritten during replication.
2005-03-16 04:32:47 +03:00
unknown
de1dcee97e after merge fixes 2005-02-16 17:34:02 +01:00
unknown
88bd301d36 XA (not completely polished out yet)
include/my_pthread.h:
  cleanup. don't use gcc extensions
innobase/include/trx0sys.ic:
  Jan's fix for innobase_xa_prepare
innobase/read/read0read.c:
  Jan's fix for innobase_xa_prepare
innobase/trx/trx0trx.c:
  Jan's fix for innobase_xa_prepare
mysql-test/include/varchar.inc:
  test fix
mysql-test/r/ctype_ucs.result:
  new log event - all binlog positions are changed :(
mysql-test/r/drop_temp_table.result:
  new log event - all binlog positions are changed :(
mysql-test/r/insert_select.result:
  new log event - all binlog positions are changed :(
mysql-test/r/mix_innodb_myisam_binlog.result:
  new log event - all binlog positions are changed :(
mysql-test/r/myisam.result:
  test fix
mysql-test/r/rpl000015.result:
  new log event - all binlog positions are changed :(
mysql-test/r/rpl_change_master.result:
  new log event - all binlog positions are changed :(
mysql-test/r/rpl_charset.result:
  new log event - all binlog positions are changed :(
mysql-test/r/rpl_error_ignored_table.result:
  new log event - all binlog positions are changed :(
mysql-test/r/rpl_flush_log_loop.result:
  new log event - all binlog positions are changed :(
mysql-test/r/rpl_flush_tables.result:
  new log event - all binlog positions are changed :(
mysql-test/r/rpl_loaddata.result:
  new log event - all binlog positions are changed :(
mysql-test/r/rpl_loaddata_rule_m.result:
  new log event - all binlog positions are changed :(
mysql-test/r/rpl_loaddata_rule_s.result:
  new log event - all binlog positions are changed :(
mysql-test/r/rpl_log.result:
  new log event - all binlog positions are changed :(
mysql-test/r/rpl_log_pos.result:
  new log event - all binlog positions are changed :(
mysql-test/r/rpl_max_relay_size.result:
  new log event - all binlog positions are changed :(
mysql-test/r/rpl_relayrotate.result:
  new log event - all binlog positions are changed :(
mysql-test/r/rpl_replicate_do.result:
  new log event - all binlog positions are changed :(
mysql-test/r/rpl_reset_slave.result:
  new log event - all binlog positions are changed :(
mysql-test/r/rpl_rotate_logs.result:
  new log event - all binlog positions are changed :(
mysql-test/r/rpl_server_id1.result:
  new log event - all binlog positions are changed :(
mysql-test/r/rpl_server_id2.result:
  new log event - all binlog positions are changed :(
mysql-test/r/rpl_temporary.result:
  new log event - all binlog positions are changed :(
mysql-test/r/rpl_timezone.result:
  new log event - all binlog positions are changed :(
mysql-test/r/rpl_until.result:
  new log event - all binlog positions are changed :(
mysql-test/r/rpl_user_variables.result:
  new log event - all binlog positions are changed :(
mysql-test/r/user_var.result:
  new log event - all binlog positions are changed :(
mysql-test/t/ctype_ucs.test:
  new log event - all binlog positions are changed :(
mysql-test/t/mix_innodb_myisam_binlog.test:
  new log event - all binlog positions are changed :(
mysql-test/t/mysqlbinlog.test:
  new log event - all binlog positions are changed :(
mysql-test/t/mysqlbinlog2.test:
  new log event - all binlog positions are changed :(
mysql-test/t/rpl_charset.test:
  new log event - all binlog positions are changed :(
mysql-test/t/rpl_error_ignored_table.test:
  new log event - all binlog positions are changed :(
mysql-test/t/rpl_loaddata_rule_m.test:
  new log event - all binlog positions are changed :(
mysql-test/t/rpl_loaddata_rule_s.test:
  new log event - all binlog positions are changed :(
mysql-test/t/rpl_log.test:
  new log event - all binlog positions are changed :(
mysql-test/t/rpl_log_pos.test:
  new log event - all binlog positions are changed :(
mysql-test/t/rpl_user_variables.test:
  new log event - all binlog positions are changed :(
mysql-test/t/user_var.test:
  new log event - all binlog positions are changed :(
mysys/hash.c:
  typo fixed
sql/ha_berkeley.cc:
  handlerton framework
sql/ha_berkeley.h:
  handlerton framework
sql/ha_innodb.cc:
  handlerton framework
sql/ha_innodb.h:
  handlerton framework
sql/handler.cc:
  new transaction handling, handlerton framework, two-phase commit, XA support
sql/handler.h:
  new transaction handling, handlerton framework, two-phase commit, XA support
sql/lex.h:
  XA commands
sql/log.cc:
  new transaction handling, handlerton framework, two-phase commit,
  XA support, tc-logging, TC_LOG_MMAP class
sql/log_event.cc:
  Xid_log_event
sql/log_event.h:
  Xid_log_event, LOG_EVENT_BINLOG_CLOSED_F flag
sql/mysql_priv.h:
  wrapper for query_id++
sql/mysqld.cc:
  new command-line options --log-tc, --log-tc-size, --tc-heuristic-recover,
  new status variables Tc_log_page_size, Tc_log_max_pages_used, Tc_log_page_waits.
  init/stop tc logging
sql/set_var.h:
  warning fixed
sql/share/errmsg.txt:
  XA error messages
sql/sp_head.cc:
  s/query_id++/next_query_id()/
sql/sql_base.cc:
  typo fixed. new transaction handling.
sql/sql_class.cc:
  cleanup of THD.transaction
sql/sql_class.h:
  TC_LOG classes, new status variables, new savepoint handling, XA support
sql/sql_insert.cc:
  comments
sql/sql_lex.cc:
  s/found_colon/found_semicolon/
sql/sql_lex.h:
  SQLCOM_XA_xxx, XA related changes in Lex
sql/sql_parse.cc:
  cleanup, XA commands, new savepoint handling
sql/sql_repl.cc:
  two functions moved to log.cc
sql/sql_repl.h:
  two functions moved to log.cc
sql/sql_trigger.cc:
  s/lex.name_and_length/lex.ident/
sql/sql_yacc.yy:
  XA commands, cleanup
2005-01-16 13:16:23 +01:00
unknown
62554f812e This is the final commit for Worklog tasks:
* A more dynamic binlog format which allows small changes (1064)
   * Log session variables in Query_log_event (1063)
It contains a few bugfixes (which I made when running the testsuite).
I carefully updated the results of the testsuite (i.e. I checked for every one,
if the difference between .reject and .result could be explained).
Apparently mysql-test-run --manager is broken in 4.1 and 5.0 currently,
so I could neither run the few tests which require --manager, nor check
that they pass nor modify their .result. But for builds, we don't run
with --manager.
Apart from --manager, the full testsuite passes, with Valgrind too (no errors).
I'm going to push in the next minutes. Remains: update the manual.
Note: by chance I saw that (in 4.1, in 5.0) rpl_get_lock fails when run alone;
this is normal at it makes assumptions on thread ids. I will fix this one day
in 4.1.


mysql-test/r/rpl000015.result:
  result update
mysql-test/r/rpl_change_master.result:
  result update
mysql-test/r/rpl_error_ignored_table.result:
  result update
mysql-test/r/rpl_flush_log_loop.result:
  result update
mysql-test/r/rpl_flush_tables.result:
  result update
mysql-test/r/rpl_loaddata.result:
  result update
mysql-test/r/rpl_loaddata_rule_m.result:
  result update
mysql-test/r/rpl_loaddata_rule_s.result:
  result update
mysql-test/r/rpl_log.result:
  result update
mysql-test/r/rpl_log_pos.result:
  result update
mysql-test/r/rpl_max_relay_size.result:
  result update
mysql-test/r/rpl_relayrotate.result:
  result update
mysql-test/r/rpl_replicate_do.result:
  result update
mysql-test/r/rpl_reset_slave.result:
  result update
mysql-test/r/rpl_rotate_logs.result:
  result update
mysql-test/r/rpl_session_var.result:
  result update
mysql-test/r/rpl_temporary.result:
  result update
mysql-test/r/rpl_trunc_binlog.result:
  result update
mysql-test/r/rpl_until.result:
  result update
mysql-test/r/rpl_user_variables.result:
  result update
mysql-test/t/rpl000010-slave.opt:
  need to wait 2 events, because now we receive a Format_desc on top of the Rotate,
  when replication starts.
mysql-test/t/rpl000015.test:
  relay log information is not repeatable in general (if a reconnection
  happens because --sleep=10 for example), so we hide these columns.
mysql-test/t/rpl_change_master.test:
  relay log information is not repeatable in general (if a reconnection
  happens because --sleep=10 for example), so we hide these columns.
mysql-test/t/rpl_empty_master_crash.test:
  relay log information is not repeatable in general (if a reconnection
  happens because --sleep=10 for example), so we hide these columns.
mysql-test/t/rpl_error_ignored_table.test:
  relay log information is not repeatable in general (if a reconnection
  happens because --sleep=10 for example), so we hide these columns.
mysql-test/t/rpl_flush_log_loop.test:
  relay log information is not repeatable in general (if a reconnection
  happens because --sleep=10 for example), so we hide these columns.
mysql-test/t/rpl_loaddata.test:
  position update
mysql-test/t/rpl_loaddata_rule_m.test:
  position update
mysql-test/t/rpl_loaddata_rule_s.test:
  position update
mysql-test/t/rpl_log.test:
  position update
mysql-test/t/rpl_log_pos.test:
  position update
mysql-test/t/rpl_max_relay_size.test:
  relay log information is not repeatable in general (if a reconnection
  happens because --sleep=10 for example), so we hide these columns.
mysql-test/t/rpl_openssl.test:
  relay log information is not repeatable in general (if a reconnection
  happens because --sleep=10 for example), so we hide these columns.
mysql-test/t/rpl_redirect.test:
  relay log information is not repeatable in general (if a reconnection
  happens because --sleep=10 for example), so we hide these columns.
mysql-test/t/rpl_relayrotate-slave.opt:
  better options for this test
mysql-test/t/rpl_relayrotate.test:
  using max() is better for debugging (it shows at which place the slave
  SQL thread resumed)
mysql-test/t/rpl_replicate_do.test:
  relay log information is not repeatable in general (if a reconnection
  happens because --sleep=10 for example), so we hide these columns.
mysql-test/t/rpl_reset_slave.test:
  relay log information is not repeatable in general (if a reconnection
  happens because --sleep=10 for example), so we hide these columns.
mysql-test/t/rpl_rotate_logs.test:
  relay log information is not repeatable in general (if a reconnection
  happens because --sleep=10 for example), so we hide these columns.
mysql-test/t/rpl_session_var.test:
  100 because password() is longer than 10 chars
mysql-test/t/rpl_trunc_binlog.test:
  relay log information is not repeatable in general (if a reconnection
  happens because --sleep=10 for example), so we hide these columns.
mysql-test/t/rpl_until.test:
  position update
mysql-test/t/rpl_user_variables.test:
  position update
sql/log.cc:
  Ensure that the Format_desc propagated on next relay logs does not trigger
  undue actions (like incrementing some positions or clearing some files).
sql/log_event.cc:
  * When the slave SQL thread finds a Rotate/Format_desc/Stop in the middle of
  a transaction (then these were written by the slave itself to its relay log),
  it should not increment rli->group* variables, but only rli->event* ones.
  * When the slave SQL thread finds a Format_desc not to be ignored (not
  the same server id as the slave's), if it has log_pos==0 it must not trigger
  "unfinished transaction in master's binlog" (log_pos==0 is always a marker
  in the relay log to mean "this event was not at this place in the master's
  binlog": it's for fake Rotate events, and for Format_description events which the master had
  to send us for replication to start).
  * In the Query_log_event on disk, catalog is now terminated by '\0'.
  * thd->catalog must be set to 0 when some exec_event() terminate (otherwise
  double free).
sql/slave.cc:
  * Fixes for a few bugs when ignoring events in the slave SQL thread:
    - do not decrement rli->slave_skip_counter if the event is an event
    related to the binlog or relay log itself (FORMAT_DESCRIPTION,
    ROTATE, STOP) because these events should never be skipped (or the slave
    will be confused). Usually the user wants to skip a query, not a Rotate... 
    - when we (re)connect to the master, we must free description_event_for_queue
    (otherwise memory leak when we reconnect). 
  * Changed a bit the code where we change description_event_for_queue,
  to make it look "safer".
  * Moved 'created=0' to log.cc where it is safer.
  * When the slave SQL thread finds a Rotate/Format_desc/Stop in the middle of
  a transaction (then these were written by the slave itself to its relay log),
  it should not increment rli->group* variables, but only rli->event* ones.
sql/sql_class.h:
  a warning comment
sql/sql_repl.cc:
  A mistake: I had passed a char* instead of char**
2003-12-19 22:40:23 +01:00
unknown
80ec807976 WorkLog#1323
Deprecate the use of TYPE=... Preferred syntax is ENGINE=


include/mysqld_error.h:
  New warning for deprecated syntax
sql/lex.h:
  Introduce ENGINE keyword
  Sort order of symbols
sql/share/czech/errmsg.txt:
  New warning for deprecated syntax
sql/share/danish/errmsg.txt:
  New warning for deprecated syntax
sql/share/dutch/errmsg.txt:
  New warning for deprecated syntax
sql/share/english/errmsg.txt:
  New warning for deprecated syntax
sql/share/estonian/errmsg.txt:
  New warning for deprecated syntax
sql/share/french/errmsg.txt:
  New warning for deprecated syntax
sql/share/german/errmsg.txt:
  New warning for deprecated syntax
sql/share/greek/errmsg.txt:
  New warning for deprecated syntax
sql/share/hungarian/errmsg.txt:
  New warning for deprecated syntax
sql/share/italian/errmsg.txt:
  New warning for deprecated syntax
sql/share/japanese/errmsg.txt:
  New warning for deprecated syntax
sql/share/korean/errmsg.txt:
  New warning for deprecated syntax
sql/share/norwegian-ny/errmsg.txt:
  New warning for deprecated syntax
sql/share/norwegian/errmsg.txt:
  New warning for deprecated syntax
sql/share/polish/errmsg.txt:
  New warning for deprecated syntax
sql/share/portuguese/errmsg.txt:
  New warning for deprecated syntax
sql/share/romanian/errmsg.txt:
  New warning for deprecated syntax
sql/share/russian/errmsg.txt:
  New warning for deprecated syntax
sql/share/serbian/errmsg.txt:
  New warning for deprecated syntax
sql/share/slovak/errmsg.txt:
  New warning for deprecated syntax
sql/share/spanish/errmsg.txt:
  New warning for deprecated syntax
sql/share/swedish/errmsg.txt:
  New warning for deprecated syntax
sql/share/ukrainian/errmsg.txt:
  New warning for deprecated syntax
sql/sql_show.cc:
  Change TYPE= with ENGINE=
sql/sql_yacc.yy:
  Introduce ENGINE keyword,
  Deprecate TYPE= syntax,
  Introduce SHOW ENGINE syntax,
  Deprecate SHOW INNODB/BDB syntax.
mysql-test/r/alias.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/alter_table.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/auto_increment.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/bdb-alter-table-1.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/bdb-crash.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/bdb-deadlock.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/bdb.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/bdb_cache.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/case.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/cast.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/constraints.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/create.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/ctype_collate.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/ctype_latin1_de.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/ctype_many.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/ctype_mb.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/ctype_recoding.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/ctype_ucs.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/delete.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/distinct.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/fulltext.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/fulltext2.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/fulltext_distinct.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/fulltext_left_join.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/func_compress.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/func_date_add.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/func_group.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/func_if.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/func_str.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/func_system.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/func_test.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/func_time.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/gis-rtree.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/group_by.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/handler.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/heap.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/heap_auto_increment.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/heap_btree.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/heap_hash.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/help.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/innodb-deadlock.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/innodb.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/innodb_cache.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/innodb_handler.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/insert_select.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/isam.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/join.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/join_crash.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/join_outer.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/key.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/lock.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/lock_tables_lost_commit.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/merge.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/mix_innodb_myisam_binlog.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/multi_update.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/myisam.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/null.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/null_key.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/order_by.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/query_cache.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/range.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/repair_part1.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/replace.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/rollback.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/rpl000006.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/rpl_flush_tables.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/rpl_insert_id.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/rpl_relayrotate.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/select.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/select_found.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/show_check.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/sql_mode.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/status.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/subselect.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/subselect2.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/subselect_innodb.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/symlink.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/temp_table.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/type_blob.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/type_datetime.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/type_enum.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/type_nchar.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/type_set.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/union.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/update.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/r/warnings.result:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/alias.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/alter_table.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/auto_increment.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/bdb-alter-table-1.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/bdb-crash.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/bdb-deadlock.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/bdb.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/bdb_cache.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/create.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/ctype_ucs.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/delete.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/distinct.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/fulltext.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/fulltext2.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/fulltext_distinct.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/fulltext_left_join.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/func_compress.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/func_date_add.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/func_group.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/func_if.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/func_str.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/func_test.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/func_time.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/gis-rtree.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/group_by.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/handler.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/heap.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/heap_auto_increment.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/heap_btree.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/heap_hash.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/help.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/innodb-deadlock.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/innodb.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/innodb_cache.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/innodb_handler.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/insert_select.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/isam.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/join.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/join_crash.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/join_outer.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/key.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/lock.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/lock_tables_lost_commit.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/merge.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/mix_innodb_myisam_binlog.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/multi_update.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/myisam.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/null.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/null_key.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/order_by.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/outfile.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/query_cache.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/query_cache_merge.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/range.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/repair_part1.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/replace.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/rollback.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/rpl000006.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/rpl_flush_tables.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/rpl_insert_id.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/rpl_relayrotate.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/select.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/select_found.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/show_check.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/sql_mode.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/status.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/subselect.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/subselect2.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/subselect_innodb.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/symlink.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/temp_table.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/type_datetime.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/type_set.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/union.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/update.test:
  Change occurances of TYPE= to ENGINE=
mysql-test/t/warnings.test:
  Change occurances of TYPE= to ENGINE=
  New test for deprecated syntax
2003-12-10 04:31:42 +00:00
unknown
f72611b4fa After merge fixes
Added initialization of all important global variables


BUILD/SETUP.sh:
  build with readline
client/mysqltest.c:
  Added variable SERVER_VERSION
myisam/mi_key.c:
  Indentation change
myisam/mi_open.c:
  After merge fix
myisam/mi_range.c:
  After merge fix
myisam/mi_rkey.c:
  After merge fix
myisam/mi_search.c:
  After merge fix
myisam/myisamdef.h:
  After merge fix
mysql-test/include/not_embedded.inc:
  Fix test (because of wrong utf8 test)
mysql-test/r/alter_table.result:
  Updated results after merge
mysql-test/r/create.result:
  Updated results after merge
mysql-test/r/ctype_recoding.result:
  Updated results after merge
mysql-test/r/fulltext.result:
  Updated results after merge
mysql-test/r/func_group.result:
  Updated results after merge
mysql-test/r/group_by.result:
  Updated results after merge
mysql-test/r/innodb.result:
  Updated results after merge
mysql-test/r/join_outer.result:
  Updated results after merge
mysql-test/r/null_key.result:
  Updated results after merge
mysql-test/r/order_by.result:
  Updated results after merge
mysql-test/r/query_cache.result:
  Updated results after merge
mysql-test/r/repair.result:
  Updated results after merge
mysql-test/r/rpl_flush_tables.result:
  Updated results after merge
mysql-test/r/union.result:
  Updated results after merge
mysql-test/r/update.result:
  Updated results after merge
mysql-test/t/ansi.test:
  After merge fixes
mysql-test/t/create.test:
  After merge fixes
mysql-test/t/ctype_recoding.test:
  After merge fixes
mysql-test/t/ctype_ujis.test:
  After merge fixes
mysql-test/t/fulltext.test:
  After merge fixes
mysql-test/t/innodb.test:
  After merge fixes
mysql-test/t/join_outer.test:
  After merge fixes
mysql-test/t/loaddata.test:
  After merge fixes
mysql-test/t/order_by.test:
  After merge fixes
mysql-test/t/rpl_flush_tables.test:
  After merge fixes
mysql-test/t/status.test:
  After merge fixes
mysql-test/t/subselect.test:
  After merge fixes
sql/convert.cc:
  Code cleanup
sql/field.cc:
  After merge fixes
sql/filesort.cc:
  Remove compiler warning
sql/item.cc:
  More efficient set_name() (no mallocs)
sql/item_cmpfunc.cc:
  Code Code cleanup
  Item_bool_func2::fix_fields() added to get error handling right for cmp_charset
sql/item_cmpfunc.h:
  New prototypes
sql/item_func.cc:
  After merge fix
sql/item_strfunc.cc:
  Faster check for BINARY
sql/log_event.cc:
  Comment cleanup
sql/mysql_priv.h:
  New prototypes and variables
sql/mysqld.cc:
  Added initialization of all important global variables.
  Cleanup of variable declarations
  This is needed ot make the embedded version restartable
sql/opt_sum.cc:
  After merge fix
sql/set_var.cc:
  Code cleanup
sql/sql_acl.cc:
  After merge fix
  Better error message
sql/sql_db.cc:
  After merge fix
sql/sql_derived.cc:
  After merge fix
sql/sql_insert.cc:
  Indentation cleanups
sql/sql_list.h:
  Added empty() to base_ilist
sql/sql_parse.cc:
  After merge fix
sql/sql_select.cc:
  After merge fix
  Fixed derived name handling in EXPLAIN
sql/sql_show.cc:
  After merge fix
sql/sql_string.cc:
  Made copy_and_convert global
sql/sql_string.h:
  Made copy_and_convert global
sql/sql_update.cc:
  After merge fix
sql/sql_yacc.yy:
  After merge fix
sql/thr_malloc.cc:
  Added sql_strmake_with_convert()
sql/unireg.h:
  Added MAX_ALIAS_NAME
strings/ctype-ujis.c:
  Fixed bug in converting to ujis
2003-05-21 21:39:58 +03:00
unknown
ec72bda592 Scrum task 845. Thi is a behaviour change :
now by default, FLUSH, OPTIMIZE, ANALYZE, REPAIR commands are written to the
binlog, unless the new NO_WRITE_TO_BINLOG keyword was used :
OPTIMIZE NO_WRITE_TO_BINLOG table t;

Previously these commands were never written to the binlog, but there are
2 reasons to change this :
- the RENAME TABLE in MERGE table bug (#175) on slave
- the possible "differently optimised queries may lead to different
updates on the master and slave" bug, until we have automatic ORDER BY.

FLUSH LOGS/SLAVE/MASTER/TABLES WITH READ LOCK are never written to the binlog.
New test for the new logging behaviour.
Other small change : reload_acl_and_cache() and reset_slave() don't send their errors themselves,
this is more usual.


mysql-test/mysql-test-run.sh:
  rpl_flush_tables.test generates 'table xx is open on rename'.
  This is normal and done on purpose, so don't report it.
sql/lex.h:
  New keyword NO_WRITE_TO_BINLOG
sql/mysql_priv.h:
  reload_acl_and_cache() now decides if we want to write the FLUSH command
  to the binlog or not (FLUSH MASTER, FLUSH SLAVE, FLUSH TABLES
  WITH READ LOCK, FLUSH LOGS cannot go into the binlog).
sql/mysqld.cc:
  updated for new prototype of reload_acl_and_cache().
sql/sql_lex.h:
  New boolean no_write_to_binlog in the lex structure.
sql/sql_parse.cc:
  reload_acl_and_cache() now does not send its errors itself;
  it saves the error and the caller sends it.
  FLUSH, OPTIMIZE, ANALYZE, REPAIR commands don't write to the binlog
  if the NO_WRITE_TO_BINLOG keyword was used.
sql/sql_repl.cc:
  reset_slave() does not send its errors himself.
sql/sql_yacc.yy:
  New optional keyword NO_WRITE_TO_BINLOG for OPTIMIZE/ANALYZE/REPAIR/FLUSH :
  OPTIMIZE NO_WRITE_TO_BINLOG TABLE t;
  ANALYZE NO_WRITE_TO_BINLOG TABLE t;
  REPAIR NO_WRITE_TO_BINLOG TABLE t;
  FLUSH NO_WRITE_TO_BINLOG TABLE t;
2003-05-15 18:35:39 +02:00