The IN() function uses agg_cmp_type() to aggregate all types of its arguments
to find out some common type for comparisons. In this particular case the
char() and the int was aggregated to double because char() can contain values
like '1.5'. But all strings which do not start from a digit are converted to
0. thus 'a' and 'z' become equal.
This behaviour is reasonable when all function arguments are constants. But
when there is a field or an expression this can lead to false comparisons. In
this case it makes more sense to coerce constants to the type of the field
argument.
The agg_cmp_type() function now aggregates types of constant and non-constant
items separately. If some non-constant items will be found then their
aggregated type will be returned. Thus after the aggregation constants will be
coerced to the aggregated type.
mysql-test/t/func_in.test:
Added test case for bug#18360: Incorrect type coercion in IN() results in false comparison.
mysql-test/r/func_in.result:
Added test case for bug#18360: Incorrect type coercion in IN() results in false comparison.
sql/item_cmpfunc.cc:
Fixed bug#18360: Incorrect type coercion in IN() results in false comparison.
The agg_cmp_type() function now aggregates types of constant and non-constant
items separately. If some non-constant items will be found then their
aggregated type will be returned. Thus after the aggregation constants will
be coerced to the aggregated type.
mysql-test/r/partition.result:
Added new test case
mysql-test/t/partition.test:
Added new test case
storage/archive/ha_archive.cc:
Moved some code to avoid that ha_archive::create leaves files after error in create
There are still cases where this occurs but now only on file creation errors.
merge with 5.0.
specific test case in inside of #17263 section (grave quoted name).
mysql-test/r/rpl_temporary.result:
results changed
mysql-test/t/rpl_temporary.test:
merge with 5.0 also to eliminate a typo with '@'.
sql/mysql_priv.h:
merged manually with 5.0 using 5.1 specific table's name "access path".
sql/sql_base.cc:
manual merge with 5.0. The 5.0 code was taken verbatim and changed according to
a. rbr, b. db,tabl_name are LEX_STRIGs, c. close_temporary needs 3 args.
into mysql.com:/home/mydev/mysql-5.1-bug19815
mysql-test/r/lock_multi.result:
Auto merged
mysql-test/t/lock_multi.test:
Auto merged
sql/sql_db.cc:
SCCS merged
The order of acquiring LOCK_mysql_create_db
and wait_if_global_read_lock() was wrong. It could happen
that a thread held LOCK_mysql_create_db while waiting for
the global read lock to be released. The thread with the
global read lock could try to administrate a database too.
It would first try to lock LOCK_mysql_create_db and hang...
The check if the current thread has the global read lock
is done in wait_if_global_read_lock(), which could not be
reached because of the hang in LOCK_mysql_create_db.
Now I exchanged the order of acquiring LOCK_mysql_create_db
and wait_if_global_read_lock(). This makes
wait_if_global_read_lock() fail with an error message for
the thread with the global read lock. No deadlock happens.
mysql-test/r/lock_multi.result:
Bug#19815 - CREATE/RENAME/DROP DATABASE can deadlock on a global read lock
The test result
mysql-test/t/lock_multi.test:
Bug#19815 - CREATE/RENAME/DROP DATABASE can deadlock on a global read lock
The test case
sql/sql_db.cc:
Bug#19815 - CREATE/RENAME/DROP DATABASE can deadlock on a global read lock
Exchanged the order of acquiring LOCK_mysql_create_db
and wait_if_global_read_lock().
into neptunus.(none):/home/msvensson/mysql/mysql-5.0-maint
mysql-test/r/grant.result:
Auto merged
mysql-test/t/grant.test:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
mysql-test/r/grant.result:
Reorder test result
mysql-test/t/grant.test:
Add "use test"
sql/sql_acl.cc:
Add check if host is NULL
Add check if grant_name->host.hostname is null
The problem was that MySQL hadn't true ctype implementation. As a
result many multibyte punctuation/whitespace characters were
treated as word characters.
This fix uses recently added CTYPE table for unicode character sets
(WL1386) to detect unicode punctuation/whitespace characters
correctly.
Note: this is incompatible change since it changes parser behavior.
One will have to use REPAIR TABLE statement to rebuild fulltext
indexes.
mysql-test/r/fulltext2.result:
Testcase for BUG#19580.
mysql-test/t/fulltext2.test:
Testcase for BUG#19580.
storage/myisam/ft_parser.c:
Use WL1386 "CTYPE table for unicode character sets" functionality.
storage/myisam/ft_update.c:
Use WL1386 "CTYPE table for unicode character sets" functionality.
Reverse fix for BUG#16489 "utf8 + fulltext leads to corrupt index
file.". It is not needed anymore, since we have true ctype
implementation.
storage/myisam/ftdefs.h:
Use WL1386 "CTYPE table for unicode character sets" functionality.
Rework true_word_char macro so it accepts ctype instead of charset
as first param. It doesn't use my_isalnum anymore, but instead
directly checks ctype.
Obsolete word_char macro removed.
into neptunus.(none):/home/msvensson/mysql/mysql-5.0-maint
mysql-test/t/grant.test:
Auto merged
sql/sql_acl.cc:
Auto merged
mysql-test/r/grant.result:
SCCS merged
mysql-test/lib/init_db.sql:
remove definer from PK
mysql-test/r/events.result:
update results
mysql-test/r/system_mysql_db.result:
update results
mysql-test/t/events.test:
remove I_S.EVENTS test and move it to events_grant.test
scripts/mysql_fix_privilege_tables.sql:
change table definition
sql/event.cc:
make events non-user specific (namespace change)
sql/event.h:
make events non-user specific (namespace change)
sql/event_priv.h:
make events non-user specific (namespace change)
sql/event_scheduler.cc:
make events non-user specific (namespace change)
sql/event_timed.cc:
make events non-user specific (namespace change)
sql/sql_parse.cc:
make events non-user specific (namespace change)
sql/sql_show.cc:
SHOW EVENTS is available to everyone who has EVENT on specific schema.
No additional privileges are needed to see others' events.
- user A has events in db1 and db2
- user B has events in db1 and db3
A will see all his events from db1 and db2 as well as B's events
from db1 but not from db3.
B will see her events from db1 and db3. In addition B will see
only A's events from db1 but not db2.
In multi-table delete a table for delete can't be used for selecting in
subselects. Appropriate error was raised but wasn't checked which leads to a
crash at the execution phase.
The mysql_execute_command() now checks for errors before executing select
for multi-delete.
mysql-test/t/multi_update.test:
Added test case for bug#19225: unchecked error results in server crash
mysql-test/r/multi_update.result:
Added test case for bug#19225: unchecked error results in server crash
sql/sql_parse.cc:
Fixed bug#19225: unchecked error results in server crash
The mysql_execute_command() now checks for errors before executing select for multi-delete.
argument can lead to a wrong result.
md5() and sha() functions treat their arguments as case sensitive strings.
But when they are compared their arguments were compared as a case
insensitive strings which leads to two functions with different arguments
and thus different results to being identical. This can lead to a wrong
decision made in the range optimizer and thus lead to a wrong result set.
Item_func_md5::fix_length_and_dec() and Item_func_sha::fix_length_and_dec()
functions now set binary collation on their arguments.
sql/item_strfunc.cc:
Fixed bug#15351: Wrong collation used for comparison of md5() and sha()
argument can lead to a wrong result.
Item_func_md5::fix_length_and_dec() and Item_func_sha::fix_length_and_dec()
functions now set binary collation on their arguments.
mysql-test/r/func_str.result:
Added test case for the bug#15351: Wrong collation used for comparison of md5() and sha()
argument can lead to a wrong result.
mysql-test/t/func_str.test:
Added test case for the bug#15351: Wrong collation used for comparison of md5() and sha()
argument can lead to a wrong result.
refining the test case to exclude problems with koi8r on some platforms.
mysql-test/t/mysqlbinlog.test:
replacing unavailble on some platforms koi8r with latin1 still to preserve the essence of the testcase:
to generate utf8 names in binlog, despite client charset was different, and
to digest this binlog.
into sergbook.mysql.com:/usr/home/serg/Abk/mysql-5.1
mysql-test/mysql-test-run.pl:
Auto merged
sql/ha_myisam.cc:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/ha_ndbcluster.h:
Auto merged
sql/ha_ndbcluster_binlog.cc:
Auto merged
sql/ha_partition.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/handler.h:
Auto merged
sql/log.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
storage/archive/ha_archive.cc:
Auto merged
storage/csv/ha_tina.cc:
Auto merged
refers to a column name.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
include/mysqld_error.h:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
include/sql_state.h:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
mysql-test/r/explain.result:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
mysql-test/r/key_cache.result:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
mysql-test/r/preload.result:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
mysql-test/r/select.result:
Added a test case for bug #17873.
mysql-test/t/explain.test:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
mysql-test/t/select.test:
Added a test case for bug #17873.
sql/share/czech/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/danish/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/dutch/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/english/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/estonian/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/french/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/german/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/greek/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/hungarian/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/italian/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/japanese-sjis/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/japanese/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/korean/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/norwegian-ny/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/norwegian/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/polish/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/portuguese/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/romanian/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/russian/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/serbian/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/slovak/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/spanish/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/swedish/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
sql/share/ukrainian/errmsg.txt:
Fixed bug #17873.
Added a new error message ER_INDEX_DOES_NOT_EXIST.
into c-870ae253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/bug19122
sql/mysql_priv.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_partition.cc:
Auto merged
mysql-test/r/partition.result:
manual merge
mysql-test/t/partition.test:
manual merge
mysql-test/r/ndb_partition_key.result:
Manicural changes removed a space from a double-space
mysql-test/r/partition.result:
Manicural changes removed a space from a double-space
Added new test case
mysql-test/r/partition_02myisam.result:
Manicural changes removed a space from a double-space
mysql-test/r/partition_range.result:
Manicural changes removed a space from a double-space
mysql-test/t/partition.test:
New test case
sql/sql_partition.cc:
Removed unnecessary extra spaces
Added show_partition_options set in the same way as when to show table options in SHOW CREATE TABLE
sql/sql_partition.h:
Removed unnecessary extra spaces
Added show_partition_options set in the same way as when to show table options in SHOW CREATE TABLE
sql/sql_show.cc:
Removed unnecessary extra spaces
Added show_partition_options set in the same way as when to show table options in SHOW CREATE TABLE
sql/sql_table.cc:
Removed unnecessary extra spaces
Added show_partition_options set in the same way as when to show table options in SHOW CREATE TABLE
sql/ha_partition.cc:
Added deactivate entry also when deleting partitions
sql/mysql_priv.h:
Added alter_info to parameter list
sql/sql_partition.cc:
Set log_entry on partition_element for deleting partitions
mysql-test/r/partition.result:
New test case
sql/lock.cc:
Added new flag to lock_table_name to ensure we get proper name lock even when we already have lock on table.
sql/mysql_priv.h:
Added new flag to lock_table_name to ensure we get proper name lock even when we already have lock on table.
Added table_list to ALTER_PARTITION_PARAM_TYPE and changed some const char * to char*
sql/sql_base.cc:
Added new flag to lock_table_name to ensure we get proper name lock even when we already have lock on table.
Added table_list to ALTER_PARTITION_PARAM_TYPE and changed some const char * to char*
sql/sql_partition.cc:
New methods to
1) Get a name lock even when we already have one
2) New method that unlocks table and closes the handlers.
3) Release name lock
Integrated those new methods to ensure that handlers are unlocked and closed when drop or
rename is called on them. There is still some work to update the comments to reflect the
last changes.
into mysql.com:/home/kgeorge/mysql/5.0/B18681
sql/sql_acl.cc:
Auto merged
sql/table.cc:
Auto merged
mysql-test/r/view_grant.result:
resolved conflict
mysql-test/t/view_grant.test:
resolved merge conflict
into mysql.com:/home/kgeorge/mysql/5.0/B18681
sql/mysql_priv.h:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_select.cc:
Auto merged