mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			218 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			218 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| ################################################################################
 | |
| #                                                                              #
 | |
| # Variable Name: delayed_insert_limit                                          #
 | |
| # Scope: GLOBAL                                                                #
 | |
| # Access Type: Dynamic                                                         #
 | |
| # Data Type: Numeric                                                           #
 | |
| # Default Value: 100                                                           #
 | |
| # Range: 1 - 4294967295                                                        #
 | |
| #                                                                              #
 | |
| #                                                                              #
 | |
| # Creation Date: 2008-02-25                                                    #
 | |
| # Author:  Sharique Abdullah                                                   #
 | |
| # Modified: HHunger 2009-02-26 Replaced 2 sleeps by wait conditions            #
 | |
| # Modified: mleich  2009-03-18 Partially reimplemented                         #
 | |
| #                                                                              #
 | |
| # Description: Test Cases of Dynamic System Variable "delayed_insert_limit"    #
 | |
| #              that checks behavior of this variable in the following ways     #
 | |
| #              * Functionality based on different values                       #
 | |
| #                                                                              #
 | |
| # Reference:                                                                   #
 | |
| #    http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html       #
 | |
| #                                                                              #
 | |
| ################################################################################
 | |
| 
 | |
| --echo ** Setup **
 | |
| --echo
 | |
| #
 | |
| # Setup
 | |
| #
 | |
| 
 | |
| --source include/not_embedded.inc
 | |
| 
 | |
| connect (con0,localhost,root,,);
 | |
| let $con0_id=`SELECT CONNECTION_ID()`;
 | |
| connect (con1,localhost,root,,);
 | |
| let $con1_id=`SELECT CONNECTION_ID()`;
 | |
| 
 | |
| connection default;
 | |
| 
 | |
| SET @global_delayed_insert_limit = @@GLOBAL.delayed_insert_limit;
 | |
| 
 | |
| #
 | |
| # Create Table
 | |
| #
 | |
| 
 | |
| CREATE TABLE t1 (a VARCHAR(100),b VARCHAR(100),c VARCHAR(100));
 | |
| CREATE VIEW v1 as select * from t1;
 | |
| 
 | |
| --echo '#--------------------FN_DYNVARS_25_01-------------------------#'
 | |
| 
 | |
| # delayed_insert_limit is smaller than the number of inserted rows
 | |
| 
 | |
| SET GLOBAL delayed_insert_limit = 14;
 | |
| 
 | |
| INSERT INTO t1 VALUES('1','1','1');
 | |
| INSERT INTO t1 VALUES('2','1','1');
 | |
| INSERT INTO t1 VALUES('3','1','1');
 | |
| INSERT INTO t1 VALUES('4','1','1');
 | |
| INSERT INTO t1 VALUES('5','1','1');
 | |
| INSERT INTO t1 VALUES('6','1','1');
 | |
| 
 | |
| LOCK TABLE v1 READ;
 | |
| 
 | |
| connection con1;
 | |
| 
 | |
| INSERT DELAYED INTO t1 VALUES('7','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('8','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('9','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('10','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('11','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('12','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('13','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('14','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('15','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('16','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('17','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('18','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('19','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('20','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('21','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('22','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('23','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('24','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('25','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('26','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('27','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('28','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('29','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('30','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('31','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('32','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('33','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('34','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('35','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('36','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('37','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('38','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('39','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('40','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('41','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('42','1','1');
 | |
| INSERT DELAYED INTO t1 VALUES('43','1','1');
 | |
| 
 | |
| connection con0;
 | |
| let $wait_condition=
 | |
|    SELECT COUNT(*) = 1 FROM information_schema.processlist
 | |
|    WHERE state = 'Waiting for table level lock' AND user='delayed';
 | |
| --source include/wait_condition.inc
 | |
| let $my_select= SELECT COUNT(*) FROM t1;
 | |
| send;
 | |
| eval $my_select;
 | |
| 
 | |
| connection default;
 | |
| --echo ** Wait till con0 is blocked **
 | |
| let $wait_condition=
 | |
|    SELECT COUNT(*) = 1 FROM information_schema.processlist
 | |
|    WHERE state = 'Waiting for table level lock' AND info = '$my_select';
 | |
| --source include/wait_condition.inc
 | |
| UNLOCK TABLES;
 | |
| 
 | |
| connection con0;
 | |
| --echo Asynchronous "reap" result
 | |
| --echo The next result suffers from
 | |
| --echo '# Bug#35386 insert delayed inserts 1 + limit rows instead of just limit rows'
 | |
| reap;
 | |
| 
 | |
| connection default;
 | |
| let $wait_condition= SELECT count(*) = 43 FROM t1;
 | |
| --source include/wait_condition.inc
 | |
| --echo Checking if the delayed insert continued afterwards
 | |
| SELECT COUNT(*) FROM t1;
 | |
| 
 | |
| DROP TABLE t1;
 | |
| DROP VIEW v1;
 | |
| 
 | |
| 
 | |
| --echo '#--------------------FN_DYNVARS_25_02-------------------------#'
 | |
| 
 | |
| # delayed_insert_limit is bigger than the number of inserted rows
 | |
| 
 | |
| CREATE TABLE t1 (a VARCHAR(100));
 | |
| CREATE VIEW v1 AS SELECT * FROM t1;
 | |
| 
 | |
| SET GLOBAL delayed_insert_limit = 20;
 | |
| 
 | |
| INSERT INTO t1 VALUES('1');
 | |
| INSERT INTO t1 VALUES('2');
 | |
| INSERT INTO t1 VALUES('3');
 | |
| INSERT INTO t1 VALUES('4');
 | |
| INSERT INTO t1 VALUES('5');
 | |
| INSERT INTO t1 VALUES('6');
 | |
| 
 | |
| LOCK TABLE v1 READ;
 | |
| 
 | |
| connection con1;
 | |
| 
 | |
| INSERT DELAYED INTO t1 VALUES('7');
 | |
| INSERT DELAYED INTO t1 VALUES('8');
 | |
| INSERT DELAYED INTO t1 VALUES('9');
 | |
| INSERT DELAYED INTO t1 VALUES('10');
 | |
| INSERT DELAYED INTO t1 VALUES('11');
 | |
| INSERT DELAYED INTO t1 VALUES('12');
 | |
| INSERT DELAYED INTO t1 VALUES('13');
 | |
| INSERT DELAYED INTO t1 VALUES('14');
 | |
| INSERT DELAYED INTO t1 VALUES('15');
 | |
| INSERT DELAYED INTO t1 VALUES('16');
 | |
| INSERT DELAYED INTO t1 VALUES('17');
 | |
| INSERT DELAYED INTO t1 VALUES('18');
 | |
| INSERT DELAYED INTO t1 VALUES('19');
 | |
| INSERT DELAYED INTO t1 VALUES('20');
 | |
| INSERT DELAYED INTO t1 VALUES('21');
 | |
| INSERT DELAYED INTO t1 VALUES('22');
 | |
| 
 | |
| connection con0;
 | |
| let $wait_condition=
 | |
|    SELECT COUNT(*) = 1 FROM information_schema.processlist
 | |
|    WHERE state = 'Waiting for table level lock' AND user='delayed';
 | |
| --source include/wait_condition.inc
 | |
| --echo Asynchronous execute
 | |
| # Due to performance and server behaveiour the test observes values between 6 and 22.
 | |
| # In any case the value must not be outside of that range.
 | |
| let $my_select= SELECT COUNT(*) FROM t1;
 | |
| send;
 | |
| eval $my_select;
 | |
| 
 | |
| connection default;
 | |
| --echo ** Wait till con0 is blocked **
 | |
| let $wait_condition=
 | |
|    SELECT COUNT(*) = 1 FROM information_schema.processlist
 | |
|    WHERE state = 'Waiting for table level lock' AND info = '$my_select';
 | |
| --source include/wait_condition.inc
 | |
| UNLOCK TABLES;
 | |
| 
 | |
| connection con0;
 | |
| --echo Asynchronous "reap" result
 | |
| reap;
 | |
| 
 | |
| connection default;
 | |
| --echo Checking if the delayed insert gives the same result afterwards
 | |
| eval $my_select;
 | |
| 
 | |
| 
 | |
| #
 | |
| # Cleanup
 | |
| #
 | |
| 
 | |
| connection default;
 | |
| DROP TABLE t1;
 | |
| DROP VIEW v1;
 | |
| SET @@GLOBAL.delayed_insert_limit = @global_delayed_insert_limit;
 | |
| 
 | |
| disconnect con0;
 | |
| disconnect con1;
 | |
| let $wait_condition=
 | |
|    SELECT COUNT(*) = 0 FROM information_schema.processlist
 | |
|    WHERE id IN ($con0_id,$con1_id);
 | |
| --source include/wait_condition.inc
 |