This is a replacement for the original patch given by Ingo. This one comes
from Monty.
The problem is that merge files now use unix style pathnames on all
platforms. The merge file open code was not properly converting those
pathnames back to non-unix when necessary.
myisammrg/myrg_open.c:
use fn_format to convert pathnames if the files in the merge file have a pathname
mysys/my_getwd.c:
add a test for '/' in the code that determines if a string inlucdes a pathname
This is a second patch needing another review. The first patch didn't solve
the entire problem. open and fopen on Windows will still open
files like "com1.sym" when they shouldn't. This patch
checks that the file exists before trying to open it.
mysys/my_fopen.c:
on Windows, if we are not creating a file the we call my_access to make sure the
file exists before trying to open it.
mysys/my_open.c:
on Windows, if we are not creating a file the we call my_access to make sure the
file exists before trying to open it.
The problem was that on Windows the access method indicates that access to file
such as "com1" and "lpt1" is allowed (since they are device names) and
this causes mysql to attempt to open them as databases or tables.
The fix was to write our own my_access method that uses other Win32 functions
to determine if the given argument is indeed a file and has to requested
mode.
VC++Files/mysys/mysys.dsp:
added my_access
VC++Files/mysys/mysys_ia64.dsp:
added my_access.c
include/my_sys.h:
if on windows, we use my_access.
if not on windows, then my_access points to the native access method
mysys/Makefile.am:
added my_access to mysys build file
mysys/mf_pack.c:
changed call to access to my_access
sql/sql_db.cc:
changed call to access to my_access
Produce warnings of wrong cast of strings to signed/unsigned.
Don't block not resolved IP's if DNS server is down (Bug #8467)
Fix compiler problems with MinGW (Bug #8872)
configure.in:
Fix compiler problems with MinGW (Bug #8872)
include/config-win.h:
Fix compiler problems with MinGW (Bug #8872)
include/my_global.h:
Fix compiler problems with MinGW (Bug #8872)
mysql-test/r/cast.result:
Test for cast to signed/unsigned outside of range (Bug #7036)
mysql-test/t/cast.test:
Test for cast to signed/unsigned outside of range (Bug #7036)
mysys/default.c:
Cleanup (combine identical code).
Done mainly by Jani
sql/field.h:
Added cast_to_int_type() to ensure that enums are casted as numbers
sql/hostname.cc:
Don't block not resolved IP's if DNS server is down (Bug #8467)
sql/item.h:
Added cast_to_int_type() to ensure that enums are casted as numbers
sql/item_func.cc:
CAST(string_argument AS UNSIGNED) didn't work for big integers above the
signed range. (Bug #7036)
Produce warnings of wrong cast of strings to signed/unsigned
sql/item_func.h:
CAST(string_argument AS UNSIGNED) didn't work for big integers above the
signed range. (Bug #7036)
Changed the creation of the .MRG file so that only the table name
is written when the MyISAM table is in the same database as the
MERGE table, a relative path is used in other cases in mysqld,
and possibly an absolute path is used in an embedded server.
No test case is added as the external behaviour is unchanged.
Only the file names within the .MRG file are changed.
include/my_sys.h:
BUG#5964 - 4.1 MERGE tables regression from 4.0
Added declaration for a new function.
myisammrg/myrg_open.c:
BUG#5964 - 4.1 MERGE tables regression from 4.0
Changed check for absolute path to check for any path.
mysys/my_getwd.c:
BUG#5964 - 4.1 MERGE tables regression from 4.0
Added a new functions which checks for absolute _or_
relative paths.
sql/ha_myisammrg.cc:
BUG#5964 - 4.1 MERGE tables regression from 4.0
Changed the creation of the .MRG file so that only the table name
is written when the MyISAM table is in the same database as the
MERGE table, a relative path is used in other cases in mysqld,
and possibly an absolute path is used in an embedded server.
- Reverted removal of errorcheck mutex initialise, used in safe_mutex_init.
include/my_pthread.h:
Reverted the removal of errorcheck mutex initializer
mysys/my_thr_init.c:
Reverted the removal of errorcheck mutex initializer
Add destruction of mutex initializer
- Changed makelist.sh
- Bump up required version of autoconf
- Use new style to init mutex in my_thr_init
cmd-line-utils/libedit/makelist.sh:
Changed file so it works also on windows cr/lf files.
configure.in:
Bump up required AC version number so that correct version of aclocal and autoconf is selected.
include/my_pthread.h:
Use PTHREAD_MUTEX_ADAPTIVE_NP to see if "fast" mutexes are available
Remove "errorcheck" mutexes, since they are never used.
mysys/my_thr_init.c:
Use new style functions to init mutex if PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP is defined
Add comment what mutex "kind" means
mysys/default.c:
Cleanup:
- Just test once for recursion level
- Don't test explicitely for \r or \n as my_isspace() already does that
sql/sql_insert.cc:
Fix argument
sql/sql_select.cc:
Fixed indentation
added comment
Define a new CPP symbol that the target OS is Linux, and use it where only the OS matters and not the threads Library.
Until now, 'HAVE_LINUXTHREADS' was used to indicate "Target is Linux" in many places.
When we support configuration with NPTL but no Linuxthreads, this misuse must cease.
configure.in:
Step 2 of the switch to support configuration with NPTL:
Define a new CPP symbol that the target OS is Linux.
Until now, 'HAVE_LINUXTHREADS' was used to indicate "Target is Linux" in many places.
When we support configuration with NPTL but no Linuxthreads, this misuse must cease.
include/my_global.h:
Step 2 of the switch to support configuration with NPTL:
Use the new 'TARGET_OS_LINUX' where only the OS matters and not the threads Library.
mysys/thr_mutex.c:
Step 2 of the switch to support configuration with NPTL:
Use the new 'TARGET_OS_LINUX' where only the OS matters and not the threads Library.
sql/stacktrace.c:
Step 2 of the switch to support configuration with NPTL:
Use the new 'TARGET_OS_LINUX' where only the OS matters and not the threads Library.
sql/stacktrace.h:
Step 2 of the switch to support configuration with NPTL:
Use the new 'TARGET_OS_LINUX' where only the OS matters and not the threads Library.
tools/mysqlmanager.c:
Step 2 of the switch to support configuration with NPTL:
Use the new 'TARGET_OS_LINUX' where only the OS matters and not the threads Library.
configure.in:
Normally, 'configure' does only support "case-insensitive" collations for UTF-8 character sets.
However, a certain customer requires builds with a "case-sensitive" collation: 'utf8_general_cs'.
In order to do custom builds without manual patches, this value gets special handling in 'configure'.
Also, when it is given, the CPP symbol enabling the additional code is set.
mysys/charset-def.c:
Rename the CPP symbol needed for "UTF8-case-sensitive" collation from customer name to function.
strings/ctype-utf8.c:
Rename the CPP symbol needed for "UTF8-case-sensitive" collation from customer name to function.
Not active by default.
One need to pass -DHAVE_CYBOZU_COLLATION to
activate it.
mysys/charset-def.c:
Adding Cybozu's patch.
Not active by default.
strings/ctype-utf8.c:
Adding Cybozu's patch.
Not active by default.
provide created shared memory objects with proper
access rights to make them usable when client and server
are running under different accounts.
Post review fixes.
VC++Files/mysys/mysys.dsp:
Add my_windac.c to mysys.lib
include/my_sys.h:
Declarations for SECURITY_ATTRIBUTES create/destroy functions.
mysys/Makefile.am:
Add my_windac.c to the list of compiled files.
sql-common/client.c:
Lower requested access rights for events as the server won't
provide clients with ALL access in order to prevent denial
of service attack.
sql/mysqld.cc:
Set proper security attributes for the kernel objects to make them
usable when mysqld is running as a Windows service.
protection against invalid string in ft_get_word
mysys/my_symlink2.c
typo fixed
myisam/ft_parser.c:
protection against invalid string in ft_get_word
mysys/my_symlink2.c:
typo fixed
include/my_global.h:
Auto merged
mysys/mf_tempfile.c:
Auto merged
sql/ha_myisam.cc:
Auto merged
sql/share/english/errmsg.txt:
Auto merged
sql/table.cc:
Auto merged
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
(No really critical errors found, but a few possible wrong results)
innobase/dict/dict0dict.c:
Replace memcmp with comparison of characters to avoid warnings from purify when 'sptr' points to a very short string
mysql-test/r/select_found.result:
Add missing drop table
mysql-test/r/type_set.result:
More tests
mysql-test/t/select_found.test:
Add missing drop table
mysql-test/t/type_set.test:
More tests
mysys/my_init.c:
Avoid warning from purify (purify doesn't handle getrusage() properly)
sql/field.h:
enum & set are sorted as numbers. This fixes an access to uninitialized memory when enum/set are multi-byte characters
sql/filesort.cc:
enum & set are sorted as numbers. This fixes an access to uninitialized memory when enum/set are multi-byte characters
sql/item_cmpfunc.cc:
Fixed warning from purify. (Not critical as the arguments are passed to a function but not used)
Allocate Arg_comparator() with 'new' instead of sql_alloc() to ensure proper initialization
sql/mysqld.cc:
Wait for signal handler to stop when running --bootstrap
(Fixes warning from purify)
sql/sql_insert.cc:
Initialize slot used by innodb.cc (not critical)
sql/sql_lex.h:
Better comments
sql/sql_repl.cc:
memcmp -> bcmp() to avoid warning from purify
sql/sql_select.cc:
Fix for out-of-bound memory reference when doing DISTINCT on const expressions
strings/ctype-simple.c:
Fixes to not access uninitialized memory
(Not critical)
is the same as the normal datadir for that database. (Bug #8707)
mysys/my_symlink2.c:
Expand path of linkname before checking it against filename to decide if
we need to create a link.
mysql-test/t/symlink.test:
Add new regression test
mysql-test/r/symlink.result:
Add new results
What we need to be able to set in myisamchk is
actually a collation, not a character set. This
fix just changes to display the proper error message.
include/mysys_err.h:
New mysys error message "unknown collation".
mysys/charset.c:
Display more proper error when a collation is not found.
mysys/errors.c:
New "unknown collation" error.
Treat unknown characters straight in a query as syntax error, rather skipping it as a space character.
mysys/charset.c:
Treat unknown characters straight in a query as syntax error, rather skipping it as a space character.
mysql-test/t/ctype_latin1.test:
Treat unknown characters straight in a query as syntax error, rather skipping it as a space character.
mysql-test/r/ctype_latin1.result:
Treat unknown characters straight in a query as syntax error, rather skipping it as a space character.
a multibyte character, but was not a valid multibyte character. Refinement
of fix for Bug #8378.
tests/mysql_client_test.c:
Fix test (and fix number) for Bug #8378
mysys/charset.c:
Fix to only escape the first character in a sequence that appears
to be a multibyte character, but was not a valid one.
a character that appears to be a multi-byte character based on its first
byte, but is not actually a valid multi-byte character. (Bug #8378)
tests/mysql_client_test.c:
Add test for Bug #8317
mysys/charset.c:
Properly escape invalid multibyte characters.
(Bug #7788 "Table is full" occurs during a multitable update")
client/mysqldump.c:
Style fixes
innobase/include/univ.i:
UNIV_DEBUG should not depend on configure --debug but on --debug=full
mysql-test/r/compare.result:
Added test to find bug in previous bugfix
mysql-test/t/compare.test:
Added test to find bug in previous bugfix
mysys/my_handler.c:
Proper fix for comparision with ' '
strings/ctype-big5.c:
Proper fix for comparision with ' '
strings/ctype-bin.c:
Proper fix for comparision with ' '
strings/ctype-gbk.c:
Proper fix for comparision with ' '
strings/ctype-latin1.c:
Proper fix for comparision with ' '
strings/ctype-mb.c:
Proper fix for comparision with ' '
strings/ctype-simple.c:
Proper fix for comparision with ' '
strings/ctype-sjis.c:
Proper fix for comparision with ' '
strings/ctype-tis620.c:
Proper fix for comparision with ' '
strings/ctype-ucs2.c:
Proper fix for comparision with ' '
strings/ctype-utf8.c:
Proper fix for comparision with ' '
mysys/my_handler.c:
Fix for a bug in multi table updates, when offset of one table is
5 bytes or more. This occured because in that case binary(5) indexed
column is space packed, so it was hit by this bug in the function
for binary comparison.
Bug #7788