~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to mysql-test/r/parser_precedence.result

  • Committer: brian
  • Date: 2008-06-25 05:29:13 UTC
  • Revision ID: brian@localhost.localdomain-20080625052913-6upwo0jsrl4lnapl
clean slate

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
drop table if exists t1_30237_bool;
 
2
create table t1_30237_bool(A boolean, B boolean, C boolean);
 
3
insert into t1_30237_bool values
 
4
(FALSE, FALSE, FALSE),
 
5
(FALSE, FALSE, NULL),
 
6
(FALSE, FALSE, TRUE),
 
7
(FALSE, NULL, FALSE),
 
8
(FALSE, NULL, NULL),
 
9
(FALSE, NULL, TRUE),
 
10
(FALSE, TRUE, FALSE),
 
11
(FALSE, TRUE, NULL),
 
12
(FALSE, TRUE, TRUE),
 
13
(NULL, FALSE, FALSE),
 
14
(NULL, FALSE, NULL),
 
15
(NULL, FALSE, TRUE),
 
16
(NULL, NULL, FALSE),
 
17
(NULL, NULL, NULL),
 
18
(NULL, NULL, TRUE),
 
19
(NULL, TRUE, FALSE),
 
20
(NULL, TRUE, NULL),
 
21
(NULL, TRUE, TRUE),
 
22
(TRUE, FALSE, FALSE),
 
23
(TRUE, FALSE, NULL),
 
24
(TRUE, FALSE, TRUE),
 
25
(TRUE, NULL, FALSE),
 
26
(TRUE, NULL, NULL),
 
27
(TRUE, NULL, TRUE),
 
28
(TRUE, TRUE, FALSE),
 
29
(TRUE, TRUE, NULL),
 
30
(TRUE, TRUE, TRUE) ;
 
31
Testing OR, XOR, AND
 
32
select A, B, A OR B, A XOR B, A AND B
 
33
from t1_30237_bool where C is null order by A, B;
 
34
A       B       A OR B  A XOR B A AND B
 
35
NULL    NULL    NULL    NULL    NULL
 
36
NULL    0       NULL    NULL    0
 
37
NULL    1       1       NULL    NULL
 
38
0       NULL    NULL    NULL    0
 
39
0       0       0       0       0
 
40
0       1       1       1       0
 
41
1       NULL    1       NULL    NULL
 
42
1       0       1       1       0
 
43
1       1       1       0       1
 
44
Testing that OR is associative 
 
45
select A, B, C, (A OR B) OR C, A OR (B OR C), A OR B OR C
 
46
from t1_30237_bool order by A, B, C;
 
47
A       B       C       (A OR B) OR C   A OR (B OR C)   A OR B OR C
 
48
NULL    NULL    NULL    NULL    NULL    NULL
 
49
NULL    NULL    0       NULL    NULL    NULL
 
50
NULL    NULL    1       1       1       1
 
51
NULL    0       NULL    NULL    NULL    NULL
 
52
NULL    0       0       NULL    NULL    NULL
 
53
NULL    0       1       1       1       1
 
54
NULL    1       NULL    1       1       1
 
55
NULL    1       0       1       1       1
 
56
NULL    1       1       1       1       1
 
57
0       NULL    NULL    NULL    NULL    NULL
 
58
0       NULL    0       NULL    NULL    NULL
 
59
0       NULL    1       1       1       1
 
60
0       0       NULL    NULL    NULL    NULL
 
61
0       0       0       0       0       0
 
62
0       0       1       1       1       1
 
63
0       1       NULL    1       1       1
 
64
0       1       0       1       1       1
 
65
0       1       1       1       1       1
 
66
1       NULL    NULL    1       1       1
 
67
1       NULL    0       1       1       1
 
68
1       NULL    1       1       1       1
 
69
1       0       NULL    1       1       1
 
70
1       0       0       1       1       1
 
71
1       0       1       1       1       1
 
72
1       1       NULL    1       1       1
 
73
1       1       0       1       1       1
 
74
1       1       1       1       1       1
 
75
select count(*) from t1_30237_bool
 
76
where ((A OR B) OR C) != (A OR (B OR C));
 
77
count(*)
 
78
0
 
79
Testing that XOR is associative 
 
80
select A, B, C, (A XOR B) XOR C, A XOR (B XOR C), A XOR B XOR C
 
81
from t1_30237_bool order by A, B, C;
 
82
A       B       C       (A XOR B) XOR C A XOR (B XOR C) A XOR B XOR C
 
83
NULL    NULL    NULL    NULL    NULL    NULL
 
84
NULL    NULL    0       NULL    NULL    NULL
 
85
NULL    NULL    1       NULL    NULL    NULL
 
86
NULL    0       NULL    NULL    NULL    NULL
 
87
NULL    0       0       NULL    NULL    NULL
 
88
NULL    0       1       NULL    NULL    NULL
 
89
NULL    1       NULL    NULL    NULL    NULL
 
90
NULL    1       0       NULL    NULL    NULL
 
91
NULL    1       1       NULL    NULL    NULL
 
92
0       NULL    NULL    NULL    NULL    NULL
 
93
0       NULL    0       NULL    NULL    NULL
 
94
0       NULL    1       NULL    NULL    NULL
 
95
0       0       NULL    NULL    NULL    NULL
 
96
0       0       0       0       0       0
 
97
0       0       1       1       1       1
 
98
0       1       NULL    NULL    NULL    NULL
 
99
0       1       0       1       1       1
 
100
0       1       1       0       0       0
 
101
1       NULL    NULL    NULL    NULL    NULL
 
102
1       NULL    0       NULL    NULL    NULL
 
103
1       NULL    1       NULL    NULL    NULL
 
104
1       0       NULL    NULL    NULL    NULL
 
105
1       0       0       1       1       1
 
106
1       0       1       0       0       0
 
107
1       1       NULL    NULL    NULL    NULL
 
108
1       1       0       0       0       0
 
109
1       1       1       1       1       1
 
110
select count(*) from t1_30237_bool
 
111
where ((A XOR B) XOR C) != (A XOR (B XOR C));
 
112
count(*)
 
113
0
 
114
Testing that AND is associative 
 
115
select A, B, C, (A AND B) AND C, A AND (B AND C), A AND B AND C
 
116
from t1_30237_bool order by A, B, C;
 
117
A       B       C       (A AND B) AND C A AND (B AND C) A AND B AND C
 
118
NULL    NULL    NULL    NULL    NULL    NULL
 
119
NULL    NULL    0       0       0       0
 
120
NULL    NULL    1       NULL    NULL    NULL
 
121
NULL    0       NULL    0       0       0
 
122
NULL    0       0       0       0       0
 
123
NULL    0       1       0       0       0
 
124
NULL    1       NULL    NULL    NULL    NULL
 
125
NULL    1       0       0       0       0
 
126
NULL    1       1       NULL    NULL    NULL
 
127
0       NULL    NULL    0       0       0
 
128
0       NULL    0       0       0       0
 
129
0       NULL    1       0       0       0
 
130
0       0       NULL    0       0       0
 
131
0       0       0       0       0       0
 
132
0       0       1       0       0       0
 
133
0       1       NULL    0       0       0
 
134
0       1       0       0       0       0
 
135
0       1       1       0       0       0
 
136
1       NULL    NULL    NULL    NULL    NULL
 
137
1       NULL    0       0       0       0
 
138
1       NULL    1       NULL    NULL    NULL
 
139
1       0       NULL    0       0       0
 
140
1       0       0       0       0       0
 
141
1       0       1       0       0       0
 
142
1       1       NULL    NULL    NULL    NULL
 
143
1       1       0       0       0       0
 
144
1       1       1       1       1       1
 
145
select count(*) from t1_30237_bool
 
146
where ((A AND B) AND C) != (A AND (B AND C));
 
147
count(*)
 
148
0
 
149
Testing that AND has precedence over OR
 
150
select A, B, C, (A OR B) AND C, A OR (B AND C), A OR B AND C
 
151
from t1_30237_bool order by A, B, C;
 
152
A       B       C       (A OR B) AND C  A OR (B AND C)  A OR B AND C
 
153
NULL    NULL    NULL    NULL    NULL    NULL
 
154
NULL    NULL    0       0       NULL    NULL
 
155
NULL    NULL    1       NULL    NULL    NULL
 
156
NULL    0       NULL    NULL    NULL    NULL
 
157
NULL    0       0       0       NULL    NULL
 
158
NULL    0       1       NULL    NULL    NULL
 
159
NULL    1       NULL    NULL    NULL    NULL
 
160
NULL    1       0       0       NULL    NULL
 
161
NULL    1       1       1       1       1
 
162
0       NULL    NULL    NULL    NULL    NULL
 
163
0       NULL    0       0       0       0
 
164
0       NULL    1       NULL    NULL    NULL
 
165
0       0       NULL    0       0       0
 
166
0       0       0       0       0       0
 
167
0       0       1       0       0       0
 
168
0       1       NULL    NULL    NULL    NULL
 
169
0       1       0       0       0       0
 
170
0       1       1       1       1       1
 
171
1       NULL    NULL    NULL    1       1
 
172
1       NULL    0       0       1       1
 
173
1       NULL    1       1       1       1
 
174
1       0       NULL    NULL    1       1
 
175
1       0       0       0       1       1
 
176
1       0       1       1       1       1
 
177
1       1       NULL    NULL    1       1
 
178
1       1       0       0       1       1
 
179
1       1       1       1       1       1
 
180
select count(*) from t1_30237_bool
 
181
where (A OR (B AND C)) != (A OR B AND C);
 
182
count(*)
 
183
0
 
184
select A, B, C, (A AND B) OR C, A AND (B OR C), A AND B OR C
 
185
from t1_30237_bool order by A, B, C;
 
186
A       B       C       (A AND B) OR C  A AND (B OR C)  A AND B OR C
 
187
NULL    NULL    NULL    NULL    NULL    NULL
 
188
NULL    NULL    0       NULL    NULL    NULL
 
189
NULL    NULL    1       1       NULL    1
 
190
NULL    0       NULL    NULL    NULL    NULL
 
191
NULL    0       0       0       0       0
 
192
NULL    0       1       1       NULL    1
 
193
NULL    1       NULL    NULL    NULL    NULL
 
194
NULL    1       0       NULL    NULL    NULL
 
195
NULL    1       1       1       NULL    1
 
196
0       NULL    NULL    NULL    0       NULL
 
197
0       NULL    0       0       0       0
 
198
0       NULL    1       1       0       1
 
199
0       0       NULL    NULL    0       NULL
 
200
0       0       0       0       0       0
 
201
0       0       1       1       0       1
 
202
0       1       NULL    NULL    0       NULL
 
203
0       1       0       0       0       0
 
204
0       1       1       1       0       1
 
205
1       NULL    NULL    NULL    NULL    NULL
 
206
1       NULL    0       NULL    NULL    NULL
 
207
1       NULL    1       1       1       1
 
208
1       0       NULL    NULL    NULL    NULL
 
209
1       0       0       0       0       0
 
210
1       0       1       1       1       1
 
211
1       1       NULL    1       1       1
 
212
1       1       0       1       1       1
 
213
1       1       1       1       1       1
 
214
select count(*) from t1_30237_bool
 
215
where ((A AND B) OR C) != (A AND B OR C);
 
216
count(*)
 
217
0
 
218
Testing that AND has precedence over XOR
 
219
select A, B, C, (A XOR B) AND C, A XOR (B AND C), A XOR B AND C
 
220
from t1_30237_bool order by A, B, C;
 
221
A       B       C       (A XOR B) AND C A XOR (B AND C) A XOR B AND C
 
222
NULL    NULL    NULL    NULL    NULL    NULL
 
223
NULL    NULL    0       0       NULL    NULL
 
224
NULL    NULL    1       NULL    NULL    NULL
 
225
NULL    0       NULL    NULL    NULL    NULL
 
226
NULL    0       0       0       NULL    NULL
 
227
NULL    0       1       NULL    NULL    NULL
 
228
NULL    1       NULL    NULL    NULL    NULL
 
229
NULL    1       0       0       NULL    NULL
 
230
NULL    1       1       NULL    NULL    NULL
 
231
0       NULL    NULL    NULL    NULL    NULL
 
232
0       NULL    0       0       0       0
 
233
0       NULL    1       NULL    NULL    NULL
 
234
0       0       NULL    0       0       0
 
235
0       0       0       0       0       0
 
236
0       0       1       0       0       0
 
237
0       1       NULL    NULL    NULL    NULL
 
238
0       1       0       0       0       0
 
239
0       1       1       1       1       1
 
240
1       NULL    NULL    NULL    NULL    NULL
 
241
1       NULL    0       0       1       1
 
242
1       NULL    1       NULL    NULL    NULL
 
243
1       0       NULL    NULL    1       1
 
244
1       0       0       0       1       1
 
245
1       0       1       1       1       1
 
246
1       1       NULL    0       NULL    NULL
 
247
1       1       0       0       1       1
 
248
1       1       1       0       0       0
 
249
select count(*) from t1_30237_bool
 
250
where (A XOR (B AND C)) != (A XOR B AND C);
 
251
count(*)
 
252
0
 
253
select A, B, C, (A AND B) XOR C, A AND (B XOR C), A AND B XOR C
 
254
from t1_30237_bool order by A, B, C;
 
255
A       B       C       (A AND B) XOR C A AND (B XOR C) A AND B XOR C
 
256
NULL    NULL    NULL    NULL    NULL    NULL
 
257
NULL    NULL    0       NULL    NULL    NULL
 
258
NULL    NULL    1       NULL    NULL    NULL
 
259
NULL    0       NULL    NULL    NULL    NULL
 
260
NULL    0       0       0       0       0
 
261
NULL    0       1       1       NULL    1
 
262
NULL    1       NULL    NULL    NULL    NULL
 
263
NULL    1       0       NULL    NULL    NULL
 
264
NULL    1       1       NULL    0       NULL
 
265
0       NULL    NULL    NULL    0       NULL
 
266
0       NULL    0       0       0       0
 
267
0       NULL    1       1       0       1
 
268
0       0       NULL    NULL    0       NULL
 
269
0       0       0       0       0       0
 
270
0       0       1       1       0       1
 
271
0       1       NULL    NULL    0       NULL
 
272
0       1       0       0       0       0
 
273
0       1       1       1       0       1
 
274
1       NULL    NULL    NULL    NULL    NULL
 
275
1       NULL    0       NULL    NULL    NULL
 
276
1       NULL    1       NULL    NULL    NULL
 
277
1       0       NULL    NULL    NULL    NULL
 
278
1       0       0       0       0       0
 
279
1       0       1       1       1       1
 
280
1       1       NULL    NULL    NULL    NULL
 
281
1       1       0       1       1       1
 
282
1       1       1       0       0       0
 
283
select count(*) from t1_30237_bool
 
284
where ((A AND B) XOR C) != (A AND B XOR C);
 
285
count(*)
 
286
0
 
287
Testing that XOR has precedence over OR
 
288
select A, B, C, (A XOR B) OR C, A XOR (B OR C), A XOR B OR C
 
289
from t1_30237_bool order by A, B, C;
 
290
A       B       C       (A XOR B) OR C  A XOR (B OR C)  A XOR B OR C
 
291
NULL    NULL    NULL    NULL    NULL    NULL
 
292
NULL    NULL    0       NULL    NULL    NULL
 
293
NULL    NULL    1       1       NULL    1
 
294
NULL    0       NULL    NULL    NULL    NULL
 
295
NULL    0       0       NULL    NULL    NULL
 
296
NULL    0       1       1       NULL    1
 
297
NULL    1       NULL    NULL    NULL    NULL
 
298
NULL    1       0       NULL    NULL    NULL
 
299
NULL    1       1       1       NULL    1
 
300
0       NULL    NULL    NULL    NULL    NULL
 
301
0       NULL    0       NULL    NULL    NULL
 
302
0       NULL    1       1       1       1
 
303
0       0       NULL    NULL    NULL    NULL
 
304
0       0       0       0       0       0
 
305
0       0       1       1       1       1
 
306
0       1       NULL    1       1       1
 
307
0       1       0       1       1       1
 
308
0       1       1       1       1       1
 
309
1       NULL    NULL    NULL    NULL    NULL
 
310
1       NULL    0       NULL    NULL    NULL
 
311
1       NULL    1       1       0       1
 
312
1       0       NULL    1       NULL    1
 
313
1       0       0       1       1       1
 
314
1       0       1       1       0       1
 
315
1       1       NULL    NULL    0       NULL
 
316
1       1       0       0       0       0
 
317
1       1       1       1       0       1
 
318
select count(*) from t1_30237_bool
 
319
where ((A XOR B) OR C) != (A XOR B OR C);
 
320
count(*)
 
321
0
 
322
select A, B, C, (A OR B) XOR C, A OR (B XOR C), A OR B XOR C
 
323
from t1_30237_bool order by A, B, C;
 
324
A       B       C       (A OR B) XOR C  A OR (B XOR C)  A OR B XOR C
 
325
NULL    NULL    NULL    NULL    NULL    NULL
 
326
NULL    NULL    0       NULL    NULL    NULL
 
327
NULL    NULL    1       NULL    NULL    NULL
 
328
NULL    0       NULL    NULL    NULL    NULL
 
329
NULL    0       0       NULL    NULL    NULL
 
330
NULL    0       1       NULL    1       1
 
331
NULL    1       NULL    NULL    NULL    NULL
 
332
NULL    1       0       1       1       1
 
333
NULL    1       1       0       NULL    NULL
 
334
0       NULL    NULL    NULL    NULL    NULL
 
335
0       NULL    0       NULL    NULL    NULL
 
336
0       NULL    1       NULL    NULL    NULL
 
337
0       0       NULL    NULL    NULL    NULL
 
338
0       0       0       0       0       0
 
339
0       0       1       1       1       1
 
340
0       1       NULL    NULL    NULL    NULL
 
341
0       1       0       1       1       1
 
342
0       1       1       0       0       0
 
343
1       NULL    NULL    NULL    1       1
 
344
1       NULL    0       1       1       1
 
345
1       NULL    1       0       1       1
 
346
1       0       NULL    NULL    1       1
 
347
1       0       0       1       1       1
 
348
1       0       1       0       1       1
 
349
1       1       NULL    NULL    1       1
 
350
1       1       0       1       1       1
 
351
1       1       1       0       1       1
 
352
select count(*) from t1_30237_bool
 
353
where (A OR (B XOR C)) != (A OR B XOR C);
 
354
count(*)
 
355
0
 
356
drop table t1_30237_bool;
 
357
Testing that NOT has precedence over OR
 
358
select (NOT FALSE) OR TRUE, NOT (FALSE OR TRUE), NOT FALSE OR TRUE;
 
359
(NOT FALSE) OR TRUE     NOT (FALSE OR TRUE)     NOT FALSE OR TRUE
 
360
1       0       1
 
361
Testing that NOT has precedence over XOR
 
362
select (NOT FALSE) XOR FALSE, NOT (FALSE XOR FALSE), NOT FALSE XOR FALSE;
 
363
(NOT FALSE) XOR FALSE   NOT (FALSE XOR FALSE)   NOT FALSE XOR FALSE
 
364
1       1       1
 
365
Testing that NOT has precedence over AND
 
366
select (NOT FALSE) AND FALSE, NOT (FALSE AND FALSE), NOT FALSE AND FALSE;
 
367
(NOT FALSE) AND FALSE   NOT (FALSE AND FALSE)   NOT FALSE AND FALSE
 
368
0       1       0
 
369
Testing that NOT is associative
 
370
select NOT NOT TRUE, NOT NOT NOT FALSE;
 
371
NOT NOT TRUE    NOT NOT NOT FALSE
 
372
1       1
 
373
Testing that IS has precedence over NOT
 
374
select (NOT NULL) IS TRUE, NOT (NULL IS TRUE), NOT NULL IS TRUE;
 
375
(NOT NULL) IS TRUE      NOT (NULL IS TRUE)      NOT NULL IS TRUE
 
376
0       1       1
 
377
select (NOT NULL) IS NOT TRUE, NOT (NULL IS NOT TRUE), NOT NULL IS NOT TRUE;
 
378
(NOT NULL) IS NOT TRUE  NOT (NULL IS NOT TRUE)  NOT NULL IS NOT TRUE
 
379
1       0       0
 
380
select (NOT NULL) IS FALSE, NOT (NULL IS FALSE), NOT NULL IS FALSE;
 
381
(NOT NULL) IS FALSE     NOT (NULL IS FALSE)     NOT NULL IS FALSE
 
382
0       1       1
 
383
select (NOT NULL) IS NOT FALSE, NOT (NULL IS NOT FALSE), NOT NULL IS NOT FALSE;
 
384
(NOT NULL) IS NOT FALSE NOT (NULL IS NOT FALSE) NOT NULL IS NOT FALSE
 
385
1       0       0
 
386
select (NOT TRUE) IS UNKNOWN, NOT (TRUE IS UNKNOWN), NOT TRUE IS UNKNOWN;
 
387
(NOT TRUE) IS UNKNOWN   NOT (TRUE IS UNKNOWN)   NOT TRUE IS UNKNOWN
 
388
0       1       1
 
389
select (NOT TRUE) IS NOT UNKNOWN, NOT (TRUE IS NOT UNKNOWN), NOT TRUE IS NOT UNKNOWN;
 
390
(NOT TRUE) IS NOT UNKNOWN       NOT (TRUE IS NOT UNKNOWN)       NOT TRUE IS NOT UNKNOWN
 
391
1       0       0
 
392
select (NOT TRUE) IS NULL, NOT (TRUE IS NULL), NOT TRUE IS NULL;
 
393
(NOT TRUE) IS NULL      NOT (TRUE IS NULL)      NOT TRUE IS NULL
 
394
0       1       1
 
395
select (NOT TRUE) IS NOT NULL, NOT (TRUE IS NOT NULL), NOT TRUE IS NOT NULL;
 
396
(NOT TRUE) IS NOT NULL  NOT (TRUE IS NOT NULL)  NOT TRUE IS NOT NULL
 
397
1       0       0
 
398
Testing that IS [NOT] TRUE/FALSE/UNKNOWN predicates are not associative
 
399
select TRUE IS TRUE IS TRUE IS TRUE;
 
400
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IS TRUE IS TRUE' at line 1
 
401
select FALSE IS NOT TRUE IS NOT TRUE IS NOT TRUE;
 
402
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IS NOT TRUE IS NOT TRUE' at line 1
 
403
select NULL IS FALSE IS FALSE IS FALSE;
 
404
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IS FALSE IS FALSE' at line 1
 
405
select TRUE IS NOT FALSE IS NOT FALSE IS NOT FALSE;
 
406
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IS NOT FALSE IS NOT FALSE' at line 1
 
407
select FALSE IS UNKNOWN IS UNKNOWN IS UNKNOWN;
 
408
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IS UNKNOWN IS UNKNOWN' at line 1
 
409
select TRUE IS NOT UNKNOWN IS NOT UNKNOWN IS NOT UNKNOWN;
 
410
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IS NOT UNKNOWN IS NOT UNKNOWN' at line 1
 
411
Testing that IS [NOT] NULL predicates are associative
 
412
select FALSE IS NULL IS NULL IS NULL;
 
413
FALSE IS NULL IS NULL IS NULL
 
414
0
 
415
select TRUE IS NOT NULL IS NOT NULL IS NOT NULL;
 
416
TRUE IS NOT NULL IS NOT NULL IS NOT NULL
 
417
1
 
418
Testing that comparison operators are left associative
 
419
select 1 <=> 2 <=> 2, (1 <=> 2) <=> 2, 1 <=> (2 <=> 2);
 
420
1 <=> 2 <=> 2   (1 <=> 2) <=> 2 1 <=> (2 <=> 2)
 
421
0       0       1
 
422
select 1 = 2 = 2, (1 = 2) = 2, 1 = (2 = 2);
 
423
1 = 2 = 2       (1 = 2) = 2     1 = (2 = 2)
 
424
0       0       1
 
425
select 1 != 2 != 3, (1 != 2) != 3, 1 != (2 != 3);
 
426
1 != 2 != 3     (1 != 2) != 3   1 != (2 != 3)
 
427
1       1       0
 
428
select 1 <> 2 <> 3, (1 <> 2) <> 3, 1 <> (2 <> 3);
 
429
1 <> 2 <> 3     (1 <> 2) <> 3   1 <> (2 <> 3)
 
430
1       1       0
 
431
select 1 < 2 < 3, (1 < 2) < 3, 1 < (2 < 3);
 
432
1 < 2 < 3       (1 < 2) < 3     1 < (2 < 3)
 
433
1       1       0
 
434
select 3 <= 2 <= 1, (3 <= 2) <= 1, 3 <= (2 <= 1);
 
435
3 <= 2 <= 1     (3 <= 2) <= 1   3 <= (2 <= 1)
 
436
1       1       0
 
437
select 1 > 2 > 3, (1 > 2) > 3, 1 > (2 > 3);
 
438
1 > 2 > 3       (1 > 2) > 3     1 > (2 > 3)
 
439
0       0       1
 
440
select 1 >= 2 >= 3, (1 >= 2) >= 3, 1 >= (2 >= 3);
 
441
1 >= 2 >= 3     (1 >= 2) >= 3   1 >= (2 >= 3)
 
442
0       0       1
 
443
Testing that | is associative
 
444
select 0xF0 | 0x0F | 0x55, (0xF0 | 0x0F) | 0x55, 0xF0 | (0x0F | 0x55);
 
445
0xF0 | 0x0F | 0x55      (0xF0 | 0x0F) | 0x55    0xF0 | (0x0F | 0x55)
 
446
255     255     255
 
447
Testing that & is associative
 
448
select 0xF5 & 0x5F & 0x55, (0xF5 & 0x5F) & 0x55, 0xF5 & (0x5F & 0x55);
 
449
0xF5 & 0x5F & 0x55      (0xF5 & 0x5F) & 0x55    0xF5 & (0x5F & 0x55)
 
450
85      85      85
 
451
Testing that << is left associative
 
452
select 4 << 3 << 2, (4 << 3) << 2, 4 << (3 << 2);
 
453
4 << 3 << 2     (4 << 3) << 2   4 << (3 << 2)
 
454
128     128     16384
 
455
Testing that >> is left associative
 
456
select 256 >> 3 >> 2, (256 >> 3) >> 2, 256 >> (3 >> 2);
 
457
256 >> 3 >> 2   (256 >> 3) >> 2 256 >> (3 >> 2)
 
458
8       8       256
 
459
Testing that & has precedence over |
 
460
select 0xF0 & 0x0F | 0x55, (0xF0 & 0x0F) | 0x55, 0xF0 & (0x0F | 0x55);
 
461
0xF0 & 0x0F | 0x55      (0xF0 & 0x0F) | 0x55    0xF0 & (0x0F | 0x55)
 
462
85      85      80
 
463
select 0x55 | 0xF0 & 0x0F, (0x55 | 0xF0) & 0x0F, 0x55 | (0xF0 & 0x0F);
 
464
0x55 | 0xF0 & 0x0F      (0x55 | 0xF0) & 0x0F    0x55 | (0xF0 & 0x0F)
 
465
85      5       85
 
466
Testing that << has precedence over |
 
467
select 0x0F << 4 | 0x0F, (0x0F << 4) | 0x0F, 0x0F << (4 | 0x0F);
 
468
0x0F << 4 | 0x0F        (0x0F << 4) | 0x0F      0x0F << (4 | 0x0F)
 
469
255     255     491520
 
470
select 0x0F | 0x0F << 4, (0x0F | 0x0F) << 4, 0x0F | (0x0F << 4);
 
471
0x0F | 0x0F << 4        (0x0F | 0x0F) << 4      0x0F | (0x0F << 4)
 
472
255     240     255
 
473
Testing that >> has precedence over |
 
474
select 0xF0 >> 4 | 0xFF, (0xF0 >> 4) | 0xFF, 0xF0 >> (4 | 0xFF);
 
475
0xF0 >> 4 | 0xFF        (0xF0 >> 4) | 0xFF      0xF0 >> (4 | 0xFF)
 
476
255     255     0
 
477
select 0xFF | 0xF0 >> 4, (0xFF | 0xF0) >> 4, 0xFF | (0xF0 >> 4);
 
478
0xFF | 0xF0 >> 4        (0xFF | 0xF0) >> 4      0xFF | (0xF0 >> 4)
 
479
255     15      255
 
480
Testing that << has precedence over &
 
481
select 0x0F << 4 & 0xF0, (0x0F << 4) & 0xF0, 0x0F << (4 & 0xF0);
 
482
0x0F << 4 & 0xF0        (0x0F << 4) & 0xF0      0x0F << (4 & 0xF0)
 
483
240     240     15
 
484
select 0xF0 & 0x0F << 4, (0xF0 & 0x0F) << 4, 0xF0 & (0x0F << 4);
 
485
0xF0 & 0x0F << 4        (0xF0 & 0x0F) << 4      0xF0 & (0x0F << 4)
 
486
240     0       240
 
487
Testing that >> has precedence over &
 
488
select 0xF0 >> 4 & 0x55, (0xF0 >> 4) & 0x55, 0xF0 >> (4 & 0x55);
 
489
0xF0 >> 4 & 0x55        (0xF0 >> 4) & 0x55      0xF0 >> (4 & 0x55)
 
490
5       5       15
 
491
select 0x0F & 0xF0 >> 4, (0x0F & 0xF0) >> 4, 0x0F & (0xF0 >> 4);
 
492
0x0F & 0xF0 >> 4        (0x0F & 0xF0) >> 4      0x0F & (0xF0 >> 4)
 
493
15      0       15
 
494
Testing that >> and << have the same precedence
 
495
select 0xFF >> 4 << 2, (0xFF >> 4) << 2, 0xFF >> (4 << 2);
 
496
0xFF >> 4 << 2  (0xFF >> 4) << 2        0xFF >> (4 << 2)
 
497
60      60      0
 
498
select 0x0F << 4 >> 2, (0x0F << 4) >> 2, 0x0F << (4 >> 2);
 
499
0x0F << 4 >> 2  (0x0F << 4) >> 2        0x0F << (4 >> 2)
 
500
60      60      30
 
501
Testing that binary + is associative
 
502
select 1 + 2 + 3, (1 + 2) + 3, 1 + (2 + 3);
 
503
1 + 2 + 3       (1 + 2) + 3     1 + (2 + 3)
 
504
6       6       6
 
505
Testing that binary - is left associative
 
506
select 1 - 2 - 3, (1 - 2) - 3, 1 - (2 - 3);
 
507
1 - 2 - 3       (1 - 2) - 3     1 - (2 - 3)
 
508
-4      -4      2
 
509
Testing that binary + and binary - have the same precedence
 
510
select 1 + 2 - 3, (1 + 2) - 3, 1 + (2 - 3);
 
511
1 + 2 - 3       (1 + 2) - 3     1 + (2 - 3)
 
512
0       0       0
 
513
select 1 - 2 + 3, (1 - 2) + 3, 1 - (2 + 3);
 
514
1 - 2 + 3       (1 - 2) + 3     1 - (2 + 3)
 
515
2       2       -4
 
516
Testing that binary + has precedence over |
 
517
select 0xF0 + 0x0F | 0x55, (0xF0 + 0x0F) | 0x55, 0xF0 + (0x0F | 0x55);
 
518
0xF0 + 0x0F | 0x55      (0xF0 + 0x0F) | 0x55    0xF0 + (0x0F | 0x55)
 
519
255     255     335
 
520
select 0x55 | 0xF0 + 0x0F, (0x55 | 0xF0) + 0x0F, 0x55 | (0xF0 + 0x0F);
 
521
0x55 | 0xF0 + 0x0F      (0x55 | 0xF0) + 0x0F    0x55 | (0xF0 + 0x0F)
 
522
255     260     255
 
523
Testing that binary + has precedence over &
 
524
select 0xF0 + 0x0F & 0x55, (0xF0 + 0x0F) & 0x55, 0xF0 + (0x0F & 0x55);
 
525
0xF0 + 0x0F & 0x55      (0xF0 + 0x0F) & 0x55    0xF0 + (0x0F & 0x55)
 
526
85      85      245
 
527
select 0x55 & 0xF0 + 0x0F, (0x55 & 0xF0) + 0x0F, 0x55 & (0xF0 + 0x0F);
 
528
0x55 & 0xF0 + 0x0F      (0x55 & 0xF0) + 0x0F    0x55 & (0xF0 + 0x0F)
 
529
85      95      85
 
530
Testing that binary + has precedence over <<
 
531
select 2 + 3 << 4, (2 + 3) << 4, 2 + (3 << 4);
 
532
2 + 3 << 4      (2 + 3) << 4    2 + (3 << 4)
 
533
80      80      50
 
534
select 3 << 4 + 2, (3 << 4) + 2, 3 << (4 + 2);
 
535
3 << 4 + 2      (3 << 4) + 2    3 << (4 + 2)
 
536
192     50      192
 
537
Testing that binary + has precedence over >>
 
538
select 4 + 3 >> 2, (4 + 3) >> 2, 4 + (3 >> 2);
 
539
4 + 3 >> 2      (4 + 3) >> 2    4 + (3 >> 2)
 
540
1       1       4
 
541
select 3 >> 2 + 1, (3 >> 2) + 1, 3 >> (2 + 1);
 
542
3 >> 2 + 1      (3 >> 2) + 1    3 >> (2 + 1)
 
543
0       1       0
 
544
Testing that binary - has precedence over |
 
545
select 0xFF - 0x0F | 0x55, (0xFF - 0x0F) | 0x55, 0xFF - (0x0F | 0x55);
 
546
0xFF - 0x0F | 0x55      (0xFF - 0x0F) | 0x55    0xFF - (0x0F | 0x55)
 
547
245     245     160
 
548
select 0x55 | 0xFF - 0xF0, (0x55 | 0xFF) - 0xF0, 0x55 | (0xFF - 0xF0);
 
549
0x55 | 0xFF - 0xF0      (0x55 | 0xFF) - 0xF0    0x55 | (0xFF - 0xF0)
 
550
95      15      95
 
551
Testing that binary - has precedence over &
 
552
select 0xFF - 0xF0 & 0x55, (0xFF - 0xF0) & 0x55, 0xFF - (0xF0 & 0x55);
 
553
0xFF - 0xF0 & 0x55      (0xFF - 0xF0) & 0x55    0xFF - (0xF0 & 0x55)
 
554
5       5       175
 
555
select 0x55 & 0xFF - 0xF0, (0x55 & 0xFF) - 0xF0, 0x55 & (0xFF - 0xF0);
 
556
0x55 & 0xFF - 0xF0      (0x55 & 0xFF) - 0xF0    0x55 & (0xFF - 0xF0)
 
557
5       -155    5
 
558
Testing that binary - has precedence over <<
 
559
select 16 - 3 << 2, (16 - 3) << 2, 16 - (3 << 2);
 
560
16 - 3 << 2     (16 - 3) << 2   16 - (3 << 2)
 
561
52      52      4
 
562
select 4 << 3 - 2, (4 << 3) - 2, 4 << (3 - 2);
 
563
4 << 3 - 2      (4 << 3) - 2    4 << (3 - 2)
 
564
8       30      8
 
565
Testing that binary - has precedence over >>
 
566
select 16 - 3 >> 2, (16 - 3) >> 2, 16 - (3 >> 2);
 
567
16 - 3 >> 2     (16 - 3) >> 2   16 - (3 >> 2)
 
568
3       3       16
 
569
select 16 >> 3 - 2, (16 >> 3) - 2, 16 >> (3 - 2);
 
570
16 >> 3 - 2     (16 >> 3) - 2   16 >> (3 - 2)
 
571
8       0       8
 
572
Testing that * is associative
 
573
select 2 * 3 * 4, (2 * 3) * 4, 2 * (3 * 4);
 
574
2 * 3 * 4       (2 * 3) * 4     2 * (3 * 4)
 
575
24      24      24
 
576
Testing that * has precedence over |
 
577
select 2 * 0x40 | 0x0F, (2 * 0x40) | 0x0F, 2 * (0x40 | 0x0F);
 
578
2 * 0x40 | 0x0F (2 * 0x40) | 0x0F       2 * (0x40 | 0x0F)
 
579
143     143     158
 
580
select 0x0F | 2 * 0x40, (0x0F | 2) * 0x40, 0x0F | (2 * 0x40);
 
581
0x0F | 2 * 0x40 (0x0F | 2) * 0x40       0x0F | (2 * 0x40)
 
582
143     960     143
 
583
Testing that * has precedence over &
 
584
select 2 * 0x40 & 0x55, (2 * 0x40) & 0x55, 2 * (0x40 & 0x55);
 
585
2 * 0x40 & 0x55 (2 * 0x40) & 0x55       2 * (0x40 & 0x55)
 
586
0       0       128
 
587
select 0xF0 & 2 * 0x40, (0xF0 & 2) * 0x40, 0xF0 & (2 * 0x40);
 
588
0xF0 & 2 * 0x40 (0xF0 & 2) * 0x40       0xF0 & (2 * 0x40)
 
589
128     0       128
 
590
Testing that * has precedence over << 
 
591
select 5 * 3 << 4, (5 * 3) << 4, 5 * (3 << 4);
 
592
5 * 3 << 4      (5 * 3) << 4    5 * (3 << 4)
 
593
240     240     240
 
594
select 2 << 3 * 4, (2 << 3) * 4, 2 << (3 * 4);
 
595
2 << 3 * 4      (2 << 3) * 4    2 << (3 * 4)
 
596
8192    64      8192
 
597
Testing that * has precedence over >>
 
598
select 3 * 4 >> 2, (3 * 4) >> 2, 3 * (4 >> 2);
 
599
3 * 4 >> 2      (3 * 4) >> 2    3 * (4 >> 2)
 
600
3       3       3
 
601
select 4 >> 2 * 3, (4 >> 2) * 3, 4 >> (2 * 3);
 
602
4 >> 2 * 3      (4 >> 2) * 3    4 >> (2 * 3)
 
603
0       3       0
 
604
Testing that * has precedence over binary +
 
605
select 2 * 3 + 4, (2 * 3) + 4, 2 * (3 + 4);
 
606
2 * 3 + 4       (2 * 3) + 4     2 * (3 + 4)
 
607
10      10      14
 
608
select 2 + 3 * 4, (2 + 3) * 4, 2 + (3 * 4);
 
609
2 + 3 * 4       (2 + 3) * 4     2 + (3 * 4)
 
610
14      20      14
 
611
Testing that * has precedence over binary -
 
612
select 4 * 3 - 2, (4 * 3) - 2, 4 * (3 - 2);
 
613
4 * 3 - 2       (4 * 3) - 2     4 * (3 - 2)
 
614
10      10      4
 
615
select 4 - 3 * 2, (4 - 3) * 2, 4 - (3 * 2);
 
616
4 - 3 * 2       (4 - 3) * 2     4 - (3 * 2)
 
617
-2      2       -2
 
618
Testing that / is left associative
 
619
select 15 / 5 / 3, (15 / 5) / 3, 15 / (5 / 3);
 
620
15 / 5 / 3      (15 / 5) / 3    15 / (5 / 3)
 
621
1.00000000      1.00000000      9.0000
 
622
Testing that / has precedence over |
 
623
select 105 / 5 | 2, (105 / 5) | 2, 105 / (5 | 2);
 
624
105 / 5 | 2     (105 / 5) | 2   105 / (5 | 2)
 
625
23      23      15.0000
 
626
select 105 | 2 / 5, (105 | 2) / 5, 105 | (2 / 5);
 
627
105 | 2 / 5     (105 | 2) / 5   105 | (2 / 5)
 
628
105     21.4000 105
 
629
Testing that / has precedence over &
 
630
select 105 / 5 & 0x0F, (105 / 5) & 0x0F, 105 / (5 & 0x0F);
 
631
105 / 5 & 0x0F  (105 / 5) & 0x0F        105 / (5 & 0x0F)
 
632
5       5       21.0000
 
633
select 0x0F & 105 / 5, (0x0F & 105) / 5, 0x0F & (105 / 5);
 
634
0x0F & 105 / 5  (0x0F & 105) / 5        0x0F & (105 / 5)
 
635
5       1.8000  5
 
636
Testing that / has precedence over << 
 
637
select 0x80 / 4 << 2, (0x80 / 4) << 2, 0x80 / (4 << 2);
 
638
0x80 / 4 << 2   (0x80 / 4) << 2 0x80 / (4 << 2)
 
639
128     128     8.0000
 
640
select 0x80 << 4 / 2, (0x80 << 4) / 2, 0x80 << (4 / 2);
 
641
0x80 << 4 / 2   (0x80 << 4) / 2 0x80 << (4 / 2)
 
642
512     1024.0000       512
 
643
Testing that / has precedence over >>
 
644
select 0x80 / 4 >> 2, (0x80 / 4) >> 2, 0x80 / (4 >> 2);
 
645
0x80 / 4 >> 2   (0x80 / 4) >> 2 0x80 / (4 >> 2)
 
646
8       8       128.0000
 
647
select 0x80 >> 4 / 2, (0x80 >> 4) / 2, 0x80 >> (4 / 2);
 
648
0x80 >> 4 / 2   (0x80 >> 4) / 2 0x80 >> (4 / 2)
 
649
32      4.0000  32
 
650
Testing that / has precedence over binary +
 
651
select 0x80 / 2 + 2, (0x80 / 2) + 2, 0x80 / (2 + 2);
 
652
0x80 / 2 + 2    (0x80 / 2) + 2  0x80 / (2 + 2)
 
653
66.0000 66.0000 32.0000
 
654
select 0x80 + 2 / 2, (0x80 + 2) / 2, 0x80 + (2 / 2);
 
655
0x80 + 2 / 2    (0x80 + 2) / 2  0x80 + (2 / 2)
 
656
129.0000        65.0000 129.0000
 
657
Testing that / has precedence over binary -
 
658
select 0x80 / 4 - 2, (0x80 / 4) - 2, 0x80 / (4 - 2);
 
659
0x80 / 4 - 2    (0x80 / 4) - 2  0x80 / (4 - 2)
 
660
30.0000 30.0000 64.0000
 
661
select 0x80 - 4 / 2, (0x80 - 4) / 2, 0x80 - (4 / 2);
 
662
0x80 - 4 / 2    (0x80 - 4) / 2  0x80 - (4 / 2)
 
663
126.0000        62.0000 126.0000
 
664
Testing that ^ is associative
 
665
select 0xFF ^ 0xF0 ^ 0x0F, (0xFF ^ 0xF0) ^ 0x0F, 0xFF ^ (0xF0 ^ 0x0F);
 
666
0xFF ^ 0xF0 ^ 0x0F      (0xFF ^ 0xF0) ^ 0x0F    0xFF ^ (0xF0 ^ 0x0F)
 
667
0       0       0
 
668
select 0xFF ^ 0xF0 ^ 0x55, (0xFF ^ 0xF0) ^ 0x55, 0xFF ^ (0xF0 ^ 0x55);
 
669
0xFF ^ 0xF0 ^ 0x55      (0xFF ^ 0xF0) ^ 0x55    0xFF ^ (0xF0 ^ 0x55)
 
670
90      90      90
 
671
Testing that ^ has precedence over |
 
672
select 0xFF ^ 0xF0 | 0x0F, (0xFF ^ 0xF0) | 0x0F, 0xFF ^ (0xF0 | 0x0F);
 
673
0xFF ^ 0xF0 | 0x0F      (0xFF ^ 0xF0) | 0x0F    0xFF ^ (0xF0 | 0x0F)
 
674
15      15      0
 
675
select 0xF0 | 0xFF ^ 0xF0, (0xF0 | 0xFF) ^ 0xF0, 0xF0 | (0xFF ^ 0xF0);
 
676
0xF0 | 0xFF ^ 0xF0      (0xF0 | 0xFF) ^ 0xF0    0xF0 | (0xFF ^ 0xF0)
 
677
255     15      255
 
678
Testing that ^ has precedence over &
 
679
select 0xFF ^ 0xF0 & 0x0F, (0xFF ^ 0xF0) & 0x0F, 0xFF ^ (0xF0 & 0x0F);
 
680
0xFF ^ 0xF0 & 0x0F      (0xFF ^ 0xF0) & 0x0F    0xFF ^ (0xF0 & 0x0F)
 
681
15      15      255
 
682
select 0x0F & 0xFF ^ 0xF0, (0x0F & 0xFF) ^ 0xF0, 0x0F & (0xFF ^ 0xF0);
 
683
0x0F & 0xFF ^ 0xF0      (0x0F & 0xFF) ^ 0xF0    0x0F & (0xFF ^ 0xF0)
 
684
15      255     15
 
685
Testing that ^ has precedence over <<
 
686
select 0xFF ^ 0xF0 << 2, (0xFF ^ 0xF0) << 2, 0xFF ^ (0xF0 << 2);
 
687
0xFF ^ 0xF0 << 2        (0xFF ^ 0xF0) << 2      0xFF ^ (0xF0 << 2)
 
688
60      60      831
 
689
select 0x0F << 2 ^ 0xFF, (0x0F << 2) ^ 0xFF, 0x0F << (2 ^ 0xFF);
 
690
0x0F << 2 ^ 0xFF        (0x0F << 2) ^ 0xFF      0x0F << (2 ^ 0xFF)
 
691
0       195     0
 
692
Testing that ^ has precedence over >>
 
693
select 0xFF ^ 0xF0 >> 2, (0xFF ^ 0xF0) >> 2, 0xFF ^ (0xF0 >> 2);
 
694
0xFF ^ 0xF0 >> 2        (0xFF ^ 0xF0) >> 2      0xFF ^ (0xF0 >> 2)
 
695
3       3       195
 
696
select 0xFF >> 2 ^ 0xF0, (0xFF >> 2) ^ 0xF0, 0xFF >> (2 ^ 0xF0);
 
697
0xFF >> 2 ^ 0xF0        (0xFF >> 2) ^ 0xF0      0xFF >> (2 ^ 0xF0)
 
698
0       207     0
 
699
Testing that ^ has precedence over binary +
 
700
select 0xFF ^ 0xF0 + 0x0F, (0xFF ^ 0xF0) + 0x0F, 0xFF ^ (0xF0 + 0x0F);
 
701
0xFF ^ 0xF0 + 0x0F      (0xFF ^ 0xF0) + 0x0F    0xFF ^ (0xF0 + 0x0F)
 
702
30      30      0
 
703
select 0x0F + 0xFF ^ 0xF0, (0x0F + 0xFF) ^ 0xF0, 0x0F + (0xFF ^ 0xF0);
 
704
0x0F + 0xFF ^ 0xF0      (0x0F + 0xFF) ^ 0xF0    0x0F + (0xFF ^ 0xF0)
 
705
30      510     30
 
706
Testing that ^ has precedence over binary -
 
707
select 0xFF ^ 0xF0 - 1, (0xFF ^ 0xF0) - 1, 0xFF ^ (0xF0 - 1);
 
708
0xFF ^ 0xF0 - 1 (0xFF ^ 0xF0) - 1       0xFF ^ (0xF0 - 1)
 
709
14      14      16
 
710
select 0x55 - 0x0F ^ 0x55, (0x55 - 0x0F) ^ 0x55, 0x55 - (0x0F ^ 0x55);
 
711
0x55 - 0x0F ^ 0x55      (0x55 - 0x0F) ^ 0x55    0x55 - (0x0F ^ 0x55)
 
712
-5      19      -5
 
713
Testing that ^ has precedence over *
 
714
select 0xFF ^ 0xF0 * 2, (0xFF ^ 0xF0) * 2, 0xFF ^ (0xF0 * 2);
 
715
0xFF ^ 0xF0 * 2 (0xFF ^ 0xF0) * 2       0xFF ^ (0xF0 * 2)
 
716
30      30      287
 
717
select 2 * 0xFF ^ 0xF0, (2 * 0xFF) ^ 0xF0, 2 * (0xFF ^ 0xF0);
 
718
2 * 0xFF ^ 0xF0 (2 * 0xFF) ^ 0xF0       2 * (0xFF ^ 0xF0)
 
719
30      270     30
 
720
Testing that ^ has precedence over /
 
721
select 0xFF ^ 0xF0 / 2, (0xFF ^ 0xF0) / 2, 0xFF ^ (0xF0 / 2);
 
722
0xFF ^ 0xF0 / 2 (0xFF ^ 0xF0) / 2       0xFF ^ (0xF0 / 2)
 
723
7.5000  7.5000  135
 
724
select 0xF2 / 2 ^ 0xF0, (0xF2 / 2) ^ 0xF0, 0xF2 / (2 ^ 0xF0);
 
725
0xF2 / 2 ^ 0xF0 (0xF2 / 2) ^ 0xF0       0xF2 / (2 ^ 0xF0)
 
726
1.0000  137     1.0000
 
727
Testing that ^ has precedence over %
 
728
select 0xFF ^ 0xF0 % 0x20, (0xFF ^ 0xF0) % 0x20, 0xFF ^ (0xF0 % 0x20);
 
729
0xFF ^ 0xF0 % 0x20      (0xFF ^ 0xF0) % 0x20    0xFF ^ (0xF0 % 0x20)
 
730
15      15      239
 
731
select 0xFF % 0x20 ^ 0xF0, (0xFF % 0x20) ^ 0xF0, 0xFF % (0x20 ^ 0xF0);
 
732
0xFF % 0x20 ^ 0xF0      (0xFF % 0x20) ^ 0xF0    0xFF % (0x20 ^ 0xF0)
 
733
47      239     47
 
734
Testing that ^ has precedence over DIV
 
735
select 0xFF ^ 0xF0 DIV 2, (0xFF ^ 0xF0) DIV 2, 0xFF ^ (0xF0 DIV 2);
 
736
0xFF ^ 0xF0 DIV 2       (0xFF ^ 0xF0) DIV 2     0xFF ^ (0xF0 DIV 2)
 
737
7       7       135
 
738
select 0xF2 DIV 2 ^ 0xF0, (0xF2 DIV 2) ^ 0xF0, 0xF2 DIV (2 ^ 0xF0);
 
739
0xF2 DIV 2 ^ 0xF0       (0xF2 DIV 2) ^ 0xF0     0xF2 DIV (2 ^ 0xF0)
 
740
1       137     1
 
741
Testing that ^ has precedence over MOD
 
742
select 0xFF ^ 0xF0 MOD 0x20, (0xFF ^ 0xF0) MOD 0x20, 0xFF ^ (0xF0 MOD 0x20);
 
743
0xFF ^ 0xF0 MOD 0x20    (0xFF ^ 0xF0) MOD 0x20  0xFF ^ (0xF0 MOD 0x20)
 
744
15      15      239
 
745
select 0xFF MOD 0x20 ^ 0xF0, (0xFF MOD 0x20) ^ 0xF0, 0xFF MOD (0x20 ^ 0xF0);
 
746
0xFF MOD 0x20 ^ 0xF0    (0xFF MOD 0x20) ^ 0xF0  0xFF MOD (0x20 ^ 0xF0)
 
747
47      239     47