mirror of
https://github.com/MariaDB/server.git
synced 2025-05-01 08:45:04 +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 */
|