mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Auto-merge from mysql-5.5-merge.
This commit is contained in:
@ -165,3 +165,15 @@ DROP TABLE t1;
|
||||
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug#55077: Assertion failed: width > 0 && to != ((void *)0), file .\dtoa.c
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a LONGBLOB, b DOUBLE);
|
||||
INSERT INTO t1 VALUES (NULL, 0), (NULL, 1);
|
||||
|
||||
SELECT IF(b, (SELECT a FROM t1 LIMIT 1), b) c FROM t1 GROUP BY c;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
@ -725,6 +725,16 @@ SELECT Polygon(123451,'');
|
||||
SELECT Polygon(1234512,'');
|
||||
SELECT Polygon(12345123,'');
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # BUG#51875: crash when loading data into geometry function polyfromwkb
|
||||
--echo #
|
||||
SET @a=0x00000000030000000100000000000000000000000000144000000000000014400000000000001840000000000000184000000000000014400000000000001440;
|
||||
SET @a=POLYFROMWKB(@a);
|
||||
SET @a=0x00000000030000000000000000000000000000000000144000000000000014400000000000001840000000000000184000000000000014400000000000001440;
|
||||
SET @a=POLYFROMWKB(@a);
|
||||
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
#
|
||||
|
@ -650,5 +650,26 @@ SET SESSION sql_safe_updates = 1;
|
||||
UPDATE IGNORE t1, t1 t1a SET t1.a = 1 WHERE t1a.a = 1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#54543: update ignore with incorrect subquery leads to assertion
|
||||
--echo # failure: inited==INDEX
|
||||
--echo #
|
||||
SET SESSION sql_safe_updates = 0;
|
||||
CREATE TABLE t1 ( a INT );
|
||||
INSERT INTO t1 VALUES (1), (2);
|
||||
|
||||
CREATE TABLE t2 ( a INT );
|
||||
INSERT INTO t2 VALUES (1), (2);
|
||||
|
||||
CREATE TABLE t3 ( a INT );
|
||||
INSERT INTO t3 VALUES (1), (2);
|
||||
|
||||
--echo # Should not crash
|
||||
UPDATE IGNORE
|
||||
( SELECT ( SELECT COUNT(*) FROM t1 GROUP BY a, @v ) a FROM t2 ) x, t3
|
||||
SET t3.a = 0;
|
||||
|
||||
DROP TABLE t1, t2, t3;
|
||||
SET SESSION sql_safe_updates = DEFAULT;
|
||||
|
||||
--echo end of tests
|
||||
|
@ -701,6 +701,16 @@ echo banana = $cat;
|
||||
let $cat=ba\\\$cat\\\$cat;
|
||||
echo Not a banana: $cat;
|
||||
|
||||
# Bug #55413 would cause this to fail
|
||||
let $escape= with\`some\"escaped\'quotes;
|
||||
echo $escape;
|
||||
|
||||
--let $escape= with\`some\"escaped\'quotes
|
||||
echo $escape;
|
||||
|
||||
# This only works with "--let" syntax
|
||||
--let $tick= single'tick`backtick
|
||||
echo $tick;
|
||||
|
||||
# Test illegal uses of let
|
||||
|
||||
|
@ -1467,6 +1467,31 @@ SELECT * FROM t1 FORCE INDEX FOR JOIN (a), t2 WHERE t1.a < 2 ORDER BY t1.a;
|
||||
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #50394: Regression in EXPLAIN with index scan, LIMIT, GROUP BY and
|
||||
--echo # ORDER BY computed col
|
||||
--echo #
|
||||
CREATE TABLE t1 ( a INT NOT NULL, b INT NOT NULL, KEY( a, b ) );
|
||||
|
||||
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5);
|
||||
INSERT INTO t1 SELECT a + 5, b + 5 FROM t1;
|
||||
|
||||
CREATE TABLE t2( a INT PRIMARY KEY, b INT );
|
||||
|
||||
INSERT INTO t2 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5);
|
||||
INSERT INTO t2 SELECT a + 5, b + 5 FROM t2;
|
||||
|
||||
EXPLAIN
|
||||
SELECT count(*) AS c, t1.a
|
||||
FROM t1 JOIN t2 ON t1.b = t2.a
|
||||
WHERE t2.b = 1
|
||||
GROUP BY t1.a
|
||||
ORDER by c
|
||||
LIMIT 2;
|
||||
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
|
||||
|
@ -14,6 +14,34 @@
|
||||
drop table if exists t1, t2;
|
||||
--enable_warnings
|
||||
|
||||
--echo #
|
||||
--echo # Bug#55458: Partitioned MyISAM table gets crashed by multi-table update
|
||||
--echo #
|
||||
CREATE TABLE t1 (
|
||||
`id` int NOT NULL,
|
||||
`user_num` int DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM CHARSET=latin1;
|
||||
INSERT INTO t1 VALUES (1,8601);
|
||||
INSERT INTO t1 VALUES (2,8601);
|
||||
INSERT INTO t1 VALUES (3,8601);
|
||||
INSERT INTO t1 VALUES (4,8601);
|
||||
CREATE TABLE t2 (
|
||||
`id` int(11) NOT NULL,
|
||||
`user_num` int DEFAULT NULL,
|
||||
`name` varchar(64) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM CHARSET=latin1
|
||||
PARTITION BY HASH (id)
|
||||
PARTITIONS 2;
|
||||
INSERT INTO t2 VALUES (1,8601,'John');
|
||||
INSERT INTO t2 VALUES (2,8601,'JS');
|
||||
INSERT INTO t2 VALUES (3,8601,'John S');
|
||||
|
||||
UPDATE t1, t2 SET t2.name = 'John Smith' WHERE t1.user_num = t2.user_num;
|
||||
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
--echo # Bug#39338: Fieldnames in
|
||||
--echo # INFORMATIONSCHEMA.PARTITIONS.PARTITION_EXPRESSION become unescaped
|
||||
--echo # NOTE: the partition expression is saved as a string, so changing from
|
||||
|
@ -8,6 +8,30 @@
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
--enable_warnings
|
||||
|
||||
--echo #
|
||||
--echo # Bug#53806: Wrong estimates for range query in partitioned MyISAM table
|
||||
--echo # Bug#46754: 'rows' field doesn't reflect partition pruning
|
||||
--echo #
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY)
|
||||
PARTITION BY RANGE (a) (
|
||||
PARTITION p0 VALUES LESS THAN (1),
|
||||
PARTITION p1 VALUES LESS THAN (2),
|
||||
PARTITION p2 VALUES LESS THAN (3),
|
||||
PARTITION p3 VALUES LESS THAN (4),
|
||||
PARTITION p4 VALUES LESS THAN (5),
|
||||
PARTITION p5 VALUES LESS THAN (6),
|
||||
PARTITION max VALUES LESS THAN MAXVALUE);
|
||||
|
||||
INSERT INTO t1 VALUES (-1),(0),(1),(2),(3),(4),(5),(6),(7),(8);
|
||||
|
||||
--replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 11 #
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 1;
|
||||
--replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 11 #
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a < 7;
|
||||
--replace_column 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 11 #
|
||||
EXPLAIN PARTITIONS SELECT * FROM t1 WHERE a <= 1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#49742: Partition Pruning not working correctly for RANGE
|
||||
--echo #
|
||||
|
@ -266,3 +266,22 @@ SELECT 1 FROM t1 WHERE ROW(a, b) >=
|
||||
ROW('1', (SELECT 1 FROM t1 WHERE a > 1234));
|
||||
--enable_warnings
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #54190: Comparison to row subquery produces incorrect result
|
||||
--echo #
|
||||
|
||||
SELECT ROW(1,2) = (SELECT 1,2 FROM DUAL WHERE 1 = 0);
|
||||
SELECT ROW(1,2) = (SELECT 1,3 FROM DUAL WHERE 1 = 0);
|
||||
|
||||
CREATE TABLE t1 (i INT);
|
||||
INSERT INTO t1 () VALUES (1), (2), (3);
|
||||
|
||||
SELECT ROW(1,2) = (SELECT 1,2 FROM t1 WHERE 1 = 0);
|
||||
SELECT ROW(1,2) = (SELECT 1,3 FROM t1 WHERE 1 = 0);
|
||||
SELECT i FROM t1 WHERE ROW(1,2) = (SELECT 1,2 FROM DUAL WHERE 1 = 0);
|
||||
SELECT i FROM t1 WHERE ROW(1,2) = (SELECT 1,3 FROM DUAL WHERE 1 = 0);
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
@ -3772,11 +3772,6 @@ SELECT 1 FROM t1 WHERE a <> 1 AND NOT
|
||||
ROW(1,a) <=> ROW(1,(SELECT 1 FROM t1))
|
||||
INTO @var0;
|
||||
|
||||
# Query correctly return 2 rows since comparison a <=> fisrt_subquery is
|
||||
# always false, thus the second query is never executed.
|
||||
SELECT 1 FROM t1 WHERE a <> 1 AND NOT
|
||||
ROW(a,a) <=> ROW((SELECT 1 FROM t1 WHERE 1=2),(SELECT 1 FROM t1));
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
|
@ -222,3 +222,33 @@ SHOW WARNINGS;
|
||||
--echo # Restore the procs_priv table
|
||||
RENAME TABLE procs_priv_backup TO mysql.procs_priv;
|
||||
FLUSH TABLE mysql.procs_priv;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug #56137 "Assertion `thd->lock == 0' failed on upgrading from
|
||||
--echo # 5.1.50 to 5.5.6".
|
||||
--echo #
|
||||
--disable_warnings
|
||||
drop database if exists mysqltest;
|
||||
--enable_warnings
|
||||
--echo # Backup mysql.proc.
|
||||
flush table mysql.proc;
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
--copy_file $MYSQLD_DATADIR/mysql/proc.frm $MYSQLTEST_VARDIR/tmp/proc.frm
|
||||
--copy_file $MYSQLD_DATADIR/mysql/proc.MYD $MYSQLTEST_VARDIR/tmp/proc.MYD
|
||||
--copy_file $MYSQLD_DATADIR/mysql/proc.MYI $MYSQLTEST_VARDIR/tmp/proc.MYI
|
||||
|
||||
create database mysqltest;
|
||||
--echo # Corrupt mysql.proc to make it unusable by current version of server.
|
||||
alter table mysql.proc drop column type;
|
||||
--echo # The below statement should not cause assertion failure.
|
||||
drop database mysqltest;
|
||||
|
||||
--echo # Restore mysql.proc.
|
||||
drop table mysql.proc;
|
||||
--copy_file $MYSQLTEST_VARDIR/tmp/proc.frm $MYSQLD_DATADIR/mysql/proc.frm
|
||||
--copy_file $MYSQLTEST_VARDIR/tmp/proc.MYD $MYSQLD_DATADIR/mysql/proc.MYD
|
||||
--copy_file $MYSQLTEST_VARDIR/tmp/proc.MYI $MYSQLD_DATADIR/mysql/proc.MYI
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/proc.frm
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/proc.MYD
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/proc.MYI
|
||||
|
@ -74,6 +74,68 @@ CREATE VIEW v1 AS SELECT 1 LIKE ( 1 IN ( SELECT 1 ) );
|
||||
CREATE VIEW v2 AS SELECT 1 LIKE '%' ESCAPE ( 1 IN ( SELECT 1 ) );
|
||||
DROP VIEW v1, v2;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#51070: Query with a NOT IN subquery predicate returns a wrong
|
||||
--echo # result set
|
||||
--echo #
|
||||
CREATE TABLE t1 ( a INT, b INT );
|
||||
INSERT INTO t1 VALUES ( 1, NULL ), ( 2, NULL );
|
||||
|
||||
CREATE TABLE t2 ( c INT, d INT );
|
||||
INSERT INTO t2 VALUES ( NULL, 3 ), ( NULL, 4 );
|
||||
|
||||
CREATE TABLE t3 ( e INT, f INT );
|
||||
INSERT INTO t3 VALUES ( NULL, NULL ), ( NULL, NULL );
|
||||
|
||||
CREATE TABLE t4 ( a INT );
|
||||
INSERT INTO t4 VALUES (1), (2), (3);
|
||||
|
||||
CREATE TABLE t5 ( a INT );
|
||||
INSERT INTO t5 VALUES (NULL), (2);
|
||||
|
||||
--replace_column 1 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x
|
||||
EXPLAIN
|
||||
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT c, d FROM t2 );
|
||||
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT c, d FROM t2 );
|
||||
|
||||
EXPLAIN
|
||||
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT c, d FROM t2 ) IS NULL;
|
||||
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT c, d FROM t2 ) IS NULL;
|
||||
SELECT * FROM t1 WHERE ( a, b ) IN ( SELECT c, d FROM t2 ) IS NULL;
|
||||
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT c, d FROM t2 ) IS UNKNOWN;
|
||||
SELECT * FROM t1 WHERE (( a, b ) NOT IN ( SELECT c, d FROM t2 )) IS UNKNOWN;
|
||||
|
||||
SELECT * FROM t1 WHERE 1 = 1 AND ( a, b ) NOT IN ( SELECT c, d FROM t2 );
|
||||
|
||||
--replace_column 1 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x
|
||||
EXPLAIN
|
||||
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT e, f FROM t3 );
|
||||
SELECT * FROM t1 WHERE ( a, b ) NOT IN ( SELECT e, f FROM t3 );
|
||||
|
||||
--replace_column 1 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x
|
||||
EXPLAIN
|
||||
SELECT * FROM t2 WHERE ( c, d ) NOT IN ( SELECT a, b FROM t1 );
|
||||
SELECT * FROM t2 WHERE ( c, d ) NOT IN ( SELECT a, b FROM t1 );
|
||||
|
||||
--replace_column 1 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x
|
||||
EXPLAIN
|
||||
SELECT * FROM t3 WHERE ( e, f ) NOT IN ( SELECT c, d FROM t2 );
|
||||
SELECT * FROM t3 WHERE ( e, f ) NOT IN ( SELECT c, d FROM t2 );
|
||||
|
||||
--replace_column 1 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x
|
||||
EXPLAIN
|
||||
SELECT * FROM t2 WHERE ( c, d ) NOT IN ( SELECT e, f FROM t3 );
|
||||
SELECT * FROM t2 WHERE ( c, d ) NOT IN ( SELECT e, f FROM t3 );
|
||||
|
||||
SELECT * FROM t1 WHERE ( a, b ) NOT IN
|
||||
( SELECT c, d FROM t2 WHERE c = 1 AND c <> 1 );
|
||||
|
||||
SELECT * FROM t1 WHERE b NOT IN ( SELECT c FROM t2 WHERE c = 1 );
|
||||
|
||||
SELECT * FROM t1 WHERE NULL NOT IN ( SELECT c FROM t2 WHERE c = 1 AND c <> 1 );
|
||||
|
||||
DROP TABLE t1, t2, t3, t4, t5;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # End of 5.1 tests.
|
||||
|
@ -932,4 +932,52 @@ disconnect con1;
|
||||
DROP USER 'no_rights'@'localhost';
|
||||
DROP DATABASE db1;
|
||||
|
||||
#
|
||||
# Bug#55421 Protocol::end_statement(): Assertion `0' on multi-table UPDATE IGNORE
|
||||
# To reproduce a crash we need to provoke a trigger execution with
|
||||
# the following conditions:
|
||||
# - active SELECT statement during trigger execution
|
||||
# (i.e. LEX::current_select != NULL);
|
||||
# - IGNORE option (i.e. LEX::current_select->no_error == TRUE);
|
||||
--disable_warnings
|
||||
DROP DATABASE IF EXISTS mysqltest_db1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE DATABASE mysqltest_db1;
|
||||
USE mysqltest_db1;
|
||||
|
||||
GRANT ALL ON mysqltest_db1.* TO mysqltest_u1@localhost;
|
||||
|
||||
--connect(con1,localhost,mysqltest_u1,,mysqltest_db1)
|
||||
|
||||
CREATE TABLE t1 (
|
||||
a1 int,
|
||||
a2 int
|
||||
);
|
||||
INSERT INTO t1 VALUES (1, 20);
|
||||
|
||||
CREATE TRIGGER mysqltest_db1.upd_t1
|
||||
BEFORE UPDATE ON t1 FOR EACH ROW SET new.a2 = 200;
|
||||
|
||||
CREATE TABLE t2 (
|
||||
a1 int
|
||||
);
|
||||
|
||||
INSERT INTO t2 VALUES (2);
|
||||
|
||||
--connection default
|
||||
|
||||
REVOKE ALL PRIVILEGES, GRANT OPTION FROM mysqltest_u1@localhost;
|
||||
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
UPDATE IGNORE t1, t2 SET t1.a1 = 2, t2.a1 = 3 WHERE t1.a1 = 1 AND t2.a1 = 2;
|
||||
# Cleanup
|
||||
|
||||
DROP DATABASE mysqltest_db1;
|
||||
DROP USER mysqltest_u1@localhost;
|
||||
|
||||
--disconnect con1
|
||||
--connection default
|
||||
USE test;
|
||||
|
||||
--echo End of 5.1 tests.
|
||||
|
@ -347,6 +347,23 @@ DROP TABLE t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
--echo #
|
||||
--echo # Bug #55779: select does not work properly in mysql server
|
||||
--echo # Version "5.1.42 SUSE MySQL RPM"
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a TIMESTAMP, KEY (a));
|
||||
|
||||
INSERT INTO t1 VALUES ('2000-01-01 00:00:00'), ('2000-01-01 00:00:00'),
|
||||
('2000-01-01 00:00:01'), ('2000-01-01 00:00:01');
|
||||
|
||||
SELECT a FROM t1 WHERE a >= 20000101000000;
|
||||
SELECT a FROM t1 WHERE a >= '20000101000000';
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
--echo
|
||||
--echo Bug#50888 valgrind warnings in Field_timestamp::val_str
|
||||
--echo
|
||||
|
Reference in New Issue
Block a user