mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			183 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			183 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| ######## suite/innodb/t/innodb_wl7277_1.test                     #####
 | |
| #                                                                    #
 | |
| # Testcase for worklog WL#7277: InnoDB: Bulk Load for Create Index   #
 | |
| #  The basic idea of bulk load is to build an index from bottom up   #
 | |
| #  (also known as sorted index build).                               #
 | |
| # Earlier index was create by repeatedly inserting records           #
 | |
| # Test scenario :                                                    #
 | |
| # - Run bulk create index on replication setup                       #
 | |
| # - Run bulk create on partitioned table and see its replictaed      #
 | |
| #   to slave                                                         #
 | |
| # Creation:                                                          #
 | |
| # 2014-06-19 Implemented this test as part of WL#7277                #
 | |
| #                                                                    #
 | |
| ######################################################################
 | |
| 
 | |
| --source include/not_embedded.inc
 | |
| -- source include/have_innodb.inc
 | |
| -- source include/have_partition.inc
 | |
| -- source include/master-slave.inc
 | |
| 
 | |
| -- connection master
 | |
| # Create Insert Procedure
 | |
| DELIMITER |;
 | |
| CREATE PROCEDURE populate_t1(load_even INT)
 | |
| BEGIN
 | |
| 	DECLARE i int DEFAULT 1;
 | |
| 
 | |
| 	START TRANSACTION;
 | |
| 	WHILE (i <= 100) DO
 | |
|                 IF i%2 = 0 AND load_even = 1 THEN
 | |
| 		    INSERT INTO t1 VALUES (i, i, CONCAT('a', i));
 | |
|                 END IF;
 | |
|                 IF i%2 != 0 AND load_even != 1 THEN
 | |
| 		    INSERT INTO t1 VALUES (i, i, CONCAT('a', i));
 | |
|                 END IF;
 | |
| 		SET i = i + 1;
 | |
| 	END WHILE;
 | |
| 	COMMIT;
 | |
| END|
 | |
| DELIMITER ;|
 | |
| 
 | |
| CREATE TABLE t1(
 | |
| 	class	INT,
 | |
| 	id	INT,
 | |
| 	title	VARCHAR(100)
 | |
| ) ENGINE=InnoDB ;
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| -- disable_query_log
 | |
| # Load half records
 | |
| CALL populate_t1(1);
 | |
| -- enable_query_log
 | |
| 
 | |
| SELECT COUNT(*) FROM t1;
 | |
| 
 | |
| /* Create index. */
 | |
| CREATE INDEX idx_id ON t1(id);
 | |
| 
 | |
| CREATE INDEX idx_title ON t1(title);
 | |
| 
 | |
| 
 | |
| /* Select by index. */
 | |
| EXPLAIN SELECT * FROM t1 WHERE id = 10;
 | |
| EXPLAIN SELECT * FROM t1 WHERE title = 'a10';
 | |
| 
 | |
| SELECT * FROM t1 WHERE id = 10;
 | |
| SELECT * FROM t1 WHERE title = 'a10';
 | |
| 
 | |
| SELECT * FROM t1 WHERE id = 20;
 | |
| SELECT * FROM t1 WHERE title = 'a20';
 | |
| 
 | |
| SELECT * FROM t1 WHERE id = 30;
 | |
| SELECT * FROM t1 WHERE title = 'a30';
 | |
| 
 | |
| SELECT * FROM t1 WHERE id = 101;
 | |
| SELECT * FROM t1 WHERE title = 'a101';
 | |
| 
 | |
| /*Insert/Update/Delete. */
 | |
| DELETE FROM t1 WHERE id < 40 AND id > 30;
 | |
| INSERT INTO t1 VALUES(38, 38, 'b38');
 | |
| UPDATE t1 SET title = CONCAT('b', id) WHERE id < 30 AND id > 20;
 | |
| 
 | |
| SELECT * FROM t1 WHERE id = 28;
 | |
| SELECT * FROM t1 WHERE title = 'a28';
 | |
| SELECT * FROM t1 WHERE title = 'b28';
 | |
| 
 | |
| SELECT * FROM t1 WHERE id = 38;
 | |
| SELECT * FROM t1 WHERE title = 'a38';
 | |
| SELECT * FROM t1 WHERE title = 'b38';
 | |
| 
 | |
| SELECT * FROM t1 WHERE id = 101;
 | |
| SELECT * FROM t1 WHERE title = 'a101';
 | |
| 
 | |
| -- disable_query_log
 | |
| # Load half records (follow up load)
 | |
| CALL populate_t1(0);
 | |
| -- enable_query_log
 | |
| SELECT COUNT(*) FROM t1;
 | |
| 
 | |
| 
 | |
| SELECT * FROM t1 WHERE id = 10;
 | |
| SELECT * FROM t1 WHERE title = 'a10';
 | |
| 
 | |
| SELECT * FROM t1 WHERE id = 20;
 | |
| SELECT * FROM t1 WHERE title = 'a20';
 | |
| 
 | |
| SELECT * FROM t1 WHERE id = 30;
 | |
| SELECT * FROM t1 WHERE title = 'a30';
 | |
| 
 | |
| SELECT * FROM t1 WHERE id = 101;
 | |
| SELECT * FROM t1 WHERE title = 'a101';
 | |
| 
 | |
| # Create partition table
 | |
| CREATE TABLE t_part (
 | |
|          class INT ,
 | |
|          id INT ,
 | |
|          title VARCHAR(30)
 | |
|      ) ENGINE=InnoDB
 | |
|      PARTITION BY RANGE(id)
 | |
|      SUBPARTITION BY KEY(id)
 | |
|      SUBPARTITIONS 4
 | |
|      (
 | |
|          PARTITION p0 VALUES LESS THAN (5000),
 | |
|          PARTITION p1 VALUES LESS THAN (MAXVALUE)
 | |
|      );
 | |
| INSERT INTO t_part SELECT * FROM t1;
 | |
| ALTER TABLE t_part ADD INDEX `idx` (class,id,title(10));
 | |
| 
 | |
| SELECT * FROM t_part WHERE id = 10;
 | |
| SELECT * FROM t_part WHERE title = 'a10';
 | |
| 
 | |
| SELECT * FROM t_part WHERE id = 20;
 | |
| SELECT * FROM t_part WHERE title = 'a20';
 | |
| 
 | |
| SELECT * FROM t_part WHERE id = 30;
 | |
| SELECT * FROM t_part WHERE title = 'a30';
 | |
| 
 | |
| SELECT * FROM t_part WHERE id = 101;
 | |
| SELECT * FROM t_part WHERE title = 'a101';
 | |
| 
 | |
| 
 | |
| --source include/sync_slave_sql_with_master.inc
 | |
| -- connection slave
 | |
| SHOW CREATE TABLE t1;
 | |
| SHOW CREATE TABLE t_part;
 | |
| SELECT COUNT(*) FROM t1;
 | |
| SELECT COUNT(*) FROM t_part;
 | |
| 
 | |
| SELECT * FROM t1 WHERE id = 10;
 | |
| SELECT * FROM t1 WHERE title = 'a10';
 | |
| 
 | |
| SELECT * FROM t1 WHERE id = 20;
 | |
| SELECT * FROM t1 WHERE title = 'a20';
 | |
| 
 | |
| SELECT * FROM t1 WHERE id = 30;
 | |
| SELECT * FROM t1 WHERE title = 'a30';
 | |
| 
 | |
| SELECT * FROM t1 WHERE id = 101;
 | |
| SELECT * FROM t1 WHERE title = 'a101';
 | |
| 
 | |
| 
 | |
| 
 | |
| SELECT * FROM t_part WHERE id = 10;
 | |
| SELECT * FROM t_part WHERE title = 'a10';
 | |
| 
 | |
| SELECT * FROM t_part WHERE id = 20;
 | |
| SELECT * FROM t_part WHERE title = 'a20';
 | |
| 
 | |
| SELECT * FROM t_part WHERE id = 30;
 | |
| SELECT * FROM t_part WHERE title = 'a30';
 | |
| 
 | |
| SELECT * FROM t_part WHERE id = 101;
 | |
| SELECT * FROM t_part WHERE title = 'a101';
 | |
| 
 | |
| 
 | |
| -- connection master
 | |
| DROP PROCEDURE populate_t1;
 | |
| DROP TABLE t1;
 | |
| DROP TABLE t_part;
 | |
| --source include/rpl_end.inc
 |