Commit 4b0d98b2 authored by Karen Langford's avatar Karen Langford

Merge from mysql-5.1.61-release

parents 99e462ab dacaaf22
...@@ -45,11 +45,11 @@ ...@@ -45,11 +45,11 @@
* seems to actually advertise this properly, despite Unicode 3.1 having * seems to actually advertise this properly, despite Unicode 3.1 having
* been around since 2001... */ * been around since 2001... */
/* XXXMYSQL : Added FreeBSD to bypass this check. /* XXXMYSQL : Added FreeBSD & AIX to bypass this check.
TODO : Verify if FreeBSD stores ISO 10646 in wchar_t. */ TODO : Verify if FreeBSD & AIX stores ISO 10646 in wchar_t. */
#if !defined(__NetBSD__) && !defined(__sun) \ #if !defined(__NetBSD__) && !defined(__sun) \
&& !(defined(__APPLE__) && defined(__MACH__)) \ && !(defined(__APPLE__) && defined(__MACH__)) \
&& !defined(__FreeBSD__) && !defined(__FreeBSD__) && !defined(_AIX)
#ifndef __STDC_ISO_10646__ #ifndef __STDC_ISO_10646__
/* In many places it is assumed that the first 127 code points are ASCII /* In many places it is assumed that the first 127 code points are ASCII
* compatible, so ensure wchar_t indeed does ISO 10646 and not some other * compatible, so ensure wchar_t indeed does ISO 10646 and not some other
......
...@@ -200,7 +200,7 @@ el_set(EditLine *el, int op, ...) ...@@ -200,7 +200,7 @@ el_set(EditLine *el, int op, ...)
ret = -1; ret = -1;
goto out; goto out;
} }
// XXX: The two strdup's leak /* XXX: The two strdups leak. */
ret = map_addfunc(el, Strdup(wargv[0]), Strdup(wargv[1]), ret = map_addfunc(el, Strdup(wargv[0]), Strdup(wargv[1]),
func); func);
ct_free_argv(wargv); ct_free_argv(wargv);
......
...@@ -1978,7 +1978,7 @@ rl_callback_read_char() ...@@ -1978,7 +1978,7 @@ rl_callback_read_char()
} else } else
wbuf = NULL; wbuf = NULL;
(*(void (*)(const char *))rl_linefunc)(wbuf); (*(void (*)(const char *))rl_linefunc)(wbuf);
//el_set(e, EL_UNBUFFERED, 1); /*el_set(e, EL_UNBUFFERED, 1);*/
} }
} }
......
...@@ -365,3 +365,19 @@ Variable_name Value ...@@ -365,3 +365,19 @@ Variable_name Value
key_cache_block_size 1536 key_cache_block_size 1536
SET GLOBAL key_cache_block_size= @bug28478_key_cache_block_size; SET GLOBAL key_cache_block_size= @bug28478_key_cache_block_size;
DROP TABLE t1; DROP TABLE t1;
#
# Bug#12361113: crash when load index into cache
#
# Note that this creates an empty disabled key cache!
SET GLOBAL key_cache_none.key_cache_block_size = 1024;
CREATE TABLE t1 (a INT, b INTEGER NOT NULL, KEY (b) ) ENGINE = MYISAM;
INSERT INTO t1 VALUES (1, 1);
CACHE INDEX t1 in key_cache_none;
ERROR HY000: Unknown key cache 'key_cache_none'
# The bug crashed the server at LOAD INDEX below. Now it will succeed
# since the default cache is used due to CACHE INDEX failed for
# key_cache_none.
LOAD INDEX INTO CACHE t1;
Table Op Msg_type Msg_text
test.t1 preload_keys status OK
DROP TABLE t1;
...@@ -147,6 +147,7 @@ DROP TABLE `@`; ...@@ -147,6 +147,7 @@ DROP TABLE `@`;
CREATE TABLE `я` (a INT); CREATE TABLE `я` (a INT);
SET NAMES DEFAULT; SET NAMES DEFAULT;
mysqlcheck --default-character-set="latin1" --databases test mysqlcheck --default-character-set="latin1" --databases test
call mtr.add_suppression("Can't find file: '..test.@003f.frm'");
test.? test.?
Error : Table doesn't exist Error : Table doesn't exist
status : Operation failed status : Operation failed
......
...@@ -248,3 +248,19 @@ SET GLOBAL key_cache_block_size= @bug28478_key_cache_block_size; ...@@ -248,3 +248,19 @@ SET GLOBAL key_cache_block_size= @bug28478_key_cache_block_size;
DROP TABLE t1; DROP TABLE t1;
# End of 4.1 tests # End of 4.1 tests
--echo #
--echo # Bug#12361113: crash when load index into cache
--echo #
--echo # Note that this creates an empty disabled key cache!
SET GLOBAL key_cache_none.key_cache_block_size = 1024;
CREATE TABLE t1 (a INT, b INTEGER NOT NULL, KEY (b) ) ENGINE = MYISAM;
INSERT INTO t1 VALUES (1, 1);
--error ER_UNKNOWN_KEY_CACHE
CACHE INDEX t1 in key_cache_none;
--echo # The bug crashed the server at LOAD INDEX below. Now it will succeed
--echo # since the default cache is used due to CACHE INDEX failed for
--echo # key_cache_none.
LOAD INDEX INTO CACHE t1;
DROP TABLE t1;
...@@ -1817,9 +1817,13 @@ CREATE TABLE t1(a INT); ...@@ -1817,9 +1817,13 @@ CREATE TABLE t1(a INT);
--echo # Test reattach merge failure --echo # Test reattach merge failure
LOCK TABLES m1 READ; LOCK TABLES m1 READ;
--echo # Replace 't1' with 't3' table using file operations. --echo # Replace 't1' with 't3' table using file operations.
remove_file $MYSQLD_DATADIR/test/t1.frm; # move + remove is a work around for windows.
remove_file $MYSQLD_DATADIR/test/t1.MYI; move_file $MYSQLD_DATADIR/test/t1.frm $MYSQLD_DATADIR/test/oldt1.frm;
remove_file $MYSQLD_DATADIR/test/t1.MYD; move_file $MYSQLD_DATADIR/test/t1.MYI $MYSQLD_DATADIR/test/oldt1.MYI;
move_file $MYSQLD_DATADIR/test/t1.MYD $MYSQLD_DATADIR/test/oldt1.MYD;
remove_file $MYSQLD_DATADIR/test/oldt1.frm;
remove_file $MYSQLD_DATADIR/test/oldt1.MYI;
remove_file $MYSQLD_DATADIR/test/oldt1.MYD;
copy_file $MYSQLD_DATADIR/test/t3.frm $MYSQLD_DATADIR/test/t1.frm; copy_file $MYSQLD_DATADIR/test/t3.frm $MYSQLD_DATADIR/test/t1.frm;
copy_file $MYSQLD_DATADIR/test/t3.MYI $MYSQLD_DATADIR/test/t1.MYI; copy_file $MYSQLD_DATADIR/test/t3.MYI $MYSQLD_DATADIR/test/t1.MYI;
copy_file $MYSQLD_DATADIR/test/t3.MYD $MYSQLD_DATADIR/test/t1.MYD; copy_file $MYSQLD_DATADIR/test/t3.MYD $MYSQLD_DATADIR/test/t1.MYD;
......
...@@ -138,6 +138,7 @@ CREATE TABLE `я` (a INT); ...@@ -138,6 +138,7 @@ CREATE TABLE `я` (a INT);
SET NAMES DEFAULT; SET NAMES DEFAULT;
--echo mysqlcheck --default-character-set="latin1" --databases test --echo mysqlcheck --default-character-set="latin1" --databases test
# Error returned depends on platform, replace it with "Table doesn't exist" # Error returned depends on platform, replace it with "Table doesn't exist"
call mtr.add_suppression("Can't find file: '..test.@003f.frm'");
--replace_result "Can't find file: './test/@003f.frm' (errno: 22)" "Table doesn't exist" "Table 'test.?' doesn't exist" "Table doesn't exist" --replace_result "Can't find file: './test/@003f.frm' (errno: 22)" "Table doesn't exist" "Table 'test.?' doesn't exist" "Table doesn't exist"
--exec $MYSQL_CHECK --default-character-set="latin1" --databases test --exec $MYSQL_CHECK --default-character-set="latin1" --databases test
--echo mysqlcheck --default-character-set="utf8" --databases test --echo mysqlcheck --default-character-set="utf8" --databases test
......
...@@ -5126,6 +5126,11 @@ bool mysql_assign_to_keycache(THD* thd, TABLE_LIST* tables, ...@@ -5126,6 +5126,11 @@ bool mysql_assign_to_keycache(THD* thd, TABLE_LIST* tables,
DBUG_RETURN(TRUE); DBUG_RETURN(TRUE);
} }
pthread_mutex_unlock(&LOCK_global_system_variables); pthread_mutex_unlock(&LOCK_global_system_variables);
if (!key_cache->key_cache_inited)
{
my_error(ER_UNKNOWN_KEY_CACHE, MYF(0), key_cache_name->str);
DBUG_RETURN(TRUE);
}
check_opt.key_cache= key_cache; check_opt.key_cache= key_cache;
DBUG_RETURN(mysql_admin_table(thd, tables, &check_opt, DBUG_RETURN(mysql_admin_table(thd, tables, &check_opt,
"assign_to_keycache", TL_READ_NO_INSERT, 0, 0, "assign_to_keycache", TL_READ_NO_INSERT, 0, 0,
......
...@@ -34,7 +34,12 @@ ...@@ -34,7 +34,12 @@
2011-10-27 The InnoDB Team 2011-10-27 The InnoDB Team
* row/row0mysql.c: * row/row0mysql.c:
Fix Bug#12884631 62146: TABLES ARE LOST FOR DDL Fix Bug #12884631 62146: TABLES ARE LOST FOR DDL
2011-10-25 The InnoDB Team
* handler/ha_innodb.cc, row/row0ins.c:
Fix Bug#13002783 PARTIALLY UNINITIALIZED CASCADE UPDATE VECTOR
2011-10-20 The InnoDB Team 2011-10-20 The InnoDB Team
......
...@@ -56,6 +56,9 @@ int mi_preload(MI_INFO *info, ulonglong key_map, my_bool ignore_leaves) ...@@ -56,6 +56,9 @@ int mi_preload(MI_INFO *info, ulonglong key_map, my_bool ignore_leaves)
if (!keys || !mi_is_any_key_active(key_map) || key_file_length == pos) if (!keys || !mi_is_any_key_active(key_map) || key_file_length == pos)
DBUG_RETURN(0); DBUG_RETURN(0);
/* Preload into a non initialized key cache should never happen. */
DBUG_ASSERT(share->key_cache->key_cache_inited);
block_length= keyinfo[0].block_length; block_length= keyinfo[0].block_length;
if (ignore_leaves) if (ignore_leaves)
......
...@@ -429,7 +429,7 @@ my_bool test_intersect(MY_BITMAP *map, uint bitsize) ...@@ -429,7 +429,7 @@ my_bool test_intersect(MY_BITMAP *map, uint bitsize)
{ {
uint bitsize2 = 1 + get_rand_bit(MAX_TESTED_BITMAP_SIZE - 1); uint bitsize2 = 1 + get_rand_bit(MAX_TESTED_BITMAP_SIZE - 1);
MY_BITMAP map2; MY_BITMAP map2;
uint32 map2buf[bitsize2]; uint32 map2buf[MAX_TESTED_BITMAP_SIZE];
uint i, test_bit1, test_bit2, test_bit3; uint i, test_bit1, test_bit2, test_bit3;
if (bitmap_init(&map2, map2buf, bitsize2, FALSE)) if (bitmap_init(&map2, map2buf, bitsize2, FALSE))
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment