sql/field.cc:
method getting maximum display length for fields
sql/field.h:
method getting maximum display length for fields
sql/item.cc:
code cleanup
switch replaced with new method
sql/item.h:
method getting maximum display length for fields
- mutex was unlocked before the end of the critical sesion,
- Portability issue: It's better to use (*alloc)(x) instead of alloc(x),
if alloc is a function passed as an argument.
- Use {} around if() block, to avoid possible problems with some Windows compilers.
mysql-test/r/subselect.result:
new length in UNION
mysql-test/r/union.result:
new length in UNION
test of int with wrong display length
mysql-test/t/union.test:
test of int with wrong display length
sql/item.cc:
new length detection for non-string
sql/item.h:
new length detection for non-string
acinclude.m4:
Auto merged
include/m_ctype.h:
Auto merged
sql/sql_parse.cc:
Auto merged
strings/ctype-big5.c:
Auto merged
strings/ctype-czech.c:
Auto merged
strings/ctype-gbk.c:
Auto merged
strings/ctype-latin1.c:
Auto merged
strings/ctype-simple.c:
Auto merged
strings/ctype-sjis.c:
Auto merged
strings/ctype-tis620.c:
Auto merged
strings/ctype-uca.c:
Auto merged
strings/ctype-utf8.c:
Auto merged
strings/ctype-win1250ch.c:
Auto merged
Put back the ha_innodb.cc source code lines that were accidentally removed in Jan Lindstrom's push yesterday (he used the account heikki@mysql.com)
sql/ha_innodb.cc:
Put back the ha_innodb.cc source code lines that were accidentally removed in Jan Lindstrom's push yesterday (he used the account heikki@mysql.com)
some reason wasn't included before.
A lot of files cleaned up from #include <assert.h>
client/mysqlbinlog.cc:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
client/mysqldump.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
heap/hp_hash.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
include/m_string.h:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
include/my_dbug.h:
include assert.h needed for DBUG_ASSERT
libmysql/libmysql.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
myisam/ftdefs.h:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
myisam/mi_delete.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
myisam/mi_dynrec.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
myisam/mi_key.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
myisam/mi_open.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
myisam/mi_search.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
myisam/mi_write.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
mysys/mf_iocache.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
mysys/mf_iocache2.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
mysys/mf_keycache.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
mysys/my_bitmap.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
mysys/my_gethostbyname.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
mysys/my_getopt.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
mysys/my_pthread.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
mysys/my_seek.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
mysys/rijndael.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
mysys/thr_alarm.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
sql-common/client.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
sql/mysql_priv.h:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
sql/sql_string.cc:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
strings/ctype-simple.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
strings/ctype-ucs2.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
strings/my_vsnprintf.c:
assert.h needed for my_dbug.h now is included in
my_dbug.h, where it for some reason wasn't included before.
correct prefix compare with my_strnncoll
include/m_ctype.h:
6th argument to my_strncoll to handle prefix comparison
myisam/ft_boolean_search.c:
bug#3964 and related issues: problems with charsets where one byte can match many
*correct* prefix compare with my_strnncoll
*correct* backup of info->lastkey
mysql-test/r/fulltext.result:
6th argument to my_strncoll to handle prefix comparison
mysql-test/t/fulltext.test:
6th argument to my_strncoll to handle prefix comparison
mysys/my_handler.c:
6th argument to my_strncoll to handle prefix comparison
sql/sql_parse.cc:
cleanup
strings/ctype-big5.c:
6th argument to my_strncoll to handle prefix comparison
strings/ctype-bin.c:
6th argument to my_strncoll to handle prefix comparison
strings/ctype-czech.c:
6th argument to my_strncoll to handle prefix comparison
strings/ctype-gbk.c:
6th argument to my_strncoll to handle prefix comparison
strings/ctype-latin1.c:
6th argument to my_strncoll to handle prefix comparison
strings/ctype-mb.c:
6th argument to my_strncoll to handle prefix comparison
strings/ctype-simple.c:
6th argument to my_strncoll to handle prefix comparison
strings/ctype-sjis.c:
6th argument to my_strncoll to handle prefix comparison
strings/ctype-tis620.c:
6th argument to my_strncoll to handle prefix comparison
strings/ctype-uca.c:
6th argument to my_strncoll to handle prefix comparison
strings/ctype-ucs2.c:
6th argument to my_strncoll to handle prefix comparison
strings/ctype-utf8.c:
6th argument to my_strncoll to handle prefix comparison
strings/ctype-win1250ch.c:
6th argument to my_strncoll to handle prefix comparison
close table before opening in optimize
mysql-test/r/subselect.result:
test of EXISTS(SELECT * ...)
mysql-test/t/subselect.test:
test of EXISTS(SELECT * ...)
sql/sql_base.cc:
EXISTS(SELECT * ...)
sql/sql_table.cc:
close table before opening one
exactly it's mapped to "ALTER TABLE t; ANALYZE TABLE t;"
sql/ha_innodb.cc:
::optimize() now returns "try ALTER and then analyze" instead of only analyze.
sql/handler.h:
new code to say "try alter and analyze".
sql/mysql_priv.h:
as we may now use mysql_alter_table() internally to ::optimize we must prevent it from talking to the client.
New function mysql_recreate_table() which is the same as ALTER TABLE t;
sql/sql_parse.cc:
the big block removed here is moved into mysql_recreate_table().
sql/sql_table.cc:
In mysql_admin_table(): if the handler returns HA_ADMIN_TRY_ALTER,
we close the table, recreate it, then open it and analyze it.
This is currently used only for OPTIMIZE TABLE of an InnoDB table.
New option --sync-binlog=x (and global settable variable) which will fsync the binlog
after every x-th disk write to it. That is, if in autocommit mode, after every x-th statement
written to the binlog; if using transactions, after every x-th transaction written to the binlog.
x==0 means no fsync. x==1 is the slowest.
There is no test added for this, I have just checked that it works as --sync-binlog=1 dramatically
slows down mysqld.
Made sync-frm a global settable variable.
sql/log.cc:
every sync_binlog_period-th disk binlog write, we fsync the binlog
sql/mysql_priv.h:
new option sync_binlog
sql/mysqld.cc:
new option sync_binlog
sql/set_var.cc:
Making sync-frm a settable global option.
New settable global option sync-binlog.
sql/set_var.h:
new global settable variable sync_binlog needs a specific ::update because it needs to take LOCK_log
error messages when a query goes wrong.
Note that from now on, if you run with --slave-skip-error=xx, then nothing will
be printed to the error log when the slave is having this error xx and
skipping it (but you don't care as you want to skip it).
sql/repl_failsafe.cc:
a comment about the use of thd->bootstrap in failsafe (unused code)
/***********************************************************************
This function stores binlog offset and flushes logs */
void innobase_store_binlog_offset_and_flush_log(char *binlog_name,longlong offset)
requested by Guilhem to ha_innodb.cc and ha_innodb.h.
Change made by Jan.Lindstrom@innodb.com
mysql-test/r/func_group.result:
test of optimized aggregate function re-execution
mysql-test/t/func_group.test:
test of optimized aggregate function re-execution
sql/item_sum.cc:
cleunup() added
sql/item_sum.h:
cleunup() added
Problem is that store_string_aux calls 'wrong' net_store_data
sql/protocol.h:
I tried not to do net_store_data virtual - it's going to work a bit slower -
using the fact that Protocol_simple and Protocol_prep have different
implementation for 'store' methods.
But now the store_string_aux method works for both.
Well we still can try to make separate versions for Protocol_prep and
Protocol_simple, but i prefer to make net_store_data virtual for
embedded server so we won't have similar problems in the future
binlog even if they changed nothing, and a test for this.
This is useful when users use these commands to clean up their master and slave by issuing
one command on master (assume master and slave have slightly different data for some
reason and you want to clean up both).
Note that I have not changed multi-table DELETE and multi-table UPDATE because their
error-reporting mechanism is more complicated.
mysql-test/r/mysqlbinlog.result:
result update
mysql-test/r/rpl_charset.result:
result update
mysql-test/r/rpl_flush_log_loop.result:
result update
mysql-test/r/rpl_replicate_do.result:
result update
mysql-test/r/rpl_temporary.result:
result update
mysql-test/t/mysqlbinlog.test:
moving SET TIMESTAMP up as DROP shows up in binlog
sql/sql_db.cc:
DROP DATABASE IF EXISTS is now always logged to binlog, even if db did not exist
sql/sql_delete.cc:
DELETE FROM t is now always logged to binlog even if no rows deleted (but in this case, only if really no error).
sql/sql_table.cc:
DROP TABLE IF EXISTS is now always logged to binlog even if table did not exist
sql/sql_update.cc:
UPDATE is now always logged to binlog even if no rows updated (but in this case, only if really no error).
is broken (prepared statements)": fixed date handling in many places
of prepared statements code.
libmysql/libmysql.c:
Fix for Bug#4026:
- now buffer_length is defined for any buffer type. Network buffer
preallocation cleaned up.
- added constants for maximum buffer sizes necessary for MYSQL_TYPE_DATE,
MYSQL_TYPE_TIME, MYSQL_TYPE_DATETIME types.
- TIME/DATETIME packing/unpacking functions fixed
- now result set metadata is always updated from fields sent to COM_EXECUTE.
This is necessary to make 'SELECT ?' queries work without conversions.
sql/item.cc:
- added implementatoin of Item_param::get_date
sql/item.h:
- added enum_field_types Item_param::param_type. First step for proper
handling of placeholders.
- added get_date() implementation to prevent date -> string -> date
conversions when MYSQL_TYPE_DATE/DATETIME parameter is used in temporal
context.
sql/protocol.cc:
Fix for Bug#4026:
- PACKET_BUFFET_EXTRA_ALLOC -> PACKET_BUFFER_EXTRA_ALLOC.
The define itself was moved to .cc as it's used only in protocol.cc
- fixed Protocol_prep::store_time() call.
sql/protocol.h:
- PACKET_BUFFER_EXTRA_ALLOC moved to protocol.cc
sql/sql_prepare.cc:
Fix for Bug#4026:
- MYSQL_TYPE_TIME/DATETIME handling fixed.
- added initialization for Item_param::param_type in
setup_one_conversion_function
tests/client_test.c:
Test case for Bug#4026
In mysqlbinlog, there was a problem with how we escaped the content of a string user variable.
To be perfect, we should have escaped with character_set_client. But this charset is unknown
to mysqlbinlog. So the simplest is to print the string in hex. This is unreadable but
100% safe with any charset (checked with Bar), no more need to bother with character_set_client.
mysql-test/r/rpl_charset.result:
hex strings
mysql-test/r/rpl_user_variables.result:
hex strings
mysql-test/r/user_var.result:
hex strings
sql/log_event.cc:
In mysqlbinlog, there was a problem with how we escaped the content of a string user variable.
To be perfect, we should have escaped with character_set_client. But this charset is unknown
to mysqlbinlog. So the simplest is to print the string in hex. This is unreadable but
100% safe with any charset (checked with Bar), no more need to bother with character_set_client.
(Bug #4035 GROUP_CONCAT with HAVING clause truncates field
Bug #4057 LEFT() function in HAVING clause truncates query result).
mysql-test/r/func_gconcat.result:
a test case
Bug #4035 GROUP_CONCAT with HAVING clause truncates field
Bug #4057 LEFT() function in HAVING clause truncates query result
mysql-test/t/func_gconcat.test:
a test case
Bug #4035 GROUP_CONCAT with HAVING clause truncates field
Bug #4057 LEFT() function in HAVING clause truncates query result
sql/item_strfunc.cc:
a fix (Bug #4057 LEFT() function in HAVING clause truncates query result)
sql/item_strfunc.h:
a fix (Bug #4057 LEFT() function in HAVING clause truncates query result)
sql/item_sum.cc:
a fix (Bug #4035 GROUP_CONCAT with HAVING clause truncates field)
sql/item_sum.h:
a fix (Bug #4035 GROUP_CONCAT with HAVING clause truncates field)
Fix Bug #4047: remove the improvement ported from 4.0 that made InnoDB to remember the original select_lock_type inside LOCK TABLES
sql/ha_innodb.cc:
Fix Bug #4047: remove the improvement ported from 4.0 that made InnoDB to remember the original select_lock_type inside LOCK TABLES
mysql-test/r/ctype_ucs.result:
Test for bug#3946: Error in LPAD() when padstring is longer than 1 character
mysql-test/t/ctype_ucs.test:
Test for bug#3946: Error in LPAD() when padstring is longer than 1 character
WL#1160.
Adding variable-conformant startup options for --default-character-set and --default-collation
sql/mysqld.cc:
WL#1160.
Adding variable-conformant startup options for --default-character-set and --default-collation
A couple of small changes to ha_example (mainly comments).
sql/examples/ha_archive.cc:
Changes from Serg.
A few styles changes, fix for potential hash insert gone wrong, removed bad tables if create fails, gzflush used for flushing by default (had problems with OSX 10.2), and some spelling corrections.
sql/examples/ha_archive.h:
Removed fast_key_read() and changed the name of a conflicting variable.
sql/examples/ha_example.cc:
Added a few new comments.
sql/examples/ha_example.h:
Added pragma interface. Removed fast_key_read() and Serg's request