myisam/mi_key.c:
Fixed wrong buffer usage for auto-increment key with blob part that caused
CHECK TABLE to report that the table was wrong. (Bug #10045)
mysql-test/r/auto_increment.result:
New test case
mysql-test/t/auto_increment.test:
New test case
This is the second of three changesets. It contains the pure bug fix.
It also contains the second after-review fixes.
The problem was that with gcc on x86, shifts are done modulo word size.
'value' is 32 bits wide and shifting it by 32 bits is a no-op.
This was triggered by an evil distribution of character incidences.
A distribution of 2917027827 characters made of 202 distinct values led to
34 occurrences of 32-bit Huffman codes.
This might have been the first time ever that write_bits() had to write
32-bit values. Since it can be expected that one day even 32 bits might
be insufficient, the third changeset suggests to enlarge some variables
to 64 bits.
include/my_global.h:
O_NOFOLLOW
isam/create.c:
create table files with O_EXCL|O_NOFOLLOW
merge/mrg_create.c:
create table files with O_EXCL|O_NOFOLLOW
myisam/mi_create.c:
create files of temporary tables with O_EXCL|O_NOFOLLOW
myisammrg/myrg_create.c:
create table files with O_EXCL|O_NOFOLLOW
mysys/mf_tempfile.c:
create temporary files with O_EXCL|O_NOFOLLOW
sql/ha_myisam.cc:
let mi_create know if the table is TEMPORARY
sql/mysql_priv.h:
--allow_suspicious_udfs
sql/mysqld.cc:
--allow_suspicious_udfs
sql/share/english/errmsg.txt:
typo
sql/sql_udf.cc:
--allow_suspicious_udfs
don't allow xxx() udf without any of xxx_init/deinit/add/reset
check paths when loading from mysql.func
sql/table.cc:
create frm of temporary table with O_EXCL|O_NOFOLLOW
(backports from fixes made in 4.1)
myisam/myisampack.c:
- replaced "1ULL" with "((ulonglong)1)" to resolve a compile error on
Windows
sql/sql_handler.cc:
- removed some unused variables
- added a (byte*) cast to fix a compile error on Windows (backport of a
fix made in 4.1)
Rename innodb_table_locks_old_behavior -> innodb_table_locks
Set innodb_table_locks to off by default to get same behaviour as in MySQL 4.0.20
(This means that Innodb ignore table locks by default, which makes it easier to combine MyISAM and InnoDB to simulate a transaction)
libmysql/libmysql.c:
Use ulong instead of unsigned long
Reuse _dig_vec()
myisam/myisampack.c:
Simplify code
mysql-test/r/innodb-lock.result:
new test case
mysql-test/t/innodb-lock.test:
new test case
sql/ha_innodb.cc:
Rename innodb_table_locks_old_behavior -> innodb_table_locks
sql/mysqld.cc:
Rename innodb_table_locks_old_behavior -> innodb_table_locks
Set this off by default to get same behaviour as in MySQL 4.0.20
sql/set_var.cc:
Rename innodb_table_locks_old_behavior -> innodb_table_locks
sql/sql_class.h:
Rename innodb_table_locks_old_behavior -> innodb_table_locks
myisam/mi_locking.c:
More comments
sql/mysql_priv.h:
Change mode to uint (as it's a bitmap)
sql/sql_handler.cc:
Change mode to uint (as it's a bitmap)
Fixed DBUG_PRINT to use same format as other MySQL code
Cleaned up patch for checking locks for multi-table updates
myisam/mi_close.c:
Reverted patch for new usage of open_counts
myisam/mi_locking.c:
Reverted patch for new usage of open_counts
sql/ha_myisam.cc:
Reverted patch for new usage of open_counts
sql/handler.cc:
Removed compiler warning
sql/sql_acl.cc:
Removed compiler warning
sql/sql_table.cc:
No need to unlock after failed call to external_lock()
sql/sql_update.cc:
Cleaned up (and made it more secure) patch for checking locks for multi-table updates
Changed the semantics of open_count so that it is decremented
at every unlock (if it was incremented due to data changes).
So it indicates a crash, if it is non-zero after a lock.
The table will then be repaired.
myisam/mi_close.c:
bug#2831 - --extenral-locking does not fully work with --myisam-recover.
To avoid flushing the open_count at every unlock,
we need to do so at close at least.
myisam/mi_locking.c:
bug#2831 - --extenral-locking does not fully work with --myisam-recover.
open_count is now decremented at unlock (from a writelock) with
mi_unlock_open_count(). After every new lock the state is read
from the index file and the open_count checked. If not zero,
another server must have crashed, so the table is marked as crashed.
In certain situations the decremented open_count mut be flushed to
the index file. I tried to keep these extra flushes as seldom as possible.
sql/ha_myisam.cc:
bug#2831 - --extenral-locking does not fully work with --myisam-recover.
Added code to repair the table, if it is marked crashed after
successful locking and the --myisam-recover option is set.
sql/sql_table.cc:
This does not really belong to the bugfix for #2831.
But it was detected during fixing the external locking.
used in the handle_options() function (instead of using additional
handle_option() parameter). The default value of the
my_getopt_error_reporter is default_reporter(). One can set it to
other functions if case of need.
client/mysql.cc:
Removed extra handle_optins()'s parameter.
client/mysqladmin.c:
Removed extra handle_optins()'s parameter.
client/mysqlbinlog.cc:
Removed extra handle_optins()'s parameter.
client/mysqlcheck.c:
Removed extra handle_optins()'s parameter.
client/mysqldump.c:
Removed extra handle_optins()'s parameter.
client/mysqlimport.c:
Removed extra handle_optins()'s parameter.
client/mysqlmanager-pwgen.c:
Removed extra handle_optins()'s parameter.
client/mysqlmanagerc.c:
Removed extra handle_optins()'s parameter.
client/mysqlshow.c:
Removed extra handle_optins()'s parameter.
client/mysqltest.c:
Removed extra handle_optins()'s parameter.
extra/my_print_defaults.c:
Removed extra handle_optins()'s parameter.
extra/mysql_install.c:
Removed extra handle_optins()'s parameter.
extra/mysql_waitpid.c:
Removed extra handle_optins()'s parameter.
extra/perror.c:
Removed extra handle_optins()'s parameter.
extra/resolve_stack_dump.c:
Removed extra handle_optins()'s parameter.
extra/resolveip.c:
Removed extra handle_optins()'s parameter.
include/my_getopt.h:
Removed extra handle_optins()'s parameter.
isam/isamchk.c:
Removed extra handle_optins()'s parameter.
isam/pack_isam.c:
Removed extra handle_optins()'s parameter.
myisam/mi_test1.c:
Removed extra handle_optins()'s parameter.
myisam/myisam_ftdump.c:
Removed extra handle_optins()'s parameter.
myisam/myisamchk.c:
Removed extra handle_optins()'s parameter.
myisam/myisampack.c:
Removed extra handle_optins()'s parameter.
sql/gen_lex_hash.cc:
Removed extra handle_optins()'s parameter.
sql/mysqld.cc:
Removed extra handle_optins()'s parameter.
tools/mysqlmanager.c:
Removed extra handle_optins()'s parameter.
Added declarations for print_msg_to_log and vprint_msg_to_log. sql_print_error are simple functions that wrap calls to print_msg_to_log. Define the different error types with MY_ERROR_TYPE, MY_WARNING_TYPE, and MY_INFORMATION_TYPE
gen_lex_hash.cc:
Added NULL error reporting parameter to handle_options
log.cc:
Add print_msg_to_log, print_buffer_to_log, and vprint_msg_to_log. Print_msg_to_log will write the message to the windows event log if on NT. We now have error, warning, and information versions of sql_print_xxxx. T his is a variation of a similar changeset WAX did.
mysqld.cc:
Added option_error_reporter callback function and pass that into handle_options
mysql.cc:
Added NULL as error reporter arg to the end of handle_options
Many files:
Added NULL error reporter parameter as the last paramter to handle_options
my_getopt.c:
Added second function pointer to server as an error reporting callback. Added local function report_option_error that will either write the error to stderr or to the error reporting callback. changed all calls in handle_options from fprintf(stderr, ... ) to report_option_error
my_getopt.h:
Changed declaration of handle_options to use typedefs for the two function pointers. added second function pointer to server as an error reporting callback
mysqld.dsp:
Added custom build step for compiling message file and added message resource file (output of mc)
VC++Files/sql/mysqld.dsp:
Added custom build step for compiling message file and added message resource file (output of mc)
client/mysqladmin.c:
Added NULL error reporter parameter as the last paramter to handle_options
client/mysqlcheck.c:
Added NULL error reporter parameter as the last paramter to handle_options
client/mysqldump.c:
Added NULL error reporter parameter as the last paramter to handle_options
client/mysqlimport.c:
Added NULL error reporter parameter as the last paramter to handle_options
client/mysqlmanager-pwgen.c:
Added NULL error reporter parameter as the last paramter to handle_options
client/mysqlmanagerc.c:
Added NULL error reporter parameter as the last paramter to handle_options
client/mysqlbinlog.cc:
Added NULL error reporter parameter as the last paramter to handle_options
client/mysqlshow.c:
Added NULL error reporter parameter as the last paramter to handle_options
client/mysqltest.c:
Added NULL error reporter parameter as the last paramter to handle_options
extra/my_print_defaults.c:
Added NULL error reporter parameter as the last paramter to handle_options
extra/mysql_install.c:
Added NULL error reporter parameter as the last paramter to handle_options
extra/mysql_waitpid.c:
Added NULL error reporter parameter as the last paramter to handle_options
extra/perror.c:
Added NULL error reporter parameter as the last paramter to handle_options
extra/resolve_stack_dump.c:
Added NULL error reporter parameter as the last paramter to handle_options
extra/resolveip.c:
Added NULL error reporter parameter as the last paramter to handle_options
isam/isamchk.c:
Added NULL error reporter parameter as the last paramter to handle_options
isam/pack_isam.c:
Added NULL error reporter parameter as the last paramter to handle_options
myisam/mi_test1.c:
Added NULL error reporter parameter as the last paramter to handle_options
myisam/myisam_ftdump.c:
Added NULL error reporter parameter as the last paramter to handle_options
myisam/myisamchk.c:
Added NULL error reporter parameter as the last paramter to handle_options
myisam/myisampack.c:
Added NULL error reporter parameter as the last paramter to handle_options
include/my_getopt.h:
Changed declaration of handle_options to use typedefs for the two function pointers. added second function pointer to server as an error reporting callback
mysys/my_getopt.c:
Added second function pointer to server as an error reporting callback. Added local function report_option_error that will either write the error to stderr or to the error reporting callback. changed all calls in handle_options from fprintf(stderr, ... ) to report_option_error
tools/mysqlmanager.c:
Added NULL error reporter parameter as the last paramter to handle_options
client/mysql.cc:
Added NULL as error reporter arg to the end of handle_options
sql/mysqld.cc:
Added option_error_reporter callback function and pass that into handle_options
sql/log.cc:
Add print_msg_to_log, print_buffer_to_log, and vprint_msg_to_log. Print_msg_to_log will write the message to the windows event log if on NT. We now have error, warning, and information versions of sql_print_xxxx. T his is a variation of a similar changeset WAX did.
sql/gen_lex_hash.cc:
Added NULL error reporting parameter to handle_options
sql/mysql_priv.h:
Added declarations for print_msg_to_log and vprint_msg_to_log. sql_print_error are simple functions that wrap calls to print_msg_to_log. Define the different error types with MY_ERROR_TYPE, MY_WARNING_TYPE, and MY_INFORMATION_TYPE
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
into mysql.com:/tmp/skr99/mysql-4.0
client/mysqltest.c:
Auto merged
configure.in:
Auto merged
include/my_global.h:
Auto merged
myisam/myisam_ftdump.c:
Auto merged
scripts/make_binary_distribution.sh:
Auto merged
sql/mysqld.cc:
Auto merged
Build-tools/Do-compile:
Fixed indentation
configure.in:
Added patches from Novell
Added C_EXTRA_FLAGS as an easy way to pass flags to both CFLAGS and CXXFLAGS
extra/perror.c:
Fixed error number reporting to not report 'Unknown error'
include/my_global.h:
Defines to make NETWARE patches cleaner
include/thr_alarm.h:
Fixed wrong macro
netware/mysql_install_db.c:
Indentation fix
Ensured that all projects compile
Removed compiler warnings
Better setting of server_version variable.
Fix that make_win_src_distribution creates the privilege tables.
VC++Files/bdb/bdb.dsp:
Small, automatic changes
VC++Files/client/mysql.dsp:
Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt'
VC++Files/client/mysqladmin.dsp:
Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt'
VC++Files/client/mysqlclient.dsp:
Removed files that should only be used with mysql command line client
VC++Files/client/mysqldump.dsp:
Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt'
VC++Files/client/mysqlimport.dsp:
Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt'
VC++Files/client/mysqlshow.dsp:
Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt'
VC++Files/comp_err/comp_err.dsp:
Automatic changes
VC++Files/dbug/dbug.dsp:
Automatic changes
VC++Files/heap/heap.dsp:
automatic changes
VC++Files/innobase/innobase.dsp:
Automatic changes
VC++Files/isam/isam.dsp:
Automatic changes
VC++Files/isamchk/isamchk.dsp:
Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt'
VC++Files/libmysql/libmysql.dsp:
Automatic changes
VC++Files/libmysqld/examples/test_libmysqld.dsp:
Add missing files
VC++Files/libmysqld/libmysqld.dsp:
Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt'
VC++Files/libmysqltest/myTest.dsp:
Automatic changes
VC++Files/merge/merge.dsp:
Automatic changes
VC++Files/my_print_defaults/my_print_defaults.dsp:
Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt'
VC++Files/myisam/myisam.dsp:
automatic changes
VC++Files/myisam_ftdump/myisam_ftdump.dsp:
automatic changes
VC++Files/myisamchk/myisamchk.dsp:
Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt'
VC++Files/myisamlog/myisamlog.dsp:
Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt'
VC++Files/myisammrg/myisammrg.dsp:
Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt'
VC++Files/myisampack/myisampack.dsp:
Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt'
VC++Files/mysql.dsw:
Automatic changes
VC++Files/mysqlbinlog/mysqlbinlog.dsp:
Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt'
VC++Files/mysqlcheck/mysqlcheck.dsp:
Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt'
VC++Files/mysqldemb/mysqldemb.dsp:
Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt'
VC++Files/mysqlserver/mysqlserver.dsp:
Automatic changes
VC++Files/mysqlshutdown/mysqlshutdown.dsp:
Automatic changes
VC++Files/mysqlwatch/mysqlwatch.dsp:
Automatic changes
VC++Files/mysys/mysys.dsp:
Automatic changes
VC++Files/pack_isam/pack_isam.dsp:
Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt'
VC++Files/perror/perror.dsp:
Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt'
VC++Files/regex/regex.dsp:
Automatic changes
VC++Files/replace/replace.dsp:
Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt'
VC++Files/sql/mysqld.dsp:
Added support for projects 'classic', 'classic nt', 'pro' and 'pro nt'
VC++Files/strings/strings.dsp:
Removed duplicate code for strnlen
VC++Files/test1/test1.dsp:
Automatic changes
VC++Files/thr_test/thr_test.dsp:
Automatic changes
VC++Files/vio/vio.dsp:
Automatic changes
VC++Files/zlib/contrib/asm386/zlibvc.dsp:
Automatic changes
VC++Files/zlib/zlib.dsp:
Automatic changes
extra/my_print_defaults.c:
Fixed bug in --verbose
include/m_string.h:
Portability fix
include/mysql_embed.h:
Better setting of server_version variable
include/mysql_version.h.in:
Better license text handling
innobase/pars/pars0lex.l:
Remove compiler warnings
innobase/trx/trx0sys.c:
Remove compiler warnings
libmysqld/lib_sql.cc:
Better setting of server_version variable
libmysqld/libmysqld.def:
Add functions needed for mysql command line client
myisam/myisam_ftdump.c:
Remove compiler warnings
mysys/sha1.c:
Remove compiler warnings
scripts/make_win_src_distribution.sh:
Safety fix
scripts/mysql_install_db.sh:
Backport from 4.1 to allow make_win_src_distribution create the privilege tables
sql/Makefile.am:
Add new file mysqld_suffix.h
Remove not used file sql_olap.h
sql/ha_innodb.cc:
Remove not used variable
sql/mysqld.cc:
Better setting of server_version variable
sql/set_var.cc:
Fixed bug when showing lower_case_file_system
strings/ctype-tis620.c:
Remove compiler warnings
This fixed a bug in SELECT DISTINCT when all selected parts where constants. (Bug #3203)
myisam/mi_create.c:
Allow keys with 0 segements.
mysql-test/r/myisam.result:
Test for problem with SELECT DISTINCT
mysql-test/t/myisam.test:
Test for problem with SELECT DISTINCT
BitKeeper/etc/logging_ok:
auto-union
myisam/mi_check.c:
Auto merged
mysql-test/r/func_math.result:
Auto merged
mysql-test/t/func_math.test:
Auto merged
sql/item_func.cc:
Auto merged
binary distribution and Server RPM
myisam/myisam_ftdump.c:
Rename: myisam/ft_dump.c -> myisam/myisam_ftdump.c
BitKeeper/etc/ignore:
Added myisam/myisam_ftdump to the ignore list
myisam/Makefile.am:
- renamed ft_dump to myisam_ftdump and added it to bin_PROGRAMS
scripts/make_binary_distribution.sh:
- added myisam_ftdump to the binary distribution
support-files/mysql.spec.sh:
- added myisam_ftdump to the Server package
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
myisam/mi_dbug.c:
Added comment to warn about probabably unimportant valgrind warning
sql/opt_range.cc:
Fixed bug in last push (did not fill max string properly with end space)
sql/sql_update.cc:
Initalize not initialized variable
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)
make a test for -inf more portable (-Inf)
client/mysqldump.c:
make a test for -inf more portable (-Inf)
myisam/mi_check.c:
chk_del() should not check key delete-chain