Spracherkennung für: .test vermutete Sprache: SQL {SQL[65] Postscript[55] Python[55]} [Methode: maximale Elemente, drei Dimensionen]
############## mysql-test\t\concurrent_insert_basic.test #######################
# #
# Variable Name: concurrent_insert #
# Scope: GLOBAL #
# Access Type: Dynamic #
# Data Type: Boolean &
Numeric #
#
Default Value:
1 #
# Valid
Values:
0,
1 &
2 #
# #
# #
# Creation Date:
2008-
03-
07 #
# Author: Salman Rawala #
# #
# Modified: HHunger
2009-
02-
23 Inserted a wait
condition right after the #
#
"INSERT ..record_6" to wait
for the end of #
# the
insert. #
# mleich This test needs some improvements #
# #
# Description: Test Cases of Dynamic System Variable
"concurrent_insert" #
# that checks functionality of this variable #
# #
# Reference: #
#
http://dev.mysql.com/doc/refman/5.
1/en/server-system-variables.html #
# #
################################################################################
--source include/not_embedded.inc
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
#########################
# Creating new
table #
#########################
--echo ## Creating new table ##
CREATE TABLE t1
(
name
VARCHAR(
30)
);
--echo '#--------------------FN_DYNVARS_018_01-------------------------#'
####################################################################
# Setting initial value of concurrent_insert
to 1
# concurrent_insert =
1 means Enables concurrent
insert
#
for MyISAM tables that don
't have holes
####################################################################
SET @start_value= @@global.concurrent_insert;
--echo ## Setting initial value of variable to 1 ##
SET @@global.concurrent_insert =
1;
INSERT INTO t1(name)
VALUES(
'Record_1');
INSERT INTO t1(name)
VALUES(
'Record_2');
INSERT INTO t1(name)
VALUES(
'Record_3');
--echo ## locking table ##
LOCK TABLE t1
READ LOCAL;
--echo ## Creating new connection to insert some rows in table ##
connect (test_con1,localhost,root,,);
connection test_con1;
--echo ## New records should come at the end of all rows ##
INSERT INTO t1(name)
VALUES(
'Record_4');
SELECT *
FROM t1;
--echo ## unlocking tables ##
connection default;
UNLOCK TABLES;
--echo ## deleting record to create hole in table ##
DELETE FROM t1
WHERE name =
'Record_2';
--echo '#--------------------FN_DYNVARS_018_02-------------------------#'
####################################################################
# Setting initial value of concurrent_insert
to 1
# concurrent_insert =
1 and trying
to insert some
values
#
in MyISAM tables that have holes
####################################################################
#
lock table and connect
with connection1
LOCK TABLE t1
READ LOCAL;
connection test_con1;
# setting value of concurrent_insert
to 1
SET @@global.concurrent_insert=
1;
--echo ## send INSERT which should be blocked until unlock of the table ##
send
INSERT INTO t1(name)
VALUES(
'Record_7');
connection default;
# wait until
INSERT will be locked (low performance)
let $wait_condition=
SELECT COUNT(*) =
1 FROM INFORMATION_SCHEMA.PROCESSLIST
WHERE state=
"Waiting for table level lock" AND
info
LIKE "INSERT INTO t1%";
--source include/wait_condition.inc
--echo ## show processlist info and state ##
SELECT state,info
FROM INFORMATION_SCHEMA.PROCESSLIST
WHERE state=
"Waiting for table level lock" AND info
LIKE "INSERT INTO t1%";
--echo ## table contents before UNLOCK ##
SELECT *
FROM t1;
UNLOCK TABLES;
--echo ## table contens after UNLOCK ##
SELECT *
FROM t1;
INSERT INTO t1(name)
VALUES(
'Record_6');
let $wait_condition=
SELECT COUNT(*) =
5 FROM t1;
--source include/wait_condition.inc
connection test_con1;
#
to complete the send above^
reap;
SELECT *
FROM t1;
connection default;
--echo '#--------------------FN_DYNVARS_018_03-------------------------#'
################################################################################
# Setting value of concurrent_insert
to 2 to verify
values after inserting
# it
into table with holes
# concurrent_insert =
2 means Enables concurrent
insert
#
for MyISAM tables that have holes but inserts
values at the end of
all rows
################################################################################
--echo ## lock table and connect with connection1 ##
LOCK TABLE t1
READ LOCAL;
connection test_con1;
--echo ## setting value of concurrent_insert to 2 ##
SET @@global.concurrent_insert=
2;
--echo ## Inserting record in table, record should go at the end of the table ##
INSERT INTO t1(name)
VALUES(
'Record_5');
SELECT *
FROM t1;
SELECT @@concurrent_insert;
connection default;
--echo ## Unlocking table ##
UNLOCK TABLES;
SELECT *
FROM t1;
--echo ## Inserting new row, this should go in the hole ##
INSERT INTO t1(name)
VALUES(
'Record_6');
SELECT *
FROM t1;
--echo ## connection test_con1 ##
DELETE FROM t1
WHERE name =
'Record_3';
SELECT *
FROM t1;
--echo ## Dropping table ##
DROP TABLE t1;
disconnect test_con1;
SET @@global.concurrent_insert= @start_value;