mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Manual merge from mysql-trunk-merge.
Conflicts: - extra/comp_err.c - mysql-test/collections/default.experimental - mysql-test/r/archive.result - mysql-test/r/select.result - mysql-test/suite/binlog/r/binlog_unsafe.result - mysql-test/suite/binlog/t/binlog_unsafe.test - mysql-test/suite/rpl/t/disabled.def - mysql-test/t/archive.test - mysql-test/t/select.test - sql/item.cc - sql/item.h - sql/item_timefunc.cc - sql/sql_base.cc - sql/sql_delete.cc - sql/sql_load.cc - sql/sql_partition.cc - sql/sql_table.cc - storage/innobase/handler/ha_innodb.cc - vio/vio.c
This commit is contained in:
@ -1635,3 +1635,24 @@ CREATE TABLE t2(id INT NOT NULL AUTO_INCREMENT, name VARCHAR(128) NOT NULL, PRIM
|
||||
INSERT INTO t2 VALUES(NULL,'b'),(NULL,'b');
|
||||
SELECT t1.id, t2.id, t1.name, t2.name FROM t1,t2 WHERE t1.id = t2.id;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
#
|
||||
# BUG#47012 archive tables are not upgradeable, and server crashes on any access
|
||||
#
|
||||
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
||||
copy_file std_data/bug47012.frm $MYSQLD_DATADIR/test/t1.frm;
|
||||
copy_file std_data/bug47012.ARZ $MYSQLD_DATADIR/test/t1.ARZ;
|
||||
copy_file std_data/bug47012.ARM $MYSQLD_DATADIR/test/t1.ARM;
|
||||
|
||||
--error ER_TABLE_NEEDS_UPGRADE
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--error ER_TABLE_NEEDS_UPGRADE
|
||||
SELECT * FROM t1;
|
||||
|
||||
--error ER_TABLE_NEEDS_UPGRADE
|
||||
INSERT INTO t1 (col1, col2) VALUES (1, "value");
|
||||
|
||||
REPAIR TABLE t1;
|
||||
DROP TABLE t1;
|
||||
remove_file $MYSQLD_DATADIR/test/t1.ARM;
|
||||
|
1
mysql-test/t/bug47671-master.opt
Normal file
1
mysql-test/t/bug47671-master.opt
Normal file
@ -0,0 +1 @@
|
||||
--default-character-set=utf8 --skip-character-set-client-handshake
|
9
mysql-test/t/bug47671.test
Normal file
9
mysql-test/t/bug47671.test
Normal file
@ -0,0 +1,9 @@
|
||||
# Embedded server doesn't support external clients
|
||||
--source include/not_embedded.inc
|
||||
|
||||
--echo #
|
||||
--echo # Bug#47671 - wrong character-set after upgrade from 5.1.34 to 5.1.39
|
||||
--echo #
|
||||
--echo # Extract only charset information from 'status' command output using regex
|
||||
--replace_regex /.*mysql.*// /Connection.*// /Current.*// /SSL.*// /Using.*// /Server version.*// /Protocol.*// /UNIX.*// /Uptime.*// /Threads.*// /TCP.*//
|
||||
--exec $MYSQL -e "status";
|
@ -328,6 +328,30 @@ drop table t1;
|
||||
|
||||
set global low_priority_updates = @old_delayed_updates;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug #47682 strange behaviour of INSERT DELAYED
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 (f1 integer);
|
||||
CREATE TABLE t2 (f1 integer);
|
||||
|
||||
FLUSH TABLES WITH READ LOCK;
|
||||
LOCK TABLES t1 READ;
|
||||
|
||||
# ER_CANT_UPDATE_WITH_READLOCK with normal execution
|
||||
# ER_TABLE_NOT_LOCKED when executed as prepared statement
|
||||
--error ER_CANT_UPDATE_WITH_READLOCK, ER_TABLE_NOT_LOCKED
|
||||
INSERT DELAYED INTO t2 VALUES (1);
|
||||
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
|
||||
|
@ -489,3 +489,25 @@ SELECT * FROM t2;
|
||||
SELECT * FROM t3;
|
||||
|
||||
DROP TABLE t1, t2, t3;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #46425 crash in Diagnostics_area::set_ok_status,
|
||||
--echo # empty statement, DELETE IGNORE
|
||||
--echo #
|
||||
|
||||
CREATE table t1 (i INTEGER);
|
||||
|
||||
INSERT INTO t1 VALUES (1);
|
||||
|
||||
--delimiter |
|
||||
|
||||
CREATE TRIGGER tr1 AFTER DELETE ON t1 FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO t1 SELECT * FROM t1 AS A;
|
||||
END |
|
||||
|
||||
--delimiter ;
|
||||
--error ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG
|
||||
DELETE IGNORE FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
@ -11,7 +11,6 @@
|
||||
##############################################################################
|
||||
kill : Bug#37780 2008-12-03 HHunger need some changes to be robust enough for pushbuild.
|
||||
query_cache_28249 : Bug#43861 2009-03-25 main.query_cache_28249 fails sporadically
|
||||
partition_innodb_builtin : Bug#32430 2009-09-25 mattiasj Waiting for push of Innodb changes
|
||||
partition_innodb_plugin : Bug#32430 2009-09-25 mattiasj Waiting for push of Innodb changes
|
||||
innodb-autoinc : Bug#48482 2009-11-02 svoj innodb-autoinc.test fails with results difference
|
||||
rpl_killed_ddl : Bug#45520: rpl_killed_ddl fails sporadically in pb2
|
||||
innodb-autoinc : Bug#49267 2009-12-02 test fails on windows because of different case mode
|
||||
innodb : Bug#49396 2009-12-03 test fails in embedded mode
|
||||
|
@ -493,3 +493,44 @@ PREPARE s FROM
|
||||
EXECUTE s;
|
||||
DEALLOCATE PREPARE s;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #47930: MATCH IN BOOLEAN MODE returns too many results
|
||||
--echo # inside subquery
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a int);
|
||||
INSERT INTO t1 VALUES (1), (2);
|
||||
|
||||
CREATE TABLE t2 (a int, b2 char(10), FULLTEXT KEY b2 (b2));
|
||||
INSERT INTO t2 VALUES (1,'Scargill');
|
||||
|
||||
CREATE TABLE t3 (a int, b int);
|
||||
INSERT INTO t3 VALUES (1,1), (2,1);
|
||||
|
||||
--echo # t2 should use full text index
|
||||
EXPLAIN
|
||||
SELECT count(*) FROM t1 WHERE
|
||||
not exists(
|
||||
SELECT 1 FROM t2, t3
|
||||
WHERE t3.a=t1.a AND MATCH(b2) AGAINST('scargill' IN BOOLEAN MODE)
|
||||
);
|
||||
|
||||
--echo # should return 0
|
||||
SELECT count(*) FROM t1 WHERE
|
||||
not exists(
|
||||
SELECT 1 FROM t2, t3
|
||||
WHERE t3.a=t1.a AND MATCH(b2) AGAINST('scargill' IN BOOLEAN MODE)
|
||||
);
|
||||
|
||||
--echo # should return 0
|
||||
SELECT count(*) FROM t1 WHERE
|
||||
not exists(
|
||||
SELECT 1 FROM t2 IGNORE INDEX (b2), t3
|
||||
WHERE t3.a=t1.a AND MATCH(b2) AGAINST('scargill' IN BOOLEAN MODE)
|
||||
);
|
||||
|
||||
DROP TABLE t1,t2,t3;
|
||||
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
@ -1053,4 +1053,35 @@ ORDER BY max;
|
||||
--echo #
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#43668: Wrong comparison and MIN/MAX for YEAR(2)
|
||||
--echo #
|
||||
create table t1 (f1 year(2), f2 year(4), f3 date, f4 datetime);
|
||||
insert into t1 values
|
||||
(98,1998,19980101,"1998-01-01 00:00:00"),
|
||||
(00,2000,20000101,"2000-01-01 00:00:01"),
|
||||
(02,2002,20020101,"2002-01-01 23:59:59"),
|
||||
(60,2060,20600101,"2060-01-01 11:11:11"),
|
||||
(70,1970,19700101,"1970-11-11 22:22:22"),
|
||||
(NULL,NULL,NULL,NULL);
|
||||
select min(f1),max(f1) from t1;
|
||||
select min(f2),max(f2) from t1;
|
||||
select min(f3),max(f3) from t1;
|
||||
select min(f4),max(f4) from t1;
|
||||
select a.f1 as a, b.f1 as b, a.f1 > b.f1 as gt,
|
||||
a.f1 < b.f1 as lt, a.f1<=>b.f1 as eq
|
||||
from t1 a, t1 b;
|
||||
select a.f1 as a, b.f2 as b, a.f1 > b.f2 as gt,
|
||||
a.f1 < b.f2 as lt, a.f1<=>b.f2 as eq
|
||||
from t1 a, t1 b;
|
||||
select a.f1 as a, b.f3 as b, a.f1 > b.f3 as gt,
|
||||
a.f1 < b.f3 as lt, a.f1<=>b.f3 as eq
|
||||
from t1 a, t1 b;
|
||||
select a.f1 as a, b.f4 as b, a.f1 > b.f4 as gt,
|
||||
a.f1 < b.f4 as lt, a.f1<=>b.f4 as eq
|
||||
from t1 a, t1 b;
|
||||
select *, f1 = f2 from t1;
|
||||
drop table t1;
|
||||
--echo #
|
||||
--echo End of 5.1 tests
|
||||
|
||||
|
@ -632,5 +632,40 @@ DROP DATABASE db1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
#
|
||||
# Bug #48319: Server crashes on "GRANT/REVOKE ... TO CURRENT_USER"
|
||||
#
|
||||
|
||||
# work out who we are.
|
||||
USE mysql;
|
||||
SELECT LEFT(CURRENT_USER(),INSTR(CURRENT_USER(),'@')-1) INTO @u;
|
||||
SELECT MID(CURRENT_USER(),INSTR(CURRENT_USER(),'@')+1) INTO @h;
|
||||
SELECT password FROM user WHERE user=@u AND host=@h INTO @pwd;
|
||||
|
||||
# show current privs.
|
||||
SELECT user,host,password,insert_priv FROM user WHERE user=@u AND host=@h;
|
||||
|
||||
# toggle INSERT
|
||||
UPDATE user SET insert_priv='N' WHERE user=@u AND host=@h;
|
||||
SELECT user,host,password,insert_priv FROM user WHERE user=@u AND host=@h;
|
||||
|
||||
# show that GRANT ... TO CURRENT_USER() no longer crashes
|
||||
GRANT INSERT ON *.* TO CURRENT_USER();
|
||||
SELECT user,host,password,insert_priv FROM user WHERE user=@u AND host=@h;
|
||||
UPDATE user SET insert_priv='N' WHERE user=@u AND host=@h;
|
||||
|
||||
# show that GRANT ... TO CURRENT_USER() IDENTIFIED BY ... works now
|
||||
GRANT INSERT ON *.* TO CURRENT_USER() IDENTIFIED BY 'keksdose';
|
||||
SELECT user,host,password,insert_priv FROM user WHERE user=@u AND host=@h;
|
||||
|
||||
UPDATE user SET password=@pwd WHERE user=@u AND host=@h;
|
||||
SELECT user,host,password,insert_priv FROM user WHERE user=@u AND host=@h;
|
||||
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
USE test;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
# Wait till we reached the initial number of concurrent sessions
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
@ -1016,6 +1016,18 @@ SELECT a, MAX(b) FROM t WHERE b > 0 AND b < 2 GROUP BY a;
|
||||
|
||||
DROP TABLE t;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #48472: Loose index scan inappropriately chosen for some WHERE
|
||||
--echo # conditions
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t (a INT, b INT, INDEX (a,b));
|
||||
INSERT INTO t VALUES (2,0), (2,0), (2,1), (2,1);
|
||||
INSERT INTO t SELECT * FROM t;
|
||||
|
||||
SELECT a, MAX(b) FROM t WHERE 0=b+0 GROUP BY a;
|
||||
|
||||
DROP TABLE t;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
|
@ -1 +1 @@
|
||||
--binlog_cache_size=32768 --innodb_lock_wait_timeout=1
|
||||
--binlog_cache_size=32768 --loose_innodb_lock_wait_timeout=1
|
||||
|
@ -1 +1 @@
|
||||
--innodb_lock_wait_timeout=2
|
||||
--loose-innodb_lock_wait_timeout=2
|
||||
|
@ -15,8 +15,6 @@
|
||||
|
||||
-- source include/have_innodb.inc
|
||||
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
|
||||
# Save the original values of some variables in order to be able to
|
||||
# estimate how much they have changed during the tests. Previously this
|
||||
# test assumed that e.g. rows_deleted is 0 here and after deleting 23
|
||||
@ -1187,6 +1185,8 @@ drop table t2;
|
||||
|
||||
# Test error handling
|
||||
|
||||
# Embedded server doesn't chdir to data directory
|
||||
--replace_result $MYSQLTEST_VARDIR . master-data/ ''
|
||||
--error ER_WRONG_FK_DEF
|
||||
create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id2,id) references t1 (id)) engine = innodb;
|
||||
|
||||
@ -1343,7 +1343,6 @@ show variables like "innodb_sync_spin_loops";
|
||||
set global innodb_sync_spin_loops=@innodb_sync_spin_loops_orig;
|
||||
|
||||
# Test for innodb_thread_concurrency variable
|
||||
SET @old_innodb_thread_concurrency= @@global.innodb_thread_concurrency;
|
||||
show variables like "innodb_thread_concurrency";
|
||||
set global innodb_thread_concurrency=1001;
|
||||
show variables like "innodb_thread_concurrency";
|
||||
@ -1351,7 +1350,6 @@ set global innodb_thread_concurrency=0;
|
||||
show variables like "innodb_thread_concurrency";
|
||||
set global innodb_thread_concurrency=16;
|
||||
show variables like "innodb_thread_concurrency";
|
||||
SET @@global.innodb_thread_concurrency= @old_innodb_thread_concurrency;
|
||||
|
||||
# Test for innodb_concurrency_tickets variable
|
||||
show variables like "innodb_concurrency_tickets";
|
||||
@ -1383,6 +1381,8 @@ source include/varchar.inc;
|
||||
# Some errors/warnings on create
|
||||
#
|
||||
|
||||
# Embedded server doesn't chdir to data directory
|
||||
--replace_result $MYSQLTEST_VARDIR . master-data/ ''
|
||||
create table t1 (v varchar(65530), key(v));
|
||||
drop table t1;
|
||||
create table t1 (v varchar(65536));
|
||||
@ -1656,6 +1656,8 @@ disconnect b;
|
||||
|
||||
set foreign_key_checks=0;
|
||||
create table t2 (a int primary key, b int, foreign key (b) references t1(a)) engine = innodb;
|
||||
# Embedded server doesn't chdir to data directory
|
||||
--replace_result $MYSQLTEST_VARDIR . master-data/ ''
|
||||
-- error 1005
|
||||
create table t1(a char(10) primary key, b varchar(20)) engine = innodb;
|
||||
set foreign_key_checks=1;
|
||||
@ -1666,6 +1668,8 @@ drop table t2;
|
||||
|
||||
set foreign_key_checks=0;
|
||||
create table t1(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=latin1;
|
||||
# Embedded server doesn't chdir to data directory
|
||||
--replace_result $MYSQLTEST_VARDIR . master-data/ ''
|
||||
-- error 1005
|
||||
create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=utf8;
|
||||
set foreign_key_checks=1;
|
||||
@ -1695,7 +1699,8 @@ drop table t2,t1;
|
||||
set foreign_key_checks=0;
|
||||
create table t2 (a varchar(10), foreign key (a) references t1(a)) engine = innodb DEFAULT CHARSET=latin1;
|
||||
create table t3(a varchar(10) primary key) engine = innodb DEFAULT CHARSET=utf8;
|
||||
--replace_result $MYSQLD_DATADIR ./
|
||||
# Embedded server doesn't chdir to data directory
|
||||
--replace_result $MYSQLTEST_VARDIR . master-data/ ''
|
||||
-- error 1025
|
||||
rename table t3 to t1;
|
||||
set foreign_key_checks=1;
|
||||
@ -2259,7 +2264,7 @@ disconnect j;
|
||||
drop table t1, t2, t3, t5, t6, t8, t9;
|
||||
|
||||
# bug 18934, "InnoDB crashes when table uses column names like DB_ROW_ID"
|
||||
--error 1005
|
||||
--error ER_WRONG_COLUMN_NAME
|
||||
CREATE TABLE t1 (DB_ROW_ID int) engine=innodb;
|
||||
|
||||
#
|
||||
@ -2334,7 +2339,8 @@ INSERT INTO t2 VALUES (1);
|
||||
ALTER TABLE t2 ADD FOREIGN KEY (a) REFERENCES t1 (a) ON DELETE SET NULL;
|
||||
# mysqltest first does replace_regex, then replace_result
|
||||
--replace_regex /'[^']*test\/#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||
--replace_result $MYSQLD_DATADIR ./
|
||||
# Embedded server doesn't chdir to data directory
|
||||
--replace_result $MYSQLTEST_VARDIR . master-data/ ''
|
||||
--error 1025
|
||||
ALTER TABLE t2 MODIFY a INT NOT NULL;
|
||||
DELETE FROM t1;
|
||||
|
@ -22,7 +22,6 @@ CREATE TABLE bug34300 (
|
||||
|
||||
INSERT INTO bug34300 VALUES ('xxx', repeat('a', 8459264), 'zzz');
|
||||
|
||||
-- enable_query_log
|
||||
-- enable_result_log
|
||||
|
||||
SELECT f4, f8 FROM bug34300;
|
||||
@ -32,8 +31,4 @@ ALTER TABLE bug34300 ADD COLUMN (f10 INT);
|
||||
SELECT f4, f8 FROM bug34300;
|
||||
|
||||
DROP TABLE bug34300;
|
||||
|
||||
EVAL SET @@global.max_allowed_packet=$max_packet;
|
||||
disconnect newconn;
|
||||
connection default;
|
||||
SET @@global.max_allowed_packet=default;
|
||||
|
@ -1 +1 @@
|
||||
--innodb_commit_concurrency=1
|
||||
--loose_innodb_commit_concurrency=1
|
||||
|
@ -6,16 +6,12 @@
|
||||
--source include/have_innodb.inc
|
||||
|
||||
# This create table operation should fail.
|
||||
--error ER_CANT_CREATE_TABLE
|
||||
--error ER_WRONG_COLUMN_NAME
|
||||
create table bug44369 (DB_ROW_ID int) engine=innodb;
|
||||
|
||||
# This create should fail as well
|
||||
--error ER_CANT_CREATE_TABLE
|
||||
--error ER_WRONG_COLUMN_NAME
|
||||
create table bug44369 (db_row_id int) engine=innodb;
|
||||
|
||||
show warnings;
|
||||
|
||||
--error ER_CANT_CREATE_TABLE
|
||||
--error ER_WRONG_COLUMN_NAME
|
||||
create table bug44369 (db_TRX_Id int) engine=innodb;
|
||||
|
||||
show warnings;
|
||||
|
@ -70,6 +70,40 @@ commit;
|
||||
set autocommit=default;
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #37183 insert ignore into .. select ... hangs
|
||||
--echo # after deadlock was encountered
|
||||
--echo #
|
||||
connect (con1,localhost,root,,);
|
||||
create table t1(id int primary key,v int)engine=innodb;
|
||||
insert into t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7);
|
||||
create table t2 like t1;
|
||||
|
||||
--connection con1
|
||||
begin;
|
||||
update t1 set v=id*2 where id=1;
|
||||
|
||||
--connection default
|
||||
begin;
|
||||
update t1 set v=id*2 where id=2;
|
||||
|
||||
--connection con1
|
||||
--error 1205
|
||||
update t1 set v=id*2 where id=2;
|
||||
|
||||
--connection default
|
||||
--error 1205
|
||||
insert ignore into t2 select * from t1 where id=1;
|
||||
rollback;
|
||||
|
||||
--connection con1
|
||||
rollback;
|
||||
|
||||
--connection default
|
||||
disconnect con1;
|
||||
drop table t1, t2;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug#41756 Strange error messages about locks from InnoDB
|
||||
--echo #
|
||||
|
@ -489,6 +489,52 @@ EXPLAIN SELECT * FROM t1 WHERE a = 'TEST' AND
|
||||
c >= '2009-10-09 00:00:00.001' AND c <= '2009-10-09 00:00:00.00';
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #46175: NULL read_view and consistent read assertion
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1(a CHAR(13),KEY(a)) ENGINE=innodb;
|
||||
CREATE TABLE t2(b DATETIME,KEY(b)) ENGINE=innodb;
|
||||
INSERT INTO t1 VALUES (),();
|
||||
INSERT INTO t2 VALUES (),();
|
||||
CREATE OR REPLACE VIEW v1 AS SELECT 1 FROM t2
|
||||
WHERE b =(SELECT a FROM t1 LIMIT 1);
|
||||
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
CONNECT (con1, localhost, root,,);
|
||||
--enable_query_log
|
||||
--enable_result_log
|
||||
CONNECTION default;
|
||||
|
||||
DELIMITER |;
|
||||
CREATE PROCEDURE p1(num INT)
|
||||
BEGIN
|
||||
DECLARE i INT DEFAULT 0;
|
||||
REPEAT
|
||||
SHOW CREATE VIEW v1;
|
||||
SET i:=i+1;
|
||||
UNTIL i>num END REPEAT;
|
||||
END|
|
||||
DELIMITER ;|
|
||||
|
||||
--echo # Should not crash
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
--send CALL p1(1000)
|
||||
CONNECTION con1;
|
||||
--echo # Should not crash
|
||||
CALL p1(1000);
|
||||
|
||||
CONNECTION default;
|
||||
--reap
|
||||
--enable_query_log
|
||||
--enable_result_log
|
||||
|
||||
DISCONNECT con1;
|
||||
DROP PROCEDURE p1;
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
|
@ -398,10 +398,16 @@ drop tables t1, t2;
|
||||
#
|
||||
# Bug #27884: mysql --html does not quote HTML special characters in output
|
||||
#
|
||||
--exec $MYSQL --html test -e "select '< & >' as '<'"
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/bug27884.sql
|
||||
SELECT '< & >' AS `<`;
|
||||
EOF
|
||||
--exec $MYSQL --html test < $MYSQLTEST_VARDIR/tmp/bug27884.sql
|
||||
|
||||
remove_file $MYSQLTEST_VARDIR/tmp/bug27884.sql;
|
||||
|
||||
|
||||
#
|
||||
# Bug #27884: mysql client + null byte
|
||||
# Bug #28203: mysql client + null byte
|
||||
#
|
||||
create table t1 (a char(5));
|
||||
insert into t1 values ('\0b\0');
|
||||
@ -414,5 +420,5 @@ insert into t1 values ('\0b\0');
|
||||
--exec $MYSQL --xml test -e "select a from t1"
|
||||
drop table t1;
|
||||
|
||||
--echo
|
||||
--echo End of tests
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -390,4 +390,17 @@ SELECT DISTINCT b FROM t1, t2 GROUP BY a, b WITH ROLLUP;
|
||||
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #48475: DISTINCT is ignored with GROUP BY WITH ROLLUP
|
||||
--echo # and only const tables
|
||||
|
||||
CREATE TABLE t1 (a INT);
|
||||
CREATE TABLE t2 (b INT);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (1);
|
||||
|
||||
SELECT DISTINCT b FROM t1, t2 GROUP BY a, b WITH ROLLUP;
|
||||
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -867,6 +867,31 @@ SELECT
|
||||
DROP TABLE t1, t2, t3;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug #42760: Select doesn't return desired results when we have null
|
||||
--echo # values
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (
|
||||
a INT,
|
||||
c INT,
|
||||
UNIQUE KEY a_c (a,c),
|
||||
KEY (a));
|
||||
|
||||
INSERT INTO t1 VALUES (1, 10), (2, NULL);
|
||||
|
||||
--echo # Must use ref-or-null on the a_c index
|
||||
EXPLAIN
|
||||
SELECT 1 AS col FROM t1 WHERE a=2 AND (c=10 OR c IS NULL) ORDER BY c;
|
||||
--echo # Must return 1 row
|
||||
SELECT 1 AS col FROM t1 WHERE a=2 AND (c=10 OR c IS NULL) ORDER BY c;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
|
||||
#
|
||||
# Bug #35206: select query result different if the key is indexed or not
|
||||
#
|
||||
|
@ -14,6 +14,15 @@
|
||||
drop table if exists t1, t2;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# Bug#48276: can't add column if subpartition exists
|
||||
CREATE TABLE t1 (a INT, b INT)
|
||||
PARTITION BY LIST (a)
|
||||
SUBPARTITION BY HASH (b)
|
||||
(PARTITION p1 VALUES IN (1));
|
||||
ALTER TABLE t1 ADD COLUMN c INT;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#46639: 1030 (HY000): Got error 124 from storage engine on
|
||||
# INSERT ... SELECT ...
|
||||
@ -61,6 +70,17 @@ SELECT * FROM t1;
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#45904: Error when CHARSET=utf8 and subpartitioning
|
||||
#
|
||||
create table t1 (a int NOT NULL, b varchar(5) NOT NULL)
|
||||
default charset=utf8
|
||||
partition by list (a)
|
||||
subpartition by key (b)
|
||||
(partition p0 values in (1),
|
||||
partition p1 values in (2));
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#44059: rec_per_key on empty partition gives weird optimiser results
|
||||
#
|
||||
@ -2054,11 +2074,14 @@ DROP TABLE t1;
|
||||
--echo #
|
||||
--echo # Bug #45807: crash accessing partitioned table and sql_mode
|
||||
--echo # contains ONLY_FULL_GROUP_BY
|
||||
--echo # Bug#46923: select count(*) from partitioned table fails with
|
||||
--echo # ONLY_FULL_GROUP_BY
|
||||
--echo #
|
||||
|
||||
SET SESSION SQL_MODE='ONLY_FULL_GROUP_BY';
|
||||
CREATE TABLE t1(id INT,KEY(id)) ENGINE=MYISAM
|
||||
PARTITION BY HASH(id) PARTITIONS 2;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
DROP TABLE t1;
|
||||
SET SESSION SQL_MODE=DEFAULT;
|
||||
|
||||
|
@ -1,67 +0,0 @@
|
||||
--source include/have_partition.inc
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_not_innodb_plugin.inc
|
||||
|
||||
#
|
||||
# Bug#32430 - show engine innodb status causes errors
|
||||
#
|
||||
SET NAMES utf8;
|
||||
CREATE TABLE `t``\""e` (a INT, PRIMARY KEY (a))
|
||||
ENGINE=InnoDB
|
||||
PARTITION BY RANGE (a)
|
||||
SUBPARTITION BY HASH (a)
|
||||
(PARTITION `p0``\""e` VALUES LESS THAN (100)
|
||||
(SUBPARTITION `sp0``\""e`,
|
||||
SUBPARTITION `sp1``\""e`),
|
||||
PARTITION `p1``\""e` VALUES LESS THAN (MAXVALUE)
|
||||
(SUBPARTITION `sp2``\""e`,
|
||||
SUBPARTITION `sp3``\""e`));
|
||||
INSERT INTO `t``\""e` VALUES (0), (2), (6), (10), (14), (18), (22);
|
||||
START TRANSACTION;
|
||||
--echo # con1
|
||||
connect(con1,localhost,root,,);
|
||||
SET NAMES utf8;
|
||||
START TRANSACTION;
|
||||
--echo # default connection
|
||||
connection default;
|
||||
UPDATE `t``\""e` SET a = 16 WHERE a = 0;
|
||||
--echo # con1
|
||||
connection con1;
|
||||
UPDATE `t``\""e` SET a = 8 WHERE a = 22;
|
||||
let $id_1= `SELECT CONNECTION_ID()`;
|
||||
SEND;
|
||||
UPDATE `t``\""e` SET a = 12 WHERE a = 0;
|
||||
--echo # default connection
|
||||
connection default;
|
||||
let $wait_timeout= 2;
|
||||
let $wait_condition= SELECT 1 FROM INFORMATION_SCHEMA.PROCESSLIST
|
||||
WHERE ID = $id_1 AND STATE = 'Searching rows for update';
|
||||
--source include/wait_condition.inc
|
||||
#--echo # tested wait condition $wait_condition_reps times
|
||||
--error ER_LOCK_DEADLOCK
|
||||
UPDATE `t``\""e` SET a = 4 WHERE a = 22;
|
||||
--echo # First table reported in 'SHOW ENGINE InnoDB STATUS'
|
||||
# RECORD LOCKS space id 0 page no 50 n bits 80 index `PRIMARY` in \
|
||||
# Database `test`, Table `t1`, Partition `p0`, Subpartition `sp0` \
|
||||
# trx id 0 775
|
||||
# NOTE: replace_regex is very slow on match copy/past '(.*)' regex's
|
||||
# on big texts, removing a lot of text before + after makes it much faster.
|
||||
#/.*in (.*) trx.*/\1/
|
||||
--replace_regex /.*RECORD LOCKS space id [0-9]* page no [0-9]* n bits [0-9]* // / trx id .*// /.*index .* in //
|
||||
SHOW ENGINE InnoDB STATUS;
|
||||
set @old_sql_mode = @@sql_mode;
|
||||
set sql_mode = 'ANSI_QUOTES';
|
||||
# INNODB_LOCKS only exists in innodb_plugin
|
||||
#SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
|
||||
--replace_regex /.*RECORD LOCKS space id [0-9]* page no [0-9]* n bits [0-9]* // / trx id .*// /.*index .* in //
|
||||
SHOW ENGINE InnoDB STATUS;
|
||||
set @@sql_mode = @old_sql_mode;
|
||||
--echo # con1
|
||||
connection con1;
|
||||
REAP;
|
||||
ROLLBACK;
|
||||
disconnect con1;
|
||||
--echo # default connection
|
||||
connection default;
|
||||
DROP TABLE `t``\""e`;
|
||||
SET NAMES DEFAULT;
|
@ -1,6 +1,5 @@
|
||||
--source include/have_partition.inc
|
||||
--source include/have_innodb.inc
|
||||
--source suite/innodb/include/have_innodb_plugin.inc
|
||||
|
||||
#
|
||||
# Bug#32430 - show engine innodb status causes errors
|
||||
|
@ -1260,4 +1260,57 @@ SELECT str_to_date('', '%Y-%m-%d');
|
||||
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#48459: valgrind errors with query using 'Range checked for each
|
||||
--echo # record'
|
||||
--echo #
|
||||
CREATE TABLE t1 (
|
||||
a INT,
|
||||
b CHAR(2),
|
||||
c INT,
|
||||
d INT,
|
||||
KEY ( c ),
|
||||
KEY ( d, a, b ( 2 ) ),
|
||||
KEY ( b ( 1 ) )
|
||||
);
|
||||
|
||||
INSERT INTO t1 VALUES ( NULL, 'a', 1, 2 ), ( NULL, 'a', 1, 2 ),
|
||||
( 1, 'a', 1, 2 ), ( 1, 'a', 1, 2 );
|
||||
|
||||
CREATE TABLE t2 (
|
||||
a INT,
|
||||
c INT,
|
||||
e INT,
|
||||
KEY ( e )
|
||||
);
|
||||
|
||||
INSERT INTO t2 VALUES ( 1, 1, NULL ), ( 1, 1, NULL );
|
||||
|
||||
--echo # Should not give Valgrind warnings
|
||||
SELECT 1
|
||||
FROM t1, t2
|
||||
WHERE t1.d <> '1' AND t1.b > '1'
|
||||
AND t1.a = t2.a AND t1.c = t2.c;
|
||||
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #48665: sql-bench's insert test fails due to wrong result
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a));
|
||||
|
||||
INSERT INTO t1 VALUES (0,0), (1,1);
|
||||
|
||||
--replace_column 1 @ 2 @ 3 @ 5 @ 6 @ 7 @ 8 @ 9 @ 10 @
|
||||
EXPLAIN
|
||||
SELECT * FROM t1 FORCE INDEX (PRIMARY)
|
||||
WHERE (a>=1 AND a<=2) OR (a>=4 AND a<=5) OR (a>=0 AND a <=10);
|
||||
|
||||
--echo # Should return 2 rows
|
||||
SELECT * FROM t1 FORCE INDEX (PRIMARY)
|
||||
WHERE (a>=1 AND a<=2) OR (a>=4 AND a<=5) OR (a>=0 AND a <=10);
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
@ -3777,6 +3777,19 @@ ROW(a,a) <=> ROW((SELECT 1 FROM t1 WHERE 1=2),(SELECT 1 FROM t1));
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #48458: simple query tries to allocate enormous amount of
|
||||
--echo # memory
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1(a INT NOT NULL, b YEAR);
|
||||
INSERT INTO t1 VALUES ();
|
||||
CREATE TABLE t2(c INT);
|
||||
--echo # Should not err out because of out-of-memory
|
||||
SELECT 1 FROM t2 JOIN t1 ON 1=1
|
||||
WHERE a != '1' AND NOT a >= b OR NOT ROW(b,a )<> ROW(a,a);
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
@ -3957,4 +3970,36 @@ DROP TABLE t1, t2;
|
||||
DROP FUNCTION f1;
|
||||
--echo # End of bug#33546
|
||||
|
||||
--echo #
|
||||
--echo # BUG#48052: Valgrind warning - uninitialized value in init_read_record()
|
||||
--echo #
|
||||
|
||||
# Needed in 6.0 codebase
|
||||
#--echo # Disable Index condition pushdown
|
||||
#--replace_column 1 #
|
||||
#SELECT @old_icp:=@@engine_condition_pushdown;
|
||||
#SET SESSION engine_condition_pushdown = 'OFF';
|
||||
|
||||
CREATE TABLE t1 (
|
||||
pk int(11) NOT NULL,
|
||||
i int(11) DEFAULT NULL,
|
||||
v varchar(1) DEFAULT NULL,
|
||||
PRIMARY KEY (pk)
|
||||
);
|
||||
|
||||
INSERT INTO t1 VALUES (2,7,'m');
|
||||
INSERT INTO t1 VALUES (3,9,'m');
|
||||
|
||||
SELECT v
|
||||
FROM t1
|
||||
WHERE NOT pk > 0
|
||||
HAVING v <= 't'
|
||||
ORDER BY pk;
|
||||
|
||||
# Needed in 6.0 codebase
|
||||
#--echo # Restore old value for Index condition pushdown
|
||||
#SET SESSION engine_condition_pushdown=@old_icp;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
@ -12,6 +12,9 @@
|
||||
# mysqltest should be fixed to allow REPLACE_RESULT in error message
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
# Supress warnings written to the log file
|
||||
call mtr.add_suppression("Column count of mysql.proc is wrong. Expected 20, found 19. The table is probably corrupted");
|
||||
|
||||
# Backup proc table
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
--copy_file $MYSQLD_DATADIR/mysql/proc.frm $MYSQLTEST_VARDIR/tmp/proc.frm
|
||||
@ -38,15 +41,14 @@ create trigger t1_ai after insert on t1 for each row call bug14233();
|
||||
|
||||
# Unsupported tampering with the mysql.proc definition
|
||||
alter table mysql.proc drop type;
|
||||
--replace_result $MYSQL_TEST_DIR .
|
||||
--error ER_SP_PROC_TABLE_CORRUPT
|
||||
--error ER_COL_COUNT_DOESNT_MATCH_CORRUPTED
|
||||
call bug14233();
|
||||
--replace_result $MYSQL_TEST_DIR .
|
||||
--error ER_SP_PROC_TABLE_CORRUPT
|
||||
--error ER_COL_COUNT_DOESNT_MATCH_CORRUPTED
|
||||
create view v1 as select bug14233_f();
|
||||
--replace_result $MYSQL_TEST_DIR .
|
||||
--error ER_SP_PROC_TABLE_CORRUPT
|
||||
--error ER_COL_COUNT_DOESNT_MATCH_CORRUPTED
|
||||
insert into t1 values (0);
|
||||
--error ER_COL_COUNT_DOESNT_MATCH_CORRUPTED
|
||||
show procedure status;
|
||||
|
||||
flush table mysql.proc;
|
||||
|
||||
@ -155,3 +157,43 @@ drop procedure bug14233_3;
|
||||
# Assert: These should show nothing.
|
||||
show procedure status where db=DATABASE();
|
||||
show function status where db=DATABASE();
|
||||
|
||||
#
|
||||
# Bug#41726 upgrade from 5.0 to 5.1.30 crashes if you didn't run mysql_upgrade
|
||||
#
|
||||
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS proc_backup;
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
--enable_warnings
|
||||
|
||||
--echo # Backup the proc table
|
||||
|
||||
RENAME TABLE mysql.proc TO proc_backup;
|
||||
CREATE TABLE mysql.proc LIKE proc_backup;
|
||||
FLUSH TABLE mysql.proc;
|
||||
|
||||
--echo # Test with a valid table.
|
||||
|
||||
CREATE PROCEDURE p1()
|
||||
SET @foo = 10;
|
||||
CALL p1();
|
||||
--replace_column 5 '0000-00-00 00:00:00' 6 '0000-00-00 00:00:00'
|
||||
SHOW PROCEDURE STATUS;
|
||||
|
||||
--echo # Modify a field of the table.
|
||||
|
||||
ALTER TABLE mysql.proc MODIFY comment CHAR (32);
|
||||
|
||||
--error ER_CANNOT_LOAD_FROM_TABLE
|
||||
CREATE PROCEDURE p2()
|
||||
SET @foo = 10;
|
||||
--echo # Procedure loaded from the cache
|
||||
CALL p1();
|
||||
--error ER_CANNOT_LOAD_FROM_TABLE
|
||||
SHOW PROCEDURE STATUS;
|
||||
|
||||
DROP TABLE mysql.proc;
|
||||
RENAME TABLE proc_backup TO mysql.proc;
|
||||
FLUSH TABLE mysql.proc;
|
||||
|
@ -865,6 +865,65 @@ DROP PROCEDURE p_suid;
|
||||
DROP FUNCTION f_suid;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #48872 : Privileges for stored functions ignored if function name
|
||||
--echo # is mixed case
|
||||
--echo #
|
||||
|
||||
CREATE DATABASE B48872;
|
||||
USE B48872;
|
||||
CREATE TABLE `TestTab` (id INT);
|
||||
INSERT INTO `TestTab` VALUES (1),(2);
|
||||
CREATE FUNCTION `f_Test`() RETURNS INT RETURN 123;
|
||||
CREATE FUNCTION `f_Test_denied`() RETURNS INT RETURN 123;
|
||||
CREATE USER 'tester';
|
||||
CREATE USER 'Tester';
|
||||
GRANT SELECT ON TABLE `TestTab` TO 'tester';
|
||||
GRANT EXECUTE ON FUNCTION `f_Test` TO 'tester';
|
||||
GRANT EXECUTE ON FUNCTION `f_Test_denied` TO 'Tester';
|
||||
|
||||
SELECT f_Test();
|
||||
SELECT * FROM TestTab;
|
||||
|
||||
CONNECT (con_tester,localhost,tester,,B48872);
|
||||
CONNECT (con_tester_denied,localhost,Tester,,B48872);
|
||||
CONNECTION con_tester;
|
||||
|
||||
SELECT * FROM TestTab;
|
||||
SELECT `f_Test`();
|
||||
SELECT `F_TEST`();
|
||||
SELECT f_Test();
|
||||
SELECT F_TEST();
|
||||
|
||||
CONNECTION con_tester_denied;
|
||||
|
||||
--disable_result_log
|
||||
--error ER_TABLEACCESS_DENIED_ERROR
|
||||
SELECT * FROM TestTab;
|
||||
--error ER_PROCACCESS_DENIED_ERROR
|
||||
SELECT `f_Test`();
|
||||
--error ER_PROCACCESS_DENIED_ERROR
|
||||
SELECT `F_TEST`();
|
||||
--error ER_PROCACCESS_DENIED_ERROR
|
||||
SELECT f_Test();
|
||||
--error ER_PROCACCESS_DENIED_ERROR
|
||||
SELECT F_TEST();
|
||||
--enable_result_log
|
||||
SELECT `f_Test_denied`();
|
||||
SELECT `F_TEST_DENIED`();
|
||||
|
||||
CONNECTION default;
|
||||
DISCONNECT con_tester;
|
||||
DISCONNECT con_tester_denied;
|
||||
DROP TABLE `TestTab`;
|
||||
DROP FUNCTION `f_Test`;
|
||||
DROP FUNCTION `f_Test_denied`;
|
||||
|
||||
USE test;
|
||||
DROP USER 'tester';
|
||||
DROP USER 'Tester';
|
||||
DROP DATABASE B48872;
|
||||
|
||||
--echo End of 5.0 tests.
|
||||
|
||||
# Wait till all disconnects are completed
|
||||
|
@ -8264,6 +8264,73 @@ CALL p1;
|
||||
DROP PROCEDURE p1;
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#47627: SET @@{global.session}.local_variable in stored routine causes crash
|
||||
--echo # Bug#48626: Crash or lost connection using SET for declared variables with @@
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
DROP PROCEDURE IF EXISTS p2;
|
||||
DROP PROCEDURE IF EXISTS p3;
|
||||
--enable_warnings
|
||||
|
||||
delimiter //;
|
||||
|
||||
--error ER_UNKNOWN_SYSTEM_VARIABLE
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
DECLARE v INT DEFAULT 0;
|
||||
SET @@SESSION.v= 10;
|
||||
END//
|
||||
|
||||
CREATE PROCEDURE p2()
|
||||
BEGIN
|
||||
DECLARE v INT DEFAULT 0;
|
||||
SET v= 10;
|
||||
END//
|
||||
call p2()//
|
||||
|
||||
--error ER_UNKNOWN_SYSTEM_VARIABLE
|
||||
CREATE PROCEDURE p3()
|
||||
BEGIN
|
||||
DECLARE v INT DEFAULT 0;
|
||||
SELECT @@SESSION.v;
|
||||
END//
|
||||
|
||||
--error ER_UNKNOWN_SYSTEM_VARIABLE
|
||||
CREATE PROCEDURE p4()
|
||||
BEGIN
|
||||
DECLARE v INT DEFAULT 0;
|
||||
SET @@GLOBAL.v= 10;
|
||||
END//
|
||||
|
||||
CREATE PROCEDURE p5()
|
||||
BEGIN
|
||||
DECLARE init_connect INT DEFAULT 0;
|
||||
SET init_connect= 10;
|
||||
SET @@GLOBAL.init_connect= 'SELECT 1';
|
||||
SET @@SESSION.IDENTITY= 1;
|
||||
SELECT @@SESSION.IDENTITY;
|
||||
SELECT @@GLOBAL.init_connect;
|
||||
SELECT init_connect;
|
||||
END//
|
||||
|
||||
--error ER_UNKNOWN_SYSTEM_VARIABLE
|
||||
CREATE PROCEDURE p6()
|
||||
BEGIN
|
||||
DECLARE v INT DEFAULT 0;
|
||||
SET @@v= 0;
|
||||
END//
|
||||
|
||||
delimiter ;//
|
||||
|
||||
SET @old_init_connect= @@GLOBAL.init_connect;
|
||||
CALL p5();
|
||||
SET @@GLOBAL.init_connect= @old_init_connect;
|
||||
|
||||
DROP PROCEDURE p2;
|
||||
DROP PROCEDURE p5;
|
||||
|
||||
--echo # ------------------------------------------------------------------
|
||||
--echo # -- End of 5.1 tests
|
||||
|
@ -1286,3 +1286,229 @@ CREATE TABLE t1 SELECT 1 % .1234567891234567891234567891234567891234567891234567
|
||||
DESCRIBE t1;
|
||||
SELECT my_col FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#45261: Crash, stored procedure + decimal
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 81 */ 100000000000000000000000000000000000000000000000000000000000000000000000000000001
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 81 */ 100000000000000000000000000000000000000000000000000000000000000000000000000000001.
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 81 */ 100000000000000000000000000000000000000000000000000000000000000000000000000000001.1 /* 1 */
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 82 */ 1000000000000000000000000000000000000000000000000000000000000000000000000000000001
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 40 */ 1000000000000000000000000000000000000001.1000000000000000000000000000000000000001 /* 40 */
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 1 */ 1.10000000000000000000000000000000000000000000000000000000000000000000000000000001 /* 80 */
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 1 */ 1.100000000000000000000000000000000000000000000000000000000000000000000000000000001 /* 81 */
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
.100000000000000000000000000000000000000000000000000000000000000000000000000000001 /* 81 */
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 45 */ 123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345 /* 45 */
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 65 */ 12345678901234567890123456789012345678901234567890123456789012345.1 /* 1 */
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
/* 66 */ 123456789012345678901234567890123456789012345678901234567890123456.1 /* 1 */
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT
|
||||
.123456789012345678901234567890123456789012345678901234567890123456 /* 66 */
|
||||
AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 AS SELECT 123.1234567890123456789012345678901 /* 31 */ AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 SELECT 1.1 + CAST(1 AS DECIMAL(65,30)) AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Test that the integer and decimal parts are properly calculated.
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a DECIMAL(30,30));
|
||||
INSERT INTO t1 VALUES (0.1),(0.2),(0.3);
|
||||
CREATE TABLE t2 SELECT MIN(a + 0.0000000000000000000000000000001) AS c1 FROM t1;
|
||||
DESC t2;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
CREATE TABLE t1 (a DECIMAL(30,30));
|
||||
INSERT INTO t1 VALUES (0.1),(0.2),(0.3);
|
||||
CREATE TABLE t2 SELECT IFNULL(a + 0.0000000000000000000000000000001, NULL) AS c1 FROM t1;
|
||||
DESC t2;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
CREATE TABLE t1 (a DECIMAL(30,30));
|
||||
INSERT INTO t1 VALUES (0.1),(0.2),(0.3);
|
||||
CREATE TABLE t2 SELECT CASE a WHEN 0.1 THEN 0.0000000000000000000000000000000000000000000000000000000000000000001 END AS c1 FROM t1;
|
||||
DESC t2;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # Test that variables get maximum precision.
|
||||
--echo #
|
||||
|
||||
SET @decimal= 1.1;
|
||||
CREATE TABLE t1 SELECT @decimal AS c1;
|
||||
DESC t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #45261 : Crash, stored procedure + decimal
|
||||
--echo # Original test by the reporter.
|
||||
--echo #
|
||||
|
||||
--echo # should not crash
|
||||
CREATE TABLE t1
|
||||
SELECT .123456789012345678901234567890123456789012345678901234567890123456 AS a;
|
||||
DROP TABLE t1;
|
||||
|
||||
delimiter |;
|
||||
CREATE PROCEDURE test_proc()
|
||||
BEGIN
|
||||
# The las non critical CUSER definition is:
|
||||
# DECLARE mycursor CURSOR FOR SELECT 1 %
|
||||
# .12345678912345678912345678912345678912345678912345678912345678912 AS my_col;
|
||||
DECLARE mycursor CURSOR FOR
|
||||
SELECT 1 %
|
||||
.123456789123456789123456789123456789123456789123456789123456789123456789123456789
|
||||
AS my_col;
|
||||
|
||||
OPEN mycursor;
|
||||
CLOSE mycursor;
|
||||
END|
|
||||
delimiter ;|
|
||||
--echo # should not crash
|
||||
CALL test_proc();
|
||||
DROP PROCEDURE test_proc;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #48370 Absolutely wrong calculations with GROUP BY and
|
||||
--echo # decimal fields when using IF
|
||||
--echo #
|
||||
|
||||
CREATE TABLE currencies (id int, rate decimal(16,4),
|
||||
PRIMARY KEY (id), KEY (rate));
|
||||
|
||||
INSERT INTO currencies VALUES (11,0.7028);
|
||||
INSERT INTO currencies VALUES (1,1);
|
||||
|
||||
CREATE TABLE payments (
|
||||
id int,
|
||||
supplier_id int,
|
||||
status int,
|
||||
currency_id int,
|
||||
vat decimal(7,4),
|
||||
PRIMARY KEY (id),
|
||||
KEY currency_id (currency_id),
|
||||
KEY supplier_id (supplier_id)
|
||||
);
|
||||
|
||||
INSERT INTO payments (id,status,vat,supplier_id,currency_id) VALUES
|
||||
(3001,2,0.0000,344,11), (1,2,0.0000,1,1);
|
||||
|
||||
CREATE TABLE sub_tasks (
|
||||
id int,
|
||||
currency_id int,
|
||||
price decimal(16,4),
|
||||
discount decimal(10,4),
|
||||
payment_id int,
|
||||
PRIMARY KEY (id),
|
||||
KEY currency_id (currency_id),
|
||||
KEY payment_id (payment_id)
|
||||
) ;
|
||||
|
||||
INSERT INTO sub_tasks (id, price, discount, payment_id, currency_id) VALUES
|
||||
(52, 12.60, 0, 3001, 11), (56, 14.58, 0, 3001, 11);
|
||||
|
||||
--echo # should return 1 and the same values in col 2 and 3
|
||||
select STRAIGHT_JOIN
|
||||
(1 + PAY.vat) AS mult,
|
||||
SUM(ROUND((SUB.price - ROUND(ROUND(SUB.price, 2) * SUB.discount, 2)) *
|
||||
CUR.rate / CUR.rate, 2)
|
||||
) v_net_with_discount,
|
||||
|
||||
SUM(ROUND((SUB.price - ROUND(ROUND(SUB.price, 2) * SUB.discount, 1)) *
|
||||
CUR.rate / CUR.rate , 2)
|
||||
* (1 + PAY.vat)
|
||||
) v_total
|
||||
from
|
||||
currencies CUR, payments PAY, sub_tasks SUB
|
||||
where
|
||||
SUB.payment_id = PAY.id and
|
||||
PAY.currency_id = CUR.id and
|
||||
PAY.id > 2
|
||||
group by PAY.id + 1;
|
||||
|
||||
DROP TABLE currencies, payments, sub_tasks;
|
||||
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
Reference in New Issue
Block a user