Manual merge of mysql-5.1-bugteam into mysql-trunk-merge.
Conflicts: Text conflict in mysql-test/r/func_str.result Text conflict in mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_32.result Text conflict in mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_64.result Text conflict in mysql-test/t/func_str.test Text conflict in sql/mysqld.cc Text conflict in sql/protocol.cc Text conflict in storage/myisam/mi_open.c
This commit is contained in:
commit
87b98f6350
@ -639,4 +639,17 @@ CREATE TABLE t1(a CHAR(1),FULLTEXT(a));
|
||||
SELECT 1 FROM t1 WHERE MATCH(a) AGAINST ('') AND ROW(a,a) > ROW(1,1);
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# BUG#51866 - crash with repair by sort and fulltext keys
|
||||
#
|
||||
CREATE TABLE t1(a CHAR(4), FULLTEXT(a));
|
||||
INSERT INTO t1 VALUES('aaaa');
|
||||
SET myisam_sort_buffer_size=4;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '4'
|
||||
REPAIR TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair status OK
|
||||
SET myisam_sort_buffer_size=@@global.myisam_sort_buffer_size;
|
||||
DROP TABLE t1;
|
||||
End of 5.1 tests
|
||||
|
@ -2590,6 +2590,20 @@ FROM t2 WHERE t2.b = 1 GROUP BY t2.b;
|
||||
DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b LIMIT 1), t2.a)
|
||||
secret
|
||||
DROP TABLE t1, t2;
|
||||
#
|
||||
# Bug#52164 Assertion failed: param.sort_length, file .\filesort.cc, line 149
|
||||
#
|
||||
CREATE TABLE t1 (a LONGBLOB NOT NULL);
|
||||
INSERT INTO t1 VALUES (''),('');
|
||||
SELECT 1 FROM t1, t1 t2
|
||||
ORDER BY QUOTE(t1.a);
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
DROP TABLE t1;
|
||||
End of 5.1 tests
|
||||
Start of 5.4 tests
|
||||
SELECT format(12345678901234567890.123, 3);
|
||||
format(12345678901234567890.123, 3)
|
||||
|
@ -1540,5 +1540,12 @@ a
|
||||
HANDLER t1 READ a LAST;
|
||||
a
|
||||
HANDLER t1 CLOSE;
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ a FIRST;
|
||||
a
|
||||
INSERT INTO t1 VALUES (GeomFromText('Polygon((40 40,60 40,60 60,40 60,40 40))'));
|
||||
# should not crash
|
||||
HANDLER t1 READ a NEXT;
|
||||
HANDLER t1 CLOSE;
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests.
|
||||
|
@ -1721,4 +1721,17 @@ TRUNCATE t1;
|
||||
HANDLER t1 READ FIRST;
|
||||
ERROR 42S02: Unknown table 't1' in HANDLER
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# BUG#51877 - HANDLER interface causes invalid memory read
|
||||
#
|
||||
CREATE TABLE t1(a INT, KEY(a));
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ a FIRST;
|
||||
a
|
||||
INSERT INTO t1 VALUES(1);
|
||||
HANDLER t1 READ a NEXT;
|
||||
a
|
||||
1
|
||||
HANDLER t1 CLOSE;
|
||||
DROP TABLE t1;
|
||||
End of 5.1 tests
|
||||
|
@ -2315,6 +2315,8 @@ INSERT INTO t1 SELECT a+1280,b FROM t1;
|
||||
INSERT INTO t1 SELECT a+2560,b FROM t1;
|
||||
INSERT INTO t1 SELECT a+5120,b FROM t1;
|
||||
SET myisam_sort_buffer_size=4;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '4'
|
||||
REPAIR TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair error myisam_sort_buffer_size is too small
|
||||
@ -2365,6 +2367,8 @@ CREATE TABLE t1(a CHAR(255), KEY(a));
|
||||
SELECT * FROM t1, t1 AS a1;
|
||||
a a
|
||||
SET myisam_sort_buffer_size=4;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '4'
|
||||
INSERT INTO t1 VALUES
|
||||
('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),
|
||||
('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),('0'),
|
||||
|
@ -193,4 +193,17 @@ show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 2
|
||||
drop table t1;
|
||||
#
|
||||
# Bug46615 Assertion in Query_cache::invalidate in INSERT in a VIEW of a MERGE table
|
||||
#
|
||||
CREATE TABLE t1 (c1 INT, c2 INT);
|
||||
CREATE TABLE t2 LIKE t1;
|
||||
SET AUTOCOMMIT=OFF;
|
||||
CREATE VIEW t1_view AS SELECT c1 FROM t1 NATURAL JOIN t2 ;
|
||||
INSERT INTO t1_view (c1, c2) SELECT c1, c2 FROM t1;
|
||||
ERROR 42S22: Unknown column 'c2' in 'field list'
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
DROP VIEW t1_view;
|
||||
SET AUTOCOMMIT=DEFAULT;
|
||||
set GLOBAL query_cache_size=default;
|
||||
|
@ -526,6 +526,8 @@ select @@max_user_connections;
|
||||
100
|
||||
set global max_write_lock_count=100;
|
||||
set myisam_sort_buffer_size=100;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '100'
|
||||
set global net_buffer_length=100;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect net_buffer_length value: '100'
|
||||
|
@ -8,11 +8,15 @@ SELECT @start_session_value;
|
||||
8388608
|
||||
'#--------------------FN_DYNVARS_005_01-------------------------#'
|
||||
SET @@global.myisam_sort_buffer_size = 100;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '100'
|
||||
SET @@global.myisam_sort_buffer_size = DEFAULT;
|
||||
SELECT @@global.myisam_sort_buffer_size ;
|
||||
@@global.myisam_sort_buffer_size
|
||||
8388608
|
||||
SET @@session.myisam_sort_buffer_size = 200;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '200'
|
||||
SET @@session.myisam_sort_buffer_size = DEFAULT;
|
||||
SELECT @@session.myisam_sort_buffer_size ;
|
||||
@@session.myisam_sort_buffer_size
|
||||
@ -28,9 +32,11 @@ SELECT @@session.myisam_sort_buffer_size = 8388608;
|
||||
1
|
||||
'#--------------------FN_DYNVARS_005_03-------------------------#'
|
||||
SET @@global.myisam_sort_buffer_size = 4;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '4'
|
||||
SELECT @@global.myisam_sort_buffer_size ;
|
||||
@@global.myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
SET @@global.myisam_sort_buffer_size = 4294967295;
|
||||
SELECT @@global.myisam_sort_buffer_size ;
|
||||
@@global.myisam_sort_buffer_size
|
||||
@ -41,9 +47,11 @@ SELECT @@global.myisam_sort_buffer_size ;
|
||||
655354
|
||||
'#--------------------FN_DYNVARS_005_04-------------------------#'
|
||||
SET @@session.myisam_sort_buffer_size = 4;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '4'
|
||||
SELECT @@session.myisam_sort_buffer_size ;
|
||||
@@session.myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
SET @@session.myisam_sort_buffer_size = 4294967295;
|
||||
SELECT @@session.myisam_sort_buffer_size ;
|
||||
@@session.myisam_sort_buffer_size
|
||||
@ -58,13 +66,13 @@ Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0'
|
||||
SELECT @@global.myisam_sort_buffer_size ;
|
||||
@@global.myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
SET @@global.myisam_sort_buffer_size = -1024;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '-1024'
|
||||
SELECT @@global.myisam_sort_buffer_size ;
|
||||
@@global.myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
SET @@global.myisam_sort_buffer_size = 429496729533;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '429496729533'
|
||||
@ -101,28 +109,28 @@ Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0'
|
||||
SELECT @@session.myisam_sort_buffer_size ;
|
||||
@@session.myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
SET @@session.myisam_sort_buffer_size = -2;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '-2'
|
||||
SELECT @@session.myisam_sort_buffer_size ;
|
||||
@@session.myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
SET @@session.myisam_sort_buffer_size = 65530.34;
|
||||
ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size'
|
||||
SELECT @@session.myisam_sort_buffer_size ;
|
||||
@@session.myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
SET @@session.myisam_sort_buffer_size = test;
|
||||
ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size'
|
||||
SELECT @@session.myisam_sort_buffer_size ;
|
||||
@@session.myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
SET @@session.myisam_sort_buffer_size = "test";
|
||||
ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size'
|
||||
SELECT @@session.myisam_sort_buffer_size ;
|
||||
@@session.myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
'#------------------FN_DYNVARS_005_06-----------------------#'
|
||||
SELECT @@global.myisam_sort_buffer_size = VARIABLE_VALUE
|
||||
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
|
||||
@ -141,20 +149,24 @@ Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '1'
|
||||
SELECT @@global.myisam_sort_buffer_size ;
|
||||
@@global.myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
SET @@global.myisam_sort_buffer_size = FALSE;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0'
|
||||
SELECT @@global.myisam_sort_buffer_size ;
|
||||
@@global.myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
'#---------------------FN_DYNVARS_001_09----------------------#'
|
||||
SET @@global.myisam_sort_buffer_size = 10;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '10'
|
||||
SELECT @@myisam_sort_buffer_size = @@global.myisam_sort_buffer_size ;
|
||||
@@myisam_sort_buffer_size = @@global.myisam_sort_buffer_size
|
||||
0
|
||||
1
|
||||
'#---------------------FN_DYNVARS_001_10----------------------#'
|
||||
SET @@myisam_sort_buffer_size = 100;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '100'
|
||||
SELECT @@myisam_sort_buffer_size = @@local.myisam_sort_buffer_size ;
|
||||
@@myisam_sort_buffer_size = @@local.myisam_sort_buffer_size
|
||||
1
|
||||
@ -167,7 +179,7 @@ Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '1'
|
||||
SELECT @@myisam_sort_buffer_size ;
|
||||
@@myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
SELECT local.myisam_sort_buffer_size ;
|
||||
ERROR 42S02: Unknown table 'local' in field list
|
||||
SELECT session.myisam_sort_buffer_size ;
|
||||
|
@ -8,11 +8,15 @@ SELECT @start_session_value;
|
||||
8388608
|
||||
'#--------------------FN_DYNVARS_005_01-------------------------#'
|
||||
SET @@global.myisam_sort_buffer_size = 100;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '100'
|
||||
SET @@global.myisam_sort_buffer_size = DEFAULT;
|
||||
SELECT @@global.myisam_sort_buffer_size ;
|
||||
@@global.myisam_sort_buffer_size
|
||||
8388608
|
||||
SET @@session.myisam_sort_buffer_size = 200;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '200'
|
||||
SET @@session.myisam_sort_buffer_size = DEFAULT;
|
||||
SELECT @@session.myisam_sort_buffer_size ;
|
||||
@@session.myisam_sort_buffer_size
|
||||
@ -28,9 +32,11 @@ SELECT @@session.myisam_sort_buffer_size = 8388608;
|
||||
1
|
||||
'#--------------------FN_DYNVARS_005_03-------------------------#'
|
||||
SET @@global.myisam_sort_buffer_size = 4;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '4'
|
||||
SELECT @@global.myisam_sort_buffer_size ;
|
||||
@@global.myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
SET @@global.myisam_sort_buffer_size = 4294967295;
|
||||
SELECT @@global.myisam_sort_buffer_size ;
|
||||
@@global.myisam_sort_buffer_size
|
||||
@ -41,9 +47,11 @@ SELECT @@global.myisam_sort_buffer_size ;
|
||||
655354
|
||||
'#--------------------FN_DYNVARS_005_04-------------------------#'
|
||||
SET @@session.myisam_sort_buffer_size = 4;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '4'
|
||||
SELECT @@session.myisam_sort_buffer_size ;
|
||||
@@session.myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
SET @@session.myisam_sort_buffer_size = 4294967295;
|
||||
SELECT @@session.myisam_sort_buffer_size ;
|
||||
@@session.myisam_sort_buffer_size
|
||||
@ -58,13 +66,13 @@ Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0'
|
||||
SELECT @@global.myisam_sort_buffer_size ;
|
||||
@@global.myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
SET @@global.myisam_sort_buffer_size = -1024;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '-1024'
|
||||
SELECT @@global.myisam_sort_buffer_size ;
|
||||
@@global.myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
SET @@global.myisam_sort_buffer_size = 429496729533;
|
||||
SELECT @@global.myisam_sort_buffer_size ;
|
||||
@@global.myisam_sort_buffer_size
|
||||
@ -99,28 +107,28 @@ Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0'
|
||||
SELECT @@session.myisam_sort_buffer_size ;
|
||||
@@session.myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
SET @@session.myisam_sort_buffer_size = -2;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '-2'
|
||||
SELECT @@session.myisam_sort_buffer_size ;
|
||||
@@session.myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
SET @@session.myisam_sort_buffer_size = 65530.34;
|
||||
ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size'
|
||||
SELECT @@session.myisam_sort_buffer_size ;
|
||||
@@session.myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
SET @@session.myisam_sort_buffer_size = test;
|
||||
ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size'
|
||||
SELECT @@session.myisam_sort_buffer_size ;
|
||||
@@session.myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
SET @@session.myisam_sort_buffer_size = "test";
|
||||
ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size'
|
||||
SELECT @@session.myisam_sort_buffer_size ;
|
||||
@@session.myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
'#------------------FN_DYNVARS_005_06-----------------------#'
|
||||
SELECT @@global.myisam_sort_buffer_size = VARIABLE_VALUE
|
||||
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
|
||||
@ -139,20 +147,24 @@ Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '1'
|
||||
SELECT @@global.myisam_sort_buffer_size ;
|
||||
@@global.myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
SET @@global.myisam_sort_buffer_size = FALSE;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0'
|
||||
SELECT @@global.myisam_sort_buffer_size ;
|
||||
@@global.myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
'#---------------------FN_DYNVARS_001_09----------------------#'
|
||||
SET @@global.myisam_sort_buffer_size = 10;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '10'
|
||||
SELECT @@myisam_sort_buffer_size = @@global.myisam_sort_buffer_size ;
|
||||
@@myisam_sort_buffer_size = @@global.myisam_sort_buffer_size
|
||||
0
|
||||
1
|
||||
'#---------------------FN_DYNVARS_001_10----------------------#'
|
||||
SET @@myisam_sort_buffer_size = 100;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '100'
|
||||
SELECT @@myisam_sort_buffer_size = @@local.myisam_sort_buffer_size ;
|
||||
@@myisam_sort_buffer_size = @@local.myisam_sort_buffer_size
|
||||
1
|
||||
@ -165,7 +177,7 @@ Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '1'
|
||||
SELECT @@myisam_sort_buffer_size ;
|
||||
@@myisam_sort_buffer_size
|
||||
4
|
||||
4096
|
||||
SELECT local.myisam_sort_buffer_size ;
|
||||
ERROR 42S02: Unknown table 'local' in field list
|
||||
SELECT session.myisam_sort_buffer_size ;
|
||||
|
@ -584,5 +584,14 @@ CREATE TABLE t1(a CHAR(1),FULLTEXT(a));
|
||||
SELECT 1 FROM t1 WHERE MATCH(a) AGAINST ('') AND ROW(a,a) > ROW(1,1);
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # BUG#51866 - crash with repair by sort and fulltext keys
|
||||
--echo #
|
||||
CREATE TABLE t1(a CHAR(4), FULLTEXT(a));
|
||||
INSERT INTO t1 VALUES('aaaa');
|
||||
SET myisam_sort_buffer_size=4;
|
||||
REPAIR TABLE t1;
|
||||
SET myisam_sort_buffer_size=@@global.myisam_sort_buffer_size;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
@ -1354,6 +1354,17 @@ SELECT DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP
|
||||
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#52164 Assertion failed: param.sort_length, file .\filesort.cc, line 149
|
||||
--echo #
|
||||
CREATE TABLE t1 (a LONGBLOB NOT NULL);
|
||||
INSERT INTO t1 VALUES (''),('');
|
||||
SELECT 1 FROM t1, t1 t2
|
||||
ORDER BY QUOTE(t1.a);
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
--echo Start of 5.4 tests
|
||||
#
|
||||
# WL#4584 Internationalized number format
|
||||
|
@ -914,14 +914,15 @@ HANDLER t1 READ a PREV;
|
||||
HANDLER t1 READ a LAST;
|
||||
HANDLER t1 CLOSE;
|
||||
|
||||
#TODO: re-enable this test please when bug #51877 is solved
|
||||
# second crash fixed when the tree has changed since the last search.
|
||||
#HANDLER t1 OPEN;
|
||||
#HANDLER t1 READ a FIRST;
|
||||
#INSERT INTO t1 VALUES (GeomFromText('Polygon((40 40,60 40,60 60,40 60,40 40))'));
|
||||
#HANDLER t1 READ a NEXT;
|
||||
#HANDLER t1 CLOSE;
|
||||
#TODO: end of the 51877 dependent section
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ a FIRST;
|
||||
INSERT INTO t1 VALUES (GeomFromText('Polygon((40 40,60 40,60 60,40 60,40 40))'));
|
||||
--echo # should not crash
|
||||
--disable_result_log
|
||||
HANDLER t1 READ a NEXT;
|
||||
--enable_result_log
|
||||
HANDLER t1 CLOSE;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
@ -37,4 +37,15 @@ TRUNCATE t1;
|
||||
HANDLER t1 READ FIRST;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # BUG#51877 - HANDLER interface causes invalid memory read
|
||||
--echo #
|
||||
CREATE TABLE t1(a INT, KEY(a));
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ a FIRST;
|
||||
INSERT INTO t1 VALUES(1);
|
||||
HANDLER t1 READ a NEXT;
|
||||
HANDLER t1 CLOSE;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
@ -126,5 +126,22 @@ show status like "Qcache_inserts";
|
||||
show status like "Qcache_hits";
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug46615 Assertion in Query_cache::invalidate in INSERT in a VIEW of a MERGE table
|
||||
--echo #
|
||||
CREATE TABLE t1 (c1 INT, c2 INT);
|
||||
CREATE TABLE t2 LIKE t1;
|
||||
SET AUTOCOMMIT=OFF;
|
||||
CREATE VIEW t1_view AS SELECT c1 FROM t1 NATURAL JOIN t2 ;
|
||||
# Before the bug patch the below INSERT stmt used to
|
||||
# crash when other fields than the ones listed in the
|
||||
# view definition were used.
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
INSERT INTO t1_view (c1, c2) SELECT c1, c2 FROM t1;
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
DROP VIEW t1_view;
|
||||
SET AUTOCOMMIT=DEFAULT;
|
||||
|
||||
# Reset default environment.
|
||||
set GLOBAL query_cache_size=default;
|
||||
|
@ -721,8 +721,9 @@ public:
|
||||
String *val_str(String *);
|
||||
void fix_length_and_dec()
|
||||
{
|
||||
ulonglong max_result_length= (ulonglong) args[0]->max_length * 2 + 2;
|
||||
max_length= min(max_result_length, MAX_BLOB_WIDTH);
|
||||
collation.set(args[0]->collation);
|
||||
max_length= args[0]->max_length * 2 + 2;
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1011,8 +1011,8 @@ bool Protocol_text::store(const char *from, size_t length,
|
||||
{
|
||||
CHARSET_INFO *tocs= this->thd->variables.character_set_results;
|
||||
#ifndef DBUG_OFF
|
||||
DBUG_PRINT("info", ("Protocol_text::store field %u (%u): %*.s",
|
||||
field_pos, field_count, (int) length, from));
|
||||
DBUG_PRINT("info", ("Protocol_text::store field %u (%u): %s", field_pos,
|
||||
field_count, (length == 0? "" : from)));
|
||||
DBUG_ASSERT(field_pos < field_count);
|
||||
DBUG_ASSERT(field_types == 0 ||
|
||||
field_types[field_pos] == MYSQL_TYPE_DECIMAL ||
|
||||
|
@ -729,12 +729,10 @@ static bool write_execute_load_query_log_event(THD *thd, sql_exchange* ex,
|
||||
strcpy(end, p);
|
||||
end += pl;
|
||||
|
||||
thd->set_query_inner(load_data_query, end - load_data_query);
|
||||
|
||||
Execute_load_query_log_event
|
||||
e(thd, thd->query(), thd->query_length(),
|
||||
(uint) ((char*) fname_start - (char*) thd->query() - 1),
|
||||
(uint) ((char*) fname_end - (char*) thd->query()),
|
||||
e(thd, load_data_query, end-load_data_query,
|
||||
(uint) ((char*) fname_start - load_data_query - 1),
|
||||
(uint) ((char*) fname_end - load_data_query),
|
||||
(duplicates == DUP_REPLACE) ? LOAD_DUP_REPLACE :
|
||||
(ignore ? LOAD_DUP_IGNORE : LOAD_DUP_ERROR),
|
||||
transactional_table, FALSE, FALSE, errcode);
|
||||
|
@ -3162,7 +3162,7 @@ end_with_restore_list:
|
||||
TODO: this is workaround. right way will be move invalidating in
|
||||
the unlock procedure.
|
||||
*/
|
||||
if (first_table->lock_type == TL_WRITE_CONCURRENT_INSERT &&
|
||||
if (!res && first_table->lock_type == TL_WRITE_CONCURRENT_INSERT &&
|
||||
thd->lock)
|
||||
{
|
||||
/* INSERT ... SELECT should invalidate only the very first table */
|
||||
|
@ -1894,6 +1894,8 @@ int fill_schema_processlist(THD* thd, TABLE_LIST* tables, COND* cond)
|
||||
mysql_mutex_unlock(&mysys_var->mutex);
|
||||
|
||||
/* INFO */
|
||||
/* Lock THD mutex that protects its data when looking at it. */
|
||||
pthread_mutex_lock(&tmp->LOCK_thd_data);
|
||||
if (tmp->query())
|
||||
{
|
||||
table->field[7]->store(tmp->query(),
|
||||
@ -1901,6 +1903,7 @@ int fill_schema_processlist(THD* thd, TABLE_LIST* tables, COND* cond)
|
||||
tmp->query_length()), cs);
|
||||
table->field[7]->set_notnull();
|
||||
}
|
||||
pthread_mutex_unlock(&tmp->LOCK_thd_data);
|
||||
|
||||
if (schema_table_store_record(thd, table))
|
||||
{
|
||||
|
@ -2402,10 +2402,8 @@ int mi_repair_by_sort(MI_CHECK *param, register MI_INFO *info,
|
||||
/*
|
||||
fulltext indexes may have much more entries than the
|
||||
number of rows in the table. We estimate the number here.
|
||||
|
||||
Note, built-in parser is always nr. 0 - see ftparser_call_initializer()
|
||||
*/
|
||||
if (sort_param.keyinfo->ftkey_nr == 0)
|
||||
if (sort_param.keyinfo->parser == &ft_default_parser)
|
||||
{
|
||||
/*
|
||||
for built-in parser the number of generated index entries
|
||||
@ -2422,8 +2420,9 @@ int mi_repair_by_sort(MI_CHECK *param, register MI_INFO *info,
|
||||
so, we'll use all the sort memory and start from ~10 buffpeks.
|
||||
(see _create_index_by_sort)
|
||||
*/
|
||||
sort_info.max_records=
|
||||
10*param->sort_buffer_length/sort_param.key_length;
|
||||
sort_info.max_records= 10 *
|
||||
max(param->sort_buffer_length, MIN_SORT_BUFFER) /
|
||||
sort_param.key_length;
|
||||
}
|
||||
|
||||
sort_param.key_read=sort_ft_key_read;
|
||||
|
@ -658,6 +658,9 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags)
|
||||
myisam_open_list=list_add(myisam_open_list,&m_info->open_list);
|
||||
|
||||
mysql_mutex_unlock(&THR_LOCK_myisam);
|
||||
|
||||
bzero(info.buff, share->base.max_key_block_length * 2);
|
||||
|
||||
if (myisam_log_file >= 0)
|
||||
{
|
||||
intern_filename(name_buff,share->index_file_name);
|
||||
|
@ -86,13 +86,6 @@ int _mi_write_keypage(register MI_INFO *info, register MI_KEYDEF *keyinfo,
|
||||
if ((length=keyinfo->block_length) > IO_SIZE*2 &&
|
||||
info->state->key_file_length != page+length)
|
||||
length= ((mi_getint(buff)+IO_SIZE-1) & (uint) ~(IO_SIZE-1));
|
||||
#ifdef HAVE_purify
|
||||
{
|
||||
length=mi_getint(buff);
|
||||
bzero((uchar*) buff+length,keyinfo->block_length-length);
|
||||
length=keyinfo->block_length;
|
||||
}
|
||||
#endif
|
||||
DBUG_RETURN((key_cache_write(info->s->key_cache,
|
||||
info->s->kfile,page, level, (uchar*) buff,length,
|
||||
(uint) keyinfo->block_length,
|
||||
|
@ -28,6 +28,7 @@ int mi_rnext(MI_INFO *info, uchar *buf, int inx)
|
||||
{
|
||||
int error,changed;
|
||||
uint flag;
|
||||
uint update_mask= HA_STATE_NEXT_FOUND;
|
||||
DBUG_ENTER("mi_rnext");
|
||||
|
||||
if ((inx = _mi_check_index(info,inx)) < 0)
|
||||
@ -55,6 +56,20 @@ int mi_rnext(MI_INFO *info, uchar *buf, int inx)
|
||||
info->s->state.key_root[inx]);
|
||||
break;
|
||||
}
|
||||
/*
|
||||
"search first" failed. This means we have no pivot for
|
||||
"search next", or in other words MI_INFO::lastkey is
|
||||
likely uninitialized.
|
||||
|
||||
Normally SQL layer would never request "search next" if
|
||||
"search first" failed. But HANDLER may do anything.
|
||||
|
||||
As mi_rnext() without preceeding mi_rkey()/mi_rfirst()
|
||||
equals to mi_rfirst(), we must restore original state
|
||||
as if failing mi_rfirst() was not called.
|
||||
*/
|
||||
if (error)
|
||||
update_mask|= HA_STATE_PREV_FOUND;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -100,7 +115,7 @@ int mi_rnext(MI_INFO *info, uchar *buf, int inx)
|
||||
}
|
||||
/* Don't clear if database-changed */
|
||||
info->update&= (HA_STATE_CHANGED | HA_STATE_ROW_CHANGED);
|
||||
info->update|= HA_STATE_NEXT_FOUND;
|
||||
info->update|= update_mask;
|
||||
|
||||
if (error)
|
||||
{
|
||||
|
@ -825,7 +825,7 @@ static int _mi_balance_page(register MI_INFO *info, MI_KEYDEF *keyinfo,
|
||||
(size_t) (length=new_left_length - left_length - k_length));
|
||||
pos=buff+2+length;
|
||||
memcpy((uchar*) father_key_pos,(uchar*) pos,(size_t) k_length);
|
||||
bmove((uchar*) buff+2,(uchar*) pos+k_length,new_right_length);
|
||||
bmove((uchar*) buff + 2, (uchar*) pos + k_length, new_right_length - 2);
|
||||
}
|
||||
else
|
||||
{ /* Move keys -> buff */
|
||||
|
@ -641,18 +641,12 @@ static int rtree_insert_level(MI_INFO *info, uint keynr, uchar *key,
|
||||
}
|
||||
case 1: /* root was split, grow a new root */
|
||||
{
|
||||
uchar *new_root_buf;
|
||||
uchar *new_root_buf= info->buff + info->s->base.max_key_block_length;
|
||||
my_off_t new_root;
|
||||
uchar *new_key;
|
||||
uint nod_flag = info->s->base.key_reflength;
|
||||
|
||||
DBUG_PRINT("rtree", ("root was split, grow a new root"));
|
||||
if (!(new_root_buf = (uchar*)my_alloca((uint)keyinfo->block_length +
|
||||
MI_MAX_KEY_BUFF)))
|
||||
{
|
||||
my_errno = HA_ERR_OUT_OF_MEM;
|
||||
DBUG_RETURN(-1); /* purecov: inspected */
|
||||
}
|
||||
|
||||
mi_putint(new_root_buf, 2, nod_flag);
|
||||
if ((new_root = _mi_new(info, keyinfo, DFLT_INIT_HITS)) ==
|
||||
@ -680,10 +674,8 @@ static int rtree_insert_level(MI_INFO *info, uint keynr, uchar *key,
|
||||
DBUG_PRINT("rtree", ("new root page: %lu level: %d nod_flag: %u",
|
||||
(ulong) new_root, 0, mi_test_if_nod(new_root_buf)));
|
||||
|
||||
my_afree((uchar*)new_root_buf);
|
||||
break;
|
||||
err1:
|
||||
my_afree((uchar*)new_root_buf);
|
||||
DBUG_RETURN(-1); /* purecov: inspected */
|
||||
}
|
||||
default:
|
||||
|
@ -258,7 +258,7 @@ int rtree_split_page(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page, uchar *key,
|
||||
double *old_coord;
|
||||
int n_dim;
|
||||
uchar *source_cur, *cur1, *cur2;
|
||||
uchar *new_page;
|
||||
uchar *new_page= info->buff;
|
||||
int err_code= 0;
|
||||
uint nod_flag= mi_test_if_nod(page);
|
||||
uint full_length= key_length + (nod_flag ? nod_flag :
|
||||
@ -304,12 +304,7 @@ int rtree_split_page(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page, uchar *key,
|
||||
goto split_err;
|
||||
}
|
||||
|
||||
if (!(new_page = (uchar*)my_alloca((uint)keyinfo->block_length)))
|
||||
{
|
||||
err_code= -1;
|
||||
goto split_err;
|
||||
}
|
||||
|
||||
info->buff_used= 1;
|
||||
stop = task + (max_keys + 1);
|
||||
cur1 = rt_PAGE_FIRST_KEY(page, nod_flag);
|
||||
cur2 = rt_PAGE_FIRST_KEY(new_page, nod_flag);
|
||||
@ -345,8 +340,6 @@ int rtree_split_page(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *page, uchar *key,
|
||||
DFLT_INIT_HITS, new_page);
|
||||
DBUG_PRINT("rtree", ("split new block: %lu", (ulong) *new_page_offs));
|
||||
|
||||
my_afree((uchar*)new_page);
|
||||
|
||||
split_err:
|
||||
my_afree((uchar*) coord_buf);
|
||||
DBUG_RETURN(err_code);
|
||||
|
@ -28,13 +28,11 @@
|
||||
|
||||
/* static variables */
|
||||
|
||||
#undef MIN_SORT_MEMORY
|
||||
#undef MYF_RW
|
||||
#undef DISK_BUFFER_SIZE
|
||||
|
||||
#define MERGEBUFF 15
|
||||
#define MERGEBUFF2 31
|
||||
#define MIN_SORT_MEMORY (4096-MALLOC_OVERHEAD)
|
||||
#define MYF_RW MYF(MY_NABP | MY_WME | MY_WAIT_IF_FULL)
|
||||
#define DISK_BUFFER_SIZE (IO_SIZE*16)
|
||||
|
||||
@ -131,12 +129,12 @@ int _create_index_by_sort(MI_SORT_PARAM *info,my_bool no_messages,
|
||||
sort_keys= (uchar **) NULL; error= 1;
|
||||
maxbuffer=1;
|
||||
|
||||
memavl=max(sortbuff_size,MIN_SORT_MEMORY);
|
||||
memavl= max(sortbuff_size, MIN_SORT_BUFFER);
|
||||
records= info->sort_info->max_records;
|
||||
sort_length= info->key_length;
|
||||
LINT_INIT(keys);
|
||||
|
||||
while (memavl >= MIN_SORT_MEMORY)
|
||||
while (memavl >= MIN_SORT_BUFFER)
|
||||
{
|
||||
if ((records < UINT_MAX32) &&
|
||||
((my_off_t) (records + 1) *
|
||||
@ -171,10 +169,10 @@ int _create_index_by_sort(MI_SORT_PARAM *info,my_bool no_messages,
|
||||
break;
|
||||
}
|
||||
old_memavl=memavl;
|
||||
if ((memavl=memavl/4*3) < MIN_SORT_MEMORY && old_memavl > MIN_SORT_MEMORY)
|
||||
memavl=MIN_SORT_MEMORY;
|
||||
if ((memavl= memavl/4*3) < MIN_SORT_BUFFER && old_memavl > MIN_SORT_BUFFER)
|
||||
memavl= MIN_SORT_BUFFER;
|
||||
}
|
||||
if (memavl < MIN_SORT_MEMORY)
|
||||
if (memavl < MIN_SORT_BUFFER)
|
||||
{
|
||||
mi_check_print_error(info->sort_info->param,"MyISAM sort buffer too small"); /* purecov: tested */
|
||||
goto err; /* purecov: tested */
|
||||
@ -348,12 +346,12 @@ pthread_handler_t thr_find_all_keys(void *arg)
|
||||
bzero((char*) &sort_param->unique, sizeof(sort_param->unique));
|
||||
sort_keys= (uchar **) NULL;
|
||||
|
||||
memavl= max(sort_param->sortbuff_size, MIN_SORT_MEMORY);
|
||||
memavl= max(sort_param->sortbuff_size, MIN_SORT_BUFFER);
|
||||
idx= (uint)sort_param->sort_info->max_records;
|
||||
sort_length= sort_param->key_length;
|
||||
maxbuffer= 1;
|
||||
|
||||
while (memavl >= MIN_SORT_MEMORY)
|
||||
while (memavl >= MIN_SORT_BUFFER)
|
||||
{
|
||||
if ((my_off_t) (idx+1)*(sort_length+sizeof(char*)) <=
|
||||
(my_off_t) memavl)
|
||||
@ -391,11 +389,11 @@ pthread_handler_t thr_find_all_keys(void *arg)
|
||||
break;
|
||||
}
|
||||
old_memavl= memavl;
|
||||
if ((memavl= memavl/4*3) < MIN_SORT_MEMORY &&
|
||||
old_memavl > MIN_SORT_MEMORY)
|
||||
memavl= MIN_SORT_MEMORY;
|
||||
if ((memavl= memavl / 4 * 3) < MIN_SORT_BUFFER &&
|
||||
old_memavl > MIN_SORT_BUFFER)
|
||||
memavl= MIN_SORT_BUFFER;
|
||||
}
|
||||
if (memavl < MIN_SORT_MEMORY)
|
||||
if (memavl < MIN_SORT_BUFFER)
|
||||
{
|
||||
mi_check_print_error(sort_param->sort_info->param,
|
||||
"MyISAM sort buffer too small");
|
||||
@ -564,7 +562,7 @@ int thr_write_keys(MI_SORT_PARAM *sort_param)
|
||||
if (!mergebuf)
|
||||
{
|
||||
length=param->sort_buffer_length;
|
||||
while (length >= MIN_SORT_MEMORY)
|
||||
while (length >= MIN_SORT_BUFFER)
|
||||
{
|
||||
if ((mergebuf= my_malloc(length, MYF(0))))
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user