~drizzle-trunk/drizzle/development

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#
# The goal of this grammar is to stress test the operation of the HEAP storage engine by:
#
# * Creating a small set of tables and executing various operations over those tables
#
# * Employ TEMPORARY tables in as many DML contexts as possible
# 
# This grammar goes together with the respective mysqld --init file that creates the tables
#

query:
	insert | insert | insert |
	select | delete | update ;

select:
	SELECT select_list FROM table_name any_where |
	SELECT select_list FROM table_name restrictive_where order_by |
	SELECT select_list FROM table_name restrictive_where full_order_by LIMIT _digit ;

select_list:
	field_name |
	field_name , select_list ;

delete:
	DELETE FROM table_name restrictive_where |
	DELETE FROM table_name restrictive_where |
	DELETE FROM table_name restrictive_where |
	DELETE FROM table_name restrictive_where |
	DELETE FROM table_name any_where full_order_by LIMIT _digit ;

update:
	UPDATE table_name SET update_list restrictive_where |
	UPDATE table_name SET update_list restrictive_where |
	UPDATE table_name SET update_list restrictive_where |
	UPDATE table_name SET update_list restrictive_where |
	UPDATE table_name SET update_list any_where full_order_by LIMIT _digit ;

any_where:
	permissive_where | restrictive_where;

restrictive_where:
	WHERE field_name LIKE(CONCAT( _varchar(2), '%')) |
	WHERE field_name = _varchar(2) |
	WHERE field_name BETWEEN _varchar(2) AND _varchar(2) ;

permissive_where:
	WHERE field_name comp_op value ;

comp_op:
	> | < | >= | <= | <> | != | <=> ;

update_list:
	field_name = value |
	field_name = value , update_list ;

insert:
	insert_single | insert_select |
	insert_multi | insert_multi | insert_multi ;

insert_single:
	INSERT IGNORE INTO table_name VALUES ( value , value , value , value ) ;

insert_multi:
	INSERT IGNORE INTO table_name VALUES value_list ;

insert_select:
	INSERT IGNORE INTO table_name SELECT * FROM table_name restrictive_where full_order_by LIMIT _tinyint_unsigned ;

order_by:
	| ORDER BY field_name ;

full_order_by:
	ORDER BY f1 , f2 , f3 , f4 ;

value_list:
	( value , value, value , value ) |
	( value , value, value , value ) , value_list |
	( value , value, value , value ) , value_list ;

value:
	small_value | large_value ;

small_value:
	_digit | _varchar(1) | _varchar(2) | _varchar(32) | NULL ;

large_value:
	_varchar(32) | _varchar(1024) | _data | NULL ;


field_name:
	f1 | f2 | f3 | f4 ;


table_name:
	heap_complex_indexes |
	heap_large_block |
	heap_noindexes_large |
	heap_noindexes_small |
	heap_oversize_pk |
	heap_small_block |
	heap_standard
;