This saves one byte per Query_log_event on disk compared to 5.0.[0..3]. Compatibility problems with 5.0.x where x<4
are explained in the comments in log_event.cc. Putting back s/my_open(O_TRUNC)/(my_delete+my_create) change which had
been wiped away by somebody doing a wrong 4.1->5.0 merge (which happened just
before 5.0.3 :( ). Applying it to new events for LOAD DATA INFILE.
If slave fails in Execute_load_query_log_event::exec_event(),
don't delete the file (so that it's re-usable at next START SLAVE).
And (youpi!) fix for BUG#3247 "a partially completed LOAD DATA INFILE is not
executed at all on the slave" (storing an Execute_load_query_log_event
to binlog, with its error code, instead of Delete_file_log_event).
mysql-test/r/mix_innodb_myisam_binlog.result:
we now use one less byte when storing the catalog in binlog so positions change
mysql-test/r/rpl_change_master.result:
we now use one less byte when storing the catalog in binlog so positions change
mysql-test/r/rpl_deadlock.result:
we now use one less byte when storing the catalog in binlog so positions change
mysql-test/r/rpl_error_ignored_table.result:
we now use one less byte when storing the catalog in binlog so positions change
mysql-test/r/rpl_flush_log_loop.result:
we now use one less byte when storing the catalog in binlog so positions change
mysql-test/r/rpl_loaddata.result:
we now use one less byte when storing the catalog in binlog so positions change.
Plus testing replication of LOAD DATA INFILE if duplicate key and non-transactional table.
mysql-test/r/rpl_log.result:
we now use one less byte when storing the catalog in binlog so positions change
mysql-test/r/rpl_max_relay_size.result:
we now use one less byte when storing the catalog in binlog so positions change
mysql-test/r/rpl_relayrotate.result:
we now use one less byte when storing the catalog in binlog so positions change
mysql-test/r/rpl_replicate_do.result:
we now use one less byte when storing the catalog in binlog so positions change
mysql-test/r/rpl_rotate_logs.result:
we now use one less byte when storing the catalog in binlog so positions change
mysql-test/r/rpl_until.result:
we now use one less byte when storing the catalog in binlog so positions change
mysql-test/t/mysqlbinlog.test:
we now use one less byte when storing the catalog in binlog so positions change
mysql-test/t/mysqlbinlog2.test:
we now use one less byte when storing the catalog in binlog so positions change
mysql-test/t/rpl_deadlock.test:
we now use one less byte when storing the catalog in binlog so positions change
mysql-test/t/rpl_loaddata.test:
we now use one less byte when storing the catalog in binlog so positions change.
Plus testing replication of LOAD DATA INFILE if duplicate key and non-transactional table.
mysql-test/t/rpl_until.test:
we now use one less byte when storing the catalog in binlog so positions change
sql/log_event.cc:
a) We now store the catalog in Query_log_event in binlog WITHOUT its end zero.
This saves one byte per Query_log_event on disk. Compatibility problems with 5.0.x where x<4
are explained in the comments in this file.
b) putting back s/my_open(O_TRUNC)/(my_delete+my_create) change which had
been wiped away by somebody doing a wrong 4.1->5.0 merge (which happened just
before 5.0.3 :( ). Applying it to new events for LOAD DATA INFILE.
c) if slave fails in Execute_load_query_log_event::exec_event(),
don't delete the file (so that it's re-usable at next START SLAVE).
sql/log_event.h:
We now store the catalog in Query_log_event in binlog WITHOUT its end zero.
This saves one byte per Query_log_event on disk. This new storage for
the catalog is denoted by Q_CATALOG_NZ_CODE (couldn't re-use Q_CATALOG_CODE
as 5.0.3 slaves of this 5.0.4 master would segfault because it would
expect a 0 when there is none.
Renaming get_open_mode() to get_create_or_append() (see log_event.cc)
sql/sql_load.cc:
Fix for BUG#3247: if LOAD DATA INFILE fails but has permanently updated a table
(i.e. has deleted/added/modified some rows in a non-transactional table),
we must write an Execute_load_query_log_event to binlog (with the error code,
as this class beautifully inherits from Query_log_event, it can store
the error code - thanks Dmitri) and not a Delete_file_log_event (we use
to write a Delete_file_log_event: no update happened on slave, bug).
This saves one byte per Query_log_event on disk compared to 5.0.[0..3]. Compatibility problems with 5.0.x where x<4
are explained in the comments in log_event.cc. Putting back s/my_open(O_TRUNC)/(my_delete+my_create) change which had
been wiped away by somebody doing a wrong 4.1->5.0 merge (which happened just
before 5.0.3 :( ). Applying it to new events for LOAD DATA INFILE.
If slave fails in Execute_load_query_log_event::exec_event(),
don't delete the file (so that it's re-usable at next START SLAVE).
And (youpi!) fix for BUG#3247 "a partially completed LOAD DATA INFILE is not
executed at all on the slave" (storing an Execute_load_query_log_event
to binlog, with its error code, instead of Delete_file_log_event).
into serg.mylan:/usr/home/serg/Abk/mysql-5.0
innobase/include/trx0trx.h:
Auto merged
sql/ha_innodb.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/item.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
into production.mysql.com:/nfstmp1/guilhem/mysql-5.0-prod
BitKeeper/etc/logging_ok:
auto-union
sql/log.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/set_var.cc:
Auto merged
of SET ONE_SHOT; storing tz info directly in event (if this info is needed),
it's now allowed to have different global tz on master and slave.
client/mysqlbinlog.cc:
we need MAX_TIME_ZONE_NAME_LENGTH when processing log_event.h, and it's declared in mysql_priv.h
mysql-test/r/rpl_timezone.result:
result update
mysql-test/t/rpl_timezone-slave.opt:
Now that we can have different global value of timezone on master and slave, let's test it.
mysql-test/t/rpl_timezone.test:
Tests of the new replication of timezones: checking the output of mysqlbinlog,
replication of CONVERT_TZ().
sql/ha_innodb.cc:
No very fast shutdown on Netware (anyway it's disabled on all platforms,
but this is so that we don't forget to keep it disabled on Netware in the future).
sql/log.cc:
No more need to write SET ONE_SHOT to binlog for character set and timezone
(as we store this info directly nin the Query_log_event now).
sql/log_event.cc:
Exclude ::write() methods if MYSQL_CLIENT.
Storing timezone info in the Query_log_event in master. Re-reading it in slave.
Small code cleanups. I plan to not store the end 0 of catalog in binlog
events soon.
sql/log_event.h:
replication of time zones: a place for tz info in Query_log_event,
in LAST_EVENT_INFO. Plus if we are compiling a client, we don't need
the ::write() methods, so keeping them out (of mysqlbinlog.cc;
keeping them in, resulted in problem that mysqlbinlog does not know Timezone
structure).
sql/mysql_priv.h:
moving this define from tztime.h (tztime.h has things which are
too much for a client like mysqlbinlog).
sql/set_var.cc:
It's now allowed to change global value of charset or timezone even if using binlogging
or if being a slave.
Making CONVERT_TZ(,,@@session.time_zone) replicate.
sql/set_var.h:
these ::check()s are not needed anymore (changing global charset
or timezone is now allowed even if binlogging or slave)
sql/slave.cc:
No more need to check for same global timezone if master is 5.x
(ok, strictly speaking if it is > 5.0.3 but this is alpha).
sql/slave.h:
a function to wrap settings of charset to default.
sql/tztime.cc:
Adaptation of my_tz_find() to the case where it's not called from inside
a query (i.e. cannot join its tz tables to the query's ones): this variant
opens the tz tables itself, reads from them, and closes them. This is presently
only used by the slave SQL thread (when it sets the tz before executing a query).
sql/tztime.h:
declaration of new function, plus moving symbol to mysql_priv.h
for easier usage in mysqlbinlog (Dmitri, pardon me).
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
sql/log_event.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/slave.cc:
Auto merged
sql/slave.h:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_acl.h:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_repl.cc:
Auto merged
sql/sql_repl.h:
Auto merged
sql/Makefile.am:
Manual merge
sql/log.cc:
Manual merge
Renamed Table_filter to Rpl_filter
Eliminated very annoying memory leak
sql/Makefile.am:
Renamed Table_filter to Rpl_filter
sql/log.cc:
Renamed Table_filter to Rpl_filter
sql/log_event.cc:
Renamed Table_filter to Rpl_filter
sql/mysqld.cc:
Renamed Table_filter to Rpl_filter
Eliminated very annoying memory leak
sql/repl_failsafe.cc:
Renamed Table_filter to Rpl_filter
sql/slave.cc:
Renamed Table_filter to Rpl_filter
sql/slave.h:
Renamed Table_filter to Rpl_filter
sql/sql_acl.h:
Renamed Table_filter to Rpl_filter
sql/sql_parse.cc:
Renamed Table_filter to Rpl_filter
sql/sql_repl.cc:
Renamed Table_filter to Rpl_filter
sql/rpl_filter.cc:
Renamed Table_filter to Rpl_filter
sql/rpl_filter.h:
Renamed Table_filter to Rpl_filter
sql/sql_repl.h:
Renamed Table_filter to Rpl_filter
When we come to create these, they may already exist and it's necessary to delete these old, useless copies.
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
into mysql.com:/home/my/mysql-5.0
sql/item_func.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
The idea is to use TABLE_LIST::lock_type for passing type of lock for
target table to mysql_load() instead of using LEX::lock_option
(which were rewritten by first subselect in SET clause).
This should also fix potential problem with LOAD DATA in SP
(it is important for them to have right lock_type in the table
list by the end of statement parsing).
mysql-test/r/loaddata.result:
Added nice test for LOAD DATA with subquery.
mysql-test/t/loaddata.test:
Added nice test for LOAD DATA with subquery.
sql/log_event.cc:
Now we don't pass type of lock for target table to mysql_load()
explicitly . Instead we use TABLE_LIST::lock_type for this table
which is already properly set here.
sql/mysql_priv.h:
Now we don't pass type of lock for target table to mysql_load()
explicitly . Instead we properly set TABLE_LIST::lock_type for
this table in parser.
sql/sql_load.cc:
Now we don't pass type of lock for target table to mysql_load()
explicitly . Instead we properly set TABLE_LIST::lock_type for
this table in parser.
sql/sql_parse.cc:
Now we don't pass type of lock for target table to mysql_load()
explicitly . Instead we properly set TABLE_LIST::lock_type for
this table in parser.
sql/sql_yacc.yy:
load_data:
Let us use TABLE_LIST::lock_type for passing type of lock for target
table to mysql_load() instead of using LEX::lock_option (which will
be rewritten by first subselect in SET clause).
The idea is to use TABLE_LIST::lock_type for passing type of lock for
target table to mysql_load() instead of using LEX::lock_option
(which were rewritten by first subselect in SET clause).
This should also fix potential problem with LOAD DATA in SP
(it is important for them to have right lock_type in the table
list by the end of statement parsing).
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.
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
Needed to be able to have multiple masters connected
to same slave server with different filters.
sql/Makefile.am:
Add table_filter.cc
sql/log.cc:
Use Table_filter
sql/log_event.cc:
Use Table_filter
sql/mysql_priv.h:
Use Table_filter
sql/mysqld.cc:
Use Table_filter
sql/repl_failsafe.cc:
Use Table_filter
sql/slave.cc:
Use Table_filter
sql/slave.h:
Use Table_filter
sql/sql_acl.cc:
Use Table_filter
sql/sql_class.h:
Use const since they should not be changed
sql/sql_parse.cc:
Use Table_filter
sql/sql_repl.cc:
Use Table_filter
sql/sql_repl.h:
Use Table_filter
(next part is updating test results)
sql/item_func.cc:
no need for binlogging DO RELEASE_LOCK() anymore. Make GET_LOCK() do nothing in slave thread.
sql/log_event.cc:
comment fixes
sql/mysqld.cc:
warning removed
sql/slave.cc:
fix after merge
deadlock in MYSQL_LOG::new_file()
style fixes
mysql-test/r/innodb.result:
one more test for truncate
mysql-test/t/innodb.test:
one more test for truncate
sql/ha_innodb.cc:
bug#8151 - truncate leaves a transaction open
sql/handler.cc:
bug#8151 - truncate leaves a transaction open
sql/item.h:
style fix
sql/item_cmpfunc.cc:
style fix
sql/item_cmpfunc.h:
style fix
sql/item_func.cc:
style fix
sql/item_func.h:
style fix
sql/log.cc:
let new_file() to lock LOCK_index,
don't check for prepared_xids in rotate_and_purge()
increase thread_safe_increment when LOCK_log is taken
sql/log_event.cc:
mysqlbinlog now prints a warning if binlog was not closed properly
sql/sql_class.h:
comments
sql/sql_repl.cc:
DBUG_ENTER tag corrected
mysql-test/r/innodb.result:
Auto merged
mysql-test/t/innodb.test:
Auto merged
mysql-test/t/rpl_rotate_logs.test:
Auto merged
sql/item.cc:
Auto merged
sql/log.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/opt_range.cc:
Auto merged
sql/protocol.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_db.cc:
Auto merged
sql/sql_select.cc:
Auto merged
tests/mysql_client_test.c:
Auto merged
sql/examples/ha_archive.cc:
Merge with global tree
(Use my changes)
sql/sql_parse.cc:
Remove 'tmp' fix to be able to run tests
(Found during build process)
extra/comp_err.c:
Remove compiler warnings
extra/perror.c:
Remove compiler warnings
innobase/dict/dict0dict.c:
Remove compiler warnings
innobase/dict/dict0load.c:
Remove compiler warnings
innobase/pars/pars0sym.c:
Remove compiler warnings
innobase/row/row0row.c:
Remove compiler warnings
innobase/row/row0sel.c:
Remove compiler warnings
libmysqld/lib_sql.cc:
Remove not used variables
myisam/mi_key.c:
Remove compiler warnings
regex/engine.c:
Added comment
sql/derror.cc:
Remove not used variables
sql/examples/ha_archive.cc:
Fixed bug in blob handling
Removed not used variable
sql/field.cc:
Remove compiler warnings
Remove not used variables
sql/filesort.cc:
Remove compiler warnings
sql/ha_heap.cc:
Remove not used variable
sql/ha_innodb.cc:
Remove not used variables
Remove compiler warnings
sql/handler.cc:
Remove compiler warnings and remove not used variables
sql/item.cc:
Remove compiler warnings and remove not used variables
sql/item_subselect.cc:
Remove compiler warnings
sql/item_sum.cc:
Remove compiler warnings
sql/item_sum.h:
Remove compiler warnings and remove not used variables
sql/log.cc:
Remove compiler warnings and remove not used variables
sql/log_event.cc:
Remove compiler warnings
sql/mysqld.cc:
Remove compiler warnings and remove not used variables
sql/opt_range.cc:
Remove compiler warnings and remove not used variables
sql/slave.cc:
Remove compiler warnings and remove not used variables
sql/sp_pcontext.cc:
Remove compiler warnings and remove not used variables
sql/sql_acl.cc:
Remove compiler warnings and remove not used variables
sql/sql_analyse.cc:
Remove compiler warnings and remove not used variables
sql/sql_base.cc:
Remove compiler warnings and remove not used variables
sql/sql_db.cc:
Remove compiler warnings and remove not used variables
sql/sql_help.cc:
Remove compiler warnings and remove not used variables
sql/sql_insert.cc:
Remove compiler warnings and remove not used variables
sql/sql_load.cc:
Remove compiler warnings and remove not used variables
sql/sql_parse.cc:
Remove compiler warnings and remove not used variables
sql/sql_prepare.cc:
Remove compiler warnings and remove not used variables
sql/sql_select.cc:
Remove compiler warnings and remove not used variables
sql/sql_show.cc:
Remove compiler warnings and remove not used variables
sql/sql_table.cc:
Remove compiler warnings
sql/sql_union.cc:
Remove compiler warnings
sql/sql_update.cc:
Remove compiler warnings and remove not used variables
sql/sql_yacc.yy:
Remove compiler warnings and remove not used variables
sql/strfunc.cc:
Remove compiler warnings and remove not used variables
strings/ctype-ucs2.c:
Remove compiler warnings
tests/mysql_client_test.c:
Remove compiler warnings and remove not used variables
tools/mysqlmanager.c:
Remove compiler warnings and remove not used variables
cast sql_mode to ulonglong before int8store, otherwise the implementation of int8store
based on >> complains that we do 32-bit var >> 32 which is undefined according to C standard.
(compiler warning appeared on SGI Irix)
sql/log_event.cc:
cast sql_mode to ulonglong before int8store, otherwise the implementation of int8store
based on >> complains that we do 32-bit var >> 32 which is undefined according to C standard.
(compiler warning appeared on SGI Irix)
cast sql_mode to ulonglong before int8store, otherwise the implementation of int8store
based on >> complains that we do 32-bit var >> 32 which is undefined according to C standard.
(compiler warning appeared on SGI Irix)
correct end_log_pos for Xid_log_event
mysql-test/r/binlog.result:
don't depend on the previous tests
mysql-test/r/rpl_rotate_logs.result:
correct end_log_pos for Xid_log_event
mysql-test/t/binlog.test:
don't depend on the previous tests
sql/handler.h:
comment
sql/log_event.cc:
advance position for Xid
sql/log_event.h:
comment
sql/sql_class.h:
correct end_log_pos for Xid_log_event
sql/sql_parse.cc:
make sure commit handler knows whether it's autocommit or not