Merge with 5.1
Fixes to get Aria handler tests to work. Fixes LP#697597 "HANDLER + Aria asserts in maria-5.3-handler"
This commit is contained in:
commit
050c004f5e
@ -4,7 +4,10 @@ path=`dirname $0`
|
||||
. "$path/SETUP.sh"
|
||||
|
||||
extra_flags="$pentium64_cflags $fast_cflags"
|
||||
extra_configs="$pentium_configs $static_link"
|
||||
# On CentOS/Fedora Core 10 amd64, there is system libz.so but not
|
||||
# libz.a, so need to use bundled zlib when building static
|
||||
# binary. Hence we use --with-zlib-dir=bundled
|
||||
extra_configs="$pentium_configs $static_link --with-zlib-dir=bundled"
|
||||
CC="$CC --pipe"
|
||||
strip=yes
|
||||
|
||||
|
@ -197,7 +197,7 @@ extern void my_large_free(uchar * ptr, myf my_flags);
|
||||
#define my_large_free(A,B) my_free_lock((A),(B))
|
||||
#endif /* HAVE_LARGE_PAGES */
|
||||
|
||||
#ifdef HAVE_ALLOCA
|
||||
#if defined(HAVE_ALLOCA) && !defined(HAVE_valgrind)
|
||||
#if defined(_AIX) && !defined(__GNUC__) && !defined(_AIX43)
|
||||
#pragma alloca
|
||||
#endif /* _AIX */
|
||||
|
@ -109,6 +109,7 @@ TEST_DIRS = t r include std_data std_data/parts collections \
|
||||
suite/innodb suite/innodb/t suite/innodb/r suite/innodb/include \
|
||||
suite/innodb_plugin suite/innodb_plugin/t suite/innodb_plugin/r \
|
||||
suite/innodb_plugin/include \
|
||||
suite/handler \
|
||||
suite/engines suite/engines/funcs suite/engines/iuds suite/engines/rr_trx \
|
||||
suite/engines/funcs/r suite/engines/funcs/t suite/engines/iuds/r \
|
||||
suite/engines/iuds/t suite/engines/rr_trx/include suite/engines/rr_trx/r \
|
||||
|
@ -4,13 +4,14 @@ this directory. It will fire up the newly built mysqld and test it.
|
||||
|
||||
Note that you do not have to have to do "make install", and you could
|
||||
actually have a co-existing MySQL installation. The tests will not
|
||||
conflict with it.
|
||||
conflict with it. To run the test suite in a source directory, you
|
||||
must do make first.
|
||||
|
||||
All tests must pass. If one or more of them fail on your system, please
|
||||
read the following manual section for instructions on how to report the
|
||||
problem:
|
||||
|
||||
http://dev.mysql.com/doc/mysql/en/mysql-test-suite.html
|
||||
http://kb.askmonty.org/v/reporting-bugs
|
||||
|
||||
If you want to use an already running MySQL server for specific tests,
|
||||
use the --extern option to mysql-test-run. Please note that in this mode,
|
||||
@ -27,7 +28,6 @@ With no test cases named on the command line, mysql-test-run falls back
|
||||
to the normal "non-extern" behavior. The reason for this is that some
|
||||
tests cannot run with an external server.
|
||||
|
||||
|
||||
You can create your own test cases. To create a test case, create a new
|
||||
file in the t subdirectory using a text editor. The file should have a .test
|
||||
extension. For example:
|
||||
@ -67,7 +67,12 @@ extension. For example:
|
||||
edit the test result to the correct results so that we can verify
|
||||
that the bug is corrected in future releases.
|
||||
|
||||
To submit your test case, put your .test file and .result file(s) into
|
||||
a tar.gz archive, add a README that explains the problem, ftp the
|
||||
archive to ftp://support.mysql.com/pub/mysql/secret/ and send a mail
|
||||
to bugs@lists.mysql.com
|
||||
If you want to submit your test case you can send it
|
||||
to maria-developers@lists.launchpad.com or attach it to a bug report on
|
||||
https://bugs.launchpad.net/maria/.
|
||||
|
||||
If the test case is really big or if it contains 'not public' data,
|
||||
then put your .test file and .result file(s) into a tar.gz archive,
|
||||
add a README that explains the problem, ftp the archive to
|
||||
ftp://ftp.askmonty.org/private and send a mail to
|
||||
https://bugs.launchpad.net/maria/ about it.
|
||||
|
@ -42,6 +42,7 @@ send STOP SLAVE SQL_THREAD;
|
||||
connection slave1;
|
||||
--echo # To resume slave SQL thread
|
||||
SET DEBUG_SYNC= 'now SIGNAL signal.continue';
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR signal.continued';
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
|
||||
--echo
|
||||
|
@ -1,4 +1,5 @@
|
||||
disable_query_log;
|
||||
--require r/true.require
|
||||
SELECT (plugin_description LIKE '%xtradb%') AS `TRUE` FROM information_schema.plugins WHERE LOWER(plugin_name) = 'innodb' AND LOWER(plugin_status) = 'active';
|
||||
enable_query_log;
|
||||
if (!`SELECT count(*) FROM information_schema.plugins WHERE
|
||||
plugin_name = 'innodb' AND plugin_status = 'active' AND
|
||||
plugin_description LIKE '%xtradb%'`){
|
||||
skip Need XtraDB engine;
|
||||
}
|
||||
|
2
mysql-test/include/have_xtradb.opt
Normal file
2
mysql-test/include/have_xtradb.opt
Normal file
@ -0,0 +1,2 @@
|
||||
--loose-innodb
|
||||
--plugin-load=$HA_XTRADB_SO
|
4
mysql-test/include/long_test.inc
Normal file
4
mysql-test/include/long_test.inc
Normal file
@ -0,0 +1,4 @@
|
||||
# We use this --source include to mark a test as taking long to run.
|
||||
# We can use this to schedule such test early (to not be left with
|
||||
# only one or two long tests running, and rests of works idle), or to
|
||||
# run a quick test skipping long-running test cases.
|
@ -1362,7 +1362,17 @@ INSERT INTO t1 VALUES (1,'init');
|
||||
DELIMITER |;
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
# retry the UPDATE in case it times out the lock before con1 has time
|
||||
# to COMMIT.
|
||||
DECLARE do_retry INT DEFAULT 0;
|
||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET do_retry = 1;
|
||||
retry_loop:LOOP
|
||||
UPDATE t1 SET b = CONCAT(b, '+con2') WHERE a = 1;
|
||||
IF do_retry = 0 THEN
|
||||
LEAVE retry_loop;
|
||||
END IF;
|
||||
SET do_retry = 0;
|
||||
END LOOP;
|
||||
INSERT INTO t2 VALUES ();
|
||||
END|
|
||||
DELIMITER ;|
|
||||
|
@ -89,6 +89,20 @@ sub init_pattern {
|
||||
}
|
||||
|
||||
|
||||
sub testcase_sort_order {
|
||||
my ($a, $b, $sort_criteria)= @_;
|
||||
my $a_sort_criteria= $sort_criteria->{$a->fullname()};
|
||||
my $b_sort_criteria= $sort_criteria->{$b->fullname()};
|
||||
my $res= $a_sort_criteria cmp $b_sort_criteria;
|
||||
return $res if $res;
|
||||
# Run slow tests first, trying to avoid getting stuck at the end
|
||||
# with a slow test in one worker and the other workers idle.
|
||||
return -1 if $a->{'long_test'} && !$b->{'long_test'};
|
||||
return 1 if !$a->{'long_test'} && $b->{'long_test'};
|
||||
|
||||
return $a->fullname() cmp $b->fullname();
|
||||
}
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
# Collect information about test cases to be run
|
||||
@ -177,9 +191,7 @@ sub collect_test_cases ($$$) {
|
||||
$sort_criteria{$tinfo->fullname()} = join(" ", @criteria);
|
||||
}
|
||||
|
||||
@$cases = sort {
|
||||
$sort_criteria{$a->fullname()} . $a->fullname() cmp
|
||||
$sort_criteria{$b->fullname()} . $b->fullname() } @$cases;
|
||||
@$cases = sort { testcase_sort_order($a, $b, \%sort_criteria) } @$cases;
|
||||
|
||||
# For debugging the sort-order
|
||||
# foreach my $tinfo (@$cases)
|
||||
@ -1065,6 +1077,7 @@ my @tags=
|
||||
["include/have_example_plugin.inc", "example_plugin_test", 1],
|
||||
["include/have_oqgraph_engine.inc", "oqgraph_test", 1],
|
||||
["include/have_ssl.inc", "need_ssl", 1],
|
||||
["include/long_test.inc", "long_test", 1],
|
||||
);
|
||||
|
||||
|
||||
|
@ -142,7 +142,7 @@ my $path_config_file; # The generated config file, var/my.cnf
|
||||
# executables will be used by the test suite.
|
||||
our $opt_vs_config = $ENV{'MTR_VS_CONFIG'};
|
||||
|
||||
my $DEFAULT_SUITES="main,binlog,federated,rpl,maria,parts,innodb," .
|
||||
my $DEFAULT_SUITES="main,binlog,federated,rpl,maria,handler,parts,innodb," .
|
||||
"innodb_plugin,percona,ndb,vcol,oqgraph,sphinx," .
|
||||
"optimizer_unfixed_bugs";
|
||||
my $opt_suites;
|
||||
@ -731,9 +731,11 @@ sub run_test_server ($$$) {
|
||||
last;
|
||||
}
|
||||
|
||||
# Second best choice is the first that does not fulfill
|
||||
# any of the above conditions
|
||||
if (!defined $second_best){
|
||||
# From secondary choices, we prefer to pick a 'long-running' test if
|
||||
# possible; this helps avoid getting stuck with a few of those at the
|
||||
# end of high --parallel runs, with most workers being idle.
|
||||
if (!defined $second_best ||
|
||||
($t->{'long_test'} && !($tests->[$second_best]{'long_test'}))){
|
||||
#mtr_report("Setting second_best to $i");
|
||||
$second_best= $i;
|
||||
}
|
||||
|
@ -12717,6 +12717,7 @@ COUNT(t1.a)
|
||||
729
|
||||
DROP TABLE t1;
|
||||
SET @@join_buffer_size= @save_join_buffer_size;
|
||||
flush tables;
|
||||
SHOW CREATE TABLE t1;
|
||||
ERROR HY000: Table upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it!
|
||||
SELECT * FROM t1;
|
||||
|
@ -237,5 +237,9 @@ ERROR 28000: Access denied for user 'mysqltest_up2'@'localhost' (using password:
|
||||
select user(), current_user();
|
||||
user() current_user()
|
||||
mysqltest_up2@localhost mysqltest_up2@%
|
||||
connect(localhost,mysqltest_nouser,newpw,test,MASTER_PORT,MASTER_SOCKET);
|
||||
ERROR 28000: Access denied for user 'mysqltest_nouser'@'localhost' (using password: YES)
|
||||
connect(localhost,mysqltest_nouser,,test,MASTER_PORT,MASTER_SOCKET);
|
||||
ERROR 28000: Access denied for user 'mysqltest_nouser'@'localhost' (using password: NO)
|
||||
DROP USER mysqltest_up1@'%';
|
||||
DROP USER mysqltest_up2@'%';
|
||||
|
@ -692,7 +692,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||
2 DERIVED t1 index_merge PRIMARY,idx idx,PRIMARY 5,4 NULL 11419 Using sort_union(idx,PRIMARY); Using where
|
||||
SELECT COUNT(*) FROM
|
||||
(SELECT * FROM t1
|
||||
(SELECT * FROM t1 FORCE INDEX(primary,idx)
|
||||
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
||||
COUNT(*)
|
||||
6145
|
||||
|
@ -162,13 +162,6 @@ ERROR 70100: Query execution was interrupted
|
||||
unlock tables;
|
||||
drop table t1;
|
||||
drop table if exists t1;
|
||||
create table t1 (a int) ENGINE=MEMORY;
|
||||
--> client 2
|
||||
handler t1 open;
|
||||
ERROR HY000: Table storage engine for 't1' doesn't have this option
|
||||
--> client 1
|
||||
drop table t1;
|
||||
drop table if exists t1;
|
||||
create table t1 (i int);
|
||||
connection: default
|
||||
lock tables t1 write;
|
||||
|
@ -248,13 +248,13 @@ set global slow_query_log='OFF';
|
||||
set @save_storage_engine= @@session.storage_engine;
|
||||
set storage_engine= MEMORY;
|
||||
alter table mysql.slow_log engine=ndb;
|
||||
ERROR HY000: This storage engine cannot be used for log tables"
|
||||
ERROR HY000: This storage engine cannot be used for log tables
|
||||
alter table mysql.slow_log engine=innodb;
|
||||
ERROR HY000: This storage engine cannot be used for log tables"
|
||||
ERROR HY000: This storage engine cannot be used for log tables
|
||||
alter table mysql.slow_log engine=archive;
|
||||
ERROR HY000: This storage engine cannot be used for log tables"
|
||||
ERROR HY000: This storage engine cannot be used for log tables
|
||||
alter table mysql.slow_log engine=blackhole;
|
||||
ERROR HY000: This storage engine cannot be used for log tables"
|
||||
ERROR HY000: This storage engine cannot be used for log tables
|
||||
set storage_engine= @save_storage_engine;
|
||||
drop table mysql.slow_log;
|
||||
drop table mysql.general_log;
|
||||
|
@ -75,7 +75,17 @@ TRUNCATE t1;
|
||||
INSERT INTO t1 VALUES (1,'init');
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
# retry the UPDATE in case it times out the lock before con1 has time
|
||||
# to COMMIT.
|
||||
DECLARE do_retry INT DEFAULT 0;
|
||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET do_retry = 1;
|
||||
retry_loop:LOOP
|
||||
UPDATE t1 SET b = CONCAT(b, '+con2') WHERE a = 1;
|
||||
IF do_retry = 0 THEN
|
||||
LEAVE retry_loop;
|
||||
END IF;
|
||||
SET do_retry = 0;
|
||||
END LOOP;
|
||||
INSERT INTO t2 VALUES ();
|
||||
END|
|
||||
BEGIN;
|
||||
|
@ -75,9 +75,9 @@ SET SQL_MODE='IGNORE_BAD_TABLE_OPTIONS';
|
||||
#illegal value fixed
|
||||
CREATE TABLE t1 (a int) ENGINE=example ULL=10000000000000000000 one_or_two='ttt' YESNO=SSS;
|
||||
Warnings:
|
||||
Warning 1652 Incorrect value '10000000000000000000' for option 'ULL'
|
||||
Warning 1652 Incorrect value 'ttt' for option 'one_or_two'
|
||||
Warning 1652 Incorrect value 'SSS' for option 'YESNO'
|
||||
Warning 1653 Incorrect value '10000000000000000000' for option 'ULL'
|
||||
Warning 1653 Incorrect value 'ttt' for option 'one_or_two'
|
||||
Warning 1653 Incorrect value 'SSS' for option 'YESNO'
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
|
@ -4957,6 +4957,17 @@ sum(a) sub
|
||||
1 3
|
||||
deallocate prepare stmt1;
|
||||
drop table t1,t2;
|
||||
#
|
||||
# Bug LP#693935/#58727: Assertion failure with
|
||||
# a single row subquery returning more than one row
|
||||
#
|
||||
create table t1 (a char(1) charset utf8);
|
||||
insert into t1 values ('a'), ('b');
|
||||
create table t2 (a binary(1));
|
||||
insert into t2 values ('x'), ('y');
|
||||
select * from t2 where a=(select a from t1) and a='x';
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
drop table t1,t2;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# No BUG#, a case brought from 5.2's innodb_mysql_lock.test
|
||||
|
@ -4960,6 +4960,17 @@ sum(a) sub
|
||||
1 3
|
||||
deallocate prepare stmt1;
|
||||
drop table t1,t2;
|
||||
#
|
||||
# Bug LP#693935/#58727: Assertion failure with
|
||||
# a single row subquery returning more than one row
|
||||
#
|
||||
create table t1 (a char(1) charset utf8);
|
||||
insert into t1 values ('a'), ('b');
|
||||
create table t2 (a binary(1));
|
||||
insert into t2 values ('x'), ('y');
|
||||
select * from t2 where a=(select a from t1) and a='x';
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
drop table t1,t2;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# No BUG#, a case brought from 5.2's innodb_mysql_lock.test
|
||||
|
@ -4957,6 +4957,17 @@ sum(a) sub
|
||||
1 3
|
||||
deallocate prepare stmt1;
|
||||
drop table t1,t2;
|
||||
#
|
||||
# Bug LP#693935/#58727: Assertion failure with
|
||||
# a single row subquery returning more than one row
|
||||
#
|
||||
create table t1 (a char(1) charset utf8);
|
||||
insert into t1 values ('a'), ('b');
|
||||
create table t2 (a binary(1));
|
||||
insert into t2 values ('x'), ('y');
|
||||
select * from t2 where a=(select a from t1) and a='x';
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
drop table t1,t2;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# No BUG#, a case brought from 5.2's innodb_mysql_lock.test
|
||||
|
@ -4957,6 +4957,17 @@ sum(a) sub
|
||||
1 3
|
||||
deallocate prepare stmt1;
|
||||
drop table t1,t2;
|
||||
#
|
||||
# Bug LP#693935/#58727: Assertion failure with
|
||||
# a single row subquery returning more than one row
|
||||
#
|
||||
create table t1 (a char(1) charset utf8);
|
||||
insert into t1 values ('a'), ('b');
|
||||
create table t2 (a binary(1));
|
||||
insert into t2 values ('x'), ('y');
|
||||
select * from t2 where a=(select a from t1) and a='x';
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
drop table t1,t2;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# No BUG#, a case brought from 5.2's innodb_mysql_lock.test
|
||||
|
@ -3,9 +3,9 @@ SET @OLD_SQL_MODE=@@SQL_MODE;
|
||||
SET SQL_MODE='IGNORE_BAD_TABLE_OPTIONS';
|
||||
create table t1 (a int fkey=vvv, key akey (a) dff=vvv) tkey1='1v1';
|
||||
Warnings:
|
||||
Warning 1651 Unknown option 'fkey'
|
||||
Warning 1651 Unknown option 'dff'
|
||||
Warning 1651 Unknown option 'tkey1'
|
||||
Warning 1652 Unknown option 'fkey'
|
||||
Warning 1652 Unknown option 'dff'
|
||||
Warning 1652 Unknown option 'tkey1'
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -16,10 +16,10 @@ drop table t1;
|
||||
#reassiginig options in the same line
|
||||
create table t1 (a int fkey=vvv, key akey (a) dff=vvv) tkey1=1v1 TKEY1=DEFAULT tkey1=1v2 tkey2=2v1;
|
||||
Warnings:
|
||||
Warning 1651 Unknown option 'fkey'
|
||||
Warning 1651 Unknown option 'dff'
|
||||
Warning 1651 Unknown option 'tkey1'
|
||||
Warning 1651 Unknown option 'tkey2'
|
||||
Warning 1652 Unknown option 'fkey'
|
||||
Warning 1652 Unknown option 'dff'
|
||||
Warning 1652 Unknown option 'tkey1'
|
||||
Warning 1652 Unknown option 'tkey2'
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -29,7 +29,7 @@ t1 CREATE TABLE `t1` (
|
||||
#add option
|
||||
alter table t1 tkey4=4v1;
|
||||
Warnings:
|
||||
Warning 1651 Unknown option 'tkey4'
|
||||
Warning 1652 Unknown option 'tkey4'
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -39,8 +39,8 @@ t1 CREATE TABLE `t1` (
|
||||
#remove options
|
||||
alter table t1 tkey3=DEFAULT tkey4=DEFAULT;
|
||||
Warnings:
|
||||
Warning 1651 Unknown option 'tkey3'
|
||||
Warning 1651 Unknown option 'tkey4'
|
||||
Warning 1652 Unknown option 'tkey3'
|
||||
Warning 1652 Unknown option 'tkey4'
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -50,11 +50,11 @@ t1 CREATE TABLE `t1` (
|
||||
drop table t1;
|
||||
create table t1 (a int fkey1=v1, key akey (a) kkey1=v1) tkey1=1v1 tkey1=1v2 TKEY1=DEFAULT tkey2=2v1 tkey3=3v1;
|
||||
Warnings:
|
||||
Warning 1651 Unknown option 'fkey1'
|
||||
Warning 1651 Unknown option 'kkey1'
|
||||
Warning 1651 Unknown option 'TKEY1'
|
||||
Warning 1651 Unknown option 'tkey2'
|
||||
Warning 1651 Unknown option 'tkey3'
|
||||
Warning 1652 Unknown option 'fkey1'
|
||||
Warning 1652 Unknown option 'kkey1'
|
||||
Warning 1652 Unknown option 'TKEY1'
|
||||
Warning 1652 Unknown option 'tkey2'
|
||||
Warning 1652 Unknown option 'tkey3'
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -64,7 +64,7 @@ t1 CREATE TABLE `t1` (
|
||||
#change field with option with the same value
|
||||
alter table t1 change a a int `FKEY1`='v1';
|
||||
Warnings:
|
||||
Warning 1651 Unknown option 'FKEY1'
|
||||
Warning 1652 Unknown option 'FKEY1'
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -74,7 +74,7 @@ t1 CREATE TABLE `t1` (
|
||||
#change field with option with a different value
|
||||
alter table t1 change a a int fkey1=v2;
|
||||
Warnings:
|
||||
Warning 1651 Unknown option 'fkey1'
|
||||
Warning 1652 Unknown option 'fkey1'
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -93,7 +93,7 @@ t1 CREATE TABLE `t1` (
|
||||
#new key with options
|
||||
alter table t1 add key bkey (b) kkey2=v1;
|
||||
Warnings:
|
||||
Warning 1651 Unknown option 'kkey2'
|
||||
Warning 1652 Unknown option 'kkey2'
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -105,8 +105,8 @@ t1 CREATE TABLE `t1` (
|
||||
#new column with options
|
||||
alter table t1 add column c int fkey1=v1 fkey2=v2;
|
||||
Warnings:
|
||||
Warning 1651 Unknown option 'fkey1'
|
||||
Warning 1651 Unknown option 'fkey2'
|
||||
Warning 1652 Unknown option 'fkey1'
|
||||
Warning 1652 Unknown option 'fkey2'
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -141,7 +141,7 @@ t1 CREATE TABLE `t1` (
|
||||
#add column with options after delete
|
||||
alter table t1 add column b int fkey2=v1;
|
||||
Warnings:
|
||||
Warning 1651 Unknown option 'fkey2'
|
||||
Warning 1652 Unknown option 'fkey2'
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -154,7 +154,7 @@ t1 CREATE TABLE `t1` (
|
||||
#add key
|
||||
alter table t1 add key bkey (b) kkey2=v2;
|
||||
Warnings:
|
||||
Warning 1651 Unknown option 'kkey2'
|
||||
Warning 1652 Unknown option 'kkey2'
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -168,7 +168,7 @@ t1 CREATE TABLE `t1` (
|
||||
drop table t1;
|
||||
create table t1 (a int) tkey1=100;
|
||||
Warnings:
|
||||
Warning 1651 Unknown option 'tkey1'
|
||||
Warning 1652 Unknown option 'tkey1'
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
|
@ -1,4 +1,5 @@
|
||||
--source include/have_debug.inc
|
||||
--source include/long_test.inc
|
||||
--source federated.inc
|
||||
|
||||
--echo #
|
||||
|
799
mysql-test/suite/handler/aria.result
Normal file
799
mysql-test/suite/handler/aria.result
Normal file
@ -0,0 +1,799 @@
|
||||
SET SESSION STORAGE_ENGINE = Aria;
|
||||
drop table if exists t1,t3,t4,t5;
|
||||
create table t1 (a int, b char(10), key a (a), key b (a,b));
|
||||
insert into t1 values
|
||||
(17,"ddd"),(18,"eee"),(19,"fff"),(19,"yyy"),
|
||||
(14,"aaa"),(16,"ccc"),(16,"xxx"),
|
||||
(20,"ggg"),(21,"hhh"),(22,"iii");
|
||||
handler t1 open as t2;
|
||||
handler t2 read a first;
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a next;
|
||||
a b
|
||||
16 ccc
|
||||
handler t2 read a next;
|
||||
a b
|
||||
16 xxx
|
||||
handler t2 read a prev;
|
||||
a b
|
||||
16 ccc
|
||||
handler t2 read a last;
|
||||
a b
|
||||
22 iii
|
||||
handler t2 read a prev;
|
||||
a b
|
||||
21 hhh
|
||||
handler t2 read a prev;
|
||||
a b
|
||||
20 ggg
|
||||
handler t2 read a first;
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a prev;
|
||||
a b
|
||||
handler t2 read a last;
|
||||
a b
|
||||
22 iii
|
||||
handler t2 read a prev;
|
||||
a b
|
||||
21 hhh
|
||||
handler t2 read a next;
|
||||
a b
|
||||
22 iii
|
||||
handler t2 read a next;
|
||||
a b
|
||||
handler t2 read a=(15);
|
||||
a b
|
||||
handler t2 read a=(16);
|
||||
a b
|
||||
16 ccc
|
||||
handler t2 read a=(19,"fff");
|
||||
ERROR 42000: Too many key parts specified; max 1 parts allowed
|
||||
handler t2 read b=(19,"fff");
|
||||
a b
|
||||
19 fff
|
||||
handler t2 read b=(19,"yyy");
|
||||
a b
|
||||
19 yyy
|
||||
handler t2 read b=(19);
|
||||
a b
|
||||
19 fff
|
||||
handler t1 read a last;
|
||||
ERROR 42S02: Unknown table 't1' in HANDLER
|
||||
handler t2 read a=(11);
|
||||
a b
|
||||
handler t2 read a>=(11);
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a=(18);
|
||||
a b
|
||||
18 eee
|
||||
handler t2 read a>=(18);
|
||||
a b
|
||||
18 eee
|
||||
handler t2 read a>(18);
|
||||
a b
|
||||
19 fff
|
||||
handler t2 read a<=(18);
|
||||
a b
|
||||
18 eee
|
||||
handler t2 read a<(18);
|
||||
a b
|
||||
17 ddd
|
||||
handler t2 read a=(15);
|
||||
a b
|
||||
handler t2 read a>=(15);
|
||||
a b
|
||||
16 ccc
|
||||
handler t2 read a>(15);
|
||||
a b
|
||||
16 ccc
|
||||
handler t2 read a<=(15);
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a<(15);
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a=(54);
|
||||
a b
|
||||
handler t2 read a>=(54);
|
||||
a b
|
||||
handler t2 read a>(54);
|
||||
a b
|
||||
handler t2 read a<=(54);
|
||||
a b
|
||||
22 iii
|
||||
handler t2 read a<(54);
|
||||
a b
|
||||
22 iii
|
||||
handler t2 read a=(1);
|
||||
a b
|
||||
handler t2 read a>=(1);
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a>(1);
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a<=(1);
|
||||
a b
|
||||
handler t2 read a<(1);
|
||||
a b
|
||||
handler t2 read a first limit 5;
|
||||
a b
|
||||
14 aaa
|
||||
16 ccc
|
||||
16 xxx
|
||||
17 ddd
|
||||
18 eee
|
||||
handler t2 read a next limit 3;
|
||||
a b
|
||||
19 fff
|
||||
19 yyy
|
||||
20 ggg
|
||||
handler t2 read a prev limit 10;
|
||||
a b
|
||||
19 yyy
|
||||
19 fff
|
||||
18 eee
|
||||
17 ddd
|
||||
16 xxx
|
||||
16 ccc
|
||||
14 aaa
|
||||
handler t2 read a>=(16) limit 4;
|
||||
a b
|
||||
16 ccc
|
||||
16 xxx
|
||||
17 ddd
|
||||
18 eee
|
||||
handler t2 read a>=(16) limit 2,2;
|
||||
a b
|
||||
17 ddd
|
||||
18 eee
|
||||
select * from t1 where a>=16 limit 2,2;
|
||||
a b
|
||||
17 ddd
|
||||
18 eee
|
||||
handler t2 read a last limit 3;
|
||||
a b
|
||||
22 iii
|
||||
21 hhh
|
||||
20 ggg
|
||||
handler t2 read a=(16) limit 1,3;
|
||||
a b
|
||||
16 xxx
|
||||
handler t2 read a=(19);
|
||||
a b
|
||||
19 fff
|
||||
handler t2 read a=(19) where b="yyy";
|
||||
a b
|
||||
19 yyy
|
||||
handler t2 read first;
|
||||
a b
|
||||
17 ddd
|
||||
handler t2 read next;
|
||||
a b
|
||||
18 eee
|
||||
handler t2 read next;
|
||||
a b
|
||||
19 fff
|
||||
handler t2 close;
|
||||
handler t1 open;
|
||||
handler t1 read a next;
|
||||
a b
|
||||
14 aaa
|
||||
handler t1 read a next;
|
||||
a b
|
||||
16 ccc
|
||||
handler t1 close;
|
||||
handler t1 open;
|
||||
handler t1 read a prev;
|
||||
a b
|
||||
22 iii
|
||||
handler t1 read a prev;
|
||||
a b
|
||||
21 hhh
|
||||
handler t1 close;
|
||||
handler t1 open as t2;
|
||||
handler t2 read first;
|
||||
a b
|
||||
17 ddd
|
||||
alter table t1 engine = Aria;
|
||||
handler t2 read first;
|
||||
ERROR 42S02: Unknown table 't2' in HANDLER
|
||||
handler t1 open;
|
||||
handler t1 read a=(16) limit 1,3;
|
||||
a b
|
||||
16 xxx
|
||||
flush tables;
|
||||
handler t1 read a=(16) limit 1,3;
|
||||
a b
|
||||
16 xxx
|
||||
handler t1 close;
|
||||
handler t1 open;
|
||||
prepare stmt from 'handler t1 read a=(?) limit ?,?';
|
||||
set @a=16,@b=1,@c=100;
|
||||
execute stmt using @a,@b,@c;
|
||||
a b
|
||||
16 xxx
|
||||
set @a=16,@b=2,@c=1;
|
||||
execute stmt using @a,@b,@c;
|
||||
a b
|
||||
set @a=16,@b=0,@c=2;
|
||||
execute stmt using @a,@b,@c;
|
||||
a b
|
||||
16 ccc
|
||||
16 xxx
|
||||
deallocate prepare stmt;
|
||||
prepare stmt from 'handler t1 read a next limit ?';
|
||||
handler t1 read a>=(11);
|
||||
a b
|
||||
14 aaa
|
||||
set @a=3;
|
||||
execute stmt using @a;
|
||||
a b
|
||||
16 ccc
|
||||
16 xxx
|
||||
17 ddd
|
||||
execute stmt using @a;
|
||||
a b
|
||||
18 eee
|
||||
19 fff
|
||||
19 yyy
|
||||
execute stmt using @a;
|
||||
a b
|
||||
20 ggg
|
||||
21 hhh
|
||||
22 iii
|
||||
deallocate prepare stmt;
|
||||
prepare stmt from 'handler t1 read b prev limit ?';
|
||||
execute stmt using @a;
|
||||
a b
|
||||
22 iii
|
||||
21 hhh
|
||||
20 ggg
|
||||
execute stmt using @a;
|
||||
a b
|
||||
19 yyy
|
||||
19 fff
|
||||
18 eee
|
||||
execute stmt using @a;
|
||||
a b
|
||||
17 ddd
|
||||
16 xxx
|
||||
16 ccc
|
||||
execute stmt using @a;
|
||||
a b
|
||||
14 aaa
|
||||
deallocate prepare stmt;
|
||||
prepare stmt from 'handler t1 read b=(?,?)';
|
||||
set @a=14, @b='aaa';
|
||||
execute stmt using @a,@b;
|
||||
a b
|
||||
14 aaa
|
||||
set @a=14, @b='not found';
|
||||
execute stmt using @a,@b;
|
||||
a b
|
||||
deallocate prepare stmt;
|
||||
prepare stmt from 'handler t1 read b=(1+?) limit 10';
|
||||
set @a=15;
|
||||
execute stmt using @a;
|
||||
a b
|
||||
16 ccc
|
||||
16 xxx
|
||||
execute stmt using @a;
|
||||
a b
|
||||
16 ccc
|
||||
16 xxx
|
||||
deallocate prepare stmt;
|
||||
prepare stmt from 'handler t1 read a>=(?) where a < ? limit 5';
|
||||
set @a=15, @b=20;
|
||||
execute stmt using @a,@b;
|
||||
a b
|
||||
16 ccc
|
||||
16 xxx
|
||||
17 ddd
|
||||
18 eee
|
||||
19 fff
|
||||
execute stmt using @a,@b;
|
||||
a b
|
||||
16 ccc
|
||||
16 xxx
|
||||
17 ddd
|
||||
18 eee
|
||||
19 fff
|
||||
deallocate prepare stmt;
|
||||
prepare stmt from 'handler t1 read a=(?)';
|
||||
set @a=16;
|
||||
execute stmt using @a;
|
||||
a b
|
||||
16 ccc
|
||||
alter table t1 add c int;
|
||||
execute stmt using @a;
|
||||
ERROR 42S02: Unknown table 't1' in HANDLER
|
||||
deallocate prepare stmt;
|
||||
handler t1 close;
|
||||
ERROR 42S02: Unknown table 't1' in HANDLER
|
||||
handler t1 open;
|
||||
prepare stmt from 'handler t1 read a=(?)';
|
||||
flush tables;
|
||||
set @a=16;
|
||||
execute stmt using @a;
|
||||
ERROR HY000: Prepared statement needs to be re-prepared
|
||||
deallocate prepare stmt;
|
||||
handler t1 close;
|
||||
handler t1 open as t2;
|
||||
drop table t1;
|
||||
create table t1 (a int not null);
|
||||
insert into t1 values (17);
|
||||
handler t2 read first;
|
||||
ERROR 42S02: Unknown table 't2' in HANDLER
|
||||
handler t1 open as t2;
|
||||
alter table t1 engine=CSV;
|
||||
handler t2 read first;
|
||||
ERROR 42S02: Unknown table 't2' in HANDLER
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
insert into t1 values (1),(2),(3),(4),(5),(6);
|
||||
delete from t1 limit 2;
|
||||
handler t1 open;
|
||||
handler t1 read first;
|
||||
a
|
||||
3
|
||||
handler t1 read first limit 1,1;
|
||||
a
|
||||
4
|
||||
handler t1 read first limit 2,2;
|
||||
a
|
||||
5
|
||||
6
|
||||
delete from t1 limit 3;
|
||||
handler t1 read first;
|
||||
a
|
||||
6
|
||||
drop table t1;
|
||||
create table t1(a int, index (a));
|
||||
insert into t1 values (1), (2), (3);
|
||||
handler t1 open;
|
||||
handler t1 read a=(W);
|
||||
ERROR 42S22: Unknown column 'W' in 'field list'
|
||||
handler t1 read a=(a);
|
||||
ERROR HY000: Incorrect arguments to HANDLER ... READ
|
||||
drop table t1;
|
||||
create table t1 (a char(5));
|
||||
insert into t1 values ("Ok");
|
||||
handler t1 open as t;
|
||||
handler t read first;
|
||||
a
|
||||
Ok
|
||||
use mysql;
|
||||
handler t read first;
|
||||
a
|
||||
Ok
|
||||
handler t close;
|
||||
handler test.t1 open as t;
|
||||
handler t read first;
|
||||
a
|
||||
Ok
|
||||
handler t close;
|
||||
use test;
|
||||
drop table t1;
|
||||
create table t1 ( a int, b int, INDEX a (a) );
|
||||
insert into t1 values (1,2), (2,1);
|
||||
handler t1 open;
|
||||
handler t1 read a=(1) where b=2;
|
||||
a b
|
||||
1 2
|
||||
handler t1 read a=(1) where b=3;
|
||||
a b
|
||||
handler t1 read a=(1) where b=1;
|
||||
a b
|
||||
handler t1 close;
|
||||
drop table t1;
|
||||
create table t1 (c1 char(20));
|
||||
insert into t1 values ("t1");
|
||||
handler t1 open as h1;
|
||||
handler h1 read first limit 9;
|
||||
c1
|
||||
t1
|
||||
create table t2 (c1 char(20));
|
||||
insert into t2 values ("t2");
|
||||
handler t2 open as h2;
|
||||
handler h2 read first limit 9;
|
||||
c1
|
||||
t2
|
||||
create table t3 (c1 char(20));
|
||||
insert into t3 values ("t3");
|
||||
handler t3 open as h3;
|
||||
handler h3 read first limit 9;
|
||||
c1
|
||||
t3
|
||||
create table t4 (c1 char(20));
|
||||
insert into t4 values ("t4");
|
||||
handler t4 open as h4;
|
||||
handler h4 read first limit 9;
|
||||
c1
|
||||
t4
|
||||
create table t5 (c1 char(20));
|
||||
insert into t5 values ("t5");
|
||||
handler t5 open as h5;
|
||||
handler h5 read first limit 9;
|
||||
c1
|
||||
t5
|
||||
alter table t1 engine=MyISAM;
|
||||
handler h1 read first limit 9;
|
||||
ERROR 42S02: Unknown table 'h1' in HANDLER
|
||||
handler h2 read first limit 9;
|
||||
c1
|
||||
t2
|
||||
handler h3 read first limit 9;
|
||||
c1
|
||||
t3
|
||||
handler h4 read first limit 9;
|
||||
c1
|
||||
t4
|
||||
handler h5 read first limit 9;
|
||||
c1
|
||||
t5
|
||||
alter table t5 engine=MyISAM;
|
||||
handler h1 read first limit 9;
|
||||
ERROR 42S02: Unknown table 'h1' in HANDLER
|
||||
handler h2 read first limit 9;
|
||||
c1
|
||||
t2
|
||||
handler h3 read first limit 9;
|
||||
c1
|
||||
t3
|
||||
handler h4 read first limit 9;
|
||||
c1
|
||||
t4
|
||||
handler h5 read first limit 9;
|
||||
ERROR 42S02: Unknown table 'h5' in HANDLER
|
||||
alter table t3 engine=MyISAM;
|
||||
handler h1 read first limit 9;
|
||||
ERROR 42S02: Unknown table 'h1' in HANDLER
|
||||
handler h2 read first limit 9;
|
||||
c1
|
||||
t2
|
||||
handler h3 read first limit 9;
|
||||
ERROR 42S02: Unknown table 'h3' in HANDLER
|
||||
handler h4 read first limit 9;
|
||||
c1
|
||||
t4
|
||||
handler h5 read first limit 9;
|
||||
ERROR 42S02: Unknown table 'h5' in HANDLER
|
||||
handler h2 close;
|
||||
handler h4 close;
|
||||
handler t1 open as h1_1;
|
||||
handler t1 open as h1_2;
|
||||
handler t1 open as h1_3;
|
||||
handler h1_1 read first limit 9;
|
||||
c1
|
||||
t1
|
||||
handler h1_2 read first limit 9;
|
||||
c1
|
||||
t1
|
||||
handler h1_3 read first limit 9;
|
||||
c1
|
||||
t1
|
||||
alter table t1 engine=Aria;
|
||||
handler h1_1 read first limit 9;
|
||||
ERROR 42S02: Unknown table 'h1_1' in HANDLER
|
||||
handler h1_2 read first limit 9;
|
||||
ERROR 42S02: Unknown table 'h1_2' in HANDLER
|
||||
handler h1_3 read first limit 9;
|
||||
ERROR 42S02: Unknown table 'h1_3' in HANDLER
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
drop table t3;
|
||||
drop table t4;
|
||||
drop table t5;
|
||||
create table t1 (c1 int);
|
||||
insert into t1 values (1);
|
||||
handler t1 open;
|
||||
handler t1 read first;
|
||||
c1
|
||||
1
|
||||
send the below to another connection, do not wait for the result
|
||||
optimize table t1;
|
||||
proceed with the normal connection
|
||||
handler t1 read next;
|
||||
c1
|
||||
1
|
||||
handler t1 close;
|
||||
read the result from the other connection
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize status OK
|
||||
proceed with the normal connection
|
||||
drop table t1;
|
||||
CREATE TABLE t1 ( no1 smallint(5) NOT NULL default '0', no2 int(10) NOT NULL default '0', PRIMARY KEY (no1,no2));
|
||||
INSERT INTO t1 VALUES (1,274),(1,275),(2,6),(2,8),(4,1),(4,2);
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ `primary` = (1, 1000);
|
||||
no1 no2
|
||||
HANDLER t1 READ `primary` PREV;
|
||||
no1 no2
|
||||
1 275
|
||||
HANDLER t1 READ `primary` = (1, 1000);
|
||||
no1 no2
|
||||
HANDLER t1 READ `primary` NEXT;
|
||||
no1 no2
|
||||
2 6
|
||||
DROP TABLE t1;
|
||||
create table t1 (c1 int);
|
||||
insert into t1 values (14397);
|
||||
flush tables with read lock;
|
||||
drop table t1;
|
||||
ERROR HY000: Can't execute the query because you have a conflicting read lock
|
||||
send the below to another connection, do not wait for the result
|
||||
drop table t1;
|
||||
proceed with the normal connection
|
||||
select * from t1;
|
||||
c1
|
||||
14397
|
||||
unlock tables;
|
||||
read the result from the other connection
|
||||
proceed with the normal connection
|
||||
select * from t1;
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
drop table if exists t1;
|
||||
Warnings:
|
||||
Note 1051 Unknown table 't1'
|
||||
create table t1 (a int not null) ENGINE=CSV;
|
||||
--> client 2
|
||||
handler t1 open;
|
||||
ERROR HY000: Table storage engine for 't1' doesn't have this option
|
||||
--> client 1
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
handler t1_alias read a next;
|
||||
ERROR 42000: Key 'a' doesn't exist in table 't1_alias'
|
||||
handler t1_alias READ a next where inexistent > 0;
|
||||
ERROR 42S22: Unknown column 'inexistent' in 'field list'
|
||||
handler t1_alias read a next;
|
||||
ERROR 42000: Key 'a' doesn't exist in table 't1_alias'
|
||||
handler t1_alias READ a next where inexistent > 0;
|
||||
ERROR 42S22: Unknown column 'inexistent' in 'field list'
|
||||
handler t1_alias close;
|
||||
drop table t1;
|
||||
create temporary table t1 (a int, b char(1), key a (a), key b(a,b));
|
||||
insert into t1 values (0,"a"),(1,"b"),(2,"c"),(3,"d"),(4,"e"),
|
||||
(5,"f"),(6,"g"),(7,"h"),(8,"i"),(9,"j"),(9,'k');
|
||||
select a,b from t1;
|
||||
a b
|
||||
0 a
|
||||
1 b
|
||||
2 c
|
||||
3 d
|
||||
4 e
|
||||
5 f
|
||||
6 g
|
||||
7 h
|
||||
8 i
|
||||
9 j
|
||||
9 k
|
||||
handler t1 open as a1;
|
||||
handler a1 read a=(1);
|
||||
a b
|
||||
1 b
|
||||
handler a1 read a next;
|
||||
a b
|
||||
2 c
|
||||
handler a1 read a next;
|
||||
a b
|
||||
3 d
|
||||
select a,b from t1;
|
||||
ERROR HY000: Can't reopen table: 'a1'
|
||||
handler a1 read a prev;
|
||||
a b
|
||||
2 c
|
||||
handler a1 read a prev;
|
||||
a b
|
||||
1 b
|
||||
handler a1 read a=(6) where b="g";
|
||||
a b
|
||||
6 g
|
||||
handler a1 close;
|
||||
select a,b from t1;
|
||||
a b
|
||||
0 a
|
||||
1 b
|
||||
2 c
|
||||
3 d
|
||||
4 e
|
||||
5 f
|
||||
6 g
|
||||
7 h
|
||||
8 i
|
||||
9 j
|
||||
9 k
|
||||
handler t1 open as a2;
|
||||
handler a2 read a=(9);
|
||||
a b
|
||||
9 j
|
||||
handler a2 read a next;
|
||||
a b
|
||||
9 k
|
||||
handler a2 read a prev limit 2;
|
||||
a b
|
||||
9 j
|
||||
8 i
|
||||
handler a2 read a last;
|
||||
a b
|
||||
9 k
|
||||
handler a2 read a prev;
|
||||
a b
|
||||
9 j
|
||||
handler a2 close;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
create temporary table t2 (a int, key (a));
|
||||
handler t1 open as a1;
|
||||
handler t2 open as a2;
|
||||
handler a2 read a first;
|
||||
a
|
||||
drop table t1, t2;
|
||||
handler a2 read a next;
|
||||
ERROR 42S02: Unknown table 'a2' in HANDLER
|
||||
handler a1 close;
|
||||
ERROR 42S02: Unknown table 'a1' in HANDLER
|
||||
create table t1 (a int, key (a));
|
||||
create table t2 like t1;
|
||||
handler t1 open as a1;
|
||||
handler t2 open as a2;
|
||||
handler a1 read a first;
|
||||
a
|
||||
handler a2 read a first;
|
||||
a
|
||||
alter table t1 add b int;
|
||||
handler a1 close;
|
||||
ERROR 42S02: Unknown table 'a1' in HANDLER
|
||||
handler a2 close;
|
||||
drop table t1, t2;
|
||||
create table t1 (a int, key (a));
|
||||
handler t1 open as a1;
|
||||
handler a1 read a first;
|
||||
a
|
||||
rename table t1 to t2;
|
||||
handler a1 read a first;
|
||||
ERROR 42S02: Unknown table 'a1' in HANDLER
|
||||
drop table t2;
|
||||
create table t1 (a int, key (a));
|
||||
create table t2 like t1;
|
||||
handler t1 open as a1;
|
||||
handler t2 open as a2;
|
||||
handler a1 read a first;
|
||||
a
|
||||
handler a2 read a first;
|
||||
a
|
||||
optimize table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize status Table is already up to date
|
||||
handler a1 close;
|
||||
ERROR 42S02: Unknown table 'a1' in HANDLER
|
||||
handler a2 close;
|
||||
drop table t1, t2;
|
||||
#
|
||||
# BUG#51877 - HANDLER interface causes invalid memory read
|
||||
#
|
||||
CREATE TABLE t1(a INT, KEY (a));
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ a FIRST;
|
||||
a
|
||||
INSERT INTO t1 VALUES(1);
|
||||
HANDLER t1 READ a NEXT;
|
||||
a
|
||||
1
|
||||
HANDLER t1 CLOSE;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# BUG #46456: HANDLER OPEN + TRUNCATE + DROP (temporary) TABLE, crash
|
||||
#
|
||||
CREATE TABLE t1 AS SELECT 1 AS f1;
|
||||
HANDLER t1 OPEN;
|
||||
TRUNCATE t1;
|
||||
HANDLER t1 READ FIRST;
|
||||
ERROR 42S02: Unknown table 't1' in HANDLER
|
||||
DROP TABLE t1;
|
||||
CREATE TEMPORARY TABLE t1 AS SELECT 1 AS f1;
|
||||
HANDLER t1 OPEN;
|
||||
TRUNCATE t1;
|
||||
HANDLER t1 READ FIRST;
|
||||
ERROR 42S02: Unknown table 't1' in HANDLER
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #54007: assert in ha_myisam::index_next , HANDLER
|
||||
#
|
||||
CREATE TABLE t1(a INT, b INT, PRIMARY KEY(a), KEY b(b), KEY ab(a, b));
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ FIRST;
|
||||
a b
|
||||
HANDLER t1 READ `PRIMARY` NEXT;
|
||||
a b
|
||||
HANDLER t1 READ ab NEXT;
|
||||
a b
|
||||
HANDLER t1 READ b NEXT;
|
||||
a b
|
||||
HANDLER t1 READ NEXT;
|
||||
a b
|
||||
HANDLER t1 CLOSE;
|
||||
INSERT INTO t1 VALUES (2, 20), (1, 10), (4, 40), (3, 30);
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ FIRST;
|
||||
a b
|
||||
2 20
|
||||
HANDLER t1 READ NEXT;
|
||||
a b
|
||||
1 10
|
||||
HANDLER t1 READ `PRIMARY` NEXT;
|
||||
a b
|
||||
1 10
|
||||
HANDLER t1 READ `PRIMARY` NEXT;
|
||||
a b
|
||||
2 20
|
||||
HANDLER t1 READ ab NEXT;
|
||||
a b
|
||||
1 10
|
||||
HANDLER t1 READ ab NEXT;
|
||||
a b
|
||||
2 20
|
||||
HANDLER t1 READ b NEXT;
|
||||
a b
|
||||
1 10
|
||||
HANDLER t1 READ b NEXT;
|
||||
a b
|
||||
2 20
|
||||
HANDLER t1 READ b NEXT;
|
||||
a b
|
||||
3 30
|
||||
HANDLER t1 READ b NEXT;
|
||||
a b
|
||||
4 40
|
||||
HANDLER t1 READ b NEXT;
|
||||
a b
|
||||
HANDLER t1 READ NEXT;
|
||||
a b
|
||||
2 20
|
||||
HANDLER t1 READ NEXT;
|
||||
a b
|
||||
1 10
|
||||
HANDLER t1 READ NEXT;
|
||||
a b
|
||||
4 40
|
||||
HANDLER t1 CLOSE;
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ FIRST;
|
||||
a b
|
||||
2 20
|
||||
HANDLER t1 READ `PRIMARY` PREV;
|
||||
a b
|
||||
4 40
|
||||
HANDLER t1 READ `PRIMARY` PREV;
|
||||
a b
|
||||
3 30
|
||||
HANDLER t1 READ b PREV;
|
||||
a b
|
||||
4 40
|
||||
HANDLER t1 READ b PREV;
|
||||
a b
|
||||
3 30
|
||||
HANDLER t1 CLOSE;
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ FIRST;
|
||||
a b
|
||||
2 20
|
||||
HANDLER t1 READ `PRIMARY` PREV LIMIT 3;
|
||||
a b
|
||||
4 40
|
||||
3 30
|
||||
2 20
|
||||
HANDLER t1 READ b NEXT LIMIT 5;
|
||||
a b
|
||||
1 10
|
||||
2 20
|
||||
3 30
|
||||
4 40
|
||||
HANDLER t1 CLOSE;
|
||||
DROP TABLE t1;
|
||||
End of 5.1 tests
|
82
mysql-test/suite/handler/aria.test
Normal file
82
mysql-test/suite/handler/aria.test
Normal file
@ -0,0 +1,82 @@
|
||||
# t/handler_innodb.test
|
||||
#
|
||||
# test of HANDLER ...
|
||||
#
|
||||
# Last update:
|
||||
# 2006-07-31 ML test refactored (MySQL 5.1)
|
||||
# code of t/handler.test and t/innodb_handler.test united
|
||||
# main testing code put into handler.inc
|
||||
# rename t/innodb_handler.test to t/handler_innodb.test
|
||||
#
|
||||
|
||||
--source include/have_maria.inc
|
||||
let $engine_type= Aria;
|
||||
|
||||
--source init.inc
|
||||
--source handler.inc
|
||||
|
||||
--echo #
|
||||
--echo # BUG #46456: HANDLER OPEN + TRUNCATE + DROP (temporary) TABLE, crash
|
||||
--echo #
|
||||
CREATE TABLE t1 AS SELECT 1 AS f1;
|
||||
HANDLER t1 OPEN;
|
||||
TRUNCATE t1;
|
||||
--error ER_UNKNOWN_TABLE
|
||||
HANDLER t1 READ FIRST;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TEMPORARY TABLE t1 AS SELECT 1 AS f1;
|
||||
HANDLER t1 OPEN;
|
||||
TRUNCATE t1;
|
||||
--error ER_UNKNOWN_TABLE
|
||||
HANDLER t1 READ FIRST;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #54007: assert in ha_myisam::index_next , HANDLER
|
||||
--echo #
|
||||
CREATE TABLE t1(a INT, b INT, PRIMARY KEY(a), KEY b(b), KEY ab(a, b));
|
||||
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ FIRST;
|
||||
HANDLER t1 READ `PRIMARY` NEXT;
|
||||
HANDLER t1 READ ab NEXT;
|
||||
HANDLER t1 READ b NEXT;
|
||||
HANDLER t1 READ NEXT;
|
||||
HANDLER t1 CLOSE;
|
||||
|
||||
INSERT INTO t1 VALUES (2, 20), (1, 10), (4, 40), (3, 30);
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ FIRST;
|
||||
HANDLER t1 READ NEXT;
|
||||
HANDLER t1 READ `PRIMARY` NEXT;
|
||||
HANDLER t1 READ `PRIMARY` NEXT;
|
||||
HANDLER t1 READ ab NEXT;
|
||||
HANDLER t1 READ ab NEXT;
|
||||
HANDLER t1 READ b NEXT;
|
||||
HANDLER t1 READ b NEXT;
|
||||
HANDLER t1 READ b NEXT;
|
||||
HANDLER t1 READ b NEXT;
|
||||
HANDLER t1 READ b NEXT;
|
||||
HANDLER t1 READ NEXT;
|
||||
HANDLER t1 READ NEXT;
|
||||
HANDLER t1 READ NEXT;
|
||||
HANDLER t1 CLOSE;
|
||||
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ FIRST;
|
||||
HANDLER t1 READ `PRIMARY` PREV;
|
||||
HANDLER t1 READ `PRIMARY` PREV;
|
||||
HANDLER t1 READ b PREV;
|
||||
HANDLER t1 READ b PREV;
|
||||
HANDLER t1 CLOSE;
|
||||
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ FIRST;
|
||||
HANDLER t1 READ `PRIMARY` PREV LIMIT 3;
|
||||
HANDLER t1 READ b NEXT LIMIT 5;
|
||||
HANDLER t1 CLOSE;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.1 tests
|
@ -1,4 +1,6 @@
|
||||
# include/handler.inc
|
||||
# handler.inc
|
||||
#
|
||||
# See init.inc for setup of variables for this script
|
||||
#
|
||||
# The variables
|
||||
# $engine_type -- storage engine to be tested
|
||||
@ -8,31 +10,19 @@
|
||||
# 2. $other_handler_engine_type must point to an all
|
||||
# time available storage engine
|
||||
# 2006-08 MySQL 5.1 MyISAM and MEMORY only
|
||||
# have to be set before sourcing this script.
|
||||
-- source include/not_embedded.inc
|
||||
#
|
||||
# test of HANDLER ...
|
||||
#
|
||||
# Last update:
|
||||
# 2006-07-31 ML test refactored (MySQL 5.1)
|
||||
# code of t/handler.test and t/innodb_handler.test united
|
||||
# main testing code put into include/handler.inc
|
||||
# main testing code put into handler.inc
|
||||
#
|
||||
|
||||
eval SET SESSION STORAGE_ENGINE = $engine_type;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t3,t4,t5;
|
||||
--enable_warnings
|
||||
|
||||
create table t1 (a int, b char(10), key a(a), key b(a,b));
|
||||
insert into t1 values
|
||||
(17,"ddd"),(18,"eee"),(19,"fff"),(19,"yyy"),
|
||||
(14,"aaa"),(15,"bbb"),(16,"ccc"),(16,"xxx"),
|
||||
(20,"ggg"),(21,"hhh"),(22,"iii");
|
||||
#
|
||||
# Start testing the table created in init.inc
|
||||
#
|
||||
handler t1 open as t2;
|
||||
-- error 1064
|
||||
handler t2 read a=(SELECT 1);
|
||||
handler t2 read a first;
|
||||
handler t2 read a next;
|
||||
handler t2 read a next;
|
||||
@ -65,12 +55,34 @@ handler t1 read a last;
|
||||
handler t2 read a=(11);
|
||||
handler t2 read a>=(11);
|
||||
|
||||
# Search on something we ca nfind
|
||||
handler t2 read a=(18);
|
||||
handler t2 read a>=(18);
|
||||
handler t2 read a>(18);
|
||||
handler t2 read a<=(18);
|
||||
handler t2 read a<(18);
|
||||
|
||||
# Search on something we can't find
|
||||
handler t2 read a=(15);
|
||||
handler t2 read a>=(15);
|
||||
handler t2 read a>(15);
|
||||
handler t2 read a<=(15);
|
||||
handler t2 read a<(15);
|
||||
|
||||
# Search from upper end
|
||||
handler t2 read a=(54);
|
||||
handler t2 read a>=(54);
|
||||
handler t2 read a>(54);
|
||||
handler t2 read a<=(54);
|
||||
handler t2 read a<(54);
|
||||
|
||||
# Search from lower end
|
||||
handler t2 read a=(1);
|
||||
handler t2 read a>=(1);
|
||||
handler t2 read a>(1);
|
||||
handler t2 read a<=(1);
|
||||
handler t2 read a<(1);
|
||||
|
||||
handler t2 read a first limit 5;
|
||||
handler t2 read a next limit 3;
|
||||
handler t2 read a prev limit 10;
|
||||
@ -86,8 +98,6 @@ handler t2 read a=(19) where b="yyy";
|
||||
handler t2 read first;
|
||||
handler t2 read next;
|
||||
handler t2 read next;
|
||||
--error 1064
|
||||
handler t2 read last;
|
||||
handler t2 close;
|
||||
|
||||
handler t1 open;
|
||||
@ -184,7 +194,7 @@ handler t1 close;
|
||||
#
|
||||
handler t1 open as t2;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
create table t1 (a int not null);
|
||||
insert into t1 values (17);
|
||||
--error 1109
|
||||
handler t2 read first;
|
||||
@ -211,7 +221,7 @@ drop table t1;
|
||||
#
|
||||
# Test for #751
|
||||
#
|
||||
create table t1(a int, index(a));
|
||||
eval create table t1(a int, index $key_type (a));
|
||||
insert into t1 values (1), (2), (3);
|
||||
handler t1 open;
|
||||
--error 1054
|
||||
@ -238,7 +248,7 @@ drop table t1;
|
||||
#
|
||||
# BUG#3649
|
||||
#
|
||||
create table t1 ( a int, b int, INDEX a (a) );
|
||||
eval create table t1 ( a int, b int, INDEX a $key_type (a) );
|
||||
insert into t1 values (1,2), (2,1);
|
||||
handler t1 open;
|
||||
handler t1 read a=(1) where b=2;
|
||||
@ -247,143 +257,6 @@ handler t1 read a=(1) where b=1;
|
||||
handler t1 close;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Check if two database names beginning the same are seen as different.
|
||||
#
|
||||
# This database begins like the usual 'test' database.
|
||||
#
|
||||
--disable_warnings
|
||||
drop database if exists test_test;
|
||||
--enable_warnings
|
||||
create database test_test;
|
||||
use test_test;
|
||||
create table t1(table_id char(20) primary key);
|
||||
insert into t1 values ('test_test.t1');
|
||||
insert into t1 values ('');
|
||||
handler t1 open;
|
||||
handler t1 read first limit 9;
|
||||
create table t2(table_id char(20) primary key);
|
||||
insert into t2 values ('test_test.t2');
|
||||
insert into t2 values ('');
|
||||
handler t2 open;
|
||||
handler t2 read first limit 9;
|
||||
#
|
||||
# This is the usual 'test' database.
|
||||
#
|
||||
use test;
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
create table t1(table_id char(20) primary key);
|
||||
insert into t1 values ('test.t1');
|
||||
insert into t1 values ('');
|
||||
--error 1066
|
||||
handler t1 open;
|
||||
#
|
||||
# Check accesibility of all the tables.
|
||||
#
|
||||
use test;
|
||||
--error 1064
|
||||
handler test.t1 read first limit 9;
|
||||
--error 1064
|
||||
handler test_test.t1 read first limit 9;
|
||||
handler t1 read first limit 9;
|
||||
--error 1064
|
||||
handler test_test.t2 read first limit 9;
|
||||
handler t2 read first limit 9;
|
||||
|
||||
#
|
||||
# Cleanup.
|
||||
#
|
||||
|
||||
--error 1064
|
||||
handler test_test.t1 close;
|
||||
handler t1 close;
|
||||
drop table test_test.t1;
|
||||
--error 1064
|
||||
handler test_test.t2 close;
|
||||
handler t2 close;
|
||||
drop table test_test.t2;
|
||||
drop database test_test;
|
||||
|
||||
#
|
||||
use test;
|
||||
--error 1064
|
||||
handler test.t1 close;
|
||||
--error 1109
|
||||
handler t1 close;
|
||||
drop table test.t1;
|
||||
|
||||
#
|
||||
# BUG#4335
|
||||
#
|
||||
--disable_warnings
|
||||
drop database if exists test_test;
|
||||
drop table if exists t1;
|
||||
drop table if exists t2;
|
||||
drop table if exists t3;
|
||||
--enable_warnings
|
||||
create database test_test;
|
||||
use test_test;
|
||||
create table t1 (c1 char(20));
|
||||
insert into t1 values ('test_test.t1');
|
||||
create table t3 (c1 char(20));
|
||||
insert into t3 values ('test_test.t3');
|
||||
handler t1 open;
|
||||
handler t1 read first limit 9;
|
||||
handler t1 open h1;
|
||||
handler h1 read first limit 9;
|
||||
use test;
|
||||
create table t1 (c1 char(20));
|
||||
create table t2 (c1 char(20));
|
||||
create table t3 (c1 char(20));
|
||||
insert into t1 values ('t1');
|
||||
insert into t2 values ('t2');
|
||||
insert into t3 values ('t3');
|
||||
--error 1066
|
||||
handler t1 open;
|
||||
--error 1066
|
||||
handler t2 open t1;
|
||||
--error 1066
|
||||
handler t3 open t1;
|
||||
handler t1 read first limit 9;
|
||||
--error 1064
|
||||
handler test.t1 close;
|
||||
--error 1066
|
||||
handler test.t1 open h1;
|
||||
--error 1066
|
||||
handler test_test.t1 open h1;
|
||||
handler test_test.t3 open h3;
|
||||
handler test.t1 open h2;
|
||||
handler t1 read first limit 9;
|
||||
handler h1 read first limit 9;
|
||||
handler h2 read first limit 9;
|
||||
handler h3 read first limit 9;
|
||||
handler h2 read first limit 9;
|
||||
--error 1064
|
||||
handler test.h1 close;
|
||||
handler t1 close;
|
||||
handler h1 close;
|
||||
handler h2 close;
|
||||
--error 1109
|
||||
handler t1 read first limit 9;
|
||||
--error 1109
|
||||
handler h1 read first limit 9;
|
||||
--error 1109
|
||||
handler h2 read first limit 9;
|
||||
handler h3 read first limit 9;
|
||||
handler h3 read first limit 9;
|
||||
use test_test;
|
||||
handler h3 read first limit 9;
|
||||
--error 1064
|
||||
handler test.h3 read first limit 9;
|
||||
handler h3 close;
|
||||
use test;
|
||||
drop table t3;
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
drop database test_test;
|
||||
|
||||
#
|
||||
# Test if fix for BUG#4286 correctly closes handler tables.
|
||||
#
|
||||
@ -484,11 +357,13 @@ reap;
|
||||
connection default;
|
||||
drop table t1;
|
||||
|
||||
CREATE TABLE t1 ( no1 smallint(5) NOT NULL default '0', no2 int(10) NOT NULL default '0', PRIMARY KEY (no1,no2));
|
||||
eval CREATE TABLE t1 ( no1 smallint(5) NOT NULL default '0', no2 int(10) NOT NULL default '0', PRIMARY KEY $key_type (no1,no2));
|
||||
INSERT INTO t1 VALUES (1,274),(1,275),(2,6),(2,8),(4,1),(4,2);
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ `primary` = (1, 1000);
|
||||
HANDLER t1 READ `primary` PREV;
|
||||
HANDLER t1 READ `primary` = (1, 1000);
|
||||
HANDLER t1 READ `primary` NEXT;
|
||||
DROP TABLE t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
@ -542,10 +417,7 @@ drop table if exists t1;
|
||||
#
|
||||
# Bug#25856 - HANDLER table OPEN in one connection lock DROP TABLE in another one
|
||||
#
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
eval create table t1 (a int) ENGINE=$other_engine_type;
|
||||
eval create table t1 (a int not null) ENGINE=$other_engine_type;
|
||||
--echo --> client 2
|
||||
connection con2;
|
||||
--error 1031
|
||||
@ -558,9 +430,6 @@ disconnect con2;
|
||||
#
|
||||
# Bug#30632 HANDLER read failure causes hang
|
||||
#
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
--error 1176
|
||||
@ -574,74 +443,6 @@ handler t1_alias READ a next where inexistent > 0;
|
||||
handler t1_alias close;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#21587 FLUSH TABLES causes server crash when used with HANDLER statements
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2;
|
||||
--enable_warnings
|
||||
create table t1 (c1 int);
|
||||
create table t2 (c1 int);
|
||||
insert into t1 values (1);
|
||||
insert into t2 values (2);
|
||||
--echo connection: default
|
||||
handler t1 open;
|
||||
handler t1 read first;
|
||||
connect (flush,localhost,root,,);
|
||||
connection flush;
|
||||
--echo connection: flush
|
||||
--send flush tables;
|
||||
connection default;
|
||||
--echo connection: default
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Flushing tables";
|
||||
--source include/wait_condition.inc
|
||||
handler t2 open;
|
||||
handler t2 read first;
|
||||
handler t1 read next;
|
||||
handler t1 close;
|
||||
handler t2 close;
|
||||
connection flush;
|
||||
reap;
|
||||
connection default;
|
||||
drop table t1,t2;
|
||||
disconnect flush;
|
||||
|
||||
#
|
||||
# Bug#31409 RENAME TABLE causes server crash or deadlock when used with HANDLER statements
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2;
|
||||
--enable_warnings
|
||||
create table t1 (c1 int);
|
||||
--echo connection: default
|
||||
handler t1 open;
|
||||
handler t1 read first;
|
||||
connect (flush,localhost,root,,);
|
||||
connection flush;
|
||||
--echo connection: flush
|
||||
--send rename table t1 to t2;
|
||||
connection default;
|
||||
--echo connection: default
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Waiting for table" and info = "rename table t1 to t2";
|
||||
--source include/wait_condition.inc
|
||||
handler t2 open;
|
||||
handler t2 read first;
|
||||
--error ER_NO_SUCH_TABLE
|
||||
handler t1 read next;
|
||||
handler t1 close;
|
||||
handler t2 close;
|
||||
connection flush;
|
||||
reap;
|
||||
connection default;
|
||||
drop table t2;
|
||||
disconnect flush;
|
||||
|
||||
#
|
||||
# Bug#30882 Dropping a temporary table inside a stored function may cause a server crash
|
||||
#
|
||||
@ -649,15 +450,12 @@ disconnect flush;
|
||||
# is open by a HANDLER, no other statement can access it.
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
create temporary table t1 (a int, b char(1), key a(a), key b(a,b));
|
||||
eval create temporary table t1 (a int, b char(1), key a $key_type (a), key b(a,b));
|
||||
insert into t1 values (0,"a"),(1,"b"),(2,"c"),(3,"d"),(4,"e"),
|
||||
(5,"f"),(6,"g"),(7,"h"),(8,"i"),(9,"j");
|
||||
(5,"f"),(6,"g"),(7,"h"),(8,"i"),(9,"j"),(9,'k');
|
||||
select a,b from t1;
|
||||
handler t1 open as a1;
|
||||
handler a1 read a first;
|
||||
handler a1 read a=(1);
|
||||
handler a1 read a next;
|
||||
handler a1 read a next;
|
||||
--error ER_CANT_REOPEN_TABLE
|
||||
@ -668,41 +466,19 @@ handler a1 read a=(6) where b="g";
|
||||
handler a1 close;
|
||||
select a,b from t1;
|
||||
handler t1 open as a2;
|
||||
handler a2 read a first;
|
||||
handler a2 read a=(9);
|
||||
handler a2 read a next;
|
||||
handler a2 read a prev limit 2;
|
||||
--error 0,1031
|
||||
handler a2 read a last;
|
||||
handler a2 read a prev;
|
||||
handler a2 close;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#31397 Inconsistent drop table behavior of handler tables.
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2;
|
||||
--enable_warnings
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
flush tables;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
handler t1_alias close;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
handler t1_alias read first;
|
||||
drop table t1;
|
||||
--error ER_UNKNOWN_TABLE
|
||||
handler t1_alias read next;
|
||||
|
||||
# Test that temporary tables associated with handlers are properly dropped.
|
||||
|
||||
create table t1 (a int);
|
||||
create temporary table t2 (a int, key(a));
|
||||
eval create temporary table t2 (a int, key $key_type (a));
|
||||
handler t1 open as a1;
|
||||
handler t2 open as a2;
|
||||
handler a2 read a first;
|
||||
@ -714,7 +490,7 @@ handler a1 close;
|
||||
|
||||
# Alter table drop handlers
|
||||
|
||||
create table t1 (a int, key(a));
|
||||
eval create table t1 (a int, key $key_type (a));
|
||||
create table t2 like t1;
|
||||
handler t1 open as a1;
|
||||
handler t2 open as a2;
|
||||
@ -728,7 +504,7 @@ drop table t1, t2;
|
||||
|
||||
# Rename table drop handlers
|
||||
|
||||
create table t1 (a int, key(a));
|
||||
eval create table t1 (a int, key $key_type (a));
|
||||
handler t1 open as a1;
|
||||
handler a1 read a first;
|
||||
rename table t1 to t2;
|
||||
@ -738,7 +514,7 @@ drop table t2;
|
||||
|
||||
# Optimize table drop handlers
|
||||
|
||||
create table t1 (a int, key(a));
|
||||
eval create table t1 (a int, key $key_type (a));
|
||||
create table t2 like t1;
|
||||
handler t1 open as a1;
|
||||
handler t2 open as a2;
|
||||
@ -750,56 +526,14 @@ handler a1 close;
|
||||
handler a2 close;
|
||||
drop table t1, t2;
|
||||
|
||||
# Flush tables causes handlers reopen
|
||||
|
||||
create table t1 (a int, b char(1), key a(a), key b(a,b));
|
||||
insert into t1 values (0,"a"),(1,"b"),(2,"c"),(3,"d"),(4,"e"),
|
||||
(5,"f"),(6,"g"),(7,"h"),(8,"i"),(9,"j");
|
||||
handler t1 open;
|
||||
handler t1 read a first;
|
||||
handler t1 read a next;
|
||||
flush tables;
|
||||
handler t1 read a next;
|
||||
handler t1 read a next;
|
||||
flush tables with read lock;
|
||||
handler t1 read a next;
|
||||
unlock tables;
|
||||
drop table t1;
|
||||
--error ER_UNKNOWN_TABLE
|
||||
handler t1 read a next;
|
||||
|
||||
#
|
||||
# Bug#41110: crash with handler command when used concurrently with alter table
|
||||
# Bug#41112: crash in mysql_ha_close_table/get_lock_data with alter table
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
create table t1 (a int);
|
||||
insert into t1 values (1);
|
||||
handler t1 open;
|
||||
connect(con1,localhost,root,,);
|
||||
send alter table t1 engine=memory;
|
||||
connection default;
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "rename result table" and info = "alter table t1 engine=memory";
|
||||
--source include/wait_condition.inc
|
||||
--error ER_ILLEGAL_HA
|
||||
handler t1 read a next;
|
||||
handler t1 close;
|
||||
connection con1;
|
||||
--reap
|
||||
drop table t1;
|
||||
disconnect con1;
|
||||
--source include/wait_until_disconnected.inc
|
||||
connection default;
|
||||
|
||||
#
|
||||
# Bug#44151 using handler commands on information_schema tables crashes server
|
||||
#
|
||||
USE information_schema;
|
||||
--error ER_WRONG_USAGE
|
||||
HANDLER COLUMNS OPEN;
|
||||
USE test;
|
||||
--echo #
|
||||
--echo # BUG#51877 - HANDLER interface causes invalid memory read
|
||||
--echo #
|
||||
eval CREATE TABLE t1(a INT, KEY $key_type (a));
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ a FIRST;
|
||||
INSERT INTO t1 VALUES(1);
|
||||
--error 0,ER_CHECKREAD
|
||||
HANDLER t1 READ a NEXT;
|
||||
HANDLER t1 CLOSE;
|
||||
DROP TABLE t1;
|
33
mysql-test/suite/handler/init.inc
Normal file
33
mysql-test/suite/handler/init.inc
Normal file
@ -0,0 +1,33 @@
|
||||
# Setup things for handler.inc
|
||||
#
|
||||
# Input variables
|
||||
# $engine_type -- storage engine to be tested
|
||||
# $key_type -- set if you want a non standard key type
|
||||
#
|
||||
# This scripts sets up default values for:
|
||||
# $other_engine_type -- storage engine <> $engine_type
|
||||
# $other_handler_engine_type -- storage engine <> $engine_type, if possible
|
||||
# 1. $other_handler_engine_type must support handler
|
||||
# 2. $other_handler_engine_type must point to an all
|
||||
# time available storage engine
|
||||
# have to be set before sourcing this script.
|
||||
#
|
||||
# Handler tests don't work with embedded server
|
||||
#
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
eval SET SESSION STORAGE_ENGINE = $engine_type;
|
||||
let $other_engine_type= CSV;
|
||||
let $other_handler_engine_type= MyISAM;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t3,t4,t5;
|
||||
--enable_warnings
|
||||
|
||||
# Create default test table
|
||||
|
||||
eval create table t1 (a int, b char(10), key a $key_type (a), key b $key_type (a,b));
|
||||
insert into t1 values
|
||||
(17,"ddd"),(18,"eee"),(19,"fff"),(19,"yyy"),
|
||||
(14,"aaa"),(16,"ccc"),(16,"xxx"),
|
||||
(20,"ggg"),(21,"hhh"),(22,"iii");
|
@ -1,25 +1,23 @@
|
||||
SET SESSION STORAGE_ENGINE = InnoDB;
|
||||
drop table if exists t1,t3,t4,t5;
|
||||
create table t1 (a int, b char(10), key a(a), key b(a,b));
|
||||
create table t1 (a int, b char(10), key a (a), key b (a,b));
|
||||
insert into t1 values
|
||||
(17,"ddd"),(18,"eee"),(19,"fff"),(19,"yyy"),
|
||||
(14,"aaa"),(15,"bbb"),(16,"ccc"),(16,"xxx"),
|
||||
(14,"aaa"),(16,"ccc"),(16,"xxx"),
|
||||
(20,"ggg"),(21,"hhh"),(22,"iii");
|
||||
handler t1 open as t2;
|
||||
handler t2 read a=(SELECT 1);
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT 1)' at line 1
|
||||
handler t2 read a first;
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a next;
|
||||
a b
|
||||
15 bbb
|
||||
16 ccc
|
||||
handler t2 read a next;
|
||||
a b
|
||||
16 ccc
|
||||
16 xxx
|
||||
handler t2 read a prev;
|
||||
a b
|
||||
15 bbb
|
||||
16 ccc
|
||||
handler t2 read a last;
|
||||
a b
|
||||
22 iii
|
||||
@ -47,7 +45,6 @@ handler t2 read a next;
|
||||
a b
|
||||
handler t2 read a=(15);
|
||||
a b
|
||||
15 bbb
|
||||
handler t2 read a=(16);
|
||||
a b
|
||||
16 ccc
|
||||
@ -84,26 +81,64 @@ a b
|
||||
handler t2 read a<(18);
|
||||
a b
|
||||
17 ddd
|
||||
handler t2 read a=(15);
|
||||
a b
|
||||
handler t2 read a>=(15);
|
||||
a b
|
||||
16 ccc
|
||||
handler t2 read a>(15);
|
||||
a b
|
||||
16 ccc
|
||||
handler t2 read a<=(15);
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a<(15);
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a=(54);
|
||||
a b
|
||||
handler t2 read a>=(54);
|
||||
a b
|
||||
handler t2 read a>(54);
|
||||
a b
|
||||
handler t2 read a<=(54);
|
||||
a b
|
||||
22 iii
|
||||
handler t2 read a<(54);
|
||||
a b
|
||||
22 iii
|
||||
handler t2 read a=(1);
|
||||
a b
|
||||
handler t2 read a>=(1);
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a>(1);
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a<=(1);
|
||||
a b
|
||||
handler t2 read a<(1);
|
||||
a b
|
||||
handler t2 read a first limit 5;
|
||||
a b
|
||||
14 aaa
|
||||
15 bbb
|
||||
16 ccc
|
||||
16 xxx
|
||||
17 ddd
|
||||
18 eee
|
||||
handler t2 read a next limit 3;
|
||||
a b
|
||||
18 eee
|
||||
19 fff
|
||||
19 yyy
|
||||
20 ggg
|
||||
handler t2 read a prev limit 10;
|
||||
a b
|
||||
19 yyy
|
||||
19 fff
|
||||
18 eee
|
||||
17 ddd
|
||||
16 xxx
|
||||
16 ccc
|
||||
15 bbb
|
||||
14 aaa
|
||||
handler t2 read a>=(16) limit 4;
|
||||
a b
|
||||
@ -142,8 +177,6 @@ a b
|
||||
handler t2 read next;
|
||||
a b
|
||||
19 fff
|
||||
handler t2 read last;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
|
||||
handler t2 close;
|
||||
handler t1 open;
|
||||
handler t1 read a next;
|
||||
@ -151,7 +184,7 @@ a b
|
||||
14 aaa
|
||||
handler t1 read a next;
|
||||
a b
|
||||
15 bbb
|
||||
16 ccc
|
||||
handler t1 close;
|
||||
handler t1 open;
|
||||
handler t1 read a prev;
|
||||
@ -199,19 +232,19 @@ a b
|
||||
set @a=3;
|
||||
execute stmt using @a;
|
||||
a b
|
||||
15 bbb
|
||||
16 ccc
|
||||
16 xxx
|
||||
17 ddd
|
||||
execute stmt using @a;
|
||||
a b
|
||||
17 ddd
|
||||
18 eee
|
||||
19 fff
|
||||
19 yyy
|
||||
execute stmt using @a;
|
||||
a b
|
||||
19 yyy
|
||||
20 ggg
|
||||
21 hhh
|
||||
22 iii
|
||||
deallocate prepare stmt;
|
||||
prepare stmt from 'handler t1 read b prev limit ?';
|
||||
execute stmt using @a;
|
||||
@ -231,7 +264,6 @@ a b
|
||||
16 ccc
|
||||
execute stmt using @a;
|
||||
a b
|
||||
15 bbb
|
||||
14 aaa
|
||||
deallocate prepare stmt;
|
||||
prepare stmt from 'handler t1 read b=(?,?)';
|
||||
@ -258,18 +290,18 @@ prepare stmt from 'handler t1 read a>=(?) where a < ? limit 5';
|
||||
set @a=15, @b=20;
|
||||
execute stmt using @a,@b;
|
||||
a b
|
||||
15 bbb
|
||||
16 ccc
|
||||
16 xxx
|
||||
17 ddd
|
||||
18 eee
|
||||
19 fff
|
||||
execute stmt using @a,@b;
|
||||
a b
|
||||
15 bbb
|
||||
16 ccc
|
||||
16 xxx
|
||||
17 ddd
|
||||
18 eee
|
||||
19 fff
|
||||
deallocate prepare stmt;
|
||||
prepare stmt from 'handler t1 read a=(?)';
|
||||
set @a=16;
|
||||
@ -292,12 +324,12 @@ deallocate prepare stmt;
|
||||
handler t1 close;
|
||||
handler t1 open as t2;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
create table t1 (a int not null);
|
||||
insert into t1 values (17);
|
||||
handler t2 read first;
|
||||
ERROR 42S02: Unknown table 't2' in HANDLER
|
||||
handler t1 open as t2;
|
||||
alter table t1 engine=MEMORY;
|
||||
alter table t1 engine=CSV;
|
||||
handler t2 read first;
|
||||
ERROR 42S02: Unknown table 't2' in HANDLER
|
||||
drop table t1;
|
||||
@ -320,7 +352,7 @@ handler t1 read first;
|
||||
a
|
||||
6
|
||||
drop table t1;
|
||||
create table t1(a int, index(a));
|
||||
create table t1(a int, index (a));
|
||||
insert into t1 values (1), (2), (3);
|
||||
handler t1 open;
|
||||
handler t1 read a=(W);
|
||||
@ -358,148 +390,6 @@ handler t1 read a=(1) where b=1;
|
||||
a b
|
||||
handler t1 close;
|
||||
drop table t1;
|
||||
drop database if exists test_test;
|
||||
create database test_test;
|
||||
use test_test;
|
||||
create table t1(table_id char(20) primary key);
|
||||
insert into t1 values ('test_test.t1');
|
||||
insert into t1 values ('');
|
||||
handler t1 open;
|
||||
handler t1 read first limit 9;
|
||||
table_id
|
||||
|
||||
test_test.t1
|
||||
create table t2(table_id char(20) primary key);
|
||||
insert into t2 values ('test_test.t2');
|
||||
insert into t2 values ('');
|
||||
handler t2 open;
|
||||
handler t2 read first limit 9;
|
||||
table_id
|
||||
|
||||
test_test.t2
|
||||
use test;
|
||||
drop table if exists t1;
|
||||
create table t1(table_id char(20) primary key);
|
||||
insert into t1 values ('test.t1');
|
||||
insert into t1 values ('');
|
||||
handler t1 open;
|
||||
ERROR 42000: Not unique table/alias: 't1'
|
||||
use test;
|
||||
handler test.t1 read first limit 9;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'read first limit 9' at line 1
|
||||
handler test_test.t1 read first limit 9;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'read first limit 9' at line 1
|
||||
handler t1 read first limit 9;
|
||||
table_id
|
||||
|
||||
test_test.t1
|
||||
handler test_test.t2 read first limit 9;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'read first limit 9' at line 1
|
||||
handler t2 read first limit 9;
|
||||
table_id
|
||||
|
||||
test_test.t2
|
||||
handler test_test.t1 close;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'close' at line 1
|
||||
handler t1 close;
|
||||
drop table test_test.t1;
|
||||
handler test_test.t2 close;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'close' at line 1
|
||||
handler t2 close;
|
||||
drop table test_test.t2;
|
||||
drop database test_test;
|
||||
use test;
|
||||
handler test.t1 close;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'close' at line 1
|
||||
handler t1 close;
|
||||
ERROR 42S02: Unknown table 't1' in HANDLER
|
||||
drop table test.t1;
|
||||
drop database if exists test_test;
|
||||
drop table if exists t1;
|
||||
drop table if exists t2;
|
||||
drop table if exists t3;
|
||||
create database test_test;
|
||||
use test_test;
|
||||
create table t1 (c1 char(20));
|
||||
insert into t1 values ('test_test.t1');
|
||||
create table t3 (c1 char(20));
|
||||
insert into t3 values ('test_test.t3');
|
||||
handler t1 open;
|
||||
handler t1 read first limit 9;
|
||||
c1
|
||||
test_test.t1
|
||||
handler t1 open h1;
|
||||
handler h1 read first limit 9;
|
||||
c1
|
||||
test_test.t1
|
||||
use test;
|
||||
create table t1 (c1 char(20));
|
||||
create table t2 (c1 char(20));
|
||||
create table t3 (c1 char(20));
|
||||
insert into t1 values ('t1');
|
||||
insert into t2 values ('t2');
|
||||
insert into t3 values ('t3');
|
||||
handler t1 open;
|
||||
ERROR 42000: Not unique table/alias: 't1'
|
||||
handler t2 open t1;
|
||||
ERROR 42000: Not unique table/alias: 't1'
|
||||
handler t3 open t1;
|
||||
ERROR 42000: Not unique table/alias: 't1'
|
||||
handler t1 read first limit 9;
|
||||
c1
|
||||
test_test.t1
|
||||
handler test.t1 close;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'close' at line 1
|
||||
handler test.t1 open h1;
|
||||
ERROR 42000: Not unique table/alias: 'h1'
|
||||
handler test_test.t1 open h1;
|
||||
ERROR 42000: Not unique table/alias: 'h1'
|
||||
handler test_test.t3 open h3;
|
||||
handler test.t1 open h2;
|
||||
handler t1 read first limit 9;
|
||||
c1
|
||||
test_test.t1
|
||||
handler h1 read first limit 9;
|
||||
c1
|
||||
test_test.t1
|
||||
handler h2 read first limit 9;
|
||||
c1
|
||||
t1
|
||||
handler h3 read first limit 9;
|
||||
c1
|
||||
test_test.t3
|
||||
handler h2 read first limit 9;
|
||||
c1
|
||||
t1
|
||||
handler test.h1 close;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'close' at line 1
|
||||
handler t1 close;
|
||||
handler h1 close;
|
||||
handler h2 close;
|
||||
handler t1 read first limit 9;
|
||||
ERROR 42S02: Unknown table 't1' in HANDLER
|
||||
handler h1 read first limit 9;
|
||||
ERROR 42S02: Unknown table 'h1' in HANDLER
|
||||
handler h2 read first limit 9;
|
||||
ERROR 42S02: Unknown table 'h2' in HANDLER
|
||||
handler h3 read first limit 9;
|
||||
c1
|
||||
test_test.t3
|
||||
handler h3 read first limit 9;
|
||||
c1
|
||||
test_test.t3
|
||||
use test_test;
|
||||
handler h3 read first limit 9;
|
||||
c1
|
||||
test_test.t3
|
||||
handler test.h3 read first limit 9;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'read first limit 9' at line 1
|
||||
handler h3 close;
|
||||
use test;
|
||||
drop table t3;
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
drop database test_test;
|
||||
create table t1 (c1 char(20));
|
||||
insert into t1 values ("t1");
|
||||
handler t1 open as h1;
|
||||
@ -625,6 +515,11 @@ no1 no2
|
||||
HANDLER t1 READ `primary` PREV;
|
||||
no1 no2
|
||||
1 275
|
||||
HANDLER t1 READ `primary` = (1, 1000);
|
||||
no1 no2
|
||||
HANDLER t1 READ `primary` NEXT;
|
||||
no1 no2
|
||||
2 8
|
||||
DROP TABLE t1;
|
||||
create table t1 (c1 int);
|
||||
insert into t1 values (14397);
|
||||
@ -645,14 +540,12 @@ ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
drop table if exists t1;
|
||||
Warnings:
|
||||
Note 1051 Unknown table 't1'
|
||||
drop table if exists t1;
|
||||
create table t1 (a int) ENGINE=MEMORY;
|
||||
create table t1 (a int not null) ENGINE=CSV;
|
||||
--> client 2
|
||||
handler t1 open;
|
||||
ERROR HY000: Table storage engine for 't1' doesn't have this option
|
||||
--> client 1
|
||||
drop table t1;
|
||||
drop table if exists t1;
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
handler t1_alias read a next;
|
||||
@ -665,50 +558,9 @@ handler t1_alias READ a next where inexistent > 0;
|
||||
ERROR 42S22: Unknown column 'inexistent' in 'field list'
|
||||
handler t1_alias close;
|
||||
drop table t1;
|
||||
drop table if exists t1,t2;
|
||||
create table t1 (c1 int);
|
||||
create table t2 (c1 int);
|
||||
insert into t1 values (1);
|
||||
insert into t2 values (2);
|
||||
connection: default
|
||||
handler t1 open;
|
||||
handler t1 read first;
|
||||
c1
|
||||
1
|
||||
connection: flush
|
||||
flush tables;;
|
||||
connection: default
|
||||
handler t2 open;
|
||||
handler t2 read first;
|
||||
c1
|
||||
2
|
||||
handler t1 read next;
|
||||
c1
|
||||
1
|
||||
handler t1 close;
|
||||
handler t2 close;
|
||||
drop table t1,t2;
|
||||
drop table if exists t1,t2;
|
||||
create table t1 (c1 int);
|
||||
connection: default
|
||||
handler t1 open;
|
||||
handler t1 read first;
|
||||
c1
|
||||
connection: flush
|
||||
rename table t1 to t2;;
|
||||
connection: default
|
||||
handler t2 open;
|
||||
handler t2 read first;
|
||||
c1
|
||||
handler t1 read next;
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
handler t1 close;
|
||||
handler t2 close;
|
||||
drop table t2;
|
||||
drop table if exists t1;
|
||||
create temporary table t1 (a int, b char(1), key a(a), key b(a,b));
|
||||
create temporary table t1 (a int, b char(1), key a (a), key b(a,b));
|
||||
insert into t1 values (0,"a"),(1,"b"),(2,"c"),(3,"d"),(4,"e"),
|
||||
(5,"f"),(6,"g"),(7,"h"),(8,"i"),(9,"j");
|
||||
(5,"f"),(6,"g"),(7,"h"),(8,"i"),(9,"j"),(9,'k');
|
||||
select a,b from t1;
|
||||
a b
|
||||
0 a
|
||||
@ -721,24 +573,25 @@ a b
|
||||
7 h
|
||||
8 i
|
||||
9 j
|
||||
9 k
|
||||
handler t1 open as a1;
|
||||
handler a1 read a first;
|
||||
a b
|
||||
0 a
|
||||
handler a1 read a next;
|
||||
handler a1 read a=(1);
|
||||
a b
|
||||
1 b
|
||||
handler a1 read a next;
|
||||
a b
|
||||
2 c
|
||||
handler a1 read a next;
|
||||
a b
|
||||
3 d
|
||||
select a,b from t1;
|
||||
ERROR HY000: Can't reopen table: 'a1'
|
||||
handler a1 read a prev;
|
||||
a b
|
||||
1 b
|
||||
2 c
|
||||
handler a1 read a prev;
|
||||
a b
|
||||
0 a
|
||||
1 b
|
||||
handler a1 read a=(6) where b="g";
|
||||
a b
|
||||
6 g
|
||||
@ -755,39 +608,28 @@ a b
|
||||
7 h
|
||||
8 i
|
||||
9 j
|
||||
9 k
|
||||
handler t1 open as a2;
|
||||
handler a2 read a first;
|
||||
a b
|
||||
0 a
|
||||
handler a2 read a last;
|
||||
handler a2 read a=(9);
|
||||
a b
|
||||
9 j
|
||||
handler a2 read a next;
|
||||
a b
|
||||
9 k
|
||||
handler a2 read a prev limit 2;
|
||||
a b
|
||||
9 j
|
||||
8 i
|
||||
handler a2 read a last;
|
||||
a b
|
||||
9 k
|
||||
handler a2 read a prev;
|
||||
a b
|
||||
8 i
|
||||
9 j
|
||||
handler a2 close;
|
||||
drop table t1;
|
||||
drop table if exists t1,t2;
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
flush tables;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
handler t1_alias close;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
handler t1_alias read first;
|
||||
a
|
||||
drop table t1;
|
||||
handler t1_alias read next;
|
||||
ERROR 42S02: Unknown table 't1_alias' in HANDLER
|
||||
create table t1 (a int);
|
||||
create temporary table t2 (a int, key(a));
|
||||
create temporary table t2 (a int, key (a));
|
||||
handler t1 open as a1;
|
||||
handler t2 open as a2;
|
||||
handler a2 read a first;
|
||||
@ -797,7 +639,7 @@ handler a2 read a next;
|
||||
ERROR 42S02: Unknown table 'a2' in HANDLER
|
||||
handler a1 close;
|
||||
ERROR 42S02: Unknown table 'a1' in HANDLER
|
||||
create table t1 (a int, key(a));
|
||||
create table t1 (a int, key (a));
|
||||
create table t2 like t1;
|
||||
handler t1 open as a1;
|
||||
handler t2 open as a2;
|
||||
@ -810,7 +652,7 @@ handler a1 close;
|
||||
ERROR 42S02: Unknown table 'a1' in HANDLER
|
||||
handler a2 close;
|
||||
drop table t1, t2;
|
||||
create table t1 (a int, key(a));
|
||||
create table t1 (a int, key (a));
|
||||
handler t1 open as a1;
|
||||
handler a1 read a first;
|
||||
a
|
||||
@ -818,7 +660,7 @@ rename table t1 to t2;
|
||||
handler a1 read a first;
|
||||
ERROR 42S02: Unknown table 'a1' in HANDLER
|
||||
drop table t2;
|
||||
create table t1 (a int, key(a));
|
||||
create table t1 (a int, key (a));
|
||||
create table t2 like t1;
|
||||
handler t1 open as a1;
|
||||
handler t2 open as a2;
|
||||
@ -834,41 +676,15 @@ handler a1 close;
|
||||
ERROR 42S02: Unknown table 'a1' in HANDLER
|
||||
handler a2 close;
|
||||
drop table t1, t2;
|
||||
create table t1 (a int, b char(1), key a(a), key b(a,b));
|
||||
insert into t1 values (0,"a"),(1,"b"),(2,"c"),(3,"d"),(4,"e"),
|
||||
(5,"f"),(6,"g"),(7,"h"),(8,"i"),(9,"j");
|
||||
handler t1 open;
|
||||
handler t1 read a first;
|
||||
a b
|
||||
0 a
|
||||
handler t1 read a next;
|
||||
a b
|
||||
1 b
|
||||
flush tables;
|
||||
handler t1 read a next;
|
||||
a b
|
||||
0 a
|
||||
handler t1 read a next;
|
||||
a b
|
||||
1 b
|
||||
flush tables with read lock;
|
||||
handler t1 read a next;
|
||||
a b
|
||||
0 a
|
||||
unlock tables;
|
||||
drop table t1;
|
||||
handler t1 read a next;
|
||||
ERROR 42S02: Unknown table 't1' in HANDLER
|
||||
drop table if exists t1;
|
||||
create table t1 (a int);
|
||||
insert into t1 values (1);
|
||||
handler t1 open;
|
||||
alter table t1 engine=memory;
|
||||
handler t1 read a next;
|
||||
ERROR HY000: Table storage engine for 't1' doesn't have this option
|
||||
handler t1 close;
|
||||
drop table t1;
|
||||
USE information_schema;
|
||||
HANDLER COLUMNS OPEN;
|
||||
ERROR HY000: Incorrect usage of HANDLER OPEN and information_schema
|
||||
USE test;
|
||||
#
|
||||
# BUG#51877 - HANDLER interface causes invalid memory read
|
||||
#
|
||||
CREATE TABLE t1(a INT, KEY (a));
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ a FIRST;
|
||||
a
|
||||
INSERT INTO t1 VALUES(1);
|
||||
HANDLER t1 READ a NEXT;
|
||||
a
|
||||
HANDLER t1 CLOSE;
|
||||
DROP TABLE t1;
|
@ -5,16 +5,13 @@
|
||||
# Last update:
|
||||
# 2006-07-31 ML test refactored (MySQL 5.1)
|
||||
# code of t/handler.test and t/innodb_handler.test united
|
||||
# main testing code put into include/handler.inc
|
||||
# main testing code put into handler.inc
|
||||
# rename t/innodb_handler.test to t/handler_innodb.test
|
||||
#
|
||||
|
||||
# should work in embedded server after mysqltest is fixed
|
||||
--source include/not_embedded.inc
|
||||
|
||||
--source include/have_innodb.inc
|
||||
let $engine_type= InnoDB;
|
||||
let $other_engine_type= MEMORY;
|
||||
let $other_handler_engine_type= MyISAM;
|
||||
|
||||
--source include/handler.inc
|
||||
let $engine_type= InnoDB;
|
||||
|
||||
--source init.inc
|
||||
--source handler.inc
|
259
mysql-test/suite/handler/interface.result
Normal file
259
mysql-test/suite/handler/interface.result
Normal file
@ -0,0 +1,259 @@
|
||||
drop table if exists t1,t3,t4,t5;
|
||||
drop database if exists test_test;
|
||||
SET SESSION STORAGE_ENGINE = MyISAM;
|
||||
drop table if exists t1,t3,t4,t5;
|
||||
create table t1 (a int, b char(10), key a (a), key b (a,b));
|
||||
insert into t1 values
|
||||
(17,"ddd"),(18,"eee"),(19,"fff"),(19,"yyy"),
|
||||
(14,"aaa"),(16,"ccc"),(16,"xxx"),
|
||||
(20,"ggg"),(21,"hhh"),(22,"iii");
|
||||
handler t1 open;
|
||||
handler t1 read a=(SELECT 1);
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT 1)' at line 1
|
||||
handler t1 read a=(1) FIRST;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FIRST' at line 1
|
||||
handler t1 read a=(1) NEXT;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NEXT' at line 1
|
||||
handler t1 read last;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
|
||||
handler t1 close;
|
||||
drop table t1;
|
||||
CREATE TABLE t1(a INT, PRIMARY KEY(a));
|
||||
insert into t1 values(1),(2);
|
||||
handler t1 open;
|
||||
handler t1 read primary=(1);
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'primary=(1)' at line 1
|
||||
handler t1 read `primary`=(1);
|
||||
a
|
||||
1
|
||||
handler t1 close;
|
||||
drop table t1;
|
||||
create database test_test;
|
||||
use test_test;
|
||||
create table t1(table_id char(20), primary key (table_id));
|
||||
insert into t1 values ('test_test.t1');
|
||||
insert into t1 values ('');
|
||||
handler t1 open;
|
||||
handler t1 read first limit 9;
|
||||
table_id
|
||||
test_test.t1
|
||||
|
||||
create table t2(table_id char(20), primary key (table_id));
|
||||
insert into t2 values ('test_test.t2');
|
||||
insert into t2 values ('');
|
||||
handler t2 open;
|
||||
handler t2 read first limit 9;
|
||||
table_id
|
||||
test_test.t2
|
||||
|
||||
use test;
|
||||
create table t1(table_id char(20), primary key (table_id));
|
||||
insert into t1 values ('test.t1');
|
||||
insert into t1 values ('');
|
||||
handler t1 open;
|
||||
ERROR 42000: Not unique table/alias: 't1'
|
||||
use test;
|
||||
handler test.t1 read first limit 9;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'read first limit 9' at line 1
|
||||
handler test_test.t1 read first limit 9;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'read first limit 9' at line 1
|
||||
handler t1 read first limit 9;
|
||||
table_id
|
||||
test_test.t1
|
||||
|
||||
handler test_test.t2 read first limit 9;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'read first limit 9' at line 1
|
||||
handler t2 read first limit 9;
|
||||
table_id
|
||||
test_test.t2
|
||||
|
||||
handler test_test.t1 close;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'close' at line 1
|
||||
handler t1 close;
|
||||
drop table test_test.t1;
|
||||
handler test_test.t2 close;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'close' at line 1
|
||||
handler t2 close;
|
||||
drop table test_test.t2;
|
||||
drop database test_test;
|
||||
use test;
|
||||
handler test.t1 close;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'close' at line 1
|
||||
handler t1 close;
|
||||
ERROR 42S02: Unknown table 't1' in HANDLER
|
||||
drop table test.t1;
|
||||
create database test_test;
|
||||
use test_test;
|
||||
create table t1 (c1 char(20));
|
||||
insert into t1 values ('test_test.t1');
|
||||
create table t3 (c1 char(20));
|
||||
insert into t3 values ('test_test.t3');
|
||||
handler t1 open;
|
||||
handler t1 read first limit 9;
|
||||
c1
|
||||
test_test.t1
|
||||
handler t1 open h1;
|
||||
handler h1 read first limit 9;
|
||||
c1
|
||||
test_test.t1
|
||||
use test;
|
||||
create table t1 (c1 char(20));
|
||||
create table t2 (c1 char(20));
|
||||
create table t3 (c1 char(20));
|
||||
insert into t1 values ('t1');
|
||||
insert into t2 values ('t2');
|
||||
insert into t3 values ('t3');
|
||||
handler t1 open;
|
||||
ERROR 42000: Not unique table/alias: 't1'
|
||||
handler t2 open t1;
|
||||
ERROR 42000: Not unique table/alias: 't1'
|
||||
handler t3 open t1;
|
||||
ERROR 42000: Not unique table/alias: 't1'
|
||||
handler t1 read first limit 9;
|
||||
c1
|
||||
test_test.t1
|
||||
handler test.t1 close;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'close' at line 1
|
||||
handler test.t1 open h1;
|
||||
ERROR 42000: Not unique table/alias: 'h1'
|
||||
handler test_test.t1 open h1;
|
||||
ERROR 42000: Not unique table/alias: 'h1'
|
||||
handler test_test.t3 open h3;
|
||||
handler test.t1 open h2;
|
||||
handler t1 read first limit 9;
|
||||
c1
|
||||
test_test.t1
|
||||
handler h1 read first limit 9;
|
||||
c1
|
||||
test_test.t1
|
||||
handler h2 read first limit 9;
|
||||
c1
|
||||
t1
|
||||
handler h3 read first limit 9;
|
||||
c1
|
||||
test_test.t3
|
||||
handler h2 read first limit 9;
|
||||
c1
|
||||
t1
|
||||
handler test.h1 close;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'close' at line 1
|
||||
handler t1 close;
|
||||
handler h1 close;
|
||||
handler h2 close;
|
||||
handler t1 read first limit 9;
|
||||
ERROR 42S02: Unknown table 't1' in HANDLER
|
||||
handler h1 read first limit 9;
|
||||
ERROR 42S02: Unknown table 'h1' in HANDLER
|
||||
handler h2 read first limit 9;
|
||||
ERROR 42S02: Unknown table 'h2' in HANDLER
|
||||
handler h3 read first limit 9;
|
||||
c1
|
||||
test_test.t3
|
||||
handler h3 read first limit 9;
|
||||
c1
|
||||
test_test.t3
|
||||
use test_test;
|
||||
handler h3 read first limit 9;
|
||||
c1
|
||||
test_test.t3
|
||||
handler test.h3 read first limit 9;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'read first limit 9' at line 1
|
||||
handler h3 close;
|
||||
use test;
|
||||
drop table t3;
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
drop database test_test;
|
||||
create table t1 (c1 int);
|
||||
create table t2 (c1 int);
|
||||
insert into t1 values (1);
|
||||
insert into t2 values (2);
|
||||
connection: default
|
||||
handler t1 open;
|
||||
handler t1 read first;
|
||||
c1
|
||||
1
|
||||
connection: flush
|
||||
flush tables;;
|
||||
connection: default
|
||||
handler t2 open;
|
||||
handler t2 read first;
|
||||
c1
|
||||
2
|
||||
handler t1 read next;
|
||||
c1
|
||||
1
|
||||
handler t1 close;
|
||||
handler t2 close;
|
||||
drop table t1,t2;
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
flush tables;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
handler t1_alias close;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
handler t1_alias read first;
|
||||
a
|
||||
drop table t1;
|
||||
handler t1_alias read next;
|
||||
ERROR 42S02: Unknown table 't1_alias' in HANDLER
|
||||
create table t1 (c1 int);
|
||||
connection: default
|
||||
handler t1 open;
|
||||
handler t1 read first;
|
||||
c1
|
||||
connection: flush
|
||||
rename table t1 to t2;;
|
||||
connection: default
|
||||
handler t2 open;
|
||||
handler t2 read first;
|
||||
c1
|
||||
handler t1 read next;
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
handler t1 close;
|
||||
handler t2 close;
|
||||
drop table t2;
|
||||
create table t1 (a int, b char(1), key a (a), key b (a,b));
|
||||
insert into t1 values (0,"a"),(1,"b"),(2,"c"),(3,"d"),(4,"e"),
|
||||
(5,"f"),(6,"g"),(7,"h"),(8,"i"),(9,"j");
|
||||
handler t1 open;
|
||||
handler t1 read a first;
|
||||
a b
|
||||
0 a
|
||||
handler t1 read a next;
|
||||
a b
|
||||
1 b
|
||||
flush tables;
|
||||
handler t1 read a next;
|
||||
a b
|
||||
0 a
|
||||
handler t1 read a next;
|
||||
a b
|
||||
1 b
|
||||
flush tables with read lock;
|
||||
handler t1 read a next;
|
||||
a b
|
||||
0 a
|
||||
unlock tables;
|
||||
drop table t1;
|
||||
handler t1 read a next;
|
||||
ERROR 42S02: Unknown table 't1' in HANDLER
|
||||
drop table if exists t1;
|
||||
create table t1 (a int not null);
|
||||
insert into t1 values (1);
|
||||
handler t1 open;
|
||||
alter table t1 engine=csv;
|
||||
handler t1 read a next;
|
||||
ERROR HY000: Table storage engine for 't1' doesn't have this option
|
||||
handler t1 close;
|
||||
drop table t1;
|
||||
USE information_schema;
|
||||
HANDLER COLUMNS OPEN;
|
||||
ERROR HY000: Incorrect usage of HANDLER OPEN and information_schema
|
307
mysql-test/suite/handler/interface.test
Normal file
307
mysql-test/suite/handler/interface.test
Normal file
@ -0,0 +1,307 @@
|
||||
#
|
||||
# Tests of handler interface that are system independent
|
||||
#
|
||||
# Handler tests don't work yet with embedded server
|
||||
#
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t3,t4,t5;
|
||||
drop database if exists test_test;
|
||||
--enable_warnings
|
||||
|
||||
# Run tests with myisam (any engine should be ok)
|
||||
|
||||
let $engine_type= MyISAM;
|
||||
|
||||
--source init.inc
|
||||
|
||||
#
|
||||
# Do some syntax checking
|
||||
#
|
||||
|
||||
handler t1 open;
|
||||
--error ER_PARSE_ERROR
|
||||
handler t1 read a=(SELECT 1);
|
||||
--error ER_PARSE_ERROR
|
||||
handler t1 read a=(1) FIRST;
|
||||
--error ER_PARSE_ERROR
|
||||
handler t1 read a=(1) NEXT;
|
||||
--error ER_PARSE_ERROR
|
||||
handler t1 read last;
|
||||
handler t1 close;
|
||||
drop table t1;
|
||||
|
||||
CREATE TABLE t1(a INT, PRIMARY KEY(a));
|
||||
insert into t1 values(1),(2);
|
||||
handler t1 open;
|
||||
--error ER_PARSE_ERROR
|
||||
handler t1 read primary=(1);
|
||||
handler t1 read `primary`=(1);
|
||||
handler t1 close;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Check if two database names beginning the same are seen as different.
|
||||
#
|
||||
# This database begins like the usual 'test' database.
|
||||
#
|
||||
create database test_test;
|
||||
use test_test;
|
||||
eval create table t1(table_id char(20), primary key $key_type (table_id));
|
||||
insert into t1 values ('test_test.t1');
|
||||
insert into t1 values ('');
|
||||
handler t1 open;
|
||||
handler t1 read first limit 9;
|
||||
eval create table t2(table_id char(20), primary key $key_type (table_id));
|
||||
insert into t2 values ('test_test.t2');
|
||||
insert into t2 values ('');
|
||||
handler t2 open;
|
||||
handler t2 read first limit 9;
|
||||
#
|
||||
# This is the usual 'test' database.
|
||||
#
|
||||
use test;
|
||||
eval create table t1(table_id char(20), primary key $key_type (table_id));
|
||||
insert into t1 values ('test.t1');
|
||||
insert into t1 values ('');
|
||||
--error 1066
|
||||
handler t1 open;
|
||||
#
|
||||
# Check accessibility of all the tables.
|
||||
#
|
||||
use test;
|
||||
--error 1064
|
||||
handler test.t1 read first limit 9;
|
||||
--error 1064
|
||||
handler test_test.t1 read first limit 9;
|
||||
handler t1 read first limit 9;
|
||||
--error 1064
|
||||
handler test_test.t2 read first limit 9;
|
||||
handler t2 read first limit 9;
|
||||
|
||||
#
|
||||
# Cleanup.
|
||||
#
|
||||
|
||||
--error 1064
|
||||
handler test_test.t1 close;
|
||||
handler t1 close;
|
||||
drop table test_test.t1;
|
||||
--error 1064
|
||||
handler test_test.t2 close;
|
||||
handler t2 close;
|
||||
drop table test_test.t2;
|
||||
drop database test_test;
|
||||
|
||||
#
|
||||
use test;
|
||||
--error 1064
|
||||
handler test.t1 close;
|
||||
--error 1109
|
||||
handler t1 close;
|
||||
drop table test.t1;
|
||||
|
||||
#
|
||||
# BUG#4335 one name can be handler open'ed many times
|
||||
#
|
||||
|
||||
create database test_test;
|
||||
use test_test;
|
||||
create table t1 (c1 char(20));
|
||||
insert into t1 values ('test_test.t1');
|
||||
create table t3 (c1 char(20));
|
||||
insert into t3 values ('test_test.t3');
|
||||
handler t1 open;
|
||||
handler t1 read first limit 9;
|
||||
handler t1 open h1;
|
||||
handler h1 read first limit 9;
|
||||
use test;
|
||||
create table t1 (c1 char(20));
|
||||
create table t2 (c1 char(20));
|
||||
create table t3 (c1 char(20));
|
||||
insert into t1 values ('t1');
|
||||
insert into t2 values ('t2');
|
||||
insert into t3 values ('t3');
|
||||
--error 1066
|
||||
handler t1 open;
|
||||
--error 1066
|
||||
handler t2 open t1;
|
||||
--error 1066
|
||||
handler t3 open t1;
|
||||
handler t1 read first limit 9;
|
||||
--error 1064
|
||||
handler test.t1 close;
|
||||
--error 1066
|
||||
handler test.t1 open h1;
|
||||
--error 1066
|
||||
handler test_test.t1 open h1;
|
||||
handler test_test.t3 open h3;
|
||||
handler test.t1 open h2;
|
||||
handler t1 read first limit 9;
|
||||
handler h1 read first limit 9;
|
||||
handler h2 read first limit 9;
|
||||
handler h3 read first limit 9;
|
||||
handler h2 read first limit 9;
|
||||
--error 1064
|
||||
handler test.h1 close;
|
||||
handler t1 close;
|
||||
handler h1 close;
|
||||
handler h2 close;
|
||||
--error 1109
|
||||
handler t1 read first limit 9;
|
||||
--error 1109
|
||||
handler h1 read first limit 9;
|
||||
--error 1109
|
||||
handler h2 read first limit 9;
|
||||
handler h3 read first limit 9;
|
||||
handler h3 read first limit 9;
|
||||
use test_test;
|
||||
handler h3 read first limit 9;
|
||||
--error 1064
|
||||
handler test.h3 read first limit 9;
|
||||
handler h3 close;
|
||||
use test;
|
||||
drop table t3;
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
drop database test_test;
|
||||
|
||||
#
|
||||
# Bug#21587 FLUSH TABLES causes server crash when used with HANDLER statements
|
||||
#
|
||||
|
||||
create table t1 (c1 int);
|
||||
create table t2 (c1 int);
|
||||
insert into t1 values (1);
|
||||
insert into t2 values (2);
|
||||
--echo connection: default
|
||||
handler t1 open;
|
||||
handler t1 read first;
|
||||
connect (flush,localhost,root,,);
|
||||
connection flush;
|
||||
--echo connection: flush
|
||||
--send flush tables;
|
||||
connection default;
|
||||
--echo connection: default
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Flushing tables";
|
||||
--source include/wait_condition.inc
|
||||
handler t2 open;
|
||||
handler t2 read first;
|
||||
handler t1 read next;
|
||||
handler t1 close;
|
||||
handler t2 close;
|
||||
connection flush;
|
||||
reap;
|
||||
connection default;
|
||||
drop table t1,t2;
|
||||
disconnect flush;
|
||||
|
||||
#
|
||||
# Bug#31397 Inconsistent drop table behavior of handler tables.
|
||||
#
|
||||
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
flush tables;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
handler t1_alias close;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
handler t1_alias read first;
|
||||
drop table t1;
|
||||
--error ER_UNKNOWN_TABLE
|
||||
handler t1_alias read next;
|
||||
|
||||
#
|
||||
# Bug#31409 RENAME TABLE causes server crash or deadlock when used with
|
||||
# HANDLER statements
|
||||
#
|
||||
|
||||
create table t1 (c1 int);
|
||||
--echo connection: default
|
||||
handler t1 open;
|
||||
handler t1 read first;
|
||||
connect (flush,localhost,root,,);
|
||||
connection flush;
|
||||
--echo connection: flush
|
||||
--send rename table t1 to t2;
|
||||
connection default;
|
||||
--echo connection: default
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Waiting for table" and info = "rename table t1 to t2";
|
||||
--source include/wait_condition.inc
|
||||
handler t2 open;
|
||||
handler t2 read first;
|
||||
--error ER_NO_SUCH_TABLE
|
||||
handler t1 read next;
|
||||
handler t1 close;
|
||||
handler t2 close;
|
||||
connection flush;
|
||||
reap;
|
||||
connection default;
|
||||
drop table t2;
|
||||
disconnect flush;
|
||||
|
||||
# Flush tables causes handlers reopen
|
||||
|
||||
eval create table t1 (a int, b char(1), key a $key_type (a), key b $key_type (a,b));
|
||||
insert into t1 values (0,"a"),(1,"b"),(2,"c"),(3,"d"),(4,"e"),
|
||||
(5,"f"),(6,"g"),(7,"h"),(8,"i"),(9,"j");
|
||||
handler t1 open;
|
||||
handler t1 read a first;
|
||||
handler t1 read a next;
|
||||
flush tables;
|
||||
handler t1 read a next;
|
||||
handler t1 read a next;
|
||||
flush tables with read lock;
|
||||
handler t1 read a next;
|
||||
unlock tables;
|
||||
drop table t1;
|
||||
--error ER_UNKNOWN_TABLE
|
||||
handler t1 read a next;
|
||||
|
||||
#
|
||||
# Bug#41110: crash with handler command when used concurrently with alter table
|
||||
# Bug#41112: crash in mysql_ha_close_table/get_lock_data with alter table
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
create table t1 (a int not null);
|
||||
insert into t1 values (1);
|
||||
handler t1 open;
|
||||
connect(con1,localhost,root,,);
|
||||
send alter table t1 engine=csv;
|
||||
connection default;
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "rename result table" and info = "alter table t1 engine=csv";
|
||||
--source include/wait_condition.inc
|
||||
--error ER_ILLEGAL_HA
|
||||
handler t1 read a next;
|
||||
handler t1 close;
|
||||
connection con1;
|
||||
--reap
|
||||
drop table t1;
|
||||
disconnect con1;
|
||||
--source include/wait_until_disconnected.inc
|
||||
connection default;
|
||||
|
||||
#
|
||||
# Bug#44151 using handler commands on information_schema tables crashes server
|
||||
#
|
||||
|
||||
USE information_schema;
|
||||
--error ER_WRONG_USAGE
|
||||
HANDLER COLUMNS OPEN;
|
@ -1,25 +1,23 @@
|
||||
SET SESSION STORAGE_ENGINE = MyISAM;
|
||||
drop table if exists t1,t3,t4,t5;
|
||||
create table t1 (a int, b char(10), key a(a), key b(a,b));
|
||||
create table t1 (a int, b char(10), key a (a), key b (a,b));
|
||||
insert into t1 values
|
||||
(17,"ddd"),(18,"eee"),(19,"fff"),(19,"yyy"),
|
||||
(14,"aaa"),(15,"bbb"),(16,"ccc"),(16,"xxx"),
|
||||
(14,"aaa"),(16,"ccc"),(16,"xxx"),
|
||||
(20,"ggg"),(21,"hhh"),(22,"iii");
|
||||
handler t1 open as t2;
|
||||
handler t2 read a=(SELECT 1);
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT 1)' at line 1
|
||||
handler t2 read a first;
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a next;
|
||||
a b
|
||||
15 bbb
|
||||
16 ccc
|
||||
handler t2 read a next;
|
||||
a b
|
||||
16 ccc
|
||||
16 xxx
|
||||
handler t2 read a prev;
|
||||
a b
|
||||
15 bbb
|
||||
16 ccc
|
||||
handler t2 read a last;
|
||||
a b
|
||||
22 iii
|
||||
@ -47,7 +45,6 @@ handler t2 read a next;
|
||||
a b
|
||||
handler t2 read a=(15);
|
||||
a b
|
||||
15 bbb
|
||||
handler t2 read a=(16);
|
||||
a b
|
||||
16 ccc
|
||||
@ -84,26 +81,64 @@ a b
|
||||
handler t2 read a<(18);
|
||||
a b
|
||||
17 ddd
|
||||
handler t2 read a=(15);
|
||||
a b
|
||||
handler t2 read a>=(15);
|
||||
a b
|
||||
16 ccc
|
||||
handler t2 read a>(15);
|
||||
a b
|
||||
16 ccc
|
||||
handler t2 read a<=(15);
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a<(15);
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a=(54);
|
||||
a b
|
||||
handler t2 read a>=(54);
|
||||
a b
|
||||
handler t2 read a>(54);
|
||||
a b
|
||||
handler t2 read a<=(54);
|
||||
a b
|
||||
22 iii
|
||||
handler t2 read a<(54);
|
||||
a b
|
||||
22 iii
|
||||
handler t2 read a=(1);
|
||||
a b
|
||||
handler t2 read a>=(1);
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a>(1);
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a<=(1);
|
||||
a b
|
||||
handler t2 read a<(1);
|
||||
a b
|
||||
handler t2 read a first limit 5;
|
||||
a b
|
||||
14 aaa
|
||||
15 bbb
|
||||
16 ccc
|
||||
16 xxx
|
||||
17 ddd
|
||||
18 eee
|
||||
handler t2 read a next limit 3;
|
||||
a b
|
||||
18 eee
|
||||
19 fff
|
||||
19 yyy
|
||||
20 ggg
|
||||
handler t2 read a prev limit 10;
|
||||
a b
|
||||
19 yyy
|
||||
19 fff
|
||||
18 eee
|
||||
17 ddd
|
||||
16 xxx
|
||||
16 ccc
|
||||
15 bbb
|
||||
14 aaa
|
||||
handler t2 read a>=(16) limit 4;
|
||||
a b
|
||||
@ -142,8 +177,6 @@ a b
|
||||
handler t2 read next;
|
||||
a b
|
||||
19 fff
|
||||
handler t2 read last;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
|
||||
handler t2 close;
|
||||
handler t1 open;
|
||||
handler t1 read a next;
|
||||
@ -151,7 +184,7 @@ a b
|
||||
14 aaa
|
||||
handler t1 read a next;
|
||||
a b
|
||||
15 bbb
|
||||
16 ccc
|
||||
handler t1 close;
|
||||
handler t1 open;
|
||||
handler t1 read a prev;
|
||||
@ -199,19 +232,19 @@ a b
|
||||
set @a=3;
|
||||
execute stmt using @a;
|
||||
a b
|
||||
15 bbb
|
||||
16 ccc
|
||||
16 xxx
|
||||
17 ddd
|
||||
execute stmt using @a;
|
||||
a b
|
||||
17 ddd
|
||||
18 eee
|
||||
19 fff
|
||||
19 yyy
|
||||
execute stmt using @a;
|
||||
a b
|
||||
19 yyy
|
||||
20 ggg
|
||||
21 hhh
|
||||
22 iii
|
||||
deallocate prepare stmt;
|
||||
prepare stmt from 'handler t1 read b prev limit ?';
|
||||
execute stmt using @a;
|
||||
@ -231,7 +264,6 @@ a b
|
||||
16 ccc
|
||||
execute stmt using @a;
|
||||
a b
|
||||
15 bbb
|
||||
14 aaa
|
||||
deallocate prepare stmt;
|
||||
prepare stmt from 'handler t1 read b=(?,?)';
|
||||
@ -258,18 +290,18 @@ prepare stmt from 'handler t1 read a>=(?) where a < ? limit 5';
|
||||
set @a=15, @b=20;
|
||||
execute stmt using @a,@b;
|
||||
a b
|
||||
15 bbb
|
||||
16 ccc
|
||||
16 xxx
|
||||
17 ddd
|
||||
18 eee
|
||||
19 fff
|
||||
execute stmt using @a,@b;
|
||||
a b
|
||||
15 bbb
|
||||
16 ccc
|
||||
16 xxx
|
||||
17 ddd
|
||||
18 eee
|
||||
19 fff
|
||||
deallocate prepare stmt;
|
||||
prepare stmt from 'handler t1 read a=(?)';
|
||||
set @a=16;
|
||||
@ -292,12 +324,12 @@ deallocate prepare stmt;
|
||||
handler t1 close;
|
||||
handler t1 open as t2;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
create table t1 (a int not null);
|
||||
insert into t1 values (17);
|
||||
handler t2 read first;
|
||||
ERROR 42S02: Unknown table 't2' in HANDLER
|
||||
handler t1 open as t2;
|
||||
alter table t1 engine=MEMORY;
|
||||
alter table t1 engine=CSV;
|
||||
handler t2 read first;
|
||||
ERROR 42S02: Unknown table 't2' in HANDLER
|
||||
drop table t1;
|
||||
@ -320,7 +352,7 @@ handler t1 read first;
|
||||
a
|
||||
6
|
||||
drop table t1;
|
||||
create table t1(a int, index(a));
|
||||
create table t1(a int, index (a));
|
||||
insert into t1 values (1), (2), (3);
|
||||
handler t1 open;
|
||||
handler t1 read a=(W);
|
||||
@ -358,148 +390,6 @@ handler t1 read a=(1) where b=1;
|
||||
a b
|
||||
handler t1 close;
|
||||
drop table t1;
|
||||
drop database if exists test_test;
|
||||
create database test_test;
|
||||
use test_test;
|
||||
create table t1(table_id char(20) primary key);
|
||||
insert into t1 values ('test_test.t1');
|
||||
insert into t1 values ('');
|
||||
handler t1 open;
|
||||
handler t1 read first limit 9;
|
||||
table_id
|
||||
test_test.t1
|
||||
|
||||
create table t2(table_id char(20) primary key);
|
||||
insert into t2 values ('test_test.t2');
|
||||
insert into t2 values ('');
|
||||
handler t2 open;
|
||||
handler t2 read first limit 9;
|
||||
table_id
|
||||
test_test.t2
|
||||
|
||||
use test;
|
||||
drop table if exists t1;
|
||||
create table t1(table_id char(20) primary key);
|
||||
insert into t1 values ('test.t1');
|
||||
insert into t1 values ('');
|
||||
handler t1 open;
|
||||
ERROR 42000: Not unique table/alias: 't1'
|
||||
use test;
|
||||
handler test.t1 read first limit 9;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'read first limit 9' at line 1
|
||||
handler test_test.t1 read first limit 9;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'read first limit 9' at line 1
|
||||
handler t1 read first limit 9;
|
||||
table_id
|
||||
test_test.t1
|
||||
|
||||
handler test_test.t2 read first limit 9;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'read first limit 9' at line 1
|
||||
handler t2 read first limit 9;
|
||||
table_id
|
||||
test_test.t2
|
||||
|
||||
handler test_test.t1 close;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'close' at line 1
|
||||
handler t1 close;
|
||||
drop table test_test.t1;
|
||||
handler test_test.t2 close;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'close' at line 1
|
||||
handler t2 close;
|
||||
drop table test_test.t2;
|
||||
drop database test_test;
|
||||
use test;
|
||||
handler test.t1 close;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'close' at line 1
|
||||
handler t1 close;
|
||||
ERROR 42S02: Unknown table 't1' in HANDLER
|
||||
drop table test.t1;
|
||||
drop database if exists test_test;
|
||||
drop table if exists t1;
|
||||
drop table if exists t2;
|
||||
drop table if exists t3;
|
||||
create database test_test;
|
||||
use test_test;
|
||||
create table t1 (c1 char(20));
|
||||
insert into t1 values ('test_test.t1');
|
||||
create table t3 (c1 char(20));
|
||||
insert into t3 values ('test_test.t3');
|
||||
handler t1 open;
|
||||
handler t1 read first limit 9;
|
||||
c1
|
||||
test_test.t1
|
||||
handler t1 open h1;
|
||||
handler h1 read first limit 9;
|
||||
c1
|
||||
test_test.t1
|
||||
use test;
|
||||
create table t1 (c1 char(20));
|
||||
create table t2 (c1 char(20));
|
||||
create table t3 (c1 char(20));
|
||||
insert into t1 values ('t1');
|
||||
insert into t2 values ('t2');
|
||||
insert into t3 values ('t3');
|
||||
handler t1 open;
|
||||
ERROR 42000: Not unique table/alias: 't1'
|
||||
handler t2 open t1;
|
||||
ERROR 42000: Not unique table/alias: 't1'
|
||||
handler t3 open t1;
|
||||
ERROR 42000: Not unique table/alias: 't1'
|
||||
handler t1 read first limit 9;
|
||||
c1
|
||||
test_test.t1
|
||||
handler test.t1 close;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'close' at line 1
|
||||
handler test.t1 open h1;
|
||||
ERROR 42000: Not unique table/alias: 'h1'
|
||||
handler test_test.t1 open h1;
|
||||
ERROR 42000: Not unique table/alias: 'h1'
|
||||
handler test_test.t3 open h3;
|
||||
handler test.t1 open h2;
|
||||
handler t1 read first limit 9;
|
||||
c1
|
||||
test_test.t1
|
||||
handler h1 read first limit 9;
|
||||
c1
|
||||
test_test.t1
|
||||
handler h2 read first limit 9;
|
||||
c1
|
||||
t1
|
||||
handler h3 read first limit 9;
|
||||
c1
|
||||
test_test.t3
|
||||
handler h2 read first limit 9;
|
||||
c1
|
||||
t1
|
||||
handler test.h1 close;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'close' at line 1
|
||||
handler t1 close;
|
||||
handler h1 close;
|
||||
handler h2 close;
|
||||
handler t1 read first limit 9;
|
||||
ERROR 42S02: Unknown table 't1' in HANDLER
|
||||
handler h1 read first limit 9;
|
||||
ERROR 42S02: Unknown table 'h1' in HANDLER
|
||||
handler h2 read first limit 9;
|
||||
ERROR 42S02: Unknown table 'h2' in HANDLER
|
||||
handler h3 read first limit 9;
|
||||
c1
|
||||
test_test.t3
|
||||
handler h3 read first limit 9;
|
||||
c1
|
||||
test_test.t3
|
||||
use test_test;
|
||||
handler h3 read first limit 9;
|
||||
c1
|
||||
test_test.t3
|
||||
handler test.h3 read first limit 9;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'read first limit 9' at line 1
|
||||
handler h3 close;
|
||||
use test;
|
||||
drop table t3;
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
drop database test_test;
|
||||
create table t1 (c1 char(20));
|
||||
insert into t1 values ("t1");
|
||||
handler t1 open as h1;
|
||||
@ -624,6 +514,11 @@ no1 no2
|
||||
HANDLER t1 READ `primary` PREV;
|
||||
no1 no2
|
||||
1 275
|
||||
HANDLER t1 READ `primary` = (1, 1000);
|
||||
no1 no2
|
||||
HANDLER t1 READ `primary` NEXT;
|
||||
no1 no2
|
||||
2 6
|
||||
DROP TABLE t1;
|
||||
create table t1 (c1 int);
|
||||
insert into t1 values (14397);
|
||||
@ -644,14 +539,12 @@ ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
drop table if exists t1;
|
||||
Warnings:
|
||||
Note 1051 Unknown table 't1'
|
||||
drop table if exists t1;
|
||||
create table t1 (a int) ENGINE=MEMORY;
|
||||
create table t1 (a int not null) ENGINE=CSV;
|
||||
--> client 2
|
||||
handler t1 open;
|
||||
ERROR HY000: Table storage engine for 't1' doesn't have this option
|
||||
--> client 1
|
||||
drop table t1;
|
||||
drop table if exists t1;
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
handler t1_alias read a next;
|
||||
@ -664,50 +557,9 @@ handler t1_alias READ a next where inexistent > 0;
|
||||
ERROR 42S22: Unknown column 'inexistent' in 'field list'
|
||||
handler t1_alias close;
|
||||
drop table t1;
|
||||
drop table if exists t1,t2;
|
||||
create table t1 (c1 int);
|
||||
create table t2 (c1 int);
|
||||
insert into t1 values (1);
|
||||
insert into t2 values (2);
|
||||
connection: default
|
||||
handler t1 open;
|
||||
handler t1 read first;
|
||||
c1
|
||||
1
|
||||
connection: flush
|
||||
flush tables;;
|
||||
connection: default
|
||||
handler t2 open;
|
||||
handler t2 read first;
|
||||
c1
|
||||
2
|
||||
handler t1 read next;
|
||||
c1
|
||||
1
|
||||
handler t1 close;
|
||||
handler t2 close;
|
||||
drop table t1,t2;
|
||||
drop table if exists t1,t2;
|
||||
create table t1 (c1 int);
|
||||
connection: default
|
||||
handler t1 open;
|
||||
handler t1 read first;
|
||||
c1
|
||||
connection: flush
|
||||
rename table t1 to t2;;
|
||||
connection: default
|
||||
handler t2 open;
|
||||
handler t2 read first;
|
||||
c1
|
||||
handler t1 read next;
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
handler t1 close;
|
||||
handler t2 close;
|
||||
drop table t2;
|
||||
drop table if exists t1;
|
||||
create temporary table t1 (a int, b char(1), key a(a), key b(a,b));
|
||||
create temporary table t1 (a int, b char(1), key a (a), key b(a,b));
|
||||
insert into t1 values (0,"a"),(1,"b"),(2,"c"),(3,"d"),(4,"e"),
|
||||
(5,"f"),(6,"g"),(7,"h"),(8,"i"),(9,"j");
|
||||
(5,"f"),(6,"g"),(7,"h"),(8,"i"),(9,"j"),(9,'k');
|
||||
select a,b from t1;
|
||||
a b
|
||||
0 a
|
||||
@ -720,24 +572,25 @@ a b
|
||||
7 h
|
||||
8 i
|
||||
9 j
|
||||
9 k
|
||||
handler t1 open as a1;
|
||||
handler a1 read a first;
|
||||
a b
|
||||
0 a
|
||||
handler a1 read a next;
|
||||
handler a1 read a=(1);
|
||||
a b
|
||||
1 b
|
||||
handler a1 read a next;
|
||||
a b
|
||||
2 c
|
||||
handler a1 read a next;
|
||||
a b
|
||||
3 d
|
||||
select a,b from t1;
|
||||
ERROR HY000: Can't reopen table: 'a1'
|
||||
handler a1 read a prev;
|
||||
a b
|
||||
1 b
|
||||
2 c
|
||||
handler a1 read a prev;
|
||||
a b
|
||||
0 a
|
||||
1 b
|
||||
handler a1 read a=(6) where b="g";
|
||||
a b
|
||||
6 g
|
||||
@ -754,39 +607,28 @@ a b
|
||||
7 h
|
||||
8 i
|
||||
9 j
|
||||
9 k
|
||||
handler t1 open as a2;
|
||||
handler a2 read a first;
|
||||
a b
|
||||
0 a
|
||||
handler a2 read a last;
|
||||
handler a2 read a=(9);
|
||||
a b
|
||||
9 j
|
||||
handler a2 read a next;
|
||||
a b
|
||||
9 k
|
||||
handler a2 read a prev limit 2;
|
||||
a b
|
||||
9 j
|
||||
8 i
|
||||
handler a2 read a last;
|
||||
a b
|
||||
9 k
|
||||
handler a2 read a prev;
|
||||
a b
|
||||
8 i
|
||||
9 j
|
||||
handler a2 close;
|
||||
drop table t1;
|
||||
drop table if exists t1,t2;
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
flush tables;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
handler t1_alias close;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
handler t1_alias read first;
|
||||
a
|
||||
drop table t1;
|
||||
handler t1_alias read next;
|
||||
ERROR 42S02: Unknown table 't1_alias' in HANDLER
|
||||
create table t1 (a int);
|
||||
create temporary table t2 (a int, key(a));
|
||||
create temporary table t2 (a int, key (a));
|
||||
handler t1 open as a1;
|
||||
handler t2 open as a2;
|
||||
handler a2 read a first;
|
||||
@ -796,7 +638,7 @@ handler a2 read a next;
|
||||
ERROR 42S02: Unknown table 'a2' in HANDLER
|
||||
handler a1 close;
|
||||
ERROR 42S02: Unknown table 'a1' in HANDLER
|
||||
create table t1 (a int, key(a));
|
||||
create table t1 (a int, key (a));
|
||||
create table t2 like t1;
|
||||
handler t1 open as a1;
|
||||
handler t2 open as a2;
|
||||
@ -809,7 +651,7 @@ handler a1 close;
|
||||
ERROR 42S02: Unknown table 'a1' in HANDLER
|
||||
handler a2 close;
|
||||
drop table t1, t2;
|
||||
create table t1 (a int, key(a));
|
||||
create table t1 (a int, key (a));
|
||||
handler t1 open as a1;
|
||||
handler a1 read a first;
|
||||
a
|
||||
@ -817,7 +659,7 @@ rename table t1 to t2;
|
||||
handler a1 read a first;
|
||||
ERROR 42S02: Unknown table 'a1' in HANDLER
|
||||
drop table t2;
|
||||
create table t1 (a int, key(a));
|
||||
create table t1 (a int, key (a));
|
||||
create table t2 like t1;
|
||||
handler t1 open as a1;
|
||||
handler t2 open as a2;
|
||||
@ -832,44 +674,19 @@ handler a1 close;
|
||||
ERROR 42S02: Unknown table 'a1' in HANDLER
|
||||
handler a2 close;
|
||||
drop table t1, t2;
|
||||
create table t1 (a int, b char(1), key a(a), key b(a,b));
|
||||
insert into t1 values (0,"a"),(1,"b"),(2,"c"),(3,"d"),(4,"e"),
|
||||
(5,"f"),(6,"g"),(7,"h"),(8,"i"),(9,"j");
|
||||
handler t1 open;
|
||||
handler t1 read a first;
|
||||
a b
|
||||
0 a
|
||||
handler t1 read a next;
|
||||
a b
|
||||
1 b
|
||||
flush tables;
|
||||
handler t1 read a next;
|
||||
a b
|
||||
0 a
|
||||
handler t1 read a next;
|
||||
a b
|
||||
1 b
|
||||
flush tables with read lock;
|
||||
handler t1 read a next;
|
||||
a b
|
||||
0 a
|
||||
unlock tables;
|
||||
drop table t1;
|
||||
handler t1 read a next;
|
||||
ERROR 42S02: Unknown table 't1' in HANDLER
|
||||
drop table if exists t1;
|
||||
create table t1 (a int);
|
||||
insert into t1 values (1);
|
||||
handler t1 open;
|
||||
alter table t1 engine=memory;
|
||||
handler t1 read a next;
|
||||
ERROR HY000: Table storage engine for 't1' doesn't have this option
|
||||
handler t1 close;
|
||||
drop table t1;
|
||||
USE information_schema;
|
||||
HANDLER COLUMNS OPEN;
|
||||
ERROR HY000: Incorrect usage of HANDLER OPEN and information_schema
|
||||
USE test;
|
||||
#
|
||||
# BUG#51877 - HANDLER interface causes invalid memory read
|
||||
#
|
||||
CREATE TABLE t1(a INT, KEY (a));
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ a FIRST;
|
||||
a
|
||||
INSERT INTO t1 VALUES(1);
|
||||
HANDLER t1 READ a NEXT;
|
||||
a
|
||||
1
|
||||
HANDLER t1 CLOSE;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# BUG #46456: HANDLER OPEN + TRUNCATE + DROP (temporary) TABLE, crash
|
||||
#
|
||||
@ -886,19 +703,6 @@ HANDLER t1 READ FIRST;
|
||||
ERROR 42S02: Unknown table 't1' in HANDLER
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# BUG#51877 - HANDLER interface causes invalid memory read
|
||||
#
|
||||
CREATE TABLE t1(a INT, KEY(a));
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ a FIRST;
|
||||
a
|
||||
INSERT INTO t1 VALUES(1);
|
||||
HANDLER t1 READ a NEXT;
|
||||
a
|
||||
1
|
||||
HANDLER t1 CLOSE;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #54007: assert in ha_myisam::index_next , HANDLER
|
||||
#
|
||||
CREATE TABLE t1(a INT, b INT, PRIMARY KEY(a), KEY b(b), KEY ab(a, b));
|
||||
@ -950,12 +754,13 @@ HANDLER t1 READ b NEXT;
|
||||
a b
|
||||
HANDLER t1 READ NEXT;
|
||||
a b
|
||||
2 20
|
||||
HANDLER t1 READ NEXT;
|
||||
a b
|
||||
1 10
|
||||
HANDLER t1 READ NEXT;
|
||||
a b
|
||||
4 40
|
||||
HANDLER t1 READ NEXT;
|
||||
a b
|
||||
3 30
|
||||
HANDLER t1 READ NEXT;
|
||||
a b
|
||||
HANDLER t1 CLOSE;
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ FIRST;
|
@ -5,20 +5,14 @@
|
||||
# Last update:
|
||||
# 2006-07-31 ML test refactored (MySQL 5.1)
|
||||
# code of t/handler.test and t/innodb_handler.test united
|
||||
# main testing code put into include/handler.inc
|
||||
# main testing code put into handler.inc
|
||||
# rename t/handler.test to t/handler_myisam.test
|
||||
#
|
||||
|
||||
# should work in embedded server after mysqltest is fixed
|
||||
--source include/not_embedded.inc
|
||||
|
||||
let $engine_type= MyISAM;
|
||||
let $other_engine_type= MEMORY;
|
||||
# There is unfortunately no other all time available storage engine
|
||||
# which supports the handler interface
|
||||
let $other_handler_engine_type= MyISAM;
|
||||
|
||||
--source include/handler.inc
|
||||
--source init.inc
|
||||
--source handler.inc
|
||||
|
||||
--echo #
|
||||
--echo # BUG #46456: HANDLER OPEN + TRUNCATE + DROP (temporary) TABLE, crash
|
||||
@ -37,18 +31,6 @@ TRUNCATE t1;
|
||||
HANDLER t1 READ FIRST;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # BUG#51877 - HANDLER interface causes invalid memory read
|
||||
--echo #
|
||||
CREATE TABLE t1(a INT, KEY(a));
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ a FIRST;
|
||||
INSERT INTO t1 VALUES(1);
|
||||
HANDLER t1 READ a NEXT;
|
||||
HANDLER t1 CLOSE;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug #54007: assert in ha_myisam::index_next , HANDLER
|
||||
--echo #
|
@ -1597,7 +1597,17 @@ TRUNCATE t1;
|
||||
INSERT INTO t1 VALUES (1,'init');
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
# retry the UPDATE in case it times out the lock before con1 has time
|
||||
# to COMMIT.
|
||||
DECLARE do_retry INT DEFAULT 0;
|
||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET do_retry = 1;
|
||||
retry_loop:LOOP
|
||||
UPDATE t1 SET b = CONCAT(b, '+con2') WHERE a = 1;
|
||||
IF do_retry = 0 THEN
|
||||
LEAVE retry_loop;
|
||||
END IF;
|
||||
SET do_retry = 0;
|
||||
END LOOP;
|
||||
INSERT INTO t2 VALUES ();
|
||||
END|
|
||||
BEGIN;
|
||||
@ -2609,6 +2619,14 @@ ref NULL
|
||||
rows 3
|
||||
Extra Using index
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# ALTER TABLE IGNORE didn't ignore duplicates for unique add index
|
||||
#
|
||||
create table t1 (a int primary key, b int) engine = innodb;
|
||||
insert into t1 values (1,1),(2,1);
|
||||
alter ignore table t1 add unique `main` (b);
|
||||
drop table t1;
|
||||
#
|
||||
End of 5.1 tests
|
||||
#
|
||||
# Test for bug #39932 "create table fails if column for FK is in different
|
||||
|
@ -12,6 +12,7 @@ create table C(id int not null auto_increment primary key, f1 int not null, fore
|
||||
insert into A values(1), (2);
|
||||
|
||||
--disable_query_log
|
||||
begin;
|
||||
let $i=257;
|
||||
while ($i)
|
||||
{
|
||||
@ -24,6 +25,7 @@ while ($i)
|
||||
insert into C(f1) values(2);
|
||||
dec $i;
|
||||
}
|
||||
commit;
|
||||
--enable_query_log
|
||||
|
||||
# Following Deletes should not report error
|
||||
|
@ -840,6 +840,17 @@ CREATE INDEX b ON t1(a,b,c,d);
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # ALTER TABLE IGNORE didn't ignore duplicates for unique add index
|
||||
--echo #
|
||||
|
||||
create table t1 (a int primary key, b int) engine = innodb;
|
||||
insert into t1 values (1,1),(2,1);
|
||||
alter ignore table t1 add unique `main` (b);
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
--echo #
|
||||
|
@ -1597,7 +1597,17 @@ TRUNCATE t1;
|
||||
INSERT INTO t1 VALUES (1,'init');
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
# retry the UPDATE in case it times out the lock before con1 has time
|
||||
# to COMMIT.
|
||||
DECLARE do_retry INT DEFAULT 0;
|
||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET do_retry = 1;
|
||||
retry_loop:LOOP
|
||||
UPDATE t1 SET b = CONCAT(b, '+con2') WHERE a = 1;
|
||||
IF do_retry = 0 THEN
|
||||
LEAVE retry_loop;
|
||||
END IF;
|
||||
SET do_retry = 0;
|
||||
END LOOP;
|
||||
INSERT INTO t2 VALUES ();
|
||||
END|
|
||||
BEGIN;
|
||||
|
@ -12,6 +12,7 @@ create table C(id int not null auto_increment primary key, f1 int not null, fore
|
||||
insert into A values(1), (2);
|
||||
|
||||
--disable_query_log
|
||||
begin;
|
||||
let $i=257;
|
||||
while ($i)
|
||||
{
|
||||
@ -24,6 +25,7 @@ while ($i)
|
||||
insert into C(f1) values(2);
|
||||
dec $i;
|
||||
}
|
||||
commit;
|
||||
--enable_query_log
|
||||
|
||||
# Following Deletes should not report error
|
||||
|
@ -1,6 +1,6 @@
|
||||
select * from INFORMATION_SCHEMA.ENGINES where ENGINE="ARIA";
|
||||
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
||||
Aria YES Crash-safe tables with MyISAM heritage YES NO NO
|
||||
Aria YES Crash-safe tables with MyISAM heritage NO NO NO
|
||||
set global storage_engine=aria;
|
||||
set session storage_engine=aria;
|
||||
set global aria_page_checksum=0;
|
||||
@ -2624,3 +2624,19 @@ KEY (v3)
|
||||
INSERT INTO t1 ( f1 , f2 , f3 , f4 ) SELECT f1 , f4 , f1 , f4 FROM t1;
|
||||
DELETE FROM t1;
|
||||
drop table t1;
|
||||
create table t1 (a int not null primary key, b blob) engine=maria transactional=1;
|
||||
insert into t1 values(1,repeat('a',8000));
|
||||
insert into t1 values(2,repeat('b',8000));
|
||||
insert into t1 values(3,repeat('c',8000));
|
||||
flush tables;
|
||||
delete from t1 where a>1;
|
||||
insert into t1 values(1,repeat('d',8000*3));
|
||||
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
||||
flush tables;
|
||||
check table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
repair table t1 extended;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair status OK
|
||||
drop table t1;
|
||||
|
@ -1,6 +1,6 @@
|
||||
select * from INFORMATION_SCHEMA.ENGINES where ENGINE="ARIA";
|
||||
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
||||
Aria YES Crash-safe tables with MyISAM heritage YES NO NO
|
||||
Aria YES Crash-safe tables with MyISAM heritage NO NO NO
|
||||
set global storage_engine=aria;
|
||||
set session storage_engine=aria;
|
||||
set global aria_page_checksum=0;
|
||||
|
@ -6,6 +6,7 @@
|
||||
# Binary must be compiled with debug for crash to occur
|
||||
--source include/have_debug.inc
|
||||
--source include/have_maria.inc
|
||||
--source include/long_test.inc
|
||||
|
||||
set global aria_log_file_size=4294967295;
|
||||
let $MARIA_LOG=.;
|
||||
|
@ -1910,6 +1910,24 @@ INSERT INTO t1 ( f1 , f2 , f3 , f4 ) SELECT f1 , f4 , f1 , f4 FROM t1;
|
||||
DELETE FROM t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test of problem where REPAIR finds old deleted rows.
|
||||
#
|
||||
|
||||
create table t1 (a int not null primary key, b blob) engine=maria transactional=1;
|
||||
insert into t1 values(1,repeat('a',8000));
|
||||
insert into t1 values(2,repeat('b',8000));
|
||||
insert into t1 values(3,repeat('c',8000));
|
||||
flush tables;
|
||||
delete from t1 where a>1;
|
||||
--error 1062
|
||||
insert into t1 values(1,repeat('d',8000*3));
|
||||
flush tables;
|
||||
check table t1;
|
||||
# This failed by finding 2 extra rows.
|
||||
repair table t1 extended;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# End of test
|
||||
#
|
||||
|
@ -22,6 +22,8 @@
|
||||
# any of the variables.
|
||||
#
|
||||
|
||||
--source include/long_test.inc
|
||||
|
||||
#------------------------------------------------------------------------------#
|
||||
# General not engine specific settings and requirements
|
||||
|
||||
|
@ -22,6 +22,8 @@
|
||||
# any of the variables.
|
||||
#
|
||||
|
||||
--source include/long_test.inc
|
||||
|
||||
#------------------------------------------------------------------------------#
|
||||
# General not engine specific settings and requirements
|
||||
|
||||
|
@ -22,6 +22,8 @@
|
||||
# any of the variables.
|
||||
#
|
||||
|
||||
--source include/long_test.inc
|
||||
|
||||
#------------------------------------------------------------------------------#
|
||||
# General not engine specific settings and requirements
|
||||
|
||||
|
@ -22,6 +22,8 @@
|
||||
# any of the variables.
|
||||
#
|
||||
|
||||
--source include/long_test.inc
|
||||
|
||||
#------------------------------------------------------------------------------#
|
||||
# General not engine specific settings and requirements
|
||||
|
||||
|
@ -22,6 +22,8 @@
|
||||
# any of the variables.
|
||||
#
|
||||
|
||||
--source include/long_test.inc
|
||||
|
||||
#------------------------------------------------------------------------------#
|
||||
# General not engine specific settings and requirements
|
||||
|
||||
|
@ -22,6 +22,8 @@
|
||||
# any of the variables.
|
||||
#
|
||||
|
||||
--source include/long_test.inc
|
||||
|
||||
#------------------------------------------------------------------------------#
|
||||
# General not engine specific settings and requirements
|
||||
|
||||
|
@ -38,6 +38,7 @@ STOP SLAVE SQL_THREAD;
|
||||
[ On Slave1 ]
|
||||
# To resume slave SQL thread
|
||||
SET DEBUG_SYNC= 'now SIGNAL signal.continue';
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR signal.continued';
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
|
||||
[ On Slave ]
|
||||
@ -63,6 +64,7 @@ STOP SLAVE SQL_THREAD;
|
||||
[ On Slave1 ]
|
||||
# To resume slave SQL thread
|
||||
SET DEBUG_SYNC= 'now SIGNAL signal.continue';
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR signal.continued';
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
|
||||
[ On Slave ]
|
||||
@ -89,6 +91,7 @@ STOP SLAVE SQL_THREAD;
|
||||
[ On Slave1 ]
|
||||
# To resume slave SQL thread
|
||||
SET DEBUG_SYNC= 'now SIGNAL signal.continue';
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR signal.continued';
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
|
||||
[ On Slave ]
|
||||
@ -115,6 +118,7 @@ STOP SLAVE SQL_THREAD;
|
||||
[ On Slave1 ]
|
||||
# To resume slave SQL thread
|
||||
SET DEBUG_SYNC= 'now SIGNAL signal.continue';
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR signal.continued';
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
|
||||
[ On Slave ]
|
||||
|
@ -7,5 +7,6 @@
|
||||
########################################################
|
||||
-- source include/not_ndb_default.inc
|
||||
-- source include/have_innodb.inc
|
||||
-- source include/long_test.inc
|
||||
let $engine_type=innodb;
|
||||
-- source extra/rpl_tests/rpl_deadlock.test
|
||||
|
@ -10,6 +10,7 @@
|
||||
-- source include/have_binlog_format_row.inc
|
||||
# Slow test, don't run during staging part
|
||||
-- source include/not_staging.inc
|
||||
--source include/long_test.inc
|
||||
-- source include/master-slave.inc
|
||||
|
||||
let $engine_type=INNODB;
|
||||
|
@ -13,9 +13,9 @@
|
||||
# Change: Syntax changed
|
||||
################################################################################
|
||||
|
||||
--error ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN
|
||||
--error ER_UNSUPPORTED_ENGINE_FOR_VIRTUAL_COLUMNS
|
||||
create table t1 (a int, b int as (a+1));
|
||||
create table t1 (a int);
|
||||
--error ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN
|
||||
create table t1 (a int not null);
|
||||
--error ER_UNSUPPORTED_ENGINE_FOR_VIRTUAL_COLUMNS
|
||||
alter table t1 add column b int as (a+1);
|
||||
drop table t1;
|
||||
|
@ -1,7 +1,7 @@
|
||||
SET @@session.storage_engine = 'archive';
|
||||
create table t1 (a int, b int as (a+1));
|
||||
ERROR HY000: 'Specified storage engine' is not yet supported for computed columns
|
||||
create table t1 (a int);
|
||||
ERROR HY000: ARCHIVE storage engine does not support computed columns
|
||||
create table t1 (a int not null);
|
||||
alter table t1 add column b int as (a+1);
|
||||
ERROR HY000: 'Specified storage engine' is not yet supported for computed columns
|
||||
ERROR HY000: ARCHIVE storage engine does not support computed columns
|
||||
drop table t1;
|
||||
|
@ -1,7 +1,7 @@
|
||||
SET @@session.storage_engine = 'blackhole';
|
||||
create table t1 (a int, b int as (a+1));
|
||||
ERROR HY000: 'Specified storage engine' is not yet supported for computed columns
|
||||
create table t1 (a int);
|
||||
ERROR HY000: BLACKHOLE storage engine does not support computed columns
|
||||
create table t1 (a int not null);
|
||||
alter table t1 add column b int as (a+1);
|
||||
ERROR HY000: 'Specified storage engine' is not yet supported for computed columns
|
||||
ERROR HY000: BLACKHOLE storage engine does not support computed columns
|
||||
drop table t1;
|
||||
|
@ -1,7 +1,7 @@
|
||||
SET @@session.storage_engine = 'CSV';
|
||||
create table t1 (a int, b int as (a+1));
|
||||
ERROR HY000: 'Specified storage engine' is not yet supported for computed columns
|
||||
ERROR HY000: CSV storage engine does not support computed columns
|
||||
create table t1 (a int not null);
|
||||
alter table t1 add column b int as (a+1);
|
||||
ERROR HY000: 'Specified storage engine' is not yet supported for computed columns
|
||||
ERROR HY000: CSV storage engine does not support computed columns
|
||||
drop table t1;
|
||||
|
@ -1,7 +1,7 @@
|
||||
SET @@session.storage_engine = 'memory';
|
||||
create table t1 (a int, b int as (a+1));
|
||||
ERROR HY000: 'Specified storage engine' is not yet supported for computed columns
|
||||
create table t1 (a int);
|
||||
ERROR HY000: MEMORY storage engine does not support computed columns
|
||||
create table t1 (a int not null);
|
||||
alter table t1 add column b int as (a+1);
|
||||
ERROR HY000: 'Specified storage engine' is not yet supported for computed columns
|
||||
ERROR HY000: MEMORY storage engine does not support computed columns
|
||||
drop table t1;
|
||||
|
@ -4,5 +4,5 @@ create table t2 (a int, b int as (a % 10));
|
||||
insert into t1 values (1,default);
|
||||
insert into t2 values (2,default);
|
||||
create table t3 (a int, b int as (a % 10)) engine=MERGE UNION=(t1,t2);
|
||||
ERROR HY000: 'Specified storage engine' is not yet supported for computed columns
|
||||
ERROR HY000: MRG_MYISAM storage engine does not support computed columns
|
||||
drop table t1,t2;
|
||||
|
@ -76,7 +76,7 @@ drop table t1;
|
||||
# Case 7. ALTER. Modify virtual stored -> virtual non-stored
|
||||
create table t1 (a int, b int as (a % 2) persistent);
|
||||
alter table t1 modify b int as (a % 2);
|
||||
ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns
|
||||
ERROR HY000: This is not yet supported for computed columns
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -87,7 +87,7 @@ drop table t1;
|
||||
# Case 8. ALTER. Modify virtual non-stored -> virtual stored
|
||||
create table t1 (a int, b int as (a % 2));
|
||||
alter table t1 modify b int as (a % 2) persistent;
|
||||
ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns
|
||||
ERROR HY000: This is not yet supported for computed columns
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
|
@ -76,7 +76,7 @@ drop table t1;
|
||||
# Case 7. ALTER. Modify virtual stored -> virtual non-stored
|
||||
create table t1 (a int, b int as (a % 2) persistent);
|
||||
alter table t1 modify b int as (a % 2);
|
||||
ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns
|
||||
ERROR HY000: This is not yet supported for computed columns
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -87,7 +87,7 @@ drop table t1;
|
||||
# Case 8. ALTER. Modify virtual non-stored -> virtual stored
|
||||
create table t1 (a int, b int as (a % 2));
|
||||
alter table t1 modify b int as (a % 2) persistent;
|
||||
ERROR HY000: 'Changing the STORED status' is not yet supported for computed columns
|
||||
ERROR HY000: This is not yet supported for computed columns
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
|
@ -27,7 +27,7 @@
|
||||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_xtradb.inc
|
||||
SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
#------------------------------------------------------------------------------#
|
||||
|
@ -32,7 +32,7 @@
|
||||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_xtradb.inc
|
||||
eval SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
let $skip_full_text_checks = 1;
|
||||
|
@ -33,7 +33,7 @@
|
||||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_xtradb.inc
|
||||
eval SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
##### Workarounds for known open engine specific bugs
|
||||
|
@ -41,13 +41,7 @@ SET @@session.storage_engine = 'CSV';
|
||||
# Execute the tests to be applied to all storage engines
|
||||
|
||||
#------------------------------------------------------------------------------#
|
||||
# Execute storage engine specific tests
|
||||
--error ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN
|
||||
create table t1 (a int, b int as (a+1));
|
||||
create table t1 (a int not null);
|
||||
--error ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN
|
||||
alter table t1 add column b int as (a+1);
|
||||
drop table t1;
|
||||
--source suite/vcol/inc/vcol_unsupported_storage_engines.inc
|
||||
|
||||
#------------------------------------------------------------------------------#
|
||||
# Cleanup
|
||||
|
@ -33,7 +33,7 @@
|
||||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_xtradb.inc
|
||||
eval SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
##### Workarounds for known open engine specific bugs
|
||||
|
@ -33,7 +33,7 @@
|
||||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_xtradb.inc
|
||||
eval SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
##### Workarounds for known open engine specific bugs
|
||||
|
@ -33,7 +33,7 @@
|
||||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_xtradb.inc
|
||||
eval SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
##### Workarounds for known open engine specific bugs
|
||||
|
@ -48,7 +48,7 @@ create table t1 (a int, b int as (a % 10));
|
||||
create table t2 (a int, b int as (a % 10));
|
||||
insert into t1 values (1,default);
|
||||
insert into t2 values (2,default);
|
||||
--error ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN
|
||||
--error ER_UNSUPPORTED_ENGINE_FOR_VIRTUAL_COLUMNS
|
||||
create table t3 (a int, b int as (a % 10)) engine=MERGE UNION=(t1,t2);
|
||||
drop table t1,t2;
|
||||
|
||||
|
@ -35,7 +35,7 @@
|
||||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_xtradb.inc
|
||||
eval SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
##### Workarounds for known open engine specific bugs
|
||||
|
@ -34,7 +34,7 @@
|
||||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_xtradb.inc
|
||||
eval SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
##### Workarounds for known open engine specific bugs
|
||||
|
@ -33,7 +33,7 @@
|
||||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_xtradb.inc
|
||||
eval SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
##### Workarounds for known open engine specific bugs
|
||||
|
@ -32,7 +32,7 @@
|
||||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_xtradb.inc
|
||||
SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
##### Workarounds for known open engine specific bugs
|
||||
|
@ -34,7 +34,7 @@
|
||||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_xtradb.inc
|
||||
eval SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
##### Workarounds for known open engine specific bugs
|
||||
|
@ -33,7 +33,7 @@
|
||||
|
||||
##### Storage engine to be tested
|
||||
# Set the session storage engine
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_xtradb.inc
|
||||
eval SET @@session.storage_engine = 'InnoDB';
|
||||
|
||||
##### Workarounds for known open engine specific bugs
|
||||
|
@ -1630,6 +1630,11 @@ SET @@join_buffer_size= @save_join_buffer_size;
|
||||
# BUG#47012 archive tables are not upgradeable, and server crashes on any access
|
||||
#
|
||||
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
||||
|
||||
# Remove files to handle possible restart of test
|
||||
flush tables;
|
||||
remove_files_wildcard $MYSQLD_DATADIR/test t1.*;
|
||||
|
||||
copy_file std_data/bug47012.frm $MYSQLD_DATADIR/test/t1.frm;
|
||||
copy_file std_data/bug47012.ARZ $MYSQLD_DATADIR/test/t1.ARZ;
|
||||
copy_file std_data/bug47012.ARM $MYSQLD_DATADIR/test/t1.ARM;
|
||||
|
@ -352,6 +352,19 @@ connection pcon4;
|
||||
select user(), current_user();
|
||||
disconnect pcon4;
|
||||
|
||||
#
|
||||
# lpbug#683112 Maria 5.2 incorrectly reports "(using password: NO)"
|
||||
# even when password is specified
|
||||
#
|
||||
# test "access denied" error for nonexisting user with and without a password
|
||||
#
|
||||
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
|
||||
--error ER_ACCESS_DENIED_ERROR
|
||||
connect(pcon5,localhost,mysqltest_nouser,newpw,,$MASTER_MYPORT,);
|
||||
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
|
||||
--error ER_ACCESS_DENIED_ERROR
|
||||
connect(pcon5,localhost,mysqltest_nouser,,,$MASTER_MYPORT,);
|
||||
|
||||
connection default;
|
||||
DROP USER mysqltest_up1@'%';
|
||||
DROP USER mysqltest_up2@'%';
|
||||
|
@ -71,7 +71,7 @@ SELECT COUNT(*) FROM
|
||||
(SELECT * FROM t1 FORCE INDEX(primary,idx)
|
||||
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
||||
SELECT COUNT(*) FROM
|
||||
(SELECT * FROM t1
|
||||
(SELECT * FROM t1 FORCE INDEX(primary,idx)
|
||||
WHERE a BETWEEN 2 AND 7 OR pk=1000000) AS t;
|
||||
|
||||
--replace_column 9 #
|
||||
|
@ -1,3 +1,5 @@
|
||||
--source include/long_test.inc
|
||||
|
||||
#
|
||||
# test of left outer join
|
||||
#
|
||||
|
@ -484,22 +484,6 @@ unlock tables;
|
||||
connection default;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#25856 HANDLER table OPEN in one connection lock DROP TABLE in another one
|
||||
#
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
create table t1 (a int) ENGINE=MEMORY;
|
||||
--echo --> client 2
|
||||
connection locker;
|
||||
--error ER_ILLEGAL_HA
|
||||
handler t1 open;
|
||||
--echo --> client 1
|
||||
connection default;
|
||||
drop table t1;
|
||||
|
||||
|
||||
# Disconnect sessions used in many subtests above
|
||||
disconnect locker;
|
||||
disconnect reader;
|
||||
|
@ -1,3 +1,5 @@
|
||||
--source include/long_test.inc
|
||||
|
||||
#
|
||||
# Test of update statement that uses many tables.
|
||||
#
|
||||
|
@ -117,7 +117,17 @@ INSERT INTO t1 VALUES (1,'init');
|
||||
DELIMITER |;
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
# retry the UPDATE in case it times out the lock before con1 has time
|
||||
# to COMMIT.
|
||||
DECLARE do_retry INT DEFAULT 0;
|
||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET do_retry = 1;
|
||||
retry_loop:LOOP
|
||||
UPDATE t1 SET b = CONCAT(b, '+con2') WHERE a = 1;
|
||||
IF do_retry = 0 THEN
|
||||
LEAVE retry_loop;
|
||||
END IF;
|
||||
SET do_retry = 0;
|
||||
END LOOP;
|
||||
INSERT INTO t2 VALUES ();
|
||||
END|
|
||||
DELIMITER ;|
|
||||
|
@ -4,6 +4,7 @@
|
||||
-- source include/have_pool_of_threads.inc
|
||||
# Slow test, don't run during staging part
|
||||
-- source include/not_staging.inc
|
||||
-- source include/long_test.inc
|
||||
-- source include/common-tests.inc
|
||||
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
-- source include/have_query_cache.inc
|
||||
-- source include/long_test.inc
|
||||
|
||||
#
|
||||
# Tests with query cache
|
||||
|
@ -4230,6 +4230,21 @@ deallocate prepare stmt1;
|
||||
|
||||
drop table t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # Bug LP#693935/#58727: Assertion failure with
|
||||
--echo # a single row subquery returning more than one row
|
||||
--echo #
|
||||
|
||||
create table t1 (a char(1) charset utf8);
|
||||
insert into t1 values ('a'), ('b');
|
||||
create table t2 (a binary(1));
|
||||
insert into t2 values ('x'), ('y');
|
||||
|
||||
-- error ER_SUBQUERY_NO_1_ROW
|
||||
select * from t2 where a=(select a from t1) and a='x';
|
||||
|
||||
drop table t1,t2;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
--echo #
|
||||
|
@ -158,15 +158,13 @@ static int check_lock(struct st_lock_list *list, const char* lock_type,
|
||||
{
|
||||
THR_LOCK_DATA *data,**prev;
|
||||
uint count=0;
|
||||
THR_LOCK_OWNER *UNINIT_VAR(first_owner);
|
||||
|
||||
prev= &list->data;
|
||||
if (list->data)
|
||||
{
|
||||
enum thr_lock_type last_lock_type=list->data->type;
|
||||
enum thr_lock_type last_lock_type= list->data->type;
|
||||
THR_LOCK_OWNER *first_owner= list->data->owner;
|
||||
|
||||
if (same_owner && list->data)
|
||||
first_owner= list->data->owner;
|
||||
for (data=list->data; data && count++ < MAX_LOCKS ; data=data->next)
|
||||
{
|
||||
if (data->type != last_lock_type)
|
||||
@ -184,8 +182,8 @@ static int check_lock(struct st_lock_list *list, const char* lock_type,
|
||||
last_lock_type != TL_WRITE_CONCURRENT_INSERT)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"Warning: Found locks from different threads in %s: %s\n",
|
||||
lock_type,where);
|
||||
"Warning: Found locks from different threads in %s at '%s'. org_lock_type: %d last_lock_type: %d new_lock_type: %d\n",
|
||||
lock_type, where, list->data->type, last_lock_type, data->type);
|
||||
return 1;
|
||||
}
|
||||
if (no_cond && data->cond)
|
||||
|
@ -375,6 +375,7 @@ void *tree_search_key(TREE *tree, const void *key,
|
||||
case HA_READ_KEY_EXACT:
|
||||
case HA_READ_KEY_OR_NEXT:
|
||||
case HA_READ_BEFORE_KEY:
|
||||
case HA_READ_KEY_OR_PREV:
|
||||
last_equal_element= parents;
|
||||
cmp= 1;
|
||||
break;
|
||||
@ -418,6 +419,9 @@ void *tree_search_key(TREE *tree, const void *key,
|
||||
case HA_READ_BEFORE_KEY:
|
||||
*last_pos= last_right_step_parent;
|
||||
break;
|
||||
case HA_READ_KEY_OR_PREV:
|
||||
*last_pos= last_equal_element ? last_equal_element : last_right_step_parent;
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ $opt_port=0;
|
||||
$exit_status=0;
|
||||
|
||||
GetOptions(
|
||||
"e|engine|type=s" => \$opt_type,
|
||||
"e|engine|type=s" => \$opt_engine,
|
||||
"f|force" => \$opt_force,
|
||||
"help|?" => \$opt_help,
|
||||
"h|host=s" => \$opt_host,
|
||||
|
@ -1978,7 +1978,7 @@ static int send_change_user_packet(MCPVIO_EXT *mpvio,
|
||||
char *buff, *end;
|
||||
int res= 1;
|
||||
|
||||
buff= my_alloca(USERNAME_LENGTH + data_len + 1 + NAME_LEN + 2 + NAME_LEN);
|
||||
buff= my_alloca(USERNAME_LENGTH+1 + data_len+1 + NAME_LEN+1 + 2 + NAME_LEN+1);
|
||||
|
||||
end= strmake(buff, mysql->user, USERNAME_LENGTH) + 1;
|
||||
|
||||
|
@ -2434,7 +2434,7 @@ bool ha_partition::get_from_handler_file(const char *name, MEM_ROOT *mem_root)
|
||||
for (i= 0; i < m_tot_parts; i++)
|
||||
m_engine_array[i]= ha_lock_engine(NULL, engine_array[i]);
|
||||
|
||||
my_afree((gptr) engine_array);
|
||||
my_afree(engine_array);
|
||||
|
||||
if (!m_file && create_handlers(mem_root))
|
||||
{
|
||||
@ -2444,7 +2444,7 @@ bool ha_partition::get_from_handler_file(const char *name, MEM_ROOT *mem_root)
|
||||
DBUG_RETURN(FALSE);
|
||||
|
||||
err3:
|
||||
my_afree((gptr) engine_array);
|
||||
my_afree(engine_array);
|
||||
err2:
|
||||
my_free(file_buffer, MYF(0));
|
||||
err1:
|
||||
@ -4643,19 +4643,6 @@ int ha_partition::handle_unordered_scan_next_partition(uchar * buf)
|
||||
break;
|
||||
case partition_index_first:
|
||||
DBUG_PRINT("info", ("index_first on partition %d", i));
|
||||
/*
|
||||
MyISAM engine can fail if we call index_first() when indexes disabled
|
||||
that happens if the table is empty.
|
||||
Here we use file->stats.records instead of file->records() because
|
||||
file->records() is supposed to return an EXACT count, and it can be
|
||||
possibly slow. We don't need an exact number, an approximate one- from
|
||||
the last ::info() call - is sufficient.
|
||||
*/
|
||||
if (file->stats.records == 0)
|
||||
{
|
||||
error= HA_ERR_END_OF_FILE;
|
||||
break;
|
||||
}
|
||||
error= file->ha_index_first(buf);
|
||||
break;
|
||||
case partition_index_first_unordered:
|
||||
@ -4749,36 +4736,10 @@ int ha_partition::handle_ordered_index_scan(uchar *buf, bool reverse_order)
|
||||
m_start_key.flag);
|
||||
break;
|
||||
case partition_index_first:
|
||||
/*
|
||||
MyISAM engine can fail if we call index_first() when indexes disabled
|
||||
that happens if the table is empty.
|
||||
Here we use file->stats.records instead of file->records() because
|
||||
file->records() is supposed to return an EXACT count, and it can be
|
||||
possibly slow. We don't need an exact number, an approximate one- from
|
||||
the last ::info() call - is sufficient.
|
||||
*/
|
||||
if (file->stats.records == 0)
|
||||
{
|
||||
error= HA_ERR_END_OF_FILE;
|
||||
break;
|
||||
}
|
||||
error= file->ha_index_first(rec_buf_ptr);
|
||||
reverse_order= FALSE;
|
||||
break;
|
||||
case partition_index_last:
|
||||
/*
|
||||
MyISAM engine can fail if we call index_last() when indexes disabled
|
||||
that happens if the table is empty.
|
||||
Here we use file->stats.records instead of file->records() because
|
||||
file->records() is supposed to return an EXACT count, and it can be
|
||||
possibly slow. We don't need an exact number, an approximate one- from
|
||||
the last ::info() call - is sufficient.
|
||||
*/
|
||||
if (file->stats.records == 0)
|
||||
{
|
||||
error= HA_ERR_END_OF_FILE;
|
||||
break;
|
||||
}
|
||||
error= file->ha_index_last(rec_buf_ptr);
|
||||
reverse_order= TRUE;
|
||||
break;
|
||||
|
@ -253,7 +253,6 @@ public:
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
virtual void change_table_ptr(TABLE *table_arg, TABLE_SHARE *share);
|
||||
bool check_if_supported_virtual_columns(void) { return TRUE;}
|
||||
virtual bool check_if_incompatible_data(HA_CREATE_INFO *create_info,
|
||||
uint table_changes);
|
||||
private:
|
||||
|
@ -2737,7 +2737,10 @@ void handler::print_error(int error, myf errflag)
|
||||
textno=ER_DUP_UNIQUE;
|
||||
break;
|
||||
case HA_ERR_RECORD_CHANGED:
|
||||
/*
|
||||
This is not fatal error when using HANDLER interface
|
||||
SET_FATAL_ERROR;
|
||||
*/
|
||||
textno=ER_CHECKREAD;
|
||||
break;
|
||||
case HA_ERR_CRASHED:
|
||||
|
@ -137,6 +137,7 @@
|
||||
#define HA_BINLOG_STMT_CAPABLE (LL(1) << 35)
|
||||
/* Has automatic checksums and uses the new checksum format */
|
||||
#define HA_HAS_NEW_CHECKSUM (LL(1) << 36)
|
||||
#define HA_CAN_VIRTUAL_COLUMNS (LL(1) << 37)
|
||||
|
||||
#define HA_MRR_CANT_SORT (LL(1) << 37)
|
||||
#define HA_RECORD_MUST_BE_CLEAN_ON_WRITE (LL(1) << 38)
|
||||
@ -2003,6 +2004,7 @@ public:
|
||||
{ return(NULL);} /* gets tablespace name from handler */
|
||||
/** used in ALTER TABLE; 1 if changing storage engine is allowed */
|
||||
virtual bool can_switch_engines() { return 1; }
|
||||
virtual int can_continue_handler_scan() { return 0; }
|
||||
/** used in REPLACE; is > 0 if table is referred by a FOREIGN KEY */
|
||||
virtual int get_foreign_key_list(THD *thd, List<FOREIGN_KEY_INFO> *f_key_list)
|
||||
{ return 0; }
|
||||
|
11
sql/item.h
11
sql/item.h
@ -584,10 +584,17 @@ public:
|
||||
virtual void fix_after_pullout(st_select_lex *new_parent, Item **ref) {};
|
||||
|
||||
/*
|
||||
should be used in case where we are sure that we do not need
|
||||
This method should be used in case where we are sure that we do not need
|
||||
complete fix_fields() procedure.
|
||||
Usually this method is used by the optimizer when it has to create a new
|
||||
item out of other already fixed items. For example, if the optimizer has
|
||||
to create a new Item_func for an inferred equality whose left and right
|
||||
parts are already fixed items. In some cases the optimizer cannot use
|
||||
directly fixed items as the arguments of the created functional item,
|
||||
but rather uses intermediate type conversion items. Then the method is
|
||||
supposed to be applied recursively.
|
||||
*/
|
||||
inline void quick_fix_field() { fixed= 1; }
|
||||
virtual inline void quick_fix_field() { fixed= 1; }
|
||||
/* Function returns 1 on overflow and -1 on fatal errors */
|
||||
int save_in_field_no_warnings(Field *field, bool no_conversions);
|
||||
virtual int save_in_field(Field *field, bool no_conversions);
|
||||
|
@ -205,6 +205,21 @@ Item_func::fix_fields(THD *thd, Item **ref)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
Item_func::quick_fix_field()
|
||||
{
|
||||
Item **arg,**arg_end;
|
||||
if (arg_count)
|
||||
{
|
||||
for (arg=args, arg_end=args+arg_count; arg != arg_end ; arg++)
|
||||
{
|
||||
if (!(*arg)->fixed)
|
||||
(*arg)->quick_fix_field();
|
||||
}
|
||||
}
|
||||
fixed= 1;
|
||||
}
|
||||
|
||||
|
||||
void Item_func::fix_after_pullout(st_select_lex *new_parent, Item **ref)
|
||||
{
|
||||
|
@ -118,6 +118,7 @@ public:
|
||||
Item_func(THD *thd, Item_func *item);
|
||||
bool fix_fields(THD *, Item **ref);
|
||||
void fix_after_pullout(st_select_lex *new_parent, Item **ref);
|
||||
void quick_fix_field();
|
||||
table_map used_tables() const;
|
||||
table_map not_null_tables() const;
|
||||
void update_used_tables();
|
||||
|
@ -84,7 +84,6 @@
|
||||
|
||||
extern HASH open_cache;
|
||||
|
||||
static void reset_lock_data(MYSQL_LOCK *sql_lock, bool unlock);
|
||||
static int lock_external(THD *thd, TABLE **table,uint count);
|
||||
static int unlock_external(THD *thd, TABLE **table,uint count);
|
||||
static void print_lock_error(int error, const char *);
|
||||
@ -978,7 +977,7 @@ MYSQL_LOCK *get_lock_data(THD *thd, TABLE **table_ptr, uint count,
|
||||
get_store_lock().
|
||||
*/
|
||||
|
||||
static void reset_lock_data(MYSQL_LOCK *sql_lock, bool unlock)
|
||||
void reset_lock_data(MYSQL_LOCK *sql_lock, bool unlock)
|
||||
{
|
||||
THR_LOCK_DATA **ldata;
|
||||
THR_LOCK_DATA **ldata_end;
|
||||
|
@ -2213,6 +2213,7 @@ bool mysql_lock_abort_for_thread(THD *thd, TABLE *table);
|
||||
MYSQL_LOCK *mysql_lock_merge(MYSQL_LOCK *a,MYSQL_LOCK *b);
|
||||
TABLE_LIST *mysql_lock_have_duplicate(THD *thd, TABLE_LIST *needle,
|
||||
TABLE_LIST *haystack);
|
||||
void reset_lock_data(MYSQL_LOCK *sql_lock, bool unlock);
|
||||
bool lock_global_read_lock(THD *thd);
|
||||
void unlock_global_read_lock(THD *thd);
|
||||
bool wait_if_global_read_lock(THD *thd, bool abort_on_refresh,
|
||||
|
@ -10915,6 +10915,7 @@ int QUICK_GROUP_MIN_MAX_SELECT::next_min_in_range()
|
||||
/* Compare the found key with max_key. */
|
||||
int cmp_res= key_cmp(index_info->key_part, max_key,
|
||||
real_prefix_len + min_max_arg_len);
|
||||
my_afree(max_key);
|
||||
/*
|
||||
The key is outside of the range if:
|
||||
the interval is open and the key is equal to the maximum boundry
|
||||
@ -11040,6 +11041,7 @@ int QUICK_GROUP_MIN_MAX_SELECT::next_max_in_range()
|
||||
/* Compare the found key with min_key. */
|
||||
int cmp_res= key_cmp(index_info->key_part, min_key,
|
||||
real_prefix_len + min_max_arg_len);
|
||||
my_afree(min_key);
|
||||
/*
|
||||
The key is outside of the range if:
|
||||
the interval is open and the key is equal to the minimum boundry
|
||||
|
@ -6017,7 +6017,7 @@ ER_ONLY_INTEGERS_ALLOWED
|
||||
eng "Only integers allowed as number here"
|
||||
ger "An dieser Stelle sind nur Ganzzahlen zulässig"
|
||||
ER_UNSUPORTED_LOG_ENGINE
|
||||
eng "This storage engine cannot be used for log tables""
|
||||
eng "This storage engine cannot be used for log tables"
|
||||
ger "Diese Speicher-Engine kann für Logtabellen nicht verwendet werden"
|
||||
ER_BAD_LOG_STATEMENT
|
||||
eng "You cannot '%s' a log table if logging is enabled"
|
||||
@ -6236,13 +6236,15 @@ ER_WARNING_NON_DEFAULT_VALUE_FOR_VIRTUAL_COLUMN
|
||||
eng "The value specified for computed column '%s' in table '%s' ignored"
|
||||
|
||||
ER_UNSUPPORTED_ACTION_ON_VIRTUAL_COLUMN
|
||||
eng "'%s' is not yet supported for computed columns"
|
||||
eng "This is not yet supported for computed columns"
|
||||
|
||||
ER_CONST_EXPR_IN_VCOL
|
||||
eng "Constant expression in computed column function is not allowed"
|
||||
|
||||
ER_ROW_EXPR_FOR_VCOL
|
||||
eng "Expression for computed column cannot return a row"
|
||||
ER_UNSUPPORTED_ENGINE_FOR_VIRTUAL_COLUMNS
|
||||
eng "%s storage engine does not support computed columns"
|
||||
ER_UNKNOWN_OPTION
|
||||
eng "Unknown option '%-.64s'"
|
||||
ER_BAD_OPTION_VALUE
|
||||
|
@ -6980,16 +6980,16 @@ struct MPVIO_EXT : public MYSQL_PLUGIN_VIO
|
||||
a helper function to report an access denied error in all the proper places
|
||||
*/
|
||||
|
||||
static void login_failed_error(THD *thd, bool passwd_used)
|
||||
static void login_failed_error(THD *thd)
|
||||
{
|
||||
my_error(ER_ACCESS_DENIED_ERROR, MYF(0),
|
||||
thd->main_security_ctx.user,
|
||||
thd->main_security_ctx.host_or_ip,
|
||||
passwd_used ? ER(ER_YES) : ER(ER_NO));
|
||||
thd->password ? ER(ER_YES) : ER(ER_NO));
|
||||
general_log_print(thd, COM_CONNECT, ER(ER_ACCESS_DENIED_ERROR),
|
||||
thd->main_security_ctx.user,
|
||||
thd->main_security_ctx.host_or_ip,
|
||||
passwd_used ? ER(ER_YES) : ER(ER_NO));
|
||||
thd->password ? ER(ER_YES) : ER(ER_NO));
|
||||
status_var_increment(thd->status_var.access_denied_errors);
|
||||
/*
|
||||
Log access denied messages to the error log when log-warnings = 2
|
||||
@ -7001,7 +7001,7 @@ static void login_failed_error(THD *thd, bool passwd_used)
|
||||
sql_print_warning(ER(ER_ACCESS_DENIED_ERROR),
|
||||
thd->main_security_ctx.user,
|
||||
thd->main_security_ctx.host_or_ip,
|
||||
passwd_used ? ER(ER_YES) : ER(ER_NO));
|
||||
thd->password ? ER(ER_YES) : ER(ER_NO));
|
||||
}
|
||||
}
|
||||
|
||||
@ -7266,7 +7266,7 @@ static bool find_mpvio_user(MPVIO_EXT *mpvio, Security_context *sctx)
|
||||
|
||||
if (!mpvio->acl_user)
|
||||
{
|
||||
login_failed_error(mpvio->thd, 0);
|
||||
login_failed_error(mpvio->thd);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -7583,8 +7583,11 @@ static ulong parse_client_handshake_packet(MPVIO_EXT *mpvio,
|
||||
return packet_error;
|
||||
}
|
||||
|
||||
thd->password= passwd_len > 0;
|
||||
if (find_mpvio_user(mpvio, sctx))
|
||||
{
|
||||
return packet_error;
|
||||
}
|
||||
|
||||
if (thd->client_capabilities & CLIENT_PLUGIN_AUTH)
|
||||
{
|
||||
@ -8072,7 +8075,7 @@ bool acl_authenticate(THD *thd, uint connect_errors, uint com_change_user_pkt_le
|
||||
DBUG_ASSERT(mpvio.status == MPVIO_EXT::FAILURE);
|
||||
|
||||
if (!thd->is_error())
|
||||
login_failed_error(thd, thd->password);
|
||||
login_failed_error(thd);
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
@ -8092,7 +8095,7 @@ bool acl_authenticate(THD *thd, uint connect_errors, uint com_change_user_pkt_le
|
||||
*/
|
||||
if (acl_check_ssl(thd, acl_user))
|
||||
{
|
||||
login_failed_error(thd, thd->password);
|
||||
login_failed_error(thd);
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user