client/mysqldump.c:
Auto merged
sql/handler.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/handler.h:
SCCS merged
binlog coordinates corresponding to the dump".
The good news is that now mysqldump can be used to get an online backup of InnoDB *which works for
point-in-time recovery and replication slave creation*. Formerly, mysqldump --master-data --single-transaction
used to call in fact mysqldump --master-data, so the dump was not an online dump (took big lock all time of dump).
The only lock which is now taken in this patch is at the beginning of the dump: mysqldump does:
FLUSH TABLES WITH READ LOCK; START TRANSACTION WITH CONSISTENT SNAPSHOT; SHOW MASTER STATUS; UNLOCK TABLES;
so the lock time is in fact the time FLUSH TABLES WITH READ LOCK takes to return (can be 0 or very long, if
a table is undergoing a huge update).
I have done some more minor changes listed in the paragraph of mysqldump.c.
WL#2237 "WITH CONSISTENT SNAPSHOT clause for START TRANSACTION":
it's a START TRANSACTION which additionally starts a consistent read on all
capable storage engine (i.e. InnoDB). So, can serve as a replacement for
BEGIN; SELECT * FROM some_innodb_table LIMIT 1; which starts a consistent read too.
client/mysqldump.c:
Main change: mysqldump --single-transaction --master-data is now able to, at the same time,
take an online dump of InnoDB (using consistent read) AND get the binlog position corresponding to this dump
(before, using the two options used to silently cancel --single-transaction).
This uses the new START TRANSACTION WITH CONSISTENT SNAPSHOT syntax.
Additional changes:
a) cleanup:
- DBerror calls exit() so some code was unneeded
- no need to call COMMIT at end, leave disconnection do the job
- mysql_query_with_error_report()
b) requirements I had heard from colleagues:
- --master-data now requires an argument, to comment out ("--") the CHANGE MASTER or not
(commenting had been asked for point-in-time recovery when replication is not necessary).
- --first-slave is renamed to --lock-all-tables
c) more sensible behaviours (has been discussed internally):
- if used with --master-data, --flush-logs is probably intended to get a flush synchronous
with the dump, not one random flush per dumped db.
- disabled automatic reconnection as, at least, SQL_MODE would be lost (and also, depending
on options, LOCK TABLES, BEGIN, FLUSH TABLES WITH READ LOCK).
include/mysqld_error.h:
an error if START TRANSACTION WITH CONSISTENT SNAPSHOT is called and there is no consistent-read capable storage engine
(idea ((C) PeterG) is that it's a bit like CREATE TABLE ENGINE=InnoDB when there is no support for InnoDB).
sql/handler.cc:
new ha_start_consistent_snapshot(), which, inside an existing transaction, starts a consistent read
(offers an alternative to SELECTing any InnoDB table). Does something only for InnoDB.
Warning if no suitable engine supported.
sql/handler.h:
declarations
sql/lex.h:
symbols for lex
sql/share/czech/errmsg.txt:
new message
sql/share/danish/errmsg.txt:
new message
sql/share/dutch/errmsg.txt:
new message
sql/share/english/errmsg.txt:
new message
sql/share/estonian/errmsg.txt:
new message
sql/share/french/errmsg.txt:
new message
sql/share/german/errmsg.txt:
new message
sql/share/greek/errmsg.txt:
new message
sql/share/hungarian/errmsg.txt:
new message
sql/share/italian/errmsg.txt:
new message
sql/share/japanese/errmsg.txt:
new message
sql/share/korean/errmsg.txt:
new message
sql/share/norwegian-ny/errmsg.txt:
new message
sql/share/norwegian/errmsg.txt:
new message
sql/share/polish/errmsg.txt:
new message
sql/share/portuguese/errmsg.txt:
new message
sql/share/romanian/errmsg.txt:
new message
sql/share/russian/errmsg.txt:
new message
sql/share/serbian/errmsg.txt:
new message
sql/share/slovak/errmsg.txt:
new message
sql/share/spanish/errmsg.txt:
new message
sql/share/swedish/errmsg.txt:
new message
sql/share/ukrainian/errmsg.txt:
new message
sql/sql_lex.h:
new option in lex (transaction options)
sql/sql_parse.cc:
warning comment (never make UNLOCK TABLES commit a transaction, please);
support for starting consistent snapshot.
sql/sql_yacc.yy:
new clause WITH CONSISTENT SNAPSHOT (syntax ok'd by PeterG) for START TRANSACTION.
added new variable for ndb port 1186
changed meaning of ndb_port_base to be default tcp port setting
changed to use split between port and port_base for ndbcluster
so that ndb_port and ndb_port_base are propagated to startscript for ndbcluster
added larger space to pid print
moved readAndExecute out of CommandInterpreter to avoid linking lib with readline
added c-api to Ndb_mgmclient
pass also ndb_port to make
acinclude.m4:
added configure switch for ndb port number
configure.in:
added new variable for ndb port 1186
changed meaning of ndb_port_base to be default tcp port setting
mysql-test/mysql-test-run.sh:
changed to use split between port and port_base for ndbcluster
mysql-test/ndb/Makefile.am:
so that ndb_port and ndb_port_base are propagated to startscript for ndbcluster
mysql-test/ndb/ndbcluster.sh:
so that ndb_port and ndb_port_base are propagated to startscript for ndbcluster
ndb/src/common/mgmcommon/LocalConfig.cpp:
so that ndb_port and ndb_port_base are propagated to startscript for ndbcluster
ndb/src/common/mgmcommon/Makefile.am:
so that ndb_port and ndb_port_base are propagated to startscript for ndbcluster
ndb/src/common/mgmcommon/NdbConfig.c:
added larger space to pid print
ndb/src/mgmclient/CommandInterpreter.cpp:
moved readAndExecute out of CommandInterpreter to avoid linking lib with readline
added c-api to Ndb_mgmclient
ndb/src/mgmclient/main.cpp:
moved readAndExecute out of CommandInterpreter to avoid linking lib with readline
ndb/src/mgmclient/ndb_mgmclient.hpp:
moved readAndExecute out of CommandInterpreter to avoid linking lib with readline
ndb/src/mgmsrv/ConfigInfo.cpp:
moved readAndExecute out of CommandInterpreter to avoid linking lib with readline
ndb/src/mgmsrv/Makefile.am:
pass also ndb_port to make
DROP DATABASE failed because of file ext not in TYPELIB of known extensions.
General solution - construct a TYPELIB at runtime instead of a static list.
mysql-test/r/ndb_basic.result:
Bug#6031
New test for bug
mysql-test/t/ndb_basic.test:
Bug#6031
New test for bug
sql/ha_ndbcluster.cc:
Cosmetic fix
sql/handler.cc:
Bug#6031
New function - ha_known_exts()
We can construct TYPELIB of known db file extensions.
sql/handler.h:
Bug#6031
New function - ha_known_exts()
sql/sql_db.cc:
Bug#6031
We use a constructed list of known extensions instead of a static list
the result takes its charset/collation
attributes from the character string,
e.g. SELECT func(NULL, _latin2'string')
now returns a latin2 result. This is
done by introducing a new derivation
(aka coercibility) level DERIVATION_IGNORABLE,
which is used with Item_null.
2. 'Pure' NULL is now BINARY(0), not CHAR(0).
I.e. NULL is now more typeless.
mysql-test/r/metadata.result:
Fixing test results:
CHAR(0) -> BINARY(0) for NULLs
mysql-test/r/null.result:
Testing mixing NULL with a character string with a number of functions.
mysql-test/r/ps_2myisam.result:
Fixing test results:
CHAR(0) -> BINARY(0) for NULLs
mysql-test/r/ps_3innodb.result:
Fixing test results:
CHAR(0) -> BINARY(0) for NULLs
mysql-test/r/ps_4heap.result:
Fixing test results:
CHAR(0) -> BINARY(0) for NULLs
mysql-test/r/ps_5merge.result:
Fixing test results:
CHAR(0) -> BINARY(0) for NULLs
mysql-test/r/ps_6bdb.result:
Fixing test results:
CHAR(0) -> BINARY(0) for NULLs
mysql-test/r/ps_7ndb.result:
Fixing test results:
CHAR(0) -> BINARY(0) for NULLs
mysql-test/t/null.test:
Testing mixing NULL with a character string with a number of functions.
sql/item.cc:
New derivation level.
sql/item.h:
New derivation level.
added so that it is possible to make mysql_test_run_new
but not done for target all do:
make mysql_test_run_new
mysql-test/Makefile.am:
added so that it is possible to make mysql_test_run_new
but not done for target all do:
make mysql_test_run_new
Bug #6479 ALTER TABLE ... changing charset fails for TEXT columns
Fix: use do_conv_blob rather than do_copy_blob
if the column's character sets are different.
sql/field_conv.cc:
Bug #6479 ALTER TABLE ... changing charset fails for TEXT columns
Fix: use do_conv_blob rather than do_copy_blob
if the column's character sets are different.
mysql-test/t/alter_table.test:
Bug #6479 ALTER TABLE ... changing charset fails for TEXT columns
Fix: use do_conv_blob rather than do_copy_blob
if the column's character sets are different.
mysql-test/r/alter_table.result:
Bug #6479 ALTER TABLE ... changing charset fails for TEXT columns
Fix: use do_conv_blob rather than do_copy_blob
if the column's character sets are different.
fix null handling in ha_ndbcluster when using ordered index
mysql-test/r/ndb_index_ordered.result:
bug#6435
mysql-test/t/ndb_index_ordered.test:
bug#6435
sql/ha_ndbcluster.cc:
Fix null handling in ordered index code
1) fix so that missing blob tables don't prevent table from being
dropped
2) decrease size of blob part if record length exceeds max length
3) add test case for table wo/ corresponding blob table
4) init scan counters when sending scan_tabreq
mysql-test/r/ndb_autodiscover.result:
testcase for table wo/ corresponding blob tables
mysql-test/r/ndb_autodiscover2.result:
testcase for table wo/ corresponding blob tables
mysql-test/t/ndb_autodiscover.test:
testcase for table wo/ corresponding blob tables
mysql-test/t/ndb_autodiscover2.test:
testcase for table wo/ corresponding blob tables
ndb/include/ndbapi/NdbDictionary.hpp:
Add non-const get column
ndb/src/ndbapi/NdbDictionary.cpp:
Add non-const get column
ndb/src/ndbapi/NdbDictionaryImpl.hpp:
Allow "partially" getTable, which enables dropping of tables
that fails to create blob tables
ndb/src/ndbapi/NdbScanOperation.cpp:
Init counter when sending SCAN_TABREQ
sql/ha_ndbcluster.cc:
Make sure that blob don't have to big part size
Bug#6345 Unexpected behaviour with partial indices
sql/field.cc:
Bug#6345 Unexpected behaviour with partial indices
mysql-test/t/ctype_ujis.test:
Bug#6345 Unexpected behaviour with partial indices
mysql-test/r/ctype_ujis.result:
Bug#6345 Unexpected behaviour with partial indices
Now thd->mem_root is a pointer to thd->main_mem_root and THR_MALLOC is a pointer to thd->mem_root.
This gives us the following benefits:
- Allow us to easily detect if arena has already been swapped before (this fixes a bug in setup_conds() where arena was swaped twice in some cases)
- Faster swaps of arenas (as we don't have to copy the whole MEM_ROOT)
- We don't anymore have to call my_pthread_setspecific_ptr(THR_MALLOC,...) to change where memory is alloced. Now it's enough to set thd->mem_root
client/mysqltest.c:
Remove some not needed defines
(Things like this should be done in config-win.h)
include/config-win.h:
Added popen() and pclose() compatibility macros
mysql-test/t/rpl_failed_optimize-master.opt:
Portability fix
sql/ha_berkeley.cc:
New thd->memroot handling
sql/item_cmpfunc.cc:
Simpler arena swapping code
sql/item_func.cc:
Simpler arena swapping code
sql/item_subselect.cc:
Simpler arena swapping code
New thd->mem_root handling
sql/item_sum.cc:
New thd->mem_root handling
sql/item_timefunc.cc:
Fixed not-initalized usage errors found by valgrind
sql/log_event.cc:
New thd->mem_root handling
sql/mysql_priv.h:
New thd->mem_root handling
sql/mysqld.cc:
New thd->mem_root handling
sql/opt_range.cc:
New thd->mem_root handling
sql/repl_failsafe.cc:
New thd->mem_root handling
sql/set_var.cc:
New thd->mem_root handling
sql/sql_acl.cc:
New thd->mem_root handling
sql/sql_base.cc:
Simpler arena swapping code
New thd->mem_root handling
sql/sql_class.cc:
New thd->mem_root handling
sql/sql_class.h:
Simpler arena swapping code
New thd->mem_root handling
sql/sql_db.cc:
New thd->mem_root handling
sql/sql_error.cc:
New thd->mem_root handling
sql/sql_help.cc:
New thd->mem_root handling
sql/sql_insert.cc:
New thd->mem_root handling
sql/sql_parse.cc:
New thd->mem_root handling
Added some extra checking of return value of new
sql/sql_prepare.cc:
New thd->mem_root handling
sql/sql_select.cc:
New thd->mem_root handling
sql/sql_select.h:
New thd->mem_root handling
sql/sql_union.cc:
Simpler arena swapping code
sql/sql_yacc.yy:
New thd->mem_root handling
sql/table.cc:
New thd->mem_root handling
sql/thr_malloc.cc:
New thd->mem_root handling
tests/client_test.c:
Added drop table to some tests
Changed some table names to 't1'
Included header fnmatch.h on Unix
Changed C++ comments to C comments
Corrected indentation of code written on Windows
Split up lines to fit into 80 columns
Initiated some variables to avoid warnings
Added __attribute__((unused)) to unused function parameters
Replace tab characters with space
Put space after 'for', 'while' etc
Added value to 'return' from non void function removef()
On Unix strlwr() was incorrectly declared and a no op,
replaced it with a macro that does nothing
Split several statements on the same line
Other minor changes to conform to coding standard
mysql-test/mysql_test_run_new.c:
Included header fnmatch.h on Unix
Changed C++ comments to C comments
Corrected indentation of code written on Windows
Split up lines to fit into 80 columns
Initiated some variables to avoid warnings
Added __attribute__((unused)) to unused function parameters
Replace tab characters with space
Put space after 'for', 'while' etc
Added value to 'return' from non void function removef()
On Unix strlwr() was incorrectly declared and a no op,
replaced it with a macro that does nothing
Split several statements on the same line
Other minor changes to conform to coding standard
Added cases for bugs #6307 and #6460.
sql_select.cc:
Fixed the problem of bug reports #6307 and #6460.
The reported wrong result sets were due to the fact that
the added call of the fix_fields method for the built
AND condition that joined WHERE and ON conditions
broke ON expression, as it removed extra AND levels
in the built condition.
It looks like that no attributes of the built condition
are needed, so we don't have to call fix_fields here.
sql/sql_select.cc:
Fixed the problem of bug report #6307 and #6460.
The reported wrong result sets were due to the fact that
the added call of the fix_fields method for the built
AND condition that joined WHERE and ON conditions
broke ON expression.
It looks like that no attributes of the built condition
are needed, so we don't have to call fix_fields here.
mysql-test/t/join_outer.test:
Added cases for bugs #6307 and #6460.
mysql-test/r/join_outer.result:
Added cases for bugs #6307 and #6460.
BitKeeper/etc/ignore:
Added mysql-test/mysql_test_run_new to the ignore list
mysql-test/Makefile.am:
All source files must be contained in their respective macros in order to be contained
in the DISTFILES macro so that they get included in the source file tar-ball.
"my_manage.h" was missing.
My previous change that "set @a=NULL" doesn't change charset
fixed 'Bug #6321' as well. Prove with a new test that
FIELD(<uservariable content NULL>, ...) now works fine too.
mysql-test/t/user_var.test:
My previous change that "set @a=NULL" doesn't change charset
fixed 'Bug #6321' as well. Prove with a new test that
FIELD(<uservariable content NULL>, ...) now works fine too.
mysql-test/r/user_var.result:
My previous change that "set @a=NULL" doesn't change charset
fixed 'Bug #6321' as well. Prove with a new test that
FIELD(<uservariable content NULL>, ...) now works fine too.
character set with NULL, @a should be latin2
after this query sequence:
SET @a=_latin2'string';
SET @a=NULL;
I.e. the second query should not change the charset
to the current default value, but should keep the
original value assigned during the first query.
In order to do it, we don't copy charset
from the argument if the argument is NULL
and the variable has previously been initialized.
mysql-test/r/ps_6bdb.result:
t
mysql-test/r/ps_5merge.result:
t
mysql-test/r/ps_3innodb.result:
t
mysql-test/r/ps_7ndb.result:
t
mysql-test/r/ps_4heap.result:
t
mysql-test/r/ps_2myisam.result:
t
sql/item_func.cc:
t
Bug #6351 make test failure "Unknown character set"
UCS2 related tests were moved into ctype_ucs.
mysql-test/t/ps.test:
Bug #6351 make test failure "Unknown character set"
UCS2 related tests were moved into ctype_ucs.
Bug #6351 make test failure "Unknown character set"
UCS2 related tests were moved into ctype_ucs.
mysql-test/t/ctype_ucs.test:
Bug #6351 make test failure "Unknown character set"
UCS2 related tests were moved into ctype_ucs.
mysql-test/r/ctype_ucs.result:
Bug #6351 make test failure "Unknown character set"
UCS2 related tests were moved into ctype_ucs.
mysql-test/r/ps.result:
Bug #6351 make test failure "Unknown character set"
UCS2 related tests were moved into ctype_ucs.
Added a case for bug #6365.
item_cmpfunc.cc:
Fixed bug #6365 : Server crashed when list of values
in IN predicate contains NULL while the tested field is
of the character type and not of the default set;
e.g. when f in 'f IN (NULL,'aa') belongs to binary
character set, while the default character set is latin1.
sql/item_cmpfunc.cc:
Fixed bug #6365 : Server crash when list of values
in IN predicate contains NULL while the tested field is
of the character type of not of the default set
e.g. when f in 'f IN (NULL,'aa') belongs to binary
character set, while the default character set is latin1.
mysql-test/t/func_in.test:
Added a case for bug #6365.
mysql-test/r/func_in.result:
Added a case for bug #6365.
mysql-test/r/fulltext.result:
Auto merged
mysql-test/t/fulltext.test:
Auto merged
mysql-test/t/insert.test:
Auto merged
mysql-test/t/type_float.test:
Auto merged
changed to use new switch
mysql-test/ndb/ndbcluster.sh:
updated start script for ndbcluster to make better cleanup
ndb/test/run-test/main.cpp:
changed to use new switch
"SHOW CREATE TABLE" mysql-4.0 and mysql-3.23
compatibiliry mode change:
Check that a binary collation adds 'binary'
suffix into a char() column definition in
mysql40 and mysql2323 modes. This allows
not to lose the column's case sensitivity
when loading the dump in pre-4.1 servers.
mysql-test/t/sql_mode.test:
"SHOW CREATE TABLE" mysql-4.0 and mysql-3.23
compatibiliry mode change:
mysql-test/r/sql_mode.result:
"SHOW CREATE TABLE" mysql-4.0 and mysql-3.23
compatibiliry mode change:
Check that a binary collation adds 'binary'
suffix into a char() column definition in
mysql40 and mysql2323 modes. This allows
not to lose the column's case sensitivity
when loading the dump in pre-4.1 servers.
sql/field.cc:
"SHOW CREATE TABLE" mysql-4.0 and mysql-3.23
compatibiliry mode change:
Check that a binary collation adds 'binary'
suffix into a char() column definition in
mysql40 and mysql2323 modes. This allows
not to lose the column's case sensitivity
when loading the dump in pre-4.1 servers.
ndb/src/ndbapi/ndberror.c:
826 error text
mysql-test/r/ndb_blob.result:
result displayed error
mysql-test/t/ndb_blob.test:
result displayed error
ndb/src/ndbapi/NdbBlob.cpp:
update head+inline earlier
ndb/src/ndbapi/NdbOperationExec.cpp:
blob IgnoreError bug
ndb/test/ndbapi/testBlobs.cpp:
tried to set non-nullable to null, causing a complex abort case
ndb/src/ndbapi/NdbConnection.cpp:
prepared ops CAN be left in complex abort
The idea of the fix is that the administrative statements
OPTIMIZE TABLE, REPAIR TABLE and ANALYZE TABLE should not
generate binlog errors if there is no errors on the master.
sql/sql_parse.cc:
No binlog error generated
sql/sql_table.cc:
Documentation
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
there was a clash in using -c, added -f as the future proof switch
mysql-test/ndb/ndbcluster.sh:
changed to use the future-proof option to ndb_mgmd
ndb/src/mgmsrv/main.cpp:
there was a clash in using -c, added -f as the future proof switch
Bug #6045: Binary Comparison regression in MySQL 4.1
Binary searches didn't use a case insensitive index, now they do.
mysql-test/t/range.test:
Bug #6045: Binary Comparison regression in MySQL 4.1
Binary searches didn't use a case insensitive index, now they do.
mysql-test/r/range.result:
Bug #6045: Binary Comparison regression in MySQL 4.1
Binary searches didn't use a case insensitive index, now they do.
sql/opt_range.cc:
Bug #6045: Binary Comparison regression in MySQL 4.1
Binary searches didn't use a case insensitive index, now they do.