by item->val_str() may be a substring of the passed string.
Disallow string=its_substring assignment in String::operator=().
mysql-test/r/func_misc.result:
Testcase for BUG#7716
mysql-test/t/func_misc.test:
Testcase for BUG#7716
sql/item_cmpfunc.cc:
Fix for BUG#7716: in in_string::set() take into account that the string returned
by item->val_str(S) may be not S but use the buffer owned by S.
sql/sql_string.h:
* Added assert: String& String::operator=(const String&) may not be used to do
assignments like str = string_that_uses_buffer_owned_by_str
* Added String::uses_buffer_owned_by().
we are using the NO_BACKSLASH_ESCAPES SQL mode. (Bug #6368)
mysql-test/t/sql_mode.test:
Add regression test for Bug #6368
mysql-test/r/sql_mode.result:
Add new results
sql/sql_lex.cc:
Handle NO_BACKSLASH_ESCAPES mode when copying string that
also has escapes due to doubled quotes
by a multi-byte character with a second byte of 0x5c (\). (Bug #8903)
sql/sql_lex.cc:
Fix lex error when multi-byte character containing 0x5c (\) follows a
backslash
mysql-test/t/ctype_sjis.test:
Add regression test for Bug #8303
mysql-test/r/ctype_sjis.result:
Add test results
Fix and test for parse bug
mysql-test/r/func_test.result:
Bug#6726
Test for parse bug
mysql-test/t/func_test.test:
Bug#6726
Test for parse bug
sql/sql_yacc.yy:
Bug#6726
Parser was confused by NOT in lookahead
Fix crash with LAST_INSERT_ID() in UPDATE,
Tests included,
mysql-test/r/update.result:
Bug#8057
Test for bug
mysql-test/t/update.test:
Bug#8057
Test for bug
sql/item_func.cc:
Bug#8057
Don't create new Item in val_int()
Let --start-and-exit actually start a server
Added that test case names can be specified on the comman line
Added embedded server support
Added environment variables UMASK, UMASK_DIR
Added missing MASTER_MYSOCK1, MASTER_MYPORT1, USE_RUNNING_SERVER
Added missing CHARSETSDIR, MYSQL_FIX_SYSTEM_TABLES, MYSQL_CLIENT_TEST
Pass on return value from sleep_until_file_created(), to fail test
Fail test if early termination of mysqld servers
Create intial databases for the second master, and two additional slaves
mtr_process.pl:
Find out if port is still in use, using simple TCP connect
Use non blocking waitpid() to catch terminations early
Make a special case spawning the 'mysqltest' application
Redo the fork() if it returns EAGAIN
Make sure to record if master or slave terminated
Improved debugging output
Improved code that remove PID files to avoid race
Abort if we can't stop all mysqld servers using our ports
Many improvements in killing mysqld servers
Let sleep_until_file_created() catch if server died early
mtr_report.pl:
Added option to disable test cases using <testcase>.disabled file
If --timer, only try to open file with time data if it exists
mtr_io.pl:
Remove starting/ending space reading server options from file
mysql-test/lib/mtr_io.pl:
Remove starting/ending space reading server options from file
mysql-test/lib/mtr_report.pl:
Added option to disable test cases using <testcase>.disabled file
If --timer, only try to open file with time data if it exists
mysql-test/lib/mtr_process.pl:
Find out if port is still in use, using simple TCP connect
Use non blocking waitpid() to catch terminations early
Make a special case spawning the 'mysqltest' application
Redo the fork() if it returns EAGAIN
Make sure to record if master or slave terminated
Improved debugging output
Improved code that remove PID files to avoid race
Abort if we can't stop all mysqld servers using our ports
Many improvements in killing mysqld servers
Let sleep_until_file_created() catch if server died early
mysql-test/mysql-test-run.pl:
Let --start-and-exit actually start a server
Added that test case names can be specified on the comman line
Added embedded server support
Added environment variables UMASK, UMASK_DIR
Added missing MASTER_MYSOCK1, MASTER_MYPORT1, USE_RUNNING_SERVER
Added missing CHARSETSDIR, MYSQL_FIX_SYSTEM_TABLES, MYSQL_CLIENT_TEST
Pass on return value from sleep_until_file_created(), to fail test
Fail test if early termination of mysqld servers
Create intial databases for the second master, and two additional slaves
configure.in:
Auto merged
mysql-test/mysql-test-run.sh:
Auto merged
mysql-test/t/ndb_autodiscover.test:
Auto merged
mysql-test/t/ndb_restore.test:
Auto merged
ndb/src/kernel/blocks/dbacc/DbaccMain.cpp:
Auto merged
ndb/test/include/HugoOperations.hpp:
Auto merged
ndb/test/include/NDBT_Test.hpp:
Auto merged
ndb/include/ndbapi/NdbTransaction.hpp:
Auto merged
ndb/test/src/NDBT_Test.cpp:
Auto merged
sql/item.cc:
After merge fixes (bug during merge)
sql/sql_show.cc:
Ensure that lex->all_select_list is properly reset on function end
(Caused crashes after merge)
into mysql.com:/home/mysql_src/mysql-5.0-clean
mysql-test/mysql-test-run.sh:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/set_var.cc:
Auto merged
sql/set_var.h:
Auto merged
we store 7 bytes (1 + 2*3) in every Query_log_event.
In the future if users want binlog optimized for small size and less safe,
we could add --binlog-no-charset (and binlog-no-sql-mode etc): charset info
is something by design optional (even if for now we don't offer possibility to disable it):
it's not a binlog format change.
We try to reduce the number of get_charset() calls in the slave SQL thread to a minimum
by caching the charset read from the previous event (which will often be equal to the one of the current event).
We don't use SET ONE_SHOT for charset-aware repl (we still do for timezones, will be fixed later).
No more errors if one changes the global value of charset vars on master or slave
(as we log charset info in all Query_log_event).
Not fixing Load_log_event as it will be rewritten soon by Dmitri.
Testing how mysqlbinlog behaves in rpl_charset.test.
mysqlbinlog needs to know where charset file is (to be able to convert a charset number found
in binlog (e.g. in User_var_log_event) to a charset name); mysql-test-run needs to pass
the correct value for this option to mysqlbinlog.
Many result udpates (adding charset info into every event shifts log_pos in SHOW BINLOG EVENTS).
Roughly the same job is to be done for timezones :)
client/mysqlbinlog.cc:
mysqlbinlog needs charsets knowledge, to be able to convert a charset
number found in binlog to a charset name (to be able to print things
like this:
SET @`a`:=_cp850 0x4DFC6C6C6572 COLLATE `cp850_general_ci`;
mysql-test/mysql-test-run.sh:
tell mysqlbinlog about charsets dir
mysql-test/r/ctype_ucs.result:
different binlogging of charsets results in shifted log_pos and
one added SET @@CHARACTER_SET... per mysqlbinlog run.
mysql-test/r/drop_temp_table.result:
different binlogging of charsets results in shifted log_pos and
one added SET @@CHARACTER_SET... per mysqlbinlog run.
mysql-test/r/insert_select.result:
different binlogging of charsets results in shifted log_pos and
one added SET @@CHARACTER_SET... per mysqlbinlog run.
mysql-test/r/mix_innodb_myisam_binlog.result:
different binlogging of charsets results in shifted log_pos and
one added SET @@CHARACTER_SET... per mysqlbinlog run.
mysql-test/r/mysqlbinlog.result:
different binlogging of charsets results in shifted log_pos and
one added SET @@CHARACTER_SET... per mysqlbinlog run.
mysql-test/r/mysqlbinlog2.result:
different binlogging of charsets results in shifted log_pos and
one added SET @@CHARACTER_SET... per mysqlbinlog run.
The log_pos shift is why the SET INSERT_ID=4 event changes position in the result.
mysql-test/r/rpl_charset.result:
Running mysqlbinlog to check how it behaves on charset stuff.
SET ONE_SHOT is now gone.
Repl of LOAD DATA INFILE is not yet charset-aware (will soon be, when WL#874 is pushed)
and, anyway result has a dependency on the temp filename (SQL-LOAD-*-[0-9] which is not constant).
No more errors if one changes global character sets.
mysql-test/r/rpl_error_ignored_table.result:
different binlogging of charsets results in shifted log_pos and
one added SET @@CHARACTER_SET... per mysqlbinlog run.
mysql-test/r/rpl_flush_log_loop.result:
different binlogging of charsets results in shifted log_pos and
one added SET @@CHARACTER_SET... per mysqlbinlog run.
mysql-test/r/rpl_flush_tables.result:
different binlogging of charsets results in shifted log_pos and
one added SET @@CHARACTER_SET... per mysqlbinlog run.
mysql-test/r/rpl_loaddata.result:
different binlogging of charsets results in shifted log_pos and
one added SET @@CHARACTER_SET... per mysqlbinlog run.
mysql-test/r/rpl_loaddata_rule_m.result:
different binlogging of charsets results in shifted log_pos and
one added SET @@CHARACTER_SET... per mysqlbinlog run.
mysql-test/r/rpl_log.result:
different binlogging of charsets results in shifted log_pos and
one added SET @@CHARACTER_SET... per mysqlbinlog run.
mysql-test/r/rpl_max_relay_size.result:
different binlogging of charsets results in shifted log_pos and
one added SET @@CHARACTER_SET... per mysqlbinlog run.
mysql-test/r/rpl_relayrotate.result:
different binlogging of charsets results in shifted log_pos and
one added SET @@CHARACTER_SET... per mysqlbinlog run.
mysql-test/r/rpl_replicate_do.result:
different binlogging of charsets results in shifted log_pos and
one added SET @@CHARACTER_SET... per mysqlbinlog run.
mysql-test/r/rpl_rotate_logs.result:
different binlogging of charsets results in shifted log_pos and
one added SET @@CHARACTER_SET... per mysqlbinlog run.
mysql-test/r/rpl_temporary.result:
different binlogging of charsets results in shifted log_pos and
one added SET @@CHARACTER_SET... per mysqlbinlog run.
mysql-test/r/rpl_timezone.result:
different binlogging of charsets results in shifted log_pos and
one added SET @@CHARACTER_SET... per mysqlbinlog run.
mysql-test/r/rpl_user_variables.result:
different binlogging of charsets results in shifted log_pos and
one added SET @@CHARACTER_SET... per mysqlbinlog run.
mysql-test/r/user_var.result:
different binlogging of charsets results in shifted log_pos and
one added SET @@CHARACTER_SET... per mysqlbinlog run.
mysql-test/t/rpl_charset.test:
Running mysqlbinlog to check how it behaves on charset stuff (so, need fixed timestamp).
SET ONE_SHOT is not printed to binlog anymore, so no need to test if ::exec_event() works ok.
Repl of LOAD DATA INFILE is not yet charset-aware (will soon be, when WL#874 is pushed)
and, anyway result has a dependency on the temp filename (SQL-LOAD-*-[0-9] which is not constant).
No more errors if one changes global character sets.
mysql-test/t/rpl_user_variables.test:
different binlogging of charsets results in shifted log_pos and
one added SET @@CHARACTER_SET... per mysqlbinlog run.
sql/log.cc:
No more SET ONE_SHOT for charsets (remains for TZ until solved with Dmitri).
sql/log_event.cc:
We now log charset info in each Query_log_event in binlog. It's 2*3 = 6 bytes:
session character_set_client, session collation_connection, session collation_server.
Now we would need only one byte per variable, but Bar said 2 is safer for the future.
When slave or mysqlbinlog reads that info, it needs to get_charset() on these numbers (so, 3 get_charset() calls),
as most of the time the 6-byte charset info will be equal to the previous event's,
we cache the previous event's charset and if equal, no need to get_charset().
As "flags2", SQL_MODE, catalog, autoinc variables, charset info is not a permanent addition:
in the future we can add options to the master to not log any of these, old 5.0 should be able
to parse these.
A little bit of cleanup on autoinc stuff in replication.
Fixing a bug in Start_log_event_v3::exec_event() where we used rli->relay_log.description_event_for_exec->binlog_version
while we should use binlog_version (if it's a 3.23 master, that's all that counts; not the fact that the relay log is
in 5.0 format).
sql/log_event.h:
binlogging of charset info in each Query_log_event.
sql/mysql_priv.h:
comment
sql/set_var.cc:
checks to refuse change of global charset variables are removed: they were needed for 4.1->4.1
but not for 5.0.3->5.0.3.
Yes this opens a breach if one does 4.1->5.0.3, where the checks would still be needed. But these checks would need
reading relay_log.description_event_for_queue, which is currently an object used in many places by the I/O
thread and only it. So, currently we don't take mutexes for this object, and if we read the object in set_var.cc
(client thread) we need to add mutexes everywhere, but the replication code is already too broken with mutexes
now (no consistent use of mutexes); mutex usage in replication should be fixed but preferrably during/after
multimaster coding as it's going to shuffle mutexes already.
sql/set_var.h:
Since we don't forbid global change of charset vars for replication/binlogging,
don't need specific ::check() methods anymore
sql/slave.cc:
Some little debug info which has nothing to do with charsets.
Disabling master's charset check when slave I/O thread connects.
Functions for charset caching/invalidating in the slave SQL thread.
sql/slave.h:
Cached charset in the slave SQL thread.
BitKeeper/etc/logging_ok:
auto-union
sql/ha_innodb.cc:
Auto merged
sql/ha_ndbcluster.h:
Auto merged
sql/handler.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_cache.h:
Auto merged
sql/sql_class.h:
Auto merged
sql/ha_innodb.h:
Hand merged
sql/ha_ndbcluster.cc:
Merge with gathering of stats
sql/sql_cache.cc:
Use new table def cache
sql/table.h:
table.h had been cleaned up
renamed client_test to mysql_client_test
fixed name for lstat in removef()
added mysql-debug.exe for Windows
added enviroment variable MYSQL_CLIENT_TEST
added cleaning directory before tests
New BitKeeper file ``VC++Files/tests/mysql_client_test.dsp''
Delete: VC++Files/tests/client_test.dsp
BitKeeper/deleted/.del-client_test.dsp~659d0237a4c12ea1:
Delete: VC++Files/tests/client_test.dsp
VC++Files/mysql.dsw:
renamed client_test to mysql_client_test
mysql-test/my_manage.c:
fixed name for lstat in removef()
mysql-test/mysql_test_run_new.c:
added mysql-debug.exe for Windows
added enviroment variable MYSQL_CLIENT_TEST
added cleaning directory before tests
Added a test case for bug #7751.
item_strfunc.cc:
Fixed bug #7751.
The function Item_func_conv::val_str did not update
the unsigned_flag value.
sql/item_strfunc.cc:
Fixed bug #7751.
The function Item_func_conv::val_str did not update
the unsigned_flag value.
mysql-test/t/func_str.test:
Added a test case for bug #7751.
mysql-test/r/func_str.result:
Added a test case for bug #7751.
Allow LIMIT clause after DUAL.
mysql-test/r/limit.result:
Added test result for BUG#8023.
mysql-test/t/limit.test:
Added test for BUG#8023.
sql/sql_yacc.yy:
Allow the specification of a LIMIT clause after DUAL. This is needed for queries as:
select a from t1 union all select 1 from dual limit 1;
In this query LIMIT is applied to the whole UNION, so it makes sense, however, the
current parser did not allow any clause after DUAL.
incorrect results when the input was a constant across a multi-row SELECT
statement. (Bug #8248)
sql/item_strfunc.h:
Add tmp_value member
sql/item_strfunc.cc:
Always allocate a new string for QUOTE(), in case the field is being reused
for multiple rows.
mysql-test/t/func_str.test:
Add regression test
mysql-test/r/func_str.result:
Add test results
mysql-test/t/type_date.test:
Add new regression test
mysql-test/r/type_date.result:
Add result
sql/field.cc:
Set YEAR to 0 when set to a non-numeric string, not 2000,
and issue a warning.
mysql-test/mysql-test-run.sh:
Put all output from ndb_tool into log file
mysql-test/t/ndb_autodiscover.test:
Put all output from ndb_tool into log file
mysql-test/t/ndb_restore.test:
Put all output from ndb_tool into log file
- Added a thread that fetches commit_count for open tables. This
will mean that NDB will not have to be contacted for every use of a cached query.
sql/ha_ndbcluster.cc:
Added a thread that periodically will fetch commit_count
for open tables and store that value in share.
The commit count value is then used when query cache
asks if a cached query can be used.
The thread activation interval is regulated by the
config variable ndb_cache_check_time, it's default value is 0
which means that NDB is contacted every time a cached query is reused.
sql/ha_ndbcluster.h:
Added commit_count to share
Added ndb_cache_check_time
sql/mysqld.cc:
Added config variable ndb_cache_check_time
sql/set_var.cc:
Added config variable ndb_cache_check_time