The reported problems were due to two completely unrelated omissions.
1) The file sort procedure didn't correctly create the sort key in
make_sortkey when the sortkey was an unsigned integer.
2) The name resolution procedure for column references inside a HAVING
clause did not propagate the unsigned_flag of the resolved references.
This patch corrects both problems.
mysql-test/r/select.result:
Added test result for BUG#7425.
mysql-test/t/select.test:
Added test for BUG#7425.
sql/filesort.cc:
Take into account whether 'item' represents a signed or an unsigned integer.
sql/item.cc:
Once an Item_ref is resolved, propagate the unsigned_flag to the resolved item.
Added a test case for bug #8669.
item_strfunc.cc:
Fixed bug #8669.
Function AES_DECRYPT can return NULL value.
sql/item_strfunc.cc:
Fixed bug #8669.
Function AES_DECRYPT can return NULL value.
mysql-test/t/func_str.test:
Added a test case for bug #8669.
mysql-test/r/func_str.result:
Added a test case for bug #8669.
Removed -c from /bin/sh call
make_win_src_distribution.sh:
Copy all content in mysql-test
make_win_binary_distribution.sh, make_binary_distribution.sh:
Add Perl version of mysql-test-run to package
s_win32_dsp, s_win32, s_vxworks, s_test, s_readme, s_java, s_javah:
Bug #6209 changes for building Berkeley DB from BitKeeper on Solaris
bdb/dist/s_javah:
Bug #6209 changes for building Berkeley DB from BitKeeper on Solaris
bdb/dist/s_java:
Bug #6209 changes for building Berkeley DB from BitKeeper on Solaris
bdb/dist/s_readme:
Bug #6209 changes for building Berkeley DB from BitKeeper on Solaris
bdb/dist/s_test:
Bug #6209 changes for building Berkeley DB from BitKeeper on Solaris
bdb/dist/s_vxworks:
Bug #6209 changes for building Berkeley DB from BitKeeper on Solaris
bdb/dist/s_win32:
Bug #6209 changes for building Berkeley DB from BitKeeper on Solaris
bdb/dist/s_win32_dsp:
Bug #6209 changes for building Berkeley DB from BitKeeper on Solaris
scripts/make_binary_distribution.sh:
Add Perl version of mysql-test-run to package
scripts/make_win_binary_distribution.sh:
Add Perl version of mysql-test-run to package
scripts/make_win_src_distribution.sh:
Copy all content in mysql-test
mysql-test/mysql-test-run.pl:
Removed -c from /bin/sh call
administrative statements that may alter the table, such
as REPAIR TABLE. (Bug #8480)
mysql-test/r/query_cache.result:
Add new results
mysql-test/t/query_cache.test:
Add regression test
sql/sql_table.cc:
Make sure entries are flushed from the query cache for
any administrative command run on a table that acquires
a write lock on it (and thus might change it), like
REPAIR TABLE.
into sinisa.nasamreza.org:/mnt/work/mysql-4.1
BitKeeper/etc/ignore:
auto-union
mysql-test/r/mysqldump.result:
Auto merged
mysql-test/t/mysqldump.test:
Auto merged
dumped with --hex-blob and --skip-extended-insert options.
BitKeeper/etc/ignore:
Added support-files/ndb-config-2-node.ini to the ignore list
client/mysqldump.c:
A fix for a bug #8830. All that was necessary was to use unsigned char
instead of signed char.
mysql-test/r/mysqldump.result:
A result for test case for bug #8830.
mysql-test/t/mysqldump.test:
Test case for bug #8830.
Logging to logging@openlogging.org accepted
func_group.result, func_group.test:
Added a test case for bug #8893.
opt_sum.cc:
A misplaced initialization for the returned parameter
prefix_len in the function find_key_for_maxmin caused
usage of a wrong key prefix by the min/max optimization
in cases when the matching index was not the first index
that contained the min/max field.
sql/opt_sum.cc:
A misplaced initialization for the returned parameter
prefix_len in the function find_key_for_maxmin caused
usage of a wrong key prefix by the min/max optimization
in cases when the matching index was not the first index
that contained the min/max field.
mysql-test/t/func_group.test:
Added a test case for bug #8893.
mysql-test/r/func_group.result:
Added a test case for bug #8893.
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
fixing test results accordingly.
func_system.test:
New test that illegal mix of collations does not happen anymore.
item_strfunc.h:
safe_charset_converter() was added for system constants.
item_strfunc.cc:
safe_charset_converter() was added for system constants.
item_func.cc, item.h, item.cc:
Bug#8291: Illegal collation mix with USER() function.
After discussion with PeterG and Serge, a new coercibility
level for "system constants" was introduced, between
COERRIBLE and IMPLICIT. Thus:
SELECT col1 = USER() FROM t1; - is done according to col1 collation.
SELECT 'string' = USER(); - is done according to USER() collation.
At the same time, "nagg" and "strong" members were removed as unused.
item_create.cc:
Version is a system constant too.
sql/item.cc:
Bug#8291: Illegal collation mix with USER() function.
After discussion with PeterG and Serge, a new coercibility
level for "system constants" was introduced, between
COERRIBLE and IMPLICIT. Thus:
SELECT col1 = USER() FROM t1; - is done according to col1 collation.
SELECT 'string' = USER(); - is done according to USER() collation.
At the same time, "nagg" and "strong" members were removed as unused.
sql/item.h:
Bug#8291: Illegal collation mix with USER() function.
After discussion with PeterG and Serge, a new coercibility
level for "system constants" was introduced, between
COERRIBLE and IMPLICIT. Thus:
SELECT col1 = USER() FROM t1; - is done according to col1 collation.
SELECT 'string' = USER(); - is done according to USER() collation.
At the same time, "nagg" and "strong" members were removed as unused.
sql/item_create.cc:
Version is a system constant too.
sql/item_func.cc:
Bug#8291: Illegal collation mix with USER() function.
After discussion with PeterG and Serge, a new coercibility
level for "system constants" was introduced, between
COERRIBLE and IMPLICIT. Thus:
SELECT col1 = USER() FROM t1; - is done according to col1 collation.
SELECT 'string' = USER(); - is done according to USER() collation.
At the same time, "nagg" and "strong" members were removed as unused.
sql/item_strfunc.cc:
safe_charset_converter() was added for system constants.
sql/item_strfunc.h:
safe_charset_converter() was added for system constants.
mysql-test/t/func_system.test:
New test that illegal mix of collations does not happen anymore.
mysql-test/r/ctype_collate.result:
fixing test results accordingly.
mysql-test/r/func_str.result:
fixing test results accordingly.
mysql-test/r/func_system.result:
fixing test results accordingly.
mysql-test/r/type_blob.result:
fixing test results accordingly.
after the previous run had some failures, provided it did not totally crash.
Build-tools/Do-compile:
Change the search string for a test run from "tests were successful" to just
"were successful", which is written by the test run even after some failures.
This is necessary to start the next test suite ('--ps-protocol', '--embedded-server')
even after the previous one had some test failures.
mysql-test/mysql-test-run.sh:
Change the message even after test failures so that it is fairly safe to identify
the end of the run from it (as opposed to a crash of the script).
It is essential that both a run without any and with some test failures
write "were successful" so that it can be grepped.
hostnames to not be matched correctly. (Bug #3309)
sql/sql_acl.cc:
Use an acl_host_or_ip in the GRANT_TABLE struct instead of storing the host
itself, and use compare_hostname() in testing it. This adds support for IP
addresses with netmasks to table-specific grants, and results in simplified
code by making use of compare_hostname() in more places.
mysql-test/r/grant2.result:
Add new results
mysql-test/t/grant2.test:
Add new regression test
sql/sql_union.cc:
a fix for --ps-protocol (bug #6089: FOUND_ROWS returns wrong values when no table/view is used)
Don't touch options as itit's not needed.
in slave SQL thread: if a transaction fails because of InnoDB deadlock or innodb_lock_wait_timeout exceeded,
optionally retry the transaction a certain number of times (new variable --slave_transaction_retries).
sql/mysql_priv.h:
new var slave_transaction_retries
sql/mysqld.cc:
new variable slave_transaction_retries. Plus fixing a typo.
sql/set_var.cc:
new global variable slave_transaction_retries (will be one per subslave, when we have multimaster).
sql/slave.cc:
Slave SQL thread: if a transaction fails because of InnoDB deadlock or innodb_lock_wait_timeout exceeded,
optionally retry the transaction a certain number of times (--slave_transaction_retries).
sql/slave.h:
new RELAY_LOG_INFO::trans_retries.
Added a check, if the table, which we are going to create, is open.
This can happen if a MERGE mapped table is TRUNCATEd.
myisam/mi_open.c:
Bug#8306 - TRUNCATE leads to index corruption
Made test_if_reopen() globally available.
myisam/myisamdef.h:
Bug#8306 - TRUNCATE leads to index corruption
Declared test_if_reopen() as globally available.
mysql-test/r/myisam.result:
Bug#8306 - TRUNCATE leads to index corruption
The test result.
mysql-test/t/myisam.test:
Bug#8306 - TRUNCATE leads to index corruption
The test case.
so that extra slashes are handled in tmpdir. (Bug #8497)
sql/ha_heap.cc:
use constants instead of magic integers on fn_format() calls
sql/sql_select.cc:
Construct filename for temporary tables using fn_format() to get consistent
filenames.
mysql-test/t/temp_table.test:
Add new regression test
mysql-test/r/temp_table.result:
Add new test results
depending on ref->unsigned_flag. Item_int_with_ref can refer to both signed and
unsigned integers.
mysql-test/r/bigint.result:
Test case for BUG#8562
mysql-test/t/bigint.test:
Test case for BUG#8562
the error to be sent to the client.
mysql-test/r/select_safe.result:
Testcase for BUG#8726
mysql-test/t/select_safe.test:
Testcase for BUG#8726
sql/sql_select.cc:
Fix for BUG#8726: On ER_TOO_BIG_SELECT set JOIN::error to -1 to cause the error to be sent to the client.
(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)
my_like_range_simple to produce upper bound constants for LIKE "str_%" and similar expressions.
mysql-test/r/ctype_cp1251.result:
Test for BUG#8560
mysql-test/t/ctype_cp1251.test:
Test for BUG#8560
updated with the correct number of lines. (Bug #8681)
mysql-test/t/join_outer.test:
Add new regression test
mysql-test/r/join_outer.result:
Add new results
sql/item_sum.cc:
Move cleanup of warning message outside of "if (original)" test or it won't
always get cleaned up.
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