mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
merging
mysql-test/r/ps.result: Auto merged sql/sql_class.cc: Auto merged sql/sql_select.cc: Auto merged
This commit is contained in:
@ -207,6 +207,7 @@ alter table t1 change a a text character set cp1251;
|
||||
select a,hex(a) from t1;
|
||||
alter table t1 change a a char(10) character set koi8r;
|
||||
select a,hex(a) from t1;
|
||||
delete from t1;
|
||||
|
||||
#
|
||||
# Test ALTER TABLE .. CHARACTER SET ..
|
||||
@ -323,3 +324,26 @@ alter table t1 rename to `t1\\`;
|
||||
rename table t1 to `t1\\`;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #6479 ALTER TABLE ... changing charset fails for TEXT columns
|
||||
#
|
||||
# The column's character set was changed but the actual data was not
|
||||
# modified. In other words, the values were reinterpreted
|
||||
# as UTF8 instead of being converted.
|
||||
create table t1 (a text) character set koi8r;
|
||||
insert into t1 values (_koi8r'<27><><EFBFBD><EFBFBD>');
|
||||
select hex(a) from t1;
|
||||
alter table t1 convert to character set cp1251;
|
||||
select hex(a) from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test for bug #7884 "Able to add invalid unique index on TIMESTAMP prefix"
|
||||
# MySQL should not think that packed field with non-zero decimals is
|
||||
# geometry field and allow to create prefix index which is
|
||||
# shorter than packed field length.
|
||||
#
|
||||
create table t1 ( a timestamp );
|
||||
--error 1089
|
||||
alter table t1 add unique ( a(1) );
|
||||
drop table t1;
|
||||
|
@ -38,3 +38,12 @@ select * from t2;
|
||||
insert into t2 select * from t1 procedure analyse();
|
||||
select * from t2;
|
||||
drop table t1,t2;
|
||||
|
||||
#
|
||||
# Bug#2813 - analyse does not quote string values in enums from string
|
||||
#
|
||||
|
||||
create table t1 (v varchar(128));
|
||||
insert into t1 values ('abc'),('abc\'def\\hij\"klm\0opq'),('\''),('\"'),('\\'),('a\0'),('b\''),('c\"'),('d\\'),('\'b'),('\"c'),('\\d'),('a\0\0\0b'),('a\'\'\'\'b'),('a\"\"\"\"b'),('a\\\\\\\\b'),('\'\0\\\"'),('\'\''),('\"\"'),('\\\\'),('The\ZEnd');
|
||||
select * from t1 procedure analyse();
|
||||
drop table t1;
|
||||
|
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Simple test for archive example
|
||||
# Taken fromm the select test
|
||||
# Taken from the select test
|
||||
#
|
||||
-- source include/have_archive.inc
|
||||
|
||||
|
57
mysql-test/t/bdb-deadlock.tminus
Normal file
57
mysql-test/t/bdb-deadlock.tminus
Normal file
@ -0,0 +1,57 @@
|
||||
# This test doesn't work with the embedded version as this code
|
||||
# assumes that one query is running while we are doing queries on
|
||||
# a second connection.
|
||||
# This would work if mysqltest run would be threaded and handle each
|
||||
# connection in a separate thread.
|
||||
#
|
||||
|
||||
#-- source include/not_embedded.inc
|
||||
-- source include/have_bdb.inc
|
||||
|
||||
connect (con1,localhost,root,,);
|
||||
connect (con2,localhost,root,,);
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2;
|
||||
--enable_warnings
|
||||
connection con1;
|
||||
create table t1 (id integer, x integer) engine=BDB;
|
||||
create table t2 (id integer, x integer) engine=BDB;
|
||||
insert into t1 values(0, 0);
|
||||
insert into t2 values(0, 0);
|
||||
set autocommit=0;
|
||||
update t1 set x = 1 where id = 0;
|
||||
|
||||
connection con2;
|
||||
set autocommit=0;
|
||||
update t2 set x = 1 where id = 0;
|
||||
|
||||
# The following query should hang because con1 is locking the page
|
||||
--send
|
||||
select x from t1 where id = 0;
|
||||
|
||||
connection con1;
|
||||
# This should generate a deadlock as we are trying to access a locked row
|
||||
--send
|
||||
select x from t2 where id = 0;
|
||||
|
||||
connection con2;
|
||||
--error 1213
|
||||
reap;
|
||||
commit;
|
||||
|
||||
connection con1;
|
||||
reap;
|
||||
commit;
|
||||
|
||||
connection con2;
|
||||
select * from t1;
|
||||
select * from t2;
|
||||
commit;
|
||||
|
||||
connection con1;
|
||||
select * from t1;
|
||||
select * from t2;
|
||||
commit;
|
||||
|
||||
drop table t1,t2;
|
@ -80,3 +80,10 @@ select * from t1 where firstname='john' and firstname = binary 'john';
|
||||
select * from t1 where firstname='John' and firstname like binary 'john';
|
||||
select * from t1 where firstname='john' and firstname like binary 'John';
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #6552 CHAR column w/o length is legal, BINARY w/o length is not
|
||||
#
|
||||
create table t1 (a binary);
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
@ -108,3 +108,13 @@ SELECT a, CAST(a AS CHAR(3)) FROM t1 ORDER BY CAST(a AS CHAR(2)), a;
|
||||
SELECT a, CAST(a AS UNSIGNED) FROM t1 ORDER BY CAST(a AS CHAR) ;
|
||||
SELECT a, CAST(a AS CHAR(2)) FROM t1 ORDER BY CAST(a AS CHAR(3)), a;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Test for bug #6914 "Problems using time()/date() output in expressions".
|
||||
# When we are casting datetime value to DATE/TIME we should throw away
|
||||
# time/date parts (correspondingly).
|
||||
#
|
||||
select date_add(cast('2004-12-30 12:00:00' as date), interval 0 hour);
|
||||
select timediff(cast('2004-12-30 12:00:00' as time), '12:00:00');
|
||||
# Still we should not throw away "days" part of time value
|
||||
select timediff(cast('1 12:00:00' as time), '12:00:00');
|
||||
|
@ -1,2 +0,0 @@
|
||||
--disable_result_log
|
||||
--exec $TESTS_BINDIR/client_test --testcase --user=root --socket=$MASTER_MYSOCK --port=$MYSQL_TCP_PORT
|
@ -5,7 +5,8 @@
|
||||
select 1+2/*hello*/+3;
|
||||
select 1 /* long
|
||||
multi line comment */;
|
||||
!$1065 ;
|
||||
--error 1065
|
||||
;
|
||||
select 1 /*!32301 +1 */;
|
||||
select 1 /*!52301 +1 */;
|
||||
select 1--1;
|
||||
|
@ -30,3 +30,8 @@ CREATE TABLE t1 (a char(10) not null);
|
||||
INSERT INTO t1 VALUES ('a'),('a\0'),('a\t'),('a ');
|
||||
SELECT hex(a),STRCMP(a,'a'), STRCMP(a,'a ') FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
# Bug #8134: Comparison against CHAR(31) at end of string
|
||||
SELECT CHAR(31) = '', '' = CHAR(31);
|
||||
# Extra test
|
||||
SELECT CHAR(30) = '', '' = CHAR(30);
|
||||
|
41
mysql-test/t/consistent_snapshot.test
Normal file
41
mysql-test/t/consistent_snapshot.test
Normal file
@ -0,0 +1,41 @@
|
||||
-- source include/have_innodb.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
connect (con1,localhost,root,,);
|
||||
connect (con2,localhost,root,,);
|
||||
|
||||
### Test 1:
|
||||
### - While a consistent snapshot transaction is executed,
|
||||
### no external inserts should be visible to the transaction.
|
||||
|
||||
connection con1;
|
||||
create table t1 (a int) engine=innodb;
|
||||
start transaction with consistent snapshot;
|
||||
|
||||
connection con2;
|
||||
insert into t1 values(1);
|
||||
|
||||
connection con1;
|
||||
select * from t1; # if consistent snapshot was set as expected, we
|
||||
# should see nothing.
|
||||
commit;
|
||||
|
||||
### Test 2:
|
||||
### - For any non-consistent snapshot transaction, external
|
||||
### committed inserts should be visible to the transaction.
|
||||
|
||||
delete from t1;
|
||||
start transaction; # Now we omit WITH CONSISTENT SNAPSHOT
|
||||
|
||||
connection con2;
|
||||
insert into t1 values(1);
|
||||
|
||||
connection con1;
|
||||
select * from t1; # if consistent snapshot was not set, as expected, we
|
||||
# should see 1.
|
||||
commit;
|
||||
|
||||
drop table t1;
|
@ -7,12 +7,12 @@
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
SET NAMES big5;
|
||||
SET @test_character_set= 'big5';
|
||||
SET @test_collation= 'big5_chinese_ci';
|
||||
-- source include/ctype_common.inc
|
||||
|
||||
#
|
||||
# Bug 1883: LIKE did not work in some cases with a key.
|
||||
#
|
||||
CREATE TABLE t1 (c CHAR(10) CHARACTER SET big5, KEY(c));
|
||||
INSERT INTO t1 VALUES ('aaa'),('aaaa'),('aaaaa');
|
||||
SELECT * FROM t1 WHERE c LIKE 'aaa%';
|
||||
DROP TABLE t1;
|
||||
SET NAMES big5;
|
||||
SET collation_connection='big5_chinese_ci';
|
||||
-- source include/ctype_filesort.inc
|
||||
SET collation_connection='big5_bin';
|
||||
-- source include/ctype_filesort.inc
|
||||
|
@ -32,3 +32,17 @@ select * from t1 where lower(b)='bbb';
|
||||
select charset(a), charset(b), charset(binary 'ccc') from t1 limit 1;
|
||||
select collation(a), collation(b), collation(binary 'ccc') from t1 limit 1;
|
||||
drop table t1;
|
||||
|
||||
# Test for BUG#8560
|
||||
create table t1 (
|
||||
a varchar(16) character set cp1251 collate cp1251_bin not null,
|
||||
b int(10) default null,
|
||||
primary key(a)
|
||||
) charset=cp1251;
|
||||
insert into t1 (a) values ('air'),
|
||||
('we'),('g'),('we_toshko'), ('s0urce'),('we_ivo'),('we_iliyan'),
|
||||
('we_martin'),('vw_grado'),('vw_vasko'),('tn_vili'),('tn_kalina'),
|
||||
('tn_fakira'),('vw_silvia'),('vw_starshi'),('vw_geo'),('vw_b0x1');
|
||||
|
||||
select * from t1 where a like 'we_%';
|
||||
drop table t1;
|
||||
|
@ -86,3 +86,15 @@ create database d1 default character set latin1 collate latin2_bin;
|
||||
#
|
||||
#
|
||||
DROP DATABASE mysqltest1;
|
||||
|
||||
|
||||
#
|
||||
# Synatx: 'ALTER DATABASE' without db_name
|
||||
#
|
||||
CREATE DATABASE mysqltest2 DEFAULT CHARACTER SET latin7;
|
||||
use mysqltest2;
|
||||
ALTER DATABASE DEFAULT CHARACTER SET latin2;
|
||||
show create database mysqltest2;
|
||||
drop database mysqltest2;
|
||||
--error 1046
|
||||
ALTER DATABASE DEFAULT CHARACTER SET latin2;
|
||||
|
@ -53,3 +53,25 @@ SELECT
|
||||
hex(@l:=convert(@u using latin1)),
|
||||
a=@l FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #6737: REGEXP gives wrong result with case sensitive collation
|
||||
#
|
||||
select 'a' regexp 'A' collate latin1_general_ci;
|
||||
select 'a' regexp 'A' collate latin1_general_cs;
|
||||
select 'a' regexp 'A' collate latin1_bin;
|
||||
|
||||
|
||||
SET collation_connection='latin1_swedish_ci';
|
||||
-- source include/ctype_filesort.inc
|
||||
SET collation_connection='latin1_bin';
|
||||
-- source include/ctype_filesort.inc
|
||||
|
||||
#
|
||||
# Bug#8041
|
||||
# An unknown character (e.g. 0x84) should result in ERROR,
|
||||
# It was treated like a space character earlier.
|
||||
# Howerver, it should still work fine as a string part.
|
||||
--error 1064
|
||||
CREATE TABLE <20>a (a int);
|
||||
SELECT '<27>a' as str;
|
||||
|
@ -114,3 +114,21 @@ SELECT s1,COUNT(*) FROM t1 GROUP BY s1;
|
||||
SELECT COUNT(DISTINCT s1) FROM t1;
|
||||
SELECT FIELD('ue',s1), FIELD('<27>',s1), s1='ue', s1='<27>' FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
-- source include/ctype_filesort.inc
|
||||
|
||||
#
|
||||
# Bug#7878 with utf8_general_ci, equals (=) has problem with
|
||||
# accent insensitivity.
|
||||
# Although originally this problem was found with UTF8 character set,
|
||||
# '=' behaved wrong for latin1_german2_ci as well.
|
||||
# Let's check it does not work incorrect anymore.
|
||||
#
|
||||
SET NAMES latin1;
|
||||
CREATE TABLE t1 (
|
||||
col1 varchar(255) NOT NULL default ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 collate latin1_german2_ci;
|
||||
INSERT INTO t1 VALUES ('<27>'),('ss'),('ss');
|
||||
ALTER TABLE t1 ADD KEY ifword(col1);
|
||||
SELECT * FROM t1 WHERE col1='<27>' ORDER BY col1, BINARY col1;
|
||||
DROP TABLE t1;
|
||||
|
@ -121,3 +121,61 @@ CREATE TABLE `good
|
||||
SET NAMES utf8;
|
||||
--error 1300
|
||||
CREATE TABLE `good<6F><64><EFBFBD><EFBFBD><EFBFBD>` (a int);
|
||||
|
||||
|
||||
#
|
||||
# Test that we produce a warnign when conversion loses data.
|
||||
#
|
||||
set names latin1;
|
||||
create table t1 (a char(10) character set koi8r, b text character set koi8r);
|
||||
insert into t1 values ('test','test');
|
||||
insert into t1 values ('<27><><EFBFBD><EFBFBD>','<27><><EFBFBD><EFBFBD>');
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Try to apply an automatic conversion in some cases:
|
||||
# E.g. when mixing a column to a string, the string
|
||||
# is converted into the column character set.
|
||||
# If conversion loses data, then error. Otherwise,
|
||||
# the string is replaced by its converted representation
|
||||
#
|
||||
set names koi8r;
|
||||
create table t1 (a char(10) character set cp1251);
|
||||
insert into t1 values (_koi8r'<27><><EFBFBD><EFBFBD>');
|
||||
# this is possible:
|
||||
select * from t1 where a=_koi8r'<27><><EFBFBD><EFBFBD>';
|
||||
# this is not possible, because we have a function, not just a constant:
|
||||
--error 1267
|
||||
select * from t1 where a=concat(_koi8r'<27><><EFBFBD><EFBFBD>');
|
||||
# this is not posible, cannot convert _latin1'<27><><EFBFBD><EFBFBD>' into cp1251:
|
||||
--error 1267
|
||||
select * from t1 where a=_latin1'<27><><EFBFBD><EFBFBD>';
|
||||
drop table t1;
|
||||
set names latin1;
|
||||
|
||||
#
|
||||
# Check more automatic conversion
|
||||
#
|
||||
set names koi8r;
|
||||
create table t1 (c1 char(10) character set cp1251);
|
||||
insert into t1 values ('<27>');
|
||||
select c1 from t1 where c1 between '<27>' and '<27>';
|
||||
select ifnull(c1,'<27>'), ifnull(null,c1) from t1;
|
||||
select if(1,c1,'<27>'), if(0,c1,'<27>') from t1;
|
||||
select coalesce('<27>',c1), coalesce(null,c1) from t1;
|
||||
select least(c1,'<27>'), greatest(c1,'<27>') from t1;
|
||||
select locate(c1,'<27>'), locate('<27>',c1) from t1;
|
||||
select field(c1,'<27>'),field('<27>',c1) from t1;
|
||||
select concat(c1,'<27>'), concat('<27>',c1) from t1;
|
||||
select concat_ws(c1,'<27>','<27>'), concat_ws('<27>',c1,'<27>') from t1;
|
||||
select replace(c1,'<27>','<27>'), replace('<27>',c1,'<27>') from t1;
|
||||
select substring_index(c1,'<27><><EFBFBD><EFBFBD>',2) from t1;
|
||||
select elt(1,c1,'<27>'),elt(1,'<27>',c1) from t1;
|
||||
select make_set(3,c1,'<27>'), make_set(3,'<27>',c1) from t1;
|
||||
select insert(c1,1,2,'<27>'),insert('<27>',1,2,c1) from t1;
|
||||
select trim(c1 from '<27>'),trim('<27>' from c1) from t1;
|
||||
select lpad(c1,3,'<27>'), lpad('<27>',3,c1) from t1;
|
||||
select rpad(c1,3,'<27>'), rpad('<27>',3,c1) from t1;
|
||||
# TODO
|
||||
#select case c1 when '<27>' then '<27>' when '<27>' then '<27>' else 'c' end from t1;
|
||||
#select export_set(5,c1,'<27>'), export_set(5,'<27>',c1) from t1;
|
||||
|
@ -51,3 +51,27 @@ insert into t1 values (0x9353);
|
||||
insert into t1 values (0x9373);
|
||||
select hex(c) from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #6223 Japanese half-width kana characters get truncated
|
||||
#
|
||||
SET NAMES sjis;
|
||||
CREATE TABLE t1 (
|
||||
c char(16) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=sjis;
|
||||
insert into t1 values(0xb1),(0xb2),(0xb3);
|
||||
select hex(c) from t1;
|
||||
drop table t1;
|
||||
|
||||
|
||||
SET collation_connection='sjis_japanese_ci';
|
||||
-- source include/ctype_filesort.inc
|
||||
SET collation_connection='sjis_bin';
|
||||
-- source include/ctype_filesort.inc
|
||||
|
||||
# Check parsing of string literals in SJIS with multibyte characters that
|
||||
# have an embedded \ in them. (Bug #8303)
|
||||
|
||||
--character_set sjis
|
||||
SET NAMES sjis;
|
||||
SELECT HEX('<27><><EFBFBD><EFBFBD><EFBFBD>@\<5C>\') FROM DUAL;
|
||||
|
@ -116,3 +116,44 @@ CREATE TABLE t1 (a char(10) not null) CHARACTER SET tis620;
|
||||
INSERT INTO t1 VALUES ('a'),('a\0'),('a\t'),('a ');
|
||||
SELECT hex(a),STRCMP(a,'a'), STRCMP(a,'a ') FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#6608
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
`id` int(11) NOT NULL auto_increment,
|
||||
`url` varchar(200) NOT NULL default '',
|
||||
`name` varchar(250) NOT NULL default '',
|
||||
`type` int(11) NOT NULL default '0',
|
||||
`website` varchar(250) NOT NULL default '',
|
||||
`adddate` date NOT NULL default '0000-00-00',
|
||||
`size` varchar(20) NOT NULL default '',
|
||||
`movieid` int(11) NOT NULL default '0',
|
||||
`musicid` int(11) NOT NULL default '0',
|
||||
`star` varchar(20) NOT NULL default '',
|
||||
`download` int(11) NOT NULL default '0',
|
||||
`lastweek` int(11) NOT NULL default '0',
|
||||
`thisweek` int(11) NOT NULL default '0',
|
||||
`page` varchar(250) NOT NULL default '',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `url` (`url`)
|
||||
) CHARACTER SET tis620;
|
||||
|
||||
INSERT INTO t1 VALUES
|
||||
(1,'http://www.siamzone.com/download/download/000001-frodo_1024.jpg','The Lord
|
||||
of the Rings
|
||||
Wallpapers',1,'http://www.lordoftherings.net','2002-01-22','',448,0,'',3805,0,0,
|
||||
'');
|
||||
INSERT INTO t1 VALUES (2,'http://www.othemovie.com/OScreenSaver1.EXE','O
|
||||
Screensaver',2,'','2002-01-22','',491,0,'',519,0,0,'');
|
||||
INSERT INTO t1 VALUES
|
||||
(3,'http://www.siamzone.com/download/download/000003-jasonx2(800x600).jpg','Jaso
|
||||
n X Wallpapers',1,'','2002-05-31','',579,0,'',1091,0,0,'');
|
||||
select * from t1 order by id;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
SET collation_connection='tis620_thai_ci';
|
||||
-- source include/ctype_filesort.inc
|
||||
SET collation_connection='tis620_bin';
|
||||
-- source include/ctype_filesort.inc
|
||||
|
@ -24,6 +24,11 @@ select 'a ' = 'a\t', 'a ' < 'a\t', 'a ' > 'a\t';
|
||||
|
||||
select 'a a' > 'a', 'a \t' < 'a';
|
||||
|
||||
#
|
||||
# Bug #6787 LIKE not working properly with _ and utf8 data
|
||||
#
|
||||
select 'c' like '\_' as want0;
|
||||
|
||||
#
|
||||
# Bug #5679 utf8_unicode_ci LIKE--trailing % doesn't equal zero characters
|
||||
#
|
||||
@ -435,3 +440,18 @@ INSERT INTO t1 VALUES (CONVERT(_ucs2 0x06280648062F0646062F USING utf8));
|
||||
INSERT INTO t1 VALUES (CONVERT(_ucs2 0x06450647064506270646 USING utf8));
|
||||
SELECT HEX(CONVERT(col1 USING ucs2)) FROM t1 ORDER BY col1 COLLATE utf8_persian_ci, col1 COLLATE utf8_bin;
|
||||
DROP TABLE t1;
|
||||
|
||||
SET @test_character_set= 'utf8';
|
||||
SET @test_collation= 'utf8_swedish_ci';
|
||||
-- source include/ctype_common.inc
|
||||
|
||||
#
|
||||
# Bug 7111 server crashes when regexp is used
|
||||
#
|
||||
create table t1 (a varchar(1)) character set utf8 collate utf8_estonian_ci;
|
||||
insert into t1 values ('A'),('B'),('C'),('a'),('b'),('c');
|
||||
select a, a regexp '[a]' from t1 order by binary a;
|
||||
drop table t1;
|
||||
|
||||
SET collation_connection='utf8_unicode_ci';
|
||||
-- source include/ctype_filesort.inc
|
||||
|
@ -4,6 +4,10 @@
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
SET NAMES latin1;
|
||||
SET character_set_connection=ucs2;
|
||||
-- source include/endspace.inc
|
||||
|
||||
SET CHARACTER SET koi8r;
|
||||
|
||||
#
|
||||
@ -315,3 +319,95 @@ alter table t1 modify a char(5);
|
||||
select a, hex(a) from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Check prepare statement from an UCS2 string
|
||||
#
|
||||
set @ivar= 1234;
|
||||
set @str1 = 'select ?';
|
||||
set @str2 = convert(@str1 using ucs2);
|
||||
prepare stmt1 from @str2;
|
||||
execute stmt1 using @ivar;
|
||||
|
||||
#
|
||||
# Check correct binlogging of UCS2 user variables (BUG#3875)
|
||||
#
|
||||
SET TIMESTAMP=10000;
|
||||
create table t2 (c char(30)) charset=ucs2;
|
||||
set @v=convert('abc' using ucs2);
|
||||
reset master;
|
||||
insert into t2 values (@v);
|
||||
show binlog events from 79;
|
||||
# more important than SHOW BINLOG EVENTS, mysqlbinlog (where we
|
||||
# absolutely need variables names to be quoted and strings to be
|
||||
# escaped).
|
||||
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
||||
--exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.000001
|
||||
drop table t2;
|
||||
|
||||
|
||||
#
|
||||
# Check that ucs2 works with ENUM and SET type
|
||||
#
|
||||
set names latin1;
|
||||
create table t1 (a enum('x','y','z') character set ucs2);
|
||||
show create table t1;
|
||||
insert into t1 values ('x');
|
||||
insert into t1 values ('y');
|
||||
insert into t1 values ('z');
|
||||
select a, hex(a) from t1 order by a;
|
||||
alter table t1 change a a enum('x','y','z','d','e','<27>','<27>','<27>') character set ucs2;
|
||||
show create table t1;
|
||||
insert into t1 values ('D');
|
||||
insert into t1 values ('E ');
|
||||
insert into t1 values ('<27>');
|
||||
insert into t1 values ('<27>');
|
||||
insert into t1 values ('<27>');
|
||||
select a, hex(a) from t1 order by a;
|
||||
drop table t1;
|
||||
|
||||
create table t1 (a set ('x','y','z','<27>','<27>','<27>') character set ucs2);
|
||||
show create table t1;
|
||||
insert into t1 values ('x');
|
||||
insert into t1 values ('y');
|
||||
insert into t1 values ('z');
|
||||
insert into t1 values ('x,y');
|
||||
insert into t1 values ('x,y,z,<2C>,<2C>,<2C>');
|
||||
select a, hex(a) from t1 order by a;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#7302 UCS2 data in ENUM fields get truncated when new column is added
|
||||
#
|
||||
create table t1(a enum('a','b','c')) default character set ucs2;
|
||||
insert into t1 values('a'),('b'),('c');
|
||||
alter table t1 add b char(1);
|
||||
show warnings;
|
||||
select * from t1 order by a;
|
||||
drop table t1;
|
||||
|
||||
SET collation_connection='ucs2_general_ci';
|
||||
-- source include/ctype_filesort.inc
|
||||
SET NAMES latin1;
|
||||
SET collation_connection='ucs2_bin';
|
||||
-- source include/ctype_filesort.inc
|
||||
|
||||
SET NAMES latin1;
|
||||
#
|
||||
# Bug#8235
|
||||
#
|
||||
# This bug also helped to find another problem that
|
||||
# INSERT of a UCS2 string containing a negative number
|
||||
# into a unsigned int column didn't produce warnings.
|
||||
# This test covers both problems.
|
||||
#
|
||||
SET collation_connection='ucs2_swedish_ci';
|
||||
CREATE TABLE t1 (Field1 int(10) default '0');
|
||||
# no warnings, negative numbers are allowed
|
||||
INSERT INTO t1 VALUES ('-1');
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (Field1 int(10) unsigned default '0');
|
||||
# this should generate a "Data truncated" warning
|
||||
INSERT INTO t1 VALUES ('-1');
|
||||
DROP TABLE t1;
|
||||
SET NAMES latin1;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -645,6 +645,7 @@ insert into t1 values(1,'foo'),(2,'foobar');
|
||||
select * from t1 where b like 'foob%';
|
||||
--disable_warnings
|
||||
alter table t1 engine=bdb;
|
||||
--enable_warnings
|
||||
select * from t1 where b like 'foob%';
|
||||
drop table t1;
|
||||
|
||||
@ -659,3 +660,41 @@ create table t2 select concat(a,_utf8'') as a, concat(b,_utf8'')as b from t1;
|
||||
show create table t2;
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #6787 LIKE not working properly with _ and utf8 data
|
||||
#
|
||||
select 'c' like '\_' as want0;
|
||||
|
||||
#
|
||||
# Bug #7730 Server crash using soundex on an utf8 table
|
||||
#
|
||||
create table t1 (id integer, a varchar(100) character set utf8 collate utf8_unicode_ci);
|
||||
insert into t1 values (1, 'Test');
|
||||
select * from t1 where soundex(a) = soundex('Test');
|
||||
select * from t1 where soundex(a) = soundex('TEST');
|
||||
select * from t1 where soundex(a) = soundex('test');
|
||||
drop table t1;
|
||||
|
||||
|
||||
SET collation_connection='utf8_general_ci';
|
||||
-- source include/ctype_filesort.inc
|
||||
SET collation_connection='utf8_bin';
|
||||
-- source include/ctype_filesort.inc
|
||||
|
||||
#
|
||||
# Bug #7874 CONCAT() gives wrong results mixing
|
||||
# latin1 field and utf8 string literals
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
user varchar(255) NOT NULL default ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
|
||||
INSERT INTO t1 VALUES ('one'),('two');
|
||||
SELECT CHARSET('a');
|
||||
SELECT user, CONCAT('<', user, '>') AS c FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#8385: utf8_general_ci treats Cyrillic letters I and SHORT I as the same
|
||||
#
|
||||
select convert(_koi8r'<27>' using utf8) < convert(_koi8r'<27>' using utf8);
|
||||
|
@ -166,6 +166,8 @@ select date,format,cast(str_to_date(date, format) as datetime) as datetime from
|
||||
select date,format,DATE(str_to_date(date, format)) as date2 from t1;
|
||||
select date,format,TIME(str_to_date(date, format)) as time from t1;
|
||||
select date,format,concat(TIME(str_to_date(date, format))) as time2 from t1;
|
||||
# Test small bug in %f handling
|
||||
select concat('',str_to_date('8:11:2.123456 03-01-02','%H:%i:%S.%f %y-%m-%d'));
|
||||
|
||||
# Test wrong dates or converion specifiers
|
||||
|
||||
|
@ -14,7 +14,7 @@ insert delayed into t1 set a = 4;
|
||||
insert delayed into t1 set a = 5, tmsp = 19711006010203;
|
||||
insert delayed into t1 (a, tmsp) values (6, 19711006010203);
|
||||
insert delayed into t1 (a, tmsp) values (7, NULL);
|
||||
--sleep 1
|
||||
--sleep 2
|
||||
insert into t1 set a = 8,tmsp=19711006010203;
|
||||
select * from t1 where tmsp=0;
|
||||
select * from t1 where tmsp=19711006010203;
|
||||
|
@ -29,12 +29,34 @@ drop table t1;
|
||||
# (This assumes a block size of 1024)
|
||||
#
|
||||
|
||||
create table t1 (a bigint not null, primary key (a,a,a,a,a,a,a,a,a,a));
|
||||
insert into t1 values (2),(4),(6),(8),(10),(12),(14),(16),(18),(20),(22),(24),(26),(23);
|
||||
create table t1 (
|
||||
a bigint not null,
|
||||
b bigint not null default 0,
|
||||
c bigint not null default 0,
|
||||
d bigint not null default 0,
|
||||
e bigint not null default 0,
|
||||
f bigint not null default 0,
|
||||
g bigint not null default 0,
|
||||
h bigint not null default 0,
|
||||
i bigint not null default 0,
|
||||
j bigint not null default 0,
|
||||
primary key (a,b,c,d,e,f,g,h,i,j));
|
||||
insert into t1 (a) values (2),(4),(6),(8),(10),(12),(14),(16),(18),(20),(22),(24),(26),(23);
|
||||
delete from t1 where a=26;
|
||||
drop table t1;
|
||||
create table t1 (a bigint not null, primary key (a,a,a,a,a,a,a,a,a,a));
|
||||
insert into t1 values (2),(4),(6),(8),(10),(12),(14),(16),(18),(20),(22),(24),(26),(23),(27);
|
||||
create table t1 (
|
||||
a bigint not null,
|
||||
b bigint not null default 0,
|
||||
c bigint not null default 0,
|
||||
d bigint not null default 0,
|
||||
e bigint not null default 0,
|
||||
f bigint not null default 0,
|
||||
g bigint not null default 0,
|
||||
h bigint not null default 0,
|
||||
i bigint not null default 0,
|
||||
j bigint not null default 0,
|
||||
primary key (a,b,c,d,e,f,g,h,i,j));
|
||||
insert into t1 (a) values (2),(4),(6),(8),(10),(12),(14),(16),(18),(20),(22),(24),(26),(23),(27);
|
||||
delete from t1 where a=27;
|
||||
drop table t1;
|
||||
|
||||
@ -119,3 +141,14 @@ delete t1 from t1 where a = 3;
|
||||
check table t1;
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #8392: delete with ORDER BY containing a direct reference to the table
|
||||
#
|
||||
|
||||
CREATE TABLE t1 ( a int PRIMARY KEY );
|
||||
DELETE FROM t1 WHERE t1.a > 0 ORDER BY t1.a;
|
||||
INSERT INTO t1 VALUES (0),(1),(2);
|
||||
DELETE FROM t1 WHERE t1.a > 0 ORDER BY t1.a LIMIT 1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
@ -214,3 +214,25 @@ CREATE TABLE `t1` ( `itemid` int(11) NOT NULL default '0', `grpid` varchar(15) N
|
||||
insert into t1 values (128, 'rozn', 2, now(), 10),(128, 'rozn', 1, now(), 10);
|
||||
SELECT MIN(price) min, MAX(price) max, AVG(price) avg FROM (SELECT SUBSTRING( MAX(concat(date_,";",price)), 12) price FROM t1 WHERE itemid=128 AND grpid='rozn' GROUP BY itemid, grpid, vendor) lastprices;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# DISTINCT over grouped select on subquery in the FROM clause
|
||||
#
|
||||
create table t1 (a integer, b integer);
|
||||
insert into t1 values (1,4), (2,2),(2,2), (4,1),(4,1),(4,1),(4,1);
|
||||
select distinct sum(b) from t1 group by a;
|
||||
select distinct sum(b) from (select a,b from t1) y group by a;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# test of union subquery in the FROM clause with complex distinct/all (BUG#6565)
|
||||
#
|
||||
create table t1(a int);
|
||||
create table t2(a int);
|
||||
create table t3(a int);
|
||||
insert into t1 values(1),(1);
|
||||
insert into t2 values(2),(2);
|
||||
insert into t3 values(3),(3);
|
||||
select * from t1 union distinct select * from t2 union all select * from t3;
|
||||
select * from (select * from t1 union distinct select * from t2 union all select * from t3) X;
|
||||
drop table t1, t2, t3;
|
||||
|
@ -2,6 +2,8 @@
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
drop database if exists mysqltest;
|
||||
# If earlier test failed
|
||||
drop database if exists client_test_db;
|
||||
--enable_warnings
|
||||
|
||||
--error 1051;
|
||||
|
@ -4,7 +4,9 @@ connection con1;
|
||||
reset master;
|
||||
create database `drop-temp+table-test`;
|
||||
use `drop-temp+table-test`;
|
||||
create temporary table shortn1 (a int);
|
||||
create temporary table `table:name` (a int);
|
||||
create temporary table shortn2 (a int);
|
||||
select get_lock("a",10);
|
||||
disconnect con1;
|
||||
|
||||
@ -15,5 +17,6 @@ connection con2;
|
||||
select get_lock("a",10);
|
||||
let $VERSION=`select version()`;
|
||||
--replace_result $VERSION VERSION
|
||||
--replace_column 2 # 5 #
|
||||
show binlog events;
|
||||
drop database `drop-temp+table-test`;
|
||||
|
@ -7,13 +7,7 @@
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
select 'a' = 'a', 'a' = 'a ', 'a ' = 'a';
|
||||
select 'a\0' = 'a', 'a\0' < 'a', 'a\0' > 'a';
|
||||
select 'a' = 'a\0', 'a' < 'a\0', 'a' > 'a\0';
|
||||
select 'a\0' = 'a ', 'a\0' < 'a ', 'a\0' > 'a ';
|
||||
select 'a ' = 'a\0', 'a ' < 'a\0', 'a ' > 'a\0';
|
||||
select 'a a' > 'a', 'a \0' < 'a';
|
||||
select binary 'a a' > 'a', binary 'a \0' > 'a', binary 'a\0' > 'a';
|
||||
-- source include/endspace.inc
|
||||
|
||||
#
|
||||
# Test MyISAM tables.
|
||||
|
@ -1,6 +1,7 @@
|
||||
# Let's see if FLUSH TABLES WITH READ LOCK blocks COMMIT of existing
|
||||
# transactions.
|
||||
# We verify that we did not introduce a deadlock.
|
||||
# This is intended to mimick how mysqldump and innobackup work.
|
||||
|
||||
-- source include/have_innodb.inc
|
||||
|
||||
@ -48,5 +49,26 @@ reap;
|
||||
connection con3;
|
||||
reap;
|
||||
unlock tables;
|
||||
|
||||
# BUG#6732 FLUSH TABLES WITH READ LOCK + COMMIT hangs later FLUSH TABLES
|
||||
# WITH READ LOCK
|
||||
|
||||
connection con2;
|
||||
commit; # unlock InnoDB row locks to allow insertions
|
||||
connection con1;
|
||||
begin;
|
||||
insert into t1 values(10);
|
||||
flush tables with read lock;
|
||||
commit;
|
||||
unlock tables;
|
||||
connection con2;
|
||||
flush tables with read lock; # bug caused hang here
|
||||
unlock tables;
|
||||
|
||||
# BUG#7358 SHOW CREATE DATABASE fails if open transaction
|
||||
|
||||
begin;
|
||||
select * from t1;
|
||||
show create database test;
|
||||
|
||||
drop table t1;
|
||||
|
@ -67,6 +67,7 @@ select * from t1 where MATCH a,b AGAINST ('"xt indexes"' IN BOOLEAN MODE);
|
||||
|
||||
select * from t1 where MATCH a,b AGAINST ('+(support collections) +foobar*' IN BOOLEAN MODE);
|
||||
select * from t1 where MATCH a,b AGAINST ('+(+(support collections)) +foobar*' IN BOOLEAN MODE);
|
||||
select * from t1 where MATCH a,b AGAINST ('+collections -supp* -foobar*' IN BOOLEAN MODE);
|
||||
select * from t1 where MATCH a,b AGAINST ('"xt indexes"' IN BOOLEAN MODE);
|
||||
|
||||
# bug#2708, bug#3870 crash
|
||||
@ -98,6 +99,8 @@ select * from t1 where match a against ("+aaa* +bbb*" in boolean mode);
|
||||
select * from t1 where match a against ("+aaa* +bbb1*" in boolean mode);
|
||||
select * from t1 where match a against ("+aaa* +ccc*" in boolean mode);
|
||||
select * from t1 where match a against ("+aaa10 +(bbb*)" in boolean mode);
|
||||
select * from t1 where match a against ("+(+aaa* +bbb1*)" in boolean mode);
|
||||
select * from t1 where match a against ("(+aaa* +bbb1*)" in boolean mode);
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
@ -253,9 +256,16 @@ select * from t1 join t2 using(`t1_id`) where match (t1.name, t2.name) against('
|
||||
# bug with many short (< ft_min_word_len) words in boolean search
|
||||
#
|
||||
select * from t2 where match name against ('a* b* c* d* e* f*' in boolean mode);
|
||||
|
||||
drop table t1,t2;
|
||||
|
||||
#
|
||||
# bug with repair-by-sort and incorrect records estimation
|
||||
#
|
||||
|
||||
create table t1 (a text, fulltext key (a));
|
||||
insert into t1 select "xxxx yyyy zzzz";
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# UTF8
|
||||
#
|
||||
@ -272,7 +282,7 @@ SELECT t, collation(t) FROM t1 WHERE MATCH t AGAINST ('Osnabr
|
||||
SET NAMES latin1;
|
||||
SELECT t, collation(t) FROM t1 WHERE MATCH t AGAINST ('Osnabr<62>ck');
|
||||
SELECT t, collation(t) FROM t1 WHERE MATCH t AGAINST ('Osnabrueck');
|
||||
SELECT t, collation(t),MATCH t AGAINST ('Osnabruck') FROM t1 WHERE MATCH t AGAINST ('Osnabruck');
|
||||
SELECT t, collation(t),FORMAT(MATCH t AGAINST ('Osnabruck'),6) FROM t1 WHERE MATCH t AGAINST ('Osnabruck');
|
||||
#alter table t1 modify t text character set latin1 collate latin1_german2_ci not null;
|
||||
alter table t1 modify t varchar(200) collate latin1_german2_ci not null;
|
||||
SELECT t, collation(t) FROM t1 WHERE MATCH t AGAINST ('Osnabr<62>ck');
|
||||
@ -288,3 +298,43 @@ insert into t1 (s) values ('p
|
||||
select * from t1 where match(s) against('para' in boolean mode);
|
||||
select * from t1 where match(s) against('par*' in boolean mode);
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# icc -ip bug (ip = interprocedural optimization)
|
||||
# bug#5528
|
||||
#
|
||||
CREATE TABLE t1 (h text, FULLTEXT (h));
|
||||
INSERT INTO t1 VALUES ('Jesses Hasse Ling and his syncopators of Swing');
|
||||
REPAIR TABLE t1;
|
||||
select count(*) from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# testing out of bounds memory access in ft_nlq_find_relevance()
|
||||
# (bug#8522); visible in valgrind.
|
||||
#
|
||||
CREATE TABLE t1 ( a TEXT, FULLTEXT (a) );
|
||||
INSERT INTO t1 VALUES ('testing ft_nlq_find_relevance');
|
||||
SELECT MATCH(a) AGAINST ('nosuchword') FROM t1;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# bug#6784
|
||||
# mi_flush_bulk_insert (on dup key error in mi_write)
|
||||
# was mangling info->dupp_key_pos
|
||||
#
|
||||
|
||||
create table t1 (a int primary key, b text, fulltext(b));
|
||||
create table t2 (a int, b text);
|
||||
insert t1 values (1, "aaaa"), (2, "bbbb");
|
||||
insert t2 values (10, "aaaa"), (2, "cccc");
|
||||
replace t1 select * from t2;
|
||||
drop table t1, t2;
|
||||
|
||||
#
|
||||
# bug#8351
|
||||
#
|
||||
CREATE TABLE t1 (t VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci, FULLTEXT (t));
|
||||
SET NAMES latin1;
|
||||
INSERT INTO t1 VALUES('Mit freundlichem Gr<47><72> aus Osnabr<62>ck');
|
||||
SELECT COUNT(*) FROM t1 WHERE MATCH(t) AGAINST ('"osnabr<62>ck"' IN BOOLEAN MODE);
|
||||
DROP TABLE t1;
|
||||
|
@ -29,13 +29,13 @@ INSERT INTO t2 VALUES (6,2,'um chocolate Snickers');
|
||||
INSERT INTO t2 VALUES (7,1,'Bife');
|
||||
INSERT INTO t2 VALUES (8,1,'Pizza de Salmao');
|
||||
|
||||
SELECT t1.q, t2.item, t2.id, round(MATCH t2.item AGAINST ('sushi'),8)
|
||||
SELECT t1.q, t2.item, t2.id, round(MATCH t2.item AGAINST ('sushi'),6)
|
||||
as x FROM t1, t2 WHERE (t2.id2 = t1.id) ORDER BY x DESC,t2.id;
|
||||
|
||||
SELECT t1.q, t2.item, t2.id, MATCH t2.item AGAINST ('sushi' IN BOOLEAN MODE)
|
||||
as x FROM t1, t2 WHERE (t2.id2 = t1.id) ORDER BY x DESC,t2.id;
|
||||
|
||||
SELECT t1.q, t2.item, t2.id, round(MATCH t2.item AGAINST ('sushi'),8)
|
||||
SELECT t1.q, t2.item, t2.id, round(MATCH t2.item AGAINST ('sushi'),6)
|
||||
as x FROM t2, t1 WHERE (t2.id2 = t1.id) ORDER BY x DESC,t2.id;
|
||||
|
||||
SELECT t1.q, t2.item, t2.id, MATCH t2.item AGAINST ('sushi' IN BOOLEAN MODE)
|
||||
|
@ -10,25 +10,25 @@ CREATE TABLE t1 (
|
||||
INSERT INTO t1 (message) VALUES ("Testing"),("table"),("testbug"),
|
||||
("steve"),("is"),("cool"),("steve is cool");
|
||||
# basic MATCH
|
||||
SELECT a, MATCH (message) AGAINST ('steve') FROM t1 WHERE MATCH (message) AGAINST ('steve');
|
||||
SELECT a, FORMAT(MATCH (message) AGAINST ('steve'),6) FROM t1 WHERE MATCH (message) AGAINST ('steve');
|
||||
SELECT a, MATCH (message) AGAINST ('steve' IN BOOLEAN MODE) FROM t1 WHERE MATCH (message) AGAINST ('steve');
|
||||
SELECT a, MATCH (message) AGAINST ('steve') FROM t1 WHERE MATCH (message) AGAINST ('steve' IN BOOLEAN MODE);
|
||||
SELECT a, FORMAT(MATCH (message) AGAINST ('steve'),6) FROM t1 WHERE MATCH (message) AGAINST ('steve' IN BOOLEAN MODE);
|
||||
SELECT a, MATCH (message) AGAINST ('steve' IN BOOLEAN MODE) FROM t1 WHERE MATCH (message) AGAINST ('steve' IN BOOLEAN MODE);
|
||||
|
||||
# MATCH + ORDER BY (with ft-ranges)
|
||||
SELECT a, MATCH (message) AGAINST ('steve') FROM t1 WHERE MATCH (message) AGAINST ('steve') ORDER BY a;
|
||||
SELECT a, FORMAT(MATCH (message) AGAINST ('steve'),6) FROM t1 WHERE MATCH (message) AGAINST ('steve') ORDER BY a;
|
||||
SELECT a, MATCH (message) AGAINST ('steve' IN BOOLEAN MODE) FROM t1 WHERE MATCH (message) AGAINST ('steve' IN BOOLEAN MODE) ORDER BY a;
|
||||
|
||||
# MATCH + ORDER BY (with normal ranges) + UNIQUE
|
||||
SELECT a, MATCH (message) AGAINST ('steve') FROM t1 WHERE a in (2,7,4) and MATCH (message) AGAINST ('steve') ORDER BY a DESC;
|
||||
SELECT a, FORMAT(MATCH (message) AGAINST ('steve'),6) FROM t1 WHERE a in (2,7,4) and MATCH (message) AGAINST ('steve') ORDER BY a DESC;
|
||||
SELECT a, MATCH (message) AGAINST ('steve' IN BOOLEAN MODE) FROM t1 WHERE a in (2,7,4) and MATCH (message) AGAINST ('steve' IN BOOLEAN MODE) ORDER BY a DESC;
|
||||
|
||||
# MATCH + ORDER BY + UNIQUE (const_table)
|
||||
SELECT a, MATCH (message) AGAINST ('steve') FROM t1 WHERE a=7 and MATCH (message) AGAINST ('steve') ORDER BY 1;
|
||||
SELECT a, FORMAT(MATCH (message) AGAINST ('steve'),6) FROM t1 WHERE a=7 and MATCH (message) AGAINST ('steve') ORDER BY 1;
|
||||
SELECT a, MATCH (message) AGAINST ('steve' IN BOOLEAN MODE) FROM t1 WHERE a=7 and MATCH (message) AGAINST ('steve' IN BOOLEAN MODE) ORDER BY 1;
|
||||
|
||||
# ORDER BY MATCH
|
||||
SELECT a, MATCH (message) AGAINST ('steve') as rel FROM t1 ORDER BY rel;
|
||||
SELECT a, FORMAT(MATCH (message) AGAINST ('steve'),6) as rel FROM t1 ORDER BY rel;
|
||||
SELECT a, MATCH (message) AGAINST ('steve' IN BOOLEAN MODE) as rel FROM t1 ORDER BY rel;
|
||||
|
||||
drop table t1;
|
||||
|
@ -38,7 +38,10 @@ drop table t1;
|
||||
|
||||
#
|
||||
# Bug #5497: a problem with large strings
|
||||
# note that when LOW_MEMORY is set the "test" below is meaningless
|
||||
#
|
||||
|
||||
set @@max_allowed_packet=1048576*100;
|
||||
select compress(repeat('aaaaaaaaaa', 10000000)) is null;
|
||||
--replace_result "''" XXX "'1'" XXX
|
||||
eval select compress(repeat('aaaaaaaaaa', IF('$LOW_MEMORY', 10, 10000000))) is null;
|
||||
|
||||
|
@ -34,3 +34,19 @@ create table t1 (a char(4), b double, c date, d tinyint(4));
|
||||
insert into t1 values ('AAAA', 105, '2003-03-01', 1);
|
||||
select * from t1 where concat(A,C,B,D) = 'AAAA2003-03-011051';
|
||||
drop table t1;
|
||||
|
||||
# BUG#6825
|
||||
select 'a' union select concat('a', -4);
|
||||
select 'a' union select concat('a', -4.5);
|
||||
|
||||
select 'a' union select concat('a', -(4 + 1));
|
||||
select 'a' union select concat('a', 4 - 5);
|
||||
|
||||
select 'a' union select concat('a', -'3');
|
||||
select 'a' union select concat('a', -concat('3',4));
|
||||
|
||||
select 'a' union select concat('a', -0);
|
||||
|
||||
--replace_result 'a-0.0' good 'a0.0' good
|
||||
select 'a' union select concat('a', -0.0);
|
||||
|
||||
|
@ -277,3 +277,10 @@ select group_concat(b order by b) from t1 group by a;
|
||||
select group_concat(distinct b order by b) from t1 group by a;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# bug #7769: group_concat returning null is checked in having
|
||||
#
|
||||
CREATE TABLE t1 (id int);
|
||||
SELECT GROUP_CONCAT(id) AS gc FROM t1 HAVING gc IS NULL;
|
||||
DROP TABLE t1;
|
||||
|
@ -383,6 +383,17 @@ insert into t1 values ('a'),('b'),('c');
|
||||
select coercibility(max(a)) from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #6658 MAX(column) returns incorrect coercibility
|
||||
#
|
||||
create table t1 (a char character set latin2);
|
||||
insert into t1 values ('a'),('b');
|
||||
select charset(max(a)), coercibility(max(a)),
|
||||
charset(min(a)), coercibility(min(a)) from t1;
|
||||
create table t2 select max(a),min(a) from t1;
|
||||
show create table t2;
|
||||
drop table t2,t1;
|
||||
|
||||
#
|
||||
# aggregate functions on static tables
|
||||
#
|
||||
@ -462,3 +473,17 @@ INSERT INTO t1 VALUES
|
||||
|
||||
select val, count(*) from t1 group by val;
|
||||
drop table t1;
|
||||
|
||||
|
||||
#
|
||||
# Bug 7833: Wrong datatype of aggregate column is returned
|
||||
#
|
||||
|
||||
create table t1(f1 datetime);
|
||||
insert into t1 values (now());
|
||||
create table t2 select f2 from (select max(now()) f2 from t1) a;
|
||||
show columns from t2;
|
||||
drop table t2;
|
||||
create table t2 select f2 from (select now() f2 from t1) a;
|
||||
show columns from t2;
|
||||
drop table t2, t1;
|
||||
|
@ -80,6 +80,11 @@ create table t1 (a char(10) character set utf8 not null);
|
||||
insert into t1 values ('bbbb'),(_koi8r'<27><><EFBFBD><EFBFBD>'),(_latin1'<27><><EFBFBD><EFBFBD>');
|
||||
select a from t1 where a in ('bbbb',_koi8r'<27><><EFBFBD><EFBFBD>',_latin1'<27><><EFBFBD><EFBFBD>') order by a;
|
||||
drop table t1;
|
||||
# Bug#7834 Illegal mix of collations in IN operator
|
||||
create table t1 (a char(10) character set latin1 not null);
|
||||
insert into t1 values ('a'),('b'),('c');
|
||||
select a from t1 where a IN ('a','b','c') order by a;
|
||||
drop table t1;
|
||||
set names latin1;
|
||||
|
||||
select '1.0' in (1,2);
|
||||
@ -89,3 +94,10 @@ select 1 in ('1.0',2.0);
|
||||
select 1 in (1.0,'2.0');
|
||||
select 1 in ('1.1',2);
|
||||
select 1 in ('1.1',2.0);
|
||||
|
||||
# Test case for bug #6365
|
||||
|
||||
create table t1 (a char(20) character set binary);
|
||||
insert into t1 values ('aa'), ('bb');
|
||||
select * from t1 where a in (NULL, 'aa');
|
||||
drop table t1;
|
||||
|
@ -51,3 +51,10 @@ SELECT ASIN(1.2-0.2);
|
||||
#select floor(log(16)/log(2));
|
||||
|
||||
explain extended select degrees(pi()),radians(360);
|
||||
|
||||
#
|
||||
# Bug #7281: problem with rand()
|
||||
#
|
||||
|
||||
--error 1054
|
||||
select rand(rand);
|
||||
|
@ -23,3 +23,18 @@ select length(format('nan', 2)) > 0;
|
||||
# Test for bug #628
|
||||
#
|
||||
select concat("$",format(2500,2));
|
||||
|
||||
# Test for BUG#7716
|
||||
create table t1 ( a timestamp );
|
||||
insert into t1 values ( '2004-01-06 12:34' );
|
||||
select a from t1 where left(a+0,6) in ( left(20040106,6) );
|
||||
select a from t1 where left(a+0,6) = ( left(20040106,6) );
|
||||
|
||||
select a from t1 where right(a+0,6) in ( right(20040106123400,6) );
|
||||
select a from t1 where right(a+0,6) = ( right(20040106123400,6) );
|
||||
|
||||
select a from t1 where mid(a+0,6,3) in ( mid(20040106123400,6,3) );
|
||||
select a from t1 where mid(a+0,6,3) = ( mid(20040106123400,6,3) );
|
||||
|
||||
drop table t1;
|
||||
|
||||
|
@ -54,6 +54,7 @@ select timediff("1997-12-31 23:59:59.000001","1997-12-30 01:01:01.000002");
|
||||
select timediff("1997-12-30 23:59:59.000001","1997-12-31 23:59:59.000002");
|
||||
select timediff("1997-12-31 23:59:59.000001","23:59:59.000001");
|
||||
select timediff("2000:01:01 00:00:00", "2000:01:01 00:00:00.000001");
|
||||
select timediff("2005-01-11 15:48:49.999999", "2005-01-11 15:48:50");
|
||||
--enable_ps_protocol
|
||||
|
||||
select maketime(10,11,12);
|
||||
|
@ -82,6 +82,12 @@ select unhex(hex("foobar")), hex(unhex("1234567890ABCDEF")), unhex("345678"), un
|
||||
select hex(unhex("1")), hex(unhex("12")), hex(unhex("123")), hex(unhex("1234")), hex(unhex("12345")), hex(unhex("123456"));
|
||||
select length(unhex(md5("abrakadabra")));
|
||||
|
||||
#
|
||||
# Bug #6564: QUOTE(NULL
|
||||
#
|
||||
|
||||
select concat('a', quote(NULL));
|
||||
|
||||
#
|
||||
# Wrong usage of functions
|
||||
#
|
||||
@ -189,6 +195,18 @@ select trim(trailing 'foo' from 'foo');
|
||||
select trim(leading 'foo' from 'foo');
|
||||
|
||||
#
|
||||
# crashing bug with QUOTE() and LTRIM() or TRIM() fixed
|
||||
# Bug #7495
|
||||
#
|
||||
|
||||
select quote(ltrim(concat(' ', 'a')));
|
||||
select quote(trim(concat(' ', 'a')));
|
||||
|
||||
# Bad results from QUOTE(). Bug #8248
|
||||
CREATE TABLE t1 SELECT 1 UNION SELECT 2 UNION SELECT 3;
|
||||
SELECT QUOTE('A') FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
# Test collation and coercibility
|
||||
#
|
||||
|
||||
@ -415,3 +433,52 @@ drop table t1;
|
||||
#
|
||||
|
||||
select left(1234, 3) + 0;
|
||||
|
||||
#
|
||||
# Bug #7101: bug with LEFT() when used as a field in GROUP BY aggregation
|
||||
#
|
||||
create table t1 (a int not null primary key, b varchar(40), c datetime);
|
||||
insert into t1 (a,b,c) values (1,'Tom','2004-12-10 12:13:14'),(2,'ball games','2004-12-10 12:13:14'), (3,'Basil','2004-12-10 12:13:14'), (4,'Dean','2004-12-10 12:13:14'),(5,'Ellis','2004-12-10 12:13:14'), (6,'Serg','2004-12-10 12:13:14'), (7,'Sergei','2004-12-10 12:13:14'),(8,'Georg','2004-12-10 12:13:14'),(9,'Salle','2004-12-10 12:13:14'),(10,'Sinisa','2004-12-10 12:13:14');
|
||||
select count(*) as total, left(c,10) as reg from t1 group by reg order by reg desc limit 0,12;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#7455 unexpected result: TRIM(<NULL> FROM <whatever>) gives NOT NULL
|
||||
# According to ANSI if one of the TRIM arguments is NULL, then the result
|
||||
# must be NULL too.
|
||||
#
|
||||
select trim(null from 'kate') as "must_be_null";
|
||||
select trim('xyz' from null) as "must_be_null";
|
||||
|
||||
#
|
||||
# Bug #7751 - conversion for a bigint unsigned constant
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (
|
||||
id int(11) NOT NULL auto_increment,
|
||||
a bigint(20) unsigned default NULL,
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
INSERT INTO t1 VALUES
|
||||
('0','16307858876001849059');
|
||||
|
||||
SELECT CONV('e251273eb74a8ee3', 16, 10);
|
||||
|
||||
EXPLAIN
|
||||
SELECT id
|
||||
FROM t1
|
||||
WHERE a = 16307858876001849059;
|
||||
|
||||
EXPLAIN
|
||||
SELECT id
|
||||
FROM t1
|
||||
WHERE a = CONV('e251273eb74a8ee3', 16, 10);
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #6317: string function CHAR, parameter is NULL, wrong result
|
||||
#
|
||||
SELECT CHAR(NULL,121,83,81,'76') as my_column;
|
||||
SELECT CHAR_LENGTH(CHAR(NULL,121,83,81,'76')) as my_column;
|
||||
|
@ -229,6 +229,17 @@ select @a:=FROM_UNIXTIME(1);
|
||||
select unix_timestamp(@a);
|
||||
select unix_timestamp('1969-12-01 19:00:01');
|
||||
|
||||
#
|
||||
# Test for bug #6439 "unix_timestamp() function returns wrong datetime
|
||||
# values for too big argument" and bug #7515 "from_unixtime(0) now
|
||||
# returns NULL instead of the epoch". unix_timestamp() should return error
|
||||
# for too big or negative argument. It should return Epoch value for zero
|
||||
# argument since it seems that many user's rely on this fact.
|
||||
#
|
||||
select from_unixtime(-1);
|
||||
select from_unixtime(2145916800);
|
||||
select from_unixtime(0);
|
||||
|
||||
#
|
||||
# Test types from + INTERVAL
|
||||
#
|
||||
|
@ -118,3 +118,57 @@ CREATE TABLE t1 (
|
||||
INSERT INTO t1 (g) VALUES (GeomFromText('LineString(1 2, 2 3)')),(GeomFromText('LineString(1 2, 2 4)'));
|
||||
#select * from t1 where g<GeomFromText('LineString(1 2, 2 3)');
|
||||
drop table t1;
|
||||
|
||||
CREATE TABLE t1 (
|
||||
geoobjid INT NOT NULL,
|
||||
line LINESTRING NOT NULL,
|
||||
kind ENUM('po', 'pp', 'rr', 'dr', 'rd', 'ts', 'cl') NOT NULL DEFAULT 'po',
|
||||
name VARCHAR(32),
|
||||
|
||||
SPATIAL KEY (line)
|
||||
|
||||
|
||||
) engine=myisam;
|
||||
|
||||
ALTER TABLE t1 DISABLE KEYS;
|
||||
INSERT INTO t1 (name, kind, line) VALUES
|
||||
("Aadaouane", "pp", GeomFromText("POINT(32.816667 35.983333)")),
|
||||
("Aadassiye", "pp", GeomFromText("POINT(35.816667 36.216667)")),
|
||||
("Aadbel", "pp", GeomFromText("POINT(34.533333 36.100000)")),
|
||||
("Aadchit", "pp", GeomFromText("POINT(33.347222 35.423611)")),
|
||||
("Aadchite", "pp", GeomFromText("POINT(33.347222 35.423611)")),
|
||||
("Aadchit el Qoussair", "pp", GeomFromText("POINT(33.283333 35.483333)")),
|
||||
("Aaddaye", "pp", GeomFromText("POINT(36.716667 40.833333)")),
|
||||
("'Aadeissa", "pp", GeomFromText("POINT(32.823889 35.698889)")),
|
||||
("Aaderup", "pp", GeomFromText("POINT(55.216667 11.766667)")),
|
||||
("Qalaat Aades", "pp", GeomFromText("POINT(33.503333 35.377500)")),
|
||||
("A ad'ino", "pp", GeomFromText("POINT(54.812222 38.209167)")),
|
||||
("Aadi Noia", "pp", GeomFromText("POINT(13.800000 39.833333)")),
|
||||
("Aad La Macta", "pp", GeomFromText("POINT(35.779444 -0.129167)")),
|
||||
("Aadland", "pp", GeomFromText("POINT(60.366667 5.483333)")),
|
||||
("Aadliye", "pp", GeomFromText("POINT(33.366667 36.333333)")),
|
||||
("Aadloun", "pp", GeomFromText("POINT(33.403889 35.273889)")),
|
||||
("Aadma", "pp", GeomFromText("POINT(58.798333 22.663889)")),
|
||||
("Aadma Asundus", "pp", GeomFromText("POINT(58.798333 22.663889)")),
|
||||
("Aadmoun", "pp", GeomFromText("POINT(34.150000 35.650000)")),
|
||||
("Aadneram", "pp", GeomFromText("POINT(59.016667 6.933333)")),
|
||||
("Aadneskaar", "pp", GeomFromText("POINT(58.083333 6.983333)")),
|
||||
("Aadorf", "pp", GeomFromText("POINT(47.483333 8.900000)")),
|
||||
("Aadorp", "pp", GeomFromText("POINT(52.366667 6.633333)")),
|
||||
("Aadouane", "pp", GeomFromText("POINT(32.816667 35.983333)")),
|
||||
("Aadoui", "pp", GeomFromText("POINT(34.450000 35.983333)")),
|
||||
("Aadouiye", "pp", GeomFromText("POINT(34.583333 36.183333)")),
|
||||
("Aadouss", "pp", GeomFromText("POINT(33.512500 35.601389)")),
|
||||
("Aadra", "pp", GeomFromText("POINT(33.616667 36.500000)")),
|
||||
("Aadzi", "pp", GeomFromText("POINT(38.100000 64.850000)"));
|
||||
|
||||
ALTER TABLE t1 ENABLE KEYS;
|
||||
INSERT INTO t1 (name, kind, line) VALUES ("austria", "pp", GeomFromText('LINESTRING(14.9906 48.9887,14.9946 48.9904,14.9947 48.9916)'));
|
||||
drop table t1;
|
||||
|
||||
CREATE TABLE t1 (st varchar(100));
|
||||
INSERT INTO t1 VALUES ("Fake string");
|
||||
CREATE TABLE t2 (geom GEOMETRY NOT NULL, SPATIAL KEY gk(geom));
|
||||
--error 1105
|
||||
INSERT INTO t2 SELECT GeomFromText(st) FROM t1;
|
||||
drop table t1, t2;
|
||||
|
@ -284,3 +284,78 @@ drop table t1;
|
||||
create table t1 select POINT(1,3);
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
CREATE TABLE `t1` (`object_id` bigint(20) unsigned NOT NULL default '0', `geo`
|
||||
geometry NOT NULL default '') ENGINE=MyISAM ;
|
||||
|
||||
insert into t1 values ('85984',GeomFromText('MULTIPOLYGON(((-115.006363
|
||||
36.305435,-114.992394 36.305202,-114.991219 36.305975,-114.991163
|
||||
36.306845,-114.989432 36.309452,-114.978275 36.312642,-114.977363
|
||||
36.311978,-114.975327 36.312344,-114.96502 36.31597,-114.963364
|
||||
36.313629,-114.961723 36.313721,-114.956398 36.316057,-114.951882
|
||||
36.320979,-114.947073 36.323475,-114.945207 36.326451,-114.945207
|
||||
36.326451,-114.944132 36.326061,-114.94003 36.326588,-114.924017
|
||||
36.334484,-114.923281 36.334146,-114.92564 36.331504,-114.94072
|
||||
36.319282,-114.945348 36.314812,-114.948091 36.314762,-114.951755
|
||||
36.316211,-114.952446 36.313883,-114.952644 36.309488,-114.944725
|
||||
36.313083,-114.93706 36.32043,-114.932478 36.323497,-114.924556
|
||||
36.327708,-114.922608 36.329715,-114.92009 36.328695,-114.912105
|
||||
36.323566,-114.901647 36.317952,-114.897436 36.313968,-114.895344
|
||||
36.309573,-114.891699 36.304398,-114.890569 36.303551,-114.886356
|
||||
36.302702,-114.885141 36.301351,-114.885709 36.297391,-114.892499
|
||||
36.290893,-114.902142 36.288974,-114.904941 36.288838,-114.905308
|
||||
36.289845,-114.906325 36.290395,-114.909916 36.289549,-114.914527
|
||||
36.287535,-114.918797 36.284423,-114.922982 36.279731,-114.924113
|
||||
36.277282,-114.924057 36.275817,-114.927733 36.27053,-114.929354
|
||||
36.269029,-114.929354 36.269029,-114.950856 36.268715,-114.950768
|
||||
36.264324,-114.960206 36.264293,-114.960301 36.268943,-115.006662
|
||||
36.268929,-115.008583 36.265619,-115.00665 36.264247,-115.006659
|
||||
36.246873,-115.006659 36.246873,-115.006838 36.247697,-115.010764
|
||||
36.247774,-115.015609 36.25113,-115.015765 36.254505,-115.029517
|
||||
36.254619,-115.038573 36.249317,-115.038573 36.249317,-115.023403
|
||||
36.25841,-115.023873 36.258994,-115.031845 36.259829,-115.03183
|
||||
36.261053,-115.025561 36.261095,-115.036417 36.274632,-115.033729
|
||||
36.276041,-115.032217 36.274851,-115.029845 36.273959,-115.029934
|
||||
36.274966,-115.025763 36.274896,-115.025406 36.281044,-115.028731
|
||||
36.284471,-115.036497 36.290377,-115.042071 36.291039,-115.026759
|
||||
36.298478,-115.008995 36.301966,-115.006363 36.305435),(-115.079835
|
||||
36.244369,-115.079735 36.260186,-115.076435 36.262369,-115.069758
|
||||
36.265,-115.070235 36.268757,-115.064542 36.268655,-115.061843
|
||||
36.269857,-115.062676 36.270693,-115.06305 36.272344,-115.059051
|
||||
36.281023,-115.05918 36.283008,-115.060591 36.285246,-115.061913
|
||||
36.290022,-115.062499 36.306353,-115.062499 36.306353,-115.060918
|
||||
36.30642,-115.06112 36.289779,-115.05713 36.2825,-115.057314
|
||||
36.279446,-115.060779 36.274659,-115.061366 36.27209,-115.057858
|
||||
36.26557,-115.055805 36.262883,-115.054688 36.262874,-115.047335
|
||||
36.25037,-115.044234 36.24637,-115.052434 36.24047,-115.061734
|
||||
36.23507,-115.061934 36.22677,-115.061934 36.22677,-115.061491
|
||||
36.225267,-115.062024 36.218194,-115.060134 36.218278,-115.060133
|
||||
36.210771,-115.057833 36.210771,-115.057433 36.196271,-115.062233
|
||||
36.196271,-115.062233 36.190371,-115.062233 36.190371,-115.065533
|
||||
36.190371,-115.071333 36.188571,-115.098331 36.188275,-115.098331
|
||||
36.188275,-115.098435 36.237569,-115.097535 36.240369,-115.097535
|
||||
36.240369,-115.093235 36.240369,-115.089135 36.240469,-115.083135
|
||||
36.240569,-115.083135 36.240569,-115.079835
|
||||
36.244369)))')),('85998',GeomFromText('MULTIPOLYGON(((-115.333107
|
||||
36.264587,-115.333168 36.280638,-115.333168 36.280638,-115.32226
|
||||
36.280643,-115.322538 36.274311,-115.327222 36.274258,-115.32733
|
||||
36.263026,-115.330675 36.262984,-115.332132 36.264673,-115.333107
|
||||
36.264587),(-115.247239 36.247066,-115.247438 36.218267,-115.247438
|
||||
36.218267,-115.278525 36.219263,-115.278525 36.219263,-115.301545
|
||||
36.219559,-115.332748 36.219197,-115.332757 36.220041,-115.332757
|
||||
36.220041,-115.332895 36.233514,-115.349023 36.233479,-115.351489
|
||||
36.234475,-115.353681 36.237021,-115.357106 36.239789,-115.36519
|
||||
36.243331,-115.368156 36.243487,-115.367389 36.244902,-115.364553
|
||||
36.246014,-115.359219 36.24616,-115.356186 36.248025,-115.353347
|
||||
36.248004,-115.350813 36.249507,-115.339673 36.25387,-115.333069
|
||||
36.255018,-115.333069 36.255018,-115.333042 36.247767,-115.279039
|
||||
36.248666,-115.263639 36.247466,-115.263839 36.252766,-115.261439
|
||||
36.252666,-115.261439 36.247366,-115.247239 36.247066)))'));
|
||||
|
||||
select object_id, geometrytype(geo), ISSIMPLE(GEO), ASTEXT(centroid(geo)) from
|
||||
t1 where object_id=85998;
|
||||
|
||||
select object_id, geometrytype(geo), ISSIMPLE(GEO), ASTEXT(centroid(geo)) from
|
||||
t1 where object_id=85984;
|
||||
|
||||
drop table t1;
|
||||
|
@ -5,6 +5,8 @@
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
connect (master,localhost,root,,);
|
||||
connection master;
|
||||
SET NAMES binary;
|
||||
|
||||
#
|
||||
@ -30,6 +32,23 @@ show grants for mysqltest_1@localhost;
|
||||
delete from mysql.user where user='mysqltest_1';
|
||||
flush privileges;
|
||||
|
||||
#
|
||||
# Test of GRANTS specifying user limits
|
||||
#
|
||||
delete from mysql.user where user='mysqltest_1';
|
||||
flush privileges;
|
||||
grant usage on *.* to mysqltest_1@localhost with max_queries_per_hour 10;
|
||||
select * from mysql.user where user="mysqltest_1";
|
||||
show grants for mysqltest_1@localhost;
|
||||
grant usage on *.* to mysqltest_1@localhost with max_updates_per_hour 20 max_connections_per_hour 30;
|
||||
select * from mysql.user where user="mysqltest_1";
|
||||
show grants for mysqltest_1@localhost;
|
||||
# This is just to double check that one won't ignore results of selects
|
||||
flush privileges;
|
||||
show grants for mysqltest_1@localhost;
|
||||
delete from mysql.user where user='mysqltest_1';
|
||||
flush privileges;
|
||||
|
||||
#
|
||||
# Test that the new db privileges are stored/retrieved correctly
|
||||
#
|
||||
@ -97,6 +116,30 @@ drop table t1;
|
||||
GRANT FILE on mysqltest.* to mysqltest_1@localhost;
|
||||
select 1; -- To test that the previous command didn't cause problems
|
||||
|
||||
#
|
||||
# Bug #4898: User privileges depending on ORDER BY Settings of table db
|
||||
#
|
||||
insert into mysql.user (host, user) values ('localhost', 'test11');
|
||||
insert into mysql.db (host, db, user, select_priv) values
|
||||
('localhost', 'a%', 'test11', 'Y'), ('localhost', 'ab%', 'test11', 'Y');
|
||||
alter table mysql.db order by db asc;
|
||||
flush privileges;
|
||||
show grants for test11@localhost;
|
||||
alter table mysql.db order by db desc;
|
||||
flush privileges;
|
||||
show grants for test11@localhost;
|
||||
delete from mysql.user where user='test11';
|
||||
delete from mysql.db where user='test11';
|
||||
|
||||
#
|
||||
# Bug#6123: GRANT USAGE inserts useless Db row
|
||||
#
|
||||
create database mysqltest1;
|
||||
grant usage on mysqltest1.* to test6123 identified by 'magic123';
|
||||
select host,db,user,select_priv,insert_priv from mysql.db where db="mysqltest1";
|
||||
delete from mysql.user where user='test6123';
|
||||
drop database mysqltest1;
|
||||
|
||||
#
|
||||
# Test for 'drop user', 'revoke privileges, grant'
|
||||
#
|
||||
@ -174,21 +217,6 @@ REVOKE SELECT (
|
||||
DROP DATABASE <20><>;
|
||||
SET NAMES latin1;
|
||||
|
||||
#
|
||||
# Bug #4898: User privileges depending on ORDER BY Settings of table db
|
||||
#
|
||||
insert into mysql.user (host, user) values ('localhost', 'test11');
|
||||
insert into mysql.db (host, db, user, select_priv) values
|
||||
('localhost', 'a%', 'test11', 'Y'), ('localhost', 'ab%', 'test11', 'Y');
|
||||
alter table mysql.db order by db asc;
|
||||
flush privileges;
|
||||
show grants for test11@localhost;
|
||||
alter table mysql.db order by db desc;
|
||||
flush privileges;
|
||||
show grants for test11@localhost;
|
||||
delete from mysql.user where user='test11';
|
||||
delete from mysql.db where user='test11';
|
||||
|
||||
#
|
||||
# Bug #5831: REVOKE ALL PRIVILEGES, GRANT OPTION does not revoke everything
|
||||
#
|
||||
@ -258,3 +286,86 @@ DROP DATABASE testdb8;
|
||||
DROP DATABASE testdb9;
|
||||
DROP DATABASE testdb10;
|
||||
|
||||
#
|
||||
# Bug #6932: a problem with 'revoke ALL PRIVILEGES'
|
||||
#
|
||||
|
||||
create table t1(a int, b int, c int, d int);
|
||||
grant insert(b), insert(c), insert(d), insert(a) on t1 to grant_user@localhost;
|
||||
show grants for grant_user@localhost;
|
||||
select Host,Db,User,Table_name,Column_name,Column_priv from mysql.columns_priv;
|
||||
revoke ALL PRIVILEGES on t1 from grant_user@localhost;
|
||||
show grants for grant_user@localhost;
|
||||
select Host,Db,User,Table_name,Column_name,Column_priv from mysql.columns_priv;
|
||||
drop user grant_user@localhost;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#7391: Cross-database multi-table UPDATE security problem
|
||||
#
|
||||
create database mysqltest_1;
|
||||
create database mysqltest_2;
|
||||
create table mysqltest_1.t1 select 1 a, 2 q;
|
||||
create table mysqltest_1.t2 select 1 b, 2 r;
|
||||
create table mysqltest_2.t1 select 1 c, 2 s;
|
||||
create table mysqltest_2.t2 select 1 d, 2 t;
|
||||
|
||||
#test the column privileges
|
||||
grant update (a) on mysqltest_1.t1 to mysqltest_3@localhost;
|
||||
grant select (b) on mysqltest_1.t2 to mysqltest_3@localhost;
|
||||
grant select (c) on mysqltest_2.t1 to mysqltest_3@localhost;
|
||||
grant update (d) on mysqltest_2.t2 to mysqltest_3@localhost;
|
||||
connect (conn1,localhost,mysqltest_3,,);
|
||||
connection conn1;
|
||||
show grants for mysqltest_3@localhost;
|
||||
--error 1143
|
||||
update mysqltest_1.t1, mysqltest_1.t2 set q=10 where b=1;
|
||||
--error 1143
|
||||
update mysqltest_1.t1, mysqltest_2.t2 set d=20 where d=1;
|
||||
--error 1143
|
||||
update mysqltest_2.t1, mysqltest_1.t2 set c=20 where b=1;
|
||||
--error 1143
|
||||
update mysqltest_2.t1, mysqltest_2.t2 set d=10 where s=2;
|
||||
#the following two should work
|
||||
update mysqltest_1.t1, mysqltest_2.t2 set a=10,d=10;
|
||||
update mysqltest_1.t1, mysqltest_2.t1 set a=20 where c=20;
|
||||
connection master;
|
||||
select t1.*,t2.* from mysqltest_1.t1,mysqltest_1.t2;
|
||||
select t1.*,t2.* from mysqltest_2.t1,mysqltest_2.t2;
|
||||
revoke all on mysqltest_1.t1 from mysqltest_3@localhost;
|
||||
revoke all on mysqltest_1.t2 from mysqltest_3@localhost;
|
||||
revoke all on mysqltest_2.t1 from mysqltest_3@localhost;
|
||||
revoke all on mysqltest_2.t2 from mysqltest_3@localhost;
|
||||
|
||||
#test the db/table level privileges
|
||||
grant all on mysqltest_2.* to mysqltest_3@localhost;
|
||||
grant select on *.* to mysqltest_3@localhost;
|
||||
flush privileges;
|
||||
disconnect conn1;
|
||||
connect (conn2,localhost,mysqltest_3,,);
|
||||
connection conn2;
|
||||
use mysqltest_1;
|
||||
update mysqltest_2.t1, mysqltest_2.t2 set c=500,d=600;
|
||||
# the following failed before, should fail now.
|
||||
--error 1143
|
||||
update mysqltest_1.t1, mysqltest_1.t2 set a=100,b=200;
|
||||
use mysqltest_2;
|
||||
#the following used to succeed, it must fail now.
|
||||
--error 1044
|
||||
update mysqltest_1.t1, mysqltest_1.t2 set a=100,b=200;
|
||||
--error 1044
|
||||
update mysqltest_2.t1, mysqltest_1.t2 set c=100,b=200;
|
||||
--error 1044
|
||||
update mysqltest_1.t1, mysqltest_2.t2 set a=100,d=200;
|
||||
#lets see the result
|
||||
connection master;
|
||||
select t1.*,t2.* from mysqltest_1.t1,mysqltest_1.t2;
|
||||
select t1.*,t2.* from mysqltest_2.t1,mysqltest_2.t2;
|
||||
|
||||
delete from mysql.user where user='mysqltest_3';
|
||||
delete from mysql.db where user="mysqltest_3";
|
||||
delete from mysql.tables_priv where user="mysqltest_3";
|
||||
delete from mysql.columns_priv where user="mysqltest_3";
|
||||
flush privileges;
|
||||
drop database mysqltest_1;
|
||||
drop database mysqltest_2;
|
||||
|
@ -50,10 +50,9 @@ flush privileges;
|
||||
use mysqltest;
|
||||
create table t1 (id int primary key, data varchar(255));
|
||||
|
||||
connect (mrbad, localhost, mysqltest_1,,);
|
||||
connect (mrbad, localhost, mysqltest_1,,mysqltest);
|
||||
connection mrbad;
|
||||
show grants for current_user();
|
||||
use mysqltest;
|
||||
insert into t1 values (1, 'I can''t change it!');
|
||||
--error 1044
|
||||
update t1 set data='I can change it!' where id = 1;
|
||||
@ -61,11 +60,32 @@ update t1 set data='I can change it!' where id = 1;
|
||||
--error 1044
|
||||
insert into t1 values (1, 'XXX') on duplicate key update data= 'I can change it!';
|
||||
select * from t1;
|
||||
disconnect mrbad;
|
||||
|
||||
connection default;
|
||||
drop table t1;
|
||||
drop database mysqltest;
|
||||
use test;
|
||||
delete from mysql.user where user like 'mysqltest\_%';
|
||||
delete from mysql.db where user like 'mysqltest\_%';
|
||||
flush privileges;
|
||||
|
||||
create table t1 (a int, b int);
|
||||
grant select (a) on t1 to mysqltest_1@localhost with grant option;
|
||||
connect (mrugly, localhost, mysqltest_1,,mysqltest);
|
||||
connection mrugly;
|
||||
--error 1143
|
||||
grant select (a,b) on t1 to mysqltest_2@localhost;
|
||||
--error 1142
|
||||
grant select on t1 to mysqltest_3@localhost;
|
||||
disconnect mrugly;
|
||||
|
||||
connection default;
|
||||
drop table t1;
|
||||
delete from mysql.user where user like 'mysqltest\_%';
|
||||
delete from mysql.db where user like 'mysqltest\_%';
|
||||
delete from mysql.tables_priv where user like 'mysqltest\_%';
|
||||
delete from mysql.columns_priv where user like 'mysqltest\_%';
|
||||
flush privileges;
|
||||
|
||||
drop database mysqltest;
|
||||
use test;
|
||||
|
||||
|
@ -457,6 +457,14 @@ SELECT i, COUNT(DISTINCT(i)) FROM t1 GROUP BY j ORDER BY NULL;
|
||||
explain SELECT i, COUNT(DISTINCT(i)) FROM t1 GROUP BY j ORDER BY NULL;
|
||||
DROP TABLE t1;
|
||||
|
||||
#Test for BUG#6976: Aggregate functions have incorrect NULL-ness
|
||||
create table t1 (a int);
|
||||
insert into t1 values(null);
|
||||
select min(a) is null from t1;
|
||||
select min(a) is null or null from t1;
|
||||
select 1 and min(a) is null from t1;
|
||||
drop table t1;
|
||||
|
||||
# Test for BUG#5400: GROUP_CONCAT returns everything twice.
|
||||
create table t1 ( col1 int, col2 int );
|
||||
insert into t1 values (1,1),(1,2),(1,3),(2,1),(2,2);
|
||||
@ -465,3 +473,19 @@ select group_concat( distinct col1 ) as alias from t1
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test BUG#8216 when referring in HAVING to n alias which is rand() function
|
||||
#
|
||||
|
||||
create table t1 (a integer, b integer, c integer);
|
||||
insert into t1 (a,b) values (1,2),(1,3),(2,5);
|
||||
select a, 0.1*0+1 r2, sum(1) r1 from t1 where a = 1 group by a having r1>1 and r2=1;
|
||||
# rand(100)*10 will be < 2 only for the first row (of 6)
|
||||
select a, round(rand(100)*10) r2, sum(1) r1 from t1 where a = 1 group by a having r1>1 and r2<=2;
|
||||
select a,sum(b) from t1 where a=1 group by c;
|
||||
select a*sum(b) from t1 where a=1 group by c;
|
||||
select sum(a)*sum(b) from t1 where a=1 group by c;
|
||||
select a,sum(b) from t1 where a=1 group by c having a=1;
|
||||
select a as d,sum(b) from t1 where a=1 group by c having d=1;
|
||||
select sum(a)*sum(b) as d from t1 where a=1 group by c having d > 0;
|
||||
drop table t1;
|
||||
|
@ -174,3 +174,24 @@ CREATE TABLE t1 (a INT NOT NULL, B INT, KEY(B)) ENGINE=HEAP;
|
||||
INSERT INTO t1 VALUES(1,1), (1,NULL);
|
||||
SELECT * FROM t1 WHERE B is not null;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #6748
|
||||
# heap_rfirst() doesn't work (and never did!)
|
||||
#
|
||||
CREATE TABLE t1 (pseudo char(35) PRIMARY KEY, date int(10) unsigned NOT NULL) ENGINE=HEAP;
|
||||
INSERT INTO t1 VALUES ('massecot',1101106491),('altec',1101106492),('stitch+',1101106304),('Seb Corgan',1101106305),('beerfilou',1101106263),('flaker',1101106529),('joce8',5),('M4vrick',1101106418),('gabay008',1101106525),('Vamp irX',1101106291),('ZoomZip',1101106546),('rip666',1101106502),('CBP ',1101106397),('guezpard',1101106496);
|
||||
DELETE FROM t1 WHERE date<1101106546;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #6878: a problem with small length records
|
||||
#
|
||||
|
||||
create table t1(a char(2)) engine=memory;
|
||||
insert into t1 values (NULL), (NULL);
|
||||
delete from t1 where a is null;
|
||||
insert into t1 values ('2'), ('3');
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
@ -3,7 +3,7 @@
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
drop table if exists t1,t2;
|
||||
--enable_warnings
|
||||
|
||||
create table t1 (a int not null,b int not null, primary key using HASH (a)) engine=heap comment="testing heaps" avg_row_length=100 min_rows=1 max_rows=100;
|
||||
@ -141,3 +141,119 @@ INSERT into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11);
|
||||
DELETE from t1 where a < 100;
|
||||
SELECT * from t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
#
|
||||
# Hash index # records estimate test
|
||||
#
|
||||
create table t1
|
||||
(
|
||||
a char(8) not null,
|
||||
b char(20) not null,
|
||||
c int not null,
|
||||
key (a)
|
||||
) engine=heap;
|
||||
|
||||
insert into t1 values ('aaaa', 'prefill-hash=5',0);
|
||||
insert into t1 values ('aaab', 'prefill-hash=0',0);
|
||||
insert into t1 values ('aaac', 'prefill-hash=7',0);
|
||||
insert into t1 values ('aaad', 'prefill-hash=2',0);
|
||||
insert into t1 values ('aaae', 'prefill-hash=1',0);
|
||||
insert into t1 values ('aaaf', 'prefill-hash=4',0);
|
||||
insert into t1 values ('aaag', 'prefill-hash=3',0);
|
||||
insert into t1 values ('aaah', 'prefill-hash=6',0);
|
||||
|
||||
explain select * from t1 where a='aaaa';
|
||||
explain select * from t1 where a='aaab';
|
||||
explain select * from t1 where a='aaac';
|
||||
explain select * from t1 where a='aaad';
|
||||
insert into t1 select * from t1;
|
||||
|
||||
explain select * from t1 where a='aaaa';
|
||||
explain select * from t1 where a='aaab';
|
||||
explain select * from t1 where a='aaac';
|
||||
explain select * from t1 where a='aaad';
|
||||
|
||||
# a known effect: table reload causes statistics to be updated:
|
||||
flush tables;
|
||||
explain select * from t1 where a='aaaa';
|
||||
explain select * from t1 where a='aaab';
|
||||
explain select * from t1 where a='aaac';
|
||||
explain select * from t1 where a='aaad';
|
||||
|
||||
# Check if delete_all_rows() updates #hash_buckets
|
||||
create table t2 as select * from t1;
|
||||
delete from t1;
|
||||
insert into t1 select * from t2;
|
||||
explain select * from t1 where a='aaaa';
|
||||
explain select * from t1 where a='aaab';
|
||||
explain select * from t1 where a='aaac';
|
||||
explain select * from t1 where a='aaad';
|
||||
drop table t1, t2;
|
||||
|
||||
|
||||
# Btree and hash index use costs.
|
||||
create table t1 (
|
||||
id int unsigned not null primary key auto_increment,
|
||||
name varchar(20) not null,
|
||||
index heap_idx(name),
|
||||
index btree_idx using btree(name)
|
||||
) engine=heap;
|
||||
|
||||
create table t2 (
|
||||
id int unsigned not null primary key auto_increment,
|
||||
name varchar(20) not null,
|
||||
index btree_idx using btree(name),
|
||||
index heap_idx(name)
|
||||
) engine=heap;
|
||||
|
||||
insert into t1 (name) values ('Matt'), ('Lilu'), ('Corbin'), ('Carly'),
|
||||
('Suzy'), ('Hoppy'), ('Burrito'), ('Mimi'), ('Sherry'), ('Ben'), ('Phil'),
|
||||
('Emily'), ('Mike');
|
||||
insert into t2 select * from t1;
|
||||
explain select * from t1 where name='matt';
|
||||
explain select * from t2 where name='matt';
|
||||
|
||||
explain select * from t1 where name='Lilu';
|
||||
explain select * from t2 where name='Lilu';
|
||||
|
||||
explain select * from t1 where name='Phil';
|
||||
explain select * from t2 where name='Phil';
|
||||
|
||||
explain select * from t1 where name='Lilu';
|
||||
explain select * from t2 where name='Lilu';
|
||||
|
||||
insert into t1 (name) select name from t2;
|
||||
insert into t1 (name) select name from t2;
|
||||
insert into t1 (name) select name from t2;
|
||||
insert into t1 (name) select name from t2;
|
||||
insert into t1 (name) select name from t2;
|
||||
insert into t1 (name) select name from t2;
|
||||
flush tables;
|
||||
select count(*) from t1 where name='Matt';
|
||||
explain select * from t1 ignore index (btree_idx) where name='matt';
|
||||
show index from t1;
|
||||
|
||||
show index from t1;
|
||||
|
||||
create table t3
|
||||
(
|
||||
a varchar(20) not null,
|
||||
b varchar(20) not null,
|
||||
key (a,b)
|
||||
) engine=heap;
|
||||
insert into t3 select name, name from t1;
|
||||
show index from t3;
|
||||
show index from t3;
|
||||
|
||||
# test rec_per_key use for joins.
|
||||
explain select * from t1 ignore key(btree_idx), t3 where t1.name='matt' and t3.a = concat('',t1.name) and t3.b=t1.name;
|
||||
|
||||
drop table t1, t2, t3;
|
||||
|
||||
# Fix for BUG#8371: wrong rec_per_key value for hash index on temporary table
|
||||
create temporary table t1 ( a int, index (a) ) engine=memory;
|
||||
insert into t1 values (1),(2),(3),(4),(5);
|
||||
select a from t1 where a in (1,3);
|
||||
explain select a from t1 where a in (1,3);
|
||||
drop table t1;
|
||||
|
@ -1110,6 +1110,7 @@ show create table t2;
|
||||
drop table t2;
|
||||
|
||||
# Test error handling
|
||||
--replace_result \\ /
|
||||
--error 1005
|
||||
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;
|
||||
|
||||
@ -1157,3 +1158,25 @@ show status like "binlog_cache_use";
|
||||
show status like "binlog_cache_disk_use";
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #6126: Duplicate columns in keys gives misleading error message
|
||||
#
|
||||
--error 1060
|
||||
create table t1 (c char(10), index (c,c)) engine=innodb;
|
||||
--error 1060
|
||||
create table t1 (c1 char(10), c2 char(10), index (c1,c2,c1)) engine=innodb;
|
||||
--error 1060
|
||||
create table t1 (c1 char(10), c2 char(10), index (c1,c1,c2)) engine=innodb;
|
||||
--error 1060
|
||||
create table t1 (c1 char(10), c2 char(10), index (c2,c1,c1)) engine=innodb;
|
||||
create table t1 (c1 char(10), c2 char(10)) engine=innodb;
|
||||
--error 1060
|
||||
alter table t1 add key (c1,c1);
|
||||
--error 1060
|
||||
alter table t1 add key (c2,c1,c1);
|
||||
--error 1060
|
||||
alter table t1 add key (c1,c2,c1);
|
||||
--error 1060
|
||||
alter table t1 add key (c1,c1,c2);
|
||||
drop table t1;
|
||||
|
@ -99,46 +99,57 @@ create table t1(number int auto_increment primary key, original_value varchar(50
|
||||
|
||||
set @value= "aa";
|
||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||
--replace_result e-0 e- e+0 e+
|
||||
--query_vertical select * from t1 where number =last_insert_id()
|
||||
|
||||
set @value= "1aa";
|
||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||
--replace_result e-0 e- e+0 e+
|
||||
--query_vertical select * from t1 where number =last_insert_id()
|
||||
|
||||
set @value= "aa1";
|
||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||
--replace_result e-0 e- e+0 e+
|
||||
--query_vertical select * from t1 where number =last_insert_id()
|
||||
|
||||
set @value= "1e+1111111111a";
|
||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||
--replace_result e-0 e- e+0 e+
|
||||
--query_vertical select * from t1 where number =last_insert_id()
|
||||
|
||||
set @value= "-1e+1111111111a";
|
||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||
--replace_result e-0 e- e+0 e+
|
||||
--query_vertical select * from t1 where number =last_insert_id()
|
||||
|
||||
set @value= 1e+1111111111;
|
||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||
--replace_result e-0 e- e+0 e+
|
||||
--query_vertical select * from t1 where number =last_insert_id()
|
||||
|
||||
set @value= -1e+1111111111;
|
||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||
--replace_result e-0 e- e+0 e+
|
||||
--query_vertical select * from t1 where number =last_insert_id()
|
||||
|
||||
set @value= 1e+111;
|
||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||
--replace_result e-0 e- e+0 e+
|
||||
--query_vertical select * from t1 where number =last_insert_id()
|
||||
|
||||
set @value= -1e+111;
|
||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||
--replace_result e-0 e- e+0 e+
|
||||
--query_vertical select * from t1 where number =last_insert_id()
|
||||
|
||||
set @value= 1;
|
||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||
--replace_result e-0 e- e+0 e+
|
||||
--query_vertical select * from t1 where number =last_insert_id()
|
||||
|
||||
set @value= -1;
|
||||
insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
|
||||
--replace_result e-0 e- e+0 e+
|
||||
--query_vertical select * from t1 where number =last_insert_id()
|
||||
|
||||
drop table t1;
|
||||
|
@ -89,6 +89,19 @@ show binlog events;
|
||||
select * from t1;
|
||||
drop table t1, t2;
|
||||
|
||||
# Verify that a partly-completed CREATE TABLE .. SELECT does not
|
||||
# get into the binlog (Bug #6682)
|
||||
create table t1(a int);
|
||||
insert into t1 values(1),(1);
|
||||
reset master;
|
||||
--error 1062
|
||||
create table t2(unique(a)) select a from t1;
|
||||
# The above should produce an error, *and* not appear in the binlog
|
||||
let $VERSION=`select version()`;
|
||||
--replace_result $VERSION VERSION
|
||||
show binlog events;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test of insert ... select from same table
|
||||
#
|
||||
@ -169,3 +182,18 @@ insert into t2 Select null, Field, Count From t1 Where Month=20030901 and Type=2
|
||||
select * from t2;
|
||||
|
||||
drop table t1, t2;
|
||||
|
||||
#
|
||||
# BUG#6034 - Error code 124: Wrong medium type
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
ID int(11) NOT NULL auto_increment,
|
||||
NO int(11) NOT NULL default '0',
|
||||
SEQ int(11) NOT NULL default '0',
|
||||
PRIMARY KEY (ID),
|
||||
KEY t1$NO (SEQ,NO)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t1 (SEQ, NO) SELECT "1" AS SEQ, IF(MAX(NO) IS NULL, 0, MAX(NO)) + 1 AS NO FROM t1 WHERE (SEQ = 1);
|
||||
select SQL_BUFFER_RESULT * from t1 WHERE (SEQ = 1);
|
||||
drop table t1;
|
||||
|
||||
|
@ -48,3 +48,35 @@ disable_info;
|
||||
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
# WorkLog #2274 - enable INSERT .. SELECT .. UPDATE syntax
|
||||
# Same tests as beginning of this test except that insert source
|
||||
# is a result from a select statement
|
||||
#
|
||||
CREATE TABLE t1 (a INT, b INT, c INT, UNIQUE (A), UNIQUE(B));
|
||||
INSERT t1 VALUES (1,2,10), (3,4,20);
|
||||
INSERT t1 SELECT 5,6,30 FROM DUAL ON DUPLICATE KEY UPDATE c=c+100;
|
||||
SELECT * FROM t1;
|
||||
INSERT t1 SELECT 5,7,40 FROM DUAL ON DUPLICATE KEY UPDATE c=c+100;
|
||||
SELECT * FROM t1;
|
||||
INSERT t1 SELECT 8,4,50 FROM DUAL ON DUPLICATE KEY UPDATE c=c+1000;
|
||||
SELECT * FROM t1;
|
||||
INSERT t1 SELECT 1,4,60 FROM DUAL ON DUPLICATE KEY UPDATE c=c+10000;
|
||||
SELECT * FROM t1;
|
||||
-- error 1062
|
||||
INSERT t1 SELECT 1,9,70 FROM DUAL ON DUPLICATE KEY UPDATE c=c+100000, b=4;
|
||||
SELECT * FROM t1;
|
||||
TRUNCATE TABLE t1;
|
||||
INSERT t1 VALUES (1,2,10), (3,4,20);
|
||||
CREATE TABLE t2 (a INT, b INT, c INT, d INT);
|
||||
# column names deliberately clash with columns in t1 (Bug#8147)
|
||||
INSERT t2 VALUES (5,6,30,1), (7,4,40,1), (8,9,60,1);
|
||||
INSERT t2 VALUES (2,1,11,2), (7,4,40,2);
|
||||
INSERT t1 SELECT a,b,c FROM t2 WHERE d=1 ON DUPLICATE KEY UPDATE c=c+100;
|
||||
SELECT * FROM t1;
|
||||
INSERT t1 SET a=5 ON DUPLICATE KEY UPDATE b=0;
|
||||
SELECT * FROM t1;
|
||||
INSERT t1 SELECT a,b,c FROM t2 WHERE d=2 ON DUPLICATE KEY UPDATE c=c+VALUES(a);
|
||||
SELECT *, VALUES(a) FROM t1;
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
|
@ -34,11 +34,14 @@ explain select t1.*,t2.* from t1 left join t2 on t1.a=t2.a where isnull(t2.a)=1;
|
||||
select t1.*,t2.*,t3.a from t1 left join t2 on (t1.a=t2.a) left join t1 as t3 on (t2.a=t3.a);
|
||||
|
||||
# The next query should rearange the left joins to get this to work
|
||||
!$1120 explain select t1.*,t2.*,t3.a from t1 left join t2 on (t3.a=t2.a) left join t1 as t3 on (t1.a=t3.a);
|
||||
!$1120 select t1.*,t2.*,t3.a from t1 left join t2 on (t3.a=t2.a) left join t1 as t3 on (t1.a=t3.a);
|
||||
--error 1120
|
||||
explain select t1.*,t2.*,t3.a from t1 left join t2 on (t3.a=t2.a) left join t1 as t3 on (t1.a=t3.a);
|
||||
--error 1120
|
||||
select t1.*,t2.*,t3.a from t1 left join t2 on (t3.a=t2.a) left join t1 as t3 on (t1.a=t3.a);
|
||||
|
||||
# The next query should give an error in MySQL
|
||||
!$1120 select t1.*,t2.*,t3.a from t1 left join t2 on (t3.a=t2.a) left join t1 as t3 on (t2.a=t3.a);
|
||||
--error 1120
|
||||
select t1.*,t2.*,t3.a from t1 left join t2 on (t3.a=t2.a) left join t1 as t3 on (t2.a=t3.a);
|
||||
|
||||
# Test of inner join
|
||||
select t1.*,t2.* from t1 inner join t2 using (a);
|
||||
@ -94,7 +97,8 @@ WHERE t1.uniq_id = 4
|
||||
ORDER BY t2.c_amount;
|
||||
|
||||
INSERT INTO t2 VALUES (2,3,3000,6000,0,0,746584,837484,'yes');
|
||||
!$1062 INSERT INTO t2 VALUES (2,3,3000,6000,0,0,746584,837484,'yes');
|
||||
--error 1062
|
||||
INSERT INTO t2 VALUES (2,3,3000,6000,0,0,746584,837484,'yes');
|
||||
INSERT INTO t2 VALUES (7,3,1000,2000,0,0,746294,937484,'yes');
|
||||
|
||||
#3rd select should show that one record is returned with null entries for the
|
||||
@ -288,7 +292,8 @@ insert into t3 values (1);
|
||||
insert into t4 values (1,1);
|
||||
insert into t5 values (1,1);
|
||||
|
||||
!$1120 explain select * from t3 left join t4 on t4.seq_1_id = t2.t2_id left join t1 on t1.t1_id = t4.seq_0_id left join t5 on t5.seq_0_id = t1.t1_id left join t2 on t2.t2_id = t5.seq_1_id where t3.t3_id = 23;
|
||||
--error 1120
|
||||
explain select * from t3 left join t4 on t4.seq_1_id = t2.t2_id left join t1 on t1.t1_id = t4.seq_0_id left join t5 on t5.seq_0_id = t1.t1_id left join t2 on t2.t2_id = t5.seq_1_id where t3.t3_id = 23;
|
||||
|
||||
drop table t1,t2,t3,t4,t5;
|
||||
|
||||
@ -501,3 +506,79 @@ select s.*, '*', m.*, (s.match_1_h - m.home) UUX from
|
||||
order by UUX desc;
|
||||
|
||||
drop table t1, t2;
|
||||
|
||||
# Tests for bugs #6307 and 6460
|
||||
|
||||
create table t1 (a int, b int, unique index idx (a, b));
|
||||
create table t2 (a int, b int, c int, unique index idx (a, b));
|
||||
|
||||
insert into t1 values (1, 10), (1,11), (2,10), (2,11);
|
||||
insert into t2 values (1,10,3);
|
||||
|
||||
select t1.a, t1.b, t2.c from t1 left join t2
|
||||
on t1.a=t2.a and t1.b=t2.b and t2.c=3
|
||||
where t1.a=1 and t2.c is null;
|
||||
|
||||
drop table t1, t2;
|
||||
|
||||
CREATE TABLE t1 (
|
||||
ts_id bigint(20) default NULL,
|
||||
inst_id tinyint(4) default NULL,
|
||||
flag_name varchar(64) default NULL,
|
||||
flag_value text,
|
||||
UNIQUE KEY ts_id (ts_id,inst_id,flag_name)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
CREATE TABLE t2 (
|
||||
ts_id bigint(20) default NULL,
|
||||
inst_id tinyint(4) default NULL,
|
||||
flag_name varchar(64) default NULL,
|
||||
flag_value text,
|
||||
UNIQUE KEY ts_id (ts_id,inst_id,flag_name)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
INSERT INTO t1 VALUES
|
||||
(111056548820001, 0, 'flag1', NULL),
|
||||
(111056548820001, 0, 'flag2', NULL),
|
||||
(2, 0, 'other_flag', NULL);
|
||||
|
||||
INSERT INTO t2 VALUES
|
||||
(111056548820001, 3, 'flag1', 'sss');
|
||||
|
||||
SELECT t1.flag_name,t2.flag_value
|
||||
FROM t1 LEFT JOIN t2
|
||||
ON (t1.ts_id = t2.ts_id AND t1.flag_name = t2.flag_name AND
|
||||
t2.inst_id = 3)
|
||||
WHERE t1.inst_id = 0 AND t1.ts_id=111056548820001 AND
|
||||
t2.flag_value IS NULL;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
CREATE TABLE invoice (
|
||||
id int(11) unsigned NOT NULL auto_increment,
|
||||
text_id int(10) unsigned default NULL,
|
||||
PRIMARY KEY (id)
|
||||
);
|
||||
|
||||
INSERT INTO invoice VALUES("1", "0");
|
||||
INSERT INTO invoice VALUES("2", "10");
|
||||
|
||||
CREATE TABLE text_table (
|
||||
text_id char(3) NOT NULL default '',
|
||||
language_id char(3) NOT NULL default '',
|
||||
text_data text,
|
||||
PRIMARY KEY (text_id,language_id)
|
||||
);
|
||||
|
||||
INSERT INTO text_table VALUES("0", "EN", "0-EN");
|
||||
INSERT INTO text_table VALUES("0", "SV", "0-SV");
|
||||
INSERT INTO text_table VALUES("10", "EN", "10-EN");
|
||||
INSERT INTO text_table VALUES("10", "SV", "10-SV");
|
||||
|
||||
SELECT invoice.id, invoice.text_id, text_table.text_data
|
||||
FROM invoice LEFT JOIN text_table
|
||||
ON invoice.text_id = text_table.text_id
|
||||
AND text_table.language_id = 'SV'
|
||||
WHERE (invoice.id LIKE '%' OR text_table.text_data LIKE '%');
|
||||
|
||||
DROP TABLE invoice, text_table;
|
||||
|
@ -146,7 +146,8 @@ create table t1
|
||||
);
|
||||
INSERT INTO t1 VALUES (1, 1, 1, 1, 'a');
|
||||
INSERT INTO t1 VALUES (1, 1, 1, 1, 'b');
|
||||
!$1062 INSERT INTO t1 VALUES (1, 1, 1, 1, 'a');
|
||||
--error 1062
|
||||
INSERT INTO t1 VALUES (1, 1, 1, 1, 'a');
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
@ -296,3 +297,26 @@ drop table t1;
|
||||
|
||||
--error 1105
|
||||
create table t1 (c char(10), index (c(0)));
|
||||
|
||||
#
|
||||
# Bug #6126: Duplicate columns in keys should fail
|
||||
# Bug #6252: (dup)
|
||||
#
|
||||
--error 1060
|
||||
create table t1 (c char(10), index (c,c));
|
||||
--error 1060
|
||||
create table t1 (c1 char(10), c2 char(10), index (c1,c2,c1));
|
||||
--error 1060
|
||||
create table t1 (c1 char(10), c2 char(10), index (c1,c1,c2));
|
||||
--error 1060
|
||||
create table t1 (c1 char(10), c2 char(10), index (c2,c1,c1));
|
||||
create table t1 (c1 char(10), c2 char(10));
|
||||
--error 1060
|
||||
alter table t1 add key (c1,c1);
|
||||
--error 1060
|
||||
alter table t1 add key (c2,c1,c1);
|
||||
--error 1060
|
||||
alter table t1 add key (c1,c2,c1);
|
||||
--error 1060
|
||||
alter table t1 add key (c1,c1,c2);
|
||||
drop table t1;
|
||||
|
@ -71,7 +71,7 @@ show status like 'key_blocks_used';
|
||||
# Following results differs on 64 and 32 bit systems because of different
|
||||
# pointer sizes, which takes up different amount of space in key cache
|
||||
|
||||
--replace_result 1812 KEY_BLOCKS_UNUSED 1793 KEY_BLOCKS_UNUSED 1674 KEY_BLOCKS_UNUSED 1818 KEY_BLOCKS_UNUSED
|
||||
--replace_result 1812 KEY_BLOCKS_UNUSED 1793 KEY_BLOCKS_UNUSED 1674 KEY_BLOCKS_UNUSED 1818 KEY_BLOCKS_UNUSED 1824 KEY_BLOCKS_UNUSED
|
||||
show status like 'key_blocks_unused';
|
||||
|
||||
insert into t1 values (1, 'qqqq'), (11, 'yyyy');
|
||||
@ -84,7 +84,7 @@ update t1 set p=2 where p=1;
|
||||
update t2 set i=2 where i=1;
|
||||
|
||||
show status like 'key_blocks_used';
|
||||
--replace_result 1808 KEY_BLOCKS_UNUSED 1789 KEY_BLOCKS_UNUSED 1670 KEY_BLOCKS_UNUSED 1814 KEY_BLOCKS_UNUSED
|
||||
--replace_result 1808 KEY_BLOCKS_UNUSED 1789 KEY_BLOCKS_UNUSED 1670 KEY_BLOCKS_UNUSED 1814 KEY_BLOCKS_UNUSED 1820 KEY_BLOCKS_UNUSED
|
||||
show status like 'key_blocks_unused';
|
||||
|
||||
cache index t1 key (`primary`) in keycache1;
|
||||
@ -146,7 +146,7 @@ cache index t1,t2 in default;
|
||||
drop table t1,t2,t3;
|
||||
|
||||
show status like 'key_blocks_used';
|
||||
--replace_result 1812 KEY_BLOCKS_UNUSED 1793 KEY_BLOCKS_UNUSED 1674 KEY_BLOCKS_UNUSED 1818 KEY_BLOCKS_UNUSED
|
||||
--replace_result 1812 KEY_BLOCKS_UNUSED 1793 KEY_BLOCKS_UNUSED 1674 KEY_BLOCKS_UNUSED 1818 KEY_BLOCKS_UNUSED 1824 KEY_BLOCKS_UNUSED
|
||||
show status like 'key_blocks_unused';
|
||||
|
||||
# Cleanup
|
||||
@ -156,3 +156,14 @@ set global keycache2.key_buffer_size=0;
|
||||
# Test to set up a too small size for a key cache (bug #2064)
|
||||
set global keycache3.key_buffer_size=100;
|
||||
set global keycache3.key_buffer_size=0;
|
||||
|
||||
# Test case for buf 6447
|
||||
|
||||
create table t1 (mytext text, FULLTEXT (mytext));
|
||||
insert t1 values ('aaabbb');
|
||||
|
||||
check table t1;
|
||||
set GLOBAL key_cache_block_size=2048;
|
||||
check table t1;
|
||||
|
||||
drop table t1;
|
||||
|
@ -49,3 +49,13 @@ SELECT * FROM t1;
|
||||
DELETE FROM t1 WHERE id2 = 0 ORDER BY id desc LIMIT 1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#8023 - limit on UNION with from DUAL, causes syntax error
|
||||
#
|
||||
create table t1 (a integer);
|
||||
insert into t1 values (1);
|
||||
# both queries must return one row
|
||||
select 1 as a from t1 union all select 1 from dual limit 1;
|
||||
(select 1 as a from t1) union all (select 1 from dual) limit 1;
|
||||
drop table t1;
|
||||
|
@ -100,3 +100,31 @@ show tables like 'T1%';
|
||||
alter table t1 add index (A);
|
||||
show tables like 't1%';
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #7261: Alter table loses temp table
|
||||
#
|
||||
|
||||
create temporary table T1(a int(11), b varchar(8));
|
||||
insert into T1 values (1, 'abc');
|
||||
select * from T1;
|
||||
alter table T1 add index (a);
|
||||
select * from T1;
|
||||
drop table T1;
|
||||
|
||||
#
|
||||
# Bug #8355: Tables not dropped from table cache on drop db
|
||||
#
|
||||
create database mysqltest_LC2;
|
||||
use mysqltest_LC2;
|
||||
create table myUC (i int);
|
||||
insert into myUC values (1),(2),(3);
|
||||
select * from myUC;
|
||||
use test;
|
||||
drop database mysqltest_LC2;
|
||||
create database mysqltest_LC2;
|
||||
use mysqltest_LC2;
|
||||
create table myUC (i int);
|
||||
select * from myUC;
|
||||
use test;
|
||||
drop database mysqltest_LC2;
|
||||
|
1
mysql-test/t/lowercase_table_grant-master.opt
Normal file
1
mysql-test/t/lowercase_table_grant-master.opt
Normal file
@ -0,0 +1 @@
|
||||
--lower_case_table_names
|
25
mysql-test/t/lowercase_table_grant.test
Normal file
25
mysql-test/t/lowercase_table_grant.test
Normal file
@ -0,0 +1,25 @@
|
||||
# Test of grants when lower_case_table_names is on
|
||||
use mysql;
|
||||
|
||||
# mixed-case database name for testing
|
||||
create database MYSQLtest;
|
||||
|
||||
# check that database name gets forced to lowercase
|
||||
grant all on MySQLtest.* to mysqltest_1@localhost;
|
||||
show grants for mysqltest_1@localhost;
|
||||
|
||||
# now force it to mixed case, but see that it is lowercased in the acl cache
|
||||
select * from db where user = 'mysqltest_1';
|
||||
update db set db = 'MYSQLtest' where db = 'mysqltest' and user = 'mysqltest_1' and host = 'localhost';
|
||||
flush privileges;
|
||||
show grants for mysqltest_1@localhost;
|
||||
select * from db where user = 'mysqltest_1';
|
||||
|
||||
# clear out the user we created
|
||||
#
|
||||
# can't use REVOKE because of the mixed-case database name
|
||||
delete from db where db = 'MYSQLtest' and user = 'mysqltest_1' and host = 'localhost';
|
||||
flush privileges;
|
||||
drop user mysqltest_1@localhost;
|
||||
|
||||
drop database MYSQLtest;
|
@ -285,3 +285,24 @@ create table t3 engine=merge union=(t1, t2) select * from t1;
|
||||
--error 1093
|
||||
create table t3 engine=merge union=(t1, t2) select * from t2;
|
||||
drop table t1, t2;
|
||||
|
||||
# BUG#6699 : no sorting on 'ref' retrieval
|
||||
create table t1 (a int,b int,c int, index (a,b,c));
|
||||
create table t2 (a int,b int,c int, index (a,b,c));
|
||||
create table t3 (a int,b int,c int, index (a,b,c))
|
||||
engine=merge union=(t1 ,t2);
|
||||
insert into t1 (a,b,c) values (1,1,0),(1,2,0);
|
||||
insert into t2 (a,b,c) values (1,1,1),(1,2,1);
|
||||
|
||||
explain select a,b,c from t3 force index (a) where a=1 order by a,b,c;
|
||||
select a,b,c from t3 force index (a) where a=1 order by a,b,c;
|
||||
|
||||
# this actually wasn't affected:
|
||||
explain select a,b,c from t3 force index (a) where a=1 order by a desc, b desc, c desc;
|
||||
select a,b,c from t3 force index (a) where a=1 order by a desc, b desc, c desc;
|
||||
|
||||
# BUG#7377 SHOW index on MERGE table crashes debug server
|
||||
show index from t3;
|
||||
|
||||
drop table t1, t2, t3;
|
||||
|
||||
|
1
mysql-test/t/mix_innodb_myisam_binlog-master.opt
Normal file
1
mysql-test/t/mix_innodb_myisam_binlog-master.opt
Normal file
@ -0,0 +1 @@
|
||||
--loose-innodb_lock_wait_timeout=2
|
@ -172,4 +172,36 @@ select a from t1 order by a; # check that savepoints work :)
|
||||
|
||||
show binlog events from 79;
|
||||
|
||||
# Test for BUG#5714, where a MyISAM update in the transaction used to
|
||||
# release row-level locks in InnoDB
|
||||
|
||||
connect (con3,localhost,root,,);
|
||||
|
||||
connection con3;
|
||||
delete from t1;
|
||||
delete from t2;
|
||||
--disable_warnings
|
||||
alter table t2 type=MyISAM;
|
||||
--enable_warnings
|
||||
insert into t1 values (1);
|
||||
begin;
|
||||
select * from t1 for update;
|
||||
|
||||
connection con2;
|
||||
select (@before:=unix_timestamp())*0; # always give repeatable output
|
||||
begin;
|
||||
send select * from t1 for update;
|
||||
|
||||
connection con3;
|
||||
insert into t2 values (20);
|
||||
|
||||
connection con2;
|
||||
--error 1205
|
||||
reap;
|
||||
select (@after:=unix_timestamp())*0; # always give repeatable output
|
||||
# verify that innodb_lock_wait_timeout was exceeded. When there was
|
||||
# the bug, the reap would return immediately after the insert into t2.
|
||||
select (@after-@before) >= 2;
|
||||
|
||||
# cleanup
|
||||
drop table t1,t2;
|
||||
|
2
mysql-test/t/multi_statement-master.opt
Normal file
2
mysql-test/t/multi_statement-master.opt
Normal file
@ -0,0 +1,2 @@
|
||||
--log-slow-queries=slow.log
|
||||
--log-queries-not-using-indexes
|
@ -14,3 +14,18 @@ select "abcd'";'abcd'select "'abcd";'abcd'
|
||||
select 5'abcd'
|
||||
delimiter ;'abcd'
|
||||
select 'finish';
|
||||
|
||||
# Bug #8475: Make sure every statement that is a slow query in
|
||||
# a multi-statement query gets logged as a slow query.
|
||||
flush status;
|
||||
delimiter ||||;
|
||||
create table t1 (i int);
|
||||
insert into t1 values (1);
|
||||
select * from t1 where i = 1;
|
||||
insert into t1 values (2),(3),(4);
|
||||
select * from t1 where i = 2;
|
||||
select * from t1 where i = 3||||
|
||||
show status like 'Slow_queries'||||
|
||||
drop table t1||||
|
||||
|
||||
delimiter ;||||
|
||||
|
@ -5,9 +5,9 @@
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2,t3;
|
||||
drop database if exists mysqltest;
|
||||
--error 0,1141
|
||||
--error 0,1141,1147
|
||||
revoke all privileges on mysqltest.t1 from mysqltest_1@localhost;
|
||||
--error 0,1141
|
||||
--error 0,1141,1147
|
||||
revoke all privileges on mysqltest.* from mysqltest_1@localhost;
|
||||
delete from mysql.user where user=_binary'mysqltest_1';
|
||||
--enable_warnings
|
||||
@ -431,3 +431,20 @@ update t1,t2 set t1.col1 = (select max(col1) from t1) where t1.col1 = t2.col1;
|
||||
-- error 1093
|
||||
delete t1 from t1,t2 where t1.col1 < (select max(col1) from t1) and t1.col1 = t2.col1;
|
||||
drop table t1,t2;
|
||||
|
||||
# Test for BUG#5837 - delete with outer join and const tables
|
||||
--disable_warnings
|
||||
create table t1 (
|
||||
aclid bigint not null primary key,
|
||||
status tinyint(1) not null
|
||||
) engine = innodb;
|
||||
|
||||
create table t2 (
|
||||
refid bigint not null primary key,
|
||||
aclid bigint, index idx_acl(aclid)
|
||||
) engine = innodb;
|
||||
--enable_warnings
|
||||
insert into t2 values(1,null);
|
||||
delete t2, t1 from t2 left join t1 on (t2.aclid=t1.aclid) where t2.refid='1';
|
||||
drop table t1, t2;
|
||||
|
||||
|
@ -498,11 +498,12 @@ alter table t1 disable keys;
|
||||
show keys from t1;
|
||||
create table t2 (a int);
|
||||
let $i=1000;
|
||||
set @@rand_seed1=31415926,@@rand_seed2=2718281828;
|
||||
--disable_query_log
|
||||
while ($i)
|
||||
{
|
||||
dec $i;
|
||||
eval insert t2 values (rand()*100000);
|
||||
insert t2 values (rand()*100000);
|
||||
}
|
||||
--enable_query_log
|
||||
insert t1 select * from t2;
|
||||
|
10
mysql-test/t/mysql_client_test.test
Normal file
10
mysql-test/t/mysql_client_test.test
Normal file
@ -0,0 +1,10 @@
|
||||
# We run with different binaries for normal and --embedded-server
|
||||
#
|
||||
# If this test fails with "command "$MYSQL_CLIENT_TEST" failed",
|
||||
# you should either run mysql_client_test separartely against a running
|
||||
# server or run mysql-test-run --debug mysql_client_test and check
|
||||
# var/log/mysql_client_test.trace
|
||||
|
||||
--disable_result_log
|
||||
--exec echo $MYSQL_CLIENT_TEST
|
||||
--exec $MYSQL_CLIENT_TEST
|
@ -127,3 +127,41 @@ insert into t1 values (1),(2),(3);
|
||||
--exec rm $MYSQL_TEST_DIR/var/tmp/t1.sql
|
||||
--exec rm $MYSQL_TEST_DIR/var/tmp/t1.txt
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #6101: create database problem
|
||||
#
|
||||
|
||||
--exec $MYSQL_DUMP --skip-comments --databases test
|
||||
|
||||
create database mysqldump_test_db character set latin2 collate latin2_bin;
|
||||
--exec $MYSQL_DUMP --skip-comments --databases mysqldump_test_db;
|
||||
drop database mysqldump_test_db;
|
||||
|
||||
#
|
||||
# Bug #7020
|
||||
# Check that we don't dump in UTF8 in compatible mode by default,
|
||||
# but use the default compiled values, or the values given in
|
||||
# --default-character-set=xxx. However, we should dump in UTF8
|
||||
# if it is explicitely set.
|
||||
|
||||
CREATE TABLE t1 (a CHAR(10));
|
||||
INSERT INTO t1 VALUES (_latin1 '<27><><EFBFBD><EFBFBD>');
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --skip-comments test t1
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --skip-comments --compatible=mysql323 test t1
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --skip-comments --compatible=mysql323 --default-character-set=cp850 test t1
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --skip-comments --default-character-set=cp850 --compatible=mysql323 test t1
|
||||
--exec $MYSQL_DUMP --character-sets-dir=$CHARSETSDIR --skip-comments --default-character-set=utf8 --compatible=mysql323 test t1
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# WL #2319: Exclude Tables from dump
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a int);
|
||||
CREATE TABLE t2 (a int);
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
INSERT INTO t2 VALUES (4),(5),(6);
|
||||
--exec $MYSQL_DUMP --skip-comments --ignore-table=test.t1 test
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
|
@ -5,18 +5,25 @@
|
||||
#
|
||||
# ============================================================================
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# $mysql_errno contains the return code of the last command
|
||||
# send to the server.
|
||||
# ----------------------------------------------------------------------------
|
||||
# get $mysql_errno before the first statement
|
||||
# $mysql_errno should be -1
|
||||
eval select $mysql_errno as "before_use_test" ;
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Positive case(statement)
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
select otto from (select 1 as otto) as t1;
|
||||
# expectation = response
|
||||
!$0 select otto from (select 1 as otto) as t1;
|
||||
--error 0
|
||||
select otto from (select 1 as otto) as t1;
|
||||
|
||||
# expectation <> response
|
||||
-- // !$1054 select otto from (select 1 as otto) as t1;
|
||||
-- // --error 1054
|
||||
-- // select otto from (select 1 as otto) as t1;
|
||||
|
||||
@ -29,12 +36,10 @@ select otto from (select 1 as otto) as t1;
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
# expectation <> response
|
||||
#!$0 select friedrich from (select 1 as otto) as t1;
|
||||
#--error 0
|
||||
#select friedrich from (select 1 as otto) as t1;
|
||||
|
||||
# expectation = response
|
||||
!$1054 select friedrich from (select 1 as otto) as t1;
|
||||
--error 1054
|
||||
select friedrich from (select 1 as otto) as t1;
|
||||
|
||||
@ -76,3 +81,208 @@ select friedrich from (select 1 as otto) as t1;
|
||||
#--error S00000
|
||||
#select friedrich from (select 1 as otto) as t1;
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# test cases for $mysql_errno
|
||||
#
|
||||
# $mysql_errno is a builtin variable of mysqltest and contains the return code
|
||||
# of the last command send to the server.
|
||||
#
|
||||
# The following test cases often initialize $mysql_errno to 1064 by
|
||||
# a command with wrong syntax.
|
||||
# Example: --error 1064 To prevent the abort after the error.
|
||||
# garbage ;
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# check mysql_errno = 0 after successful statement
|
||||
# ----------------------------------------------------------------------------
|
||||
select otto from (select 1 as otto) as t1;
|
||||
eval select $mysql_errno as "after_successful_stmt_errno" ;
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# check mysql_errno = 1064 after statement with wrong syntax
|
||||
# ----------------------------------------------------------------------------
|
||||
--error 1064
|
||||
garbage ;
|
||||
eval select $mysql_errno as "after_wrong_syntax_errno" ;
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# check if let $my_var= 'abc' ; affects $mysql_errno
|
||||
# ----------------------------------------------------------------------------
|
||||
--error 1064
|
||||
garbage ;
|
||||
let $my_var= 'abc' ;
|
||||
eval select $mysql_errno as "after_let_var_equal_value" ;
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# check if set @my_var= 'abc' ; affects $mysql_errno
|
||||
# ----------------------------------------------------------------------------
|
||||
--error 1064
|
||||
garbage ;
|
||||
set @my_var= 'abc' ;
|
||||
eval select $mysql_errno as "after_set_var_equal_value" ;
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# check if the setting of --disable-warnings itself affects $mysql_errno
|
||||
# (May be --<whatever> modifies $mysql_errno.)
|
||||
# ----------------------------------------------------------------------------
|
||||
--error 1064
|
||||
garbage ;
|
||||
--disable_warnings
|
||||
eval select $mysql_errno as "after_disable_warnings_command" ;
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# check if --disable-warnings + command with warning affects the errno
|
||||
# stored within $mysql_errno
|
||||
# (May be disabled warnings affect $mysql_errno.)
|
||||
# ----------------------------------------------------------------------------
|
||||
drop table if exists t1 ;
|
||||
--error 1064
|
||||
garbage ;
|
||||
drop table if exists t1 ;
|
||||
eval select $mysql_errno as "after_disable_warnings" ;
|
||||
--enable_warnings
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# check if masked errors affect $mysql_errno
|
||||
# ----------------------------------------------------------------------------
|
||||
--error 1064
|
||||
garbage ;
|
||||
--error 1146
|
||||
select 3 from t1 ;
|
||||
eval select $mysql_errno as "after_minus_masked" ;
|
||||
--error 1064
|
||||
garbage ;
|
||||
--error 1146
|
||||
select 3 from t1 ;
|
||||
eval select $mysql_errno as "after_!_masked" ;
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Will manipulations of $mysql_errno be possible and visible ?
|
||||
# ----------------------------------------------------------------------------
|
||||
--error 1064
|
||||
garbage ;
|
||||
let $mysql_errno= -1;
|
||||
eval select $mysql_errno as "after_let_errno_equal_value" ;
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# How affect actions on prepared statements $mysql_errno ?
|
||||
# ----------------------------------------------------------------------------
|
||||
# failing prepare
|
||||
--error 1064
|
||||
garbage ;
|
||||
--error 1146
|
||||
prepare stmt from "select 3 from t1" ;
|
||||
eval select $mysql_errno as "after_failing_prepare" ;
|
||||
create table t1 ( f1 char(10));
|
||||
|
||||
# successful prepare
|
||||
--error 1064
|
||||
garbage ;
|
||||
prepare stmt from "select 3 from t1" ;
|
||||
eval select $mysql_errno as "after_successful_prepare" ;
|
||||
|
||||
# successful execute
|
||||
--error 1064
|
||||
garbage ;
|
||||
execute stmt;
|
||||
eval select $mysql_errno as "after_successful_execute" ;
|
||||
|
||||
# failing execute (table dropped)
|
||||
drop table t1;
|
||||
--error 1064
|
||||
garbage ;
|
||||
--error 1146
|
||||
execute stmt;
|
||||
eval select $mysql_errno as "after_failing_execute" ;
|
||||
|
||||
# failing execute (unknown statement)
|
||||
--error 1064
|
||||
garbage ;
|
||||
--error 1243
|
||||
execute __stmt_;
|
||||
eval select $mysql_errno as "after_failing_execute" ;
|
||||
|
||||
# successful deallocate
|
||||
--error 1064
|
||||
garbage ;
|
||||
deallocate prepare stmt;
|
||||
eval select $mysql_errno as "after_successful_deallocate" ;
|
||||
|
||||
# failing deallocate ( statement handle does not exist )
|
||||
--error 1064
|
||||
garbage ;
|
||||
--error 1243
|
||||
deallocate prepare __stmt_;
|
||||
eval select $mysql_errno as "after_failing_deallocate" ;
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# test cases for "--disable_abort_on_error"
|
||||
#
|
||||
# "--disable_abort_on_error" switches the abort of mysqltest
|
||||
# after "unmasked" failing statements off.
|
||||
#
|
||||
# The default is "--enable_abort_on_error".
|
||||
#
|
||||
# "Maskings" are
|
||||
# --error <error number> and --error <error number>
|
||||
# in the line before the failing statement.
|
||||
#
|
||||
# There are some additional test case for $mysql_errno
|
||||
# because "--disable_abort_on_error" enables a new situation.
|
||||
# Example: "unmasked" statement fails + analysis of $mysql_errno
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Switch the abort on error off and check the effect on $mysql_errno
|
||||
# ----------------------------------------------------------------------------
|
||||
--error 1064
|
||||
garbage ;
|
||||
--disable_abort_on_error
|
||||
eval select $mysql_errno as "after_--disable_abort_on_error" ;
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# "unmasked" failing statement should not cause an abort
|
||||
# ----------------------------------------------------------------------------
|
||||
select 3 from t1 ;
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# masked failing statements
|
||||
# ----------------------------------------------------------------------------
|
||||
# expected error = response
|
||||
--error 1146
|
||||
select 3 from t1 ;
|
||||
--error 1146
|
||||
select 3 from t1 ;
|
||||
eval select $mysql_errno as "after_!errno_masked_error" ;
|
||||
# expected error <> response
|
||||
# --error 1000
|
||||
# select 3 from t1 ;
|
||||
# --error 1000
|
||||
# select 3 from t1 ;
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Switch the abort on error on and check the effect on $mysql_errno
|
||||
# ----------------------------------------------------------------------------
|
||||
--error 1064
|
||||
garbage ;
|
||||
--enable_abort_on_error
|
||||
eval select $mysql_errno as "after_--enable_abort_on_error" ;
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# masked failing statements
|
||||
# ----------------------------------------------------------------------------
|
||||
# expected error = response
|
||||
--error 1146
|
||||
select 3 from t1 ;
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# check that the old default behaviour is not changed
|
||||
# Please remove the '#' to get the abort on error
|
||||
# ----------------------------------------------------------------------------
|
||||
#--error 1064
|
||||
#select 3 from t1 ;
|
||||
#
|
||||
#select 3 from t1 ;
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
drop database if exists mysqltest;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
@ -20,6 +21,22 @@ SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Verfify changing table names between databases
|
||||
#
|
||||
CREATE DATABASE mysqltest;
|
||||
USE mysqltest;
|
||||
CREATE TABLE t1 (
|
||||
a INT NOT NULL,
|
||||
b INT NOT NULL
|
||||
) ENGINE=ndbcluster;
|
||||
RENAME TABLE t1 TO test.t1;
|
||||
SHOW TABLES;
|
||||
DROP DATABASE mysqltest;
|
||||
USE test;
|
||||
SHOW TABLES;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# More advanced test
|
||||
#
|
||||
|
@ -1,7 +1,7 @@
|
||||
-- source include/have_ndb.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
|
||||
--enable_warnings
|
||||
|
||||
################################################
|
||||
@ -199,7 +199,7 @@ insert into t4 values (1, "Automatic");
|
||||
select * from t4;
|
||||
|
||||
# Remove the table from NDB
|
||||
system exec $NDB_TOOLS_DIR/ndb_drop_table -d test t4 > /dev/null ;
|
||||
system exec $NDB_TOOLS_DIR/ndb_drop_table --no-defaults -d test t4 >> $NDB_TOOLS_OUTPUT ;
|
||||
|
||||
#
|
||||
# Test that correct error is returned
|
||||
@ -230,7 +230,7 @@ select * from t4;
|
||||
flush tables;
|
||||
|
||||
# Remove the table from NDB
|
||||
system exec $NDB_TOOLS_DIR/ndb_drop_table -d test t4 > /dev/null ;
|
||||
system exec $NDB_TOOLS_DIR/ndb_drop_table --no-defaults -d test t4 >> $NDB_TOOLS_OUTPUT ;
|
||||
|
||||
SHOW TABLES;
|
||||
|
||||
@ -264,8 +264,8 @@ insert into t8 values (8, "myisam table 8");
|
||||
insert into t9 values (9);
|
||||
|
||||
# Remove t3, t5 from NDB
|
||||
system exec $NDB_TOOLS_DIR/ndb_drop_table -d test t3 > /dev/null ;
|
||||
system exec $NDB_TOOLS_DIR/ndb_drop_table -d test t5 > /dev/null ;
|
||||
system exec $NDB_TOOLS_DIR/ndb_drop_table --no-defaults -d test t3 >> $NDB_TOOLS_OUTPUT ;
|
||||
system exec $NDB_TOOLS_DIR/ndb_drop_table --no-defaults -d test t5 >> $NDB_TOOLS_OUTPUT ;
|
||||
# Remove t6, t7 from disk
|
||||
system rm var/master-data/test/t6.frm > /dev/null ;
|
||||
system rm var/master-data/test/t7.frm > /dev/null ;
|
||||
@ -306,8 +306,8 @@ insert into t8 values (8, "myisam table 8");
|
||||
insert into t9 values (9);
|
||||
|
||||
# Remove t3, t5 from NDB
|
||||
system exec $NDB_TOOLS_DIR/ndb_drop_table -d test t3 > /dev/null ;
|
||||
system exec $NDB_TOOLS_DIR/ndb_drop_table -d test t5 > /dev/null ;
|
||||
system exec $NDB_TOOLS_DIR/ndb_drop_table --no-defaults -d test t3 > /dev/null ;
|
||||
system exec $NDB_TOOLS_DIR/ndb_drop_table --no-defaults -d test t5 > /dev/null ;
|
||||
# Remove t6, t7 from disk
|
||||
system rm var/master-data/test/t6.frm > /dev/null ;
|
||||
system rm var/master-data/test/t7.frm > /dev/null ;
|
||||
@ -472,5 +472,11 @@ system rm var/master-data/test/t9.frm ;
|
||||
# MySQL Server will have been restarted because it has a
|
||||
# ndb_autodiscover2-master.opt file.
|
||||
|
||||
create table t10 (
|
||||
a int not null primary key,
|
||||
b blob
|
||||
) engine=ndb;
|
||||
|
||||
insert into t10 values (1, 'kalle');
|
||||
|
||||
--exec $NDB_TOOLS_DIR/ndb_drop_table --no-defaults -d test `$NDB_TOOLS_DIR/ndb_show_tables --no-defaults | grep BLOB` >> $NDB_TOOLS_OUTPUT 2>&1 || true
|
||||
|
@ -13,4 +13,7 @@ show status like 'handler_discover%';
|
||||
|
||||
drop table t9;
|
||||
|
||||
--error 1296
|
||||
select * from t10;
|
||||
drop table t10;
|
||||
|
||||
|
@ -36,6 +36,8 @@ UPDATE t1 SET pk1=2 WHERE attr1=1;
|
||||
SELECT * FROM t1 ORDER BY pk1;
|
||||
UPDATE t1 SET pk1=pk1 + 1;
|
||||
SELECT * FROM t1 ORDER BY pk1;
|
||||
UPDATE t1 SET pk1=4 WHERE pk1 = 3;
|
||||
SELECT * FROM t1 ORDER BY pk1;
|
||||
|
||||
# Delete the record
|
||||
DELETE FROM t1;
|
||||
@ -358,6 +360,21 @@ select b,test.t1.attr1 from test.t1, t2 where test.t1.pk1 < a;
|
||||
drop table test.t1, t2;
|
||||
drop database mysqltest;
|
||||
|
||||
#
|
||||
# BUG#6031 - DROP DATABASE doesn't drop database on first try
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop database if exists ndbtest1;
|
||||
--enable_warnings
|
||||
|
||||
create database ndbtest1;
|
||||
use ndbtest1;
|
||||
create table t1(id int) engine=ndbcluster;
|
||||
drop database ndbtest1;
|
||||
--error 1008
|
||||
drop database ndbtest1;
|
||||
|
||||
#
|
||||
# test support of char(0)
|
||||
#
|
||||
@ -371,3 +388,192 @@ select * from t1 order by b;
|
||||
select * from t1 where b IS NULL;
|
||||
select * from t1 where b IS NOT NULL;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# test the limit of no of attributes in one table
|
||||
#
|
||||
|
||||
create table t1 (
|
||||
c1 int,
|
||||
c2 int,
|
||||
c3 int,
|
||||
c4 int,
|
||||
c5 int,
|
||||
c6 int,
|
||||
c7 int,
|
||||
c8 int,
|
||||
c9 int,
|
||||
c10 int,
|
||||
c11 int,
|
||||
c12 int,
|
||||
c13 int,
|
||||
c14 int,
|
||||
c15 int,
|
||||
c16 int,
|
||||
c17 int,
|
||||
c18 int,
|
||||
c19 int,
|
||||
c20 int,
|
||||
c21 int,
|
||||
c22 int,
|
||||
c23 int,
|
||||
c24 int,
|
||||
c25 int,
|
||||
c26 int,
|
||||
c27 int,
|
||||
c28 int,
|
||||
c29 int,
|
||||
c30 int,
|
||||
c31 int,
|
||||
c32 int,
|
||||
c33 int,
|
||||
c34 int,
|
||||
c35 int,
|
||||
c36 int,
|
||||
c37 int,
|
||||
c38 int,
|
||||
c39 int,
|
||||
c40 int,
|
||||
c41 int,
|
||||
c42 int,
|
||||
c43 int,
|
||||
c44 int,
|
||||
c45 int,
|
||||
c46 int,
|
||||
c47 int,
|
||||
c48 int,
|
||||
c49 int,
|
||||
c50 int,
|
||||
c51 int,
|
||||
c52 int,
|
||||
c53 int,
|
||||
c54 int,
|
||||
c55 int,
|
||||
c56 int,
|
||||
c57 int,
|
||||
c58 int,
|
||||
c59 int,
|
||||
c60 int,
|
||||
c61 int,
|
||||
c62 int,
|
||||
c63 int,
|
||||
c64 int,
|
||||
c65 int,
|
||||
c66 int,
|
||||
c67 int,
|
||||
c68 int,
|
||||
c69 int,
|
||||
c70 int,
|
||||
c71 int,
|
||||
c72 int,
|
||||
c73 int,
|
||||
c74 int,
|
||||
c75 int,
|
||||
c76 int,
|
||||
c77 int,
|
||||
c78 int,
|
||||
c79 int,
|
||||
c80 int,
|
||||
c81 int,
|
||||
c82 int,
|
||||
c83 int,
|
||||
c84 int,
|
||||
c85 int,
|
||||
c86 int,
|
||||
c87 int,
|
||||
c88 int,
|
||||
c89 int,
|
||||
c90 int,
|
||||
c91 int,
|
||||
c92 int,
|
||||
c93 int,
|
||||
c94 int,
|
||||
c95 int,
|
||||
c96 int,
|
||||
c97 int,
|
||||
c98 int,
|
||||
c99 int,
|
||||
c100 int,
|
||||
c101 int,
|
||||
c102 int,
|
||||
c103 int,
|
||||
c104 int,
|
||||
c105 int,
|
||||
c106 int,
|
||||
c107 int,
|
||||
c108 int,
|
||||
c109 int,
|
||||
c110 int,
|
||||
c111 int,
|
||||
c112 int,
|
||||
c113 int,
|
||||
c114 int,
|
||||
c115 int,
|
||||
c116 int,
|
||||
c117 int,
|
||||
c118 int,
|
||||
c119 int,
|
||||
c120 int,
|
||||
c121 int,
|
||||
c122 int,
|
||||
c123 int,
|
||||
c124 int,
|
||||
c125 int,
|
||||
c126 int,
|
||||
c127 int,
|
||||
c128 int,
|
||||
primary key(c1)) engine=ndb;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# test max size of attribute name and truncation
|
||||
#
|
||||
|
||||
create table t1 (
|
||||
a1234567890123456789012345678901234567890 int primary key,
|
||||
a12345678901234567890123456789a1234567890 int,
|
||||
index(a12345678901234567890123456789a1234567890)
|
||||
) engine=ndb;
|
||||
show tables;
|
||||
insert into t1 values (1,1),(2,1),(3,1),(4,1),(5,2),(6,1),(7,1);
|
||||
explain select * from t1 where a12345678901234567890123456789a1234567890=2;
|
||||
select * from t1 where a12345678901234567890123456789a1234567890=2;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# test fragment creation
|
||||
#
|
||||
# first a table with _many_ fragments per node group
|
||||
# then a table with just one fragment per node group
|
||||
#
|
||||
create table t1
|
||||
(a bigint, b bigint, c bigint, d bigint,
|
||||
primary key (a,b,c,d))
|
||||
engine=ndb
|
||||
max_rows=200000000;
|
||||
insert into t1 values
|
||||
(1,2,3,4),(2,3,4,5),(3,4,5,6),
|
||||
(3,2,3,4),(1,3,4,5),(2,4,5,6),
|
||||
(1,2,3,5),(2,3,4,8),(3,4,5,9),
|
||||
(3,2,3,5),(1,3,4,8),(2,4,5,9),
|
||||
(1,2,3,6),(2,3,4,6),(3,4,5,7),
|
||||
(3,2,3,6),(1,3,4,6),(2,4,5,7),
|
||||
(1,2,3,7),(2,3,4,7),(3,4,5,8),
|
||||
(3,2,3,7),(1,3,4,7),(2,4,5,8),
|
||||
(1,3,3,4),(2,4,4,5),(3,5,5,6),
|
||||
(3,3,3,4),(1,4,4,5),(2,5,5,6),
|
||||
(1,3,3,5),(2,4,4,8),(3,5,5,9),
|
||||
(3,3,3,5),(1,4,4,8),(2,5,5,9),
|
||||
(1,3,3,6),(2,4,4,6),(3,5,5,7),
|
||||
(3,3,3,6),(1,4,4,6),(2,5,5,7),
|
||||
(1,3,3,7),(2,4,4,7),(3,5,5,8),
|
||||
(3,3,3,7),(1,4,4,7),(2,5,5,8);
|
||||
select count(*) from t1;
|
||||
drop table t1;
|
||||
|
||||
create table t1
|
||||
(a bigint, b bigint, c bigint, d bigint,
|
||||
primary key (a))
|
||||
engine=ndb
|
||||
max_rows=1;
|
||||
drop table t1;
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
drop database if exists mysqltest;
|
||||
drop database if exists test2;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
@ -12,31 +12,7 @@ drop database if exists mysqltest;
|
||||
# A prerequisite for this handler test is that "testBlobs" succeeds.
|
||||
#
|
||||
|
||||
# -- bug-5252 tinytext crashes --
|
||||
|
||||
create table t1 (
|
||||
a int not null primary key,
|
||||
b tinytext
|
||||
) engine=ndbcluster;
|
||||
|
||||
insert into t1 values(1, 'x');
|
||||
update t1 set b = 'y';
|
||||
select * from t1;
|
||||
delete from t1;
|
||||
drop table t1;
|
||||
|
||||
# -- bug-5013 insert empty string to text --
|
||||
|
||||
create table t1 (
|
||||
a int not null primary key,
|
||||
b text not null
|
||||
) engine=ndbcluster;
|
||||
|
||||
insert into t1 values(1, '');
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
-- general test starts --
|
||||
# -- general test starts --
|
||||
|
||||
# make test harder with autocommit off
|
||||
set autocommit=0;
|
||||
@ -117,7 +93,6 @@ from t1 where a=2;
|
||||
# pk update to null
|
||||
update t1 set d=null where a=1;
|
||||
commit;
|
||||
# FIXME now fails at random due to weird mixup between the 2 rows
|
||||
select a from t1 where d is null;
|
||||
|
||||
# pk delete
|
||||
@ -126,6 +101,49 @@ delete from t1 where a=2;
|
||||
commit;
|
||||
select count(*) from t1;
|
||||
|
||||
# -- replace ( bug-6018 ) --
|
||||
|
||||
# insert
|
||||
replace t1 set a=1,b=@b1,c=111,d=@d1;
|
||||
replace t1 set a=2,b=@b2,c=222,d=@d2;
|
||||
commit;
|
||||
explain select * from t1 where a = 1;
|
||||
|
||||
# pk read
|
||||
select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
|
||||
from t1 where a=1;
|
||||
select a,length(b),substr(b,1+2*9000,2),length(d),substr(d,1+3*9000,3)
|
||||
from t1 where a=2;
|
||||
|
||||
# update
|
||||
replace t1 set a=1,b=@b2,c=111,d=@d2;
|
||||
replace t1 set a=2,b=@b1,c=222,d=@d1;
|
||||
commit;
|
||||
select a,length(b),substr(b,1+2*9000,2),length(d),substr(d,1+3*9000,3)
|
||||
from t1 where a=1;
|
||||
select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
|
||||
from t1 where a=2;
|
||||
|
||||
# update
|
||||
replace t1 set a=1,b=concat(@b2,@b2),c=111,d=concat(@d2,@d2);
|
||||
replace t1 set a=2,b=concat(@b1,@b1),c=222,d=concat(@d1,@d1);
|
||||
commit;
|
||||
select a,length(b),substr(b,1+4*9000,2),length(d),substr(d,1+6*9000,3)
|
||||
from t1 where a=1;
|
||||
select a,length(b),substr(b,1+4*900,2),length(d),substr(d,1+6*900,3)
|
||||
from t1 where a=2;
|
||||
|
||||
# update to null
|
||||
replace t1 set a=1,b='xyz',c=111,d=null;
|
||||
commit;
|
||||
select a,b from t1 where d is null;
|
||||
|
||||
# pk delete
|
||||
delete from t1 where a=1;
|
||||
delete from t1 where a=2;
|
||||
commit;
|
||||
select count(*) from t1;
|
||||
|
||||
# -- hash index ops --
|
||||
|
||||
insert into t1 values(1,@b1,111,@d1);
|
||||
@ -231,39 +249,6 @@ where c >= 100;
|
||||
commit;
|
||||
select * from t1 where c >= 100 order by a;
|
||||
|
||||
# alter table
|
||||
|
||||
select * from t1 order by a;
|
||||
alter table t1 add x int;
|
||||
select * from t1 order by a;
|
||||
alter table t1 drop x;
|
||||
select * from t1 order by a;
|
||||
|
||||
# multi db
|
||||
|
||||
create database mysqltest;
|
||||
use mysqltest;
|
||||
|
||||
CREATE TABLE t2 (
|
||||
a bigint unsigned NOT NULL PRIMARY KEY,
|
||||
b int unsigned not null,
|
||||
c int unsigned
|
||||
) engine=ndbcluster;
|
||||
|
||||
insert into t2 values (1,1,1),(2,2,2);
|
||||
select * from test.t1,t2 where test.t1.a = t2.a order by test.t1.a;
|
||||
|
||||
drop table t2;
|
||||
use test;
|
||||
|
||||
# alter table
|
||||
|
||||
select * from t1 order by a;
|
||||
alter table t1 add x int;
|
||||
select * from t1 order by a;
|
||||
alter table t1 drop x;
|
||||
select * from t1 order by a;
|
||||
|
||||
# range scan delete
|
||||
delete from t1 where c >= 100;
|
||||
commit;
|
||||
@ -306,10 +291,82 @@ select a,length(b),substr(b,1+2*900,2),length(d),substr(d,1+3*900,3)
|
||||
from t1 order by a;
|
||||
rollback;
|
||||
select count(*) from t1;
|
||||
drop table t1;
|
||||
drop database mysqltest;
|
||||
|
||||
# bug #5349
|
||||
# -- alter table and multi db --
|
||||
|
||||
insert into t1 values(1,'b1',111,'dd1');
|
||||
insert into t1 values(2,'b2',222,'dd2');
|
||||
insert into t1 values(3,'b3',333,'dd3');
|
||||
insert into t1 values(4,'b4',444,'dd4');
|
||||
insert into t1 values(5,'b5',555,'dd5');
|
||||
insert into t1 values(6,'b6',666,'dd6');
|
||||
insert into t1 values(7,'b7',777,'dd7');
|
||||
insert into t1 values(8,'b8',888,'dd8');
|
||||
insert into t1 values(9,'b9',999,'dd9');
|
||||
commit;
|
||||
|
||||
select * from t1 order by a;
|
||||
alter table t1 add x int;
|
||||
select * from t1 order by a;
|
||||
alter table t1 drop x;
|
||||
select * from t1 order by a;
|
||||
|
||||
create database test2;
|
||||
use test2;
|
||||
|
||||
CREATE TABLE t2 (
|
||||
a bigint unsigned NOT NULL PRIMARY KEY,
|
||||
b int unsigned not null,
|
||||
c int unsigned
|
||||
) engine=ndbcluster;
|
||||
|
||||
insert into t2 values (1,1,1),(2,2,2);
|
||||
select * from test.t1,t2 where test.t1.a = t2.a order by test.t1.a;
|
||||
|
||||
drop table t2;
|
||||
use test;
|
||||
|
||||
select * from t1 order by a;
|
||||
alter table t1 add x int;
|
||||
select * from t1 order by a;
|
||||
alter table t1 drop x;
|
||||
select * from t1 order by a;
|
||||
|
||||
# -- end general test --
|
||||
|
||||
drop table t1;
|
||||
drop database test2;
|
||||
|
||||
# -- bug-5252 tinytext crashes plus no-commit result --
|
||||
|
||||
set autocommit=0;
|
||||
create table t1 (
|
||||
a int not null primary key,
|
||||
b tinytext
|
||||
) engine=ndbcluster;
|
||||
|
||||
insert into t1 values(1, 'x');
|
||||
update t1 set b = 'y';
|
||||
select * from t1;
|
||||
delete from t1;
|
||||
select * from t1;
|
||||
commit;
|
||||
drop table t1;
|
||||
|
||||
# -- bug-5013 insert empty string to text --
|
||||
|
||||
set autocommit=0;
|
||||
create table t1 (
|
||||
a int not null primary key,
|
||||
b text not null
|
||||
) engine=ndbcluster;
|
||||
|
||||
insert into t1 values(1, '');
|
||||
select * from t1;
|
||||
commit;
|
||||
drop table t1;
|
||||
|
||||
# -- bug #5349 --
|
||||
set autocommit=1;
|
||||
use test;
|
||||
CREATE TABLE t1 (
|
||||
@ -327,7 +384,22 @@ select * from t1 order by a;
|
||||
alter table t1 engine=ndb;
|
||||
select * from t1 order by a;
|
||||
|
||||
# bug #5872
|
||||
# -- bug #5872 --
|
||||
set autocommit=1;
|
||||
alter table t1 engine=myisam;
|
||||
select * from t1 order by a;
|
||||
drop table t1;
|
||||
|
||||
# -- bug #7340 --
|
||||
create table t1 (
|
||||
id int(11) unsigned primary key NOT NULL auto_increment,
|
||||
msg text NOT NULL
|
||||
) engine=ndbcluster default charset=utf8;
|
||||
insert into t1 (msg) values(
|
||||
'Tries to validate (8 byte length + inline bytes) as UTF8 :(
|
||||
Fast fix: removed validation for Text. It is not yet indexable
|
||||
so bad data will not crash kernel.
|
||||
Proper fix: Set inline bytes to multiple of mbmaxlen and
|
||||
validate it (after the 8 byte length).');
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
@ -86,9 +86,9 @@ create table t1 (
|
||||
# ok
|
||||
insert into t1 values(1, 'aAa');
|
||||
# fail
|
||||
--error 1169
|
||||
--error 1062
|
||||
insert into t1 values(2, 'aaa');
|
||||
--error 1169
|
||||
--error 1062
|
||||
insert into t1 values(3, 'AAA');
|
||||
# 1
|
||||
select * from t1 order by p;
|
||||
@ -157,3 +157,13 @@ select * from t1 where a = 'AaA' order by p;
|
||||
# 6
|
||||
select * from t1 where a = 'AAA' order by p;
|
||||
drop table t1;
|
||||
|
||||
# bug
|
||||
create table t1 (
|
||||
a varchar(10) primary key
|
||||
) engine=ndb;
|
||||
insert into t1 values ('jonas % ');
|
||||
replace into t1 values ('jonas % ');
|
||||
replace into t1 values ('jonas % ');
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
374
mysql-test/t/ndb_grant.later
Normal file
374
mysql-test/t/ndb_grant.later
Normal file
@ -0,0 +1,374 @@
|
||||
-- source include/have_ndb.inc
|
||||
# Test of GRANT commands
|
||||
|
||||
# Cleanup
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
SET NAMES binary;
|
||||
|
||||
#
|
||||
# Alter mysql system tables to ndb
|
||||
# make sure you alter all back in the end
|
||||
#
|
||||
use mysql;
|
||||
alter table columns_priv engine=ndb;
|
||||
alter table db engine=ndb;
|
||||
alter table func engine=ndb;
|
||||
alter table help_category engine=ndb;
|
||||
alter table help_keyword engine=ndb;
|
||||
alter table help_relation engine=ndb;
|
||||
alter table help_topic engine=ndb;
|
||||
alter table host engine=ndb;
|
||||
alter table tables_priv engine=ndb;
|
||||
alter table time_zone engine=ndb;
|
||||
alter table time_zone_leap_second engine=ndb;
|
||||
alter table time_zone_name engine=ndb;
|
||||
alter table time_zone_transition engine=ndb;
|
||||
alter table time_zone_transition_type engine=ndb;
|
||||
alter table user engine=ndb;
|
||||
use test;
|
||||
|
||||
#
|
||||
# Test that SSL options works properly
|
||||
#
|
||||
delete from mysql.user where user='mysqltest_1';
|
||||
delete from mysql.db where user='mysqltest_1';
|
||||
flush privileges;
|
||||
begin;
|
||||
grant select on mysqltest.* to mysqltest_1@localhost require cipher "EDH-RSA-DES-CBC3-SHA";
|
||||
commit;
|
||||
show grants for mysqltest_1@localhost;
|
||||
begin;
|
||||
grant delete on mysqltest.* to mysqltest_1@localhost;
|
||||
commit;
|
||||
select * from mysql.user where user="mysqltest_1";
|
||||
show grants for mysqltest_1@localhost;
|
||||
begin;
|
||||
revoke delete on mysqltest.* from mysqltest_1@localhost;
|
||||
commit;
|
||||
show grants for mysqltest_1@localhost;
|
||||
begin;
|
||||
grant select on mysqltest.* to mysqltest_1@localhost require NONE;
|
||||
commit;
|
||||
show grants for mysqltest_1@localhost;
|
||||
begin;
|
||||
grant USAGE on mysqltest.* to mysqltest_1@localhost require cipher "EDH-RSA-DES-CBC3-SHA" AND SUBJECT "testsubject" ISSUER "MySQL AB";
|
||||
commit;
|
||||
show grants for mysqltest_1@localhost;
|
||||
begin;
|
||||
revoke all privileges on mysqltest.* from mysqltest_1@localhost;
|
||||
commit;
|
||||
show grants for mysqltest_1@localhost;
|
||||
delete from mysql.user where user='mysqltest_1';
|
||||
flush privileges;
|
||||
|
||||
#
|
||||
# Test that the new db privileges are stored/retrieved correctly
|
||||
#
|
||||
|
||||
begin;
|
||||
grant CREATE TEMPORARY TABLES, LOCK TABLES on mysqltest.* to mysqltest_1@localhost;
|
||||
commit;
|
||||
show grants for mysqltest_1@localhost;
|
||||
flush privileges;
|
||||
show grants for mysqltest_1@localhost;
|
||||
begin;
|
||||
revoke CREATE TEMPORARY TABLES on mysqltest.* from mysqltest_1@localhost;
|
||||
commit;
|
||||
show grants for mysqltest_1@localhost;
|
||||
begin;
|
||||
grant ALL PRIVILEGES on mysqltest.* to mysqltest_1@localhost with GRANT OPTION;
|
||||
commit;
|
||||
flush privileges;
|
||||
show grants for mysqltest_1@localhost;
|
||||
begin;
|
||||
revoke LOCK TABLES, ALTER on mysqltest.* from mysqltest_1@localhost;
|
||||
commit;
|
||||
show grants for mysqltest_1@localhost;
|
||||
begin;
|
||||
revoke all privileges on mysqltest.* from mysqltest_1@localhost;
|
||||
commit;
|
||||
delete from mysql.user where user='mysqltest_1';
|
||||
flush privileges;
|
||||
begin;
|
||||
grant usage on test.* to mysqltest_1@localhost with grant option;
|
||||
commit;
|
||||
show grants for mysqltest_1@localhost;
|
||||
delete from mysql.user where user='mysqltest_1';
|
||||
delete from mysql.db where user='mysqltest_1';
|
||||
delete from mysql.tables_priv where user='mysqltest_1';
|
||||
delete from mysql.columns_priv where user='mysqltest_1';
|
||||
flush privileges;
|
||||
--error 1141
|
||||
show grants for mysqltest_1@localhost;
|
||||
|
||||
#
|
||||
# Test what happens when you have same table and colum level grants
|
||||
#
|
||||
|
||||
create table t1 (a int);
|
||||
begin;
|
||||
GRANT select,update,insert on t1 to mysqltest_1@localhost;
|
||||
GRANT select (a), update (a),insert(a), references(a) on t1 to mysqltest_1@localhost;
|
||||
commit;
|
||||
show grants for mysqltest_1@localhost;
|
||||
select table_priv,column_priv from mysql.tables_priv where user="mysqltest_1";
|
||||
begin;
|
||||
REVOKE select (a), update on t1 from mysqltest_1@localhost;
|
||||
commit;
|
||||
show grants for mysqltest_1@localhost;
|
||||
begin;
|
||||
REVOKE select,update,insert,insert (a) on t1 from mysqltest_1@localhost;
|
||||
commit;
|
||||
show grants for mysqltest_1@localhost;
|
||||
begin;
|
||||
GRANT select,references on t1 to mysqltest_1@localhost;
|
||||
commit;
|
||||
select table_priv,column_priv from mysql.tables_priv where user="mysqltest_1";
|
||||
begin;
|
||||
grant all on test.* to mysqltest_3@localhost with grant option;
|
||||
revoke all on test.* from mysqltest_3@localhost;
|
||||
commit;
|
||||
show grants for mysqltest_3@localhost;
|
||||
begin;
|
||||
revoke grant option on test.* from mysqltest_3@localhost;
|
||||
commit;
|
||||
show grants for mysqltest_3@localhost;
|
||||
begin;
|
||||
grant all on test.t1 to mysqltest_2@localhost with grant option;
|
||||
revoke all on test.t1 from mysqltest_2@localhost;
|
||||
commit;
|
||||
show grants for mysqltest_2@localhost;
|
||||
begin;
|
||||
revoke grant option on test.t1 from mysqltest_2@localhost;
|
||||
commit;
|
||||
show grants for mysqltest_2@localhost;
|
||||
delete from mysql.user where user='mysqltest_1' or user="mysqltest_2" or user="mysqltest_3";
|
||||
delete from mysql.db where user='mysqltest_1' or user="mysqltest_2" or user="mysqltest_3";
|
||||
delete from mysql.tables_priv where user='mysqltest_1' or user="mysqltest_2" or user="mysqltest_3";
|
||||
delete from mysql.columns_priv where user='mysqltest_1' or user="mysqltest_2" or user="mysqltest_3";
|
||||
flush privileges;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test some error conditions
|
||||
#
|
||||
begin;
|
||||
--error 1221
|
||||
GRANT FILE on mysqltest.* to mysqltest_1@localhost;
|
||||
commit;
|
||||
select 1; -- To test that the previous command didn't cause problems
|
||||
|
||||
#
|
||||
# Bug#6123: GRANT USAGE inserts useless Db row
|
||||
#
|
||||
create database mysqltest1;
|
||||
begin;
|
||||
grant usage on mysqltest1.* to test6123 identified by 'magic123';
|
||||
commit;
|
||||
select host,db,user,select_priv,insert_priv from mysql.db where db="mysqltest1";
|
||||
delete from mysql.user where user='test6123';
|
||||
drop database mysqltest1;
|
||||
|
||||
#
|
||||
# Test for 'drop user', 'revoke privileges, grant'
|
||||
#
|
||||
|
||||
create table t1 (a int);
|
||||
begin;
|
||||
grant ALL PRIVILEGES on *.* to drop_user2@localhost with GRANT OPTION;
|
||||
commit;
|
||||
show grants for drop_user2@localhost;
|
||||
begin;
|
||||
revoke all privileges, grant option from drop_user2@localhost;
|
||||
commit;
|
||||
drop user drop_user2@localhost;
|
||||
|
||||
begin;
|
||||
grant ALL PRIVILEGES on *.* to drop_user@localhost with GRANT OPTION;
|
||||
grant ALL PRIVILEGES on test.* to drop_user@localhost with GRANT OPTION;
|
||||
grant select(a) on test.t1 to drop_user@localhost;
|
||||
commit;
|
||||
show grants for drop_user@localhost;
|
||||
|
||||
#
|
||||
# Bug3086
|
||||
#
|
||||
set sql_mode=ansi_quotes;
|
||||
show grants for drop_user@localhost;
|
||||
set sql_mode=default;
|
||||
|
||||
set sql_quote_show_create=0;
|
||||
show grants for drop_user@localhost;
|
||||
set sql_mode="ansi_quotes";
|
||||
show grants for drop_user@localhost;
|
||||
set sql_quote_show_create=1;
|
||||
show grants for drop_user@localhost;
|
||||
set sql_mode="";
|
||||
show grants for drop_user@localhost;
|
||||
|
||||
revoke all privileges, grant option from drop_user@localhost;
|
||||
show grants for drop_user@localhost;
|
||||
drop user drop_user@localhost;
|
||||
begin;
|
||||
--error 1269
|
||||
revoke all privileges, grant option from drop_user@localhost;
|
||||
commit;
|
||||
|
||||
begin;
|
||||
grant select(a) on test.t1 to drop_user1@localhost;
|
||||
commit;
|
||||
flush privileges;
|
||||
begin;
|
||||
grant select on test.t1 to drop_user2@localhost;
|
||||
grant select on test.* to drop_user3@localhost;
|
||||
grant select on *.* to drop_user4@localhost;
|
||||
commit;
|
||||
--error 1268
|
||||
drop user drop_user1@localhost, drop_user2@localhost, drop_user3@localhost,
|
||||
drop_user4@localhost;
|
||||
begin;
|
||||
revoke all privileges, grant option from drop_user1@localhost, drop_user2@localhost,
|
||||
drop_user3@localhost, drop_user4@localhost;
|
||||
commit;
|
||||
drop user drop_user1@localhost, drop_user2@localhost, drop_user3@localhost,
|
||||
drop_user4@localhost;
|
||||
drop table t1;
|
||||
begin;
|
||||
grant usage on *.* to mysqltest_1@localhost identified by "password";
|
||||
grant select, update, insert on test.* to mysqltest@localhost;
|
||||
commit;
|
||||
show grants for mysqltest_1@localhost;
|
||||
drop user mysqltest_1@localhost;
|
||||
|
||||
#
|
||||
# Bug #3403 Wrong encodin in SHOW GRANTS output
|
||||
#
|
||||
SET NAMES koi8r;
|
||||
CREATE DATABASE <20><>;
|
||||
USE <20><>;
|
||||
CREATE TABLE <20><><EFBFBD> (<28><><EFBFBD> int);
|
||||
|
||||
begin;
|
||||
GRANT SELECT ON <20><>.* TO <20><><EFBFBD><EFBFBD>@localhost;
|
||||
commit;
|
||||
SHOW GRANTS FOR <20><><EFBFBD><EFBFBD>@localhost;
|
||||
begin;
|
||||
REVOKE SELECT ON <20><>.* FROM <20><><EFBFBD><EFBFBD>@localhost;
|
||||
commit;
|
||||
|
||||
begin;
|
||||
GRANT SELECT ON <20><>.<2E><><EFBFBD> TO <20><><EFBFBD><EFBFBD>@localhost;
|
||||
commit;
|
||||
SHOW GRANTS FOR <20><><EFBFBD><EFBFBD>@localhost;
|
||||
begin;
|
||||
REVOKE SELECT ON <20><>.<2E><><EFBFBD> FROM <20><><EFBFBD><EFBFBD>@localhost;
|
||||
commit;
|
||||
|
||||
begin;
|
||||
GRANT SELECT (<28><><EFBFBD>) ON <20><>.<2E><><EFBFBD> TO <20><><EFBFBD><EFBFBD>@localhost;
|
||||
commit;
|
||||
SHOW GRANTS FOR <20><><EFBFBD><EFBFBD>@localhost;
|
||||
begin;
|
||||
REVOKE SELECT (<28><><EFBFBD>) ON <20><>.<2E><><EFBFBD> FROM <20><><EFBFBD><EFBFBD>@localhost;
|
||||
commit;
|
||||
|
||||
DROP DATABASE <20><>;
|
||||
SET NAMES latin1;
|
||||
|
||||
#
|
||||
# Bug #5831: REVOKE ALL PRIVILEGES, GRANT OPTION does not revoke everything
|
||||
#
|
||||
USE test;
|
||||
CREATE TABLE t1 (a int );
|
||||
CREATE TABLE t2 LIKE t1;
|
||||
CREATE TABLE t3 LIKE t1;
|
||||
CREATE TABLE t4 LIKE t1;
|
||||
CREATE TABLE t5 LIKE t1;
|
||||
CREATE TABLE t6 LIKE t1;
|
||||
CREATE TABLE t7 LIKE t1;
|
||||
CREATE TABLE t8 LIKE t1;
|
||||
CREATE TABLE t9 LIKE t1;
|
||||
CREATE TABLE t10 LIKE t1;
|
||||
CREATE DATABASE testdb1;
|
||||
CREATE DATABASE testdb2;
|
||||
CREATE DATABASE testdb3;
|
||||
CREATE DATABASE testdb4;
|
||||
CREATE DATABASE testdb5;
|
||||
CREATE DATABASE testdb6;
|
||||
CREATE DATABASE testdb7;
|
||||
CREATE DATABASE testdb8;
|
||||
CREATE DATABASE testdb9;
|
||||
CREATE DATABASE testdb10;
|
||||
begin;
|
||||
GRANT ALL ON testdb1.* TO testuser@localhost;
|
||||
GRANT ALL ON testdb2.* TO testuser@localhost;
|
||||
GRANT ALL ON testdb3.* TO testuser@localhost;
|
||||
GRANT ALL ON testdb4.* TO testuser@localhost;
|
||||
GRANT ALL ON testdb5.* TO testuser@localhost;
|
||||
GRANT ALL ON testdb6.* TO testuser@localhost;
|
||||
GRANT ALL ON testdb7.* TO testuser@localhost;
|
||||
GRANT ALL ON testdb8.* TO testuser@localhost;
|
||||
GRANT ALL ON testdb9.* TO testuser@localhost;
|
||||
GRANT ALL ON testdb10.* TO testuser@localhost;
|
||||
GRANT SELECT ON test.t1 TO testuser@localhost;
|
||||
GRANT SELECT ON test.t2 TO testuser@localhost;
|
||||
GRANT SELECT ON test.t3 TO testuser@localhost;
|
||||
GRANT SELECT ON test.t4 TO testuser@localhost;
|
||||
GRANT SELECT ON test.t5 TO testuser@localhost;
|
||||
GRANT SELECT ON test.t6 TO testuser@localhost;
|
||||
GRANT SELECT ON test.t7 TO testuser@localhost;
|
||||
GRANT SELECT ON test.t8 TO testuser@localhost;
|
||||
GRANT SELECT ON test.t9 TO testuser@localhost;
|
||||
GRANT SELECT ON test.t10 TO testuser@localhost;
|
||||
GRANT SELECT (a) ON test.t1 TO testuser@localhost;
|
||||
GRANT SELECT (a) ON test.t2 TO testuser@localhost;
|
||||
GRANT SELECT (a) ON test.t3 TO testuser@localhost;
|
||||
GRANT SELECT (a) ON test.t4 TO testuser@localhost;
|
||||
GRANT SELECT (a) ON test.t5 TO testuser@localhost;
|
||||
GRANT SELECT (a) ON test.t6 TO testuser@localhost;
|
||||
GRANT SELECT (a) ON test.t7 TO testuser@localhost;
|
||||
GRANT SELECT (a) ON test.t8 TO testuser@localhost;
|
||||
GRANT SELECT (a) ON test.t9 TO testuser@localhost;
|
||||
GRANT SELECT (a) ON test.t10 TO testuser@localhost;
|
||||
commit;
|
||||
begin;
|
||||
REVOKE ALL PRIVILEGES, GRANT OPTION FROM testuser@localhost;
|
||||
commit;
|
||||
SHOW GRANTS FOR testuser@localhost;
|
||||
DROP USER testuser@localhost;
|
||||
DROP TABLE t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
|
||||
DROP DATABASE testdb1;
|
||||
DROP DATABASE testdb2;
|
||||
DROP DATABASE testdb3;
|
||||
DROP DATABASE testdb4;
|
||||
DROP DATABASE testdb5;
|
||||
DROP DATABASE testdb6;
|
||||
DROP DATABASE testdb7;
|
||||
DROP DATABASE testdb8;
|
||||
DROP DATABASE testdb9;
|
||||
DROP DATABASE testdb10;
|
||||
|
||||
#
|
||||
# Alter mysql system tables back to myisam
|
||||
#
|
||||
use mysql;
|
||||
alter table columns_priv engine=myisam;
|
||||
alter table db engine=myisam;
|
||||
alter table func engine=myisam;
|
||||
alter table help_category engine=myisam;
|
||||
alter table help_keyword engine=myisam;
|
||||
alter table help_relation engine=myisam;
|
||||
alter table help_topic engine=myisam;
|
||||
alter table host engine=myisam;
|
||||
alter table tables_priv engine=myisam;
|
||||
alter table time_zone engine=myisam;
|
||||
alter table time_zone_leap_second engine=myisam;
|
||||
alter table time_zone_name engine=myisam;
|
||||
alter table time_zone_transition engine=myisam;
|
||||
alter table time_zone_transition_type engine=myisam;
|
||||
alter table user engine=myisam;
|
||||
use test;
|
||||
flush privileges;
|
@ -1,7 +1,7 @@
|
||||
-- source include/have_ndb.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
drop table if exists t1, test1, test2;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
@ -146,3 +146,173 @@ select * from t1 use index (bc) where b IS NULL and c = 2 order by a;
|
||||
select * from t1 use index (bc) where b < 4 order by a;
|
||||
select * from t1 use index (bc) where b IS NOT NULL order by a;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #6435
|
||||
CREATE TABLE test1 (
|
||||
SubscrID int(11) NOT NULL auto_increment,
|
||||
UsrID int(11) NOT NULL default '0',
|
||||
PRIMARY KEY (SubscrID),
|
||||
KEY idx_usrid (UsrID)
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
|
||||
|
||||
INSERT INTO test1 VALUES (2,224),(3,224),(1,224);
|
||||
|
||||
CREATE TABLE test2 (
|
||||
SbclID int(11) NOT NULL auto_increment,
|
||||
SbcrID int(11) NOT NULL default '0',
|
||||
PRIMARY KEY (SbclID),
|
||||
KEY idx_sbcrid (SbcrID)
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
|
||||
|
||||
INSERT INTO test2 VALUES (3,2),(1,1),(2,1),(4,2);
|
||||
select * from test1 order by 1;
|
||||
select * from test2 order by 1;
|
||||
SELECT s.SubscrID,l.SbclID FROM test1 s left JOIN test2 l ON
|
||||
l.SbcrID=s.SubscrID WHERE s.UsrID=224 order by 1, 2;
|
||||
drop table test1;
|
||||
drop table test2;
|
||||
|
||||
# bug#7424 + bug#7725
|
||||
|
||||
create table t1 (
|
||||
pk int primary key,
|
||||
dt datetime not null,
|
||||
da date not null,
|
||||
ye year not null,
|
||||
ti time not null,
|
||||
ts timestamp not null,
|
||||
index(dt),
|
||||
index(da),
|
||||
index(ye),
|
||||
index(ti),
|
||||
index(ts)
|
||||
) engine=ndb;
|
||||
|
||||
insert into t1 (pk,dt,da,ye,ti,ts) values
|
||||
(1, '1901-05-05 23:00:59', '1901-05-05', '1901', '23:00:59', '2001-01-01 23:00:59'),
|
||||
(2, '1912-09-05 13:00:59', '1912-09-05', '1912', '13:00:59', '2001-01-01 13:00:59'),
|
||||
(3, '1945-12-31 00:00:00', '1945-12-31', '1945', '00:00:00', '2001-01-01 00:00:00'),
|
||||
(4, '1955-12-31 00:00:00', '1955-12-31', '1955', '00:00:00', '2001-01-01 00:00:00'),
|
||||
(5, '1963-06-06 06:06:06', '1963-06-06', '1963', '06:06:06', '2001-01-01 06:06:06'),
|
||||
(6, '1993-06-06 06:06:06', '1993-06-06', '1993', '06:06:06', '2001-01-01 06:06:06'),
|
||||
(7, '2001-01-01 10:11:10', '2001-01-01', '2001', '10:11:10', '2001-01-01 10:11:10'),
|
||||
(8, '2001-01-01 10:11:11', '2001-01-01', '2001', '10:11:11', '2001-01-01 10:11:11'),
|
||||
(9, '2005-01-31 23:59:59', '2005-01-31', '2005', '23:59:59', '2001-01-01 23:59:59');
|
||||
|
||||
# datetime
|
||||
select count(*)-9 from t1 use index (dt) where dt > '1900-01-01 00:00:00';
|
||||
select count(*)-6 from t1 use index (dt) where dt >= '1955-12-31 00:00:00';
|
||||
select count(*)-5 from t1 use index (dt) where dt > '1955-12-31 00:00:00';
|
||||
select count(*)-5 from t1 use index (dt) where dt < '1970-03-03 22:22:22';
|
||||
select count(*)-7 from t1 use index (dt) where dt < '2001-01-01 10:11:11';
|
||||
select count(*)-8 from t1 use index (dt) where dt <= '2001-01-01 10:11:11';
|
||||
select count(*)-9 from t1 use index (dt) where dt <= '2055-01-01 00:00:00';
|
||||
|
||||
# date
|
||||
select count(*)-9 from t1 use index (da) where da > '1900-01-01';
|
||||
select count(*)-6 from t1 use index (da) where da >= '1955-12-31';
|
||||
select count(*)-5 from t1 use index (da) where da > '1955-12-31';
|
||||
select count(*)-5 from t1 use index (da) where da < '1970-03-03';
|
||||
select count(*)-6 from t1 use index (da) where da < '2001-01-01';
|
||||
select count(*)-8 from t1 use index (da) where da <= '2001-01-02';
|
||||
select count(*)-9 from t1 use index (da) where da <= '2055-01-01';
|
||||
|
||||
# year
|
||||
select count(*)-9 from t1 use index (ye) where ye > '1900';
|
||||
select count(*)-6 from t1 use index (ye) where ye >= '1955';
|
||||
select count(*)-5 from t1 use index (ye) where ye > '1955';
|
||||
select count(*)-5 from t1 use index (ye) where ye < '1970';
|
||||
select count(*)-6 from t1 use index (ye) where ye < '2001';
|
||||
select count(*)-8 from t1 use index (ye) where ye <= '2001';
|
||||
select count(*)-9 from t1 use index (ye) where ye <= '2055';
|
||||
|
||||
# time
|
||||
select count(*)-9 from t1 use index (ti) where ti >= '00:00:00';
|
||||
select count(*)-7 from t1 use index (ti) where ti > '00:00:00';
|
||||
select count(*)-7 from t1 use index (ti) where ti > '05:05:05';
|
||||
select count(*)-5 from t1 use index (ti) where ti > '06:06:06';
|
||||
select count(*)-5 from t1 use index (ti) where ti < '10:11:11';
|
||||
select count(*)-6 from t1 use index (ti) where ti <= '10:11:11';
|
||||
select count(*)-8 from t1 use index (ti) where ti < '23:59:59';
|
||||
select count(*)-9 from t1 use index (ti) where ti <= '23:59:59';
|
||||
|
||||
# timestamp
|
||||
select count(*)-9 from t1 use index (ts) where ts >= '2001-01-01 00:00:00';
|
||||
select count(*)-7 from t1 use index (ts) where ts > '2001-01-01 00:00:00';
|
||||
select count(*)-7 from t1 use index (ts) where ts > '2001-01-01 05:05:05';
|
||||
select count(*)-5 from t1 use index (ts) where ts > '2001-01-01 06:06:06';
|
||||
select count(*)-5 from t1 use index (ts) where ts < '2001-01-01 10:11:11';
|
||||
select count(*)-6 from t1 use index (ts) where ts <= '2001-01-01 10:11:11';
|
||||
select count(*)-8 from t1 use index (ts) where ts < '2001-01-01 23:59:59';
|
||||
select count(*)-9 from t1 use index (ts) where ts <= '2001-01-01 23:59:59';
|
||||
|
||||
drop table t1;
|
||||
|
||||
# decimal (not the new 5.0 thing)
|
||||
|
||||
create table t1 (
|
||||
a int primary key,
|
||||
s decimal(12),
|
||||
t decimal(12, 5),
|
||||
u decimal(12) unsigned,
|
||||
v decimal(12, 5) unsigned,
|
||||
key (s),
|
||||
key (t),
|
||||
key (u),
|
||||
key (v)
|
||||
) engine=ndb;
|
||||
#
|
||||
insert into t1 values
|
||||
( 0, -000000000007, -0000061.00003, 000000000061, 0000965.00042),
|
||||
( 1, -000000000007, -0000061.00042, 000000000061, 0000965.00003),
|
||||
( 2, -071006035767, 4210253.00024, 000000000001, 0000001.84488),
|
||||
( 3, 000000007115, 0000000.77607, 000077350625, 0000018.00013),
|
||||
( 4, -000000068391, -0346486.00000, 000000005071, 0005334.00002),
|
||||
( 5, -521579890459, -1936874.00001, 000000000154, 0000003.00018),
|
||||
( 6, -521579890459, -1936874.00018, 000000000154, 0000003.00001),
|
||||
( 7, 000000000333, 0000051.39140, 000000907958, 0788643.08374),
|
||||
( 8, 000042731229, 0000009.00000, 000000000009, 6428667.00000),
|
||||
( 9, -000008159769, 0000918.00004, 000096951421, 7607730.00008);
|
||||
#
|
||||
select count(*)- 5 from t1 use index (s) where s < -000000000007;
|
||||
select count(*)- 7 from t1 use index (s) where s <= -000000000007;
|
||||
select count(*)- 2 from t1 use index (s) where s = -000000000007;
|
||||
select count(*)- 5 from t1 use index (s) where s >= -000000000007;
|
||||
select count(*)- 3 from t1 use index (s) where s > -000000000007;
|
||||
#
|
||||
select count(*)- 4 from t1 use index (t) where t < -0000061.00003;
|
||||
select count(*)- 5 from t1 use index (t) where t <= -0000061.00003;
|
||||
select count(*)- 1 from t1 use index (t) where t = -0000061.00003;
|
||||
select count(*)- 6 from t1 use index (t) where t >= -0000061.00003;
|
||||
select count(*)- 5 from t1 use index (t) where t > -0000061.00003;
|
||||
#
|
||||
select count(*)- 2 from t1 use index (u) where u < 000000000061;
|
||||
select count(*)- 4 from t1 use index (u) where u <= 000000000061;
|
||||
select count(*)- 2 from t1 use index (u) where u = 000000000061;
|
||||
select count(*)- 8 from t1 use index (u) where u >= 000000000061;
|
||||
select count(*)- 6 from t1 use index (u) where u > 000000000061;
|
||||
#
|
||||
select count(*)- 5 from t1 use index (v) where v < 0000965.00042;
|
||||
select count(*)- 6 from t1 use index (v) where v <= 0000965.00042;
|
||||
select count(*)- 1 from t1 use index (v) where v = 0000965.00042;
|
||||
select count(*)- 5 from t1 use index (v) where v >= 0000965.00042;
|
||||
select count(*)- 4 from t1 use index (v) where v > 0000965.00042;
|
||||
|
||||
drop table t1;
|
||||
|
||||
# bug#7798
|
||||
create table t1(a int primary key, b int not null, index(b));
|
||||
insert into t1 values (1,1), (2,2);
|
||||
connect (con1,localhost,,,test);
|
||||
connect (con2,localhost,,,test);
|
||||
connection con1;
|
||||
set autocommit=0;
|
||||
begin;
|
||||
select count(*) from t1;
|
||||
connection con2;
|
||||
ALTER TABLE t1 ADD COLUMN c int;
|
||||
connection con1;
|
||||
select a from t1 where b = 2;
|
||||
show tables;
|
||||
drop table t1;
|
||||
|
@ -21,7 +21,7 @@ select * from t1 where b = 4 order by b;
|
||||
insert into t1 values(7,8,3);
|
||||
select * from t1 where b = 4 order by a;
|
||||
|
||||
-- error 1169
|
||||
-- error 1062
|
||||
insert into t1 values(8, 2, 3);
|
||||
select * from t1 order by a;
|
||||
delete from t1 where a = 1;
|
||||
@ -30,6 +30,32 @@ select * from t1 order by a;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Indexing NULL values
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (
|
||||
a int unsigned NOT NULL PRIMARY KEY,
|
||||
b int unsigned,
|
||||
c int unsigned,
|
||||
UNIQUE bc(b,c)
|
||||
) engine = ndb;
|
||||
|
||||
insert into t1 values(1,1,1),(2,NULL,2),(3,NULL,NULL),(4,4,NULL);
|
||||
select * from t1 use index (bc) where b IS NULL order by a;
|
||||
|
||||
select * from t1 use index (bc)order by a;
|
||||
select * from t1 use index (bc) order by a;
|
||||
select * from t1 use index (PRIMARY) where b IS NULL order by a;
|
||||
select * from t1 use index (bc) where b IS NULL order by a;
|
||||
select * from t1 use index (bc) where b IS NULL and c IS NULL order by a;
|
||||
select * from t1 use index (bc) where b IS NULL and c = 2 order by a;
|
||||
select * from t1 use index (bc) where b < 4 order by a;
|
||||
select * from t1 use index (bc) where b IS NOT NULL order by a;
|
||||
-- error 1062
|
||||
insert into t1 values(5,1,1);
|
||||
drop table t1;
|
||||
|
||||
|
||||
#
|
||||
# Show use of UNIQUE USING HASH indexes
|
||||
@ -49,7 +75,7 @@ select * from t2 where c = 6;
|
||||
insert into t2 values(7,8,3);
|
||||
select * from t2 where b = 4 order by a;
|
||||
|
||||
-- error 1169
|
||||
-- error 1062
|
||||
insert into t2 values(8, 2, 3);
|
||||
select * from t2 order by a;
|
||||
delete from t2 where a = 1;
|
||||
@ -58,6 +84,14 @@ select * from t2 order by a;
|
||||
|
||||
drop table t2;
|
||||
|
||||
-- error 1121
|
||||
CREATE TABLE t2 (
|
||||
a int unsigned NOT NULL PRIMARY KEY,
|
||||
b int unsigned not null,
|
||||
c int unsigned,
|
||||
UNIQUE USING HASH (b, c)
|
||||
) engine=ndbcluster;
|
||||
|
||||
#
|
||||
# Show use of PRIMARY KEY USING HASH indexes
|
||||
#
|
||||
@ -92,7 +126,7 @@ insert into t1 values (-1,NULL), (0,0), (1,NULL),(2,2),(3,NULL),(4,4);
|
||||
|
||||
select * from t1 order by pk;
|
||||
|
||||
--error 1169
|
||||
--error 1062
|
||||
insert into t1 values (5,0);
|
||||
select * from t1 order by pk;
|
||||
delete from t1 where a = 0;
|
||||
@ -111,7 +145,7 @@ insert into t2 values (-1,1,17,NULL),(0,NULL,18,NULL),(1,3,19,'abc');
|
||||
|
||||
select * from t2 order by pk;
|
||||
|
||||
--error 1169
|
||||
--error 1062
|
||||
insert into t2 values(2,3,19,'abc');
|
||||
select * from t2 order by pk;
|
||||
delete from t2 where c IS NOT NULL;
|
||||
@ -231,4 +265,45 @@ select * from t4 where rid = 2 order by cid;
|
||||
|
||||
drop table t1,t2,t3,t4,t5,t6,t7;
|
||||
|
||||
# test null in indexes
|
||||
CREATE TABLE t1 (
|
||||
a int unsigned NOT NULL PRIMARY KEY,
|
||||
b int unsigned,
|
||||
c int unsigned,
|
||||
UNIQUE bc(b,c) ) engine = ndb;
|
||||
|
||||
insert into t1 values(1,1,1),(2,NULL,2),(3,NULL,NULL),(4,4,NULL);
|
||||
select * from t1 where b=1 and c=1;
|
||||
select * from t1 where b is null and c is null;
|
||||
select * from t1 where b is null and c = 2;
|
||||
select * from t1 where b = 4 and c is null;
|
||||
create table t8 as
|
||||
select * from t1 where (b = 1 and c = 1)
|
||||
or (b is null and c is null)
|
||||
or (b is null and c = 2)
|
||||
or (b = 4 and c is null);
|
||||
select * from t8 order by a;
|
||||
select * from t1 order by a;
|
||||
drop table t1, t8;
|
||||
|
||||
###############################
|
||||
# Bug 8101
|
||||
#
|
||||
# Unique index not specified in the same order as in table
|
||||
#
|
||||
|
||||
create table t1(
|
||||
id integer not null auto_increment,
|
||||
month integer not null,
|
||||
year integer not null,
|
||||
code varchar( 2) not null,
|
||||
primary key ( id),
|
||||
unique idx_t1( month, code, year)
|
||||
) engine=ndb;
|
||||
|
||||
INSERT INTO t1 (month, year, code) VALUES (4,2004,'12');
|
||||
INSERT INTO t1 (month, year, code) VALUES (5,2004,'12');
|
||||
|
||||
select * from t1 where code = '12' and month = 4 and year = 2004 ;
|
||||
|
||||
drop table t1;
|
||||
|
@ -564,22 +564,51 @@ select count(*) from t1;
|
||||
--error 1062
|
||||
insert into t1 select * from t1 where b < 10 order by pk1;
|
||||
|
||||
DELETE FROM t1 WHERE pk1=2;
|
||||
|
||||
begin;
|
||||
--error 1031
|
||||
INSERT IGNORE INTO t1 VALUES(1,2,3);
|
||||
commit;
|
||||
INSERT IGNORE INTO t1 VALUES(1,2,3),(2,3,4);
|
||||
select * from t1 where pk1 < 3 order by pk1;
|
||||
rollback;
|
||||
|
||||
INSERT IGNORE INTO t1 VALUES(1,2,3),(2,3,4);
|
||||
select * from t1 where pk1 < 3 order by pk1;
|
||||
|
||||
REPLACE INTO t1 values(1, 78, 3);
|
||||
select * from t1 where pk1=1;
|
||||
|
||||
--error 1031
|
||||
INSERT IGNORE INTO t1 VALUES(1,2,3);
|
||||
select * from t1 where pk1=1;
|
||||
INSERT INTO t1 VALUES(1,1,1),(3,4,5) ON DUPLICATE KEY UPDATE b=79;
|
||||
select * from t1 where pk1 < 4 order by pk1;
|
||||
|
||||
REPLACE INTO t1 values(1, 2, 3);
|
||||
select * from t1 where pk1=1;
|
||||
INSERT INTO t1 VALUES(1,1,1),(3,4,5) ON DUPLICATE KEY UPDATE b=pk1+c;
|
||||
select * from t1 where pk1 < 4 order by pk1;
|
||||
|
||||
--error 1031
|
||||
INSERT INTO t1 VALUES(1,1,1) ON DUPLICATE KEY UPDATE b=79;
|
||||
select * from t1 where pk1=1;
|
||||
DELETE FROM t1 WHERE pk1 = 2 OR pk1 = 4 OR pk1 = 6;
|
||||
INSERT INTO t1 VALUES(1,1,1),(2,2,17),(3,4,5) ON DUPLICATE KEY UPDATE pk1=b;
|
||||
select * from t1 where pk1 = b and b != c order by pk1;
|
||||
|
||||
# The following test case currently does not work
|
||||
#DELETE FROM t1;
|
||||
#CREATE UNIQUE INDEX bi ON t1(b);
|
||||
#INSERT INTO t1 VALUES
|
||||
#(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
||||
#(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
||||
#INSERT INTO t1 VALUES(0,1,0),(21,21,21) ON DUPLICATE KEY UPDATE pk1=b+10,c=b+10;
|
||||
#select * from t1 order by pk1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #6331: problem with 'insert ignore'
|
||||
#
|
||||
|
||||
CREATE TABLE t1(a INT) ENGINE=ndb;
|
||||
INSERT IGNORE INTO t1 VALUES (1);
|
||||
INSERT IGNORE INTO t1 VALUES (1);
|
||||
INSERT IGNORE INTO t1 SELECT a FROM t1;
|
||||
INSERT IGNORE INTO t1 SELECT a FROM t1;
|
||||
INSERT IGNORE INTO t1 SELECT a FROM t1;
|
||||
INSERT IGNORE INTO t1 VALUES (1);
|
||||
INSERT IGNORE INTO t1 VALUES (1);
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
209
mysql-test/t/ndb_restore.test
Normal file
209
mysql-test/t/ndb_restore.test
Normal file
@ -0,0 +1,209 @@
|
||||
-- source include/have_ndb.inc
|
||||
|
||||
--disable_warnings
|
||||
use test;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE `t1` (
|
||||
`capgoaledatta` smallint(5) unsigned NOT NULL auto_increment,
|
||||
`goaledatta` char(2) NOT NULL default '',
|
||||
`maturegarbagefa` varchar(32) NOT NULL default '',
|
||||
PRIMARY KEY (`capgoaledatta`,`goaledatta`,`maturegarbagefa`)
|
||||
) ENGINE=myisam DEFAULT CHARSET=latin1;
|
||||
INSERT INTO `t1` VALUES (2,'3','q3plus.qt'),(4,'4','q3plus.qt'),(1,'3','q3.net'),(3,'4','q3.net'),(3,'20','threetrees.qt');
|
||||
|
||||
CREATE TABLE `t2` (
|
||||
`capgotod` smallint(5) unsigned NOT NULL auto_increment,
|
||||
`gotod` smallint(5) unsigned NOT NULL default '0',
|
||||
`goaledatta` char(2) default NULL,
|
||||
`maturegarbagefa` varchar(32) default NULL,
|
||||
`descrpooppo` varchar(64) default NULL,
|
||||
`svcutonsa` varchar(64) NOT NULL default '',
|
||||
PRIMARY KEY (`capgotod`),
|
||||
KEY `i_quadaddsvr` (`gotod`)
|
||||
) ENGINE=myisam DEFAULT CHARSET=latin1;
|
||||
INSERT INTO `t2` VALUES (5,4,'','q3.net','addavp:MK_CASELECTOR=1','postorod rattoaa'),(2,1,'4','','addavp:MK_BRANDTAD=345','REDS Brandtad'),(3,2,'4','q3.net','execorder','fixedRatediPO REDS'),(1,1,'3','','addavp:MK_BRANDTAD=123','TEST Brandtad'),(6,5,'','told.q3.net','addavp:MK_BRANDTAD=123','Brandtad Toldzone'),(4,3,'3','q3.net','addavp:MK_POOLHINT=2','ratedi PO TEST');
|
||||
|
||||
CREATE TABLE `t3` (
|
||||
`CapGoaledatta` smallint(5) unsigned NOT NULL default '0',
|
||||
`capgotod` smallint(5) unsigned NOT NULL default '0',
|
||||
PRIMARY KEY (`capgotod`,`CapGoaledatta`)
|
||||
) ENGINE=myisam DEFAULT CHARSET=latin1;
|
||||
INSERT INTO `t3` VALUES (5,3),(2,4),(5,4),(1,3);
|
||||
|
||||
CREATE TABLE `t4` (
|
||||
`capfa` bigint(20) unsigned NOT NULL auto_increment,
|
||||
`realm` varchar(32) NOT NULL default '',
|
||||
`authpwchap` varchar(32) default NULL,
|
||||
`fa` varchar(32) NOT NULL default '',
|
||||
`payyingatta` tinyint(4) NOT NULL default '0',
|
||||
`status` char(1) default NULL,
|
||||
PRIMARY KEY (`fa`,`realm`),
|
||||
KEY `capfa` (`capfa`),
|
||||
KEY `i_quadentity` (`fa`,`realm`)
|
||||
) ENGINE=myisam DEFAULT CHARSET=latin1;
|
||||
INSERT INTO `t4` VALUES (18,'john.smith','q3.net','dessjohn.smith',0,NULL),(21,'quad_katt_with_brandtad','q3.net','acne',0,NULL),(22,'quad_katt_carattoaa','q3.net','acne',0,NULL),(26,'436462612809','sqasdt.q3.net','N/A',0,'6'),(19,'john','smith.qt','dessjohn',0,NULL),(33,'436643196120','sqasdt.q3.net','N/A',1,'6'),(28,'436642900019','sqasdt.q3.net','N/A',0,'6'),(30,'436462900209','sqasdt.q3.net','N/A',0,'6'),(16,'436640006666','sqasdt.q3.net','',0,NULL),(19,'dette','el-redun.com','dessdette',0,NULL),(12,'quad_kattPP','q3.net','acne',2,NULL),(14,'436640008888','sqasdt.q3.net','',0,NULL),(29,'463624900028','sqasdt.q3.net','N/A',0,'6'),(15,'436640099099','sqasdt.q3.net','',0,NULL),(13,'pap','q3plus.qt','acne',1,NULL),(19,'436642612091','sqasdt.q3.net','N/A',0,'6'),(12,'quad_katt','q3.net','acne',0,NULL),(11,'quad_kattVK','q3.net','acne',1,NULL),(32,'463641969502','sqasdt.q3.net','N/A',1,'6'),(20,'joe','q3.net','joedesswd',0,NULL),(29,'436642900034','sqasdt.q3.net','N/A',0,'6'),(25,'contind','armerde.qt','acne',1,NULL);
|
||||
|
||||
CREATE TABLE `t5` (
|
||||
`capfa` bigint(20) unsigned NOT NULL default '0',
|
||||
`gotod` smallint(5) unsigned NOT NULL default '0',
|
||||
`orderutonsa` varchar(64) NOT NULL default '',
|
||||
PRIMARY KEY (`capfa`,`gotod`,`orderutonsa`)
|
||||
) ENGINE=myisam DEFAULT CHARSET=latin1;
|
||||
INSERT INTO `t5` VALUES (21,2,''),(21,1,''),(22,4,'');
|
||||
|
||||
CREATE TABLE `t6` (
|
||||
`capfa_parent` bigint(20) unsigned NOT NULL default '0',
|
||||
`capfa_child` bigint(20) unsigned NOT NULL default '0',
|
||||
`relatta` smallint(5) unsigned NOT NULL default '0',
|
||||
PRIMARY KEY (`capfa_child`,`capfa_parent`,`relatta`)
|
||||
) ENGINE=myisam DEFAULT CHARSET=latin1;
|
||||
INSERT INTO `t6` VALUES (15,16,0),(19,20,0),(18326932092909551615,30,0),(26,29,0),(18326932092909551615,29,0),(19,18,0),(26,28,0),(12,14,0);
|
||||
|
||||
CREATE TABLE `t7` (
|
||||
`dardpo` char(15) NOT NULL default '',
|
||||
`dardtestard` tinyint(3) unsigned NOT NULL default '0',
|
||||
`FastFA` char(5) NOT NULL default '',
|
||||
`FastCode` char(6) NOT NULL default '',
|
||||
`Fastca` char(1) NOT NULL default '',
|
||||
`Fastmag` char(1) NOT NULL default '',
|
||||
`Beareratta` char(2) NOT NULL default '',
|
||||
PRIMARY KEY (`dardpo`,`dardtestard`)
|
||||
) ENGINE=myisam DEFAULT CHARSET=latin1;
|
||||
INSERT INTO `t7` VALUES ('2.6.2.4',24,'CECHP','54545','0','0','5'),('2.2.5.4',26,'CANFA','33223','1','1','4'),('4.3.2.4',28,'ITALD','54222','1','0','5'),('129..0.0.eins',28,'G','99999','1','1','5'),('1.1.1.1',24,'AUTPT','32323','0','1','3');
|
||||
|
||||
CREATE TABLE `t8` (
|
||||
`kattjame` varchar(32) NOT NULL default '',
|
||||
`realm` varchar(32) NOT NULL default '',
|
||||
`realm_entered` varchar(32) NOT NULL default '',
|
||||
`maturegarbagefa` varchar(32) NOT NULL default '',
|
||||
`hunderaaarbagefa_parent` varchar(32) NOT NULL default '',
|
||||
`kattjame_entered` varchar(32) NOT NULL default '',
|
||||
`hunderaaarbagefa` varchar(32) NOT NULL default '',
|
||||
`gest` varchar(16) default NULL,
|
||||
`hassetino` varchar(16) NOT NULL default '',
|
||||
`aaaproxysessfa` varchar(255) default NULL,
|
||||
`autologonallowed` char(1) default NULL,
|
||||
`squardporoot` varchar(15) NOT NULL default '',
|
||||
`naspo` varchar(15) default NULL,
|
||||
`beareratta` char(2) default NULL,
|
||||
`fastCode` varchar(6) default NULL,
|
||||
`fastFA` varchar(5) default NULL,
|
||||
`fastca` char(1) default NULL,
|
||||
`fastmag` char(1) default NULL,
|
||||
`lastupdate` datetime default NULL,
|
||||
`hassetistart` datetime NOT NULL default '0000-00-00 00:00:00',
|
||||
`accthassetitime` int(10) unsigned default NULL,
|
||||
`acctoutputoctets` bigint(20) unsigned default NULL,
|
||||
`acctinputoctets` bigint(20) unsigned default NULL,
|
||||
PRIMARY KEY (`kattjame`,`hunderaaarbagefa`,`hassetistart`,`hassetino`),
|
||||
KEY `squardporoot` (`squardporoot`)
|
||||
) ENGINE=myisam DEFAULT CHARSET=latin1;
|
||||
INSERT INTO `t8` VALUES ('4tt45345235','pap','q3plus.qt','q3plus.qt','q3.net','436643196120','436643196929','8956234534568968','5524595699','uxasmt21.net.acne.qt/481889229462692422','','1.1.1.1','2.2.4.6','4','86989','34','x','x','2012-03-12 12:55:34','2012-12-05 11:20:04',3223433,3369,9565),('4545435545','john','q3.net','q3.net','acne.li','436643196120','436643196929','45345234568968','995696699','uxasmt21.net.acne.qt/481889229462692423','','1.1.1.1','2.2.9.8','2','86989','34','x','x','2012-03-12 11:35:03','2012-12-05 08:50:04',8821923,169,3565),('versteckter_q3net_katt','joe','q3.net','elredun.com','q3.net','436643196120','436643196939','91341234568968','695595699','uxasmt21.net.acne.qt/481889229462692421','','1.1.1.1','2.5.2.5','3','86989','34','x','x','2012-03-12 18:35:04','2012-12-05 12:35:04',1923123,9569,6565);
|
||||
|
||||
CREATE TABLE `t9` (
|
||||
`kattjame` varchar(32) NOT NULL default '',
|
||||
`kattjame_entered` varchar(32) NOT NULL default '',
|
||||
`realm` varchar(32) NOT NULL default '',
|
||||
`realm_entered` varchar(32) NOT NULL default '',
|
||||
`maturegarbagefa` varchar(32) NOT NULL default '',
|
||||
`hunderaaarbagefa` varchar(32) NOT NULL default '',
|
||||
`hunderaaarbagefa_parent` varchar(32) NOT NULL default '',
|
||||
`gest` varchar(16) default NULL,
|
||||
`hassetino` varchar(16) NOT NULL default '',
|
||||
`squardporoot` varchar(15) NOT NULL default '',
|
||||
`naspo` varchar(15) default NULL,
|
||||
`beareratta` char(2) default NULL,
|
||||
`fastCode` varchar(6) default NULL,
|
||||
`fastFA` varchar(5) default NULL,
|
||||
`fastca` char(1) default NULL,
|
||||
`fastmag` char(1) default NULL,
|
||||
`lastupdate` datetime default NULL,
|
||||
`hassetistart` datetime NOT NULL default '0000-00-00 00:00:00',
|
||||
`accthassetitime` int(10) unsigned default NULL,
|
||||
`actcoutpuocttets` bigint(20) unsigned default NULL,
|
||||
`actinputocctets` bigint(20) unsigned default NULL,
|
||||
`terminateraste` tinyint(3) unsigned default NULL,
|
||||
PRIMARY KEY (`kattjame`,`hunderaaarbagefa`,`hassetistart`,`hassetino`)
|
||||
) ENGINE=myisam DEFAULT CHARSET=latin1;
|
||||
INSERT INTO `t9` VALUES ('3g4jh8gar2t','joe','q3.net','elredun.com','q3.net','436643316120','436643316939','91341234568968','695595699','1.1.1.1','2.2.6.2','3','86989','34','x','x','2012-03-12 18:35:04','2012-12-05 12:35:04',3123123,9569,6565,1),('4tt45345235','pap','q3plus.qt','q3plus.qt','q3.net','436643316120','436643316939','8956234534568968','5254595969','1.1.1.1','8.6.2.2','4','86989','34','x','x','2012-03-12 12:55:34','2012-12-05 11:20:04',3223433,3369,9565,2),('4545435545','john','q3.net','q3.net','acne.li','436643316120','436643316939','45345234568968','995696699','1.1.1.1','2.9.9.2','2','86998','34','x','x','2012-03-12 11:35:03','2012-12-05 08:50:04',8823123,169,3565,3);
|
||||
|
||||
create table t1_c engine=ndbcluster as select * from t1;
|
||||
create table t2_c engine=ndbcluster as select * from t2;
|
||||
create table t3_c engine=ndbcluster as select * from t3;
|
||||
create table t4_c engine=ndbcluster as select * from t4;
|
||||
create table t5_c engine=ndbcluster as select * from t5;
|
||||
create table t6_c engine=ndbcluster as select * from t6;
|
||||
create table t7_c engine=ndbcluster as select * from t7;
|
||||
create table t8_c engine=ndbcluster as select * from t8;
|
||||
create table t9_c engine=ndbcluster as select * from t9;
|
||||
|
||||
|
||||
--exec $NDB_MGM --no-defaults -e "start backup" >> $NDB_TOOLS_OUTPUT
|
||||
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 1 -n 1 -m -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-1 >> $NDB_TOOLS_OUTPUT
|
||||
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 1 -n 2 -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-1 >> $NDB_TOOLS_OUTPUT
|
||||
|
||||
show tables;
|
||||
|
||||
|
||||
select count(*) from t1;
|
||||
select count(*) from t1_c;
|
||||
select count(*)
|
||||
from (select * from t1 union
|
||||
select * from t1_c) a;
|
||||
|
||||
select count(*) from t2;
|
||||
select count(*) from t2_c;
|
||||
select count(*)
|
||||
from (select * from t2 union
|
||||
select * from t2_c) a;
|
||||
|
||||
select count(*) from t3;
|
||||
select count(*) from t3_c;
|
||||
select count(*)
|
||||
from (select * from t3 union
|
||||
select * from t3_c) a;
|
||||
|
||||
select count(*) from t4;
|
||||
select count(*) from t4_c;
|
||||
select count(*)
|
||||
from (select * from t4 union
|
||||
select * from t4_c) a;
|
||||
|
||||
select count(*) from t5;
|
||||
select count(*) from t5_c;
|
||||
select count(*)
|
||||
from (select * from t5 union
|
||||
select * from t5_c) a;
|
||||
|
||||
select count(*) from t6;
|
||||
select count(*) from t6_c;
|
||||
select count(*)
|
||||
from (select * from t6 union
|
||||
select * from t6_c) a;
|
||||
|
||||
select count(*) from t7;
|
||||
select count(*) from t7_c;
|
||||
select count(*)
|
||||
from (select * from t7 union
|
||||
select * from t7_c) a;
|
||||
|
||||
select count(*) from t8;
|
||||
select count(*) from t8_c;
|
||||
select count(*)
|
||||
from (select * from t8 union
|
||||
select * from t8_c) a;
|
||||
|
||||
select count(*) from t9;
|
||||
select count(*) from t9_c;
|
||||
select count(*)
|
||||
from (select * from t9 union
|
||||
select * from t9_c) a;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||
--enable_warnings
|
22
mysql-test/t/ndb_update.test
Normal file
22
mysql-test/t/ndb_update.test
Normal file
@ -0,0 +1,22 @@
|
||||
-- source include/have_ndb.inc
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# Basic test of INSERT in NDB
|
||||
#
|
||||
|
||||
#
|
||||
# Create a normal table with primary key
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
pk1 INT NOT NULL PRIMARY KEY,
|
||||
b INT NOT NULL,
|
||||
c INT NOT NULL
|
||||
) ENGINE=ndbcluster;
|
||||
|
||||
INSERT INTO t1 VALUES (0, 0, 1),(1,1,2),(2,2,3);
|
||||
UPDATE t1 set b = c;
|
||||
select * from t1 order by pk1;
|
@ -119,3 +119,70 @@ alter table t1 change i i int not null;
|
||||
explain select * from t1 where i=2 or i is null;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# NULL has its own type BINARY(0) by default.
|
||||
# But NULL should be weaker than a constant
|
||||
# when mixing charsets/collations
|
||||
#
|
||||
set names latin2;
|
||||
# Check that result type is taken from a non-null string
|
||||
create table t1 select
|
||||
null as c00,
|
||||
if(1, null, 'string') as c01,
|
||||
if(0, null, 'string') as c02,
|
||||
ifnull(null, 'string') as c03,
|
||||
ifnull('string', null) as c04,
|
||||
case when 0 then null else 'string' end as c05,
|
||||
case when 1 then null else 'string' end as c06,
|
||||
coalesce(null, 'string') as c07,
|
||||
coalesce('string', null) as c08,
|
||||
least('string',null) as c09,
|
||||
least(null, 'string') as c10,
|
||||
greatest('string',null) as c11,
|
||||
greatest(null, 'string') as c12,
|
||||
nullif('string', null) as c13,
|
||||
nullif(null, 'string') as c14,
|
||||
trim('string' from null) as c15,
|
||||
trim(null from 'string') as c16,
|
||||
substring_index('string', null, 1) as c17,
|
||||
substring_index(null, 'string', 1) as c18,
|
||||
elt(1, null, 'string') as c19,
|
||||
elt(1, 'string', null) as c20,
|
||||
concat('string', null) as c21,
|
||||
concat(null, 'string') as c22,
|
||||
concat_ws('sep', 'string', null) as c23,
|
||||
concat_ws('sep', null, 'string') as c24,
|
||||
concat_ws(null, 'string', 'string') as c25,
|
||||
make_set(3, 'string', null) as c26,
|
||||
make_set(3, null, 'string') as c27,
|
||||
export_set(3, null, 'off', 'sep') as c29,
|
||||
export_set(3, 'on', null, 'sep') as c30,
|
||||
export_set(3, 'on', 'off', null) as c31,
|
||||
replace(null, 'from', 'to') as c32,
|
||||
replace('str', null, 'to') as c33,
|
||||
replace('str', 'from', null) as c34,
|
||||
insert('str', 1, 2, null) as c35,
|
||||
insert(null, 1, 2, 'str') as c36,
|
||||
lpad('str', 10, null) as c37,
|
||||
rpad(null, 10, 'str') as c38;
|
||||
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Check that comparison is done according to
|
||||
# non-null string collation, i.e. case insensitively,
|
||||
# rather than according to NULL's collation, i.e. case sensitively
|
||||
#
|
||||
-- in field
|
||||
select
|
||||
case 'str' when 'STR' then 'str' when null then 'null' end as c01,
|
||||
case 'str' when null then 'null' when 'STR' then 'str' end as c02,
|
||||
field(null, 'str1', 'str2') as c03,
|
||||
field('str1','STR1', null) as c04,
|
||||
field('str1', null, 'STR1') as c05,
|
||||
'string' in ('STRING', null) as c08,
|
||||
'string' in (null, 'STRING') as c09;
|
||||
|
||||
# Restore charset to the default value.
|
||||
set names latin1;
|
||||
|
@ -9,9 +9,9 @@ create table t1(f1 int);
|
||||
insert into t1 values (5);
|
||||
|
||||
grant select on test.* to ssl_user1@localhost require SSL;
|
||||
grant select on test.* to ssl_user2@localhost require cipher "EDH-RSA-DES-CBC3-SHA";
|
||||
grant select on test.* to ssl_user3@localhost require cipher "EDH-RSA-DES-CBC3-SHA" AND SUBJECT "/C=SE/L=Uppsala/O=MySQL AB/CN=MySQL Client/Email=abstract.mysql.developer@mysql.com";
|
||||
grant select on test.* to ssl_user4@localhost require cipher "EDH-RSA-DES-CBC3-SHA" AND SUBJECT "/C=SE/L=Uppsala/O=MySQL AB/CN=MySQL Client/Email=abstract.mysql.developer@mysql.com" ISSUER "/C=SE/L=Uppsala/O=MySQL AB/CN=Abstract MySQL Developer/Email=abstract.mysql.developer@mysql.com";
|
||||
grant select on test.* to ssl_user2@localhost require cipher "DHE-RSA-AES256-SHA";
|
||||
grant select on test.* to ssl_user3@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=SE/L=Uppsala/O=MySQL AB/CN=MySQL Client/Email=abstract.mysql.developer@mysql.com";
|
||||
grant select on test.* to ssl_user4@localhost require cipher "DHE-RSA-AES256-SHA" AND SUBJECT "/C=SE/L=Uppsala/O=MySQL AB/CN=MySQL Client/Email=abstract.mysql.developer@mysql.com" ISSUER "/C=SE/L=Uppsala/O=MySQL AB/CN=Abstract MySQL Developer/Email=abstract.mysql.developer@mysql.com";
|
||||
flush privileges;
|
||||
connect (con1,localhost,ssl_user1,,);
|
||||
connect (con2,localhost,ssl_user2,,);
|
||||
|
@ -500,3 +500,47 @@ insert into t1 set a = concat(repeat('x', 19), 'aa');
|
||||
set max_sort_length=20;
|
||||
select a from t1 order by a;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #7331
|
||||
#
|
||||
|
||||
create table t1 (
|
||||
`sid` decimal(8,0) default null,
|
||||
`wnid` varchar(11) not null default '',
|
||||
key `wnid14` (`wnid`(4)),
|
||||
key `wnid` (`wnid`)
|
||||
) engine=myisam default charset=latin1;
|
||||
|
||||
insert into t1 (`sid`, `wnid`) values
|
||||
('10100','01019000000'),('37986','01019000000'),('37987','01019010000'),
|
||||
('39560','01019090000'),('37989','01019000000'),('37990','01019011000'),
|
||||
('37991','01019011000'),('37992','01019019000'),('37993','01019030000'),
|
||||
('37994','01019090000'),('475','02070000000'),('25253','02071100000'),
|
||||
('25255','02071100000'),('25256','02071110000'),('25258','02071130000'),
|
||||
('25259','02071190000'),('25260','02071200000'),('25261','02071210000'),
|
||||
('25262','02071290000'),('25263','02071300000'),('25264','02071310000'),
|
||||
('25265','02071310000'),('25266','02071320000'),('25267','02071320000'),
|
||||
('25269','02071330000'),('25270','02071340000'),('25271','02071350000'),
|
||||
('25272','02071360000'),('25273','02071370000'),('25281','02071391000'),
|
||||
('25282','02071391000'),('25283','02071399000'),('25284','02071400000'),
|
||||
('25285','02071410000'),('25286','02071410000'),('25287','02071420000'),
|
||||
('25288','02071420000'),('25291','02071430000'),('25290','02071440000'),
|
||||
('25292','02071450000'),('25293','02071460000'),('25294','02071470000'),
|
||||
('25295','02071491000'),('25296','02071491000'),('25297','02071499000');
|
||||
|
||||
explain select * from t1 where wnid like '0101%' order by wnid;
|
||||
|
||||
select * from t1 where wnid like '0101%' order by wnid;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #7672 - a wrong result for a select query in braces followed by order by
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a int);
|
||||
INSERT INTO t1 VALUES (2), (1), (1), (2), (1);
|
||||
SELECT a FROM t1 ORDER BY a;
|
||||
(SELECT a FROM t1) ORDER BY a;
|
||||
DROP TABLE t1;
|
||||
|
@ -110,10 +110,6 @@ set @fvar= 123.4567;
|
||||
--error 1064
|
||||
prepare stmt1 from @fvar;
|
||||
|
||||
set @str1 = 'select ?';
|
||||
set @str2 = convert(@str1 using ucs2);
|
||||
prepare stmt1 from @str2;
|
||||
execute stmt1 using @ivar;
|
||||
drop table t1,t2;
|
||||
|
||||
#
|
||||
@ -462,3 +458,30 @@ EXECUTE stmt;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#6297 "prepared statement, wrong handling of <parameter> IS NULL"
|
||||
# Test that placeholders work with IS NULL/IS NOT NULL clauses.
|
||||
#
|
||||
prepare stmt from "select ? is null, ? is not null, ?";
|
||||
select @no_such_var is null, @no_such_var is not null, @no_such_var;
|
||||
execute stmt using @no_such_var, @no_such_var, @no_such_var;
|
||||
set @var='abc';
|
||||
select @var is null, @var is not null, @var;
|
||||
execute stmt using @var, @var, @var;
|
||||
set @var=null;
|
||||
select @var is null, @var is not null, @var;
|
||||
execute stmt using @var, @var, @var;
|
||||
|
||||
#
|
||||
# Bug#6873 "PS, having with subquery, crash during execute"
|
||||
# check that if we modify having subtree, we update JOIN->having pointer
|
||||
#
|
||||
create table t1 (pnum char(3));
|
||||
create table t2 (pnum char(3));
|
||||
prepare stmt from "select pnum from t2 having pnum in (select 'p1' from t1)";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
drop table t1, t2;
|
||||
|
||||
|
@ -61,12 +61,11 @@ while ($1)
|
||||
|
||||
select * from t1;
|
||||
|
||||
# Waiting for the resolution of bug#6138
|
||||
# # Now, increase salary to a multiple of 50
|
||||
# prepare st_round from 'update t1 set salary = salary + ? - ( salary MOD ? )';
|
||||
# set @arg_round= 50;
|
||||
# execute st_round using @arg_round, @arg_round;
|
||||
#
|
||||
# select * from t1;
|
||||
# Now, increase salary to a multiple of 50 (checks for bug#6138)
|
||||
prepare st_round from 'update t1 set salary = salary + ? - ( salary MOD ? )';
|
||||
set @arg_round= 50;
|
||||
execute st_round using @arg_round, @arg_round;
|
||||
|
||||
select * from t1;
|
||||
|
||||
drop table t1;
|
||||
|
@ -8,7 +8,12 @@
|
||||
# NOTE: PLEASE SEE THE DETAILED DESCRIPTION AT THE BOTTOM OF THIS FILE
|
||||
# BEFORE ADDING NEW TEST CASES HERE !!!
|
||||
|
||||
use test;
|
||||
--disable_warnings
|
||||
drop table if exists t5, t6, t7, t8;
|
||||
drop database if exists mysqltest ;
|
||||
drop database if exists client_test_db;
|
||||
--enable_warnings
|
||||
|
||||
--disable_query_log
|
||||
select '------ basic tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
@ -290,12 +295,14 @@ execute stmt4;
|
||||
prepare stmt4 from ' show table status from test like ''t2%'' ';
|
||||
# egalize date and time values
|
||||
--replace_column 12 # 13 # 14 #
|
||||
--replace_result 2147483647 64424509439
|
||||
# Bug#4288 : prepared statement 'show table status ..', wrong output on execute
|
||||
execute stmt4;
|
||||
# try the same with the big table
|
||||
prepare stmt4 from ' show table status from test like ''t9%'' ';
|
||||
# egalize date and time values
|
||||
--replace_column 12 # 13 # 14 #
|
||||
--replace_result 2147483647 4294967295
|
||||
# Bug#4288
|
||||
execute stmt4;
|
||||
prepare stmt4 from ' show status like ''Threads_running'' ';
|
||||
@ -311,7 +318,7 @@ prepare stmt4 from ' show engine bdb logs ';
|
||||
execute stmt4;
|
||||
--enable_result_log
|
||||
prepare stmt4 from ' show full processlist ';
|
||||
--replace_column 1 number
|
||||
--replace_column 1 number 6 time 3 localhost
|
||||
execute stmt4;
|
||||
prepare stmt4 from ' show grants for user ';
|
||||
--error 1295
|
||||
@ -590,12 +597,10 @@ rename table new_t2 to t2;
|
||||
drop table t2;
|
||||
## RENAME more than on TABLE within one statement
|
||||
# cases derived from client_test.c: test_rename()
|
||||
--disable_warnings
|
||||
drop table if exists t5, t6, t7, t8 ;
|
||||
--enable_warnings
|
||||
prepare stmt1 from ' rename table t5 to t6, t7 to t8 ' ;
|
||||
create table t5 (a int) ;
|
||||
# rename must fail, tc does not exist
|
||||
# rename must fail, t7 does not exist
|
||||
--replace_result \\ /
|
||||
--error 1017
|
||||
execute stmt1 ;
|
||||
create table t7 (a int) ;
|
||||
@ -864,15 +869,23 @@ select '------ grant/revoke/drop affects a parallel session test ------'
|
||||
--error 1141
|
||||
show grants for second_user@localhost ;
|
||||
## create a new user account by using GRANT statements on t9
|
||||
grant usage on test.* to second_user@localhost
|
||||
create database mysqltest;
|
||||
# create the tables (t1 and t9) used in many tests
|
||||
use mysqltest;
|
||||
--disable_query_log
|
||||
--source include/ps_create.inc
|
||||
--source include/ps_renew.inc
|
||||
--enable_query_log
|
||||
eval use $DB;
|
||||
grant usage on mysqltest.* to second_user@localhost
|
||||
identified by 'looser' ;
|
||||
grant select on test.t9 to second_user@localhost
|
||||
grant select on mysqltest.t9 to second_user@localhost
|
||||
identified by 'looser' ;
|
||||
show grants for second_user@localhost ;
|
||||
|
||||
|
||||
#### establish a second session to the new user account
|
||||
connect (con3,localhost,second_user,looser,test);
|
||||
connect (con3,localhost,second_user,looser,mysqltest);
|
||||
## switch to the second session
|
||||
connection con3;
|
||||
# Who am I ?
|
||||
@ -890,10 +903,10 @@ select a as my_col from t1;
|
||||
#### give access rights to t1 and drop table t9
|
||||
## switch back to the first session
|
||||
connection default;
|
||||
grant select on test.t1 to second_user@localhost
|
||||
grant select on mysqltest.t1 to second_user@localhost
|
||||
identified by 'looser' ;
|
||||
show grants for second_user@localhost ;
|
||||
drop table t9 ;
|
||||
drop table mysqltest.t9 ;
|
||||
show grants for second_user@localhost ;
|
||||
|
||||
|
||||
@ -912,7 +925,7 @@ execute s_t9 ;
|
||||
#### revoke the access rights to t1
|
||||
## switch back to the first session
|
||||
connection default;
|
||||
revoke all privileges on test.t1 from second_user@localhost
|
||||
revoke all privileges on mysqltest.t1 from second_user@localhost
|
||||
identified by 'looser' ;
|
||||
show grants for second_user@localhost ;
|
||||
|
||||
@ -937,8 +950,8 @@ commit ;
|
||||
--error 1141
|
||||
show grants for second_user@localhost ;
|
||||
|
||||
|
||||
drop table t1 ;
|
||||
drop table t1,t9 ;
|
||||
drop database mysqltest;
|
||||
|
||||
|
||||
##### RULES OF THUMB TO PRESERVE THE SYSTEMATICS OF THE PS TEST CASES #####
|
||||
|
@ -12,365 +12,11 @@ use test;
|
||||
|
||||
-- source include/have_ndb.inc
|
||||
let $type= 'NDB' ;
|
||||
--disable_warnings
|
||||
drop table if exists t1, t9 ;
|
||||
--enable_warnings
|
||||
eval create table t1
|
||||
(
|
||||
a int not null, b varchar(30),
|
||||
primary key(a)
|
||||
) engine = $type ;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t9;
|
||||
--enable_warnings
|
||||
# The used table type doesn't support BLOB/TEXT columns.
|
||||
# (The server would send error 1163 .)
|
||||
# So we use char(100) instead.
|
||||
eval create table t9
|
||||
(
|
||||
c1 tinyint not null, c2 smallint, c3 mediumint, c4 int,
|
||||
c5 integer, c6 bigint, c7 float, c8 double,
|
||||
c9 double precision, c10 real, c11 decimal(7, 4), c12 numeric(8, 4),
|
||||
c13 date, c14 datetime, c15 timestamp(14), c16 time,
|
||||
c17 year, c18 bit, c19 bool, c20 char,
|
||||
c21 char(10), c22 varchar(30), c23 char(100), c24 char(100),
|
||||
c25 char(100), c26 char(100), c27 char(100), c28 char(100),
|
||||
c29 char(100), c30 char(100), c31 enum('one', 'two', 'three'),
|
||||
c32 set('monday', 'tuesday', 'wednesday'),
|
||||
primary key(c1)
|
||||
) engine = $type ;
|
||||
-- source include/ps_create.inc
|
||||
-- source include/ps_renew.inc
|
||||
|
||||
-- source include/ps_query.inc
|
||||
# The following line is deactivated, because the ndb storage engine is not able
|
||||
# to do primary key column updates .
|
||||
#-- source include/ps_modify.inc
|
||||
# let's include all statements which will work
|
||||
--disable_query_log
|
||||
select '------ delete tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
--source include/ps_renew.inc
|
||||
|
||||
## delete without parameter
|
||||
prepare stmt1 from 'delete from t1 where a=2' ;
|
||||
execute stmt1;
|
||||
select a,b from t1 where a=2 order by b;
|
||||
# delete with row not found
|
||||
execute stmt1;
|
||||
|
||||
## delete with one parameter in the where clause
|
||||
insert into t1 values(0,NULL);
|
||||
set @arg00=NULL;
|
||||
prepare stmt1 from 'delete from t1 where b=?' ;
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where b is NULL ;
|
||||
set @arg00='one';
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where b=@arg00;
|
||||
|
||||
## truncate a table
|
||||
--error 1295
|
||||
prepare stmt1 from 'truncate table t1' ;
|
||||
|
||||
|
||||
--disable_query_log
|
||||
select '------ update tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
--source include/ps_renew.inc
|
||||
|
||||
## update without parameter
|
||||
prepare stmt1 from 'update t1 set b=''a=two'' where a=2' ;
|
||||
execute stmt1;
|
||||
select a,b from t1 where a=2;
|
||||
# dummy update
|
||||
execute stmt1;
|
||||
select a,b from t1 where a=2;
|
||||
|
||||
## update with one parameter in the set clause
|
||||
set @arg00=NULL;
|
||||
prepare stmt1 from 'update t1 set b=? where a=2' ;
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where a=2;
|
||||
set @arg00='two';
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where a=2;
|
||||
|
||||
## update with one parameter in the where cause
|
||||
set @arg00=2;
|
||||
prepare stmt1 from 'update t1 set b=NULL where a=?' ;
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where a=@arg00;
|
||||
update t1 set b='two' where a=@arg00;
|
||||
# row not found in update
|
||||
set @arg00=2000;
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where a=@arg00;
|
||||
|
||||
## update on primary key column (two parameters)
|
||||
set @arg00=2;
|
||||
set @arg01=22;
|
||||
prepare stmt1 from 'update t1 set a=? where a=?' ;
|
||||
# dummy update
|
||||
execute stmt1 using @arg00, @arg00;
|
||||
select a,b from t1 where a=@arg00;
|
||||
# deactivated primary key column update
|
||||
# execute stmt1 using @arg01, @arg00;
|
||||
select a,b from t1 where a=@arg01;
|
||||
execute stmt1 using @arg00, @arg01;
|
||||
select a,b from t1 where a=@arg00;
|
||||
set @arg00=NULL;
|
||||
set @arg01=2;
|
||||
# deactivated primary key column update
|
||||
# execute stmt1 using @arg00, @arg01;
|
||||
select a,b from t1 order by a;
|
||||
set @arg00=0;
|
||||
execute stmt1 using @arg01, @arg00;
|
||||
select a,b from t1 order by a;
|
||||
|
||||
## update with subquery and several parameters
|
||||
set @arg00=23;
|
||||
set @arg01='two';
|
||||
set @arg02=2;
|
||||
set @arg03='two';
|
||||
set @arg04=2;
|
||||
--disable_warnings
|
||||
drop table if exists t2;
|
||||
--enable_warnings
|
||||
# t2 will be of table type 'MYISAM'
|
||||
create table t2 as select a,b from t1 ;
|
||||
prepare stmt1 from 'update t1 set a=? where b=?
|
||||
and a in (select ? from t2
|
||||
where b = ? or a = ?)';
|
||||
--enable_info
|
||||
# deactivated primary key column update
|
||||
# execute stmt1 using @arg00, @arg01, @arg02, @arg03, @arg04 ;
|
||||
--disable_info
|
||||
select a,b from t1 where a = @arg00 ;
|
||||
prepare stmt1 from 'update t1 set a=? where b=?
|
||||
and a not in (select ? from t2
|
||||
where b = ? or a = ?)';
|
||||
--enable_info
|
||||
execute stmt1 using @arg04, @arg01, @arg02, @arg03, @arg00 ;
|
||||
--disable_info
|
||||
select a,b from t1 order by a;
|
||||
drop table t2 ;
|
||||
# t2 is now of table type '$type'
|
||||
# The test battery for table type 'MERGE' gets here only a 'MYISAM' table
|
||||
eval create table t2
|
||||
(
|
||||
a int not null, b varchar(30),
|
||||
primary key(a)
|
||||
) engine = $type ;
|
||||
insert into t2(a,b) select a, b from t1 ;
|
||||
prepare stmt1 from 'update t1 set a=? where b=?
|
||||
and a in (select ? from t2
|
||||
where b = ? or a = ?)';
|
||||
--enable_info
|
||||
# deactivated primary key column update
|
||||
# execute stmt1 using @arg00, @arg01, @arg02, @arg03, @arg04 ;
|
||||
--disable_info
|
||||
select a,b from t1 where a = @arg00 ;
|
||||
prepare stmt1 from 'update t1 set a=? where b=?
|
||||
and a not in (select ? from t2
|
||||
where b = ? or a = ?)';
|
||||
--enable_info
|
||||
execute stmt1 using @arg04, @arg01, @arg02, @arg03, @arg00 ;
|
||||
--disable_info
|
||||
select a,b from t1 order by a ;
|
||||
drop table t2 ;
|
||||
|
||||
## update with parameters in limit
|
||||
set @arg00=1;
|
||||
prepare stmt1 from 'update t1 set b=''bla''
|
||||
where a=2
|
||||
limit 1';
|
||||
execute stmt1 ;
|
||||
select a,b from t1 where b = 'bla' ;
|
||||
# currently (May 2004, Version 4.1) it is impossible
|
||||
-- error 1064
|
||||
prepare stmt1 from 'update t1 set b=''bla''
|
||||
where a=2
|
||||
limit ?';
|
||||
|
||||
--disable_query_log
|
||||
select '------ insert tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
--source include/ps_renew.inc
|
||||
|
||||
## insert without parameter
|
||||
prepare stmt1 from 'insert into t1 values(5, ''five'' )';
|
||||
execute stmt1;
|
||||
select a,b from t1 where a = 5;
|
||||
|
||||
## insert with one parameter in values part
|
||||
set @arg00='six' ;
|
||||
prepare stmt1 from 'insert into t1 values(6, ? )';
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where b = @arg00;
|
||||
# the second insert fails, because the first column is primary key
|
||||
--error 1062
|
||||
execute stmt1 using @arg00;
|
||||
set @arg00=NULL ;
|
||||
prepare stmt1 from 'insert into t1 values(0, ? )';
|
||||
execute stmt1 using @arg00;
|
||||
select a,b from t1 where b is NULL;
|
||||
|
||||
## insert with two parameter in values part
|
||||
set @arg00=8 ;
|
||||
set @arg01='eight' ;
|
||||
prepare stmt1 from 'insert into t1 values(?, ? )';
|
||||
execute stmt1 using @arg00, @arg01 ;
|
||||
select a,b from t1 where b = @arg01;
|
||||
# cases derived from client_test.c: test_null()
|
||||
set @NULL= null ;
|
||||
set @arg00= 'abc' ;
|
||||
# execute must fail, because first column is primary key (-> not null)
|
||||
--error 1048
|
||||
execute stmt1 using @NULL, @NULL ;
|
||||
--error 1048
|
||||
execute stmt1 using @NULL, @NULL ;
|
||||
--error 1048
|
||||
execute stmt1 using @NULL, @arg00 ;
|
||||
--error 1048
|
||||
execute stmt1 using @NULL, @arg00 ;
|
||||
let $1 = 2;
|
||||
while ($1)
|
||||
{
|
||||
eval set @arg01= 10000 + $1 ;
|
||||
execute stmt1 using @arg01, @arg00 ;
|
||||
dec $1;
|
||||
}
|
||||
select * from t1 where a > 10000 order by a ;
|
||||
delete from t1 where a > 10000 ;
|
||||
let $1 = 2;
|
||||
while ($1)
|
||||
{
|
||||
eval set @arg01= 10000 + $1 ;
|
||||
execute stmt1 using @arg01, @NULL ;
|
||||
dec $1;
|
||||
}
|
||||
select * from t1 where a > 10000 order by a ;
|
||||
delete from t1 where a > 10000 ;
|
||||
let $1 = 10;
|
||||
while ($1)
|
||||
{
|
||||
eval set @arg01= 10000 + $1 ;
|
||||
execute stmt1 using @arg01, @arg01 ;
|
||||
dec $1;
|
||||
}
|
||||
select * from t1 where a > 10000 order by a ;
|
||||
delete from t1 where a > 10000 ;
|
||||
|
||||
|
||||
## insert with two rows in values part
|
||||
set @arg00=81 ;
|
||||
set @arg01='8-1' ;
|
||||
set @arg02=82 ;
|
||||
set @arg03='8-2' ;
|
||||
prepare stmt1 from 'insert into t1 values(?,?),(?,?)';
|
||||
execute stmt1 using @arg00, @arg01, @arg02, @arg03 ;
|
||||
select a,b from t1 where a in (@arg00,@arg02) order by a ;
|
||||
|
||||
## insert with two parameter in the set part
|
||||
set @arg00=9 ;
|
||||
set @arg01='nine' ;
|
||||
prepare stmt1 from 'insert into t1 set a=?, b=? ';
|
||||
execute stmt1 using @arg00, @arg01 ;
|
||||
select a,b from t1 where a = @arg00 ;
|
||||
|
||||
## insert with parameters in the ON DUPLICATE KEY part
|
||||
set @arg00=6 ;
|
||||
set @arg01=1 ;
|
||||
prepare stmt1 from 'insert into t1 set a=?, b=''sechs''
|
||||
on duplicate key update a=a + ?, b=concat(b,''modified'') ';
|
||||
# There is no primary key collision, so there will be no key column update
|
||||
# If a key column update would be necessary occurs BUG#4312
|
||||
# deactivated, activate when BUG#4312: is solved
|
||||
# execute stmt1 using @arg00, @arg01;
|
||||
select * from t1 order by a;
|
||||
set @arg00=81 ;
|
||||
set @arg01=1 ;
|
||||
# deactivated, activate when BUG#4312: is solved
|
||||
# execute stmt1 using @arg00, @arg01;
|
||||
|
||||
## insert, autoincrement column and ' SELECT LAST_INSERT_ID() '
|
||||
# cases derived from client_test.c: test_bug3117()
|
||||
--disable_warnings
|
||||
drop table if exists t2 ;
|
||||
--enable_warnings
|
||||
# The test battery for table type 'MERGE' gets here only a 'MYISAM' table
|
||||
eval create table t2 (id int auto_increment primary key)
|
||||
ENGINE= $type ;
|
||||
prepare stmt1 from ' select last_insert_id() ' ;
|
||||
insert into t2 values (NULL) ;
|
||||
execute stmt1 ;
|
||||
insert into t2 values (NULL) ;
|
||||
execute stmt1 ;
|
||||
drop table t2 ;
|
||||
|
||||
## many parameters
|
||||
set @1000=1000 ;
|
||||
set @x1000_2="x1000_2" ;
|
||||
set @x1000_3="x1000_3" ;
|
||||
|
||||
set @x1000="x1000" ;
|
||||
set @1100=1100 ;
|
||||
set @x1100="x1100" ;
|
||||
set @100=100 ;
|
||||
set @updated="updated" ;
|
||||
insert into t1 values(1000,'x1000_1') ;
|
||||
# deactivated, activate when BUG#4312: is solved
|
||||
# insert into t1 values(@1000,@x1000_2),(@1000,@x1000_3)
|
||||
# on duplicate key update a = a + @100, b = concat(b,@updated) ;
|
||||
select a,b from t1 where a >= 1000 order by a ;
|
||||
delete from t1 where a >= 1000 ;
|
||||
insert into t1 values(1000,'x1000_1') ;
|
||||
prepare stmt1 from ' insert into t1 values(?,?),(?,?)
|
||||
on duplicate key update a = a + ?, b = concat(b,?) ';
|
||||
# deactivated, activate when BUG#4312: is solved
|
||||
# execute stmt1 using @1000, @x1000_2, @1000, @x1000_3, @100, @updated ;
|
||||
select a,b from t1 where a >= 1000 order by a ;
|
||||
delete from t1 where a >= 1000 ;
|
||||
insert into t1 values(1000,'x1000_1') ;
|
||||
# deactivated, activate when BUG#4312: is solved
|
||||
# execute stmt1 using @1000, @x1000_2, @1100, @x1000_3, @100, @updated ;
|
||||
select a,b from t1 where a >= 1000 order by a ;
|
||||
delete from t1 where a >= 1000 ;
|
||||
|
||||
## replace
|
||||
--error 1295
|
||||
prepare stmt1 from ' replace into t1 (a,b) select 100, ''hundred'' ';
|
||||
|
||||
## multi table statements
|
||||
--disable_query_log
|
||||
select '------ multi table tests ------' as test_sequence ;
|
||||
--enable_query_log
|
||||
# cases derived from client_test.c: test_multi
|
||||
delete from t1 ;
|
||||
delete from t9 ;
|
||||
insert into t1(a,b) values (1, 'one'), (2, 'two'), (3, 'three') ;
|
||||
insert into t9 (c1,c21)
|
||||
values (1, 'one'), (2, 'two'), (3, 'three') ;
|
||||
prepare stmt_delete from " delete t1, t9
|
||||
from t1, t9 where t1.a=t9.c1 and t1.b='updated' ";
|
||||
prepare stmt_update from " update t1, t9
|
||||
set t1.b='updated', t9.c21='updated'
|
||||
where t1.a=t9.c1 and t1.a=? ";
|
||||
prepare stmt_select1 from " select a, b from t1 order by a" ;
|
||||
prepare stmt_select2 from " select c1, c21 from t9 order by c1" ;
|
||||
set @arg00= 1 ;
|
||||
let $1= 3 ;
|
||||
while ($1)
|
||||
{
|
||||
execute stmt_update using @arg00 ;
|
||||
execute stmt_delete ;
|
||||
execute stmt_select1 ;
|
||||
execute stmt_select2 ;
|
||||
set @arg00= @arg00 + 1 ;
|
||||
dec $1 ;
|
||||
}
|
||||
|
||||
-- source include/ps_modify.inc
|
||||
-- source include/ps_modify1.inc
|
||||
-- source include/ps_conv.inc
|
||||
|
||||
|
@ -561,6 +561,17 @@ unlock table;
|
||||
drop table t1,t2;
|
||||
set query_cache_wlock_invalidate=default;
|
||||
|
||||
#
|
||||
# hiding real table stored in query cache by temporary table
|
||||
#
|
||||
CREATE TABLE t1 (id INT PRIMARY KEY);
|
||||
insert into t1 values (1),(2),(3);
|
||||
select * from t1;
|
||||
create temporary table t1 (a int not null auto_increment
|
||||
primary key);
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test character set related variables:
|
||||
|
@ -431,3 +431,17 @@ select count(*) from t1 where x = 18446744073709551601;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #6045: Binary Comparison regression in MySQL 4.1
|
||||
# Binary searches didn't use a case insensitive index.
|
||||
#
|
||||
set names latin1;
|
||||
create table t1 (a char(10), b text, key (a)) character set latin1;
|
||||
INSERT INTO t1 (a) VALUES
|
||||
('111'),('222'),('222'),('222'),('222'),('444'),('aaa'),('AAA'),('bbb');
|
||||
# all these three can be optimized
|
||||
explain select * from t1 where a='aaa';
|
||||
explain select * from t1 where a=binary 'aaa';
|
||||
explain select * from t1 where a='aaa' collate latin1_bin;
|
||||
# this one cannot:
|
||||
explain select * from t1 where a='aaa' collate latin1_german1_ci;
|
||||
|
@ -98,7 +98,7 @@ wait_for_slave_to_stop;
|
||||
|
||||
# The following test can't be done because the result of Pos will differ
|
||||
# on different computers
|
||||
# --replace_result 9306 9999 3334 9999 3335 9999
|
||||
# --replace_result $MASTER_MYPORT MASTER_PORT
|
||||
# show slave status;
|
||||
|
||||
set global sql_slave_skip_counter=1;
|
||||
|
@ -154,9 +154,9 @@ select hex(c1), hex(c2) from t1;
|
||||
|
||||
stop slave;
|
||||
delete from t1;
|
||||
change master to master_log_pos=5801;
|
||||
start slave until master_log_file='master-bin.000001', master_log_pos=5937;
|
||||
# Slave is supposed to stop _after_ the INSERT, even though 5937 is
|
||||
change master to master_log_pos=5847;
|
||||
start slave until master_log_file='master-bin.000001', master_log_pos=5983;
|
||||
# Slave is supposed to stop _after_ the INSERT, even though 5983 is
|
||||
# the position of the beginning of the INSERT; after SET slave is not
|
||||
# supposed to increment position.
|
||||
wait_for_slave_to_stop;
|
||||
@ -169,3 +169,16 @@ select hex(c1), hex(c2) from t1;
|
||||
connection master;
|
||||
drop table t1;
|
||||
sync_slave_with_master;
|
||||
|
||||
#
|
||||
# BUG#6676: Derivation of variables must be correct on slave
|
||||
#
|
||||
connection master;
|
||||
create table `t1` (
|
||||
`pk` varchar(10) not null default '',
|
||||
primary key (`pk`)
|
||||
) engine=myisam default charset=latin1;
|
||||
set @p=_latin1 'test';
|
||||
update t1 set pk='test' where pk=@p;
|
||||
drop table t1;
|
||||
sync_slave_with_master;
|
||||
|
1
mysql-test/t/rpl_create_database-master.opt
Normal file
1
mysql-test/t/rpl_create_database-master.opt
Normal file
@ -0,0 +1 @@
|
||||
--binlog-do-db=mysqltest_sisyfos --binlog-do-db=mysqltest_prometheus
|
1
mysql-test/t/rpl_create_database-slave.opt
Normal file
1
mysql-test/t/rpl_create_database-slave.opt
Normal file
@ -0,0 +1 @@
|
||||
--replicate-do-db=mysqltest_sisyfos --replicate-do-db=mysqltest_prometheus
|
70
mysql-test/t/rpl_create_database.test
Normal file
70
mysql-test/t/rpl_create_database.test
Normal file
@ -0,0 +1,70 @@
|
||||
#
|
||||
# Tests for replication of statements that manipulate databases.
|
||||
#
|
||||
# For this test file, we have a number of databases. All databases
|
||||
# with "greek" names will be replicated on the slave, while other names
|
||||
# (e.g., american) will not be replicated.
|
||||
#
|
||||
|
||||
source include/master-slave.inc;
|
||||
|
||||
# Bug#6391 (binlog-do-db rules ignored)
|
||||
# In this case, 'mysqltest_bob' should not be replicated to the slave.
|
||||
--disable_warnings
|
||||
DROP DATABASE IF EXISTS mysqltest_prometheus;
|
||||
DROP DATABASE IF EXISTS mysqltest_sisyfos;
|
||||
DROP DATABASE IF EXISTS mysqltest_bob;
|
||||
sync_slave_with_master;
|
||||
# This database is not replicated
|
||||
DROP DATABASE IF EXISTS mysqltest_bob;
|
||||
--enable_warnings
|
||||
|
||||
connection master;
|
||||
CREATE DATABASE mysqltest_prometheus;
|
||||
CREATE DATABASE mysqltest_sisyfos;
|
||||
CREATE DATABASE mysqltest_bob;
|
||||
|
||||
USE mysqltest_sisyfos;
|
||||
# These should be replicated
|
||||
CREATE TABLE t1 (b int);
|
||||
INSERT INTO t1 VALUES(1);
|
||||
|
||||
USE mysqltest_bob;
|
||||
# These should *not* be replicated
|
||||
CREATE TABLE t2 (b int);
|
||||
INSERT INTO t2 VALUES(2);
|
||||
|
||||
# Current database is now 'mysqltest_bob'
|
||||
# The following should be replicated
|
||||
ALTER DATABASE mysqltest_sisyfos CHARACTER SET latin1;
|
||||
|
||||
USE mysqltest_sisyfos;
|
||||
# The following should *not* be replicated
|
||||
ALTER DATABASE mysqltest_bob CHARACTER SET latin1;
|
||||
|
||||
SHOW DATABASES;
|
||||
sync_slave_with_master;
|
||||
SHOW DATABASES;
|
||||
|
||||
connection master;
|
||||
DROP DATABASE IF EXISTS mysqltest_sisyfos;
|
||||
USE mysqltest_prometheus;
|
||||
CREATE TABLE t1 (a INT);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
CREATE DATABASE mysqltest_sisyfos;
|
||||
USE mysqltest_sisyfos;
|
||||
CREATE TABLE t2 (a INT);
|
||||
let $VERSION=`select version()`;
|
||||
--replace_result $VERSION VERSION
|
||||
SHOW BINLOG EVENTS;
|
||||
SHOW DATABASES;
|
||||
sync_slave_with_master;
|
||||
SHOW DATABASES;
|
||||
SHOW CREATE TABLE mysqltest_prometheus.t1;
|
||||
SHOW CREATE TABLE mysqltest_sisyfos.t2;
|
||||
|
||||
connection master;
|
||||
DROP DATABASE IF EXISTS mysqltest_prometheus;
|
||||
DROP DATABASE IF EXISTS mysqltest_sisyfos;
|
||||
DROP DATABASE IF EXISTS mysqltest_bob;
|
||||
sync_slave_with_master;
|
@ -6,7 +6,7 @@ connection master;
|
||||
drop database if exists mysqltest;
|
||||
sync_slave_with_master;
|
||||
# can't read dir
|
||||
--replace_result "Errcode: 1" "Errcode: X" "Errcode: 2" "Errcode: X"
|
||||
--replace_result "Errcode: 1" "Errcode: X" "Errcode: 2" "Errcode: X" \\ /
|
||||
--error 12
|
||||
show tables from mysqltest;
|
||||
|
||||
|
2
mysql-test/t/rpl_drop_temp-slave.opt
Normal file
2
mysql-test/t/rpl_drop_temp-slave.opt
Normal file
@ -0,0 +1,2 @@
|
||||
--replicate-ignore-table=mysqltest.t2
|
||||
|
13
mysql-test/t/rpl_drop_temp.test
Normal file
13
mysql-test/t/rpl_drop_temp.test
Normal file
@ -0,0 +1,13 @@
|
||||
source include/master-slave.inc;
|
||||
--disable_warnings
|
||||
create database if not exists mysqltest;
|
||||
--enable_warnings
|
||||
|
||||
create temporary table mysqltest.t1 (n int);
|
||||
create temporary table mysqltest.t2 (n int);
|
||||
sync_slave_with_master;
|
||||
connection master;
|
||||
disconnect master;
|
||||
connection slave;
|
||||
--real_sleep 3; # time for DROP to be written
|
||||
show status like 'Slave_open_temp_tables';
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user