mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	The warning out of OPTIMIZE Statement is unsafe because it uses a system function was indeed counterfactual and was resulted by checking an insufficiently strict property of lex' sql_command_flags. Fixed with deploying an additional checking of weather the current sql command that modifes a share->non_determinstic_insert table is capable of generating ROW format events. The extra check rules out the unsafety to OPTIMIZE et al, while the existing check continues to do so to CREATE TABLE (which is perculiarly tagged as ROW-event generative sql command). As a side effect sql_sequence.binlog test gets corrected and binlog_stm_unsafe_warning.test is reinforced to add up an unsafe CREATE..SELECT test.
		
			
				
	
	
		
			58 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
create or replace sequence s1 cache 3;
 | 
						|
select next value for s1, minimum_value from s1 where maximum_value> 1;
 | 
						|
next value for s1	minimum_value
 | 
						|
1	1
 | 
						|
select next value for s1, minimum_value from s1 where maximum_value> 2;
 | 
						|
next value for s1	minimum_value
 | 
						|
2	1
 | 
						|
select next value for s1, minimum_value from s1 where maximum_value> 3;
 | 
						|
next value for s1	minimum_value
 | 
						|
3	1
 | 
						|
select next value for s1, minimum_value from s1 where maximum_value> 4;
 | 
						|
next value for s1	minimum_value
 | 
						|
4	1
 | 
						|
alter sequence s1 maxvalue 1000;
 | 
						|
optimize table s1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.s1	optimize	note	The storage engine for the table doesn't support optimize
 | 
						|
analyze table s1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.s1	analyze	note	The storage engine for the table doesn't support analyze
 | 
						|
repair table s1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.s1	repair	status	OK
 | 
						|
check table s1;
 | 
						|
Table	Op	Msg_type	Msg_text
 | 
						|
test.s1	check	note	The storage engine for the table doesn't support check
 | 
						|
rename table s1 to tmp_s;
 | 
						|
rename table tmp_s to s1;
 | 
						|
drop sequence s1;
 | 
						|
include/show_binlog_events.inc
 | 
						|
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
 | 
						|
master-bin.000001	#	Gtid	#	#	GTID #-#-#
 | 
						|
master-bin.000001	#	Query	#	#	use `test`; create or replace sequence s1 cache 3
 | 
						|
master-bin.000001	#	Gtid	#	#	BEGIN GTID #-#-#
 | 
						|
master-bin.000001	#	Annotate_rows	#	#	select next value for s1, minimum_value from s1 where maximum_value> 1
 | 
						|
master-bin.000001	#	Table_map	#	#	table_id: # (test.s1)
 | 
						|
master-bin.000001	#	Write_rows_v1	#	#	table_id: # flags: STMT_END_F
 | 
						|
master-bin.000001	#	Query	#	#	COMMIT
 | 
						|
master-bin.000001	#	Gtid	#	#	BEGIN GTID #-#-#
 | 
						|
master-bin.000001	#	Annotate_rows	#	#	select next value for s1, minimum_value from s1 where maximum_value> 4
 | 
						|
master-bin.000001	#	Table_map	#	#	table_id: # (test.s1)
 | 
						|
master-bin.000001	#	Write_rows_v1	#	#	table_id: # flags: STMT_END_F
 | 
						|
master-bin.000001	#	Query	#	#	COMMIT
 | 
						|
master-bin.000001	#	Gtid	#	#	GTID #-#-#
 | 
						|
master-bin.000001	#	Query	#	#	use `test`; alter sequence s1 maxvalue 1000
 | 
						|
master-bin.000001	#	Gtid	#	#	GTID #-#-#
 | 
						|
master-bin.000001	#	Query	#	#	use `test`; optimize table s1
 | 
						|
master-bin.000001	#	Gtid	#	#	GTID #-#-#
 | 
						|
master-bin.000001	#	Query	#	#	use `test`; analyze table s1
 | 
						|
master-bin.000001	#	Gtid	#	#	GTID #-#-#
 | 
						|
master-bin.000001	#	Query	#	#	use `test`; repair table s1
 | 
						|
master-bin.000001	#	Gtid	#	#	GTID #-#-#
 | 
						|
master-bin.000001	#	Query	#	#	use `test`; rename table s1 to tmp_s
 | 
						|
master-bin.000001	#	Gtid	#	#	GTID #-#-#
 | 
						|
master-bin.000001	#	Query	#	#	use `test`; rename table tmp_s to s1
 | 
						|
master-bin.000001	#	Gtid	#	#	GTID #-#-#
 | 
						|
master-bin.000001	#	Query	#	#	use `test`; DROP SEQUENCE `s1` /* generated by server */
 |