polardbxengine/mysql-test/suite/xengine_stress/t/concurrent.yy

129 lines
4.9 KiB
Plaintext

# Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
# USA
#
start_delay:
# Avoid that worker threads cause a server crash before reporters are started.
# This leads often to STATUS_ENVIRONMENT_ERROR though a crash happened.
{ sleep 5; return undef };
query_init:
start_delay; SET AUTOCOMMIT = 0; create_table; SET @fill_amount = (@@innodb_page_size / 2 ) + 1;
create_table:
CREATE TABLE IF NOT EXISTS t1 (col1 INT, col2 INT, col3 INT, col4 TEXT);
query:
ddl |
dml |
dml |
dml |
dml |
dml |
dml |
dml |
dml |
dml |
dml |
dml |
dml;
dml:
# Ensure that the table does not grow endless. |
delete ; COMMIT |
# Make likely: Get duplicate key based on the two row INSERT only. |
enforce_duplicate1 ; commit_rollback |
# Make likely: Get duplicate key based on two row UPDATE only. |
enforce_duplicate2 ; commit_rollback |
# Make likely: Get duplicate key based on the row INSERT and the already committed data. |
insert_part ( my_digit , $my_digit, $my_digit, REPEAT(CAST($my_digit AS CHAR(1)),@fill_amount)); commit_rollback |
insert_part ( my_digit , $my_digit - 1, $my_digit, REPEAT(CAST($my_digit AS CHAR(1)),@fill_amount)); commit_rollback |
insert_part ( my_digit , $my_digit, $my_digit - 1, REPEAT(CAST($my_digit AS CHAR(1)),@fill_amount)); commit_rollback |
insert_part ( my_digit , $my_digit, $my_digit, REPEAT(CAST($my_digit - 1 AS CHAR(1)),@fill_amount)); commit_rollback ;
enforce_duplicate1:
delete ; insert_part /* my_digit */ some_record , some_record ;
enforce_duplicate2:
UPDATE t1 SET column_name_int = my_digit LIMIT 2 ;
insert_part:
INSERT INTO t1 (col1,col2,col3,col4) VALUES ;
some_record:
($my_digit,$my_digit,$my_digit,REPEAT(CAST($my_digit AS CHAR(1)),@fill_amount)) ;
delete:
DELETE FROM t1 WHERE column_name_int = my_digit OR $column_name_int IS NULL;
# :DELETE FROM t1 WHERE MATCH(col4) AGAINST (TRIM(' my_digit ') IN BOOLEAN MODE) OR column_name_int IS NULL ;
my_digit:
{ $my_digit= 1 } |
{ $my_digit= 2 } |
{ $my_digit= 3 } |
{ $my_digit= 4 } |
{ $my_digit= 'NULL' } ;
commit_rollback:
COMMIT |
ROLLBACK ;
ddl:
ALTER TABLE t1 add_accelerator |
ALTER TABLE t1 add_accelerator |
ALTER TABLE t1 add_accelerator |
ALTER TABLE t1 add_accelerator |
ALTER TABLE t1 drop_accelerator |
ALTER TABLE t1 drop_accelerator |
ALTER TABLE t1 drop_accelerator |
ALTER TABLE t1 drop_accelerator |
ALTER TABLE t1 add_accelerator , add_accelerator |
ALTER TABLE t1 drop_accelerator , drop_accelerator |
ALTER TABLE t1 drop_accelerator , add_accelerator |
check_table |
replace_column ;
add_accelerator:
ADD UNIQUE KEY uidx ( column_name_list ) |
ADD KEY idx ( column_name_list ) |
ADD PRIMARY KEY ( column_name_list );
#ADD FULLTEXT KEY ftidx ( col4 ) ;
drop_accelerator:
DROP KEY uidx |
DROP KEY idx |
DROP KEY ftidx |
DROP PRIMARY KEY ;
check_table:
CHECK TABLE t1 ;
column_name_int:
{ $column_name_int= 'col1' } |
{ $column_name_int= 'col2' } |
{ $column_name_int= 'col3' } ;
column_name_list:
column_name_int |
column_name_int |
column_name_int |
column_name_int |
col4(10) |
col4(10), column_name_int ;
replace_column:
ALTER TABLE t1 ADD COLUMN extra INT; UPDATE t1 SET extra = column_name_int ; ALTER TABLE t1 DROP COLUMN $column_name_int ; ALTER TABLE t1 CHANGE COLUMN extra $column_name_int INT ;