# 1. Non bug related modifications which
#    - accelerate grammar simplification
#    - remove coverage for unimportant functionality
#      The functionality should be already covered in MTR tests and is not related to locking.
#

database_schema:
   DATABASE ;

databases_schemas:
   DATABASES ;

as:
	AS ;

work_or_empty:
	WORK ;

savepoint_or_empty:
	SAVEPOINT ;

into_word:
	INTO ;

equal:
	= ;

lock_unlock:
	; #lock | unlock | unlock | unlock | unlock ;

lock_type:
	# WL#3561 transactional LOCK TABLE
	# Disabled: LOCK TABLES IN SHARE/EXCLUSIVE MODE ... belongs to the non pushed WL#3561.
        # IN SHARE MODE nowait     |
        # IN EXCLUSIVE MODE nowait |
	READ local_or_empty      |
	low_priority WRITE       ;

################################################################################################

# 2. Bug related modifications

query:
	dml | dml | dml | ddl | flush ;
#	dml | dml | dml | dml | ddl | flush | handler ; #57312 confirmed

dml2:
	select | 
  insert | update | CALL procedure_item ;
#	do     | insert | update | CALL procedure_item ; 57312 confirmed
# 57312 confirmed
#	select | select | select  |
#	do     | insert | replace | delete | update | CALL procedure_item | show | is_selects ;

low_priority_delayed_high_priority:
	;#low_priority | delayed | high_priority ; # 57312 confirmed

low_priority_delayed:
	;#low_priority | delayed ; # 57312 confirmed

low_priority:
	;#| | | | | | | | # 57312 confirmed


delayed:
	;# Only 10 %

high_priority:
	;# Only 20 %


ignore:
	# Only 10 %
	;#| | | | | | | |# 57312 confirmed
#	IGNORE ;


have_some_initial_objects:
	some_databases ; some_base_tables ;  some_view_tables ; some_functions ; some_procedures ; some_trigger ; 
   #	some_databases ; some_base_tables ;                    some_merge_tables ; some_part_tables ; some_view_tables ; some_functions ; some_procedures ; some_trigger ; some_events ;
   # 57312 not confirmed

ddl:
        database_ddl                                        |
	base_table_ddl  | base_table_ddl  | base_table_ddl  | #57312 not confirmed
	view_ddl        | view_ddl        | view_ddl        | #57312 not confirmed
	procedure_ddl   | procedure_ddl   | procedure_ddl   |
	function_ddl    | function_ddl    | function_ddl    |
	trigger_ddl     | trigger_ddl     | trigger_ddl     |
#	event_ddl                  | #57312 confirmed
	truncate_table             |
	drop_table_list            |
#	rename_table               | #57312 not confirmed
#	dump_load_data_sequence    | # 57312 confirmed
#	grant_revoke               | # 57312 confirmed
	rename_column              |
	sql_mode                   ; # 57312 not confirmed
	# "dump_load_data_sequence" with SELECT ... INTO OUTFILE ...; LOAD DATA ... INFILE
	# consists more of DML statements, but we place this here under "ddl" because the
	# statements in "dml" are often executed as prepared statements. And the text after
	# PREPARE st1 FOR must not contain multiple statements.

flush:
   # WITH READ LOCK causes that nearly all following statements will fail with
   # Can't execute the query because you have a conflicting read lock
   # Therefore it should
   # - be rare
   # - last only very short time
   # So I put it into a sequence with FLUSH ... ; wait a bit ; UNLOCK TABLES
   FLUSH TABLE table_list ;

update_normal:
   UPDATE low_priority ignore table_item SET random_field_quoted1 = _digit WHERE `pk` > _digit LIMIT _digit ;

