mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge in new handler and handlersocket code into 5.3 main
This commit is contained in:
@ -1943,3 +1943,4 @@ storage/pbxt/bin/xtstat
|
||||
libmysqld/sql_expression_cache.cc
|
||||
mysql-test/mtr_command
|
||||
scripts/convert-debug-for-diff
|
||||
plugin/handler_socket/client/hsclient
|
||||
|
@ -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
|
||||
|
||||
|
31
README
31
README
@ -1291,3 +1291,34 @@ Use of any of this software is governed by the terms of the license below:
|
||||
*/
|
||||
|
||||
***************************************************************************
|
||||
|
||||
%%The following software may be included in this product:
|
||||
HandlerSocket plugin for MySQL
|
||||
|
||||
Copyright (c) 2010 DeNA Co.,Ltd.
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of DeNA Co.,Ltd. nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY DeNA Co.,Ltd. "AS IS" AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
EVENT SHALL DeNA Co.,Ltd. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
***************************************************************************
|
||||
|
@ -136,6 +136,8 @@ typedef struct st_heap_share
|
||||
ulong min_records,max_records; /* Params to open */
|
||||
ulonglong data_length,index_length,max_table_size;
|
||||
uint key_stat_version; /* version to indicate insert/delete */
|
||||
uint key_version; /* Updated on key change */
|
||||
uint file_version; /* Update on clear */
|
||||
uint records; /* records */
|
||||
uint blength; /* records rounded up to 2^n */
|
||||
uint deleted; /* Deleted records in database */
|
||||
@ -173,6 +175,8 @@ typedef struct st_heap_info
|
||||
enum ha_rkey_function last_find_flag;
|
||||
TREE_ELEMENT *parents[MAX_TREE_HEIGHT+1];
|
||||
TREE_ELEMENT **last_pos;
|
||||
uint key_version; /* Version at last read */
|
||||
uint file_version; /* Version at scan */
|
||||
uint lastkey_len;
|
||||
my_bool implicit_emptied;
|
||||
#ifdef THREAD
|
||||
|
@ -88,6 +88,7 @@ typedef struct st_alarm {
|
||||
|
||||
extern uint thr_client_alarm;
|
||||
extern pthread_t alarm_thread;
|
||||
extern my_bool my_disable_thr_alarm;
|
||||
|
||||
#define thr_alarm_init(A) (*(A))=0
|
||||
#define thr_alarm_in_use(A) (*(A)!= 0)
|
||||
|
@ -123,8 +123,10 @@ typedef struct st_thr_lock_data {
|
||||
struct st_thr_lock *lock;
|
||||
pthread_cond_t *cond;
|
||||
void *status_param; /* Param to status functions */
|
||||
void *debug_print_param;
|
||||
enum thr_lock_type type;
|
||||
|
||||
enum thr_lock_type org_type; /* Cache for MariaDB */
|
||||
void *debug_print_param; /* For error messages */
|
||||
uint priority;
|
||||
} THR_LOCK_DATA;
|
||||
|
||||
|
@ -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
|
||||
|
@ -43,7 +43,7 @@ connection default;
|
||||
# of our statement.
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and info = "insert into $table (i) values (0)";
|
||||
where state = "Table lock" and info = "insert into $table (i) values (0)";
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--disable_result_log
|
||||
|
@ -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.
|
@ -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;
|
||||
}
|
||||
|
@ -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,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` (
|
||||
|
@ -35,7 +35,7 @@ call bug9486();
|
||||
show processlist;
|
||||
Id User Host db Command Time State Info
|
||||
# root localhost test Sleep # NULL
|
||||
# root localhost test Query # Locked update t1, t2 set val= 1 where id1=id2
|
||||
# root localhost test Query # Table lock update t1, t2 set val= 1 where id1=id2
|
||||
# root localhost test Query # NULL show processlist
|
||||
# root localhost test Sleep # NULL
|
||||
unlock tables;
|
||||
|
@ -4953,6 +4953,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
|
||||
|
@ -4956,6 +4956,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
|
||||
|
@ -4953,6 +4953,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
|
||||
|
@ -4953,6 +4953,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
|
||||
|
@ -535,3 +535,34 @@ HAVING
|
||||
field4 != 6;
|
||||
field1 field2 field3 field4 field5 field6
|
||||
drop table t0,t1,t2,t3,t4,t5,t6;
|
||||
#
|
||||
# BUG#675118: Elimination of a table results in an invalid execution plan
|
||||
#
|
||||
CREATE TABLE t1 (f1 int(11), PRIMARY KEY (f1)) ;
|
||||
CREATE TABLE t2 (f4 varchar(1024), KEY (f4)) ;
|
||||
Warnings:
|
||||
Warning 1071 Specified key was too long; max key length is 1000 bytes
|
||||
INSERT IGNORE INTO t2 VALUES ('xcddwntkbxyorzdv'),
|
||||
('cnxxcddwntkbxyor'),('r'),('r'), ('did'),('I'),('when'),
|
||||
('hczkfqjeggivdvac'),('e'),('okay'),('up');
|
||||
CREATE TABLE t3 (f4 varchar(1024), f1 int(11), f2 int(11)) ;
|
||||
INSERT IGNORE INTO t3 VALUES ('f','4','0'),('n','5','-996540416');
|
||||
CREATE TABLE t4 (f1 int(11), f3 varchar(10)) ;
|
||||
INSERT IGNORE INTO t4 VALUES ('8','n'),('9','nwzcerzsgx'),('10','c');
|
||||
CREATE TABLE t5 (f5 int(11), KEY (f5)) ;
|
||||
EXPLAIN
|
||||
SELECT t3.f2
|
||||
FROM t2
|
||||
LEFT JOIN t3
|
||||
LEFT JOIN t4
|
||||
LEFT JOIN t1 ON t4.f1 = t1.f1
|
||||
JOIN t5 ON t4.f3 ON t3.f1 = t5.f5 ON t2.f4 = t3.f4
|
||||
WHERE t3.f2 ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 Using where
|
||||
1 SIMPLE t5 ref f5 f5 5 test.t3.f1 2 Using where; Using index
|
||||
1 SIMPLE t4 ALL NULL NULL NULL NULL 3 Using where
|
||||
1 SIMPLE t2 ALL f4 NULL NULL NULL 11 Using where; Using join buffer (flat, BNL join)
|
||||
# ^^ The above must not produce a QEP of t3,t5,t2,t4
|
||||
# as that violates the "no interleaving of outer join nests" rule.
|
||||
DROP TABLE t1,t2,t3,t4,t5;
|
||||
|
@ -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` (
|
||||
|
@ -60,7 +60,7 @@ let $wait_condition=
|
||||
--echo # con1
|
||||
let $wait_condition=
|
||||
SELECT COUNT(*) = 1 FROM information_schema.processlist WHERE
|
||||
state = "Locked" and info = "INSERT INTO t2 VALUES (3)";
|
||||
state = "Table Lock" and info = "INSERT INTO t2 VALUES (3)";
|
||||
--source include/wait_condition.inc
|
||||
SELECT RELEASE_LOCK('Bug#34306');
|
||||
--connection con2
|
||||
|
@ -1,4 +1,5 @@
|
||||
--source include/have_debug.inc
|
||||
--source include/long_test.inc
|
||||
--source federated.inc
|
||||
|
||||
--echo #
|
||||
|
@ -368,13 +368,13 @@ echo
|
||||
;
|
||||
connection default;
|
||||
echo
|
||||
# Poll till INFO is no more NULL and State = 'Locked'.
|
||||
# Poll till INFO is no more NULL and State = "Table Lock".
|
||||
;
|
||||
let $wait_condition= SELECT COUNT(*) FROM INFORMATION_SCHEMA.PROCESSLIST
|
||||
WHERE INFO IS NOT NULL AND STATE = 'Locked';
|
||||
WHERE INFO IS NOT NULL AND STATE = "Table Lock";
|
||||
--source include/wait_condition.inc
|
||||
#
|
||||
# Expect to see the state 'Locked' for the third connection because the SELECT
|
||||
# Expect to see the state "Table Lock" for the third connection because the SELECT
|
||||
# collides with the WRITE TABLE LOCK.
|
||||
--replace_column 1 <ID> 3 <HOST_NAME> 6 <TIME> 9 <TIME_MS>
|
||||
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
|
||||
@ -423,10 +423,10 @@ echo
|
||||
;
|
||||
connection default;
|
||||
echo
|
||||
# Poll till INFO is no more NULL and State = 'Locked'.
|
||||
# Poll till INFO is no more NULL and State = "Table Lock".
|
||||
;
|
||||
let $wait_condition= SELECT COUNT(*) FROM INFORMATION_SCHEMA.PROCESSLIST
|
||||
WHERE INFO IS NOT NULL AND STATE = 'Locked';
|
||||
WHERE INFO IS NOT NULL AND STATE = "Table Lock";
|
||||
--source include/wait_condition.inc
|
||||
echo
|
||||
# Expect result:
|
||||
|
801
mysql-test/suite/handler/aria.result
Normal file
801
mysql-test/suite/handler/aria.result
Normal file
@ -0,0 +1,801 @@
|
||||
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 b first;
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read b next;
|
||||
a b
|
||||
16 ccc
|
||||
handler t2 read b next;
|
||||
a b
|
||||
16 xxx
|
||||
handler t2 read b prev;
|
||||
a b
|
||||
16 ccc
|
||||
handler t2 read b last;
|
||||
a b
|
||||
22 iii
|
||||
handler t2 read b prev;
|
||||
a b
|
||||
21 hhh
|
||||
handler t2 read b prev;
|
||||
a b
|
||||
20 ggg
|
||||
handler t2 read b first;
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read b prev;
|
||||
a b
|
||||
handler t2 read b last;
|
||||
a b
|
||||
22 iii
|
||||
handler t2 read b prev;
|
||||
a b
|
||||
21 hhh
|
||||
handler t2 read b next;
|
||||
a b
|
||||
22 iii
|
||||
handler t2 read b next;
|
||||
a b
|
||||
handler t2 read a=(15);
|
||||
a b
|
||||
handler t2 read a=(21);
|
||||
a b
|
||||
21 hhh
|
||||
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 b=(18);
|
||||
a b
|
||||
18 eee
|
||||
handler t2 read b>=(18);
|
||||
a b
|
||||
18 eee
|
||||
handler t2 read b>(18);
|
||||
a b
|
||||
19 fff
|
||||
handler t2 read b<=(18);
|
||||
a b
|
||||
18 eee
|
||||
handler t2 read b<(18);
|
||||
a b
|
||||
17 ddd
|
||||
handler t2 read a=(15);
|
||||
a b
|
||||
handler t2 read a>=(15) limit 2;
|
||||
a b
|
||||
16 ccc
|
||||
16 xxx
|
||||
handler t2 read a>(15) limit 2;
|
||||
a b
|
||||
16 ccc
|
||||
16 xxx
|
||||
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 b first limit 5;
|
||||
a b
|
||||
14 aaa
|
||||
16 ccc
|
||||
16 xxx
|
||||
17 ddd
|
||||
18 eee
|
||||
handler t2 read b next limit 3;
|
||||
a b
|
||||
19 fff
|
||||
19 yyy
|
||||
20 ggg
|
||||
handler t2 read b prev limit 10;
|
||||
a b
|
||||
19 yyy
|
||||
19 fff
|
||||
18 eee
|
||||
17 ddd
|
||||
16 xxx
|
||||
16 ccc
|
||||
14 aaa
|
||||
handler t2 read b>=(16) limit 4;
|
||||
a b
|
||||
16 ccc
|
||||
16 xxx
|
||||
17 ddd
|
||||
18 eee
|
||||
handler t2 read b>=(16) limit 2,2;
|
||||
a b
|
||||
17 ddd
|
||||
18 eee
|
||||
select * from t1 where a>=16 order by a,b 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 b=(16) limit 1,3;
|
||||
a b
|
||||
16 xxx
|
||||
handler t2 read b=(19);
|
||||
a b
|
||||
19 fff
|
||||
handler t2 read b=(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 b next;
|
||||
a b
|
||||
14 aaa
|
||||
handler t1 read b 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 b=(9);
|
||||
a b
|
||||
9 j
|
||||
handler a2 read b next;
|
||||
a b
|
||||
9 k
|
||||
handler a2 read b prev limit 2;
|
||||
a b
|
||||
9 j
|
||||
8 i
|
||||
handler a2 read b last;
|
||||
a b
|
||||
9 k
|
||||
handler a2 read b 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,49 +10,37 @@
|
||||
# 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;
|
||||
handler t2 read a prev;
|
||||
handler t2 read a last;
|
||||
handler t2 read a prev;
|
||||
handler t2 read a prev;
|
||||
handler t2 read b first;
|
||||
handler t2 read b next;
|
||||
handler t2 read b next;
|
||||
handler t2 read b prev;
|
||||
handler t2 read b last;
|
||||
handler t2 read b prev;
|
||||
handler t2 read b prev;
|
||||
|
||||
handler t2 read a first;
|
||||
handler t2 read a prev;
|
||||
handler t2 read b first;
|
||||
handler t2 read b prev;
|
||||
|
||||
handler t2 read a last;
|
||||
handler t2 read a prev;
|
||||
handler t2 read a next;
|
||||
handler t2 read a next;
|
||||
handler t2 read b last;
|
||||
handler t2 read b prev;
|
||||
handler t2 read b next;
|
||||
handler t2 read b next;
|
||||
|
||||
handler t2 read a=(15);
|
||||
handler t2 read a=(16);
|
||||
handler t2 read a=(21);
|
||||
|
||||
--error 1070
|
||||
handler t2 read a=(19,"fff");
|
||||
@ -65,33 +55,57 @@ handler t1 read a last;
|
||||
handler t2 read a=(11);
|
||||
handler t2 read a>=(11);
|
||||
|
||||
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 find
|
||||
handler t2 read b=(18);
|
||||
handler t2 read b>=(18);
|
||||
handler t2 read b>(18);
|
||||
handler t2 read b<=(18);
|
||||
handler t2 read b<(18);
|
||||
|
||||
handler t2 read a first limit 5;
|
||||
handler t2 read a next limit 3;
|
||||
handler t2 read a prev limit 10;
|
||||
# Search on something we can't find
|
||||
--sorted_result
|
||||
handler t2 read a=(15);
|
||||
--sorted_result
|
||||
handler t2 read a>=(15) limit 2;
|
||||
--sorted_result
|
||||
handler t2 read a>(15) limit 2;
|
||||
handler t2 read a<=(15);
|
||||
handler t2 read a<(15);
|
||||
|
||||
handler t2 read a>=(16) limit 4;
|
||||
handler t2 read a>=(16) limit 2,2;
|
||||
# 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 b first limit 5;
|
||||
handler t2 read b next limit 3;
|
||||
handler t2 read b prev limit 10;
|
||||
|
||||
handler t2 read b>=(16) limit 4;
|
||||
handler t2 read b>=(16) limit 2,2;
|
||||
select * from t1 where a>=16 order by a,b limit 2,2;
|
||||
handler t2 read a last limit 3;
|
||||
|
||||
handler t2 read a=(19);
|
||||
handler t2 read a=(19) where b="yyy";
|
||||
handler t2 read b=(16) limit 1,3;
|
||||
handler t2 read b=(19);
|
||||
handler t2 read b=(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;
|
||||
handler t1 read a next; # this used to crash as a bug#5373
|
||||
handler t1 read a next;
|
||||
handler t1 read b next; # this used to crash as a bug#5373
|
||||
handler t1 read b next;
|
||||
handler t1 close;
|
||||
|
||||
handler t1 open;
|
||||
@ -105,12 +119,85 @@ eval alter table t1 engine = $engine_type;
|
||||
--error 1109
|
||||
handler t2 read first;
|
||||
|
||||
handler t1 open;
|
||||
handler t1 read a=(16) limit 1,3;
|
||||
flush tables;
|
||||
handler t1 read a=(16) limit 1,3;
|
||||
handler t1 close;
|
||||
|
||||
#
|
||||
# Test with prepared statements
|
||||
#
|
||||
|
||||
handler t1 open;
|
||||
prepare stmt from 'handler t1 read a=(?) limit ?,?';
|
||||
set @a=16,@b=1,@c=100;
|
||||
execute stmt using @a,@b,@c;
|
||||
set @a=16,@b=2,@c=1;
|
||||
execute stmt using @a,@b,@c;
|
||||
set @a=16,@b=0,@c=2;
|
||||
execute stmt using @a,@b,@c;
|
||||
deallocate prepare stmt;
|
||||
|
||||
prepare stmt from 'handler t1 read a next limit ?';
|
||||
handler t1 read a>=(11);
|
||||
set @a=3;
|
||||
execute stmt using @a;
|
||||
execute stmt using @a;
|
||||
execute stmt using @a;
|
||||
deallocate prepare stmt;
|
||||
|
||||
prepare stmt from 'handler t1 read b prev limit ?';
|
||||
execute stmt using @a;
|
||||
execute stmt using @a;
|
||||
execute stmt using @a;
|
||||
execute stmt using @a;
|
||||
deallocate prepare stmt;
|
||||
|
||||
prepare stmt from 'handler t1 read b=(?,?)';
|
||||
set @a=14, @b='aaa';
|
||||
execute stmt using @a,@b;
|
||||
set @a=14, @b='not found';
|
||||
execute stmt using @a,@b;
|
||||
deallocate prepare stmt;
|
||||
|
||||
prepare stmt from 'handler t1 read b=(1+?) limit 10';
|
||||
set @a=15;
|
||||
execute stmt using @a;
|
||||
execute stmt using @a;
|
||||
deallocate prepare stmt;
|
||||
|
||||
prepare stmt from 'handler t1 read a>=(?) where a < ? limit 5';
|
||||
set @a=15, @b=20;
|
||||
execute stmt using @a,@b;
|
||||
execute stmt using @a,@b;
|
||||
deallocate prepare stmt;
|
||||
|
||||
prepare stmt from 'handler t1 read a=(?)';
|
||||
set @a=16;
|
||||
execute stmt using @a;
|
||||
alter table t1 add c int;
|
||||
--error 1109
|
||||
execute stmt using @a;
|
||||
deallocate prepare stmt;
|
||||
--error 1109
|
||||
handler t1 close;
|
||||
|
||||
handler t1 open;
|
||||
prepare stmt from 'handler t1 read a=(?)';
|
||||
flush tables;
|
||||
set @a=16;
|
||||
--error ER_NEED_REPREPARE
|
||||
execute stmt using @a;
|
||||
deallocate prepare stmt;
|
||||
handler t1 close;
|
||||
|
||||
#
|
||||
# DROP TABLE / ALTER TABLE
|
||||
#
|
||||
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;
|
||||
@ -137,7 +224,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
|
||||
@ -164,7 +251,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;
|
||||
@ -173,143 +260,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.
|
||||
#
|
||||
@ -410,11 +360,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
|
||||
@ -468,10 +420,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
|
||||
@ -484,9 +433,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
|
||||
@ -500,74 +446,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
|
||||
#
|
||||
@ -575,15 +453,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 $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");
|
||||
(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
|
||||
@ -594,41 +469,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 last;
|
||||
handler a2 read a prev;
|
||||
handler a2 read b=(9);
|
||||
handler a2 read b next;
|
||||
handler a2 read b prev limit 2;
|
||||
--error 0,1031
|
||||
handler a2 read b last;
|
||||
handler a2 read b 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;
|
||||
@ -640,7 +493,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;
|
||||
@ -654,7 +507,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;
|
||||
@ -664,7 +517,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;
|
||||
@ -676,56 +529,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;
|
786
mysql-test/suite/handler/heap.result
Normal file
786
mysql-test/suite/handler/heap.result
Normal file
@ -0,0 +1,786 @@
|
||||
SET SESSION STORAGE_ENGINE = MEMORY;
|
||||
drop table if exists t1,t3,t4,t5;
|
||||
create table t1 (a int, b char(10), key a using btree (a), key b using btree (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 b first;
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read b next;
|
||||
a b
|
||||
16 ccc
|
||||
handler t2 read b next;
|
||||
a b
|
||||
16 xxx
|
||||
handler t2 read b prev;
|
||||
a b
|
||||
16 ccc
|
||||
handler t2 read b last;
|
||||
a b
|
||||
22 iii
|
||||
handler t2 read b prev;
|
||||
a b
|
||||
21 hhh
|
||||
handler t2 read b prev;
|
||||
a b
|
||||
20 ggg
|
||||
handler t2 read b first;
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read b prev;
|
||||
a b
|
||||
handler t2 read b last;
|
||||
a b
|
||||
22 iii
|
||||
handler t2 read b prev;
|
||||
a b
|
||||
21 hhh
|
||||
handler t2 read b next;
|
||||
a b
|
||||
22 iii
|
||||
handler t2 read b next;
|
||||
a b
|
||||
handler t2 read a=(15);
|
||||
a b
|
||||
handler t2 read a=(21);
|
||||
a b
|
||||
21 hhh
|
||||
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 b=(18);
|
||||
a b
|
||||
18 eee
|
||||
handler t2 read b>=(18);
|
||||
a b
|
||||
18 eee
|
||||
handler t2 read b>(18);
|
||||
a b
|
||||
19 fff
|
||||
handler t2 read b<=(18);
|
||||
a b
|
||||
18 eee
|
||||
handler t2 read b<(18);
|
||||
a b
|
||||
17 ddd
|
||||
handler t2 read a=(15);
|
||||
a b
|
||||
handler t2 read a>=(15) limit 2;
|
||||
a b
|
||||
16 ccc
|
||||
16 xxx
|
||||
handler t2 read a>(15) limit 2;
|
||||
a b
|
||||
16 ccc
|
||||
16 xxx
|
||||
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 b first limit 5;
|
||||
a b
|
||||
14 aaa
|
||||
16 ccc
|
||||
16 xxx
|
||||
17 ddd
|
||||
18 eee
|
||||
handler t2 read b next limit 3;
|
||||
a b
|
||||
19 fff
|
||||
19 yyy
|
||||
20 ggg
|
||||
handler t2 read b prev limit 10;
|
||||
a b
|
||||
19 yyy
|
||||
19 fff
|
||||
18 eee
|
||||
17 ddd
|
||||
16 xxx
|
||||
16 ccc
|
||||
14 aaa
|
||||
handler t2 read b>=(16) limit 4;
|
||||
a b
|
||||
16 ccc
|
||||
16 xxx
|
||||
17 ddd
|
||||
18 eee
|
||||
handler t2 read b>=(16) limit 2,2;
|
||||
a b
|
||||
17 ddd
|
||||
18 eee
|
||||
select * from t1 where a>=16 order by a,b 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 b=(16) limit 1,3;
|
||||
a b
|
||||
16 xxx
|
||||
handler t2 read b=(19);
|
||||
a b
|
||||
19 fff
|
||||
handler t2 read b=(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 b next;
|
||||
a b
|
||||
14 aaa
|
||||
handler t1 read b 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 = MEMORY;
|
||||
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 using btree (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 using btree (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=MEMORY;
|
||||
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 note The storage engine for the table doesn't support optimize
|
||||
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 using btree (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 using btree (a), key b using btree (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 b=(9);
|
||||
a b
|
||||
9 j
|
||||
handler a2 read b next;
|
||||
a b
|
||||
9 k
|
||||
handler a2 read b prev limit 2;
|
||||
a b
|
||||
9 j
|
||||
8 i
|
||||
handler a2 read b last;
|
||||
a b
|
||||
9 k
|
||||
handler a2 read b prev;
|
||||
a b
|
||||
9 j
|
||||
handler a2 close;
|
||||
drop table t1;
|
||||
create table t1 (a int);
|
||||
create temporary table t2 (a int, key using btree (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 using btree (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 using btree (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 using btree (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 note The storage engine for the table doesn't support optimize
|
||||
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 using btree (a));
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ a FIRST;
|
||||
a
|
||||
INSERT INTO t1 VALUES(1);
|
||||
HANDLER t1 READ a NEXT;
|
||||
HANDLER t1 CLOSE;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a INT, b INT, KEY(a), KEY b using btree (b), KEY ab using btree(a, b));
|
||||
INSERT INTO t1 VALUES (2, 20), (2,20), (1, 10), (4, 40), (3, 30), (5,50), (6,50);
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ a>=(2) limit 3;
|
||||
a b
|
||||
2 20
|
||||
2 20
|
||||
HANDLER t1 READ a PREV;
|
||||
a b
|
||||
2 20
|
||||
HANDLER t1 READ a PREV;
|
||||
a b
|
||||
2 20
|
||||
HANDLER t1 READ a PREV;
|
||||
a b
|
||||
HANDLER t1 READ b>=(20) limit 3;
|
||||
a b
|
||||
2 20
|
||||
2 20
|
||||
3 30
|
||||
HANDLER t1 READ b PREV;
|
||||
a b
|
||||
2 20
|
||||
HANDLER t1 READ b PREV LIMIT 2;
|
||||
a b
|
||||
2 20
|
||||
1 10
|
||||
HANDLER t1 READ ab=(3,30) limit 3;
|
||||
a b
|
||||
3 30
|
||||
HANDLER t1 READ ab>=(3,30) limit 3;
|
||||
a b
|
||||
3 30
|
||||
4 40
|
||||
5 50
|
||||
HANDLER t1 READ a FIRST;
|
||||
ERROR HY000: Table storage engine for 't1' doesn't have this option
|
||||
HANDLER t1 READ a LAST;
|
||||
ERROR HY000: Table storage engine for 't1' doesn't have this option
|
||||
HANDLER t1 READ b FIRST LIMIT 2;
|
||||
a b
|
||||
1 10
|
||||
2 20
|
||||
HANDLER t1 READ b LAST LIMIT 2;
|
||||
a b
|
||||
6 50
|
||||
5 50
|
||||
HANDLER t1 READ FIRST LIMIT 10;
|
||||
a b
|
||||
2 20
|
||||
2 20
|
||||
1 10
|
||||
4 40
|
||||
3 30
|
||||
5 50
|
||||
6 50
|
||||
HANDLER t1 READ b FIRST;
|
||||
a b
|
||||
1 10
|
||||
insert into t1 values (7,50);
|
||||
HANDLER t1 READ b NEXT;
|
||||
ERROR HY000: Record has changed since last read in table 't1'
|
||||
HANDLER t1 READ b FIRST;
|
||||
a b
|
||||
1 10
|
||||
insert into t1 values (7,50);
|
||||
HANDLER t1 READ b NEXT;
|
||||
ERROR HY000: Record has changed since last read in table 't1'
|
||||
HANDLER t1 READ FIRST;
|
||||
a b
|
||||
2 20
|
||||
insert into t1 values (8,50);
|
||||
HANDLER t1 READ NEXT;
|
||||
a b
|
||||
2 20
|
||||
delete from t1 where a=3;
|
||||
HANDLER t1 READ NEXT LIMIT 2;
|
||||
a b
|
||||
1 10
|
||||
4 40
|
||||
delete from t1;
|
||||
HANDLER t1 READ NEXT LIMIT 2;
|
||||
ERROR HY000: Record has changed since last read in table 't1'
|
||||
HANDLER t1 CLOSE;
|
||||
DROP TABLE t1;
|
||||
create table t1 (f1 integer not null, key (f1)) engine=Memory;
|
||||
insert into t1 values (1);
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ f1 NEXT;
|
||||
ERROR HY000: Table storage engine for 't1' doesn't have this option
|
||||
HANDLER t1 READ f1 NEXT;
|
||||
ERROR HY000: Table storage engine for 't1' doesn't have this option
|
||||
HANDLER t1 READ f1 NEXT;
|
||||
ERROR HY000: Table storage engine for 't1' doesn't have this option
|
||||
HANDLER t1 CLOSE;
|
||||
DROP TABLE t1;
|
||||
End of 5.3 tests
|
88
mysql-test/suite/handler/heap.test
Normal file
88
mysql-test/suite/handler/heap.test
Normal file
@ -0,0 +1,88 @@
|
||||
# test of HANDLER with HEAP tables
|
||||
#
|
||||
|
||||
let $engine_type= MEMORY;
|
||||
let $key_type=using btree;
|
||||
|
||||
--source init.inc
|
||||
--source handler.inc
|
||||
|
||||
#
|
||||
# Test what happens if table is changed (Unique test for HEAP)
|
||||
#
|
||||
|
||||
connect (con1,localhost,root,,);
|
||||
connection default;
|
||||
|
||||
CREATE TABLE t1(a INT, b INT, KEY(a), KEY b using btree (b), KEY ab using btree(a, b));
|
||||
|
||||
INSERT INTO t1 VALUES (2, 20), (2,20), (1, 10), (4, 40), (3, 30), (5,50), (6,50);
|
||||
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ a>=(2) limit 3;
|
||||
HANDLER t1 READ a PREV;
|
||||
HANDLER t1 READ a PREV;
|
||||
HANDLER t1 READ a PREV;
|
||||
HANDLER t1 READ b>=(20) limit 3;
|
||||
HANDLER t1 READ b PREV;
|
||||
HANDLER t1 READ b PREV LIMIT 2;
|
||||
HANDLER t1 READ ab=(3,30) limit 3;
|
||||
HANDLER t1 READ ab>=(3,30) limit 3;
|
||||
|
||||
# Test FIRST/LAST on hash and btree keys
|
||||
--error ER_ILLEGAL_HA
|
||||
HANDLER t1 READ a FIRST;
|
||||
--error ER_ILLEGAL_HA
|
||||
HANDLER t1 READ a LAST;
|
||||
HANDLER t1 READ b FIRST LIMIT 2;
|
||||
HANDLER t1 READ b LAST LIMIT 2;
|
||||
|
||||
# Table scan
|
||||
HANDLER t1 READ FIRST LIMIT 10;
|
||||
# Index scan
|
||||
HANDLER t1 READ b FIRST;
|
||||
insert into t1 values (7,50);
|
||||
--error ER_CHECKREAD
|
||||
HANDLER t1 READ b NEXT;
|
||||
|
||||
HANDLER t1 READ b FIRST;
|
||||
connection con1;
|
||||
insert into t1 values (7,50);
|
||||
connection default;
|
||||
--error ER_CHECKREAD
|
||||
HANDLER t1 READ b NEXT;
|
||||
|
||||
HANDLER t1 READ FIRST;
|
||||
connection con1;
|
||||
insert into t1 values (8,50);
|
||||
connection default;
|
||||
HANDLER t1 READ NEXT;
|
||||
connection con1;
|
||||
delete from t1 where a=3;
|
||||
connection default;
|
||||
HANDLER t1 READ NEXT LIMIT 2;
|
||||
connection con1;
|
||||
delete from t1;
|
||||
connection default;
|
||||
--error ER_CHECKREAD
|
||||
HANDLER t1 READ NEXT LIMIT 2;
|
||||
HANDLER t1 CLOSE;
|
||||
DROP TABLE t1;
|
||||
disconnect con1;
|
||||
|
||||
#
|
||||
# LP#702786 Two handler read f1 next gives different errors
|
||||
#
|
||||
create table t1 (f1 integer not null, key (f1)) engine=Memory;
|
||||
insert into t1 values (1);
|
||||
HANDLER t1 OPEN;
|
||||
--error 1031
|
||||
HANDLER t1 READ f1 NEXT;
|
||||
--error 1031
|
||||
HANDLER t1 READ f1 NEXT;
|
||||
--error 1031
|
||||
HANDLER t1 READ f1 NEXT;
|
||||
HANDLER t1 CLOSE;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.3 tests
|
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,56 +1,53 @@
|
||||
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;
|
||||
handler t2 read b first;
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a next;
|
||||
a b
|
||||
15 bbb
|
||||
handler t2 read a next;
|
||||
handler t2 read b next;
|
||||
a b
|
||||
16 ccc
|
||||
handler t2 read a prev;
|
||||
handler t2 read b next;
|
||||
a b
|
||||
15 bbb
|
||||
handler t2 read a last;
|
||||
16 xxx
|
||||
handler t2 read b prev;
|
||||
a b
|
||||
16 ccc
|
||||
handler t2 read b last;
|
||||
a b
|
||||
22 iii
|
||||
handler t2 read a prev;
|
||||
handler t2 read b prev;
|
||||
a b
|
||||
21 hhh
|
||||
handler t2 read a prev;
|
||||
handler t2 read b prev;
|
||||
a b
|
||||
20 ggg
|
||||
handler t2 read a first;
|
||||
handler t2 read b first;
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a prev;
|
||||
handler t2 read b prev;
|
||||
a b
|
||||
handler t2 read a last;
|
||||
handler t2 read b last;
|
||||
a b
|
||||
22 iii
|
||||
handler t2 read a prev;
|
||||
handler t2 read b prev;
|
||||
a b
|
||||
21 hhh
|
||||
handler t2 read a next;
|
||||
handler t2 read b next;
|
||||
a b
|
||||
22 iii
|
||||
handler t2 read a next;
|
||||
handler t2 read b next;
|
||||
a b
|
||||
handler t2 read a=(15);
|
||||
a b
|
||||
15 bbb
|
||||
handler t2 read a=(16);
|
||||
handler t2 read a=(21);
|
||||
a b
|
||||
16 ccc
|
||||
21 hhh
|
||||
handler t2 read a=(19,"fff");
|
||||
ERROR 42000: Too many key parts specified; max 1 parts allowed
|
||||
handler t2 read b=(19,"fff");
|
||||
@ -69,49 +66,93 @@ a b
|
||||
handler t2 read a>=(11);
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a=(18);
|
||||
handler t2 read b=(18);
|
||||
a b
|
||||
18 eee
|
||||
handler t2 read a>=(18);
|
||||
handler t2 read b>=(18);
|
||||
a b
|
||||
18 eee
|
||||
handler t2 read a>(18);
|
||||
handler t2 read b>(18);
|
||||
a b
|
||||
19 fff
|
||||
handler t2 read a<=(18);
|
||||
handler t2 read b<=(18);
|
||||
a b
|
||||
18 eee
|
||||
handler t2 read a<(18);
|
||||
handler t2 read b<(18);
|
||||
a b
|
||||
17 ddd
|
||||
handler t2 read a first limit 5;
|
||||
handler t2 read a=(15);
|
||||
a b
|
||||
handler t2 read a>=(15) limit 2;
|
||||
a b
|
||||
16 ccc
|
||||
16 xxx
|
||||
handler t2 read a>(15) limit 2;
|
||||
a b
|
||||
16 ccc
|
||||
16 xxx
|
||||
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 b first limit 5;
|
||||
a b
|
||||
14 aaa
|
||||
15 bbb
|
||||
16 ccc
|
||||
16 xxx
|
||||
17 ddd
|
||||
handler t2 read a next limit 3;
|
||||
a b
|
||||
18 eee
|
||||
handler t2 read b next limit 3;
|
||||
a b
|
||||
19 fff
|
||||
19 yyy
|
||||
handler t2 read a prev limit 10;
|
||||
20 ggg
|
||||
handler t2 read b 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;
|
||||
handler t2 read b>=(16) limit 4;
|
||||
a b
|
||||
16 ccc
|
||||
16 xxx
|
||||
17 ddd
|
||||
18 eee
|
||||
handler t2 read a>=(16) limit 2,2;
|
||||
handler t2 read b>=(16) limit 2,2;
|
||||
a b
|
||||
17 ddd
|
||||
18 eee
|
||||
select * from t1 where a>=16 order by a,b limit 2,2;
|
||||
a b
|
||||
17 ddd
|
||||
18 eee
|
||||
@ -120,10 +161,13 @@ a b
|
||||
22 iii
|
||||
21 hhh
|
||||
20 ggg
|
||||
handler t2 read a=(19);
|
||||
handler t2 read b=(16) limit 1,3;
|
||||
a b
|
||||
16 xxx
|
||||
handler t2 read b=(19);
|
||||
a b
|
||||
19 fff
|
||||
handler t2 read a=(19) where b="yyy";
|
||||
handler t2 read b=(19) where b="yyy";
|
||||
a b
|
||||
19 yyy
|
||||
handler t2 read first;
|
||||
@ -135,16 +179,14 @@ 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;
|
||||
handler t1 read b next;
|
||||
a b
|
||||
14 aaa
|
||||
handler t1 read a next;
|
||||
handler t1 read b next;
|
||||
a b
|
||||
15 bbb
|
||||
16 ccc
|
||||
handler t1 close;
|
||||
handler t1 open;
|
||||
handler t1 read a prev;
|
||||
@ -161,14 +203,135 @@ a b
|
||||
alter table t1 engine = InnoDB;
|
||||
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);
|
||||
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;
|
||||
@ -191,7 +354,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);
|
||||
@ -229,148 +392,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;
|
||||
@ -496,6 +517,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);
|
||||
@ -516,14 +542,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;
|
||||
@ -536,50 +560,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
|
||||
@ -592,24 +575,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
|
||||
@ -626,39 +610,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 b=(9);
|
||||
a b
|
||||
9 j
|
||||
handler a2 read a prev;
|
||||
handler a2 read b next;
|
||||
a b
|
||||
9 k
|
||||
handler a2 read b prev limit 2;
|
||||
a b
|
||||
9 j
|
||||
8 i
|
||||
handler a2 read b last;
|
||||
a b
|
||||
9 k
|
||||
handler a2 read b prev;
|
||||
a b
|
||||
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;
|
||||
@ -668,7 +641,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;
|
||||
@ -681,7 +654,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
|
||||
@ -689,7 +662,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;
|
||||
@ -705,41 +678,25 @@ 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;
|
||||
CREATE TABLE t1 (f1 integer, f2 integer, primary key (f1), key (f2)) engine=innodb;
|
||||
INSERT INTO t1 VALUES (1,1),(2,2),(3,3);
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ FIRST WHERE f2 <= 1;
|
||||
f1 f2
|
||||
1 1
|
||||
HANDLER t1 READ `PRIMARY` PREV;
|
||||
f1 f2
|
||||
3 3
|
||||
DROP TABLE t1;
|
28
mysql-test/suite/handler/innodb.test
Normal file
28
mysql-test/suite/handler/innodb.test
Normal file
@ -0,0 +1,28 @@
|
||||
# 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_innodb.inc
|
||||
|
||||
let $engine_type= InnoDB;
|
||||
|
||||
--source init.inc
|
||||
--source handler.inc
|
||||
|
||||
#
|
||||
# LP#697610 ha_index_prev(uchar*): Assertion `inited==INDEX'
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (f1 integer, f2 integer, primary key (f1), key (f2)) engine=innodb;
|
||||
INSERT INTO t1 VALUES (1,1),(2,2),(3,3);
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ FIRST WHERE f2 <= 1;
|
||||
HANDLER t1 READ `PRIMARY` PREV;
|
||||
DROP TABLE t1;
|
261
mysql-test/suite/handler/interface.result
Normal file
261
mysql-test/suite/handler/interface.result
Normal file
@ -0,0 +1,261 @@
|
||||
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
|
||||
PREPARE h_r FROM 'HANDLER t1 READ `PRIMARY` LAST';
|
||||
ERROR 42S02: Unknown table 't1' in HANDLER
|
313
mysql-test/suite/handler/interface.test
Normal file
313
mysql-test/suite/handler/interface.test
Normal file
@ -0,0 +1,313 @@
|
||||
#
|
||||
# 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;
|
||||
|
||||
#
|
||||
# LP#697622 Assertion `! is_set()' failed when preparing a HANDLER statement
|
||||
#
|
||||
--error ER_UNKNOWN_TABLE
|
||||
PREPARE h_r FROM 'HANDLER t1 READ `PRIMARY` LAST';
|
@ -1,56 +1,53 @@
|
||||
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;
|
||||
handler t2 read b first;
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a next;
|
||||
a b
|
||||
15 bbb
|
||||
handler t2 read a next;
|
||||
handler t2 read b next;
|
||||
a b
|
||||
16 ccc
|
||||
handler t2 read a prev;
|
||||
handler t2 read b next;
|
||||
a b
|
||||
15 bbb
|
||||
handler t2 read a last;
|
||||
16 xxx
|
||||
handler t2 read b prev;
|
||||
a b
|
||||
16 ccc
|
||||
handler t2 read b last;
|
||||
a b
|
||||
22 iii
|
||||
handler t2 read a prev;
|
||||
handler t2 read b prev;
|
||||
a b
|
||||
21 hhh
|
||||
handler t2 read a prev;
|
||||
handler t2 read b prev;
|
||||
a b
|
||||
20 ggg
|
||||
handler t2 read a first;
|
||||
handler t2 read b first;
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a prev;
|
||||
handler t2 read b prev;
|
||||
a b
|
||||
handler t2 read a last;
|
||||
handler t2 read b last;
|
||||
a b
|
||||
22 iii
|
||||
handler t2 read a prev;
|
||||
handler t2 read b prev;
|
||||
a b
|
||||
21 hhh
|
||||
handler t2 read a next;
|
||||
handler t2 read b next;
|
||||
a b
|
||||
22 iii
|
||||
handler t2 read a next;
|
||||
handler t2 read b next;
|
||||
a b
|
||||
handler t2 read a=(15);
|
||||
a b
|
||||
15 bbb
|
||||
handler t2 read a=(16);
|
||||
handler t2 read a=(21);
|
||||
a b
|
||||
16 ccc
|
||||
21 hhh
|
||||
handler t2 read a=(19,"fff");
|
||||
ERROR 42000: Too many key parts specified; max 1 parts allowed
|
||||
handler t2 read b=(19,"fff");
|
||||
@ -69,49 +66,93 @@ a b
|
||||
handler t2 read a>=(11);
|
||||
a b
|
||||
14 aaa
|
||||
handler t2 read a=(18);
|
||||
handler t2 read b=(18);
|
||||
a b
|
||||
18 eee
|
||||
handler t2 read a>=(18);
|
||||
handler t2 read b>=(18);
|
||||
a b
|
||||
18 eee
|
||||
handler t2 read a>(18);
|
||||
handler t2 read b>(18);
|
||||
a b
|
||||
19 fff
|
||||
handler t2 read a<=(18);
|
||||
handler t2 read b<=(18);
|
||||
a b
|
||||
18 eee
|
||||
handler t2 read a<(18);
|
||||
handler t2 read b<(18);
|
||||
a b
|
||||
17 ddd
|
||||
handler t2 read a first limit 5;
|
||||
handler t2 read a=(15);
|
||||
a b
|
||||
handler t2 read a>=(15) limit 2;
|
||||
a b
|
||||
16 ccc
|
||||
16 xxx
|
||||
handler t2 read a>(15) limit 2;
|
||||
a b
|
||||
16 ccc
|
||||
16 xxx
|
||||
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 b first limit 5;
|
||||
a b
|
||||
14 aaa
|
||||
15 bbb
|
||||
16 ccc
|
||||
16 xxx
|
||||
17 ddd
|
||||
handler t2 read a next limit 3;
|
||||
a b
|
||||
18 eee
|
||||
handler t2 read b next limit 3;
|
||||
a b
|
||||
19 fff
|
||||
19 yyy
|
||||
handler t2 read a prev limit 10;
|
||||
20 ggg
|
||||
handler t2 read b 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;
|
||||
handler t2 read b>=(16) limit 4;
|
||||
a b
|
||||
16 ccc
|
||||
16 xxx
|
||||
17 ddd
|
||||
18 eee
|
||||
handler t2 read a>=(16) limit 2,2;
|
||||
handler t2 read b>=(16) limit 2,2;
|
||||
a b
|
||||
17 ddd
|
||||
18 eee
|
||||
select * from t1 where a>=16 order by a,b limit 2,2;
|
||||
a b
|
||||
17 ddd
|
||||
18 eee
|
||||
@ -120,10 +161,13 @@ a b
|
||||
22 iii
|
||||
21 hhh
|
||||
20 ggg
|
||||
handler t2 read a=(19);
|
||||
handler t2 read b=(16) limit 1,3;
|
||||
a b
|
||||
16 xxx
|
||||
handler t2 read b=(19);
|
||||
a b
|
||||
19 fff
|
||||
handler t2 read a=(19) where b="yyy";
|
||||
handler t2 read b=(19) where b="yyy";
|
||||
a b
|
||||
19 yyy
|
||||
handler t2 read first;
|
||||
@ -135,16 +179,14 @@ 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;
|
||||
handler t1 read b next;
|
||||
a b
|
||||
14 aaa
|
||||
handler t1 read a next;
|
||||
handler t1 read b next;
|
||||
a b
|
||||
15 bbb
|
||||
16 ccc
|
||||
handler t1 close;
|
||||
handler t1 open;
|
||||
handler t1 read a prev;
|
||||
@ -161,14 +203,135 @@ a b
|
||||
alter table t1 engine = MyISAM;
|
||||
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);
|
||||
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;
|
||||
@ -191,7 +354,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);
|
||||
@ -229,148 +392,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;
|
||||
@ -495,6 +516,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);
|
||||
@ -515,14 +541,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;
|
||||
@ -535,50 +559,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
|
||||
@ -591,24 +574,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
|
||||
@ -625,39 +609,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 b=(9);
|
||||
a b
|
||||
9 j
|
||||
handler a2 read a prev;
|
||||
handler a2 read b next;
|
||||
a b
|
||||
9 k
|
||||
handler a2 read b prev limit 2;
|
||||
a b
|
||||
9 j
|
||||
8 i
|
||||
handler a2 read b last;
|
||||
a b
|
||||
9 k
|
||||
handler a2 read b prev;
|
||||
a b
|
||||
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;
|
||||
@ -667,7 +640,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;
|
||||
@ -680,7 +653,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
|
||||
@ -688,7 +661,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;
|
||||
@ -703,44 +676,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
|
||||
#
|
||||
@ -757,19 +705,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));
|
||||
@ -821,12 +756,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 #
|
@ -2617,6 +2617,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
|
||||
|
@ -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 #
|
||||
|
@ -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
|
||||
|
||||
|
@ -48,7 +48,7 @@ insert t1 select * from t2;
|
||||
connection locker;
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and info = "insert t1 select * from t2";
|
||||
where state = "Table Lock" and info = "insert t1 select * from t2";
|
||||
--source include/wait_condition.inc
|
||||
drop table t2;
|
||||
connection reader;
|
||||
@ -72,7 +72,7 @@ connection locker;
|
||||
# Sleep a bit till the insert of connection reader is in work and hangs
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and info = "insert t1 select * from t2";
|
||||
where state = "Table Lock" and info = "insert t1 select * from t2";
|
||||
--source include/wait_condition.inc
|
||||
drop table t2;
|
||||
connection reader;
|
||||
@ -251,7 +251,7 @@ connection reader;
|
||||
# Wait till connection writer is blocked
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and info = "alter table t1 auto_increment=0";
|
||||
where state = "Table Lock" and info = "alter table t1 auto_increment=0";
|
||||
--source include/wait_condition.inc
|
||||
send
|
||||
alter table t1 auto_increment=0;
|
||||
@ -259,7 +259,7 @@ connection locker;
|
||||
# Wait till connection reader is blocked
|
||||
let $wait_condition=
|
||||
select count(*) = 2 from information_schema.processlist
|
||||
where state = "Locked" and info = "alter table t1 auto_increment=0";
|
||||
where state = "Table Lock" and info = "alter table t1 auto_increment=0";
|
||||
--source include/wait_condition.inc
|
||||
unlock tables;
|
||||
connection writer;
|
||||
@ -414,16 +414,16 @@ update t1 set i= 10;
|
||||
connection reader;
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and info = "update t1 set i= 10";
|
||||
where state = "Table Lock" and info = "update t1 set i= 10";
|
||||
--source include/wait_condition.inc
|
||||
send
|
||||
select * from t1;
|
||||
connection default;
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and info = "select * from t1";
|
||||
where state = "Table Lock" and info = "select * from t1";
|
||||
--source include/wait_condition.inc
|
||||
let $ID= `select id from information_schema.processlist where state = "Locked" and info = "update t1 set i= 10"`;
|
||||
let $ID= `select id from information_schema.processlist where state = "Table Lock" and info = "update t1 set i= 10"`;
|
||||
--replace_result $ID ID
|
||||
eval kill query $ID;
|
||||
connection reader;
|
||||
@ -557,7 +557,7 @@ connection waiter;
|
||||
connection default;
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and info = "insert into t1 values(1)";
|
||||
where state = "Table Lock" and info = "insert into t1 values(1)";
|
||||
--source include/wait_condition.inc
|
||||
let $tlwb= `show status like 'Table_locks_waited'`;
|
||||
unlock tables;
|
||||
|
@ -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;
|
||||
|
@ -37,9 +37,9 @@ INSERT INTO t1(name) VALUES('Record_7');
|
||||
connection default;
|
||||
## show processlist info and state ##
|
||||
SELECT state,info FROM INFORMATION_SCHEMA.PROCESSLIST
|
||||
WHERE state= "Locked" AND info LIKE "INSERT INTO t1%";
|
||||
WHERE state= "Table Lock" AND info LIKE "INSERT INTO t1%";
|
||||
state info
|
||||
Locked INSERT INTO t1(name) VALUES('Record_7')
|
||||
Table lock INSERT INTO t1(name) VALUES('Record_7')
|
||||
## table contents befor UNLOCK ##
|
||||
SELECT * FROM t1;
|
||||
name
|
||||
|
@ -98,12 +98,12 @@ INSERT INTO t1(name) VALUES('Record_7');
|
||||
connection default;
|
||||
# wait until INSERT will be locked (low performance)
|
||||
let $wait_condition= SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST
|
||||
WHERE state= "Locked" AND info LIKE "INSERT INTO t1%";
|
||||
WHERE state= "Table Lock" AND info LIKE "INSERT INTO t1%";
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--echo ## show processlist info and state ##
|
||||
SELECT state,info FROM INFORMATION_SCHEMA.PROCESSLIST
|
||||
WHERE state= "Locked" AND info LIKE "INSERT INTO t1%";
|
||||
WHERE state= "Table Lock" AND info LIKE "INSERT INTO t1%";
|
||||
--echo ## table contents befor UNLOCK ##
|
||||
SELECT * FROM t1;
|
||||
UNLOCK TABLES;
|
||||
|
@ -122,7 +122,7 @@ connection default;
|
||||
--echo ** Wait till con0 is blocked **
|
||||
let $wait_condition=
|
||||
SELECT COUNT(*) = 1 FROM information_schema.processlist
|
||||
WHERE state = 'Locked' AND info = '$my_select';
|
||||
WHERE state = "Table Lock" AND info = '$my_select';
|
||||
--source include/wait_condition.inc
|
||||
UNLOCK TABLES;
|
||||
|
||||
@ -207,7 +207,7 @@ connection default;
|
||||
--echo ** Wait till con0 is blocked **
|
||||
let $wait_condition=
|
||||
SELECT COUNT(*) = 1 FROM information_schema.processlist
|
||||
WHERE state = 'Locked' AND info = '$my_select';
|
||||
WHERE state = "Table Lock" AND info = '$my_select';
|
||||
--source include/wait_condition.inc
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
@ -139,7 +139,7 @@ send SELECT * FROM t1;
|
||||
connection con0;
|
||||
|
||||
--echo wait until table is locked
|
||||
let $wait_condition= SELECT count(*) > 0 FROM information_schema.processlist WHERE state= 'Locked';
|
||||
let $wait_condition= SELECT count(*) > 0 FROM information_schema.processlist WHERE state= "Table Lock";
|
||||
--source include/wait_condition.inc
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
@ -85,7 +85,7 @@ delimiter ;|
|
||||
--echo ** Connection con0 **
|
||||
connection con0;
|
||||
|
||||
let $wait_condition = SELECT COUNT(*) > 0 FROM information_schema.processlist WHERE state='Locked' AND info LIKE 'UPDATE t1 SET a = CONCAT(a,"-updated")';
|
||||
let $wait_condition = SELECT COUNT(*) > 0 FROM information_schema.processlist WHERE state="Table Lock" AND info LIKE 'UPDATE t1 SET a = CONCAT(a,"-updated")';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--echo ** Asynchronous Execution **
|
||||
@ -101,7 +101,7 @@ delimiter ;|
|
||||
--echo ** Connection default **
|
||||
connection default;
|
||||
|
||||
let $wait_condition= SELECT count(*) = 2 FROM information_schema.processlist WHERE state LIKE 'Locked';
|
||||
let $wait_condition= SELECT count(*) = 2 FROM information_schema.processlist WHERE state LIKE "Table Lock";
|
||||
--source include/wait_condition.inc
|
||||
UNLOCK TABLES;
|
||||
|
||||
@ -156,7 +156,7 @@ delimiter ;|
|
||||
--echo ** Connection con0 **
|
||||
connection con0;
|
||||
|
||||
let $wait_condition = SELECT COUNT(*) > 0 FROM information_schema.processlist WHERE state='Locked' AND info LIKE 'UPDATE t1 SET a = CONCAT(a,"-updated")';
|
||||
let $wait_condition = SELECT COUNT(*) > 0 FROM information_schema.processlist WHERE state="Table Lock" AND info LIKE 'UPDATE t1 SET a = CONCAT(a,"-updated")';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--echo ** Asynchronous Execution **
|
||||
@ -172,7 +172,7 @@ delimiter ;|
|
||||
--echo ** Connection default **
|
||||
connection default;
|
||||
|
||||
let $wait_condition= SELECT count(*) = 2 FROM information_schema.processlist WHERE state LIKE 'Locked';
|
||||
let $wait_condition= SELECT count(*) = 2 FROM information_schema.processlist WHERE state LIKE "Table Lock";
|
||||
--source include/wait_condition.inc
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
@ -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
|
||||
|
@ -1,20 +0,0 @@
|
||||
# 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 include/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
|
@ -174,7 +174,7 @@ connection default;
|
||||
# we must wait till the insert opens and locks the table
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and id = $ID;
|
||||
where state = "Table lock" and id = $ID;
|
||||
--source include/wait_condition.inc
|
||||
connect (select,localhost,root,,);
|
||||
--echo connection: select
|
||||
|
@ -1,3 +1,5 @@
|
||||
--source include/long_test.inc
|
||||
|
||||
#
|
||||
# test of left outer join
|
||||
#
|
||||
|
@ -24,7 +24,7 @@ connection reader;
|
||||
# Sleep a bit till the update of connection writer is in work and hangs
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and info = "update low_priority t1 set n = 4";
|
||||
where state = "Table lock" and info = "update low_priority t1 set n = 4";
|
||||
--source include/wait_condition.inc
|
||||
send
|
||||
select n from t1;
|
||||
@ -32,7 +32,7 @@ connection locker;
|
||||
# Sleep a bit till the select of connection reader is in work and hangs
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and info = "select n from t1";
|
||||
where state = "Table lock" and info = "select n from t1";
|
||||
--source include/wait_condition.inc
|
||||
unlock tables;
|
||||
connection writer;
|
||||
@ -52,7 +52,7 @@ connection reader;
|
||||
# Sleep a bit till the update of connection writer is in work and hangs
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and info = "update low_priority t1 set n = 4";
|
||||
where state = "Table Lock" and info = "update low_priority t1 set n = 4";
|
||||
--source include/wait_condition.inc
|
||||
select n from t1;
|
||||
connection locker;
|
||||
@ -96,7 +96,7 @@ insert t1 select * from t2;
|
||||
connection locker;
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and info = "insert t1 select * from t2";
|
||||
where state = "Table Lock" and info = "insert t1 select * from t2";
|
||||
--source include/wait_condition.inc
|
||||
drop table t2;
|
||||
connection reader;
|
||||
@ -120,7 +120,7 @@ connection locker;
|
||||
# Sleep a bit till the insert of connection reader is in work and hangs
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and info = "insert t1 select * from t2";
|
||||
where state = "Table Lock" and info = "insert t1 select * from t2";
|
||||
--source include/wait_condition.inc
|
||||
drop table t2;
|
||||
connection reader;
|
||||
@ -299,7 +299,7 @@ connection reader;
|
||||
# Wait till connection writer is blocked
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and info = "alter table t1 auto_increment=0";
|
||||
where state = "Table Lock" and info = "alter table t1 auto_increment=0";
|
||||
--source include/wait_condition.inc
|
||||
send
|
||||
alter table t1 auto_increment=0;
|
||||
@ -307,7 +307,7 @@ connection locker;
|
||||
# Wait till connection reader is blocked
|
||||
let $wait_condition=
|
||||
select count(*) = 2 from information_schema.processlist
|
||||
where state = "Locked" and info = "alter table t1 auto_increment=0";
|
||||
where state = "Table Lock" and info = "alter table t1 auto_increment=0";
|
||||
--source include/wait_condition.inc
|
||||
unlock tables;
|
||||
connection writer;
|
||||
@ -462,16 +462,16 @@ update t1 set i= 10;
|
||||
connection reader;
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and info = "update t1 set i= 10";
|
||||
where state = "Table Lock" and info = "update t1 set i= 10";
|
||||
--source include/wait_condition.inc
|
||||
send
|
||||
select * from t1;
|
||||
connection default;
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and info = "select * from t1";
|
||||
where state = "Table Lock" and info = "select * from t1";
|
||||
--source include/wait_condition.inc
|
||||
let $ID= `select id from information_schema.processlist where state = "Locked" and info = "update t1 set i= 10"`;
|
||||
let $ID= `select id from information_schema.processlist where state = "Table Lock" and info = "update t1 set i= 10"`;
|
||||
--replace_result $ID ID
|
||||
eval kill query $ID;
|
||||
connection reader;
|
||||
@ -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;
|
||||
@ -622,7 +606,7 @@ connection waiter;
|
||||
connection default;
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and info = "insert into t1 values(1)";
|
||||
where state = "Table Lock" and info = "insert into t1 values(1)";
|
||||
--source include/wait_condition.inc
|
||||
let $tlwb= `show status like 'Table_locks_waited'`;
|
||||
unlock tables;
|
||||
|
@ -52,7 +52,7 @@ connection default;
|
||||
#--sleep 8
|
||||
#SELECT ID,STATE,INFO FROM INFORMATION_SCHEMA.PROCESSLIST;
|
||||
let $wait_condition= SELECT 1 FROM INFORMATION_SCHEMA.PROCESSLIST
|
||||
WHERE ID = $con1_id AND STATE = 'Locked';
|
||||
WHERE ID = $con1_id AND STATE = "Table Lock";
|
||||
--source include/wait_condition.inc
|
||||
#SELECT NOW();
|
||||
--echo # Kick INSERT out of thr_multi_lock().
|
||||
|
@ -498,9 +498,9 @@ send alter table t1 add column c int default 100 after a;
|
||||
connect (updater,localhost,root,,test);
|
||||
connection updater;
|
||||
# Wait till "alter table t1 ..." of session changer is in work.
|
||||
# = There is one session is in state "Locked".
|
||||
# = There is one session is in state "Table Lock".
|
||||
let $wait_condition= select count(*)= 1 from information_schema.processlist
|
||||
where state= 'Locked';
|
||||
where state= "Table Lock";
|
||||
--source include/wait_condition.inc
|
||||
send update t1, v1 set t1.b=t1.a+t1.b+v1.b where t1.a=v1.a;
|
||||
|
||||
@ -509,9 +509,9 @@ connection locker;
|
||||
# - "alter table t1 ..." of session changer and
|
||||
# - "update t1, v1 ..." of session updater
|
||||
# are in work.
|
||||
# = There are two session is in state "Locked".
|
||||
# = There are two session is in state "Table Lock".
|
||||
let $wait_condition= select count(*)= 2 from information_schema.processlist
|
||||
where state= 'Locked';
|
||||
where state= "Table Lock";
|
||||
--source include/wait_condition.inc
|
||||
unlock tables;
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
--source include/long_test.inc
|
||||
|
||||
#
|
||||
# Test of update statement that uses many tables.
|
||||
#
|
||||
|
@ -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
|
||||
|
@ -64,12 +64,12 @@ connection user3;
|
||||
# The values marked with 'X' must be reached.
|
||||
--echo # Poll till the select of connection user1 is blocked by the write lock on t1.
|
||||
let $wait_condition= SELECT COUNT(*) = 1 FROM information_schema.processlist
|
||||
WHERE state = 'Locked'
|
||||
WHERE state = "Table Lock"
|
||||
AND info = '$select_for_qc';
|
||||
--source include/wait_condition.inc
|
||||
eval
|
||||
SELECT user,command,state,info FROM information_schema.processlist
|
||||
WHERE state = 'Locked'
|
||||
WHERE state = "Table Lock"
|
||||
AND info = '$select_for_qc';
|
||||
INSERT INTO t1 VALUES (4);
|
||||
|
||||
|
@ -276,7 +276,7 @@ set session low_priority_updates=on;
|
||||
connection rl_wait;
|
||||
let $wait_condition=
|
||||
select count(*) = 1 from information_schema.processlist
|
||||
where state = "Locked" and
|
||||
where state = "Table lock" and
|
||||
info = "update t1 set value='updated' where value='old'";
|
||||
--source include/wait_condition.inc
|
||||
|
||||
|
@ -34,7 +34,7 @@ SET DEBUG_SYNC = 'multi_update_reopen_tables SIGNAL parked WAIT_FOR go';
|
||||
|
||||
connection con1;
|
||||
let $wait_condition= SELECT 1 FROM information_schema.processlist WHERE ID = $ID AND
|
||||
state = "Locked";
|
||||
state = "Table lock";
|
||||
--source include/wait_condition.inc
|
||||
DROP TABLE t1, t2;
|
||||
SET DEBUG_SYNC = 'now WAIT_FOR parked';
|
||||
|
@ -58,7 +58,7 @@ let $ID= `select connection_id()`;
|
||||
connection con2;
|
||||
--echo # Switched to connection: con2
|
||||
# wait for the other query to start executing
|
||||
let $wait_condition= select 1 from INFORMATION_SCHEMA.PROCESSLIST where ID = $ID and STATE = "Locked";
|
||||
let $wait_condition= select 1 from INFORMATION_SCHEMA.PROCESSLIST where ID = $ID and STATE = "Table Lock";
|
||||
--source include/wait_condition.inc
|
||||
unlock tables;
|
||||
|
||||
|
@ -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 #
|
||||
|
@ -467,3 +467,35 @@ HAVING
|
||||
field4 != 6;
|
||||
|
||||
drop table t0,t1,t2,t3,t4,t5,t6;
|
||||
|
||||
--echo #
|
||||
--echo # BUG#675118: Elimination of a table results in an invalid execution plan
|
||||
--echo #
|
||||
CREATE TABLE t1 (f1 int(11), PRIMARY KEY (f1)) ;
|
||||
|
||||
CREATE TABLE t2 (f4 varchar(1024), KEY (f4)) ;
|
||||
INSERT IGNORE INTO t2 VALUES ('xcddwntkbxyorzdv'),
|
||||
('cnxxcddwntkbxyor'),('r'),('r'), ('did'),('I'),('when'),
|
||||
('hczkfqjeggivdvac'),('e'),('okay'),('up');
|
||||
|
||||
CREATE TABLE t3 (f4 varchar(1024), f1 int(11), f2 int(11)) ;
|
||||
INSERT IGNORE INTO t3 VALUES ('f','4','0'),('n','5','-996540416');
|
||||
|
||||
CREATE TABLE t4 (f1 int(11), f3 varchar(10)) ;
|
||||
INSERT IGNORE INTO t4 VALUES ('8','n'),('9','nwzcerzsgx'),('10','c');
|
||||
|
||||
CREATE TABLE t5 (f5 int(11), KEY (f5)) ;
|
||||
|
||||
EXPLAIN
|
||||
SELECT t3.f2
|
||||
FROM t2
|
||||
LEFT JOIN t3
|
||||
LEFT JOIN t4
|
||||
LEFT JOIN t1 ON t4.f1 = t1.f1
|
||||
JOIN t5 ON t4.f3 ON t3.f1 = t5.f5 ON t2.f4 = t3.f4
|
||||
WHERE t3.f2 ;
|
||||
--echo # ^^ The above must not produce a QEP of t3,t5,t2,t4
|
||||
--echo # as that violates the "no interleaving of outer join nests" rule.
|
||||
|
||||
DROP TABLE t1,t2,t3,t4,t5;
|
||||
|
||||
|
@ -916,7 +916,7 @@ INSERT INTO t1 VALUES (5);
|
||||
CONNECTION rl_contender;
|
||||
# Wait until wl_acquirer is waiting for the read lock on t2 to be released.
|
||||
let $wait_condition=
|
||||
SELECT STATE = 'Locked' FROM INFORMATION_SCHEMA.PROCESSLIST
|
||||
SELECT STATE = "Table Lock" FROM INFORMATION_SCHEMA.PROCESSLIST
|
||||
WHERE ID = $wl_acquirer_thread_id;
|
||||
--source include/wait_condition.inc
|
||||
# must not "see" the row inserted by the INSERT (as it must run before the
|
||||
|
@ -36,7 +36,7 @@
|
||||
|
||||
uint thr_client_alarm;
|
||||
static int alarm_aborted=1; /* No alarm thread */
|
||||
my_bool thr_alarm_inited= 0;
|
||||
my_bool thr_alarm_inited= 0, my_disable_thr_alarm= 0;
|
||||
volatile my_bool alarm_thread_running= 0;
|
||||
time_t next_alarm_expire_time= ~ (time_t) 0;
|
||||
static sig_handler process_alarm_part2(int sig);
|
||||
@ -173,6 +173,21 @@ my_bool thr_alarm(thr_alarm_t *alrm, uint sec, ALARM *alarm_data)
|
||||
DBUG_ENTER("thr_alarm");
|
||||
DBUG_PRINT("enter",("thread: %s sec: %d",my_thread_name(),sec));
|
||||
|
||||
if (my_disable_thr_alarm)
|
||||
{
|
||||
(*alrm)= &alarm_data->alarmed;
|
||||
alarm_data->alarmed= 1; /* Abort if interrupted */
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
if (unlikely(alarm_aborted))
|
||||
{ /* No signal thread */
|
||||
DBUG_PRINT("info", ("alarm aborted"));
|
||||
if (alarm_aborted > 0)
|
||||
goto abort_no_unlock;
|
||||
sec= 1; /* Abort mode */
|
||||
}
|
||||
|
||||
now= my_time(0);
|
||||
if (!alarm_data)
|
||||
{
|
||||
@ -190,13 +205,6 @@ my_bool thr_alarm(thr_alarm_t *alrm, uint sec, ALARM *alarm_data)
|
||||
|
||||
one_signal_hand_sigmask(SIG_BLOCK,&full_signal_set,&old_mask);
|
||||
pthread_mutex_lock(&LOCK_alarm); /* Lock from threads & alarms */
|
||||
if (unlikely(alarm_aborted))
|
||||
{ /* No signal thread */
|
||||
DBUG_PRINT("info", ("alarm aborted"));
|
||||
if (alarm_aborted > 0)
|
||||
goto abort;
|
||||
sec= 1; /* Abort mode */
|
||||
}
|
||||
if (alarm_queue.elements >= max_used_alarms)
|
||||
{
|
||||
if (alarm_queue.elements == alarm_queue.max_elements)
|
||||
@ -251,6 +259,8 @@ void thr_end_alarm(thr_alarm_t *alarmed)
|
||||
#endif
|
||||
DBUG_ENTER("thr_end_alarm");
|
||||
|
||||
if (my_disable_thr_alarm)
|
||||
DBUG_VOID_RETURN;
|
||||
one_signal_hand_sigmask(SIG_BLOCK,&full_signal_set,&old_mask);
|
||||
alarm_data= (ALARM*) ((uchar*) *alarmed - offsetof(ALARM,alarmed));
|
||||
pthread_mutex_lock(&LOCK_alarm);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user