Moving the part of user_var.test using UCS2 to ctype_ucs.test
mysql-test/r/ctype_ucs.result:
result update
mysql-test/r/user_var.result:
result update
mysql-test/t/ctype_ucs.test:
importing test piece from user_var.test
mysql-test/t/user_var.test:
using UCS2 in this test fails on non-USC2-capable binaries, so let's move this piece to ctype_ucs.test.
sql/slave.cc:
changing arg type to uint32* (as what is used in this arg is &thd->db_length which is uint32*)
sql/slave.h:
changing arg type to uint32*
sql/sql_parse.cc:
changing arg types to uint32, as what is used in these args is a create_field::length which is uint32.
Added a test case for bug #6447.
mf_keycache.c:
Fixed bug #6447. Erronious code in the key_cache_read function
caused problems when reading key blocks with offset>0 into
key cache. The code of key_cache_insert and key_cache_write
was modified similarly.
mysys/mf_keycache.c:
Fixed bug #6447. Erronious code in the key_cache_read function
caused problems when reading key blocks with offset>0 into
key cache. The code of key_cache_insert and key_cache_write
was modified similarly.
mysql-test/t/key_cache.test:
Added a test case for bug #6447.
mysql-test/r/key_cache.result:
Added a test case for bug #6447.
mysql-test/r/subselect.result:
subqueries with full text search
mysql-test/t/subselect.test:
subqueries with full text search
sql/ha_myisam.h:
backport Serg's fix of FT interface
sql/handler.h:
backport Serg's fix of FT interface
sql/opt_range.h:
backport Serg's fix of FT interface
sql/sql_select.cc:
comment for previous patch
fixed cleunup of TMP_TABLE_PARAM
(BUG#6406)
mysql-test/r/subselect.result:
primary query with temporary table and subquery with groupping
mysql-test/t/subselect.test:
primary query with temporary table and subquery with groupping
sql/sql_class.h:
fixed cleunup of TMP_TABLE_PARAM
sql/sql_select.cc:
uncacheable test made simplier
fixed joincleunup to avoid double deletin tables, and too earlyfull cleanup in case of EXPLAIN
Replication using replicate-rewrite-db did not work for LOAD DATA INFILE.
Now is does. There was one place in the code that used current database
instead of the rewrite database.
mysql-test/r/rpl_rewrite_db.result:
New tests
mysql-test/t/rpl_rewrite_db-slave.opt:
New tests
mysql-test/t/rpl_rewrite_db.test:
New tests
sql/log_event.cc:
Added db to set_fields function so that current db is used.
sql/log_event.h:
Added db to set_fields function so that current db is used.
values for too big argument".
Added range checking for from_unixtime() argument, cleaned up code
a bit.
mysql-test/r/func_time.result:
Test for bug #6439 "from_unixtime() function returns wrong datetime
values for too big argument".
mysql-test/t/func_time.test:
Test for bug #6439 "from_unixtime() function returns wrong datetime
values for too big argument".
sql/item_timefunc.cc:
Item_func_from_unixtime:
Added error range checking for function argument + small code clean up.
In server we assume that datetime values stored in MYSQL_TIME struct
are normalized (and year is not greater than 9999), so we should
perform range checks in all places then we convert something to
MYSQL_TIME.
include/my_time.h:
Added one more argument to set_zero_time() function to make it more
convinient.
Added comment clarifying why MAX_DATE_STRING_REP_LENGTH value is 30.
include/mysql_time.h:
Documented MySQL's internal assumptions for members of MYSQL_TIME
structure.
libmysql/libmysql.c:
It does not make sense to set MYSQL_TIME::time_type twice in case of
errors.
mysql-test/r/type_datetime.result:
Added test for bug #6266 "Invalid DATETIME value not handled properly".
mysql-test/t/type_datetime.test:
Added test for bug #6266 "Invalid DATETIME value not handled properly".
sql-common/my_time.c:
str_to_datetime(): Added missing check for too big year values.
set_zero_time(): added time_type argument, since MYSQL_TIMESTAMP_NONE
is not the value that we want in most cases.
sql/field.cc:
Field_datetime::store_time():
clarified why we don't perform any range checks here.
sql/item.cc:
Item_param::set_time():
Added comment describing this method and range checking for TIME
values.
sql/sql_prepare.cc:
Removed comments about range checking for TIME values in prepared
statements, which are no longer true.
set_zero_time() has one more argument now.
tests/client_test.c:
Added test for bug #6266 "Invalid DATETIME value not handled properly"
mysql-test/r/subselect.result:
Subselect in non-select command just after connection
mysql-test/t/subselect.test:
Subselect in non-select command just after connection
sql/sql_lex.cc:
moved procedure initialization
sql/sql_parse.cc:
moved procedure initialization
client/mysqldump.c:
Merge with 4.0 (and reordering of options)
client/mysqltest.c:
Added DB as a user variable
myisam/mi_check.c:
Trivial cleanup
mysql-test/r/grant.result:
Move test to be in same order as in 4.0
mysql-test/r/mix_innodb_myisam_binlog.result:
Updated results
mysql-test/r/ps_1general.result:
Updated tests to work after privilege fixes
mysql-test/r/timezone3.result:
Updated results to 4.1
mysql-test/t/ps_1general.test:
Updated tests to work after privilege fixes
sql-common/my_time.c:
Applied sub-second patch from 4.0
sql/sql_acl.cc:
More debugging
BitKeeper/etc/logging_ok:
auto-union
BitKeeper/deleted/.del-Makefile.am:
Delete: Docs/Images/Makefile.am
Build-tools/Bootstrap:
Auto merged
Docs/Makefile.am:
Auto merged
configure.in:
Auto merged
include/mysql.h:
Auto merged
innobase/dict/dict0dict.c:
Auto merged
libmysql/libmysql.c:
Auto merged
mysys/default.c:
Auto merged
scripts/mysqld_safe.sh:
Auto merged
sql/log.cc:
Auto merged
mysql-test/t/mix_innodb_myisam_binlog.test:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_table.cc:
Auto merged
client/mysqldump.c:
merge with 4.0
(This only reorders options)
sql/ha_innodb.cc:
merge with 4.0 (Keep original code)
sql/time.cc:
Note that part of this patch is done in my_time.c
Prevent creation of a row which grants no rights
Test included
mysql-test/r/grant.result:
Test for Bug#6123
mysql-test/t/grant.test:
Test for Bug#6123
sql/sql_acl.cc:
Bug#6123
Prevent creation of useless row
WL#2225 Extend the test cases for PS + develop a basic test routine for PS
The basic test routine
mysql-test/include/patchwork-check.inc
Test cases for the the basic test routine
mysql-test/t/tool_test.test
mysql-test/r/tool_test.result
Test cases for prepared statements with functions
mysql-test/t/ps_12func.test
mysql-test/r/ps_12func.result
Some statements are set to comment, because of open bugs.
Fresh MySQL V4.1 and V5.0 souces produce in the moment (~11-Nov-2004) the
same result files.
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.
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.
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
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.
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.
the fact that the transaction log is empty does not mean we're not in a transaction
(it could be BEGIN; SELECT * FOR UPDATE FROM ibtable: then we don't want to commit now, even if
the statement is a MyISAM update).
With a testcase.
mysql-test/r/mix_innodb_myisam_binlog.result:
result update
mysql-test/t/mix_innodb_myisam_binlog.test:
test update for a new bug
sql/log.cc:
The fact that the transaction log is empty does not mean we're not in a transaction
(it could be BEGIN; SELECT * FOR UPDATE: then we don't want to commit now).