mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 10:56:12 +01:00 
			
		
		
		
	 ec9908b257
			
		
	
	
	ec9908b257
	
	
	
		
			
			- ALTER_ALGORITHM should be substituted when there is no mention of algorithm in alter statement. - Introduced algorithm(thd) in Alter_info. It returns the user requested algorithm. If user doesn't specify algorithm explicitly then it returns alter_algorithm variable. - changed algorithm() to get_algorithm(thd) to return algorithm name for displaying the error. - set_requested_algorithm(algo_value) to avoid direct assignment on requested_algorithm variable. - Avoid direct access of requested_algorithm to encapsulate requested_algorithm variable
		
			
				
	
	
		
			124 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| CREATE TABLE t1(f1 INT NOT NULL,
 | |
| f2 INT NOT NULL,
 | |
| f3 INT NULL,
 | |
| f4 INT as (f2) STORED,
 | |
| f5 INT as (f3) STORED,
 | |
| PRIMARY KEY(f1))ROW_FORMAT=COMPRESSED, ENGINE=INNODB;
 | |
| INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1);
 | |
| SELECT @@alter_algorithm;
 | |
| @@alter_algorithm
 | |
| COPY
 | |
| # All the following cases needs table rebuild
 | |
| # Add and Drop primary key
 | |
| ALTER TABLE t1 ADD COLUMN col1 INT NOT NULL,DROP PRIMARY KEY,ADD PRIMARY KEY(col1);
 | |
| affected rows: 1
 | |
| info: Records: 1  Duplicates: 0  Warnings: 0
 | |
| # Make existing column NULLABLE
 | |
| ALTER TABLE t1 MODIFY f2 INT;
 | |
| affected rows: 1
 | |
| info: Records: 1  Duplicates: 0  Warnings: 0
 | |
| # Drop Stored Column
 | |
| ALTER TABLE t1 DROP COLUMN f5;
 | |
| affected rows: 1
 | |
| info: Records: 1  Duplicates: 0  Warnings: 0
 | |
| # Add base non-generated column as a last column in the compressed table
 | |
| ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL;
 | |
| affected rows: 1
 | |
| info: Records: 1  Duplicates: 0  Warnings: 0
 | |
| # Add base non-generated column but not in the last position
 | |
| ALTER TABLE t1 ADD COLUMN f7 INT NOT NULL after f3;
 | |
| affected rows: 1
 | |
| info: Records: 1  Duplicates: 0  Warnings: 0
 | |
| # Force the table to rebuild
 | |
| ALTER TABLE t1 FORCE;
 | |
| affected rows: 1
 | |
| info: Records: 1  Duplicates: 0  Warnings: 0
 | |
| # Row format changes
 | |
| ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
 | |
| affected rows: 1
 | |
| info: Records: 1  Duplicates: 0  Warnings: 0
 | |
| # Engine table
 | |
| ALTER TABLE t1 ENGINE=INNODB;
 | |
| affected rows: 1
 | |
| info: Records: 1  Duplicates: 0  Warnings: 0
 | |
| ALTER TABLE t1 FORCE, ALGORITHM=DEFAULT;
 | |
| affected rows: 1
 | |
| info: Records: 1  Duplicates: 0  Warnings: 0
 | |
| DROP TABLE t1;
 | |
| affected rows: 0
 | |
| CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL,
 | |
| f3 INT AS (f2 * f2) VIRTUAL,
 | |
| f4 INT NOT NULL UNIQUE,
 | |
| f5 INT NOT NULL,
 | |
| INDEX idx(f2))ENGINE=INNODB;
 | |
| CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL,
 | |
| INDEX(f1),
 | |
| FOREIGN KEY fidx(f1) REFERENCES t1(f1))ENGINE=INNODB;
 | |
| INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4);
 | |
| ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1;
 | |
| affected rows: 1
 | |
| info: Records: 1  Duplicates: 0  Warnings: 0
 | |
| ALTER TABLE t1 DROP INDEX idx, page_compression_level=5;
 | |
| affected rows: 1
 | |
| info: Records: 1  Duplicates: 0  Warnings: 0
 | |
| ALTER TABLE t1 ADD UNIQUE INDEX u1(f2);
 | |
| affected rows: 1
 | |
| info: Records: 1  Duplicates: 0  Warnings: 0
 | |
| ALTER TABLE t1 DROP INDEX f4, page_compression_level=9;
 | |
| affected rows: 1
 | |
| info: Records: 1  Duplicates: 0  Warnings: 0
 | |
| SET foreign_key_checks = 0;
 | |
| affected rows: 0
 | |
| ALTER TABLE t1 ADD FOREIGN KEY(f5) REFERENCES t2(f1);
 | |
| affected rows: 1
 | |
| info: Records: 1  Duplicates: 0  Warnings: 0
 | |
| DROP TABLE t2, t1;
 | |
| affected rows: 0
 | |
| CREATE TABLE t1(f1 INT NOT NULL,
 | |
| f2 INT NOT NULL,
 | |
| f3 INT AS (f2 * f2) VIRTUAL,
 | |
| INDEX idx (f2))engine=innodb;
 | |
| CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL,
 | |
| f3 VARCHAR(10),
 | |
| INDEX(f1))ENGINE=INNODB;
 | |
| INSERT INTO t1(f1, f2) VALUES(1, 1);
 | |
| # Add column at the end of the table
 | |
| ALTER TABLE t1 ADD COLUMN f4 char(100) default 'BIG WALL';
 | |
| affected rows: 1
 | |
| info: Records: 1  Duplicates: 0  Warnings: 0
 | |
| # Change virtual column expression
 | |
| ALTER TABLE t1 CHANGE f3 f3 INT AS (f2 * f2) VIRTUAL;
 | |
| affected rows: 1
 | |
| info: Records: 1  Duplicates: 0  Warnings: 0
 | |
| # Add virtual column
 | |
| ALTER TABLE t1 ADD COLUMN f5 INT AS (f2) VIRTUAL;
 | |
| affected rows: 1
 | |
| info: Records: 1  Duplicates: 0  Warnings: 0
 | |
| # Rename Column
 | |
| ALTER TABLE t1 CHANGE f3 vcol INT AS (f2) VIRTUAL;
 | |
| affected rows: 1
 | |
| info: Records: 1  Duplicates: 0  Warnings: 0
 | |
| # Rename table
 | |
| ALTER TABLE t1 RENAME t3;
 | |
| affected rows: 1
 | |
| info: Records: 1  Duplicates: 0  Warnings: 0
 | |
| # Drop Virtual Column
 | |
| ALTER TABLE t3 DROP COLUMN vcol;
 | |
| affected rows: 1
 | |
| info: Records: 1  Duplicates: 0  Warnings: 0
 | |
| # Column length varies
 | |
| ALTER TABLE t2 CHANGE f3 f3 VARCHAR(20);
 | |
| affected rows: 0
 | |
| info: Records: 0  Duplicates: 0  Warnings: 0
 | |
| SET foreign_key_checks = 0;
 | |
| affected rows: 0
 | |
| ALTER TABLE t3 ADD FOREIGN KEY fidx(f2) REFERENCES t2(f1);
 | |
| affected rows: 1
 | |
| info: Records: 1  Duplicates: 0  Warnings: 0
 | |
| SET foreign_key_checks = 1;
 | |
| affected rows: 0
 | |
| ALTER TABLE t3 DROP FOREIGN KEY fidx;
 | |
| affected rows: 1
 | |
| info: Records: 1  Duplicates: 0  Warnings: 0
 | |
| DROP TABLE t3, t2;
 | |
| affected rows: 0
 |