addition: where procedure_analyze | subquery procedure_analyze | join where procedure_analyze | procedure_analyze union where; addition_no_procedure: where | subquery | join where | union where; alter_base_table: ALTER online ignore TABLE base_table_item_n alter_base_temp_table_part; alter_base_temp_table_part: COMMENT = 'UPDATED NOW()' | ENGINE = engine; alter_database: ALTER database_schema database_name_n database_spec; alter_event: ALTER EVENT event_item_s COMMENT 'UPDATED NOW()'; alter_function: ALTER FUNCTION function_item_n COMMENT 'UPDATED NOW()'; alter_merge_table: ALTER online ignore TABLE merge_table_item_n COMMENT = 'UPDATED NOW()'; alter_part_table: ALTER online ignore TABLE part_table_item_n alter_part_table_part; alter_part_table_part: PARTITION BY LINEAR HASH(pk) PARTITIONS 3 | COMMENT = 'UPDATED NOW()'; alter_procedure: ALTER PROCEDURE procedure_item_n COMMENT 'UPDATED NOW()'; alter_temp_table: ALTER online ignore TABLE temp_table_item_n alter_base_temp_table_part; alter_view: ALTER ALGORITHM = view_algoritm VIEW view_table_item_n AS used_select; analyze_table: ANALYZE not_to_binlog_local TABLE table_list; as: | AS; avoid_bugs: SET GLOBAL optimizer_use_mrr='disable' ; SET SESSION optimizer_use_mrr='disable' ; SET GLOBAL optimizer_switch = 'semijoin=off' ; SET SESSION optimizer_switch = 'semijoin=off'; base_table_ddl: create_base_table | # drop_base_table | alter_base_table ; #| # base_table_sequence; base_table_item: base_table_item_s | base_table_item_n; base_table_item_list: base_table_item | base_table_item , base_table_item; base_table_item_list_n: base_table_item_n | base_table_item_n , base_table_item_n; base_table_item_list_s: base_table_item_s | base_table_item_s , base_table_item_s; base_table_item_n: database_name . base_table_name_n { $base_table_item_n = $database_name . " . " . $base_table_name_n ; $base_table_item = $base_table_item_n ; return undef }; base_table_item_s: database_name_s . base_table_name_s { $base_table_item_s = $database_name_s . " . " . $base_table_name_s ; $base_table_item = $base_table_item_s ; return undef }; base_table_name: base_table_name_s | base_table_name_n; base_table_name_n: { $base_table_name_n = $table_prefix . $base_piece . $prng->int(1,$name_space_width) . $normal_piece ; $base_table_name = $base_table_name_n ; $table_name = $base_table_name }; base_table_name_s: { $base_table_name_s = $table_prefix . $base_piece . $prng->int(1,$name_space_width) . $sequence_piece ; $base_table_name = $base_table_name_s ; $table_name = $base_table_name }; base_table_sequence: $sequence_begin CREATE TABLE if_not_exists base_table_item_s LIKE template_table_item ; ALTER TABLE $base_table_item_s ENGINE = engine ; INSERT INTO $base_table_item_s SELECT * FROM $template_table_item ; COMMIT ; wait_till_drop_table ; DROP TABLE $base_table_item_s $sequence_end; base_temp_view_table_item: base_temp_view_table_item_s | base_temp_view_table_item; base_temp_view_table_item_n: base_table_item_n | temp_table_item_n | view_table_item_n | part_table_item_n; base_temp_view_table_item_s: base_table_item_s | temp_table_item_s | view_table_item_s | part_table_item_s; braced_table_field_list: ( table_field_list ) | ; build_partner1: CREATE TABLE if_not_exists $mp1 LIKE $template_table_item ; ALTER TABLE $mp1 ENGINE = MyISAM ; INSERT INTO $mp1 SELECT * FROM $template_table_item; build_partner2: CREATE TABLE if_not_exists $mp2 LIKE $template_table_item ; ALTER TABLE $mp2 ENGINE = MyISAM ; INSERT INTO $mp2 SELECT * FROM $template_table_item; cache_results: | sql_no_cache | sql_cache; chain: | AND no_or_empty CHAIN; check_table: CHECK TABLE table_list check_table_options; check_table_options: | FOR UPGRADE | QUICK | FAST | MEDIUM | EXTENDED | CHANGED; checksum_table: CHECKSUM TABLE table_list quick_extended; column_to_change: `int` | `int_key` | `pk`; commit: COMMIT work_or_empty /* chain release */; completion_handling: ON COMPLETION not_or_empty PRESERVE; concurrent: | CONCURRENT; correlated: subquery_part1 A.`pk` ); create_base_table: CREATE TABLE if_not_exists base_table_item_n create_table_part; create_database: CREATE database_schema if_not_exists database_name_n database_spec; create_event: CREATE EVENT if_not_exists event_item_s ON SCHEDULE EVERY 10 SECOND STARTS NOW() ENDS NOW() + INTERVAL 21 SECOND completion_handling DO SELECT * FROM table_item LIMIT 1; create_function: CREATE FUNCTION function_item_n () RETURNS INTEGER BEGIN func_statement ; func_statement ; RETURN 1 ; END; create_merge: CREATE TABLE if_not_exists $mt LIKE $template_table_item ; ALTER TABLE $mt ENGINE = MERGE UNION ( $mp1 , $mp2 ); COMMIT; create_merge_table: merge_init_n build_partner1 ; build_partner2 ; create_merge; create_part_table: CREATE TABLE if_not_exists part_table_item_n ENGINE = MyISAM PARTITION BY KEY (pk) PARTITIONS 2 AS used_select; create_procedure: CREATE PROCEDURE procedure_item_n () BEGIN proc_stmt ; proc_stmt ; END; create_table_part: LIKE template_table_item ; ALTER TABLE $base_table_item_n ENGINE = engine ; INSERT INTO $base_table_item_n SELECT * FROM $template_table_item | AS used_select; create_temp_table: CREATE TEMPORARY TABLE if_not_exists temp_table_item_n create_table_part; create_trigger: CREATE TRIGGER trigger_item_n trigger_time trigger_event ON base_table_name_n FOR EACH ROW BEGIN trigger_action ; END; create_view: CREATE view_replace ALGORITHM = view_algoritm VIEW view_table_item_n AS used_select; database_ddl: create_database ; #| # drop_database | # alter_database ; #| # database_sequence; database_name: database_name_s | database_name_n; database_name_n: { $database_name_n = $database_prefix . $normal_piece ; $database_name = $database_name_n }; database_name_s: { $database_name_s = $database_prefix . $sequence_piece ; $database_name = $database_name_s }; database_schema: DATABASE | SCHEMA; database_sequence: $sequence_begin CREATE database_schema database_name_s ; wait_till_drop_database ; DROP database_schema $database_name_s $sequence_end; database_show: show_databases | show_create_database; database_spec: default_word CHARACTER SET equal utf8 | default_word COLLATE equal utf8_bin; databases_schemas: DATABASES | SCHEMAS; ddl: database_ddl | base_table_ddl | part_table_ddl | view_ddl | procedure_ddl | function_ddl | trigger_ddl | truncate_table; default_word: | DEFAULT; delayed: ; delete: delete_normal | delete_with_sleep; delete_normal: DELETE low_priority quick FROM table_item WHERE `pk` > _digit LIMIT 1 | DELETE low_priority quick A , B FROM table_item AS A join where | DELETE low_priority quick A FROM table_item AS A where_subquery; delete_with_sleep: DELETE low_priority quick FROM table_item WHERE `pk` + wait_short = _digit; digit_or_null: _digit | NULL; dml: dml2 | PREPARE st1 FROM " dml2 " ; EXECUTE st1 ; DEALLOCATE PREPARE st1; dml2: select | do | insert | replace | delete | update | CALL procedure_item | show | is_selects; do: DO 1 | DO ( SELECT COUNT(*) FROM table_item WHERE `pk` BETWEEN _digit[invariant] AND _digit[invariant] + 20 ) | DO user_lock_action; drop_base_table: DROP TABLE if_exists base_table_item_n restrict_cascade; drop_database: DROP database_schema if_exists database_name_n; drop_event: /* DROP EVENT if_exists event_item_s */; drop_function: DROP FUNCTION if_exists function_item_n; drop_merge_table: DROP TABLE if_exists merge_table_item_n; drop_part_table: DROP TABLE if_exists part_table_item_n; drop_procedure: DROP PROCEDURE if_exists procedure_item_n; drop_table_list: DROP /* temporary */ TABLE if_exists table_no_view_item_n , table_no_view_item_n restrict_cascade; drop_temp_table: DROP TEMPORARY TABLE if_exists temp_table_item_n | DROP TABLE if_exists temp_table_item_n; drop_trigger: DROP TRIGGER if_exists trigger_item_n; drop_view: DROP VIEW if_exists view_table_item_n restrict_cascade; dump_load_data_sequence: generate_outfile ; LOAD DATA low_priority_concurrent INFILE tmpnam replace_ignore INTO TABLE table_item; empty_mode: SET SESSION SQL_MODE=''; engine: MEMORY | MyISAM; ensure_all_up: AND _thread_count + 3 < (SELECT MAX(id) FROM information_schema.processlist) AND 10 > (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Uptime'); equal: | =; event_ddl: create_event | drop_event | alter_event | event_scheduler_on | event_scheduler_off; event_item: event_item_s | event_item_n; event_item_n: database_name . event_name_n { $event_item_n = $database_name . " . " . $event_name_n ; $event_item = $event_item_n ; return undef }; event_item_s: database_name_s . event_name_s { $event_item_s = $database_name_s . " . " . $event_name_s ; $event_item = $event_item_s ; return undef }; event_name: event_name_s | event_name_n; event_name_n: { $event_name_n = $event_prefix . $prng->int(1,$name_space_width) . $normal_piece ; $event_name = $event_name_n }; event_name_s: { $event_name_s = $event_prefix . $prng->int(1,$name_space_width) . $sequence_piece ; $event_name = $event_name_s }; event_scheduler_off: SET GLOBAL EVENT_SCHEDULER = OFF; event_scheduler_on: SET GLOBAL EVENT_SCHEDULER = ON; extended: | EXTENDED; flush: FLUSH TABLE table_list; for_update: | FOR UPDATE; for_update_lock_in_share_mode: | for_update | lock_share; from_in: FROM | IN; full: | FULL; func_statement: SET @my_var = 1 | SELECT MAX( random_field_quoted1 ) FROM table_item INTO @my_var | insert | delete; function_ddl: create_function | # drop_function | alter_function | # function_sequence ; function_item: function_item_s | function_item_n; function_item_n: database_name . function_name_n { $function_item_n = $database_name . " . " . $function_name_n ; $function_item = $function_item_n ; return undef }; function_item_s: database_name_s . function_name_s { $function_item_s = $database_name_s . " . " . $function_name_s ; $function_item = $function_item_s ; return undef }; function_name: function_name_s | function_name_n; function_name_n: { $function_name_n = $function_prefix . $prng->int(1,$name_space_width) . $normal_piece ; $function_name = $function_name_n }; function_name_s: { $function_name_s = $function_prefix . $prng->int(1,$name_space_width) . $sequence_piece ; $function_name = $function_name_s }; function_sequence: $sequence_begin CREATE FUNCTION function_item_s () RETURNS INTEGER RETURN ( SELECT MOD( COUNT( DISTINCT random_field_quoted1 ) , 10 ) FROM table_item_s ) ; COMMIT ; SELECT wait_short ; DROP FUNCTION $function_item_s $sequence_end; generate_outfile: SELECT * FROM template_table_item INTO OUTFILE _tmpnam; grant_revoke: GRANT ALL ON table_item TO otto@localhost | REVOKE ALL ON table_item FROM otto@localhost | SELECT COUNT(*) FROM mysql.tables_priv WHERE user = LOWER('OTTO') | DELETE FROM mysql.tables_priv WHERE user = LOWER('OTTO') ; FLUSH PRIVILEGES | /* table_item */ INSERT INTO mysql.tables_priv (host,db,user,table_name,grantor,table_priv) VALUES (LOWER('LOCALHOST'),TRIM(' $database '),LOWER('OTTO'),TRIM(' $table_name '),LOWER('ROOT@LOCALHOST'),'Select') ; FLUSH PRIVILEGES | SELECT COUNT(*) FROM information_schema.table_privileges WHERE grantee LIKE '%OTTO%' | SHOW GRANTS FOR otto@localhost; handler: handler_open | handler_read | handler_close; handler_close: HANDLER table_no_view_item CLOSE; handler_open: HANDLER table_no_view_item OPEN with_alias; handler_read: HANDLER table_no_view_item READ FIRST handler_read_part; handler_read_part: | where; have_some_initial_objects: some_databases ; some_base_tables ; some_temp_tables ; some_part_tables ; some_view_tables ; some_functions ; some_procedures ; some_events; high_priority: | HIGH_PRIORITY; higher_id: SELECT MIN(id) INTO @kill_id FROM information_schema.processlist WHERE id > CONNECTION_ID() pick_executors_only ensure_all_up; if_exists: | IF EXISTS; if_not_exists: | IF NOT EXISTS; ignore: | IGNORE; init_basics: { $life_time_unit = 1 ; $name_space_width = 10 ; if ( $ENV{RQG_THREADS} == 1 ) { $life_time_unit = 0 } ; return undef } avoid_bugs ; nothing_disabled ; system_table_stuff; init_name_spaces: separate_objects ; separate_normal_sequence ; separate_table_types; insert: insert_normal | insert_with_sleep; insert_method: | INSERT_METHOD = insert_method_value; insert_method_value: NO | FIRST | LAST; insert_normal: INSERT low_priority_delayed_high_priority into_word table_item simple_or_complicated on_duplicate_key_update; insert_with_sleep: INSERT INTO table_item ( table_field_list ) SELECT $table_field_list FROM table_item WHERE wait_short = 0 LIMIT 1; into: | INTO into_object; into_object: OUTFILE _tmpnam; into_word: | INTO; is_columns: /* table_item */ SELECT * FROM information_schema . columns WHERE table_schema = TRIM(' $database_name ') AND table_name = TRIM(' $table_name ') AND column_name = random_field_quoted; is_schemata: /* database_name */ SELECT * FROM information_schema . schemata WHERE schema_name = TRIM(' $database_name '); is_selects: is_schemata | is_tables | is_columns; is_tables: /* table_item */ SELECT * FROM information_schema . tables WHERE table_schema = TRIM(' $database_name ') AND table_name = TRIM(' $table_name '); isolation_level: REPEATABLE-READ | READ-COMMITTED | SERIALIZABLE; join: NATURAL JOIN table_item B; kill_query_or_session: lower_id ; KILL query_or_session @kill_id | own_id ; KILL query_or_session @kill_id | higher_id ; KILL query_or_session @kill_id; local_or_empty: | LOCAL; lock: LOCK TABLES lock_list; lock_item: table_item AS _letter lock_type; lock_list: lock_item | lock_item , lock_item; lock_share: | LOCK IN SHARE MODE; lock_type: READ local_or_empty | low_priority WRITE; lock_unlock: lock | unlock; low_priority: | LOW_PRIORITY; low_priority_concurrent: | low_priority | concurrent; low_priority_delayed: | low_priority | delayed; low_priority_delayed_high_priority: | low_priority | delayed | high_priority; lower_id: SELECT MAX(id) INTO @kill_id FROM information_schema.processlist WHERE id < CONNECTION_ID() pick_executors_only ensure_all_up; merge_init_n: /* merge_table_item_n { $mt = $merge_table_item_n ; return undef } consists of ( base_table_item_n { $mp1 = $base_table_item_n ; return undef } , base_table_item_n { $mp2 = $base_table_item_n ; return undef } ) based on template_table_item */; merge_init_s: /* merge_table_item_s { $mt = $merge_table_item_s ; return undef } consists of ( base_table_item_s { $mp1 = $base_table_item_s ; return undef } , base_table_item_s { $mp2 = $base_table_item_s ; return undef } ) based on template_table_item */; merge_table_ddl: create_merge_table | # drop_merge_table | alter_merge_table | merge_table_sequence; merge_table_item: merge_table_item_s | merge_table_item_n; merge_table_item_list: merge_table_item | merge_table_item , merge_table_item; merge_table_item_list_n: merge_table_item_n | merge_table_item_n , merge_table_item_n; merge_table_item_list_s: merge_table_item_s | merge_table_item_s , merge_table_item_s; merge_table_item_n: database_name . merge_table_name_n { $merge_table_item_n = $database_name . " . " . $merge_table_name_n ; $merge_table_item = $merge_table_item_n ; return undef }; merge_table_item_s: database_name_s . merge_table_name_s { $merge_table_item_s = $database_name_s . " . " . $merge_table_name_s ; $merge_table_item = $merge_table_item_s ; return undef }; merge_table_name: merge_table_name_s | merge_table_name_n; merge_table_name_n: { $merge_table_name_n = $table_prefix . $merge_piece . $prng->int(1,$name_space_width) . $normal_piece ; $merge_table_name = $merge_table_name_n ; $table_name = $merge_table_name }; merge_table_name_s: { $merge_table_name_s = $table_prefix . $merge_piece . $prng->int(1,$name_space_width) . $sequence_piece ; $merge_table_name = $merge_table_name_s ; $table_name = $merge_table_name }; merge_table_sequence: $sequence_begin merge_init_s build_partner1 ; build_partner2 ; create_merge ; wait_till_drop_table ; DROP TABLE $mt $sequence_end; no_or_empty: | NO; no_separate_normal_sequence: { $sequence_piece="" ; $normal_piece="" ; return undef }; no_separate_objects: { $database_prefix="o1_1" ; $table_prefix="o1_" ; $procedure_prefix="o1_" ; $function_prefix="o1_" ; $trigger_prefix="o1_" ; $event_prefix="o1_" ; return undef }; no_separate_table_types: { $base_piece="" ; $temp_piece="" ; $merge_piece="" ; $part_piece="" ; $view_piece="" ; return undef }; non_correlated: subquery_part1 _digit ); not_or_empty: | NOT; not_to_binlog_local: | NO_WRITE_TO_BINLOG | LOCAL; nothing_disabled: { $sequence_begin = "/* Sequence start */" ; $sequence_end = "/* Sequence end */" ; return undef }; nowait: NOWAIT | ; on_duplicate_key_update: | ON DUPLICATE KEY UPDATE random_field_quoted1 = _digit; online: | ONLINE; optimize_table: OPTIMIZE not_to_binlog_local TABLE table_list; own_id: SET @kill_id = CONNECTION_ID() ensure_all_up; part_table_ddl: create_part_table | # drop_part_table | alter_part_table | part_table_sequence; part_table_item: part_table_item_s | part_table_item_n; part_table_item_list: part_table_item | part_table_item , part_table_item; part_table_item_list_n: part_table_item_n | part_table_item_n , part_table_item_n; part_table_item_list_s: part_table_item_s | part_table_item_s , part_table_item_s; part_table_item_n: database_name . part_table_name_n { $part_table_item_n = $database_name . " . " . $part_table_name_n ; $part_table_item = $part_table_item_n ; return undef }; part_table_item_s: database_name_s . part_table_name_s { $part_table_item_s = $database_name_s . " . " . $part_table_name_s ; $part_table_item = $part_table_item_s ; return undef }; part_table_name: part_table_name_s | part_table_name_n; part_table_name_n: { $part_table_name_n = $table_prefix . $part_piece . $prng->int(1,$name_space_width) . $normal_piece ; $part_table_name = $part_table_name_n ; $table_name = $part_table_name }; part_table_name_s: { $part_table_name_s = $table_prefix . $part_piece . $prng->int(1,$name_space_width) . $sequence_piece ; $part_table_name = $part_table_name_s ; $table_name = $part_table_name }; part_table_sequence: $sequence_begin CREATE TABLE if_not_exists part_table_item_s AS SELECT * FROM template_table_item ; COMMIT ; wait_till_drop_table ; DROP TABLE $part_table_item_s $sequence_end; pick_executors_only: AND (INFO LIKE CONCAT('%',TRIM(' database_name_s '),'%') OR INFO LIKE CONCAT('%',TRIM(' database_name_n '),'%')); proc_stmt: select | update; procedure_analyze: | PROCEDURE ANALYSE( 10 , 2000 ); procedure_ddl: create_procedure | # drop_procedure | alter_procedure #| # procedure_sequence ; procedure_item: procedure_item_s | procedure_item_n; procedure_item_n: database_name . procedure_name_n { $procedure_item_n = $database_name . " . " . $procedure_name_n ; $procedure_item = $procedure_item_n ; return undef }; procedure_item_s: database_name_s . procedure_name_s { $procedure_item_s = $database_name_s . " . " . $procedure_name_s ; $procedure_item = $procedure_item_s ; return undef }; procedure_name: procedure_name_s | procedure_name_n; procedure_name_n: { $procedure_name_n = $procedure_prefix . $prng->int(1,$name_space_width) . $normal_piece ; $procedure_name = $procedure_name_n }; procedure_name_s: { $procedure_name_s = $procedure_prefix . $prng->int(1,$name_space_width) . $sequence_piece ; $procedure_name = $procedure_name_s }; procedure_sequence: $sequence_begin CREATE PROCEDURE procedure_item_s () BEGIN proc_stmt ; proc_stmt ; END ; COMMIT ; SELECT wait_short ; DROP PROCEDURE $procedure_item_s $sequence_end; query: dml | ddl; query_init: CREATE DATABASE testdb_N ; CREATE DATABASE testdb_S ; init_basics ; init_name_spaces; query_or_session: QUERY | ; quick: | QUICK; quick_extended: | quick | extended; rand_val: { $rand_val = $prng->int(0,100) / 100 }; random_field_quoted: 'int_key' | 'int' | 'pk'; random_field_quoted1: `int_key` | `int` | `pk`; release: | no_or_empty RELEASE; rename_column: ALTER TABLE table_no_view_item_s CHANGE COLUMN column_to_change my_column INT | ALTER TABLE table_no_view_item_s CHANGE COLUMN my_column column_to_change INT; rename_item: base_table_item_n TO base_table_item_n | temp_table_item_n TO temp_table_item_n | merge_table_item_n TO merge_table_item_n | part_table_item_n TO part_table_item_n; rename_item_list: rename_item | rename_item , rename_item; rename_table: RENAME TABLE rename_item_list; repair_table: REPAIR not_to_binlog_local TABLE table_list quick extended; replace: REPLACE low_priority_delayed into_word table_item simple_or_complicated; replace_ignore: | replace_option | ignore; replace_option: | REPLACE; restrict_cascade: | RESTRICT | CASCADE; rollback: ROLLBACK work_or_empty /* chain release */; routine_show: show_create_function | show_function_code | show_function_status | show_create_procedure | show_procedure_code | show_procedure_status | show_triggers | show_create_trigger | show_events | show_create_event; savepoint_id: A | B; savepoint_or_empty: SAVEPOINT | ; select: select_normal | select_with_sleep; select_normal: select_part1 addition into for_update_lock_in_share_mode; select_part1: SELECT high_priority cache_results table_field_list_or_star FROM table_in_select as A; select_with_sleep: SELECT 1 FROM table_item WHERE wait_short = 0 LIMIT 1; separate_normal_sequence: { $sequence_piece="_S" ; $normal_piece="_N" ; return undef }; separate_objects: { $database_prefix="testdb" ; $table_prefix="t1_" ; $procedure_prefix="p1_" ; $function_prefix="f1_" ; $trigger_prefix="tr1_" ; $event_prefix="e1_" ; return undef }; separate_table_types: { $base_piece="base" ; $temp_piece="temp" ; $merge_piece="merge" ; $part_piece="part" ; $view_piece="view" ; return undef }; set_autocommit: SET AUTOCOMMIT = zero_or_one; set_isolation_level: SET SESSION TX_ISOLATION = TRIM(' isolation_level '); show: database_show | table_show | routine_show | SHOW STATUS; show_columns: SHOW full COLUMNS from_in table_item show_columns_part; show_columns_part: | LIKE '%INT%'; show_create_database: SHOW CREATE database_schema database_name; show_create_event: SHOW CREATE EVENT event_item_s; show_create_function: SHOW CREATE FUNCTION function_item; show_create_procedure: SHOW CREATE PROCEDURE procedure_item; show_create_table: SHOW CREATE TABLE table_item; show_create_trigger: SHOW CREATE TRIGGER trigger_item; show_create_view: SHOW CREATE VIEW view_table_item; show_databases: SHOW databases_schemas; show_events: SHOW EVENTS from_in database_name; show_function_code: SHOW FUNCTION CODE function_item; show_function_status: SHOW FUNCTION STATUS; show_open_tables: SHOW OPEN TABLES IN database_name; show_procedure_code: SHOW PROCEDURE CODE procedure_item; show_procedure_status: SHOW PROCEDURE STATUS; show_table_status: SHOW TABLE STATUS; show_tables: SHOW TABLES; show_triggers: SHOW TRIGGERS; simple_or_complicated: ( random_field_quoted1 ) VALUES ( digit_or_null ) | braced_table_field_list used_select LIMIT 1; some_base_tables: create_base_table ; create_base_table ; create_base_table ; create_base_table; some_databases: create_database ; create_database ; create_database ; create_database; some_events: create_event ; create_event ; create_event ; create_event; some_functions: create_function ; create_function ; create_function ; create_function; some_merge_tables: create_merge_table ; create_merge_table ; create_merge_table ; create_merge_table; some_part_tables: create_part_table ; create_part_table ; create_part_table ; create_part_table; some_procedures: create_procedure ; create_procedure ; create_procedure ; create_procedure; some_temp_tables: create_temp_table ; create_temp_table ; create_temp_table ; create_temp_table; some_trigger: create_trigger ; create_trigger ; create_trigger ; create_trigger; some_view_tables: create_view ; create_view ; create_view ; create_view; sql_buffer_result: | SQL_BUFFER_RESULT; sql_cache: | SQL_CACHE; sql_mode: empty_mode | traditional_mode; sql_no_cache: | SQL_NO_CACHE; start_transaction: START TRANSACTION with_consistent_snapshot; subquery: correlated | non_correlated; subquery_part1: WHERE A.`pk` IN ( SELECT `pk` FROM table_item AS B WHERE B.`pk` =; system_table_stuff: CREATE USER otto@localhost; table_field_list: { $table_field_list = "`int_key` , `int` , `pk` "} | { $table_field_list = "`int_key` , `pk` , `int` "} | { $table_field_list = "`int` , `pk` , `int_key` "} | { $table_field_list = "`int` , `int_key` , `pk` "} | { $table_field_list = "`pk` , `int` , `int_key` "} | { $table_field_list = "`pk` , `int_key` , `pk` "}; table_field_list_or_star: table_field_list | { $table_field_list = "*" }; table_in_select: table_item | ( SELECT table_field_list_or_star FROM table_item ); table_item: table_item_s | table_item_n; table_item_n: base_table_item_n | temp_table_item_n | merge_table_item_n | view_table_item_n | part_table_item_n; table_item_s: base_table_item_s | temp_table_item_s | merge_table_item_s | view_table_item_s | part_table_item_s; table_list: table_item | table_item , table_item; table_maintenance_ddl: analyze_table | optimize_table | checksum_table | check_table | repair_table; table_no_view_item: table_no_view_item_s | table_no_view_item_n; table_no_view_item_n: base_table_item_n | temp_table_item_n | merge_table_item_n | part_table_item_n; table_no_view_item_s: base_table_item_s | temp_table_item_s | merge_table_item_s | part_table_item_s; table_show: show_tables | show_table_status | show_create_table | show_create_view | show_open_tables | show_columns; table_word: | TABLE; temp_table_ddl: create_temp_table | drop_temp_table | alter_temp_table; temp_table_item: temp_table_item_s | temp_table_item_n; temp_table_item_list: temp_table_item | temp_table_item , temp_table_item; temp_table_item_list_n: temp_table_item_n | temp_table_item_n , temp_table_item_n; temp_table_item_list_s: temp_table_item_s | temp_table_item_s , temp_table_item_s; temp_table_item_n: database_name . temp_table_name_n { $temp_table_item_n = $database_name . " . " . $temp_table_name_n ; $temp_table_item = $temp_table_item_n ; return undef }; temp_table_item_s: database_name_s . temp_table_name_s { $temp_table_item_s = $database_name_s . " . " . $temp_table_name_s ; $temp_table_item = $temp_table_item_s ; return undef }; temp_table_name: temp_table_name_s | temp_table_name_n; temp_table_name_n: { $temp_table_name_n = $table_prefix . $temp_piece . $prng->int(1,$name_space_width) . $normal_piece ; $temp_table_name = $temp_table_name_n ; $table_name = $temp_table_name }; temp_table_name_s: { $temp_table_name_s = $table_prefix . $temp_piece . $prng->int(1,$name_space_width) . $sequence_piece ; $temp_table_name = $temp_table_name_s ; $table_name = $temp_table_name }; template_table_item: { $template_table_item = "test.table0_int_autoinc" } | { $template_table_item = "test.table1_int_autoinc" } | { $template_table_item = "test.table10_int_autoinc" }; temporary: | TEMPORARY; traditional_mode: SET SESSION SQL_MODE=LOWER('TRADITIONAL'); transaction: start_transaction | commit | rollback | SAVEPOINT savepoint_id | RELEASE SAVEPOINT savepoint_id | ROLLBACK work_or_empty TO savepoint_or_empty savepoint_id | BEGIN work_or_empty | set_autocommit; trigger_action: insert | replace | delete | update | CALL procedure_item; trigger_ddl: create_trigger | drop_trigger | trigger_sequence; trigger_event: INSERT | DELETE; trigger_item: trigger_item_s | trigger_item_n; trigger_item_n: database_name . trigger_name_n { $trigger_item_n = $database_name . " . " . $trigger_name_n ; $trigger_item = $trigger_item_n ; return undef }; trigger_item_s: database_name_s . trigger_name_s { $trigger_item_s = $database_name_s . " . " . $trigger_name_s ; $trigger_item = $trigger_item_s ; return undef }; trigger_name: trigger_name_s | trigger_name_n; trigger_name_n: { $trigger_name_n = $trigger_prefix . $prng->int(1,$name_space_width) . $normal_piece ; $trigger_name = $trigger_name_n }; trigger_name_s: { $trigger_name_s = $trigger_prefix . $prng->int(1,$name_space_width) . $sequence_piece ; $trigger_name = $trigger_name_s }; trigger_sequence: $sequence_begin CREATE TRIGGER trigger_item_s trigger_time trigger_event ON table_item_s FOR EACH ROW BEGIN trigger_action ; END ; COMMIT ; SELECT wait_short ; DROP TRIGGER $trigger_item_s $sequence_end; trigger_time: BEFORE | AFTER; truncate_table: TRUNCATE table_word table_no_view_item_n; union: UNION SELECT * FROM table_in_select as B; unlock: UNLOCK TABLES; update: update_normal | update_with_sleep; update_normal: UPDATE low_priority ignore table_item SET random_field_quoted1 = _digit WHERE `pk` > _digit LIMIT _digit | UPDATE low_priority ignore table_item AS A join SET A. random_field_quoted1 = _digit , B. random_field_quoted1 = _digit; update_with_sleep: UPDATE low_priority ignore table_item SET random_field_quoted1 = _digit WHERE wait_short = 0 LIMIT 1; use_frm: | USE_FRM; used_select: select_part1 addition_no_procedure; user_lock_action: IS_FREE_LOCK(TRIM(' _digit ')) | IS_USED_LOCK(TRIM(' _digit ')) | RELEASE_LOCK(TRIM(' _digit ')) | GET_LOCK(TRIM(' _digit '), 0.5 * rand_val * $life_time_unit ); view_algoritm: UNDEFINED | MERGE | TEMPTABLE; view_ddl: create_view | drop_view | alter_view | view_sequence; view_replace: | OR REPLACE; view_sequence: $sequence_begin CREATE ALGORITHM = view_algoritm VIEW view_table_item_s AS used_select ; COMMIT ; SELECT wait_short ; DROP VIEW $view_table_item_s $sequence_end; view_table_item: view_table_item_s | view_table_item_n; view_table_item_list: view_table_item | view_table_item , view_table_item; view_table_item_list_n: view_table_item_n | view_table_item_n , view_table_item_n; view_table_item_list_s: view_table_item_s | view_table_item_s , view_table_item_s; view_table_item_n: database_name . view_table_name_n { $view_table_item_n = $database_name . " . " . $view_table_name_n ; $view_table_item = $view_table_item_n ; return undef }; view_table_item_s: database_name_s . view_table_name_s { $view_table_item_s = $database_name_s . " . " . $view_table_name_s ; $view_table_item = $view_table_item_s ; return undef }; view_table_name: view_table_name_s | view_table_name_n; view_table_name_n: { $view_table_name_n = $table_prefix . $view_piece . $prng->int(1,$name_space_width) . $normal_piece ; $view_table_name = $view_table_name_n ; $table_name = $view_table_name }; view_table_name_s: { $view_table_name_s = $table_prefix . $view_piece . $prng->int(1,$name_space_width) . $sequence_piece ; $view_table_name = $view_table_name_s ; $table_name = $view_table_name }; wait_short: SLEEP( 0.5 * rand_val * $life_time_unit ); wait_till_drop_database: SELECT SLEEP( 2 * rand_val * $life_time_unit ); wait_till_drop_table: SELECT SLEEP( rand_val * $life_time_unit ); where: WHERE `pk` BETWEEN _digit[invariant] AND _digit[invariant] + 1; where_subquery: where | subquery; with_alias: | as A; with_consistent_snapshot: | WITH CONSISTENT SNAPSHOT; work_or_empty: | WORK; zero_or_one: 0 | 1;