mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge jmiller@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into mysql.com:/home/ndbdev/jmiller/clones/mysql-5.1-new
This commit is contained in:
@ -3,5 +3,12 @@
|
||||
|
||||
--source include/not_windows.inc
|
||||
|
||||
# check that CSV engine was compiled in, as IM the test suite uses
|
||||
# logs tables-specific option and the option is not present if CSV
|
||||
# (and => the log tables) are not in.
|
||||
# NOTE: In future we should remove this check and make the test suite
|
||||
# to pass correct opyions to IM depending on the CSV presence
|
||||
--source include/have_csv.inc
|
||||
|
||||
--connection default
|
||||
--disconnect dflt_server_con
|
||||
|
750
mysql-test/include/partition_1.inc
Normal file
750
mysql-test/include/partition_1.inc
Normal file
@ -0,0 +1,750 @@
|
||||
-- source include/have_partition.inc
|
||||
|
||||
# include/partition_1.inc
|
||||
#
|
||||
# Partitionong tests
|
||||
#
|
||||
# Attention: The variable
|
||||
# $engine -- Storage engine to be tested.
|
||||
# must be set within the script sourcing this file.
|
||||
#
|
||||
--disable_abort_on_error
|
||||
SET AUTOCOMMIT= 1;
|
||||
|
||||
##### Disabled testcases, because of open bugs #####
|
||||
--echo
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # There are several testcases disabled because ouf the open bugs
|
||||
--echo # #15407 , #15408 , #15890 , #15961 , #13447 , #15966 , #15968, #16370
|
||||
--echo #------------------------------------------------------------------------
|
||||
# Bug#15407 Partitions: crash if subpartition
|
||||
let $fixed_bug15407= 0;
|
||||
# Bug#15408 Partitions: subpartition names are not unique
|
||||
let $fixed_bug15408= 0;
|
||||
# Bug#15890 Partitions: Strange interpretation of partition number
|
||||
let $fixed_bug15890= 0;
|
||||
# Bug#15961 Partitions: Creation of subpart. table without subpart. rule not rejected
|
||||
let $fixed_bug15961= 0;
|
||||
# Bug#13447 Partitions: crash with alter table
|
||||
let $fixed_bug13447= 0;
|
||||
# Bug#15966 Partitions: crash if session default engine <> engine used in create table
|
||||
let $fixed_bug15966= 0;
|
||||
# Bug#15968 Partitions: crash when INSERT with f1 = -1 into PARTITION BY HASH(f1)
|
||||
let $fixed_bug15968= 0;
|
||||
# Bug #16370 Partitions: subpartitions names not mentioned in SHOW CREATE TABLE output
|
||||
let $fixed_bug16370= 0;
|
||||
|
||||
##### Option, for displaying files #####
|
||||
#
|
||||
# Attention: Displaying the directory content via "ls var/master-data/test/t*"
|
||||
# is probably not portable.
|
||||
# let $ls= 0; disables the execution of "ls ....."
|
||||
let $ls= 0;
|
||||
|
||||
################################################################################
|
||||
# Partitioning syntax
|
||||
#
|
||||
# CREATE TABLE .... (column-list ..)
|
||||
# PARTITION BY
|
||||
# KEY '(' ( column-list ) ')'
|
||||
# | RANGE '(' ( expr ) ')'
|
||||
# | LIST '(' ( expr ) ')'
|
||||
# | HASH '(' ( expr ) ')'
|
||||
# [PARTITIONS num ]
|
||||
# [SUBPARTITION BY
|
||||
# KEY '(' ( column-list ) ')'
|
||||
# | HASH '(' ( expr ) ')'
|
||||
# [SUBPARTITIONS num ]
|
||||
# ]
|
||||
# [ '('
|
||||
# ( PARTITION logical-name
|
||||
# [ VALUES LESS THAN '(' ( expr | MAX_VALUE ) ')' ]
|
||||
# [ VALUES IN '(' (expr)+ ')' ]
|
||||
# [ TABLESPACE tablespace-name ]
|
||||
# [ [ STORAGE ] ENGINE [ '=' ] storage-engine-name ]
|
||||
# [ NODEGROUP nodegroup-id ]
|
||||
# [ '('
|
||||
# ( SUBPARTITION logical-name
|
||||
# [ TABLESPACE tablespace-name ]
|
||||
# [ STORAGE ENGINE = storage-engine-name ]
|
||||
# [ NODEGROUP nodegroup-id ]
|
||||
# )+
|
||||
# ')'
|
||||
# )+
|
||||
# ')'
|
||||
# ]
|
||||
################################################################################
|
||||
|
||||
--echo
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # 0. Setting of auxiliary variables + Creation of an auxiliary table
|
||||
--echo # needed in all testcases
|
||||
--echo #------------------------------------------------------------------------
|
||||
let $max_row= `SELECT @max_row`;
|
||||
let $max_row_div2= `SELECT @max_row DIV 2`;
|
||||
let $max_row_div3= `SELECT @max_row DIV 3`;
|
||||
let $max_row_div4= `SELECT @max_row DIV 4`;
|
||||
let $max_int_4= 2147483647;
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t0_template;
|
||||
--enable_warnings
|
||||
CREATE TABLE t0_template ( f1 INTEGER, f2 char(20), PRIMARY KEY(f1))
|
||||
ENGINE = MEMORY;
|
||||
--echo # Logging of <max_row> INSERTs into t0_template suppressed
|
||||
--disable_query_log
|
||||
let $num= $max_row;
|
||||
while ($num)
|
||||
{
|
||||
eval INSERT INTO t0_template SET f1 = $num, f2 = '---$num---';
|
||||
|
||||
dec $num;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
--echo
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # 1. Some syntax checks
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # 1.1 Subpartioned table without subpartitioning rule must be rejected
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
if ($fixed_bug15961)
|
||||
{
|
||||
# Bug#15961 Partitions: Creation of subpart. table without subpart. rule not rejected
|
||||
--error 9999
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
( PARTITION part1 VALUES LESS THAN (1000) (SUBPARTITION subpart11));
|
||||
}
|
||||
--echo # FIXME Implement testcases, where it is checked that all create and
|
||||
--echo # alter table statements
|
||||
--echo # - with missing mandatory parameters are rejected
|
||||
--echo # - with optional parameters are accepted
|
||||
--echo # - with wrong combinations of optional parameters are rejected
|
||||
--echo # - ............
|
||||
|
||||
--echo
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # 2. Checks where the engine is assigned on all supported (CREATE TABLE
|
||||
--echo # statement) positions + basic operations on the tables
|
||||
--echo # Storage engine mixups are currently (2005-12-23) not supported
|
||||
--echo #------------------------------------------------------------------------
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
--echo # 2.1 non partitioned table (for comparison)
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20)) ENGINE = $engine;
|
||||
# MLML Full size (as check of check routine)
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
#
|
||||
--echo # 2.2 Assignment of storage engine just after column list only
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20)) ENGINE = $engine
|
||||
PARTITION BY HASH(f1) PARTITIONS 2;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
#
|
||||
--echo # 2.3 Assignment of storage engine just after partition or subpartition
|
||||
--echo # name only
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1)
|
||||
( PARTITION part1 STORAGE ENGINE = $engine,
|
||||
PARTITION part2 STORAGE ENGINE = $engine
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN ($max_row_div2)
|
||||
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
|
||||
PARTITION part2 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart21 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart22 STORAGE ENGINE = $engine)
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
#
|
||||
--echo # 2.4 Some but not all named partitions or subpartitions get a storage
|
||||
--echo # engine assigned
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1)
|
||||
( PARTITION part1 STORAGE ENGINE = $engine,
|
||||
PARTITION part2
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1)
|
||||
( PARTITION part1 ,
|
||||
PARTITION part2 STORAGE ENGINE = $engine
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN ($max_row_div2)
|
||||
(SUBPARTITION subpart11,
|
||||
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
|
||||
PARTITION part2 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart21 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart22 STORAGE ENGINE = $engine)
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN ($max_row_div2)
|
||||
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
|
||||
PARTITION part2 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart21,
|
||||
SUBPARTITION subpart22 )
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
#
|
||||
--echo # 2.5 Storage engine assignment after partition name + after name of
|
||||
--echo # subpartitions belonging to another partition
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN ($max_row_div2) ENGINE = $engine
|
||||
(SUBPARTITION subpart11,
|
||||
SUBPARTITION subpart12),
|
||||
PARTITION part2 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart21 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart22 STORAGE ENGINE = $engine)
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN ($max_row_div2)
|
||||
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
|
||||
PARTITION part2 VALUES LESS THAN ($max_int_4) ENGINE = $engine
|
||||
(SUBPARTITION subpart21,
|
||||
SUBPARTITION subpart22)
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
#
|
||||
--echo # 2.6 Precedence of storage engine assignments
|
||||
--echo # 2.6.1 Storage engine assignment after column list + after partition
|
||||
--echo # or subpartition name
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20)) ENGINE = $engine
|
||||
PARTITION BY HASH(f1)
|
||||
( PARTITION part1 STORAGE ENGINE = $engine,
|
||||
PARTITION part2 STORAGE ENGINE = $engine
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20)) ENGINE = $engine
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN ($max_row_div2)
|
||||
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
|
||||
PARTITION part2 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart21 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart22 STORAGE ENGINE = $engine)
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
--echo # 2.6.2 Storage engine assignment after partition name + after
|
||||
--echo # subpartition name
|
||||
# in partition part + in sub partition part
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN ($max_row_div2) STORAGE ENGINE = $engine
|
||||
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart12 STORAGE ENGINE = $engine),
|
||||
PARTITION part2 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart21 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart22 STORAGE ENGINE = $engine)
|
||||
);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # 2.7 Session default engine differs from engine used within create table
|
||||
eval SET SESSION storage_engine=$engine_other;
|
||||
if ($fixed_bug15966)
|
||||
{
|
||||
# Bug#15966 Partitions: crash if session default engine <> engine used in create table
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) ( PARTITION part1 ENGINE = $engine);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
# Bug#15966 Partitions: crash if session default engine <> engine used in create table
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11 STORAGE ENGINE = $engine,
|
||||
SUBPARTITION subpart12 STORAGE ENGINE = $engine));
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
}
|
||||
eval SET SESSION storage_engine=$engine;
|
||||
|
||||
|
||||
--echo
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # 3. Check assigning the number of partitions and subpartitions
|
||||
--echo # with and without named partitions/subpartitions
|
||||
--echo #------------------------------------------------------------------------
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
--echo # 3.1 (positive) without partition/subpartition number assignment
|
||||
--echo # 3.1.1 no partition number, no named partitions
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
--echo # 3.1.2 no partition number, named partitions
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) (PARTITION part1, PARTITION part2);
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
# Attention: Several combinations are impossible
|
||||
# If subpartitioning exists
|
||||
# - partitioning algorithm must be RANGE or LIST
|
||||
# This implies the assignment of named partitions.
|
||||
# - subpartitioning algorithm must be HASH or KEY
|
||||
--echo # 3.1.3 variations on no partition/subpartition number, named partitions,
|
||||
--echo # different subpartitions are/are not named
|
||||
#
|
||||
# Partition name -- "properties"
|
||||
# part1 -- first/non last
|
||||
# part2 -- non first/non last
|
||||
# part3 -- non first/ last
|
||||
#
|
||||
# Testpattern:
|
||||
# named subpartitions in
|
||||
# Partition part1 part2 part3
|
||||
# N N N
|
||||
# N N Y
|
||||
# N Y N
|
||||
# N Y Y
|
||||
# Y N N
|
||||
# Y N Y
|
||||
# Y Y N
|
||||
# Y Y Y
|
||||
--disable_query_log
|
||||
let $part0= CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1) SUBPARTITION BY HASH(f1);
|
||||
#
|
||||
eval SET @aux = '(PARTITION part1 VALUES LESS THAN ($max_row_div2),';
|
||||
let $part1_N= `SELECT @AUX`;
|
||||
eval SET @aux = '(PARTITION part1 VALUES LESS THAN ($max_row_div2)
|
||||
(SUBPARTITION subpart11 , SUBPARTITION subpart12 ),';
|
||||
let $part1_Y= `SELECT @AUX`;
|
||||
#
|
||||
eval SET @aux = 'PARTITION part2 VALUES LESS THAN ($max_row),';
|
||||
let $part2_N= `SELECT @AUX`;
|
||||
eval SET @aux = 'PARTITION part2 VALUES LESS THAN ($max_row)
|
||||
(SUBPARTITION subpart21 , SUBPARTITION subpart22 ),';
|
||||
let $part2_Y= `SELECT @AUX`;
|
||||
#
|
||||
eval SET @aux = 'PARTITION part3 VALUES LESS THAN ($max_int_4))';
|
||||
let $part3_N= `SELECT @AUX`;
|
||||
eval SET @aux = 'PARTITION part3 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart31 , SUBPARTITION subpart32 ))';
|
||||
let $part3_Y= `SELECT @AUX`;
|
||||
--enable_query_log
|
||||
|
||||
eval $part0 $part1_N $part2_N $part3_N ;
|
||||
DROP TABLE t1;
|
||||
# Bug#15407 Partitions: crash if subpartition
|
||||
if ($fixed_bug15407)
|
||||
{
|
||||
eval $part0 $part1_N $part2_N $part3_Y ;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval $part0 $part1_N $part2_Y $part3_N ;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval $part0 $part1_N $part2_Y $part3_Y ;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval $part0 $part1_Y $part2_N $part3_N ;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval $part0 $part1_Y $part2_N $part3_Y ;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
eval $part0 $part1_Y $part2_Y $part3_N ;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
}
|
||||
eval $part0 $part1_Y $part2_Y $part3_Y ;
|
||||
--source include/partition_10.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # 3.2 partition/subpartition numbers good and bad values and notations
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
--echo # 3.2.1 partition/subpartition numbers INTEGER notation
|
||||
# ML: "positive/negative" is my private judgement. It need no to correspond
|
||||
# with the server response.
|
||||
# (positive) number = 2
|
||||
let $part_number= 2;
|
||||
--source include/partition_11.inc
|
||||
# (positive) special case number = 1
|
||||
let $part_number= 1;
|
||||
--source include/partition_11.inc
|
||||
# (negative) 0 is non sense
|
||||
let $part_number= 0;
|
||||
--source include/partition_11.inc
|
||||
# (negative) -1 is non sense
|
||||
let $part_number= -1;
|
||||
--source include/partition_11.inc
|
||||
# (negative) 1000000 is too huge
|
||||
let $part_number= 1000000;
|
||||
--source include/partition_11.inc
|
||||
|
||||
if ($fixed_bug15890)
|
||||
{
|
||||
--echo # 3.2.2 partition/subpartition numbers DECIMAL notation
|
||||
# (positive) number = 2.0
|
||||
let $part_number= 2.0;
|
||||
--source include/partition_11.inc
|
||||
# (negative) -2.0 is non sense
|
||||
let $part_number= -2.0;
|
||||
--source include/partition_11.inc
|
||||
# (negative) case number = 0.0 is non sense
|
||||
let $part_number= 0.0;
|
||||
--source include/partition_11.inc
|
||||
# Bug#15890 Partitions: Strange interpretation of partition number
|
||||
# (negative) number = 1.5 is non sense
|
||||
let $part_number= 1.5;
|
||||
--source include/partition_11.inc
|
||||
# (negative) number is too huge
|
||||
let $part_number= 999999999999999999999999999999.999999999999999999999999999999;
|
||||
--source include/partition_11.inc
|
||||
# (negative) number is nearly zero
|
||||
let $part_number= 0.000000000000000000000000000001;
|
||||
--source include/partition_11.inc
|
||||
|
||||
--echo # 3.2.3 partition/subpartition numbers FLOAT notation
|
||||
##### FLOAT notation
|
||||
# (positive) number = 2.0E+0
|
||||
let $part_number= 2.0E+0;
|
||||
--source include/partition_11.inc
|
||||
# Bug#15890 Partitions: Strange interpretation of partition number
|
||||
# (positive) number = 0.2E+1
|
||||
let $part_number= 0.2E+1;
|
||||
--source include/partition_11.inc
|
||||
# (negative) -2.0E+0 is non sense
|
||||
let $part_number= -2.0E+0;
|
||||
--source include/partition_11.inc
|
||||
# (negative) 0.15E+1 is non sense
|
||||
let $part_number= 0.15E+1;
|
||||
--source include/partition_11.inc
|
||||
# (negative) 0.0E+300 is zero
|
||||
let $part_number= 0.0E+300;
|
||||
--source include/partition_11.inc
|
||||
# Bug#15890 Partitions: Strange interpretation of partition number
|
||||
# (negative) 1E+300 is too huge
|
||||
let $part_number= 1E+300;
|
||||
--source include/partition_11.inc
|
||||
# (negative) 1E-300 is nearly zero
|
||||
let $part_number= 1E-300;
|
||||
--source include/partition_11.inc
|
||||
}
|
||||
|
||||
--echo # 3.2.4 partition/subpartition numbers STRING notation
|
||||
##### STRING notation
|
||||
# (negative?) case number = '2'
|
||||
let $part_number= '2';
|
||||
--source include/partition_11.inc
|
||||
# (negative?) case number = '2.0'
|
||||
let $part_number= '2.0';
|
||||
--source include/partition_11.inc
|
||||
# (negative?) case number = '0.2E+1'
|
||||
let $part_number= '0.2E+1';
|
||||
--source include/partition_11.inc
|
||||
# (negative) Strings starts with digit, but 'A' follows
|
||||
let $part_number= '2A';
|
||||
--source include/partition_11.inc
|
||||
# (negative) Strings starts with 'A', but digit follows
|
||||
let $part_number= 'A2';
|
||||
--source include/partition_11.inc
|
||||
# (negative) empty string
|
||||
let $part_number= '';
|
||||
--source include/partition_11.inc
|
||||
# (negative) string without any digits
|
||||
let $part_number= 'GARBAGE';
|
||||
--source include/partition_11.inc
|
||||
|
||||
--echo # 3.2.5 partition/subpartition numbers other notations
|
||||
# (negative) Strings starts with digit, but 'A' follows
|
||||
let $part_number= 2A;
|
||||
--source include/partition_11.inc
|
||||
# (negative) Strings starts with 'A', but digit follows
|
||||
let $part_number= A2;
|
||||
--source include/partition_11.inc
|
||||
# (negative) string without any digits
|
||||
let $part_number= GARBAGE;
|
||||
--source include/partition_11.inc
|
||||
|
||||
# (negative?) double quotes
|
||||
let $part_number= "2";
|
||||
--source include/partition_11.inc
|
||||
# (negative) Strings starts with digit, but 'A' follows
|
||||
let $part_number= "2A";
|
||||
--source include/partition_11.inc
|
||||
# (negative) Strings starts with 'A', but digit follows
|
||||
let $part_number= "A2";
|
||||
--source include/partition_11.inc
|
||||
# (negative) string without any digits
|
||||
let $part_number= "GARBAGE";
|
||||
--source include/partition_11.inc
|
||||
|
||||
--echo # 3.3 Mixups of assigned partition/subpartition numbers and names
|
||||
--echo # 3.3.1 (positive) number of partition/subpartition
|
||||
--echo # = number of named partition/subpartition
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) PARTITIONS 2 ( PARTITION part1, PARTITION part2 ) ;
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1) PARTITIONS 2
|
||||
SUBPARTITION BY HASH(f1) SUBPARTITIONS 2
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11, SUBPARTITION subpart12),
|
||||
PARTITION part2 VALUES LESS THAN (2147483647)
|
||||
(SUBPARTITION subpart21, SUBPARTITION subpart22)
|
||||
);
|
||||
--source include/partition_layout.inc
|
||||
DROP TABLE t1;
|
||||
--echo # 3.3.2 (positive) number of partition/subpartition ,
|
||||
--echo # 0 (= no) named partition/subpartition
|
||||
--echo # already checked above
|
||||
--echo # 3.3.3 (negative) number of partitions/subpartitions
|
||||
--echo # > number of named partitions/subpartitions
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) PARTITIONS 2 ( PARTITION part1 ) ;
|
||||
# Wrong number of named subpartitions in first partition
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1) SUBPARTITIONS 2
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11 ),
|
||||
PARTITION part2 VALUES LESS THAN (2147483647)
|
||||
(SUBPARTITION subpart21, SUBPARTITION subpart22)
|
||||
);
|
||||
# Wrong number of named subpartitions in non first/non last partition
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1) SUBPARTITIONS 2
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11, SUBPARTITION subpart12),
|
||||
PARTITION part2 VALUES LESS THAN (2000)
|
||||
(SUBPARTITION subpart21 ),
|
||||
PARTITION part3 VALUES LESS THAN (2147483647)
|
||||
(SUBPARTITION subpart31, SUBPARTITION subpart32)
|
||||
);
|
||||
# Wrong number of named subpartitions in last partition
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1) PARTITIONS 2
|
||||
SUBPARTITION BY HASH(f1) SUBPARTITIONS 2
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11, SUBPARTITION subpart12),
|
||||
PARTITION part2 VALUES LESS THAN (2147483647)
|
||||
(SUBPARTITION subpart21 )
|
||||
);
|
||||
--echo # 3.3.4 (negative) number of partitions < number of named partitions
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) PARTITIONS 1 ( PARTITION part1, PARTITION part2 ) ;
|
||||
# Wrong number of named subpartitions in first partition
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1) SUBPARTITIONS 1
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11, SUBPARTITION subpart12),
|
||||
PARTITION part2 VALUES LESS THAN (2147483647)
|
||||
(SUBPARTITION subpart21, SUBPARTITION subpart22)
|
||||
);
|
||||
# Wrong number of named subpartitions in non first/non last partition
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1) SUBPARTITIONS 1
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11, SUBPARTITION subpart12),
|
||||
PARTITION part2 VALUES LESS THAN (2000)
|
||||
(SUBPARTITION subpart21 ),
|
||||
PARTITION part3 VALUES LESS THAN (2147483647)
|
||||
(SUBPARTITION subpart31, SUBPARTITION subpart32)
|
||||
);
|
||||
# Wrong number of named subpartitions in last partition
|
||||
--error 1064
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1) SUBPARTITIONS 1
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11, SUBPARTITION subpart12),
|
||||
PARTITION part2 VALUES LESS THAN (2147483647)
|
||||
(SUBPARTITION subpart21, SUBPARTITION subpart22)
|
||||
);
|
||||
|
||||
|
||||
--echo
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # 4. Checks of logical partition/subpartition name
|
||||
--echo # file name clashes during CREATE TABLE
|
||||
--echo #------------------------------------------------------------------------
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
--echo # 4.1 (negative) A partition name used more than once
|
||||
--error ER_SAME_NAME_PARTITION
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) (PARTITION part1, PARTITION part1);
|
||||
#
|
||||
if ($fixed_bug15408)
|
||||
{
|
||||
# Bug#15408 Partitions: subpartition names are not unique
|
||||
--error ER_SAME_NAME_PARTITION
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
( PARTITION part1 VALUES LESS THAN (1000)
|
||||
(SUBPARTITION subpart11, SUBPARTITION subpart11)
|
||||
);
|
||||
}
|
||||
--echo # FIXME Implement testcases with filename problems
|
||||
--echo # existing file of other table --- partition/subpartition file name
|
||||
--echo # partition/subpartition file name --- file of the same table
|
||||
|
||||
--echo
|
||||
--echo #------------------------------------------------------------------------
|
||||
--echo # 5. Alter table experiments
|
||||
--echo #------------------------------------------------------------------------
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
--echo # 5.1 alter table add partition
|
||||
--echo # 5.1.1 (negative) add partition to non partitioned table
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20));
|
||||
--source include/partition_layout.inc
|
||||
# MyISAM gets ER_PARTITION_MGMT_ON_NONPARTITIONED and NDB 1005
|
||||
# The error code of NDB differs, because all NDB tables are partitioned even
|
||||
# if the CREATE TABLE does not contain a partitioning clause.
|
||||
--error ER_PARTITION_MGMT_ON_NONPARTITIONED,1005
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part1);
|
||||
--source include/partition_layout.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # 5.1.2 Add one partition to a table with one partition
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1);
|
||||
--source include/partition_layout.inc
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND $max_row_div2 - 1;
|
||||
--disable_query_log
|
||||
eval SELECT $engine = 'NDB' INTO @aux;
|
||||
let $my_exit= `SELECT @aux`;
|
||||
if ($my_exit)
|
||||
{
|
||||
exit;
|
||||
}
|
||||
--enable_query_log
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part1);
|
||||
--source include/partition_12.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # 5.1.3 Several times add one partition to a table with some partitions
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) (PARTITION part1, PARTITION part3);
|
||||
--source include/partition_layout.inc
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND $max_row_div2 - 1;
|
||||
# Partition name before first existing partition name
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part0);
|
||||
--source include/partition_12.inc
|
||||
DELETE FROM t1;
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND $max_row_div2 - 1;
|
||||
# Partition name between existing partition names
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part2);
|
||||
--source include/partition_12.inc
|
||||
DELETE FROM t1;
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND $max_row_div2 - 1;
|
||||
if ($fixed_bug13447)
|
||||
{
|
||||
# Partition name after all existing partition names
|
||||
# Bug#13447 Partitions: crash with alter table
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part4);
|
||||
}
|
||||
--source include/partition_12.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # 5.1.4 Add several partitions to a table with some partitions
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) (PARTITION part1, PARTITION part3);
|
||||
--source include/partition_layout.inc
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND $max_row_div2 - 1;
|
||||
if ($fixed_bug13447)
|
||||
{
|
||||
# Bug#13447 Partitions: crash with alter table
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part0, PARTITION part2, PARTITION part4);
|
||||
}
|
||||
--source include/partition_12.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo # 5.1.5 (negative) Add partitions to a table with some partitions
|
||||
--echo # clash on new and already existing partition names
|
||||
CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) (PARTITION part1, PARTITION part2, PARTITION part3);
|
||||
# Clash on first/non last partition name
|
||||
--error ER_SAME_NAME_PARTITION
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part1);
|
||||
# Clash on non first/non last partition name
|
||||
--error ER_SAME_NAME_PARTITION
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part2);
|
||||
# Clash on non first/last partition name
|
||||
--error ER_SAME_NAME_PARTITION
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part3);
|
||||
# Clash on all partition names
|
||||
--error ER_SAME_NAME_PARTITION
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION part1, PARTITION part2, PARTITION part3);
|
||||
DROP TABLE t1;
|
||||
|
||||
# FIXME Is there any way to add a subpartition to an already existing partition
|
||||
|
||||
--echo # 5.2 alter table add subpartition
|
||||
--echo # 5.2.1 Add one subpartition to a table with subpartitioning rule and
|
||||
--echo # no explicit defined subpartitions
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1)
|
||||
SUBPARTITION BY HASH(f1)
|
||||
(PARTITION part1 VALUES LESS THAN ($max_row_div2));
|
||||
if ($fixed_bug16370)
|
||||
{
|
||||
--source include/partition_layout.inc
|
||||
}
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND $max_row_div2 - 1;
|
||||
eval ALTER TABLE t1 ADD PARTITION (PARTITION part2 VALUES LESS THAN ($max_int_4)
|
||||
(SUBPARTITION subpart21));
|
||||
if ($fixed_bug16370)
|
||||
{
|
||||
--source include/partition_12.inc
|
||||
}
|
||||
DROP TABLE t1;
|
||||
DROP TABLE if exists t0_template;
|
73
mysql-test/include/partition_10.inc
Normal file
73
mysql-test/include/partition_10.inc
Normal file
@ -0,0 +1,73 @@
|
||||
# include/partition_10.inc
|
||||
#
|
||||
# Do some basic checks on a table.
|
||||
#
|
||||
# FIXME: Do not write the statements and results, if SQL return code = 0
|
||||
# and result set like expected. Write a message, that all is like
|
||||
# expected instead.
|
||||
#
|
||||
# All SELECTs are so written, that we get my_value = 1, when everything
|
||||
# is like expected.
|
||||
#
|
||||
|
||||
--source include/partition_layout.inc
|
||||
|
||||
####### Variations with multiple records
|
||||
# Select on empty table
|
||||
SELECT COUNT(*) = 0 AS my_value FROM t1;
|
||||
# (mass) Insert of $max_row records
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN 1 AND $max_row;
|
||||
# Select
|
||||
eval SELECT (COUNT(*) = $max_row) AND (MIN(f1) = 1) AND (MAX(f1) = $max_row)
|
||||
AS my_value FROM t1;
|
||||
# DEBUG SELECT COUNT(*),MIN(f1),MAX(f1) FROM t1;
|
||||
# (mass) Update $max_row_div4 * 2 + 1 records
|
||||
eval UPDATE t1 SET f1 = f1 + $max_row
|
||||
WHERE f1 BETWEEN $max_row_div2 - $max_row_div4 AND $max_row_div2 + $max_row_div4;
|
||||
# Select
|
||||
eval SELECT (COUNT(*) = $max_row) AND (MIN(f1) = 1) AND (MAX(f1) = $max_row_div2 + $max_row_div4 + $max_row )
|
||||
AS my_value FROM t1;
|
||||
# DEBUG SELECT COUNT(*),MIN(f1),MAX(f1) FROM t1;
|
||||
# (mass) Delete $max_row_div4 * 2 + 1 records
|
||||
eval DELETE FROM t1
|
||||
WHERE f1 BETWEEN $max_row_div2 - $max_row_div4 + $max_row AND $max_row_div2 + $max_row_div4 + $max_row;
|
||||
# Select
|
||||
eval SELECT (COUNT(*) = $max_row - $max_row_div4 - $max_row_div4 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = $max_row)
|
||||
AS my_value FROM t1;
|
||||
# DEBUG SELECT COUNT(*),MIN(f1),MAX(f1) FROM t1;
|
||||
|
||||
####### Variations with single records
|
||||
# Insert one record at beginning
|
||||
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
|
||||
# Select this record
|
||||
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
|
||||
# Insert one record at end
|
||||
eval INSERT INTO t1 SET f1 = $max_row + 1, f2 = '#######';
|
||||
# Select this record
|
||||
eval SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = $max_row + 1 AND f2 = '#######';
|
||||
# Update one record
|
||||
eval UPDATE t1 SET f1 = $max_row + 2, f2 = 'ZZZZZZZ'
|
||||
WHERE f1 = 0 AND f2 = '#######';
|
||||
# Select
|
||||
eval SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = $max_row + 2 AND f2 = 'ZZZZZZZ';
|
||||
if ($fixed_bug15968)
|
||||
{
|
||||
# Bug #15968: Partitions: crash when INSERT with f1 = -1 into PARTITION BY HASH(f1)
|
||||
eval UPDATE t1 SET f1 = 0 - 1, f2 = 'ZZZZZZZ'
|
||||
WHERE f1 = $max_row + 1 AND f2 = '#######';
|
||||
# Select
|
||||
SELECT COUNT(*) AS my_value FROM t1 WHERE f1 = 0 - 1 AND f2 = 'ZZZZZZZ';
|
||||
}
|
||||
# Delete
|
||||
eval DELETE FROM t1 WHERE f1 = $max_row + 2 AND f2 = 'ZZZZZZZ';
|
||||
if ($fixed_bug15968)
|
||||
{
|
||||
DELETE FROM t1 WHERE f1 = 0 - 1 AND f2 = 'ZZZZZZZ';
|
||||
}
|
||||
# Select
|
||||
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
|
||||
|
||||
# Truncate
|
||||
TRUNCATE t1;
|
||||
# Select on empty table
|
||||
SELECT COUNT(*) = 0 AS my_value FROM t1;
|
34
mysql-test/include/partition_11.inc
Normal file
34
mysql-test/include/partition_11.inc
Normal file
@ -0,0 +1,34 @@
|
||||
# include/partition_11.inc
|
||||
#
|
||||
# Try to create a table with the given partition number
|
||||
#
|
||||
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY HASH(f1) PARTITIONS $part_number;
|
||||
--disable_query_log
|
||||
eval SET @my_errno= $mysql_errno ;
|
||||
let $run= `SELECT @my_errno = 0`;
|
||||
--enable_query_log
|
||||
#
|
||||
# If this operation was successfull, check + drop this table
|
||||
if ($run)
|
||||
{
|
||||
--source include/partition_10.inc
|
||||
eval DROP TABLE t1;
|
||||
}
|
||||
#### Try to create a table with the given subpartition number
|
||||
eval CREATE TABLE t1 ( f1 INTEGER, f2 char(20))
|
||||
PARTITION BY RANGE(f1) SUBPARTITION BY HASH(f1)
|
||||
SUBPARTITIONS $part_number
|
||||
(PARTITION part1 VALUES LESS THAN ($max_row_div2), PARTITION part2 VALUES LESS THAN ($max_int_4));
|
||||
--disable_query_log
|
||||
eval SET @my_errno= $mysql_errno ;
|
||||
let $run= `SELECT @my_errno = 0`;
|
||||
--enable_query_log
|
||||
#
|
||||
# If this operation was successfull, check + drop this table
|
||||
if ($run)
|
||||
{
|
||||
--source include/partition_10.inc
|
||||
eval DROP TABLE t1;
|
||||
}
|
65
mysql-test/include/partition_12.inc
Normal file
65
mysql-test/include/partition_12.inc
Normal file
@ -0,0 +1,65 @@
|
||||
# include/partition_12.inc
|
||||
#
|
||||
# Do some basic things on a table, if the SQL command executed just before
|
||||
# sourcing this file was successful.
|
||||
#
|
||||
|
||||
--source include/partition_layout.inc
|
||||
|
||||
####### Variations with multiple records
|
||||
# (mass) Insert max_row_div2 + 1 records
|
||||
eval INSERT INTO t1 SELECT * FROM t0_template WHERE f1 BETWEEN $max_row_div2 AND $max_row;
|
||||
# Select
|
||||
eval SELECT (COUNT(*) = $max_row) AND (MIN(f1) = 1) AND (MAX(f1) = $max_row)
|
||||
AS my_value FROM t1;
|
||||
# DEBUG SELECT COUNT(*),MIN(f1),MAX(f1) FROM t1;
|
||||
# (mass) Update $max_row_div4 * 2 + 1 records
|
||||
eval UPDATE t1 SET f1 = f1 + $max_row
|
||||
WHERE f1 BETWEEN $max_row_div2 - $max_row_div4 AND $max_row_div2 + $max_row_div4;
|
||||
# Select
|
||||
eval SELECT (COUNT(*) = $max_row) AND (MIN(f1) = 1) AND (MAX(f1) = $max_row_div2 + $max_row_div4 + $max_row )
|
||||
AS my_value FROM t1;
|
||||
# DEBUG SELECT COUNT(*),MIN(f1),MAX(f1) FROM t1;
|
||||
# (mass) Delete $max_row_div4 * 2 + 1 records
|
||||
eval DELETE FROM t1
|
||||
WHERE f1 BETWEEN $max_row_div2 - $max_row_div4 + $max_row AND $max_row_div2 + $max_row_div4 + $max_row;
|
||||
# Select
|
||||
eval SELECT (COUNT(*) = $max_row - $max_row_div4 - $max_row_div4 - 1) AND (MIN(f1) = 1) AND (MAX(f1) = $max_row)
|
||||
AS my_value FROM t1;
|
||||
# DEBUG SELECT COUNT(*),MIN(f1),MAX(f1) FROM t1;
|
||||
|
||||
####### Variations with single records
|
||||
# Insert one record at beginning
|
||||
INSERT INTO t1 SET f1 = 0 , f2 = '#######';
|
||||
# Select this record
|
||||
SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = 0 AND f2 = '#######';
|
||||
# Insert one record at end
|
||||
eval INSERT INTO t1 SET f1 = $max_row + 1, f2 = '#######';
|
||||
# Select this record
|
||||
eval SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = $max_row + 1 AND f2 = '#######';
|
||||
# Update one record
|
||||
eval UPDATE t1 SET f1 = $max_row + 2, f2 = 'ZZZZZZZ'
|
||||
WHERE f1 = 0 AND f2 = '#######';
|
||||
# Select
|
||||
eval SELECT COUNT(*) = 1 AS my_value FROM t1 WHERE f1 = $max_row + 2 AND f2 = 'ZZZZZZZ';
|
||||
if ($fixed_bug15968)
|
||||
{
|
||||
# Bug #15968: Partitions: crash when INSERT with f1 = -1 into PARTITION BY HASH(f1)
|
||||
eval UPDATE t1 SET f1 = 0 - 1, f2 = 'ZZZZZZZ'
|
||||
WHERE f1 = $max_row + 1 AND f2 = '#######';
|
||||
# Select
|
||||
SELECT COUNT(*) AS my_value FROM t1 WHERE f1 = 0 - 1 AND f2 = 'ZZZZZZZ';
|
||||
}
|
||||
# Delete
|
||||
eval DELETE FROM t1 WHERE f1 = $max_row + 2 AND f2 = 'ZZZZZZZ';
|
||||
if ($fixed_bug15968)
|
||||
{
|
||||
DELETE FROM t1 WHERE f1 = 0 - 1 AND f2 = 'ZZZZZZZ';
|
||||
}
|
||||
# Select
|
||||
SELECT COUNT(*) = 0 AS my_value FROM t1 WHERE f2 = 'ZZZZZZZ';
|
||||
|
||||
# Truncate
|
||||
TRUNCATE t1;
|
||||
# Select on empty table
|
||||
SELECT COUNT(*) = 0 AS my_value FROM t1;
|
13
mysql-test/include/partition_layout.inc
Normal file
13
mysql-test/include/partition_layout.inc
Normal file
@ -0,0 +1,13 @@
|
||||
# include/partition_layout.inc
|
||||
#
|
||||
# Print partitioning related informations about the table t1
|
||||
#
|
||||
|
||||
eval SHOW CREATE TABLE t1;
|
||||
|
||||
# Optional (most probably issues with separators and case sensitivity)
|
||||
# listing of files belonging to the table t1
|
||||
if ($ls)
|
||||
{
|
||||
--exec ls var/master-data/test/t1*
|
||||
}
|
@ -13,3 +13,5 @@ show create table columns_priv;
|
||||
show create table procs_priv;
|
||||
show create table proc;
|
||||
show create table event;
|
||||
show create table general_log;
|
||||
show create table slow_log;
|
||||
|
@ -570,6 +570,10 @@ CREATE TABLE proc (
|
||||
) character set utf8 comment='Stored Procedures';
|
||||
|
||||
|
||||
CREATE PROCEDURE create_log_tables() BEGIN DECLARE is_csv_enabled int DEFAULT 0; SELECT @@have_csv = 'YES' INTO is_csv_enabled; IF (is_csv_enabled) THEN CREATE TABLE general_log (event_time TIMESTAMP NOT NULL, user_host MEDIUMTEXT, thread_id INTEGER, server_id INTEGER, command_type VARCHAR(64), argument MEDIUMTEXT) engine=CSV CHARACTER SET utf8 comment='General log'; CREATE TABLE slow_log (start_time TIMESTAMP NOT NULL, user_host MEDIUMTEXT NOT NULL, query_time TIME NOT NULL, lock_time TIME NOT NULL, rows_sent INTEGER NOT NULL, rows_examined INTEGER NOT NULL, db VARCHAR(512), last_insert_id INTEGER, insert_id INTEGER, server_id INTEGER, sql_text MEDIUMTEXT NOT NULL) engine=CSV CHARACTER SET utf8 comment='Slow log'; END IF; END;
|
||||
CALL create_log_tables();
|
||||
DROP PROCEDURE create_log_tables;
|
||||
|
||||
CREATE TABLE event (
|
||||
db char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '',
|
||||
name char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '',
|
||||
|
@ -517,6 +517,7 @@ sub command_line_setup () {
|
||||
$opt_master_myport= $ENV{'MTR_BUILD_THREAD'} * 40 + 8120;
|
||||
$opt_slave_myport= $opt_master_myport + 16;
|
||||
$opt_ndbcluster_port= $opt_master_myport + 24;
|
||||
$opt_ndbcluster_port_slave= $opt_master_myport + 32;
|
||||
$im_port= $opt_master_myport + 10;
|
||||
$im_mysqld1_port= $opt_master_myport + 12;
|
||||
$im_mysqld2_port= $opt_master_myport + 14;
|
||||
@ -711,6 +712,8 @@ sub command_line_setup () {
|
||||
$glob_use_embedded_server= 1;
|
||||
push(@glob_test_mode, "embedded");
|
||||
$opt_skip_rpl= 1; # We never run replication with embedded
|
||||
$opt_skip_ndbcluster= 1; # Avoid auto detection
|
||||
$opt_skip_ssl= 1;
|
||||
|
||||
if ( $opt_extern )
|
||||
{
|
||||
@ -909,6 +912,7 @@ sub command_line_setup () {
|
||||
path_datadir => "$opt_vardir/im_mysqld_1.data",
|
||||
path_sock => "$sockdir/mysqld_1.sock",
|
||||
path_pid => "$opt_vardir/run/mysqld_1.pid",
|
||||
old_log_format => 1
|
||||
};
|
||||
|
||||
$instance_manager->{'instances'}->[1]=
|
||||
@ -919,6 +923,7 @@ sub command_line_setup () {
|
||||
path_sock => "$sockdir/mysqld_2.sock",
|
||||
path_pid => "$opt_vardir/run/mysqld_2.pid",
|
||||
nonguarded => 1,
|
||||
old_log_format => 1
|
||||
};
|
||||
|
||||
if ( $opt_extern )
|
||||
@ -1118,6 +1123,9 @@ sub environment_setup () {
|
||||
# $ENV{'MYSQL_TCP_PORT'}= '@MYSQL_TCP_PORT@'; # FIXME
|
||||
$ENV{'MYSQL_TCP_PORT'}= 3306;
|
||||
|
||||
$ENV{'NDBCLUSTER_PORT'}= $opt_ndbcluster_port;
|
||||
$ENV{'NDBCLUSTER_PORT_SLAVE'}=$opt_ndbcluster_port_slave;
|
||||
|
||||
$ENV{'IM_PATH_PID'}= $instance_manager->{path_pid};
|
||||
|
||||
$ENV{'IM_MYSQLD1_SOCK'}= $instance_manager->{instances}->[0]->{path_sock};
|
||||
@ -1142,7 +1150,8 @@ sub environment_setup () {
|
||||
print "Using MASTER_MYPORT = $ENV{MASTER_MYPORT}\n";
|
||||
print "Using MASTER_MYPORT1 = $ENV{MASTER_MYPORT1}\n";
|
||||
print "Using SLAVE_MYPORT = $ENV{SLAVE_MYPORT}\n";
|
||||
print "Using NDBCLUSTER_PORT = $opt_ndbcluster_port\n";
|
||||
print "Using NDBCLUSTER_PORT = $ENV{NDBCLUSTER_PORT}\n";
|
||||
print "Using NDBCLUSTER_PORT_SLAVE = $ENV{NDBCLUSTER_PORT_SLAVE}\n";
|
||||
print "Using IM_MYSQLD1_PORT = $ENV{'IM_MYSQLD1_PORT'}\n";
|
||||
print "Using IM_MYSQLD2_PORT = $ENV{'IM_MYSQLD2_PORT'}\n";
|
||||
}
|
||||
@ -1364,7 +1373,8 @@ sub ndbcluster_install () {
|
||||
"--data-dir=$opt_vardir",
|
||||
"--verbose=2",
|
||||
$ndbcluster_opts,
|
||||
"--initial"],
|
||||
"--initial",
|
||||
"--relative-config-data-dir"],
|
||||
"", "", "", "") )
|
||||
{
|
||||
mtr_error("Error ndbcluster_install");
|
||||
@ -1456,7 +1466,8 @@ sub ndbcluster_install_slave () {
|
||||
"--verbose=2",
|
||||
"--small",
|
||||
"--ndbd-nodes=1",
|
||||
"--initial"],
|
||||
"--initial",
|
||||
"--relative-config-data-dir"],
|
||||
"", "", "", "") )
|
||||
{
|
||||
mtr_error("Error ndbcluster_install_slave");
|
||||
@ -1821,6 +1832,7 @@ EOF
|
||||
;
|
||||
|
||||
print OUT "nonguarded\n" if $instance->{'nonguarded'};
|
||||
print OUT "old-log-format\n" if $instance->{'old_log_format'};
|
||||
print OUT "\n";
|
||||
}
|
||||
|
||||
|
@ -268,9 +268,11 @@ USE_RUNNING_SERVER=0
|
||||
USE_NDBCLUSTER=@USE_NDBCLUSTER@
|
||||
USE_NDBCLUSTER_SLAVE=@USE_NDBCLUSTER@
|
||||
USE_NDBCLUSTER_ALL=0
|
||||
USE_NDBCLUSTER_ONLY=0
|
||||
USE_RUNNING_NDBCLUSTER=""
|
||||
USE_RUNNING_NDBCLUSTER_SLAVE=""
|
||||
NDB_EXTRA_TEST=0
|
||||
NDB_VERBOSE=0
|
||||
NDBCLUSTER_EXTRA_OPTS=""
|
||||
USE_PURIFY=""
|
||||
PURIFY_LOGS=""
|
||||
@ -297,6 +299,7 @@ TEST_MODE=""
|
||||
NDB_MGM_EXTRA_OPTS=
|
||||
NDB_MGMD_EXTRA_OPTS=
|
||||
NDBD_EXTRA_OPTS=
|
||||
MASTER_MYSQLDBINLOG=1
|
||||
SLAVE_MYSQLDBINLOG=1
|
||||
|
||||
DO_STRESS=""
|
||||
@ -316,6 +319,8 @@ while test $# -gt 0; do
|
||||
USE_EMBEDDED_SERVER=1
|
||||
USE_MANAGER=0 NO_SLAVE=1
|
||||
USE_RUNNING_SERVER=0
|
||||
USE_NDBCLUSTER=""
|
||||
USE_NDBCLUSTER_SLAVE=""
|
||||
TEST_MODE="$TEST_MODE embedded" ;;
|
||||
--purify)
|
||||
USE_PURIFY=1
|
||||
@ -341,6 +346,10 @@ while test $# -gt 0; do
|
||||
USE_NDBCLUSTER="--ndbcluster"
|
||||
USE_NDBCLUSTER_SLAVE="--ndbcluster"
|
||||
USE_NDBCLUSTER_ALL=1 ;;
|
||||
--with-ndbcluster-only)
|
||||
USE_NDBCLUSTER="--ndbcluster"
|
||||
USE_NDBCLUSTER_SLAVE="--ndbcluster"
|
||||
USE_NDBCLUSTER_ONLY=1 ;;
|
||||
--ndb-connectstring=*)
|
||||
USE_NDBCLUSTER="--ndbcluster" ;
|
||||
USE_RUNNING_NDBCLUSTER=`$ECHO "$1" | $SED -e "s;--ndb-connectstring=;;"` ;;
|
||||
@ -351,6 +360,8 @@ while test $# -gt 0; do
|
||||
NDBCLUSTER_EXTRA_OPTS=" "
|
||||
NDB_EXTRA_TEST=1 ;
|
||||
;;
|
||||
--ndb-verbose)
|
||||
NDB_VERBOSE=2 ;;
|
||||
--ndb_mgm-extra-opts=*)
|
||||
NDB_MGM_EXTRA_OPTS=`$ECHO "$1" | $SED -e "s;--ndb_mgm-extra-opts=;;"` ;;
|
||||
--ndb_mgmd-extra-opts=*)
|
||||
@ -543,6 +554,7 @@ while test $# -gt 0; do
|
||||
EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT --skip-ndbcluster"
|
||||
EXTRA_SLAVE_MYSQLD_OPT="$EXTRA_SLAVE_MYSQLD_OPT --skip-ndbcluster"
|
||||
;;
|
||||
--skip-master-binlog) MASTER_MYSQLDBINLOG=0 ;;
|
||||
--skip-slave-binlog) SLAVE_MYSQLDBINLOG=0 ;;
|
||||
--skip-*)
|
||||
EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT $1"
|
||||
@ -1266,8 +1278,10 @@ start_ndbcluster()
|
||||
then
|
||||
NDBCLUSTER_EXTRA_OPTS="--small"
|
||||
fi
|
||||
OPTS="$NDBCLUSTER_OPTS $NDBCLUSTER_EXTRA_OPTS --verbose=2 --initial"
|
||||
echo "Starting master ndbcluster " $OPTS
|
||||
OPTS="$NDBCLUSTER_OPTS $NDBCLUSTER_EXTRA_OPTS --verbose=$NDB_VERBOSE --initial --relative-config-data-dir"
|
||||
if [ "x$NDB_VERBOSE" != "x0" ] ; then
|
||||
echo "Starting master ndbcluster " $OPTS
|
||||
fi
|
||||
./ndb/ndbcluster $OPTS || NDB_STATUS_OK=0
|
||||
if [ x$NDB_STATUS_OK != x1 ] ; then
|
||||
if [ x$FORCE != x1 ] ; then
|
||||
@ -1351,9 +1365,13 @@ start_master()
|
||||
then
|
||||
CURR_MASTER_MYSQLD_TRACE="$EXTRA_MASTER_MYSQLD_TRACE$1"
|
||||
fi
|
||||
if [ x$MASTER_MYSQLDBINLOG = x1 ]
|
||||
then
|
||||
EXTRA_MASTER_MYSQLD_OPT="$EXTRA_MASTER_MYSQLD_OPT --log-bin=$MYSQL_TEST_DIR/var/log/master-bin$1"
|
||||
fi
|
||||
if [ -z "$DO_BENCH" -a -z "$DO_STRESS" ]
|
||||
then
|
||||
master_args="--no-defaults --log-bin=$MYSQL_TEST_DIR/var/log/master-bin$1 \
|
||||
master_args="--no-defaults \
|
||||
--server-id=$id \
|
||||
--basedir=$MY_BASEDIR \
|
||||
--port=$this_master_myport \
|
||||
@ -1379,7 +1397,7 @@ start_master()
|
||||
$EXTRA_MASTER_MYSQLD_OPT $EXTRA_MASTER_OPT \
|
||||
$NOT_FIRST_MASTER_EXTRA_OPTS $CURR_MASTER_MYSQLD_TRACE"
|
||||
else
|
||||
master_args="--no-defaults --log-bin=$MYSQL_TEST_DIR/var/log/master-bin$1 \
|
||||
master_args="--no-defaults \
|
||||
--server-id=$id --rpl-recovery-rank=1 \
|
||||
--basedir=$MY_BASEDIR --init-rpl-role=master \
|
||||
--port=$this_master_myport \
|
||||
@ -1493,8 +1511,10 @@ start_slave()
|
||||
NDBCLUSTER_EXTRA_OPTS="--small"
|
||||
fi
|
||||
|
||||
OPTS="$NDBCLUSTER_OPTS_SLAVE --initial $NDBCLUSTER_EXTRA_OPTS --ndbd-nodes=1 --verbose=2"
|
||||
echo "Starting slave ndbcluster " $OPTS
|
||||
OPTS="$NDBCLUSTER_OPTS_SLAVE --initial $NDBCLUSTER_EXTRA_OPTS --ndbd-nodes=1 --verbose=$NDB_VERBOSE --relative-config-data-dir"
|
||||
if [ "x$NDB_VERBOSE" != "x0" ] ; then
|
||||
echo "Starting slave ndbcluster " $OPTS
|
||||
fi
|
||||
./ndb/ndbcluster $OPTS \
|
||||
|| NDB_SLAVE_STATUS_OK=0
|
||||
# > /dev/null 2>&1 || NDB_SLAVE_STATUS_OK=0
|
||||
@ -1750,6 +1770,10 @@ run_testcase ()
|
||||
if [ "x$USE_NDBCLUSTER_ALL" = "x1" ] ; then
|
||||
NDBCLUSTER_TEST=1
|
||||
fi
|
||||
if [ "x$USE_NDBCLUSTER_ONLY" = "x1" -a "x$NDBCLUSTER_TEST" != "x1" ] ; then
|
||||
skip_test $tname
|
||||
return
|
||||
fi
|
||||
if [ "$USE_MANAGER" = 1 ] ; then
|
||||
many_slaves=`$EXPR \( \( $tname : rpl_failsafe \) != 0 \) \| \( \( $tname : rpl_chain_temp_table \) != 0 \)`
|
||||
fi
|
||||
|
@ -52,6 +52,7 @@ initial_ndb=
|
||||
status_ndb=
|
||||
ndb_diskless=0
|
||||
ndbd_nodes=2
|
||||
relative_config_data_dir=
|
||||
|
||||
ndb_no_ord=512
|
||||
ndb_no_attr=2048
|
||||
@ -89,7 +90,7 @@ while test $# -gt 0; do
|
||||
--small)
|
||||
ndb_no_ord=32
|
||||
ndb_con_op=5000
|
||||
ndb_dmem=10M
|
||||
ndb_dmem=20M
|
||||
ndb_imem=1M
|
||||
ndb_pbmem=4M
|
||||
;;
|
||||
@ -99,6 +100,9 @@ while test $# -gt 0; do
|
||||
--data-dir=*)
|
||||
fsdir=`echo "$1" | sed -e "s;--data-dir=;;"`
|
||||
;;
|
||||
--relative-config-data-dir)
|
||||
relative_config_data_dir=1
|
||||
;;
|
||||
--port=*)
|
||||
port=`echo "$1" | sed -e "s;--port=;;"`
|
||||
;;
|
||||
@ -196,6 +200,11 @@ fi
|
||||
# Start management server as deamon
|
||||
|
||||
# Edit file system path and ports in config file
|
||||
if [ $relative_config_data_dir ] ; then
|
||||
config_fs_ndb="."
|
||||
else
|
||||
config_fs_ndb=$fs_ndb
|
||||
fi
|
||||
if [ $initial_ndb ] ; then
|
||||
rm -rf $fs_ndb/ndb_* 2>&1 | cat > /dev/null
|
||||
sed \
|
||||
@ -206,7 +215,7 @@ if [ $initial_ndb ] ; then
|
||||
-e s,"CHOOSE_IndexMemory","$ndb_imem",g \
|
||||
-e s,"CHOOSE_Diskless","$ndb_diskless",g \
|
||||
-e s,"CHOOSE_HOSTNAME_".*,"$ndb_host",g \
|
||||
-e s,"CHOOSE_FILESYSTEM","$fs_ndb",g \
|
||||
-e s,"CHOOSE_FILESYSTEM","$config_fs_ndb",g \
|
||||
-e s,"CHOOSE_PORT_MGM","$ndb_mgmd_port",g \
|
||||
-e s,"CHOOSE_DiskPageBufferMemory","$ndb_pbmem",g \
|
||||
< "$config_ini" \
|
||||
|
@ -5,6 +5,7 @@ columns_priv
|
||||
db
|
||||
event
|
||||
func
|
||||
general_log
|
||||
help_category
|
||||
help_keyword
|
||||
help_relation
|
||||
@ -13,6 +14,7 @@ host
|
||||
plugin
|
||||
proc
|
||||
procs_priv
|
||||
slow_log
|
||||
tables_priv
|
||||
time_zone
|
||||
time_zone_leap_second
|
||||
@ -34,6 +36,7 @@ columns_priv
|
||||
db
|
||||
event
|
||||
func
|
||||
general_log
|
||||
help_category
|
||||
help_keyword
|
||||
help_relation
|
||||
@ -42,6 +45,7 @@ host
|
||||
plugin
|
||||
proc
|
||||
procs_priv
|
||||
slow_log
|
||||
tables_priv
|
||||
time_zone
|
||||
time_zone_leap_second
|
||||
@ -71,6 +75,7 @@ columns_priv
|
||||
db
|
||||
event
|
||||
func
|
||||
general_log
|
||||
help_category
|
||||
help_keyword
|
||||
help_relation
|
||||
@ -79,6 +84,7 @@ host
|
||||
plugin
|
||||
proc
|
||||
procs_priv
|
||||
slow_log
|
||||
tables_priv
|
||||
time_zone
|
||||
time_zone_leap_second
|
||||
|
@ -4976,6 +4976,23 @@ c1
|
||||
4
|
||||
5
|
||||
DROP TABLE bug14672;
|
||||
CREATE TABLE test_concurrent_insert ( val integer ) ENGINE = CSV;
|
||||
LOCK TABLES test_concurrent_insert READ LOCAL;
|
||||
INSERT INTO test_concurrent_insert VALUES (1);
|
||||
SELECT * FROM test_concurrent_insert;
|
||||
val
|
||||
1
|
||||
SELECT * FROM test_concurrent_insert;
|
||||
val
|
||||
UNLOCK TABLES;
|
||||
LOCK TABLES test_concurrent_insert WRITE;
|
||||
INSERT INTO test_concurrent_insert VALUES (2);
|
||||
SELECT * FROM test_concurrent_insert;
|
||||
val
|
||||
1
|
||||
2
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE test_concurrent_insert;
|
||||
create table t1 (a int) engine=csv;
|
||||
insert t1 values (1);
|
||||
delete from t1;
|
||||
|
17
mysql-test/r/ctype_cp932_notembedded.result
Normal file
17
mysql-test/r/ctype_cp932_notembedded.result
Normal file
@ -0,0 +1,17 @@
|
||||
drop table if exists t1;
|
||||
set names cp932;
|
||||
set character_set_database = cp932;
|
||||
RESET MASTER;
|
||||
CREATE TABLE t1(f1 blob);
|
||||
PREPARE stmt1 FROM 'INSERT INTO t1 VALUES(?)';
|
||||
SET @var1= x'8300';
|
||||
EXECUTE stmt1 USING @var1;
|
||||
SHOW BINLOG EVENTS FROM 102;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query 1 # use `test`; CREATE TABLE t1(f1 blob)
|
||||
master-bin.000001 # Table_map 1 # test.t1
|
||||
master-bin.000001 # Write_rows 1 #
|
||||
SELECT HEX(f1) FROM t1;
|
||||
HEX(f1)
|
||||
8300
|
||||
DROP table t1;
|
@ -21,6 +21,7 @@ skip-stack-trace VALUE
|
||||
skip-innodb VALUE
|
||||
skip-bdb VALUE
|
||||
skip-ndbcluster VALUE
|
||||
old-log-format VALUE
|
||||
SHOW INSTANCE OPTIONS mysqld2;
|
||||
option_name value
|
||||
instance_name VALUE
|
||||
@ -41,6 +42,7 @@ skip-stack-trace VALUE
|
||||
skip-innodb VALUE
|
||||
skip-bdb VALUE
|
||||
skip-ndbcluster VALUE
|
||||
old-log-format VALUE
|
||||
START INSTANCE mysqld2;
|
||||
STOP INSTANCE mysqld2;
|
||||
SHOW mysqld1 LOG FILES;
|
||||
|
@ -62,6 +62,7 @@ columns_priv
|
||||
db
|
||||
event
|
||||
func
|
||||
general_log
|
||||
help_category
|
||||
help_keyword
|
||||
help_relation
|
||||
@ -70,6 +71,7 @@ host
|
||||
plugin
|
||||
proc
|
||||
procs_priv
|
||||
slow_log
|
||||
tables_priv
|
||||
time_zone
|
||||
time_zone_leap_second
|
||||
@ -732,7 +734,7 @@ CREATE TABLE t_crashme ( f1 BIGINT);
|
||||
CREATE VIEW a1 (t_CRASHME) AS SELECT f1 FROM t_crashme GROUP BY f1;
|
||||
CREATE VIEW a2 AS SELECT t_CRASHME FROM a1;
|
||||
count(*)
|
||||
107
|
||||
109
|
||||
drop view a2, a1;
|
||||
drop table t_crashme;
|
||||
select table_schema,table_name, column_name from
|
||||
@ -816,7 +818,7 @@ SELECT table_schema, count(*) FROM information_schema.TABLES GROUP BY TABLE_SCHE
|
||||
table_schema count(*)
|
||||
cluster_replication 1
|
||||
information_schema 19
|
||||
mysql 19
|
||||
mysql 21
|
||||
create table t1 (i int, j int);
|
||||
create trigger trg1 before insert on t1 for each row
|
||||
begin
|
||||
|
@ -2635,25 +2635,6 @@ checksum table t1;
|
||||
Table Checksum
|
||||
test.t1 2050879373
|
||||
drop table t1;
|
||||
create table t1 (col1 integer primary key, col2 integer) engine=innodb;
|
||||
insert t1 values (1,100);
|
||||
create function f1 () returns integer begin
|
||||
declare var1 int;
|
||||
select col2 into var1 from t1 where col1=1 for update;
|
||||
return var1;
|
||||
end|
|
||||
start transaction;
|
||||
select f1();
|
||||
f1()
|
||||
100
|
||||
update t1 set col2=0 where col1=1;
|
||||
select * from t1;
|
||||
col1 col2
|
||||
1 100
|
||||
rollback;
|
||||
rollback;
|
||||
drop table t1;
|
||||
drop function f1;
|
||||
create table t1 (
|
||||
a int, b char(10), c char(10), filler char(10), primary key(a, b(2)), unique key (a, c(2))
|
||||
) character set utf8 engine = innodb;
|
||||
|
19
mysql-test/r/innodb_notembedded.result
Normal file
19
mysql-test/r/innodb_notembedded.result
Normal file
@ -0,0 +1,19 @@
|
||||
create table t1 (col1 integer primary key, col2 integer) engine=innodb;
|
||||
insert t1 values (1,100);
|
||||
create function f1 () returns integer begin
|
||||
declare var1 int;
|
||||
select col2 into var1 from t1 where col1=1 for update;
|
||||
return var1;
|
||||
end|
|
||||
start transaction;
|
||||
select f1();
|
||||
f1()
|
||||
100
|
||||
update t1 set col2=0 where col1=1;
|
||||
select * from t1;
|
||||
col1 col2
|
||||
1 100
|
||||
rollback;
|
||||
rollback;
|
||||
drop table t1;
|
||||
drop function f1;
|
@ -139,3 +139,30 @@ a b c
|
||||
10 NULL Ten
|
||||
15 NULL Fifteen
|
||||
drop table t1, t2;
|
||||
CREATE TABLE t1 (a int);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
SET NAMES latin1;
|
||||
SET character_set_filesystem=filename;
|
||||
select @@character_set_filesystem;
|
||||
@@character_set_filesystem
|
||||
filename
|
||||
SELECT * INTO OUTFILE 't-1' FROM t1;
|
||||
DELETE FROM t1;
|
||||
LOAD DATA INFILE 't-1' INTO TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
DELETE FROM t1;
|
||||
SET character_set_filesystem=latin1;
|
||||
select @@character_set_filesystem;
|
||||
@@character_set_filesystem
|
||||
latin1
|
||||
LOAD DATA INFILE 't@002d1' INTO TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
DROP TABLE t1;
|
||||
SET character_set_filesystem=default;
|
||||
select @@character_set_filesystem;
|
||||
@@character_set_filesystem
|
||||
binary
|
||||
|
54
mysql-test/r/log_tables.result
Normal file
54
mysql-test/r/log_tables.result
Normal file
@ -0,0 +1,54 @@
|
||||
use mysql;
|
||||
truncate table general_log;
|
||||
select * from general_log;
|
||||
event_time user_host thread_id server_id command_type argument
|
||||
TIMESTAMP root[root] @ localhost [] 1 1 Query select * from general_log
|
||||
truncate table slow_log;
|
||||
select * from slow_log;
|
||||
start_time user_host query_time lock_time rows_sent rows_examined db last_insert_id insert_id server_id sql_text
|
||||
truncate table general_log;
|
||||
select * from general_log where argument like '%general_log%';
|
||||
event_time user_host thread_id server_id command_type argument
|
||||
TIMESTAMP root[root] @ localhost [] 1 1 Query select * from general_log where argument like '%general_log%'
|
||||
create table join_test (verbose_comment varchar (80), command_type varchar(64));
|
||||
insert into join_test values ("User performed a usual SQL query", "Query");
|
||||
insert into join_test values ("New DB connection was registered", "Connect");
|
||||
insert into join_test values ("Get the table info", "Field List");
|
||||
select verbose_comment, user_host, argument
|
||||
from mysql.general_log join join_test
|
||||
on (mysql.general_log.command_type = join_test.command_type);
|
||||
verbose_comment user_host argument
|
||||
User performed a usual SQL query root[root] @ localhost [] select * from general_log where argument like '%general_log%'
|
||||
User performed a usual SQL query root[root] @ localhost [] create table join_test (verbose_comment varchar (80), command_type varchar(64))
|
||||
User performed a usual SQL query root[root] @ localhost [] insert into join_test values ("User performed a usual SQL query", "Query")
|
||||
User performed a usual SQL query root[root] @ localhost [] insert into join_test values ("New DB connection was registered", "Connect")
|
||||
User performed a usual SQL query root[root] @ localhost [] insert into join_test values ("Get the table info", "Field List")
|
||||
User performed a usual SQL query root[root] @ localhost [] select verbose_comment, user_host, argument
|
||||
from mysql.general_log join join_test
|
||||
on (mysql.general_log.command_type = join_test.command_type)
|
||||
drop table join_test;
|
||||
flush logs;
|
||||
lock tables mysql.general_log WRITE;
|
||||
ERROR HY000: You can't write-lock a log table. Only read access is possible.
|
||||
lock tables mysql.slow_log WRITE;
|
||||
ERROR HY000: You can't write-lock a log table. Only read access is possible.
|
||||
lock tables mysql.general_log READ;
|
||||
ERROR HY000: You can't use usual read lock with log tables. Try READ LOCAL instead.
|
||||
lock tables mysql.slow_log READ;
|
||||
ERROR HY000: You can't use usual read lock with log tables. Try READ LOCAL instead.
|
||||
lock tables mysql.slow_log READ LOCAL, mysql.general_log READ LOCAL;
|
||||
unlock tables;
|
||||
lock tables mysql.general_log READ LOCAL;
|
||||
flush logs;
|
||||
unlock tables;
|
||||
select "Mark that we woke up from flush logs in the test"
|
||||
as "test passed";
|
||||
test passed
|
||||
Mark that we woke up from flush logs in the test
|
||||
lock tables mysql.general_log READ LOCAL;
|
||||
truncate mysql.general_log;
|
||||
unlock tables;
|
||||
select "Mark that we woke up from TRUNCATE in the test"
|
||||
as "test passed";
|
||||
test passed
|
||||
Mark that we woke up from TRUNCATE in the test
|
@ -3,6 +3,8 @@ mysql.columns_priv OK
|
||||
mysql.db OK
|
||||
mysql.event OK
|
||||
mysql.func OK
|
||||
mysql.general_log
|
||||
note : The storage engine for the table doesn't support optimize
|
||||
mysql.help_category OK
|
||||
mysql.help_keyword OK
|
||||
mysql.help_relation OK
|
||||
@ -11,6 +13,8 @@ mysql.host OK
|
||||
mysql.plugin OK
|
||||
mysql.proc OK
|
||||
mysql.procs_priv OK
|
||||
mysql.slow_log
|
||||
note : The storage engine for the table doesn't support optimize
|
||||
mysql.tables_priv OK
|
||||
mysql.time_zone OK
|
||||
mysql.time_zone_leap_second OK
|
||||
@ -22,6 +26,8 @@ mysql.columns_priv OK
|
||||
mysql.db OK
|
||||
mysql.event OK
|
||||
mysql.func OK
|
||||
mysql.general_log
|
||||
note : The storage engine for the table doesn't support optimize
|
||||
mysql.help_category OK
|
||||
mysql.help_keyword OK
|
||||
mysql.help_relation OK
|
||||
@ -30,6 +36,8 @@ mysql.host OK
|
||||
mysql.plugin OK
|
||||
mysql.proc OK
|
||||
mysql.procs_priv OK
|
||||
mysql.slow_log
|
||||
note : The storage engine for the table doesn't support optimize
|
||||
mysql.tables_priv OK
|
||||
mysql.time_zone OK
|
||||
mysql.time_zone_leap_second OK
|
||||
|
@ -1,6 +1,6 @@
|
||||
select -1 as "before_use_test" ;
|
||||
select 0 as "before_use_test" ;
|
||||
before_use_test
|
||||
-1
|
||||
0
|
||||
select otto from (select 1 as otto) as t1;
|
||||
otto
|
||||
1
|
||||
|
@ -110,7 +110,7 @@ t3 CREATE TABLE `t3` (
|
||||
`id` int(11) NOT NULL,
|
||||
`name` char(255) default NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=NDBCLUSTER DEFAULT CHARSET=latin1
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
||||
select * from t3;
|
||||
id name
|
||||
1 Explorer
|
||||
|
@ -9,7 +9,7 @@ t1 CREATE TABLE `t1` (
|
||||
`pk1` int(11) NOT NULL,
|
||||
`b` bit(64) default NULL,
|
||||
PRIMARY KEY (`pk1`)
|
||||
) ENGINE=NDBCLUSTER DEFAULT CHARSET=latin1
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
||||
insert into t1 values
|
||||
(0,b'1111111111111111111111111111111111111111111111111111111111111111'),
|
||||
(1,b'1000000000000000000000000000000000000000000000000000000000000000'),
|
||||
|
@ -1,7 +1,7 @@
|
||||
ndbd,1,localhost ndbd,2,localhost ndb_mgmd,3,localhost mysqld,4, mysqld,5, mysqld,6, mysqld,7, mysqld,8, mysqld,9, mysqld,10, mysqld,11,
|
||||
1,localhost,10485760,1048576 2,localhost,10485760,1048576
|
||||
1 localhost 10485760 1048576
|
||||
2 localhost 10485760 1048576
|
||||
1,localhost,20971520,1048576 2,localhost,20971520,1048576
|
||||
1 localhost 20971520 1048576
|
||||
2 localhost 20971520 1048576
|
||||
1 2
|
||||
ndbd,1,localhost ndbd,2,localhost ndb_mgmd,3,localhost mysqld,4, mysqld,5, mysqld,6, mysqld,7, mysqld,8, mysqld,9, mysqld,10, mysqld,11,
|
||||
ndbd,1,localhost,52428800,26214400 ndbd,2,localhost,52428800,36700160 ndbd,3,localhost,52428800,52428800 ndbd,4,localhost,52428800,52428800 ndb_mgmd,5,localhost,, mysqld,6,localhost,,
|
||||
|
@ -13,7 +13,7 @@ Table Create Table
|
||||
gis_point CREATE TABLE `gis_point` (
|
||||
`fid` int(11) default NULL,
|
||||
`g` point default NULL
|
||||
) ENGINE=NDBCLUSTER DEFAULT CHARSET=latin1
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
||||
SHOW FIELDS FROM gis_point;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) YES NULL
|
||||
@ -471,7 +471,7 @@ Table Create Table
|
||||
gis_point CREATE TABLE `gis_point` (
|
||||
`fid` int(11) default NULL,
|
||||
`g` point default NULL
|
||||
) ENGINE=NDBCLUSTER DEFAULT CHARSET=latin1
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY ()
|
||||
SHOW FIELDS FROM gis_point;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) YES NULL
|
||||
|
@ -80,3 +80,12 @@ t1 CREATE TABLE `t1` (
|
||||
PRIMARY KEY USING HASH (`a`,`b`,`c`)
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1 PARTITION BY KEY (b)
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a int not null primary key)
|
||||
PARTITION BY KEY(a)
|
||||
(PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB);
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int not null primary key);
|
||||
ALTER TABLE t1
|
||||
PARTITION BY KEY(a)
|
||||
(PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB);
|
||||
drop table t1;
|
||||
|
@ -1,6 +1,14 @@
|
||||
use test;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||
id type state logging database schema name
|
||||
2 UserTable Online Yes cluster_replication def apply_status
|
||||
1 SystemTable Online Yes sys def NDB$EVENTS_0
|
||||
3 UserTable Online Yes cluster_replication def schema
|
||||
0 SystemTable Online Yes sys def SYSTAB_0
|
||||
|
||||
NDBT_ProgramExit: 0 - OK
|
||||
|
||||
CREATE TABLE `t1_c` (
|
||||
`capgoaledatta` smallint(5) unsigned NOT NULL auto_increment,
|
||||
`goaledatta` char(2) NOT NULL default '',
|
||||
@ -225,6 +233,224 @@ from (select * from t9 union
|
||||
select * from t9_c) a;
|
||||
count(*)
|
||||
3
|
||||
ALTER TABLE t1_c
|
||||
PARTITION BY RANGE (`capgoaledatta`)
|
||||
(PARTITION p0 VALUES LESS THAN MAXVALUE);
|
||||
ALTER TABLE t2_c
|
||||
PARTITION BY LIST(`capgotod`)
|
||||
(PARTITION p0 VALUES IN (0,1,2,3,4,5,6));
|
||||
ALTER TABLE t3_c
|
||||
PARTITION BY HASH (`CapGoaledatta`);
|
||||
ALTER TABLE t5_c
|
||||
PARTITION BY HASH (`capfa`)
|
||||
PARTITIONS 4;
|
||||
ALTER TABLE t6_c
|
||||
PARTITION BY LINEAR HASH (`relatta`)
|
||||
PARTITIONS 4;
|
||||
ALTER TABLE t7_c
|
||||
PARTITION BY LINEAR KEY (`dardtestard`);
|
||||
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||
select count(*) from t1;
|
||||
count(*)
|
||||
5
|
||||
select count(*) from t1_c;
|
||||
count(*)
|
||||
5
|
||||
select count(*)
|
||||
from (select * from t1 union
|
||||
select * from t1_c) a;
|
||||
count(*)
|
||||
5
|
||||
select count(*) from t2;
|
||||
count(*)
|
||||
6
|
||||
select count(*) from t2_c;
|
||||
count(*)
|
||||
6
|
||||
select count(*)
|
||||
from (select * from t2 union
|
||||
select * from t2_c) a;
|
||||
count(*)
|
||||
6
|
||||
select count(*) from t3;
|
||||
count(*)
|
||||
4
|
||||
select count(*) from t3_c;
|
||||
count(*)
|
||||
4
|
||||
select count(*)
|
||||
from (select * from t3 union
|
||||
select * from t3_c) a;
|
||||
count(*)
|
||||
4
|
||||
select count(*) from t4;
|
||||
count(*)
|
||||
22
|
||||
select count(*) from t4_c;
|
||||
count(*)
|
||||
22
|
||||
select count(*)
|
||||
from (select * from t4 union
|
||||
select * from t4_c) a;
|
||||
count(*)
|
||||
22
|
||||
select count(*) from t5;
|
||||
count(*)
|
||||
3
|
||||
select count(*) from t5_c;
|
||||
count(*)
|
||||
3
|
||||
select count(*)
|
||||
from (select * from t5 union
|
||||
select * from t5_c) a;
|
||||
count(*)
|
||||
3
|
||||
select count(*) from t6;
|
||||
count(*)
|
||||
8
|
||||
select count(*) from t6_c;
|
||||
count(*)
|
||||
8
|
||||
select count(*)
|
||||
from (select * from t6 union
|
||||
select * from t6_c) a;
|
||||
count(*)
|
||||
8
|
||||
select count(*) from t7;
|
||||
count(*)
|
||||
5
|
||||
select count(*) from t7_c;
|
||||
count(*)
|
||||
5
|
||||
select count(*)
|
||||
from (select * from t7 union
|
||||
select * from t7_c) a;
|
||||
count(*)
|
||||
5
|
||||
select count(*) from t8;
|
||||
count(*)
|
||||
3
|
||||
select count(*) from t8_c;
|
||||
count(*)
|
||||
3
|
||||
select count(*)
|
||||
from (select * from t8 union
|
||||
select * from t8_c) a;
|
||||
count(*)
|
||||
3
|
||||
select count(*) from t9;
|
||||
count(*)
|
||||
3
|
||||
select count(*) from t9_c;
|
||||
count(*)
|
||||
3
|
||||
select count(*)
|
||||
from (select * from t9 union
|
||||
select * from t9_c) a;
|
||||
count(*)
|
||||
3
|
||||
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||
select count(*) from t1;
|
||||
count(*)
|
||||
5
|
||||
select count(*) from t1_c;
|
||||
count(*)
|
||||
5
|
||||
select count(*)
|
||||
from (select * from t1 union
|
||||
select * from t1_c) a;
|
||||
count(*)
|
||||
5
|
||||
select count(*) from t2;
|
||||
count(*)
|
||||
6
|
||||
select count(*) from t2_c;
|
||||
count(*)
|
||||
6
|
||||
select count(*)
|
||||
from (select * from t2 union
|
||||
select * from t2_c) a;
|
||||
count(*)
|
||||
6
|
||||
select count(*) from t3;
|
||||
count(*)
|
||||
4
|
||||
select count(*) from t3_c;
|
||||
count(*)
|
||||
4
|
||||
select count(*)
|
||||
from (select * from t3 union
|
||||
select * from t3_c) a;
|
||||
count(*)
|
||||
4
|
||||
select count(*) from t4;
|
||||
count(*)
|
||||
22
|
||||
select count(*) from t4_c;
|
||||
count(*)
|
||||
22
|
||||
select count(*)
|
||||
from (select * from t4 union
|
||||
select * from t4_c) a;
|
||||
count(*)
|
||||
22
|
||||
select count(*) from t5;
|
||||
count(*)
|
||||
3
|
||||
select count(*) from t5_c;
|
||||
count(*)
|
||||
3
|
||||
select count(*)
|
||||
from (select * from t5 union
|
||||
select * from t5_c) a;
|
||||
count(*)
|
||||
3
|
||||
select count(*) from t6;
|
||||
count(*)
|
||||
8
|
||||
select count(*) from t6_c;
|
||||
count(*)
|
||||
8
|
||||
select count(*)
|
||||
from (select * from t6 union
|
||||
select * from t6_c) a;
|
||||
count(*)
|
||||
8
|
||||
select count(*) from t7;
|
||||
count(*)
|
||||
5
|
||||
select count(*) from t7_c;
|
||||
count(*)
|
||||
5
|
||||
select count(*)
|
||||
from (select * from t7 union
|
||||
select * from t7_c) a;
|
||||
count(*)
|
||||
5
|
||||
select count(*) from t8;
|
||||
count(*)
|
||||
3
|
||||
select count(*) from t8_c;
|
||||
count(*)
|
||||
3
|
||||
select count(*)
|
||||
from (select * from t8 union
|
||||
select * from t8_c) a;
|
||||
count(*)
|
||||
3
|
||||
select count(*) from t9;
|
||||
count(*)
|
||||
3
|
||||
select count(*) from t9_c;
|
||||
count(*)
|
||||
3
|
||||
select count(*)
|
||||
from (select * from t9 union
|
||||
select * from t9_c) a;
|
||||
count(*)
|
||||
3
|
||||
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||
Create table test/def/t2_c failed: Translate frm error
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||
520093696,1
|
||||
520093696,2
|
||||
|
@ -65,6 +65,8 @@ partitions 3
|
||||
(partition x1 tablespace ts1,
|
||||
partition x2 tablespace ts2,
|
||||
partition x3 tablespace ts3);
|
||||
CREATE TABLE t2 LIKE t1;
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (
|
||||
a int not null,
|
||||
@ -108,6 +110,127 @@ insert into t1 values (3);
|
||||
insert into t1 values (4);
|
||||
UNLOCK TABLES;
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int, name VARCHAR(50), purchased DATE)
|
||||
PARTITION BY RANGE (a)
|
||||
(PARTITION p0 VALUES LESS THAN (3),
|
||||
PARTITION p1 VALUES LESS THAN (7),
|
||||
PARTITION p2 VALUES LESS THAN (9),
|
||||
PARTITION p3 VALUES LESS THAN (11));
|
||||
INSERT INTO t1 VALUES
|
||||
(1, 'desk organiser', '2003-10-15'),
|
||||
(2, 'CD player', '1993-11-05'),
|
||||
(3, 'TV set', '1996-03-10'),
|
||||
(4, 'bookcase', '1982-01-10'),
|
||||
(5, 'exercise bike', '2004-05-09'),
|
||||
(6, 'sofa', '1987-06-05'),
|
||||
(7, 'popcorn maker', '2001-11-22'),
|
||||
(8, 'acquarium', '1992-08-04'),
|
||||
(9, 'study desk', '1984-09-16'),
|
||||
(10, 'lava lamp', '1998-12-25');
|
||||
SELECT * from t1 ORDER BY a;
|
||||
a name purchased
|
||||
1 desk organiser 2003-10-15
|
||||
2 CD player 1993-11-05
|
||||
3 TV set 1996-03-10
|
||||
4 bookcase 1982-01-10
|
||||
5 exercise bike 2004-05-09
|
||||
6 sofa 1987-06-05
|
||||
7 popcorn maker 2001-11-22
|
||||
8 acquarium 1992-08-04
|
||||
9 study desk 1984-09-16
|
||||
10 lava lamp 1998-12-25
|
||||
ALTER TABLE t1 DROP PARTITION p0;
|
||||
SELECT * from t1 ORDER BY a;
|
||||
a name purchased
|
||||
3 TV set 1996-03-10
|
||||
4 bookcase 1982-01-10
|
||||
5 exercise bike 2004-05-09
|
||||
6 sofa 1987-06-05
|
||||
7 popcorn maker 2001-11-22
|
||||
8 acquarium 1992-08-04
|
||||
9 study desk 1984-09-16
|
||||
10 lava lamp 1998-12-25
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION p0 VALUES IN (1,2,3), PARTITION p1 VALUES IN (4,5,6));
|
||||
insert into t1 values (1),(2),(3),(4),(5),(6);
|
||||
select * from t1;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
6
|
||||
truncate t1;
|
||||
select * from t1;
|
||||
a
|
||||
truncate t1;
|
||||
select * from t1;
|
||||
a
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int, b int, primary key(a,b))
|
||||
PARTITION BY KEY(b,a) PARTITIONS 4;
|
||||
insert into t1 values (0,0),(1,1),(2,2),(3,3),(4,4),(5,5),(6,6);
|
||||
select * from t1 where a = 4;
|
||||
a b
|
||||
4 4
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
PARTITIONS 1
|
||||
(PARTITION x1 VALUES IN (1) ENGINE=MEMORY);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) default NULL
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=latin1 PARTITION BY LIST (a) (PARTITION x1 VALUES IN (1) ENGINE = MEMORY)
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int, unique(a))
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION x1 VALUES IN (10), PARTITION x2 VALUES IN (20));
|
||||
REPLACE t1 SET a = 4;
|
||||
ERROR HY000: Table has no partition for value 4
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION x1 VALUES IN (2), PARTITION x2 VALUES IN (3));
|
||||
insert into t1 values (2), (3);
|
||||
insert into t1 values (4);
|
||||
ERROR HY000: Table has no partition for value 4
|
||||
insert into t1 values (1);
|
||||
ERROR HY000: Table has no partition for value 1
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY HASH(a)
|
||||
PARTITIONS 5;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PARTITION BY HASH (a) PARTITIONS 5
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY RANGE (a)
|
||||
(PARTITION x1 VALUES LESS THAN (2));
|
||||
insert into t1 values (1);
|
||||
update t1 set a = 5;
|
||||
ERROR HY000: Table has no partition for value 5
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION x1 VALUES IN (10), PARTITION x2 VALUES IN (20));
|
||||
analyze table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status OK
|
||||
drop table t1;
|
||||
CREATE TABLE `t1` (
|
||||
`id` int(11) default NULL
|
||||
) ENGINE=BLACKHOLE DEFAULT CHARSET=latin1 PARTITION BY HASH (id) ;
|
||||
SELECT * FROM t1;
|
||||
id
|
||||
drop table t1;
|
||||
CREATE TABLE `t1` (
|
||||
`id` int(11) default NULL
|
||||
) ENGINE=BLACKHOLE DEFAULT CHARSET=latin1 PARTITION BY HASH (id) ;
|
||||
@ -119,8 +242,8 @@ create table t1
|
||||
partition by range (a)
|
||||
( partition p0 values less than(10),
|
||||
partition p1 values less than (20),
|
||||
partition p2 values less than maxvalue);
|
||||
alter table t1 reorganise partition p2 into (partition p2 values less than (30));
|
||||
partition p2 values less than (25));
|
||||
alter table t1 reorganize partition p2 into (partition p2 values less than (30));
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -139,7 +262,7 @@ PARTITION x6 VALUES LESS THAN (14),
|
||||
PARTITION x7 VALUES LESS THAN (16),
|
||||
PARTITION x8 VALUES LESS THAN (18),
|
||||
PARTITION x9 VALUES LESS THAN (20));
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1,x2 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1,x2 INTO
|
||||
(PARTITION x1 VALUES LESS THAN (6));
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
|
1725
mysql-test/r/partition_02myisam.result
Normal file
1725
mysql-test/r/partition_02myisam.result
Normal file
File diff suppressed because it is too large
Load Diff
1361
mysql-test/r/partition_03ndb.result
Normal file
1361
mysql-test/r/partition_03ndb.result
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,4 @@
|
||||
drop table if exists t1;
|
||||
partition by list (a)
|
||||
partitions 3
|
||||
(partition x1 values in (1,2,9,4) tablespace ts1,
|
||||
@ -544,6 +545,10 @@ partitions 2
|
||||
partition x2 values in (5));
|
||||
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 '4,
|
||||
partition x2 values in (5))' at line 8
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY RANGE (a)
|
||||
(PARTITION p0 VALUES LESS THAN (x1));
|
||||
ERROR 42S22: Unknown column 'x1' in 'partition function'
|
||||
CREATE TABLE t1(a int)
|
||||
PARTITION BY RANGE (a) (PARTITION p1 VALUES LESS THAN(5));
|
||||
insert into t1 values (10);
|
||||
|
@ -1,3 +1,4 @@
|
||||
drop table if exists t1;
|
||||
CREATE TABLE t1 (a int, b int)
|
||||
PARTITION BY RANGE (a)
|
||||
(PARTITION x0 VALUES LESS THAN (2),
|
||||
@ -10,48 +11,52 @@ PARTITION x6 VALUES LESS THAN (14),
|
||||
PARTITION x7 VALUES LESS THAN (16),
|
||||
PARTITION x8 VALUES LESS THAN (18),
|
||||
PARTITION x9 VALUES LESS THAN (20));
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (2),
|
||||
PARTITION x11 VALUES LESS THAN (5));
|
||||
ERROR HY000: The new partitions cover a bigger range then the reorganised partitions do
|
||||
ERROR HY000: Reorganize of range partitions cannot change total ranges except for last partition where it can extend the range
|
||||
ALTER TABLE t1 DROP PARTITION x0, x1, x2, x3, x3;
|
||||
ERROR HY000: Error in list of partitions to change
|
||||
ERROR HY000: Error in list of partitions to DROP
|
||||
ALTER TABLE t1 DROP PARTITION x0, x1, x2, x10;
|
||||
ERROR HY000: Error in list of partitions to change
|
||||
ERROR HY000: Error in list of partitions to DROP
|
||||
ALTER TABLE t1 DROP PARTITION x10, x1, x2, x1;
|
||||
ERROR HY000: Error in list of partitions to change
|
||||
ERROR HY000: Error in list of partitions to DROP
|
||||
ALTER TABLE t1 DROP PARTITION x10, x1, x2, x3;
|
||||
ERROR HY000: Error in list of partitions to change
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 INTO
|
||||
ERROR HY000: Error in list of partitions to DROP
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 INTO
|
||||
(PARTITION x11 VALUES LESS THAN (22));
|
||||
ERROR HY000: More partitions to reorganise than there are partitions
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1,x2 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1,x2 INTO
|
||||
(PARTITION x3 VALUES LESS THAN (6));
|
||||
ERROR HY000: All partitions must have unique names in the table
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0, x2 INTO
|
||||
ERROR HY000: Duplicate partition name x3
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0, x2 INTO
|
||||
(PARTITION x11 VALUES LESS THAN (2));
|
||||
ERROR HY000: When reorganising a set of partitions they must be in consecutive order
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0, x1, x1 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0, x1, x1 INTO
|
||||
(PARTITION x11 VALUES LESS THAN (4));
|
||||
ERROR HY000: Error in list of partitions to change
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1 INTO
|
||||
ERROR HY000: Error in list of partitions to REORGANIZE
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (5));
|
||||
ERROR HY000: The new partitions cover a bigger range then the reorganised partitions do
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1 INTO
|
||||
ERROR HY000: Reorganize of range partitions cannot change total ranges except for last partition where it can extend the range
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (4),
|
||||
PARTITION x11 VALUES LESS THAN (2));
|
||||
ERROR HY000: Reorganize of range partitions cannot change total ranges except for last partition where it can extend the range
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (6),
|
||||
PARTITION x11 VALUES LESS THAN (4));
|
||||
ERROR HY000: VALUES LESS THAN value must be strictly increasing for each partition
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY KEY (a)
|
||||
PARTITIONS 2;
|
||||
ALTER TABLE t1 ADD PARTITION (PARTITION p1);
|
||||
ERROR HY000: All partitions must have unique names in the table
|
||||
ERROR HY000: Duplicate partition name p1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY KEY (a)
|
||||
(PARTITION x0, PARTITION x1, PARTITION x2, PARTITION x3, PARTITION x3);
|
||||
ERROR HY000: All partitions must have unique names in the table
|
||||
ERROR HY000: Duplicate partition name x3
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY RANGE (a)
|
||||
SUBPARTITION BY KEY (a)
|
||||
@ -100,7 +105,7 @@ PARTITION x1 VALUES LESS THAN (8));
|
||||
ALTER TABLE t1 ADD PARTITION PARTITIONS 1;
|
||||
ERROR HY000: For RANGE partitions each partition must be defined
|
||||
ALTER TABLE t1 DROP PARTITION x2;
|
||||
ERROR HY000: Error in list of partitions to change
|
||||
ERROR HY000: Error in list of partitions to DROP
|
||||
ALTER TABLE t1 COALESCE PARTITION 1;
|
||||
ERROR HY000: COALESCE PARTITION can only be used on HASH/KEY partitions
|
||||
ALTER TABLE t1 DROP PARTITION x1;
|
||||
|
@ -1105,56 +1105,20 @@ call f1();
|
||||
s1
|
||||
s1
|
||||
s1
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 3
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 3
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 0
|
||||
call f1();
|
||||
s1
|
||||
s1
|
||||
s1
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 3
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 3
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 3
|
||||
call f1();
|
||||
s1
|
||||
s1
|
||||
s1
|
||||
select sql_cache * from t1;
|
||||
s1
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 4
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 4
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 6
|
||||
insert into t1 values (1);
|
||||
select sql_cache * from t1;
|
||||
s1
|
||||
1
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 1
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 5
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 6
|
||||
call f1();
|
||||
s1
|
||||
1
|
||||
@ -1172,15 +1136,6 @@ s1
|
||||
select sql_cache * from t1;
|
||||
s1
|
||||
1
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 4
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 8
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 10
|
||||
flush query cache;
|
||||
reset query cache;
|
||||
flush status;
|
||||
|
@ -94,4 +94,224 @@ a
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
drop table t1;
|
||||
flush query cache;
|
||||
reset query cache;
|
||||
flush status;
|
||||
create table t1 (s1 int)//
|
||||
create procedure f1 () begin
|
||||
select sql_cache * from t1;
|
||||
select sql_cache * from t1;
|
||||
select sql_cache * from t1;
|
||||
end;//
|
||||
create procedure f2 () begin
|
||||
select sql_cache * from t1 where s1=1;
|
||||
select sql_cache * from t1;
|
||||
end;//
|
||||
create procedure f3 () begin
|
||||
select sql_cache * from t1;
|
||||
select sql_cache * from t1 where s1=1;
|
||||
end;//
|
||||
create procedure f4 () begin
|
||||
select sql_cache * from t1;
|
||||
select sql_cache * from t1 where s1=1;
|
||||
select sql_cache * from t1;
|
||||
select sql_cache * from t1 where s1=1;
|
||||
select sql_cache * from t1 where s1=1;
|
||||
end;//
|
||||
call f1();
|
||||
s1
|
||||
s1
|
||||
s1
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 3
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 3
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 0
|
||||
call f1();
|
||||
s1
|
||||
s1
|
||||
s1
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 3
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 3
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 3
|
||||
call f1();
|
||||
s1
|
||||
s1
|
||||
s1
|
||||
select sql_cache * from t1;
|
||||
s1
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 4
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 4
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 6
|
||||
insert into t1 values (1);
|
||||
select sql_cache * from t1;
|
||||
s1
|
||||
1
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 1
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 5
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 6
|
||||
call f1();
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
call f1();
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
select sql_cache * from t1;
|
||||
s1
|
||||
1
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 4
|
||||
show status like "Qcache_inserts";
|
||||
Variable_name Value
|
||||
Qcache_inserts 8
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 10
|
||||
flush query cache;
|
||||
reset query cache;
|
||||
flush status;
|
||||
select sql_cache * from t1;
|
||||
s1
|
||||
1
|
||||
select sql_cache * from t1 where s1=1;
|
||||
s1
|
||||
1
|
||||
call f1();
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
call f2();
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
call f3();
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
call f4();
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
call f4();
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
call f3();
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
call f2();
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
select sql_cache * from t1 where s1=1;
|
||||
s1
|
||||
1
|
||||
insert into t1 values (2);
|
||||
call f1();
|
||||
s1
|
||||
1
|
||||
2
|
||||
s1
|
||||
1
|
||||
2
|
||||
s1
|
||||
1
|
||||
2
|
||||
select sql_cache * from t1 where s1=1;
|
||||
s1
|
||||
1
|
||||
select sql_cache * from t1;
|
||||
s1
|
||||
1
|
||||
2
|
||||
call f1();
|
||||
s1
|
||||
1
|
||||
2
|
||||
s1
|
||||
1
|
||||
2
|
||||
s1
|
||||
1
|
||||
2
|
||||
call f3();
|
||||
s1
|
||||
1
|
||||
2
|
||||
s1
|
||||
1
|
||||
call f3();
|
||||
s1
|
||||
1
|
||||
2
|
||||
s1
|
||||
1
|
||||
call f1();
|
||||
s1
|
||||
1
|
||||
2
|
||||
s1
|
||||
1
|
||||
2
|
||||
s1
|
||||
1
|
||||
2
|
||||
drop procedure f1;
|
||||
drop procedure f2;
|
||||
drop procedure f3;
|
||||
drop procedure f4;
|
||||
drop table t1;
|
||||
set GLOBAL query_cache_size=0;
|
||||
|
@ -147,10 +147,14 @@ drop table t1;
|
||||
flush tables;
|
||||
show open tables;
|
||||
Database Table In_use Name_locked
|
||||
mysql general_log 1 0
|
||||
mysql slow_log 1 0
|
||||
create table t1(n int);
|
||||
insert into t1 values (1);
|
||||
show open tables;
|
||||
Database Table In_use Name_locked
|
||||
mysql general_log 1 0
|
||||
mysql slow_log 1 0
|
||||
test t1 0 0
|
||||
drop table t1;
|
||||
create table t1 (a int not null, b VARCHAR(10), INDEX (b) ) AVG_ROW_LENGTH=10 CHECKSUM=1 COMMENT="test" ENGINE=MYISAM MIN_ROWS=10 MAX_ROWS=100 PACK_KEYS=1 DELAY_KEY_WRITE=1 ROW_FORMAT=fixed;
|
||||
@ -564,20 +568,24 @@ SELECT 1 FROM mysql.db, mysql.proc, mysql.user, mysql.time_zone, mysql.time_zone
|
||||
1
|
||||
SHOW OPEN TABLES;
|
||||
Database Table In_use Name_locked
|
||||
mysql db 0 0
|
||||
mysql proc 0 0
|
||||
test urkunde 0 0
|
||||
mysql time_zone 0 0
|
||||
mysql user 0 0
|
||||
mysql db 0 0
|
||||
test txt1 0 0
|
||||
mysql proc 0 0
|
||||
mysql slow_log 1 0
|
||||
test tyt2 0 0
|
||||
mysql general_log 1 0
|
||||
mysql user 0 0
|
||||
mysql time_zone_name 0 0
|
||||
SHOW OPEN TABLES FROM mysql;
|
||||
Database Table In_use Name_locked
|
||||
mysql db 0 0
|
||||
mysql time_zone 0 0
|
||||
mysql user 0 0
|
||||
mysql proc 0 0
|
||||
mysql time_zone 0 0
|
||||
mysql db 0 0
|
||||
mysql slow_log 1 0
|
||||
mysql general_log 1 0
|
||||
mysql user 0 0
|
||||
mysql time_zone_name 0 0
|
||||
SHOW OPEN TABLES FROM mysql LIKE 'u%';
|
||||
Database Table In_use Name_locked
|
||||
@ -590,12 +598,16 @@ test tyt2 0 0
|
||||
mysql time_zone_name 0 0
|
||||
SHOW OPEN TABLES LIKE '%o%';
|
||||
Database Table In_use Name_locked
|
||||
mysql time_zone 0 0
|
||||
mysql proc 0 0
|
||||
mysql time_zone 0 0
|
||||
mysql slow_log 1 0
|
||||
mysql general_log 1 0
|
||||
mysql time_zone_name 0 0
|
||||
FLUSH TABLES;
|
||||
SHOW OPEN TABLES;
|
||||
Database Table In_use Name_locked
|
||||
mysql general_log 1 0
|
||||
mysql slow_log 1 0
|
||||
DROP TABLE txt1;
|
||||
DROP TABLE tyt2;
|
||||
DROP TABLE urkunde;
|
||||
|
@ -464,19 +464,6 @@ create table t5 (x int)|
|
||||
call bug3294()|
|
||||
ERROR 42S02: Unknown table 't5'
|
||||
drop procedure bug3294|
|
||||
drop procedure if exists bug6807|
|
||||
create procedure bug6807()
|
||||
begin
|
||||
declare id int;
|
||||
set id = connection_id();
|
||||
kill query id;
|
||||
select 'Not reached';
|
||||
end|
|
||||
call bug6807()|
|
||||
ERROR 70100: Query execution was interrupted
|
||||
call bug6807()|
|
||||
ERROR 70100: Query execution was interrupted
|
||||
drop procedure bug6807|
|
||||
drop procedure if exists bug8776_1|
|
||||
drop procedure if exists bug8776_2|
|
||||
drop procedure if exists bug8776_3|
|
||||
|
@ -2142,7 +2142,6 @@ show create database test;
|
||||
show databases like 'foo';
|
||||
show errors;
|
||||
show columns from t1;
|
||||
show grants for 'root'@'localhost';
|
||||
show keys from t1;
|
||||
show open tables like 'foo';
|
||||
show privileges;
|
||||
@ -2169,8 +2168,6 @@ Level Code Message
|
||||
Field Type Null Key Default Extra
|
||||
id char(16) NO
|
||||
data int(11) NO
|
||||
Grants for root@localhost
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
Database Table In_use Name_locked
|
||||
Privilege Context Comment
|
||||
@ -2224,8 +2221,6 @@ Level Code Message
|
||||
Field Type Null Key Default Extra
|
||||
id char(16) NO
|
||||
data int(11) NO
|
||||
Grants for root@localhost
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
Database Table In_use Name_locked
|
||||
Privilege Context Comment
|
||||
@ -2262,18 +2257,6 @@ Tables_in_test (foo)
|
||||
Variable_name Value
|
||||
Level Code Message
|
||||
drop procedure bug4902|
|
||||
drop procedure if exists bug4902_2|
|
||||
create procedure bug4902_2()
|
||||
begin
|
||||
show processlist;
|
||||
end|
|
||||
call bug4902_2()|
|
||||
Id User Host db Command Time State Info
|
||||
# root localhost test Query # NULL show processlist
|
||||
call bug4902_2()|
|
||||
Id User Host db Command Time State Info
|
||||
# root localhost test Query # NULL show processlist
|
||||
drop procedure bug4902_2|
|
||||
drop procedure if exists bug4904|
|
||||
create procedure bug4904()
|
||||
begin
|
||||
@ -2416,52 +2399,6 @@ select @x|
|
||||
NULL
|
||||
delete from t1|
|
||||
drop procedure bug4941|
|
||||
drop procedure if exists bug3583|
|
||||
drop procedure if exists bug3583|
|
||||
create procedure bug3583()
|
||||
begin
|
||||
declare c int;
|
||||
select * from t1;
|
||||
select count(*) into c from t1;
|
||||
select c;
|
||||
end|
|
||||
insert into t1 values ("x", 3), ("y", 5)|
|
||||
set @x = @@query_cache_size|
|
||||
set global query_cache_size = 10*1024*1024|
|
||||
flush status|
|
||||
flush query cache|
|
||||
show status like 'Qcache_hits'|
|
||||
Variable_name Value
|
||||
Qcache_hits 0
|
||||
call bug3583()|
|
||||
id data
|
||||
x 3
|
||||
y 5
|
||||
c
|
||||
2
|
||||
show status like 'Qcache_hits'|
|
||||
Variable_name Value
|
||||
Qcache_hits 0
|
||||
call bug3583()|
|
||||
id data
|
||||
x 3
|
||||
y 5
|
||||
c
|
||||
2
|
||||
call bug3583()|
|
||||
id data
|
||||
x 3
|
||||
y 5
|
||||
c
|
||||
2
|
||||
show status like 'Qcache_hits'|
|
||||
Variable_name Value
|
||||
Qcache_hits 2
|
||||
set global query_cache_size = @x|
|
||||
flush status|
|
||||
flush query cache|
|
||||
delete from t1|
|
||||
drop procedure bug3583|
|
||||
drop procedure if exists bug4905|
|
||||
create table t3 (s1 int,primary key (s1))|
|
||||
drop procedure if exists bug4905|
|
||||
@ -2677,17 +2614,6 @@ select id, bug5240() from t1|
|
||||
id bug5240()
|
||||
answer 42
|
||||
drop function bug5240|
|
||||
drop function if exists bug5278|
|
||||
create function bug5278 () returns char
|
||||
begin
|
||||
SET PASSWORD FOR 'bob'@'%.loc.gov' = PASSWORD('newpass');
|
||||
return 'okay';
|
||||
end|
|
||||
select bug5278()|
|
||||
ERROR 42000: Can't find any matching row in the user table
|
||||
select bug5278()|
|
||||
ERROR 42000: Can't find any matching row in the user table
|
||||
drop function bug5278|
|
||||
drop procedure if exists p1|
|
||||
create table t3(id int)|
|
||||
insert into t3 values(1)|
|
||||
@ -4052,14 +3978,6 @@ select bug10100f(5)|
|
||||
ERROR HY000: Recursive stored functions and triggers are not allowed.
|
||||
call bug10100t(5)|
|
||||
ERROR HY000: Recursive limit 0 (as set by the max_sp_recursion_depth variable) was exceeded for routine bug10100p
|
||||
set @@max_sp_recursion_depth=255|
|
||||
set @var=1|
|
||||
call bug10100p(255, @var)|
|
||||
call bug10100pt(1,255)|
|
||||
call bug10100pv(1,255)|
|
||||
call bug10100pd(1,255)|
|
||||
call bug10100pc(1,255)|
|
||||
set @@max_sp_recursion_depth=0|
|
||||
deallocate prepare stmt2|
|
||||
drop function bug10100f|
|
||||
drop procedure bug10100p|
|
||||
|
206
mysql-test/r/sp_notembedded.result
Normal file
206
mysql-test/r/sp_notembedded.result
Normal file
@ -0,0 +1,206 @@
|
||||
drop procedure if exists bug4902|
|
||||
create procedure bug4902()
|
||||
begin
|
||||
show grants for 'root'@'localhost';
|
||||
end|
|
||||
call bug4902()|
|
||||
Grants for root@localhost
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
|
||||
call bug4902()|
|
||||
Grants for root@localhost
|
||||
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
|
||||
drop procedure bug4902|
|
||||
drop procedure if exists bug4902_2|
|
||||
create procedure bug4902_2()
|
||||
begin
|
||||
show processlist;
|
||||
end|
|
||||
call bug4902_2()|
|
||||
Id User Host db Command Time State Info
|
||||
# root localhost test Query # NULL show processlist
|
||||
call bug4902_2()|
|
||||
Id User Host db Command Time State Info
|
||||
# root localhost test Query # NULL show processlist
|
||||
drop procedure bug4902_2|
|
||||
drop function if exists bug5278|
|
||||
create function bug5278 () returns char
|
||||
begin
|
||||
SET PASSWORD FOR 'bob'@'%.loc.gov' = PASSWORD('newpass');
|
||||
return 'okay';
|
||||
end|
|
||||
select bug5278()|
|
||||
ERROR 42000: Can't find any matching row in the user table
|
||||
select bug5278()|
|
||||
ERROR 42000: Can't find any matching row in the user table
|
||||
drop function bug5278|
|
||||
drop table if exists t1|
|
||||
create table t1 (
|
||||
id char(16) not null default '',
|
||||
data int not null
|
||||
)|
|
||||
drop procedure if exists bug3583|
|
||||
drop procedure if exists bug3583|
|
||||
create procedure bug3583()
|
||||
begin
|
||||
declare c int;
|
||||
select * from t1;
|
||||
select count(*) into c from t1;
|
||||
select c;
|
||||
end|
|
||||
insert into t1 values ("x", 3), ("y", 5)|
|
||||
set @x = @@query_cache_size|
|
||||
set global query_cache_size = 10*1024*1024|
|
||||
flush status|
|
||||
flush query cache|
|
||||
show status like 'Qcache_hits'|
|
||||
Variable_name Value
|
||||
Qcache_hits 0
|
||||
call bug3583()|
|
||||
id data
|
||||
x 3
|
||||
y 5
|
||||
c
|
||||
2
|
||||
show status like 'Qcache_hits'|
|
||||
Variable_name Value
|
||||
Qcache_hits 0
|
||||
call bug3583()|
|
||||
id data
|
||||
x 3
|
||||
y 5
|
||||
c
|
||||
2
|
||||
call bug3583()|
|
||||
id data
|
||||
x 3
|
||||
y 5
|
||||
c
|
||||
2
|
||||
show status like 'Qcache_hits'|
|
||||
Variable_name Value
|
||||
Qcache_hits 2
|
||||
set global query_cache_size = @x|
|
||||
flush status|
|
||||
flush query cache|
|
||||
delete from t1|
|
||||
drop procedure bug3583|
|
||||
drop table t1;
|
||||
#|
|
||||
drop procedure if exists bug6807|
|
||||
create procedure bug6807()
|
||||
begin
|
||||
declare id int;
|
||||
set id = connection_id();
|
||||
kill query id;
|
||||
select 'Not reached';
|
||||
end|
|
||||
call bug6807()|
|
||||
ERROR 70100: Query execution was interrupted
|
||||
call bug6807()|
|
||||
ERROR 70100: Query execution was interrupted
|
||||
drop procedure bug6807|
|
||||
drop function if exists bug10100f|
|
||||
drop procedure if exists bug10100p|
|
||||
drop procedure if exists bug10100t|
|
||||
drop procedure if exists bug10100pt|
|
||||
drop procedure if exists bug10100pv|
|
||||
drop procedure if exists bug10100pd|
|
||||
drop procedure if exists bug10100pc|
|
||||
create function bug10100f(prm int) returns int
|
||||
begin
|
||||
if prm > 1 then
|
||||
return prm * bug10100f(prm - 1);
|
||||
end if;
|
||||
return 1;
|
||||
end|
|
||||
create procedure bug10100p(prm int, inout res int)
|
||||
begin
|
||||
set res = res * prm;
|
||||
if prm > 1 then
|
||||
call bug10100p(prm - 1, res);
|
||||
end if;
|
||||
end|
|
||||
create procedure bug10100t(prm int)
|
||||
begin
|
||||
declare res int;
|
||||
set res = 1;
|
||||
call bug10100p(prm, res);
|
||||
select res;
|
||||
end|
|
||||
create table t3 (a int)|
|
||||
insert into t3 values (0)|
|
||||
create view v1 as select a from t3;
|
||||
create procedure bug10100pt(level int, lim int)
|
||||
begin
|
||||
if level < lim then
|
||||
update t3 set a=level;
|
||||
FLUSH TABLES;
|
||||
call bug10100pt(level+1, lim);
|
||||
else
|
||||
select * from t3;
|
||||
end if;
|
||||
end|
|
||||
create procedure bug10100pv(level int, lim int)
|
||||
begin
|
||||
if level < lim then
|
||||
update v1 set a=level;
|
||||
FLUSH TABLES;
|
||||
call bug10100pv(level+1, lim);
|
||||
else
|
||||
select * from v1;
|
||||
end if;
|
||||
end|
|
||||
prepare stmt2 from "select * from t3;";
|
||||
create procedure bug10100pd(level int, lim int)
|
||||
begin
|
||||
if level < lim then
|
||||
select level;
|
||||
prepare stmt1 from "update t3 set a=a+2";
|
||||
execute stmt1;
|
||||
FLUSH TABLES;
|
||||
execute stmt1;
|
||||
FLUSH TABLES;
|
||||
execute stmt1;
|
||||
FLUSH TABLES;
|
||||
deallocate prepare stmt1;
|
||||
execute stmt2;
|
||||
select * from t3;
|
||||
call bug10100pd(level+1, lim);
|
||||
else
|
||||
execute stmt2;
|
||||
end if;
|
||||
end|
|
||||
create procedure bug10100pc(level int, lim int)
|
||||
begin
|
||||
declare lv int;
|
||||
declare c cursor for select a from t3;
|
||||
open c;
|
||||
if level < lim then
|
||||
select level;
|
||||
fetch c into lv;
|
||||
select lv;
|
||||
update t3 set a=level+lv;
|
||||
FLUSH TABLES;
|
||||
call bug10100pc(level+1, lim);
|
||||
else
|
||||
select * from t3;
|
||||
end if;
|
||||
close c;
|
||||
end|
|
||||
set @@max_sp_recursion_depth=255|
|
||||
set @var=1|
|
||||
call bug10100p(255, @var)|
|
||||
call bug10100pt(1,255)|
|
||||
call bug10100pv(1,255)|
|
||||
call bug10100pd(1,255)|
|
||||
call bug10100pc(1,255)|
|
||||
set @@max_sp_recursion_depth=0|
|
||||
deallocate prepare stmt2|
|
||||
drop function bug10100f|
|
||||
drop procedure bug10100p|
|
||||
drop procedure bug10100t|
|
||||
drop procedure bug10100pt|
|
||||
drop procedure bug10100pv|
|
||||
drop procedure bug10100pd|
|
||||
drop procedure bug10100pc|
|
||||
drop view v1|
|
1
mysql-test/r/subselect_notembedded.result
Normal file
1
mysql-test/r/subselect_notembedded.result
Normal file
@ -0,0 +1 @@
|
||||
purge master logs before (select adddate(current_timestamp(), interval -4 day));
|
@ -5,6 +5,7 @@ columns_priv
|
||||
db
|
||||
event
|
||||
func
|
||||
general_log
|
||||
help_category
|
||||
help_keyword
|
||||
help_relation
|
||||
@ -13,6 +14,7 @@ host
|
||||
plugin
|
||||
proc
|
||||
procs_priv
|
||||
slow_log
|
||||
tables_priv
|
||||
time_zone
|
||||
time_zone_leap_second
|
||||
@ -184,6 +186,31 @@ proc CREATE TABLE `proc` (
|
||||
`comment` char(64) character set utf8 collate utf8_bin NOT NULL default '',
|
||||
PRIMARY KEY (`db`,`name`,`type`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Stored Procedures'
|
||||
show create table general_log;
|
||||
Table Create Table
|
||||
general_log CREATE TABLE `general_log` (
|
||||
`event_time` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
|
||||
`user_host` mediumtext,
|
||||
`thread_id` int(11) default NULL,
|
||||
`server_id` int(11) default NULL,
|
||||
`command_type` varchar(64) default NULL,
|
||||
`argument` mediumtext
|
||||
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log'
|
||||
show create table slow_log;
|
||||
Table Create Table
|
||||
slow_log CREATE TABLE `slow_log` (
|
||||
`start_time` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`query_time` time NOT NULL,
|
||||
`lock_time` time NOT NULL,
|
||||
`rows_sent` int(11) NOT NULL,
|
||||
`rows_examined` int(11) NOT NULL,
|
||||
`db` varchar(512) default NULL,
|
||||
`last_insert_id` int(11) default NULL,
|
||||
`insert_id` int(11) default NULL,
|
||||
`server_id` int(11) default NULL,
|
||||
`sql_text` mediumtext NOT NULL
|
||||
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
|
||||
show create table event;
|
||||
Table Create Table
|
||||
event CREATE TABLE `event` (
|
||||
|
@ -2213,15 +2213,6 @@ r_object_id users_names
|
||||
120001a080000542 guser02
|
||||
drop view v1, v2;
|
||||
drop table t1, t2;
|
||||
create definer=some_user@`` sql security invoker view v1 as select 1;
|
||||
ERROR HY000: Definer is not fully qualified
|
||||
create definer=some_user@localhost sql security invoker view v1 as select 1;
|
||||
Warnings:
|
||||
Note 1449 There is no 'some_user'@'localhost' registered
|
||||
show create view v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`some_user`@`localhost` SQL SECURITY INVOKER VIEW `v1` AS select 1 AS `1`
|
||||
drop view v1;
|
||||
create table t1 (s1 int);
|
||||
create view abc as select * from t1 as abc;
|
||||
drop table t1;
|
||||
|
@ -520,3 +520,12 @@ use test;
|
||||
use test;
|
||||
drop user mysqltest_1@localhost;
|
||||
drop database mysqltest;
|
||||
create definer=some_user@`` sql security invoker view v1 as select 1;
|
||||
ERROR HY000: Definer is not fully qualified
|
||||
create definer=some_user@localhost sql security invoker view v1 as select 1;
|
||||
Warnings:
|
||||
Note 1449 There is no 'some_user'@'localhost' registered
|
||||
show create view v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`some_user`@`localhost` SQL SECURITY INVOKER VIEW `v1` AS select 1 AS `1`
|
||||
drop view v1;
|
||||
|
@ -1,3 +1,6 @@
|
||||
# This test should work in embedded server after we fix mysqltest
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
#
|
||||
# This test is a bit tricky as we can't use backup table to overwrite an old
|
||||
# table
|
||||
|
@ -1,5 +1,6 @@
|
||||
# This is a wrapper for binlog.test so that the same test case can be used
|
||||
# For both statement and row based bin logs 9/19/2005 [jbm]
|
||||
|
||||
-- source include/not_embedded.inc
|
||||
-- source include/have_binlog_format_statement.inc
|
||||
-- source extra/binlog_tests/binlog.test
|
||||
|
@ -1,5 +1,6 @@
|
||||
# This is a wrapper for binlog.test so that the same test case can be used
|
||||
# For both statement and row based bin logs 9/19/2005 [jbm]
|
||||
|
||||
-- source include/not_embedded.inc
|
||||
-- source include/have_binlog_format_statement.inc
|
||||
-- source extra/binlog_tests/blackhole.test
|
||||
|
@ -1,5 +1,6 @@
|
||||
# This is a wrapper for binlog.test so that the same test case can be used
|
||||
# For both statement and row based bin logs 9/19/2005 [jbm]
|
||||
|
||||
-- source include/not_embedded.inc
|
||||
-- source include/have_binlog_format_statement.inc
|
||||
-- source extra/binlog_tests/ctype_cp932.test
|
||||
|
@ -1,6 +1,9 @@
|
||||
# Turn on compression between the client and server
|
||||
# and run a number of tests
|
||||
|
||||
# Can't test with embedded server
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
-- source include/have_compress.inc
|
||||
|
||||
connect (comp_con,localhost,root,,,,,COMPRESS);
|
||||
|
@ -5,6 +5,10 @@
|
||||
# This test makes no sense with the embedded server
|
||||
--source include/not_embedded.inc
|
||||
|
||||
# check that CSV engine was compiled in, as the test relies on the presence
|
||||
# of the log tables (which are CSV-based). By connect mysql; show tables;
|
||||
--source include/have_csv.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2;
|
||||
--enable_warnings
|
||||
|
@ -2,7 +2,7 @@
|
||||
# Test for the CSV engine
|
||||
#
|
||||
|
||||
-- source include/have_csv.inc
|
||||
--source include/have_csv.inc
|
||||
|
||||
#
|
||||
# Simple select test
|
||||
@ -1353,6 +1353,40 @@ DROP TABLE bug14672;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
# Test CONCURRENT INSERT (5.1)
|
||||
#
|
||||
|
||||
CREATE TABLE test_concurrent_insert ( val integer ) ENGINE = CSV;
|
||||
|
||||
connect (con1,localhost,root,,);
|
||||
connect (con2,localhost,root,,);
|
||||
|
||||
connection con1;
|
||||
# obtain TL_READ lock on the table
|
||||
LOCK TABLES test_concurrent_insert READ LOCAL;
|
||||
|
||||
connection con2;
|
||||
# should pass despite of the lock
|
||||
INSERT INTO test_concurrent_insert VALUES (1);
|
||||
SELECT * FROM test_concurrent_insert;
|
||||
|
||||
connection con1;
|
||||
# first connection should not notice the changes
|
||||
SELECT * FROM test_concurrent_insert;
|
||||
|
||||
UNLOCK TABLES;
|
||||
|
||||
# Now check that we see our own changes
|
||||
|
||||
LOCK TABLES test_concurrent_insert WRITE;
|
||||
INSERT INTO test_concurrent_insert VALUES (2);
|
||||
SELECT * FROM test_concurrent_insert;
|
||||
UNLOCK TABLES;
|
||||
|
||||
# cleanup
|
||||
DROP TABLE test_concurrent_insert;
|
||||
|
||||
#
|
||||
# BUG#13406 - incorrect amount of "records deleted"
|
||||
#
|
||||
|
@ -3,6 +3,9 @@
|
||||
# (Can't be tested with purify :( )
|
||||
#
|
||||
|
||||
# This tests not performed with embedded server
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
@ -19,6 +19,7 @@ innodb_concurrent : Results are not deterministic, Elliot will fix (BUG#3300)
|
||||
subselect : Bug#15706
|
||||
ps_7ndb : dbug assert in RBR mode when executing test suite
|
||||
rpl_ddl : Bug#15963 SBR does not show "Definer" correctly
|
||||
partition_03ndb : Bug#16385
|
||||
events : Affects flush test case. A table lock not released somewhere
|
||||
ndb_binlog_basic : Results are not deterministic, Tomas will fix
|
||||
rpl_ndb_basic : Bug#16228
|
||||
@ -26,3 +27,5 @@ rpl_sp : Bug #16456
|
||||
#ndb_dd_disk2memory : Bug #16466
|
||||
ndb_autodiscover : Needs to be fixed w.r.t binlog
|
||||
ndb_autodiscover2 : Needs to be fixed w.r.t binlog
|
||||
system_mysql_db : Needs fixing
|
||||
system_mysql_db_fix : Needs fixing
|
||||
|
@ -1,3 +1,5 @@
|
||||
# should work with embedded server after mysqltest is fixed
|
||||
-- source include/not_embedded.inc
|
||||
source include/federated.inc;
|
||||
|
||||
connection slave;
|
||||
|
@ -1,3 +1,5 @@
|
||||
# should work with embedded server after mysqltest is fixed
|
||||
-- source include/not_embedded.inc
|
||||
source include/have_archive.inc;
|
||||
source include/federated.inc;
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
# should work with embedded server after mysqltest is fixed
|
||||
-- source include/not_embedded.inc
|
||||
source include/federated.inc;
|
||||
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
# should work with embedded server after mysqltest is fixed
|
||||
-- source include/not_embedded.inc
|
||||
source include/have_bdb.inc;
|
||||
source include/federated.inc;
|
||||
|
||||
|
@ -4,6 +4,8 @@
|
||||
# Test of flush table
|
||||
#
|
||||
|
||||
# Should work in embedded server after mysqltest is fixed
|
||||
-- source include/not_embedded.inc
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2;
|
||||
--enable_warnings
|
||||
|
@ -2,6 +2,9 @@
|
||||
# test of HANDLER ...
|
||||
#
|
||||
|
||||
# should work in embedded server after mysqltest is fixed
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t3,t4,t5;
|
||||
--enable_warnings
|
||||
|
@ -1,6 +1,10 @@
|
||||
# This test uses grants, which can't get tested for embedded server
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
# check that CSV engine was compiled in, as the result of the test
|
||||
# depends on the presence of the log tables (which are CSV-based).
|
||||
--source include/have_csv.inc
|
||||
|
||||
# Test for information_schema.schemata &
|
||||
# show databases
|
||||
|
||||
|
@ -2,6 +2,8 @@
|
||||
# Test of init_connect variable
|
||||
#
|
||||
|
||||
# should work with embedded server after mysqltest is fixed
|
||||
-- source include/not_embedded.inc
|
||||
connect (con0,localhost,root,,);
|
||||
connection con0;
|
||||
select hex(@a);
|
||||
|
@ -1576,33 +1576,7 @@ connection a;
|
||||
checksum table t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# BUG#11238 - in prelocking mode SELECT .. FOR UPDATE is changed to
|
||||
# non-blocking SELECT
|
||||
#
|
||||
create table t1 (col1 integer primary key, col2 integer) engine=innodb;
|
||||
insert t1 values (1,100);
|
||||
delimiter |;
|
||||
create function f1 () returns integer begin
|
||||
declare var1 int;
|
||||
select col2 into var1 from t1 where col1=1 for update;
|
||||
return var1;
|
||||
end|
|
||||
delimiter ;|
|
||||
start transaction;
|
||||
select f1();
|
||||
connection b;
|
||||
send update t1 set col2=0 where col1=1;
|
||||
connection default;
|
||||
select * from t1;
|
||||
connection a;
|
||||
rollback;
|
||||
connection b;
|
||||
reap;
|
||||
rollback;
|
||||
connection default;
|
||||
drop table t1;
|
||||
drop function f1;
|
||||
disconnect a;
|
||||
disconnect b;
|
||||
|
||||
|
36
mysql-test/t/innodb_notembedded.test
Normal file
36
mysql-test/t/innodb_notembedded.test
Normal file
@ -0,0 +1,36 @@
|
||||
-- source include/not_embedded.inc
|
||||
-- source include/have_innodb.inc
|
||||
|
||||
connect (a,localhost,root,,);
|
||||
connect (b,localhost,root,,);
|
||||
|
||||
|
||||
#
|
||||
# BUG#11238 - in prelocking mode SELECT .. FOR UPDATE is changed to
|
||||
# non-blocking SELECT
|
||||
#
|
||||
create table t1 (col1 integer primary key, col2 integer) engine=innodb;
|
||||
insert t1 values (1,100);
|
||||
delimiter |;
|
||||
create function f1 () returns integer begin
|
||||
declare var1 int;
|
||||
select col2 into var1 from t1 where col1=1 for update;
|
||||
return var1;
|
||||
end|
|
||||
delimiter ;|
|
||||
start transaction;
|
||||
select f1();
|
||||
connection b;
|
||||
send update t1 set col2=0 where col1=1;
|
||||
connection default;
|
||||
select * from t1;
|
||||
connection a;
|
||||
rollback;
|
||||
connection b;
|
||||
reap;
|
||||
rollback;
|
||||
connection default;
|
||||
drop table t1;
|
||||
drop function f1;
|
||||
disconnect a;
|
||||
disconnect b;
|
@ -114,3 +114,27 @@ select * from t1;
|
||||
drop table t1, t2;
|
||||
|
||||
# End of 5.0 tests
|
||||
|
||||
|
||||
#
|
||||
# Bug#12448 LOAD DATA / SELECT INTO OUTFILE
|
||||
# doesn't work with multibyte path name
|
||||
#
|
||||
CREATE TABLE t1 (a int);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
SET NAMES latin1;
|
||||
SET character_set_filesystem=filename;
|
||||
select @@character_set_filesystem;
|
||||
SELECT * INTO OUTFILE 't-1' FROM t1;
|
||||
DELETE FROM t1;
|
||||
LOAD DATA INFILE 't-1' INTO TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
DELETE FROM t1;
|
||||
SET character_set_filesystem=latin1;
|
||||
select @@character_set_filesystem;
|
||||
LOAD DATA INFILE 't@002d1' INTO TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
--exec rm $MYSQL_TEST_DIR/var/master-data/test/t@002d1
|
||||
SET character_set_filesystem=default;
|
||||
select @@character_set_filesystem;
|
||||
|
148
mysql-test/t/log_tables.test
Normal file
148
mysql-test/t/log_tables.test
Normal file
@ -0,0 +1,148 @@
|
||||
# this test needs multithreaded mysqltest
|
||||
-- source include/not_embedded.inc
|
||||
#
|
||||
# Basic log tables test
|
||||
#
|
||||
|
||||
# check that CSV engine was compiled in
|
||||
--source include/have_csv.inc
|
||||
|
||||
use mysql;
|
||||
|
||||
#
|
||||
# Check that log tables work and we can do basic selects. This also
|
||||
# tests truncate, which works in a special mode with the log tables
|
||||
#
|
||||
|
||||
truncate table general_log;
|
||||
--replace_column 1 TIMESTAMP
|
||||
select * from general_log;
|
||||
truncate table slow_log;
|
||||
--replace_column 1 TIMESTAMP
|
||||
select * from slow_log;
|
||||
|
||||
#
|
||||
# We want to check that a record newly written to a log table shows up for
|
||||
# the query: since log tables use concurrent insert machinery and log tables
|
||||
# are always locked by artificial THD, this feature requires additional
|
||||
# check in ha_tina::write_row. This simple test should prove that the
|
||||
# log table flag in the table handler is triggered and working.
|
||||
#
|
||||
|
||||
truncate table general_log;
|
||||
--replace_column 1 TIMESTAMP
|
||||
select * from general_log where argument like '%general_log%';
|
||||
|
||||
|
||||
#
|
||||
# Check some basic queries interfering with the log tables.
|
||||
# In our test we'll use a tbale with verbose comments to the short
|
||||
# command type names, used in the tables
|
||||
#
|
||||
|
||||
create table join_test (verbose_comment varchar (80), command_type varchar(64));
|
||||
|
||||
insert into join_test values ("User performed a usual SQL query", "Query");
|
||||
insert into join_test values ("New DB connection was registered", "Connect");
|
||||
insert into join_test values ("Get the table info", "Field List");
|
||||
|
||||
select verbose_comment, user_host, argument
|
||||
from mysql.general_log join join_test
|
||||
on (mysql.general_log.command_type = join_test.command_type);
|
||||
|
||||
drop table join_test;
|
||||
|
||||
#
|
||||
# check that flush of the log table work fine
|
||||
#
|
||||
|
||||
flush logs;
|
||||
|
||||
#
|
||||
# check locking of the log tables
|
||||
#
|
||||
|
||||
--error 1532
|
||||
lock tables mysql.general_log WRITE;
|
||||
|
||||
--error 1532
|
||||
lock tables mysql.slow_log WRITE;
|
||||
|
||||
#
|
||||
# This attemts to get TL_READ_NO_INSERT lock, which is incompatible with
|
||||
# TL_WRITE_CONCURRENT_INSERT. This should fail. We issue this error as log
|
||||
# tables are always opened and locked by the logger.
|
||||
#
|
||||
|
||||
--error 1533
|
||||
lock tables mysql.general_log READ;
|
||||
|
||||
--error 1533
|
||||
lock tables mysql.slow_log READ;
|
||||
|
||||
#
|
||||
# This call should result in TL_READ lock on the log table. This is ok and
|
||||
# should pass.
|
||||
#
|
||||
|
||||
lock tables mysql.slow_log READ LOCAL, mysql.general_log READ LOCAL;
|
||||
|
||||
unlock tables;
|
||||
|
||||
#
|
||||
# check that FLUSH LOGS waits for all readers of the log table to vanish
|
||||
#
|
||||
|
||||
connect (con1,localhost,root,,);
|
||||
connect (con2,localhost,root,,);
|
||||
|
||||
connection con1;
|
||||
|
||||
lock tables mysql.general_log READ LOCAL;
|
||||
|
||||
connection con2;
|
||||
|
||||
# this should wait for log tables to unlock
|
||||
send flush logs;
|
||||
|
||||
connection con1;
|
||||
|
||||
unlock tables;
|
||||
|
||||
# this connection should be alive by the time
|
||||
connection con2;
|
||||
|
||||
reap;
|
||||
|
||||
select "Mark that we woke up from flush logs in the test"
|
||||
as "test passed";
|
||||
|
||||
#
|
||||
# perform the same check for TRUNCATE: it should also wait for readers
|
||||
# to disappear
|
||||
#
|
||||
|
||||
connection con1;
|
||||
|
||||
lock tables mysql.general_log READ LOCAL;
|
||||
|
||||
connection con2;
|
||||
|
||||
# this should wait for log tables to unlock
|
||||
send truncate mysql.general_log;
|
||||
|
||||
connection con1;
|
||||
|
||||
unlock tables;
|
||||
|
||||
# this connection should be alive by the time
|
||||
connection con2;
|
||||
|
||||
reap;
|
||||
|
||||
select "Mark that we woke up from TRUNCATE in the test"
|
||||
as "test passed";
|
||||
|
||||
disconnect con2;
|
||||
disconnect con1;
|
||||
|
@ -1,3 +1,5 @@
|
||||
# This test should work in embedded server after we fix mysqltest
|
||||
-- source include/not_embedded.inc
|
||||
#
|
||||
# Testing the MySQL command line client(mysql)
|
||||
#
|
||||
|
@ -1,3 +1,6 @@
|
||||
# This test should work in embedded server after we fix mysqltest
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
# We run with different binaries for normal and --embedded-server
|
||||
#
|
||||
# If this test fails with "command "$MYSQL_CLIENT_TEST" failed",
|
||||
|
@ -1,6 +1,10 @@
|
||||
# Embedded server doesn't support external clients
|
||||
--source include/not_embedded.inc
|
||||
|
||||
# check that CSV engine was compiled in, as the result of the test
|
||||
# depends on the presence of the log tables (which are CSV-based).
|
||||
--source include/have_csv.inc
|
||||
|
||||
#
|
||||
# Bug #13783 mysqlcheck tries to optimize and analyze information_schema
|
||||
#
|
||||
|
@ -1,3 +1,5 @@
|
||||
# This test should work in embedded server after mysqltest is fixed
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
# ============================================================================
|
||||
#
|
||||
|
@ -63,3 +63,19 @@ insert into t1 values (1,"a",1,1),(2,"a",1,1),(3,"a",1,1);
|
||||
show create table t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #13155: Problem in Create Table using SHOW CREATE TABLE syntax
|
||||
#
|
||||
CREATE TABLE t1 (a int not null primary key)
|
||||
PARTITION BY KEY(a)
|
||||
(PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB);
|
||||
|
||||
drop table t1;
|
||||
|
||||
CREATE TABLE t1 (a int not null primary key);
|
||||
ALTER TABLE t1
|
||||
PARTITION BY KEY(a)
|
||||
(PARTITION p0 ENGINE = NDB, PARTITION p1 ENGINE = NDB);
|
||||
|
||||
drop table t1;
|
||||
|
@ -8,6 +8,9 @@ drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||
--enable_warnings
|
||||
|
||||
--exec $NDB_TOOLS_DIR/ndb_show_tables
|
||||
--exec $NDB_MGM --no-defaults -e "all dump 1000" >> $NDB_TOOLS_OUTPUT
|
||||
|
||||
CREATE TABLE `t1_c` (
|
||||
`capgoaledatta` smallint(5) unsigned NOT NULL auto_increment,
|
||||
`goaledatta` char(2) NOT NULL default '',
|
||||
@ -205,6 +208,151 @@ select count(*)
|
||||
from (select * from t9 union
|
||||
select * from t9_c) a;
|
||||
|
||||
#
|
||||
# Try Partitioned tables as well
|
||||
#
|
||||
ALTER TABLE t1_c
|
||||
PARTITION BY RANGE (`capgoaledatta`)
|
||||
(PARTITION p0 VALUES LESS THAN MAXVALUE);
|
||||
|
||||
ALTER TABLE t2_c
|
||||
PARTITION BY LIST(`capgotod`)
|
||||
(PARTITION p0 VALUES IN (0,1,2,3,4,5,6));
|
||||
|
||||
ALTER TABLE t3_c
|
||||
PARTITION BY HASH (`CapGoaledatta`);
|
||||
|
||||
ALTER TABLE t5_c
|
||||
PARTITION BY HASH (`capfa`)
|
||||
PARTITIONS 4;
|
||||
|
||||
ALTER TABLE t6_c
|
||||
PARTITION BY LINEAR HASH (`relatta`)
|
||||
PARTITIONS 4;
|
||||
|
||||
ALTER TABLE t7_c
|
||||
PARTITION BY LINEAR KEY (`dardtestard`);
|
||||
|
||||
--exec $NDB_MGM --no-defaults -e "start backup" >> $NDB_TOOLS_OUTPUT
|
||||
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 2 -n 1 -m -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-2 >> $NDB_TOOLS_OUTPUT
|
||||
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 2 -n 2 -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-2 >> $NDB_TOOLS_OUTPUT
|
||||
|
||||
select count(*) from t1;
|
||||
select count(*) from t1_c;
|
||||
select count(*)
|
||||
from (select * from t1 union
|
||||
select * from t1_c) a;
|
||||
|
||||
select count(*) from t2;
|
||||
select count(*) from t2_c;
|
||||
select count(*)
|
||||
from (select * from t2 union
|
||||
select * from t2_c) a;
|
||||
|
||||
select count(*) from t3;
|
||||
select count(*) from t3_c;
|
||||
select count(*)
|
||||
from (select * from t3 union
|
||||
select * from t3_c) a;
|
||||
|
||||
select count(*) from t4;
|
||||
select count(*) from t4_c;
|
||||
select count(*)
|
||||
from (select * from t4 union
|
||||
select * from t4_c) a;
|
||||
|
||||
select count(*) from t5;
|
||||
select count(*) from t5_c;
|
||||
select count(*)
|
||||
from (select * from t5 union
|
||||
select * from t5_c) a;
|
||||
|
||||
select count(*) from t6;
|
||||
select count(*) from t6_c;
|
||||
select count(*)
|
||||
from (select * from t6 union
|
||||
select * from t6_c) a;
|
||||
|
||||
select count(*) from t7;
|
||||
select count(*) from t7_c;
|
||||
select count(*)
|
||||
from (select * from t7 union
|
||||
select * from t7_c) a;
|
||||
|
||||
select count(*) from t8;
|
||||
select count(*) from t8_c;
|
||||
select count(*)
|
||||
from (select * from t8 union
|
||||
select * from t8_c) a;
|
||||
|
||||
select count(*) from t9;
|
||||
select count(*) from t9_c;
|
||||
select count(*)
|
||||
from (select * from t9 union
|
||||
select * from t9_c) a;
|
||||
|
||||
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 2 -n 1 -m -r --ndb-nodegroup_map '(0,0)' --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-2 >> $NDB_TOOLS_OUTPUT
|
||||
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 2 -n 2 -r --print --print_meta $NDB_BACKUP_DIR/BACKUP/BACKUP-2 >> $NDB_TOOLS_OUTPUT
|
||||
|
||||
select count(*) from t1;
|
||||
select count(*) from t1_c;
|
||||
select count(*)
|
||||
from (select * from t1 union
|
||||
select * from t1_c) a;
|
||||
|
||||
select count(*) from t2;
|
||||
select count(*) from t2_c;
|
||||
select count(*)
|
||||
from (select * from t2 union
|
||||
select * from t2_c) a;
|
||||
|
||||
select count(*) from t3;
|
||||
select count(*) from t3_c;
|
||||
select count(*)
|
||||
from (select * from t3 union
|
||||
select * from t3_c) a;
|
||||
|
||||
select count(*) from t4;
|
||||
select count(*) from t4_c;
|
||||
select count(*)
|
||||
from (select * from t4 union
|
||||
select * from t4_c) a;
|
||||
|
||||
select count(*) from t5;
|
||||
select count(*) from t5_c;
|
||||
select count(*)
|
||||
from (select * from t5 union
|
||||
select * from t5_c) a;
|
||||
|
||||
select count(*) from t6;
|
||||
select count(*) from t6_c;
|
||||
select count(*)
|
||||
from (select * from t6 union
|
||||
select * from t6_c) a;
|
||||
|
||||
select count(*) from t7;
|
||||
select count(*) from t7_c;
|
||||
select count(*)
|
||||
from (select * from t7 union
|
||||
select * from t7_c) a;
|
||||
|
||||
select count(*) from t8;
|
||||
select count(*) from t8_c;
|
||||
select count(*)
|
||||
from (select * from t8 union
|
||||
select * from t8_c) a;
|
||||
|
||||
select count(*) from t9;
|
||||
select count(*) from t9_c;
|
||||
select count(*)
|
||||
from (select * from t9 union
|
||||
select * from t9_c) a;
|
||||
|
||||
drop table t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c;
|
||||
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 2 -n 1 -m -r --ndb-nodegroup_map '(0,1)' $NDB_BACKUP_DIR/BACKUP/BACKUP-2 2>&1 | grep Translate || true
|
||||
|
||||
#
|
||||
# Cleanup
|
||||
#
|
||||
|
@ -8,6 +8,7 @@
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# Partition by key no partition defined => OK
|
||||
#
|
||||
@ -97,6 +98,9 @@ partitions 3
|
||||
partition x2 tablespace ts2,
|
||||
partition x3 tablespace ts3);
|
||||
|
||||
CREATE TABLE t2 LIKE t1;
|
||||
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
@ -162,6 +166,141 @@ UNLOCK TABLES;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #13644 DROP PARTITION NULL's DATE column
|
||||
#
|
||||
CREATE TABLE t1 (a int, name VARCHAR(50), purchased DATE)
|
||||
PARTITION BY RANGE (a)
|
||||
(PARTITION p0 VALUES LESS THAN (3),
|
||||
PARTITION p1 VALUES LESS THAN (7),
|
||||
PARTITION p2 VALUES LESS THAN (9),
|
||||
PARTITION p3 VALUES LESS THAN (11));
|
||||
INSERT INTO t1 VALUES
|
||||
(1, 'desk organiser', '2003-10-15'),
|
||||
(2, 'CD player', '1993-11-05'),
|
||||
(3, 'TV set', '1996-03-10'),
|
||||
(4, 'bookcase', '1982-01-10'),
|
||||
(5, 'exercise bike', '2004-05-09'),
|
||||
(6, 'sofa', '1987-06-05'),
|
||||
(7, 'popcorn maker', '2001-11-22'),
|
||||
(8, 'acquarium', '1992-08-04'),
|
||||
(9, 'study desk', '1984-09-16'),
|
||||
(10, 'lava lamp', '1998-12-25');
|
||||
|
||||
SELECT * from t1 ORDER BY a;
|
||||
ALTER TABLE t1 DROP PARTITION p0;
|
||||
SELECT * from t1 ORDER BY a;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #13442; Truncate Partitioned table doesn't work
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION p0 VALUES IN (1,2,3), PARTITION p1 VALUES IN (4,5,6));
|
||||
|
||||
insert into t1 values (1),(2),(3),(4),(5),(6);
|
||||
select * from t1;
|
||||
truncate t1;
|
||||
select * from t1;
|
||||
truncate t1;
|
||||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #13445 Partition by KEY method crashes server
|
||||
#
|
||||
CREATE TABLE t1 (a int, b int, primary key(a,b))
|
||||
PARTITION BY KEY(b,a) PARTITIONS 4;
|
||||
|
||||
insert into t1 values (0,0),(1,1),(2,2),(3,3),(4,4),(5,5),(6,6);
|
||||
select * from t1 where a = 4;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #13438: Engine clause in PARTITION clause causes crash
|
||||
#
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
PARTITIONS 1
|
||||
(PARTITION x1 VALUES IN (1) ENGINE=MEMORY);
|
||||
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #13440: REPLACE causes crash in partitioned table
|
||||
#
|
||||
CREATE TABLE t1 (a int, unique(a))
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION x1 VALUES IN (10), PARTITION x2 VALUES IN (20));
|
||||
|
||||
--error ER_NO_PARTITION_FOR_GIVEN_VALUE
|
||||
REPLACE t1 SET a = 4;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #14365: Crash if value too small in list partitioned table
|
||||
#
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION x1 VALUES IN (2), PARTITION x2 VALUES IN (3));
|
||||
|
||||
insert into t1 values (2), (3);
|
||||
--error ER_NO_PARTITION_FOR_GIVEN_VALUE
|
||||
insert into t1 values (4);
|
||||
--error ER_NO_PARTITION_FOR_GIVEN_VALUE
|
||||
insert into t1 values (1);
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug 14327: PARTITIONS clause gets lost in SHOW CREATE TABLE
|
||||
#
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY HASH(a)
|
||||
PARTITIONS 5;
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #13446: Update to value outside of list values doesn't give error
|
||||
#
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY RANGE (a)
|
||||
(PARTITION x1 VALUES LESS THAN (2));
|
||||
|
||||
insert into t1 values (1);
|
||||
--error ER_NO_PARTITION_FOR_GIVEN_VALUE
|
||||
update t1 set a = 5;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #13441: Analyze on partitioned table didn't work
|
||||
#
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY LIST (a)
|
||||
(PARTITION x1 VALUES IN (10), PARTITION x2 VALUES IN (20));
|
||||
|
||||
analyze table t1;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# BUG 14524
|
||||
#
|
||||
CREATE TABLE `t1` (
|
||||
`id` int(11) default NULL
|
||||
) ENGINE=BLACKHOLE DEFAULT CHARSET=latin1 PARTITION BY HASH (id) ;
|
||||
SELECT * FROM t1;
|
||||
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# BUG 14524
|
||||
#
|
||||
@ -180,9 +319,9 @@ create table t1
|
||||
partition by range (a)
|
||||
( partition p0 values less than(10),
|
||||
partition p1 values less than (20),
|
||||
partition p2 values less than maxvalue);
|
||||
partition p2 values less than (25));
|
||||
|
||||
alter table t1 reorganise partition p2 into (partition p2 values less than (30));
|
||||
alter table t1 reorganize partition p2 into (partition p2 values less than (30));
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
@ -199,7 +338,8 @@ PARTITION BY RANGE (a)
|
||||
PARTITION x8 VALUES LESS THAN (18),
|
||||
PARTITION x9 VALUES LESS THAN (20));
|
||||
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1,x2 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1,x2 INTO
|
||||
(PARTITION x1 VALUES LESS THAN (6));
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
|
25
mysql-test/t/partition_02myisam.test
Normal file
25
mysql-test/t/partition_02myisam.test
Normal file
@ -0,0 +1,25 @@
|
||||
###############################################
|
||||
# #
|
||||
# Partition tests MyISAM tables #
|
||||
# #
|
||||
###############################################
|
||||
|
||||
#
|
||||
# NOTE: PLEASE DO NOT ADD NOT MYISAM SPECIFIC TESTCASES HERE !
|
||||
# NON STORAGE SPECIFIC TESTCASES SHOULD BE ADDED IN
|
||||
# THE SOURCED FIELS ONLY.
|
||||
#
|
||||
|
||||
# Storage engine to be tested
|
||||
let $engine= 'MYISAM';
|
||||
eval SET SESSION storage_engine=$engine;
|
||||
|
||||
|
||||
# Other storage engine <> storage engine to be tested
|
||||
let $engine_other= 'MEMORY';
|
||||
# number of rows for the INSERT/UPDATE/DELETE/SELECT experiments
|
||||
# on partioned tables
|
||||
# Attention: In the moment the result files fit to @max_row = 200 only
|
||||
SET @max_row = 200;
|
||||
|
||||
-- source include/partition_1.inc
|
26
mysql-test/t/partition_03ndb.test
Normal file
26
mysql-test/t/partition_03ndb.test
Normal file
@ -0,0 +1,26 @@
|
||||
###############################################
|
||||
# #
|
||||
# Partition tests NDB tables #
|
||||
# #
|
||||
###############################################
|
||||
|
||||
#
|
||||
# NOTE: PLEASE DO NOT ADD NOT NDB SPECIFIC TESTCASES HERE !
|
||||
# NON STORAGE SPECIFIC TESTCASES SHOULD BE ADDED IN
|
||||
# THE SOURCED FIELS ONLY.
|
||||
#
|
||||
|
||||
# Storage engine to be tested
|
||||
let $engine= 'NDB' ;
|
||||
-- source include/have_ndb.inc
|
||||
eval SET SESSION storage_engine=$engine;
|
||||
|
||||
|
||||
# Other storage engine <> storage engine to be tested
|
||||
let $engine_other= 'MEMORY';
|
||||
# number of rows for the INSERT/UPDATE/DELETE/SELECT experiments
|
||||
# on partioned tables
|
||||
# Attention: In the moment the result files fit to @max_row = 200 only
|
||||
SET @max_row = 200;
|
||||
|
||||
-- source include/partition_1.inc
|
@ -4,6 +4,10 @@
|
||||
#
|
||||
-- source include/have_partition.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# Partition by key stand-alone error
|
||||
#
|
||||
@ -727,6 +731,14 @@ partitions 2
|
||||
(partition x1 values in 4,
|
||||
partition x2 values in (5));
|
||||
|
||||
#
|
||||
# Bug #13439: Crash when LESS THAN (non-literal)
|
||||
#
|
||||
--error 1054
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY RANGE (a)
|
||||
(PARTITION p0 VALUES LESS THAN (x1));
|
||||
|
||||
#
|
||||
# No partition for the given value
|
||||
#
|
||||
|
@ -4,6 +4,10 @@
|
||||
#
|
||||
-- source include/have_partition.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# Try faulty DROP PARTITION and COALESCE PARTITION
|
||||
#
|
||||
@ -21,7 +25,7 @@ PARTITION BY RANGE (a)
|
||||
PARTITION x9 VALUES LESS THAN (20));
|
||||
|
||||
--error ER_REORG_OUTSIDE_RANGE
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (2),
|
||||
PARTITION x11 VALUES LESS THAN (5));
|
||||
|
||||
@ -38,30 +42,35 @@ ALTER TABLE t1 DROP PARTITION x10, x1, x2, x1;
|
||||
ALTER TABLE t1 DROP PARTITION x10, x1, x2, x3;
|
||||
|
||||
--error ER_REORG_PARTITION_NOT_EXIST
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 INTO
|
||||
(PARTITION x11 VALUES LESS THAN (22));
|
||||
|
||||
--error ER_SAME_NAME_PARTITION
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1,x2 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1,x2 INTO
|
||||
(PARTITION x3 VALUES LESS THAN (6));
|
||||
|
||||
--error ER_CONSECUTIVE_REORG_PARTITIONS
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0, x2 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0, x2 INTO
|
||||
(PARTITION x11 VALUES LESS THAN (2));
|
||||
|
||||
--error ER_DROP_PARTITION_NON_EXISTENT
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0, x1, x1 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0, x1, x1 INTO
|
||||
(PARTITION x11 VALUES LESS THAN (4));
|
||||
|
||||
--error ER_REORG_OUTSIDE_RANGE
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1 INTO
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (5));
|
||||
|
||||
--error ER_RANGE_NOT_INCREASING_ERROR
|
||||
ALTER TABLE t1 REORGANISE PARTITION x0,x1 INTO
|
||||
--error ER_REORG_OUTSIDE_RANGE
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (4),
|
||||
PARTITION x11 VALUES LESS THAN (2));
|
||||
|
||||
--error ER_RANGE_NOT_INCREASING_ERROR
|
||||
ALTER TABLE t1 REORGANIZE PARTITION x0,x1 INTO
|
||||
(PARTITION x01 VALUES LESS THAN (6),
|
||||
PARTITION x11 VALUES LESS THAN (4));
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 (a int)
|
||||
|
@ -822,29 +822,14 @@ select sql_cache * from t1 where s1=1;
|
||||
end;//
|
||||
delimiter ;//
|
||||
call f1();
|
||||
show status like "Qcache_queries_in_cache";
|
||||
show status like "Qcache_inserts";
|
||||
show status like "Qcache_hits";
|
||||
call f1();
|
||||
show status like "Qcache_queries_in_cache";
|
||||
show status like "Qcache_inserts";
|
||||
show status like "Qcache_hits";
|
||||
call f1();
|
||||
select sql_cache * from t1;
|
||||
show status like "Qcache_queries_in_cache";
|
||||
show status like "Qcache_inserts";
|
||||
show status like "Qcache_hits";
|
||||
insert into t1 values (1);
|
||||
select sql_cache * from t1;
|
||||
show status like "Qcache_queries_in_cache";
|
||||
show status like "Qcache_inserts";
|
||||
show status like "Qcache_hits";
|
||||
call f1();
|
||||
call f1();
|
||||
select sql_cache * from t1;
|
||||
show status like "Qcache_queries_in_cache";
|
||||
show status like "Qcache_inserts";
|
||||
show status like "Qcache_hits";
|
||||
flush query cache;
|
||||
reset query cache;
|
||||
flush status;
|
||||
|
@ -97,4 +97,88 @@ connection root;
|
||||
SELECT * FROM t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# query in QC from normal execution and SP (BUG#6897)
|
||||
# improved to also test BUG#3583 and BUG#12990
|
||||
#
|
||||
flush query cache;
|
||||
reset query cache;
|
||||
flush status;
|
||||
delimiter //;
|
||||
create table t1 (s1 int)//
|
||||
create procedure f1 () begin
|
||||
select sql_cache * from t1;
|
||||
select sql_cache * from t1;
|
||||
select sql_cache * from t1;
|
||||
end;//
|
||||
create procedure f2 () begin
|
||||
select sql_cache * from t1 where s1=1;
|
||||
select sql_cache * from t1;
|
||||
end;//
|
||||
create procedure f3 () begin
|
||||
select sql_cache * from t1;
|
||||
select sql_cache * from t1 where s1=1;
|
||||
end;//
|
||||
create procedure f4 () begin
|
||||
select sql_cache * from t1;
|
||||
select sql_cache * from t1 where s1=1;
|
||||
select sql_cache * from t1;
|
||||
select sql_cache * from t1 where s1=1;
|
||||
select sql_cache * from t1 where s1=1;
|
||||
end;//
|
||||
delimiter ;//
|
||||
call f1();
|
||||
--replace_result 1 3
|
||||
show status like "Qcache_queries_in_cache";
|
||||
show status like "Qcache_inserts";
|
||||
show status like "Qcache_hits";
|
||||
call f1();
|
||||
show status like "Qcache_queries_in_cache";
|
||||
show status like "Qcache_inserts";
|
||||
show status like "Qcache_hits";
|
||||
call f1();
|
||||
select sql_cache * from t1;
|
||||
show status like "Qcache_queries_in_cache";
|
||||
show status like "Qcache_inserts";
|
||||
show status like "Qcache_hits";
|
||||
insert into t1 values (1);
|
||||
select sql_cache * from t1;
|
||||
show status like "Qcache_queries_in_cache";
|
||||
show status like "Qcache_inserts";
|
||||
show status like "Qcache_hits";
|
||||
call f1();
|
||||
call f1();
|
||||
select sql_cache * from t1;
|
||||
show status like "Qcache_queries_in_cache";
|
||||
show status like "Qcache_inserts";
|
||||
show status like "Qcache_hits";
|
||||
flush query cache;
|
||||
reset query cache;
|
||||
flush status;
|
||||
select sql_cache * from t1;
|
||||
select sql_cache * from t1 where s1=1;
|
||||
call f1();
|
||||
call f2();
|
||||
call f3();
|
||||
call f4();
|
||||
call f4();
|
||||
call f3();
|
||||
call f2();
|
||||
select sql_cache * from t1 where s1=1;
|
||||
insert into t1 values (2);
|
||||
call f1();
|
||||
select sql_cache * from t1 where s1=1;
|
||||
select sql_cache * from t1;
|
||||
call f1();
|
||||
call f3();
|
||||
call f3();
|
||||
call f1();
|
||||
|
||||
drop procedure f1;
|
||||
drop procedure f2;
|
||||
drop procedure f3;
|
||||
drop procedure f4;
|
||||
drop table t1;
|
||||
|
||||
|
||||
set GLOBAL query_cache_size=0;
|
||||
|
@ -1,6 +1,9 @@
|
||||
# Test of the READ_ONLY global variable:
|
||||
# check that it blocks updates unless they are only on temporary tables.
|
||||
|
||||
# should work with embedded server after mysqltest is fixed
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1,t2,t3;
|
||||
--enable_warnings
|
||||
|
@ -114,10 +114,10 @@ CREATE DATABASE BANK;
|
||||
# start by taking a backup on master
|
||||
--connection master
|
||||
RESET MASTER;
|
||||
--exec $NDB_MGM --no-defaults --ndb-connectstring=localhost:$NDBCLUSTER_PORT -e "start backup" >> $NDB_TOOLS_OUTPUT
|
||||
--exec $NDB_MGM --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT" -e "start backup" >> $NDB_TOOLS_OUTPUT
|
||||
|
||||
# there is no neat way to find the backupid, this is a hack to find it...
|
||||
--exec $NDB_TOOLS_DIR/ndb_select_all --ndb-connectstring=localhost:$NDBCLUSTER_PORT -d sys -D , SYSTAB_0 | grep 520093696 > var/tmp.dat
|
||||
--exec $NDB_TOOLS_DIR/ndb_select_all --ndb-connectstring="localhost:$NDBCLUSTER_PORT" -d sys --delimiter=',' SYSTAB_0 | grep 520093696 > var/tmp.dat
|
||||
CREATE TABLE IF NOT EXISTS cluster_replication.backup_info (id INT, backup_id INT) ENGINE = HEAP;
|
||||
DELETE FROM cluster_replication.backup_info;
|
||||
LOAD DATA INFILE '../../var/tmp.dat' INTO TABLE cluster_replication.backup_info FIELDS TERMINATED BY ',';
|
||||
|
@ -25,8 +25,8 @@ SELECT hex(c1),hex(c2),c3 FROM t1 ORDER BY c3;
|
||||
SELECT hex(c2),hex(c3),c1 FROM t2 ORDER BY c1;
|
||||
|
||||
# take a backup on master
|
||||
--exec $NDB_MGM --no-defaults --ndb-connectstring=localhost:$NDBCLUSTER_PORT -e "start backup" >> $NDB_TOOLS_OUTPUT
|
||||
--exec $NDB_TOOLS_DIR/ndb_select_all --no-defaults --ndb-connectstring=localhost:$NDBCLUSTER_PORT -d sys -D , SYSTAB_0 | grep 520093696 > var/tmp.dat
|
||||
--exec $NDB_MGM --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT" -e "start backup" >> $NDB_TOOLS_OUTPUT
|
||||
--exec $NDB_TOOLS_DIR/ndb_select_all --no-defaults --ndb-connectstring="localhost:$NDBCLUSTER_PORT" -d sys --delimiter=',' SYSTAB_0 | grep 520093696 > var/tmp.dat
|
||||
CREATE TABLE IF NOT EXISTS cluster_replication.backup_info (id INT, backup_id INT);
|
||||
DELETE FROM cluster_replication.backup_info;
|
||||
LOAD DATA INFILE '../../var/tmp.dat' INTO TABLE cluster_replication.backup_info FIELDS TERMINATED BY ',';
|
||||
|
@ -2,6 +2,10 @@
|
||||
# embedded server testing
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
# check that CSV engine was compiled in, as the result of the test
|
||||
# depends on the presence of the log tables (which are CSV-based).
|
||||
--source include/have_csv.inc
|
||||
|
||||
#
|
||||
# Test of some show commands
|
||||
#
|
||||
|
@ -1,3 +1,6 @@
|
||||
# This tests not performed with embedded server
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,v1;
|
||||
drop view if exists t1,v1;
|
||||
|
@ -7,6 +7,11 @@
|
||||
# In the case of trouble you might want to skip this.
|
||||
#
|
||||
|
||||
# embedded server returns different paths in error messages
|
||||
# in lines like 'call bug14233();'
|
||||
# mysqltest should be fixed to allow REPLACE_RESULT in error message
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
# We're using --system things that probably doesn't work on Windows.
|
||||
--source include/not_windows.inc
|
||||
|
||||
@ -35,10 +40,13 @@ create trigger t1_ai after insert on t1 for each row call bug14233();
|
||||
|
||||
# Unsupported tampering with the mysql.proc definition
|
||||
alter table mysql.proc drop type;
|
||||
--replace_result $MYSQL_TEST_DIR .
|
||||
--error ER_SP_PROC_TABLE_CORRUPT
|
||||
call bug14233();
|
||||
--replace_result $MYSQL_TEST_DIR .
|
||||
--error ER_SP_PROC_TABLE_CORRUPT
|
||||
create view v1 as select bug14233_f();
|
||||
--replace_result $MYSQL_TEST_DIR .
|
||||
--error ER_SP_PROC_TABLE_CORRUPT
|
||||
insert into t1 values (0);
|
||||
|
||||
|
@ -647,28 +647,6 @@ create table t5 (x int)|
|
||||
call bug3294()|
|
||||
drop procedure bug3294|
|
||||
|
||||
#
|
||||
# BUG#6807: Stored procedure crash if CREATE PROCEDURE ... KILL QUERY
|
||||
#
|
||||
--disable_warnings
|
||||
drop procedure if exists bug6807|
|
||||
--enable_warnings
|
||||
create procedure bug6807()
|
||||
begin
|
||||
declare id int;
|
||||
|
||||
set id = connection_id();
|
||||
kill query id;
|
||||
select 'Not reached';
|
||||
end|
|
||||
|
||||
--error 1317
|
||||
call bug6807()|
|
||||
--error 1317
|
||||
call bug6807()|
|
||||
|
||||
drop procedure bug6807|
|
||||
|
||||
#
|
||||
# BUG#876: Stored Procedures: Invalid SQLSTATE is allowed in
|
||||
# a DECLARE ? HANDLER FOR stmt.
|
||||
|
@ -1,3 +1,5 @@
|
||||
# This test should work in embedded server after mysqltest is fixed
|
||||
-- source include/not_embedded.inc
|
||||
#
|
||||
# Testing stored procedures with multiple connections,
|
||||
# except security/privilege tests, they go to sp-security.test
|
||||
|
@ -1444,11 +1444,11 @@ end|
|
||||
call ifac(20)|
|
||||
select * from fac|
|
||||
drop table fac|
|
||||
--replace_column 5 '0000-00-00 00:00:00' 6 '0000-00-00 00:00:00'
|
||||
--replace_column 4 'root@localhost' 5 '0000-00-00 00:00:00' 6 '0000-00-00 00:00:00'
|
||||
show function status like '%f%'|
|
||||
drop procedure ifac|
|
||||
drop function fac|
|
||||
--replace_column 5 '0000-00-00 00:00:00' 6 '0000-00-00 00:00:00'
|
||||
--replace_column 4 'root@localhost' 5 '0000-00-00 00:00:00' 6 '0000-00-00 00:00:00'
|
||||
show function status like '%f%'|
|
||||
|
||||
|
||||
@ -1531,7 +1531,7 @@ begin
|
||||
end while;
|
||||
end|
|
||||
show create procedure opp|
|
||||
--replace_column 5 '0000-00-00 00:00:00' 6 '0000-00-00 00:00:00'
|
||||
--replace_column 4 'root@localhost' 5 '0000-00-00 00:00:00' 6 '0000-00-00 00:00:00'
|
||||
show procedure status like '%p%'|
|
||||
|
||||
# This isn't the fastest way in the world to compute prime numbers, so
|
||||
@ -1549,7 +1549,7 @@ select * from primes where i=45 or i=100 or i=199|
|
||||
drop table primes|
|
||||
drop procedure opp|
|
||||
drop procedure ip|
|
||||
--replace_column 5 '0000-00-00 00:00:00' 6 '0000-00-00 00:00:00'
|
||||
--replace_column 4 'root@localhost' 5 '0000-00-00 00:00:00' 6 '0000-00-00 00:00:00'
|
||||
show procedure status like '%p%'|
|
||||
|
||||
|
||||
@ -1617,13 +1617,13 @@ drop procedure if exists bar|
|
||||
create procedure bar(x char(16), y int)
|
||||
comment "111111111111" sql security invoker
|
||||
insert into test.t1 values (x, y)|
|
||||
--replace_column 5 '0000-00-00 00:00:00' 6 '0000-00-00 00:00:00'
|
||||
--replace_column 4 'root@localhost' 5 '0000-00-00 00:00:00' 6 '0000-00-00 00:00:00'
|
||||
show procedure status like 'bar'|
|
||||
alter procedure bar comment "2222222222" sql security definer|
|
||||
alter procedure bar comment "3333333333"|
|
||||
alter procedure bar|
|
||||
show create procedure bar|
|
||||
--replace_column 5 '0000-00-00 00:00:00' 6 '0000-00-00 00:00:00'
|
||||
--replace_column 4 'root@localhost' 5 '0000-00-00 00:00:00' 6 '0000-00-00 00:00:00'
|
||||
show procedure status like 'bar'|
|
||||
drop procedure bar|
|
||||
|
||||
@ -2573,7 +2573,6 @@ begin
|
||||
show databases like 'foo';
|
||||
show errors;
|
||||
show columns from t1;
|
||||
show grants for 'root'@'localhost';
|
||||
show keys from t1;
|
||||
show open tables like 'foo';
|
||||
show privileges;
|
||||
@ -2595,20 +2594,6 @@ call bug4902()|
|
||||
|
||||
drop procedure bug4902|
|
||||
|
||||
# We need separate SP for SHOW PROCESSLIST since we want use replace_column
|
||||
--disable_warnings
|
||||
drop procedure if exists bug4902_2|
|
||||
--enable_warnings
|
||||
create procedure bug4902_2()
|
||||
begin
|
||||
show processlist;
|
||||
end|
|
||||
--replace_column 1 # 6 # 3 localhost
|
||||
call bug4902_2()|
|
||||
--replace_column 1 # 6 # 3 localhost
|
||||
call bug4902_2()|
|
||||
drop procedure bug4902_2|
|
||||
|
||||
#
|
||||
# BUG#4904
|
||||
#
|
||||
@ -2823,44 +2808,6 @@ select @x|
|
||||
delete from t1|
|
||||
drop procedure bug4941|
|
||||
|
||||
|
||||
#
|
||||
# BUG#3583: query cache doesn't work for stored procedures
|
||||
#
|
||||
--disable_warnings
|
||||
drop procedure if exists bug3583|
|
||||
--enable_warnings
|
||||
--disable_warnings
|
||||
drop procedure if exists bug3583|
|
||||
--enable_warnings
|
||||
create procedure bug3583()
|
||||
begin
|
||||
declare c int;
|
||||
|
||||
select * from t1;
|
||||
select count(*) into c from t1;
|
||||
select c;
|
||||
end|
|
||||
|
||||
insert into t1 values ("x", 3), ("y", 5)|
|
||||
set @x = @@query_cache_size|
|
||||
set global query_cache_size = 10*1024*1024|
|
||||
|
||||
flush status|
|
||||
flush query cache|
|
||||
show status like 'Qcache_hits'|
|
||||
call bug3583()|
|
||||
show status like 'Qcache_hits'|
|
||||
call bug3583()|
|
||||
call bug3583()|
|
||||
show status like 'Qcache_hits'|
|
||||
|
||||
set global query_cache_size = @x|
|
||||
flush status|
|
||||
flush query cache|
|
||||
delete from t1|
|
||||
drop procedure bug3583|
|
||||
|
||||
#
|
||||
# BUG#4905: Stored procedure doesn't clear for "Rows affected"
|
||||
#
|
||||
@ -3169,24 +3116,6 @@ insert into t1 values ("answer", 42)|
|
||||
select id, bug5240() from t1|
|
||||
drop function bug5240|
|
||||
|
||||
#
|
||||
# BUG#5278: Stored procedure packets out of order if SET PASSWORD.
|
||||
#
|
||||
--disable_warnings
|
||||
drop function if exists bug5278|
|
||||
--enable_warnings
|
||||
create function bug5278 () returns char
|
||||
begin
|
||||
SET PASSWORD FOR 'bob'@'%.loc.gov' = PASSWORD('newpass');
|
||||
return 'okay';
|
||||
end|
|
||||
|
||||
--error 1133
|
||||
select bug5278()|
|
||||
--error 1133
|
||||
select bug5278()|
|
||||
drop function bug5278|
|
||||
|
||||
#
|
||||
# BUG#7992: rolling back temporary Item tree changes in SP
|
||||
#
|
||||
@ -4809,24 +4738,6 @@ select bug10100f(5)|
|
||||
call bug10100t(5)|
|
||||
|
||||
#end of the stack checking
|
||||
set @@max_sp_recursion_depth=255|
|
||||
set @var=1|
|
||||
#disable log because error about stack overrun contains numbers which
|
||||
#depend on a system
|
||||
-- disable_result_log
|
||||
-- error ER_STACK_OVERRUN_NEED_MORE
|
||||
call bug10100p(255, @var)|
|
||||
-- error ER_STACK_OVERRUN_NEED_MORE
|
||||
call bug10100pt(1,255)|
|
||||
-- error ER_STACK_OVERRUN_NEED_MORE
|
||||
call bug10100pv(1,255)|
|
||||
-- error ER_STACK_OVERRUN_NEED_MORE
|
||||
call bug10100pd(1,255)|
|
||||
-- error ER_STACK_OVERRUN_NEED_MORE
|
||||
call bug10100pc(1,255)|
|
||||
-- enable_result_log
|
||||
set @@max_sp_recursion_depth=0|
|
||||
|
||||
deallocate prepare stmt2|
|
||||
|
||||
drop function bug10100f|
|
||||
|
261
mysql-test/t/sp_notembedded.test
Normal file
261
mysql-test/t/sp_notembedded.test
Normal file
@ -0,0 +1,261 @@
|
||||
# Can't test with embedded server
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
delimiter |;
|
||||
|
||||
#
|
||||
# BUG#4902: Stored procedure with SHOW WARNINGS leads to packet error
|
||||
#
|
||||
# Added tests for show grants command
|
||||
--disable_warnings
|
||||
drop procedure if exists bug4902|
|
||||
--enable_warnings
|
||||
create procedure bug4902()
|
||||
begin
|
||||
show grants for 'root'@'localhost';
|
||||
end|
|
||||
--disable_parsing
|
||||
show binlog events;
|
||||
show storage engines;
|
||||
show master status;
|
||||
show slave hosts;
|
||||
show slave status;
|
||||
--enable_parsing
|
||||
|
||||
call bug4902()|
|
||||
call bug4902()|
|
||||
|
||||
drop procedure bug4902|
|
||||
|
||||
# We need separate SP for SHOW PROCESSLIST since we want use replace_column
|
||||
--disable_warnings
|
||||
drop procedure if exists bug4902_2|
|
||||
--enable_warnings
|
||||
create procedure bug4902_2()
|
||||
begin
|
||||
show processlist;
|
||||
end|
|
||||
--replace_column 1 # 6 # 3 localhost
|
||||
call bug4902_2()|
|
||||
--replace_column 1 # 6 # 3 localhost
|
||||
call bug4902_2()|
|
||||
drop procedure bug4902_2|
|
||||
|
||||
|
||||
#
|
||||
# BUG#5278: Stored procedure packets out of order if SET PASSWORD.
|
||||
#
|
||||
--disable_warnings
|
||||
drop function if exists bug5278|
|
||||
--enable_warnings
|
||||
create function bug5278 () returns char
|
||||
begin
|
||||
SET PASSWORD FOR 'bob'@'%.loc.gov' = PASSWORD('newpass');
|
||||
return 'okay';
|
||||
end|
|
||||
|
||||
--error 1133
|
||||
select bug5278()|
|
||||
--error 1133
|
||||
select bug5278()|
|
||||
drop function bug5278|
|
||||
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1|
|
||||
--enable_warnings
|
||||
create table t1 (
|
||||
id char(16) not null default '',
|
||||
data int not null
|
||||
)|
|
||||
#
|
||||
# BUG#3583: query cache doesn't work for stored procedures
|
||||
#
|
||||
--disable_warnings
|
||||
drop procedure if exists bug3583|
|
||||
--enable_warnings
|
||||
--disable_warnings
|
||||
drop procedure if exists bug3583|
|
||||
--enable_warnings
|
||||
create procedure bug3583()
|
||||
begin
|
||||
declare c int;
|
||||
|
||||
select * from t1;
|
||||
select count(*) into c from t1;
|
||||
select c;
|
||||
end|
|
||||
|
||||
insert into t1 values ("x", 3), ("y", 5)|
|
||||
set @x = @@query_cache_size|
|
||||
set global query_cache_size = 10*1024*1024|
|
||||
|
||||
flush status|
|
||||
flush query cache|
|
||||
show status like 'Qcache_hits'|
|
||||
call bug3583()|
|
||||
show status like 'Qcache_hits'|
|
||||
call bug3583()|
|
||||
call bug3583()|
|
||||
show status like 'Qcache_hits'|
|
||||
|
||||
set global query_cache_size = @x|
|
||||
flush status|
|
||||
flush query cache|
|
||||
delete from t1|
|
||||
drop procedure bug3583|
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# BUG#6807: Stored procedure crash if CREATE PROCEDURE ... KILL QUERY
|
||||
#
|
||||
--disable_warnings
|
||||
drop procedure if exists bug6807|
|
||||
--enable_warnings
|
||||
create procedure bug6807()
|
||||
begin
|
||||
declare id int;
|
||||
|
||||
set id = connection_id();
|
||||
kill query id;
|
||||
select 'Not reached';
|
||||
end|
|
||||
|
||||
--error 1317
|
||||
call bug6807()|
|
||||
--error 1317
|
||||
call bug6807()|
|
||||
|
||||
drop procedure bug6807|
|
||||
|
||||
#
|
||||
# BUG#10100: function (and stored procedure?) recursivity problem
|
||||
#
|
||||
--disable_warnings
|
||||
drop function if exists bug10100f|
|
||||
drop procedure if exists bug10100p|
|
||||
drop procedure if exists bug10100t|
|
||||
drop procedure if exists bug10100pt|
|
||||
drop procedure if exists bug10100pv|
|
||||
drop procedure if exists bug10100pd|
|
||||
drop procedure if exists bug10100pc|
|
||||
--enable_warnings
|
||||
# routines with simple recursion
|
||||
create function bug10100f(prm int) returns int
|
||||
begin
|
||||
if prm > 1 then
|
||||
return prm * bug10100f(prm - 1);
|
||||
end if;
|
||||
return 1;
|
||||
end|
|
||||
create procedure bug10100p(prm int, inout res int)
|
||||
begin
|
||||
set res = res * prm;
|
||||
if prm > 1 then
|
||||
call bug10100p(prm - 1, res);
|
||||
end if;
|
||||
end|
|
||||
create procedure bug10100t(prm int)
|
||||
begin
|
||||
declare res int;
|
||||
set res = 1;
|
||||
call bug10100p(prm, res);
|
||||
select res;
|
||||
end|
|
||||
|
||||
# a procedure which use tables and recursion
|
||||
create table t3 (a int)|
|
||||
insert into t3 values (0)|
|
||||
create view v1 as select a from t3;
|
||||
create procedure bug10100pt(level int, lim int)
|
||||
begin
|
||||
if level < lim then
|
||||
update t3 set a=level;
|
||||
FLUSH TABLES;
|
||||
call bug10100pt(level+1, lim);
|
||||
else
|
||||
select * from t3;
|
||||
end if;
|
||||
end|
|
||||
# view & recursion
|
||||
create procedure bug10100pv(level int, lim int)
|
||||
begin
|
||||
if level < lim then
|
||||
update v1 set a=level;
|
||||
FLUSH TABLES;
|
||||
call bug10100pv(level+1, lim);
|
||||
else
|
||||
select * from v1;
|
||||
end if;
|
||||
end|
|
||||
# dynamic sql & recursion
|
||||
prepare stmt2 from "select * from t3;";
|
||||
create procedure bug10100pd(level int, lim int)
|
||||
begin
|
||||
if level < lim then
|
||||
select level;
|
||||
prepare stmt1 from "update t3 set a=a+2";
|
||||
execute stmt1;
|
||||
FLUSH TABLES;
|
||||
execute stmt1;
|
||||
FLUSH TABLES;
|
||||
execute stmt1;
|
||||
FLUSH TABLES;
|
||||
deallocate prepare stmt1;
|
||||
execute stmt2;
|
||||
select * from t3;
|
||||
call bug10100pd(level+1, lim);
|
||||
else
|
||||
execute stmt2;
|
||||
end if;
|
||||
end|
|
||||
# cursor & recursion
|
||||
create procedure bug10100pc(level int, lim int)
|
||||
begin
|
||||
declare lv int;
|
||||
declare c cursor for select a from t3;
|
||||
open c;
|
||||
if level < lim then
|
||||
select level;
|
||||
fetch c into lv;
|
||||
select lv;
|
||||
update t3 set a=level+lv;
|
||||
FLUSH TABLES;
|
||||
call bug10100pc(level+1, lim);
|
||||
else
|
||||
select * from t3;
|
||||
end if;
|
||||
close c;
|
||||
end|
|
||||
|
||||
#end of the stack checking
|
||||
set @@max_sp_recursion_depth=255|
|
||||
set @var=1|
|
||||
#disable log because error about stack overrun contains numbers which
|
||||
#depend on a system
|
||||
-- disable_result_log
|
||||
-- error ER_STACK_OVERRUN_NEED_MORE
|
||||
call bug10100p(255, @var)|
|
||||
-- error ER_STACK_OVERRUN_NEED_MORE
|
||||
call bug10100pt(1,255)|
|
||||
-- error ER_STACK_OVERRUN_NEED_MORE
|
||||
call bug10100pv(1,255)|
|
||||
-- error ER_STACK_OVERRUN_NEED_MORE
|
||||
call bug10100pd(1,255)|
|
||||
-- error ER_STACK_OVERRUN_NEED_MORE
|
||||
call bug10100pc(1,255)|
|
||||
-- enable_result_log
|
||||
set @@max_sp_recursion_depth=0|
|
||||
|
||||
deallocate prepare stmt2|
|
||||
|
||||
drop function bug10100f|
|
||||
drop procedure bug10100p|
|
||||
drop procedure bug10100t|
|
||||
drop procedure bug10100pt|
|
||||
drop procedure bug10100pv|
|
||||
drop procedure bug10100pd|
|
||||
drop procedure bug10100pc|
|
||||
drop view v1|
|
||||
|
||||
delimiter ;|
|
8
mysql-test/t/subselect_notembedded.test
Normal file
8
mysql-test/t/subselect_notembedded.test
Normal file
@ -0,0 +1,8 @@
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
#
|
||||
# BUG #10308: purge log with subselect
|
||||
#
|
||||
|
||||
purge master logs before (select adddate(current_timestamp(), interval -4 day));
|
||||
|
@ -2,6 +2,10 @@
|
||||
# This test must examine integrity of system database "mysql"
|
||||
#
|
||||
|
||||
# check that CSV engine was compiled in, as the result of the test
|
||||
# depends on the presence of the log tables (which are CSV-based).
|
||||
--source include/have_csv.inc
|
||||
|
||||
# First delete some tables maybe left over from previous tests
|
||||
--disable_warnings
|
||||
drop table if exists t1,t1aa,t2aa;
|
||||
|
@ -1,6 +1,10 @@
|
||||
# Embedded server doesn't support external clients
|
||||
--source include/not_embedded.inc
|
||||
|
||||
# check that CSV engine was compiled in, as the test relies on the presence
|
||||
# of the log tables (which are CSV-based)
|
||||
--source include/have_csv.inc
|
||||
|
||||
#
|
||||
# This is the test for mysql_fix_privilege_tables
|
||||
#
|
||||
@ -85,7 +89,10 @@ INSERT INTO user VALUES ('localhost','', '','N','N','N','N','N','N','N','N','
|
||||
|
||||
-- disable_query_log
|
||||
|
||||
DROP TABLE db, host, user, func, plugin, tables_priv, columns_priv, procs_priv, help_category, help_keyword, help_relation, help_topic, proc, time_zone, time_zone_leap_second, time_zone_name, time_zone_transition, time_zone_transition_type, event;
|
||||
DROP TABLE db, host, user, func, plugin, tables_priv, columns_priv,
|
||||
procs_priv, help_category, help_keyword, help_relation, help_topic, proc,
|
||||
time_zone, time_zone_leap_second, time_zone_name, time_zone_transition,
|
||||
time_zone_transition_type, general_log, slow_log, event;
|
||||
|
||||
-- enable_query_log
|
||||
|
||||
|
@ -2079,15 +2079,6 @@ order by users_names;
|
||||
drop view v1, v2;
|
||||
drop table t1, t2;
|
||||
|
||||
#
|
||||
# DEFINER information check
|
||||
#
|
||||
-- error ER_MALFORMED_DEFINER
|
||||
create definer=some_user@`` sql security invoker view v1 as select 1;
|
||||
create definer=some_user@localhost sql security invoker view v1 as select 1;
|
||||
show create view v1;
|
||||
drop view v1;
|
||||
|
||||
#
|
||||
# Bug #6808 - Views: CREATE VIEW v ... FROM t AS v fails
|
||||
#
|
||||
|
@ -706,3 +706,12 @@ drop database mysqltest;
|
||||
disconnect user1;
|
||||
disconnect root;
|
||||
connection default;
|
||||
|
||||
#
|
||||
# DEFINER information check
|
||||
#
|
||||
-- error ER_MALFORMED_DEFINER
|
||||
create definer=some_user@`` sql security invoker view v1 as select 1;
|
||||
create definer=some_user@localhost sql security invoker view v1 as select 1;
|
||||
show create view v1;
|
||||
drop view v1;
|
||||
|
@ -1,3 +1,6 @@
|
||||
# This tests not performed with embedded server
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
#
|
||||
# Bug #8731: wait_timeout does not work on Mac OS X
|
||||
#
|
||||
|
Reference in New Issue
Block a user