~ubuntu-branches/ubuntu/vivid/drizzle/vivid

« back to all changes in this revision

Viewing changes to tests/kewpie/randgen/conf/optimizer/virtual_columns.yy

  • Committer: Package Import Robot
  • Author(s): Dmitrijs Ledkovs
  • Date: 2013-10-29 15:43:40 UTC
  • mfrom: (20.1.2 sid)
  • Revision ID: package-import@ubuntu.com-20131029154340-j36v7gxq9tm1gi5f
Tags: 1:7.2.3-2ubuntu1
* Merge from debian, remaining changes:
  - Link against boost_system because of boost_thread.
  - Add required libs to message/include.am
  - Add upstart job and adjust init script to be upstart compatible.
  - Disable -floop-parallelize-all due to gcc-4.8/4.9 compiler ICE
    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57732

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#
2
 
# At the top of this grammar, we define the data types, the literals and the functions that will
3
 
# be used in the test. Some combinations of functions, data types and literals may produce
4
 
# false positives when used in a comparison test
5
 
#
6
 
 
7
 
constant:
8
 
        _digit | regular_field ;
9
 
        # _letter | _varchar(4) ;
10
 
 
11
 
field_type:
12
 
        DOUBLE ;
13
 
        #| CHAR(255) BINARY | DATETIME ;
14
 
 
15
 
 
16
 
nested_expr:
17
 
        ( comparison_operator ) | ( logical_operator ) | ( logical_operator ) |
18
 
        ( control_flow_function ) | 
19
 
#       ( string_function ) |
20
 
#       ( string_comparison_function ) |
21
 
        ( arithmetic_function ) |
22
 
#       ( date_and_time_function ) |
23
 
        ( mathematical_function ) ;
24
 
 
25
 
#
26
 
# We use multiple CREATE TABLE so that if a given table definition is invalid
27
 
# (such as a constant expression in a virtual column), subsequent CREATEs will
28
 
# create a valid table
29
 
#
30
 
 
31
 
 
32
 
query_init:
33
 
        drop_table ; create_table ; create_table ; create_table ;
34
 
 
35
 
query:
36
 
        drop_table ; create_table ; create_table ; create_table | create_table |
37
 
        select_dml | select_dml | select_dml | select_dml | select_dml |
38
 
        select_dml | select_dml | select_dml | select_dml | select_dml |
39
 
        select_dml | select_dml | select_dml | select_dml | select_dml |
40
 
        select_dml | select_dml | select_dml | select_dml | select_dml |
41
 
        select_dml | select_dml | select_dml | select_dml | select_dml |
42
 
        select_dml | select_dml | select_dml | select_dml | select_dml ;
43
 
 
44
 
select_dml:
45
 
        select | dml | dml | dml | dml | dml ;
46
 
        
47
 
drop_table:
48
 
        DROP TABLE IF EXISTS X ;
49
 
 
50
 
#
51
 
# Using the /*executor1 */ and /*executor2 */ syntax, we make sure that, in a comparison test PERSISTENT virtual columns
52
 
# are created on the first server while non-persistent ones are created on the second server
53
 
# We use the same syntax for KEY and FORCE|IGNORE KEY because only PERSISTENT virtual columns can have keys
54
 
#
55
 
 
56
 
create_table:
57
 
        CREATE TABLE IF NOT EXISTS X (
58
 
                f1 field_type null default,
59
 
                f2 field_type null default,
60
 
                f3 field_type null default,
61
 
                f4 field_type null default,
62
 
                v1 field_type AS ( virtual_expr ) /*executor1 PERSISTENT */ /*executor2 VIRTUAL */ ,
63
 
                v2 field_type AS ( virtual_expr ) /*executor1 PERSISTENT */ /*executor2 VIRTUAL */ ,
64
 
                v3 field_type AS ( virtual_expr ) /*executor1 PERSISTENT */ /*executor2 VIRTUAL */ ,
65
 
                v4 field_type AS ( virtual_expr ) /*executor1 PERSISTENT */ /*executor2 VIRTUAL */
66
 
                /*executor1 , KEY (v3), KEY (v4) */
67
 
        );
68
 
 
69
 
null:
70
 
        | NOT NULL ;
71
 
 
72
 
default:
73
 
        | DEFAULT '0' ;
74
 
 
75
 
select:
76
 
        select_plain |
77
 
        select_group_by ;
78
 
 
79
 
select_plain:
80
 
        SELECT any_field AS a1 , any_field AS a2  FROM virtual_table_name force_key WHERE where_condition order_by_limit;
81
 
 
82
 
select_group_by:
83
 
        SELECT v3 , aggregate_item FROM virtual_table_name force_key WHERE where_condition GROUP BY v3 order_by |
84
 
        SELECT v4 , aggregate_item FROM virtual_table_name force_key WHERE where_condition GROUP BY v4 order_by;
85
 
 
86
 
force_key:
87
 
        | /*executor1 force_ignore KEY (v3, v4) */ ;
88
 
 
89
 
force_ignore:
90
 
        FORCE | IGNORE ;
91
 
 
92
 
select_list:
93
 
        select_list, any_field | any_field ;
94
 
 
95
 
aggregate_item:
96
 
        SUM(any_field) | COUNT(*) | COUNT(any_field) | MIN(any_field) | MAX(any_field) ;
97
 
 
98
 
order_by_limit:
99
 
        |
100
 
        ORDER BY any_field_list |
101
 
        ORDER BY any_field_list , complete_field_list LIMIT _digit;
102
 
 
103
 
order_by:
104
 
        |
105
 
        ORDER BY any_field_list ;
106
 
 
107
 
any_field_list:
108
 
        any_field_list , any_field | any_field ;
109
 
 
110
 
dml:
111
 
        insert_replace | insert_replace |
112
 
        update | delete ;
113
 
 
114
 
insert_replace:
115
 
        i_s INTO virtual_table_name ( regular_field , regular_field ) VALUES ( constant , constant ) |
116
 
        i_s INTO virtual_table_name ( f1 , f2 , f3 , f4 ) VALUES ( constant , constant , constant , constant ) |
117
 
        i_s INTO virtual_table_name ( f1 , f2 , f3 , f4 ) SELECT any_field , any_field , any_field , any_field FROM virtual_table_name WHERE where_condition ORDER BY complete_field_list LIMIT _digit ;
118
 
 
119
 
i_s:
120
 
        INSERT ignore |
121
 
        REPLACE ;
122
 
 
123
 
update:
124
 
        UPDATE virtual_table_name SET regular_field = constant WHERE where_condition |
125
 
        UPDATE virtual_table_name SET regular_field = virtual_field WHERE where_condition ;
126
 
 
127
 
delete:
128
 
        DELETE FROM virtual_table_name WHERE where_condition ORDER BY complete_field_list LIMIT _digit ;
129
 
 
130
 
complete_field_list:
131
 
        f1,f2,f3,f4,v1,v2,v3,v4;
132
 
 
133
 
where_condition:
134
 
        where_condition AND any_field op constant |
135
 
        where_condition OR any_field op constant |
136
 
        any_field op constant | any_field op constant |
137
 
        any_field op constant | any_field op constant |
138
 
        any_field op constant | any_field op constant |
139
 
        any_field op any_field | any_field op any_field |
140
 
        any_field not BETWEEN _digit AND _digit ;
141
 
 
142
 
not:
143
 
        | NOT;
144
 
 
145
 
op:
146
 
        < | > | = | <> | <=> | != ;
147
 
 
148
 
ignore:
149
 
        | IGNORE ;
150
 
 
151
 
any_field:
152
 
        regular_field | virtual_field ;
153
 
 
154
 
regular_field:
155
 
        f1 | f2 | f3 | f4 ;
156
 
 
157
 
virtual_field:
158
 
        v1 | v2 | v3 | v4 ;     
159
 
 
160
 
 
161
 
virtual_table_name:
162
 
        X ;
163
 
 
164
 
virtual_expr:
165
 
        nested_expr ;
166
 
 
167
 
expr:
168
 
        regular_field | regular_field | regular_field | nested_expr | nested_expr;
169
 
 
170
 
comparison_operator:
171
 
        expr = expr |
172
 
        expr <=> expr |
173
 
        expr <> expr | expr != expr |
174
 
        expr <= expr |
175
 
        expr < expr |
176
 
        expr >= expr |
177
 
        expr > expr |
178
 
        expr IS not boolean_value |
179
 
        expr IS not NULL |
180
 
        expr not BETWEEN ( expr ) AND ( expr ) |
181
 
        COALESCE( expr_list ) |
182
 
        GREATEST( expr , expr_list ) |
183
 
        expr not IN ( expr_list ) |
184
 
        ISNULL( expr ) |
185
 
        INTERVAL( expr , expr_list ) |
186
 
        LEAST( expr, expr_list ) ;
187
 
 
188
 
logical_operator:
189
 
        NOT ( expr ) |
190
 
        ( expr ) AND ( expr ) |
191
 
        ( expr ) OR ( expr ) ;
192
 
#       ( expr ) XOR ( expr ) ; # MySQL bug #55365 
193
 
 
194
 
string_comparison_function:
195
 
        expr not LIKE pattern |
196
 
        STRCMP(expr, expr) ;
197
 
 
198
 
regexp:
199
 
        expr not REGEXP pattern ;
200
 
 
201
 
pattern:
202
 
        '%' | '.*' ;
203
 
 
204
 
control_flow_function:
205
 
        CASE expr WHEN expr THEN expr WHEN expr THEN expr ELSE expr END |
206
 
        IF( expr , expr , expr ) |
207
 
        IFNULL( expr , expr ) |
208
 
        NULLIF( expr , expr ) ;
209
 
 
210
 
string_function:
211
 
        ASCII( expr ) |
212
 
        BIN( expr ) |
213
 
        BIT_LENGTH( expr ) |
214
 
        CHAR( expr ) |
215
 
        CHAR( expr USING _charset ) |
216
 
        CHAR_LENGTH( expr ) |
217
 
        CHAR_LENGTH( str ) |
218
 
        CONCAT( expr_list ) |
219
 
        CONCAT_WS( expr , expr_list ) |
220
 
        ELT( expr , expr_list ) |
221
 
        EXPORT_SET( expr , expr , expr , expr , expr ) |
222
 
        FIELD( expr , expr_list ) |
223
 
        FIND_IN_SET( expr , expr_list ) |
224
 
        FORMAT( expr , expr ) |
225
 
        HEX( expr ) |
226
 
        INSERT( expr , expr , expr , expr ) |
227
 
        INSTR( expr , expr ) |
228
 
        LCASE( expr ) |
229
 
        LEFT( expr , expr ) |
230
 
        LENGTH( expr ) |
231
 
        LOAD_FILE( expr ) |
232
 
        LOCATE( expr , expr ) |
233
 
        LOCATE( expr , expr , expr) |
234
 
        LOWER( expr ) |
235
 
        LPAD( expr , expr , expr ) |
236
 
        LTRIM( expr ) |
237
 
        MAKE_SET( expr , expr_list ) |
238
 
        MID( expr , pos , len) |
239
 
        OCT( expr ) |
240
 
        OCTET_LENGTH( expr ) |
241
 
        ORD( expr ) |
242
 
        POSITION( expr IN expr ) |
243
 
        QUOTE( expr ) |
244
 
        REPEAT( expr , expr ) |
245
 
        REPLACE( expr , expr , expr ) |
246
 
        REVERSE( expr ) |
247
 
        RIGHT( expr , expr ) |
248
 
        RPAD( expr , expr , expr ) |
249
 
        RTRIM( expr ) |
250
 
        SOUNDEX( expr ) |
251
 
        ( expr SOUNDS LIKE expr ) |
252
 
        SPACE( expr ) |
253
 
        SUBSTR( expr , expr ) |
254
 
        SUBSTR( expr , expr , expr ) |
255
 
        SUBSTRING_INDEX( expr , expr , expr ) |
256
 
        TRIM( both_leading_trailing expr FROM expr ) |
257
 
        UCASE( expr ) |
258
 
        UNHEX( expr ) |
259
 
        UPPER( expr ) ;
260
 
 
261
 
arithmetic_function:
262
 
        expr + expr |
263
 
        expr - expr |
264
 
        ( - expr ) |
265
 
        expr * expr |
266
 
        expr / expr |
267
 
        expr DIV expr |
268
 
        expr % expr ;
269
 
 
270
 
mathematical_function:
271
 
        ABS( expr ) |
272
 
        ACOS( expr ) |
273
 
        ASIN( expr ) |
274
 
        ATAN( expr ) |
275
 
        ATAN( expr , expr ) |
276
 
        CEIL( expr ) |
277
 
        CEILING( expr ) |
278
 
        CONV( expr , expr , expr ) |
279
 
        COS( expr ) |
280
 
        COT( expr ) |
281
 
        CRC32( expr ) |
282
 
        DEGREES( expr ) |
283
 
        EXP( expr ) |
284
 
        FLOOR( expr ) |
285
 
        FORMAT( expr , expr ) |
286
 
        HEX( expr ) |
287
 
        LN( expr ) |
288
 
        LOG( expr ) |
289
 
        LOG( expr , expr ) |
290
 
        LOG2( expr ) |
291
 
        LOG10( expr ) |
292
 
        MOD( expr , expr ) |
293
 
        PI() |
294
 
        POW( expr , expr ) |
295
 
        POWER( expr , expr ) |
296
 
        RADIANS( expr ) |
297
 
        RAND( expr ) |
298
 
        ROUND( expr ) |
299
 
        ROUND( expr , expr ) |
300
 
        SIGN( expr ) |
301
 
        SIN( expr ) |
302
 
        SQRT( expr ) |
303
 
        TAN( expr ) ;
304
 
#       TRUNCATE( expr , expr ) ;       # MySQL bug #55365 
305
 
 
306
 
date_and_time_function:
307
 
        ADDDATE( expr , INTERVAL expr unit) |
308
 
        ADDDATE( expr , expr ) |
309
 
        ADDTIME( expr , expr ) |
310
 
        CONVERT_TZ( expr , tz , tz ) |
311
 
        CURDATE() |
312
 
        CURTIME() |
313
 
        CURRENT_TIMESTAMP() |
314
 
        DATE( expr ) |
315
 
        DATEDIFF( expr , expr ) |
316
 
        DATE_ADD( expr INTERVAL expr unit ) |
317
 
        DATE_FORMAT( expr , expr ) |
318
 
        DATE_SUB( expr INTERVAL expr unit ) |
319
 
        DAY( expr ) |
320
 
        DAYNAME( expr ) |
321
 
        DAYOFMONTH( expr ) |
322
 
        DAYOFWEEK( expr ) |
323
 
        DAYOFYEAR( expr ) |
324
 
        EXTRACT( unit FROM expr ) |
325
 
        FROM_DAYS( expr ) |
326
 
        FROM_UNIXTIME( expr ) |
327
 
        FROM_UNIXTIME( expr , expr ) |
328
 
        GET_FORMAT( date_time_datetime, date_format ) |
329
 
        HOUR( expr ) |
330
 
        LAST_DAY( expr ) |
331
 
        LOCALTIME() |
332
 
        MAKEDATE( expr , expr ) |
333
 
        MAKETIME( expr , expr , expr ) |
334
 
        MICROSECOND( expr ) |
335
 
        MINUTE( expr ) |
336
 
        MONTH( expr ) |
337
 
        MONTHNAME( expr ) |
338
 
        NOW() |
339
 
        PERIOD_ADD( expr , expr ) |
340
 
        PERIOD_DIFF( expr , expr ) |
341
 
        QUARTER( expr ) |
342
 
        SECOND( expr ) |
343
 
        SEC_TO_TIME( expr ) |
344
 
        STR_TO_DATE( expr , expr ) |
345
 
        SUBDATE( expr INTERVAL expr unit ) |
346
 
        SUBDATE( expr , expr ) |
347
 
        SUBTIME( expr , expr ) |
348
 
        SYSDATE() | 
349
 
        TIME( expr ) |
350
 
        TIMEDIFF( expr , expr ) |
351
 
        TIMESTAMP( expr ) |
352
 
        TIMESTAMP( expr , expr ) |
353
 
        TIMESTAMPADD( unit , expr , expr ) |
354
 
        TIMESTAMPDIFF( unit , expr , expr ) |
355
 
        TIME_FORMAT( expr , expr ) |
356
 
        TIME_TO_SEC( expr ) |
357
 
        TO_DAYS( expr ) |
358
 
        UNIX_TIMESTAMP() |
359
 
        UNIX_TIMESTAMP( expr ) |
360
 
        UTC_DATE() |
361
 
        UTC_TIME() |
362
 
        UTC_TIMESTAMP() |
363
 
        WEEK( expr , expr ) |
364
 
        WEEKDAY( expr ) |
365
 
        WEEKOFYEAR( expr ) |
366
 
        YEAR( expr ) |
367
 
        YEARWEEK( expr ) |
368
 
        YEARWEEK( expr , expr ) ; 
369
 
 
370
 
date_time_datetime:
371
 
        DATE | TIME | DATETIME ;
372
 
 
373
 
date_format:
374
 
        'EUR' | 'USA' | 'JIS' | 'ISO' | 'INTERNAL' ;
375
 
        
376
 
unit:
377
 
        MICROSECOND | SECOND | MINUTE | HOUR | DAY | WEEK | MONTH | QUARTER | YEAR |
378
 
        SECOND_MICROSECOND |
379
 
        MINUTE_MICROSECOND | MINUTE_SECOND |
380
 
        HOUR_MICRSECOND | HOUR_SECOND | HOUR_MINUTE |
381
 
        DAY_MICROSECOND | DAY_SECOND | DAY_MINUTE | DAY_HOUR |
382
 
        YEAR_MONTH ;
383
 
 
384
 
tz:
385
 
        SYSTEM ;
386
 
 
387
 
both_leading_trailing:
388
 
        | BOTH | LEADING | TRAILING ;
389
 
 
390
 
boolean_value:
391
 
        TRUE | FALSE | UNKNOWN ;
392
 
 
393
 
expr_list:
394
 
        expr_list , expr | expr , expr | expr | expr | expr ;