(as long as replicate-*-table rules were defined, multi-table DELETE was never
replicated by the slave).
sql/sql_parse.cc:
For a multi-table DELETE, there are two lists of tables:
- 'tables' contains the tables in the FROM. They have 'updating==0'.
- 'thd->lex.auxilliary_table_list.first' contains the tables between the DELETE and the FROM. They have 'updating==1'.
So the bug was that the slave only tests 'tables' and as all its elements have updating==0,
tables_ok() always returns 0.
So for a multi DELETE the slave now tests the 2nd list too.
I started with the other tip of the sausage: I thought of changing multi DELETE to use
only one list (given that 'updating' can be used to separate it in two when needed)
(with one list we wouldn't need to change the slave code), but finally hit the unicity
check in add_table_to_list() which started to return ER_NONUNIQ_TABLE (logical).
This fixed problem with index reads on character fields with BDB tables. (Bug #2509)
BitKeeper/etc/ignore:
added man/*.1
mysql-test/r/bdb.result:
New test
mysql-test/r/myisam.result:
More tests
mysql-test/t/bdb.test:
Test for idnex only read
mysql-test/t/myisam.test:
More test to verify pushed bug fix
sql/ha_berkeley.h:
Mark that strings may change on index only reads
sql/item_strfunc.cc:
Cleanup
sql/table.cc:
Allow index only reads on binary strings
<monty> ramil, in MySQL/MyISAM we should only strip end space, not 'space-like' characters.
<monty> This is according to SQL; When doing a comparision end space and only end space are ignored.
myisam/mi_key.c:
a proper fix for the bug #2298 Trailing whitespace inconsistently handled in WHERE clause.
myisam/mi_search.c:
a proper fix for the bug #2298 Trailing whitespace inconsistently handled in WHERE clause.
mysql-test/r/select.result:
test case for the bug #2298 Trailing whitespace inconsistently handled in WHERE clause.
mysql-test/t/select.test:
test case for the bug #2298 Trailing whitespace inconsistently handled in WHERE clause.
sql/sql_string.cc:
a proper fix for the bug #2298 Trailing whitespace inconsistently handled in WHERE clause.
A fix for a bug #3189, pertaining to crashing MySQL server when a query with MIN / MAX on the BLOB column is to be optimised
sql/opt_sum.cc:
A fix for a bug #3189, pertaining to crashing MySQL server when a query with MIN / MAX on the BLOB column is to be optimised
The test might fail if one runs it at 23:59:59 Dec 31
mysql-test/r/type_year.result:
a fix (bug #2335: Inconsistancy with handling of Years and NOW() function)
mysql-test/t/type_year.test:
a fix (bug #2335: Inconsistancy with handling of Years and NOW() function)
sql/field.h:
a fix (bug #2335: Inconsistancy with handling of Years and NOW() function)
Added support for lower_case_table_names=2, which is to be used on case insensitive file systems.
This tells MySQL to preserve the used case of filenames and database names to make it esier to move files between cases sensitive can case insensitive file systems (like Windows and Linux)
client/mysqltest.c:
Indentation cleanup
include/myisam.h:
Made some pointers 'const'
mysql-test/mysql-test-run.sh:
Portability fix for OSX
sql/filesort.cc:
Safety fix (not needed for current code but needed for 5.0)
sql/ha_berkeley.cc:
More debugging
Changed 'create' to return error number
sql/ha_berkeley.h:
Added HA_FILE_BASED
sql/ha_innodb.cc:
Added missing DBUG_RETURN
sql/ha_isam.cc:
Changed create to return error number
sql/ha_isam.h:
Added HA_FILE_BASED
sql/ha_isammrg.h:
Added HA_FILE_BASED
sql/ha_myisam.cc:
Changed create to return error number
sql/ha_myisam.h:
Added HA_FILE_BASED
sql/ha_myisammrg.cc:
Changed create to return error number
sql/ha_myisammrg.h:
Added HA_FILE_BASED
sql/handler.cc:
Ensure that table engines gets table names in lower case even if we are using lower_case_table_names
Removed test for DB_TYPE_INNODB by ensuring that create method returns error number.
sql/handler.h:
Added HA_FILE_BASED
Made some struct entries 'const'
Added 'alias' for create to be able to create tables in mixed case on case insensitive file systems
sql/mysql_priv.h:
Support for lower_case_table_names=2
sql/mysqld.cc:
Support for lower_case_table_names=2
Moved test of case insenstive file system after all mutex are created
sql/set_var.cc:
Support for lower_case_table_names=2
sql/sql_class.h:
Indentation change
sql/sql_db.cc:
Support for lower_case_table_names=2
sql/sql_insert.cc:
Indentation change
sql/sql_parse.cc:
Support for lower_case_table_names=2
sql/sql_rename.cc:
Support for lower_case_table_names=2
Added missing 'unpack_filename' to RENAME which may fix a bug in RENAME TABLE on windows
sql/sql_show.cc:
If lower_case_table_name=2 is given, show original case in SHOW CREATE TABLE
sql/sql_table.cc:
Support for lower_case_table_names=2 for DROP TABLE, RENAME TABLE, ALTER TABLE and CREATE TABLE
into eagle.mysql.r18.ru:/home/vva/work/BUG_2086/mysql-4.0
sql/share/czech/errmsg.txt:
Auto merged
sql/share/english/errmsg.txt:
Auto merged
sql/share/estonian/errmsg.txt:
Auto merged
sql/share/french/errmsg.txt:
Auto merged
sql/share/greek/errmsg.txt:
Auto merged
sql/share/hungarian/errmsg.txt:
Auto merged
sql/share/japanese/errmsg.txt:
Auto merged
sql/share/korean/errmsg.txt:
Auto merged
sql/share/norwegian-ny/errmsg.txt:
Auto merged
sql/share/norwegian/errmsg.txt:
Auto merged
sql/share/polish/errmsg.txt:
Auto merged
sql/share/romanian/errmsg.txt:
Auto merged
sql/share/slovak/errmsg.txt:
Auto merged
Fixed not updated test from last changeset
mysql-test/r/auto_increment.result:
Updated results
sql/mysqld.cc:
Cleaned up pid file handling (to remove compiler warning)
(bug #2086)
include/mysqld_error.h:
added error message for receiving variable with wrong GLOBAL|LOCAL type
mysql-test/r/variables.result:
added error message for receiving variable with wrong GLOBAL|LOCAL type
mysql-test/t/variables.test:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/set_var.cc:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/share/czech/errmsg.txt:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/share/danish/errmsg.txt:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/share/dutch/errmsg.txt:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/share/english/errmsg.txt:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/share/estonian/errmsg.txt:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/share/french/errmsg.txt:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/share/german/errmsg.txt:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/share/greek/errmsg.txt:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/share/hungarian/errmsg.txt:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/share/italian/errmsg.txt:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/share/japanese/errmsg.txt:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/share/korean/errmsg.txt:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/share/norwegian-ny/errmsg.txt:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/share/norwegian/errmsg.txt:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/share/polish/errmsg.txt:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/share/portuguese/errmsg.txt:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/share/romanian/errmsg.txt:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/share/russian/errmsg.txt:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/share/slovak/errmsg.txt:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/share/spanish/errmsg.txt:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/share/swedish/errmsg.txt:
added error message for receiving variable with wrong GLOBAL|LOCAL type
sql/share/ukrainian/errmsg.txt:
added error message for receiving variable with wrong GLOBAL|LOCAL type
more general message when slave can't start because of incorrect
replication information, the previous one was sometimes a misleading
indication (i.e. sometimes the problem had nothing to do with
system permissions).
The perfect fix would be to report the exact error to the client
(instead of pointing the client to the error log); this is a bit
of work so it's more a development task:
WL#1088 "Move all hardcoded messages of replication to share/errmsg.txt".
I was not able to modify the errmsg.txt in these sql/ subdirectories:
danish
dutch
german
italian
portuguese
russian
spanish
swedish
ukrainian
mysql-test/r/rpl_rotate_logs.result:
result update
sql/share/czech/errmsg.txt:
More general message when slave can't start because of incorrect
replication information, the previous one was sometimes a misleading
indication (i.e. sometimes the problem had nothing to do with
system permissions).
sql/share/english/errmsg.txt:
More general message when slave can't start because of incorrect
replication information, the previous one was sometimes a misleading
indication (i.e. sometimes the problem had nothing to do with
system permissions).
sql/share/estonian/errmsg.txt:
More general message when slave can't start because of incorrect
replication information, the previous one was sometimes a misleading
indication (i.e. sometimes the problem had nothing to do with
system permissions).
sql/share/french/errmsg.txt:
More general message when slave can't start because of incorrect
replication information, the previous one was sometimes a misleading
indication (i.e. sometimes the problem had nothing to do with
system permissions).
sql/share/greek/errmsg.txt:
More general message when slave can't start because of incorrect
replication information, the previous one was sometimes a misleading
indication (i.e. sometimes the problem had nothing to do with
system permissions).
sql/share/hungarian/errmsg.txt:
More general message when slave can't start because of incorrect
replication information, the previous one was sometimes a misleading
indication (i.e. sometimes the problem had nothing to do with
system permissions).
sql/share/japanese/errmsg.txt:
More general message when slave can't start because of incorrect
replication information, the previous one was sometimes a misleading
indication (i.e. sometimes the problem had nothing to do with
system permissions).
sql/share/korean/errmsg.txt:
More general message when slave can't start because of incorrect
replication information, the previous one was sometimes a misleading
indication (i.e. sometimes the problem had nothing to do with
system permissions).
sql/share/norwegian-ny/errmsg.txt:
More general message when slave can't start because of incorrect
replication information, the previous one was sometimes a misleading
indication (i.e. sometimes the problem had nothing to do with
system permissions).
sql/share/norwegian/errmsg.txt:
More general message when slave can't start because of incorrect
replication information, the previous one was sometimes a misleading
indication (i.e. sometimes the problem had nothing to do with
system permissions).
sql/share/polish/errmsg.txt:
More general message when slave can't start because of incorrect
replication information, the previous one was sometimes a misleading
indication (i.e. sometimes the problem had nothing to do with
system permissions).
sql/share/romanian/errmsg.txt:
More general message when slave can't start because of incorrect
replication information, the previous one was sometimes a misleading
indication (i.e. sometimes the problem had nothing to do with
system permissions).
sql/share/slovak/errmsg.txt:
More general message when slave can't start because of incorrect
replication information, the previous one was sometimes a misleading
indication (i.e. sometimes the problem had nothing to do with
system permissions).
Make ENGINE= an alias for TYPE= (Compabiltiy with 4.1)
Fix when using symlinked data files and realpath() is not working
client/mysqltest.c:
Copied mysqltest from 4.1 and modified this to compile in 4.0
This was needed to get replace_columns to work.
include/my_sys.h:
Stop compiler warnings about alloca on freebsd
myisam/mi_check.c:
Fix when using symlinked data files and realpath() is not working
mysql-test/r/handler.result:
test engine=
mysql-test/r/rpl_max_relay_size.result:
Use replace_columns to replace some 'not constant' columns
mysql-test/r/rpl_rotate_logs.result:
Use replace_columns to replace some 'not constant' columns
mysql-test/r/rpl_trunc_binlog.result:
Use replace_columns to replace some 'not constant' columns
mysql-test/t/handler.test:
test engine=
mysql-test/t/rpl_log_pos.test:
Use replace_columns to replace some 'not constant' columns
mysql-test/t/rpl_max_relay_size.test:
Use replace_columns to replace some 'not constant' columns
mysql-test/t/rpl_rotate_logs.test:
Use replace_columns to replace some 'not constant' columns
mysql-test/t/rpl_trunc_binlog.test:
Use replace_columns to replace some 'not constant' columns
mysys/my_symlink.c:
More debugging
sql/lex.h:
Make ENGINE= an alias for TYPE=
sql/mysqld.cc:
Code cleanup
strings/strto.c:
Fix for True64
strings/strtoll.c:
Fix for True64
strings/strtoull.c:
Remove not needed include file
into mysql.com:/home/mysql_src/mysql-4.0
sql/sql_acl.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_delete.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_update.cc:
Auto merged
"EE_ error codes (EE_DELETE, EE_WRITE) end up in the binlog, making slave stop".
The problem was that during execution of the command on the master, an error
can occur (for example, not space left on device, then mysqld waits and when
there is space it completes successfully: so finally it worked but the error
EE_WRITE remains in thd->net.last_errno and thd->net.last_error).
To know if finally the command succeeded, we test the 'error' variable in
every place, and if it shows no failure we reset thd->net.last_err* using
the function THD::clear_error() which is backported from 4.1.
A new test to see if now only real errors get to the binlog (note: the test
uses "rm").
Also a bit of memory free/alloc saving in log_event.cc (do not free the whole
mem_root after every query in the slave SQL thread: we can keep the initial
block of it; which will be freed when the thread terminates).
sql/log_event.cc:
In the slave SQL thread, it's a waste to free the initial block of the mem_root
after every query. We can instead keep it. It will be freed when the thread
terminates (in THD::~THD()).
sql/sql_acl.cc:
clear the error in thd->net.last_errno as there was no error
sql/sql_base.cc:
clear the error in thd->net.last_errno as there was no error
sql/sql_class.h:
Backport of THD::clear_error() from 4.1:
clears the error in thd->net.last_errno
sql/sql_db.cc:
clear the error in thd->net.last_errno as there was no error
sql/sql_delete.cc:
clear the error in thd->net.last_errno as there was no error
sql/sql_insert.cc:
clear the error in thd->net.last_errno as there was no error
sql/sql_parse.cc:
clear the error in thd->net.last_errno as there was no error
sql/sql_rename.cc:
clear the error in thd->net.last_errno as there was no error
sql/sql_table.cc:
clear the error in thd->net.last_errno as there was no error
sql/sql_update.cc:
clear the error in thd->net.last_errno as there was no error
mysql-test/r/have_met_timezone.require:
Portability fix (For AIX 4.3 and other machines that doesn't support MET timezone)
mysql-test/r/timezone.result:
Portability fix (For AIX 4.3 and other machines that doesn't support MET timezone)
mysql-test/t/mysqldump.test:
Portablity fix (Some machines like OSF doesn't read a big double as 'inf'
mysql-test/t/timezone.test:
Portability fix (For AIX 4.3 and other machines that doesn't support MET timezone)
Don't dump data for MRG_ISAM or MRG_MYISAM tables. (Bug #1846)
Ensure that 'lower_case_table_names' is always set on case insensitive file systems. (Bug #1812)
One can now configure MySQL as windows service as a normal user. (Bug #1802)
Database names is now compared with lower case in ON clause when lower_case_table_names is set. (Bug #1736)
IGNORE ... LINES option didn't work when used with fixed length rows. (Bug #1704)
Change INSERT DELAYED ... SELECT... to INSERT .... SELECT (Bug #1983)
Safety fix for service 'mysql start' (Bug #1815)
client/mysql.cc:
Extend max_allowed_packet to 2G (Bug #2105)
client/mysqldump.c:
Extend max_allowed_packet to 2G (Bug #2105)
Don't dump data for MRG_ISAM or MRG_MYISAM tables. (Bug #1846)
configure.in:
Test for file linux/config.h
include/my_global.h:
Portability fix (Bug #1924)
mysql-test/r/insert.result:
Update test results
mysql-test/r/loaddata.result:
Update test results
mysql-test/r/lowercase_table.result:
Update test results
mysql-test/t/insert.test:
Test INSERT ... DELAYED ... SELECT
mysql-test/t/loaddata.test:
Added test of LOAD DATA INFILE ... IGNORE # LINES for fixed size tables
mysql-test/t/lowercase_table.test:
Test mixed lower/uppercase database names
sql/item.cc:
Made function not inline (to make it easier to modify it without recompilation of all files)
sql/item.h:
Moved function to item.cc
sql/mysqld.cc:
Merge pidfile create code
Ensure that 'lower_case_table_names' is always set on case insensitive file systems. (Bug #1812)
sql/nt_servc.cc:
One can now configure MySQL as windows service as a normal user. (Bug #1802)
sql/sql_base.cc:
Database names is now compared with lower case in ON clause when lower_case_table_names is set. (Bug #1736)
sql/sql_class.h:
Fixed type
sql/sql_load.cc:
IGNORE ... LINES option didn't work when used with fixed length rows. (Bug #1704)
sql/sql_parse.cc:
Change INSERT DELAYED ... SELECT... to INSERT .... SELECT
strings/ctype-tis620.c:
Ensure that memory is freed properly (Partly becasue of bug #1770)
Bar should check the proposed patch in #1770 if we can use it
support-files/mysql.server.sh:
Safety fix (Bug #1815)
Fixed problem with char > 128 in QUOTE() function. (Bug #1868)
Disable creation of symlinks if my_disable_symlink is set
Fixed searching of TEXT with end space. (Bug #1651)
Fixed caching bug in multi-table-update where same table was used twice. (Bug #1711)
Fixed problem with UNIX_TIMESTAMP() for timestamps close to 0. (Bug #1998)
Fixed timestamp.test
include/my_base.h:
Add HA_END_SPACE_KEY to mark keys that has VARCHAR/TEXT fields.
myisam/mi_check.c:
Delete not used variable
myisam/mi_key.c:
Fix autoincrement for signed columns (Bug #1366). Patch by Holyfoot
myisam/mi_open.c:
Bug fix for future (doesn't affect current code)
myisam/mi_search.c:
Ignore end space for VARCHAR/TEXT columns
mysql-test/r/auto_increment.result:
Test auto_increment with signed numbers
mysql-test/r/binary.result:
Update results (old result was wrong)
mysql-test/r/func_str.result:
Added test of QUOTE()
mysql-test/r/func_time.result:
Add test of unix_timestamp()
mysql-test/r/have_met_timezone.require:
Fixed test
mysql-test/r/innodb.result:
Add test for InnoDB behaviour with TRUNCATE
mysql-test/r/multi_update.result:
Test of multi-update bug
mysql-test/r/symlink.result:
Test of ALTER TABLE and symlinks
mysql-test/r/timezone.result:
Test of from_unixtime()
mysql-test/r/truncate.result:
Test of truncate and auto_increment
mysql-test/r/type_blob.result:
Test of key search on TEXT/VARCHAR column with end space
mysql-test/t/auto_increment.test:
Test auto_increment with signed numbers
mysql-test/t/func_str.test:
Added test of QUOTE()
mysql-test/t/func_time.test:
Add test of unix_timestamp()
mysql-test/t/innodb.test:
Add test for InnoDB behaviour with TRUNCATE
mysql-test/t/multi_update.test:
Test of multi-update bug
mysql-test/t/symlink.test:
Test of ALTER TABLE and symlinks
mysql-test/t/timezone.test:
Test of from_unixtime()
mysql-test/t/truncate.test:
Test of truncate and auto_increment
mysql-test/t/type_blob.test:
Test of key search on TEXT/VARCHAR column with end space
mysys/my_symlink2.c:
Disable creation of symlinks if my_disable_symlink is set
sql/field.h:
Indentation cleanup
sql/ha_innodb.cc:
HA_PART_KEY -> HA_PART_KEY_SEG
sql/item_strfunc.cc:
Fixed problem with char > 128 in QUOTE() function. (Bug #1868)
sql/mysql_priv.h:
Make check_dup() external
sql/opt_range.cc:
Fixed searching of TEXT with end space. (Bug #1651)
sql/records.cc:
Fixed caching bug in multi-table-update where same table was used twice.
(Bug #1711)
sql/sql_acl.cc:
Reset ip and ip_mask if hostname is NULL
sql/sql_parse.cc:
Make check_dup() global
sql/sql_select.cc:
Fixed searching of TEXT with end space. (Bug #1651)
sql/sql_table.cc:
Fixed searching of TEXT with end space. (Bug #1651)
sql/sql_update.cc:
Fixed caching bug in multi-table-update where same table was used twice.
(Bug #1711)
sql/table.cc:
Fixed searching of TEXT with end space. (Bug #1651)
sql/table.h:
Fixed caching bug in multi-table-update where same table was used twice.
(Bug #1711)
sql/time.cc:
Fixed problem with UNIX_TIMESTAMP() for timestamps close to 0. (Bug #1998)
it happens because of the LEFT JOINT optimization in add_key_part()
This optimization does exactly the same in JOIN and in WHERE conditions
Not right.
I moved that optimization one level upper.
mysql-test/r/join_outer.result:
appropriate test result
mysql-test/t/join_outer.test:
test case
sql/sql_select.cc:
optimizing of the left_join now only for WHERE conditions
and for first table in list
Fixed a bug causing a crash for multi-update/multi-delete
with impossible where (bug #1860).
sql/sql_class.h:
Fixed a bug causing a crash for multi-update/multi-delete
with impossible where (bug #1860).
sql/sql_delete.cc:
Fixed a bug causing a crash for multi-update/multi-delete
with impossible where (bug #1860).
sql/sql_update.cc:
Fixed a bug causing a crash for multi-update/multi-delete
with impossible where (bug #1860).
mysql-test/t/multi_update.test:
Fixed a bug causing a crash for multi-update/multi-delete
with impossible where (bug #1860).
mysql-test/r/multi_update.result:
Fixed a bug causing a crash for multi-update/multi-delete
with impossible where (bug #1860).
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted