~drizzle-trunk/drizzle/development

« back to all changes in this revision

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

  • Committer: Monty Taylor
  • Date: 2008-10-16 06:32:30 UTC
  • mto: (511.1.5 codestyle)
  • mto: This revision was merged to the branch mainline in revision 521.
  • Revision ID: monty@inaugust.com-20081016063230-4brxsra0qsmsg84q
Added -Wunused-macros.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
SET @xml='<a aa1="aa1" aa2="aa2">a1<b ba1="ba1">b1<c>c1</c>b2</b>a2</a>';
2
 
SELECT extractValue(@xml,'/a');
3
 
extractValue(@xml,'/a')
4
 
a1 a2
5
 
SELECT extractValue(@xml,'/a/b');
6
 
extractValue(@xml,'/a/b')
7
 
b1 b2
8
 
SELECT extractValue(@xml,'/a/b/c');
9
 
extractValue(@xml,'/a/b/c')
10
 
c1
11
 
SELECT extractValue(@xml,'/a/@aa1');
12
 
extractValue(@xml,'/a/@aa1')
13
 
aa1
14
 
SELECT extractValue(@xml,'/a/@aa2');
15
 
extractValue(@xml,'/a/@aa2')
16
 
aa2
17
 
SELECT extractValue(@xml,'/a/@*');
18
 
extractValue(@xml,'/a/@*')
19
 
aa1 aa2
20
 
SELECT extractValue(@xml,'//@ba1');
21
 
extractValue(@xml,'//@ba1')
22
 
ba1
23
 
SELECT extractValue(@xml,'//a');
24
 
extractValue(@xml,'//a')
25
 
a1 a2
26
 
SELECT extractValue(@xml,'//b');
27
 
extractValue(@xml,'//b')
28
 
b1 b2
29
 
SELECT extractValue(@xml,'//c');
30
 
extractValue(@xml,'//c')
31
 
c1
32
 
SELECT extractValue(@xml,'/a//b');
33
 
extractValue(@xml,'/a//b')
34
 
b1 b2
35
 
SELECT extractValue(@xml,'/a//c');
36
 
extractValue(@xml,'/a//c')
37
 
c1
38
 
SELECT extractValue(@xml,'//*');
39
 
extractValue(@xml,'//*')
40
 
a1 b1 c1 b2 a2
41
 
SELECT extractValue(@xml,'/a//*');
42
 
extractValue(@xml,'/a//*')
43
 
b1 c1 b2
44
 
SELECT extractValue(@xml,'/./a');
45
 
extractValue(@xml,'/./a')
46
 
a1 a2
47
 
SELECT extractValue(@xml,'/a/b/.');
48
 
extractValue(@xml,'/a/b/.')
49
 
b1 b2
50
 
SELECT extractValue(@xml,'/a/b/..');
51
 
extractValue(@xml,'/a/b/..')
52
 
a1 a2
53
 
SELECT extractValue(@xml,'/a/b/../@aa1');
54
 
extractValue(@xml,'/a/b/../@aa1')
55
 
aa1
56
 
SELECT extractValue(@xml,'/*');
57
 
extractValue(@xml,'/*')
58
 
a1 a2
59
 
SELECT extractValue(@xml,'/*/*');
60
 
extractValue(@xml,'/*/*')
61
 
b1 b2
62
 
SELECT extractValue(@xml,'/*/*/*');
63
 
extractValue(@xml,'/*/*/*')
64
 
c1
65
 
SELECT extractValue(@xml,'/a/child::*');
66
 
extractValue(@xml,'/a/child::*')
67
 
b1 b2
68
 
SELECT extractValue(@xml,'/a/self::*');
69
 
extractValue(@xml,'/a/self::*')
70
 
a1 a2
71
 
SELECT extractValue(@xml,'/a/descendant::*');
72
 
extractValue(@xml,'/a/descendant::*')
73
 
b1 c1 b2
74
 
SELECT extractValue(@xml,'/a/descendant-or-self::*');
75
 
extractValue(@xml,'/a/descendant-or-self::*')
76
 
a1 b1 c1 b2 a2
77
 
SELECT extractValue(@xml,'/a/attribute::*');
78
 
extractValue(@xml,'/a/attribute::*')
79
 
aa1 aa2
80
 
SELECT extractValue(@xml,'/a/b/c/parent::*');
81
 
extractValue(@xml,'/a/b/c/parent::*')
82
 
b1 b2
83
 
SELECT extractValue(@xml,'/a/b/c/ancestor::*');
84
 
extractValue(@xml,'/a/b/c/ancestor::*')
85
 
a1 b1 b2 a2
86
 
SELECT extractValue(@xml,'/a/b/c/ancestor-or-self::*');
87
 
extractValue(@xml,'/a/b/c/ancestor-or-self::*')
88
 
a1 b1 c1 b2 a2
89
 
SELECT extractValue(@xml,'/descendant-or-self::*');
90
 
extractValue(@xml,'/descendant-or-self::*')
91
 
a1 b1 c1 b2 a2
92
 
SET @xml='<a>a11<b ba="ba11" ba="ba12">b11</b><b ba="ba21" ba="ba22">b21<c>c1</c>b22</b>a12</a>';
93
 
SELECT extractValue(@xml,'/a/b/c/ancestor-or-self::*');
94
 
extractValue(@xml,'/a/b/c/ancestor-or-self::*')
95
 
a11 b21 c1 b22 a12
96
 
SELECT extractValue(@xml,'//@ba');
97
 
extractValue(@xml,'//@ba')
98
 
ba11 ba12 ba21 ba22
99
 
SET @xml='<a><b>b</b><c>c</c></a>';
100
 
SELECT extractValue(@xml,'/a/b');
101
 
extractValue(@xml,'/a/b')
102
 
b
103
 
SELECT extractValue(@xml,'/a/c');
104
 
extractValue(@xml,'/a/c')
105
 
c
106
 
SELECT extractValue(@xml,'/a/child::b');
107
 
extractValue(@xml,'/a/child::b')
108
 
b
109
 
SELECT extractValue(@xml,'/a/child::c');
110
 
extractValue(@xml,'/a/child::c')
111
 
c
112
 
SET @xml='<a><b>b1</b><c>c1</c><b>b2</b><c>c2</c></a>';
113
 
SELECT extractValue(@xml,'/a/b[1]');
114
 
extractValue(@xml,'/a/b[1]')
115
 
b1
116
 
SELECT extractValue(@xml,'/a/b[2]');
117
 
extractValue(@xml,'/a/b[2]')
118
 
b2
119
 
SELECT extractValue(@xml,'/a/c[1]');
120
 
extractValue(@xml,'/a/c[1]')
121
 
c1
122
 
SELECT extractValue(@xml,'/a/c[2]');
123
 
extractValue(@xml,'/a/c[2]')
124
 
c2
125
 
SET @xml='<a><b x="xb1" x="xb2"/><c x="xc1" x="xc2"/></a>';
126
 
SELECT extractValue(@xml,'/a//@x');
127
 
extractValue(@xml,'/a//@x')
128
 
xb1 xb2 xc1 xc2
129
 
SELECT extractValue(@xml,'/a//@x[1]');
130
 
extractValue(@xml,'/a//@x[1]')
131
 
xb1 xc1
132
 
SELECT extractValue(@xml,'/a//@x[2]');
133
 
extractValue(@xml,'/a//@x[2]')
134
 
xb2 xc2
135
 
SET @xml='<a><b>b1</b><b>b2</b><c><b>c1b1</b><b>c1b2</b></c><c><b>c2b1</c></b></a>';
136
 
SELECT extractValue(@xml,'//b[1]');
137
 
extractValue(@xml,'//b[1]')
138
 
b1 c1b1 c2b1
139
 
SELECT extractValue(@xml,'/descendant::b[1]');
140
 
extractValue(@xml,'/descendant::b[1]')
141
 
b1
142
 
SET @xml='<a><b>b1</b><b>b2</b></a>';
143
 
SELECT extractValue(@xml,'/a/b[1+0]');
144
 
extractValue(@xml,'/a/b[1+0]')
145
 
b1
146
 
SELECT extractValue(@xml,'/a/b[1*1]');
147
 
extractValue(@xml,'/a/b[1*1]')
148
 
b1
149
 
SELECT extractValue(@xml,'/a/b[--1]');
150
 
extractValue(@xml,'/a/b[--1]')
151
 
b1
152
 
SELECT extractValue(@xml,'/a/b[2*1-1]');
153
 
extractValue(@xml,'/a/b[2*1-1]')
154
 
b1
155
 
SELECT extractValue(@xml,'/a/b[1+1]');
156
 
extractValue(@xml,'/a/b[1+1]')
157
 
b2
158
 
SELECT extractValue(@xml,'/a/b[1*2]');
159
 
extractValue(@xml,'/a/b[1*2]')
160
 
b2
161
 
SELECT extractValue(@xml,'/a/b[--2]');
162
 
extractValue(@xml,'/a/b[--2]')
163
 
b2
164
 
SELECT extractValue(@xml,'/a/b[1*(3-1)]');
165
 
extractValue(@xml,'/a/b[1*(3-1)]')
166
 
b2
167
 
SELECT extractValue(@xml,'//*[1=1]');
168
 
extractValue(@xml,'//*[1=1]')
169
 
b1 b2
170
 
SELECT extractValue(@xml,'//*[1!=1]');
171
 
extractValue(@xml,'//*[1!=1]')
172
 
 
173
 
SELECT extractValue(@xml,'//*[1>1]');
174
 
extractValue(@xml,'//*[1>1]')
175
 
 
176
 
SELECT extractValue(@xml,'//*[2>1]');
177
 
extractValue(@xml,'//*[2>1]')
178
 
b1 b2
179
 
SELECT extractValue(@xml,'//*[1>2]');
180
 
extractValue(@xml,'//*[1>2]')
181
 
 
182
 
SELECT extractValue(@xml,'//*[1>=1]');
183
 
extractValue(@xml,'//*[1>=1]')
184
 
b1 b2
185
 
SELECT extractValue(@xml,'//*[2>=1]');
186
 
extractValue(@xml,'//*[2>=1]')
187
 
b1 b2
188
 
SELECT extractValue(@xml,'//*[1>=2]');
189
 
extractValue(@xml,'//*[1>=2]')
190
 
 
191
 
SELECT extractValue(@xml,'//*[1<1]');
192
 
extractValue(@xml,'//*[1<1]')
193
 
 
194
 
SELECT extractValue(@xml,'//*[2<1]');
195
 
extractValue(@xml,'//*[2<1]')
196
 
 
197
 
SELECT extractValue(@xml,'//*[1<2]');
198
 
extractValue(@xml,'//*[1<2]')
199
 
b1 b2
200
 
SELECT extractValue(@xml,'//*[1<=1]');
201
 
extractValue(@xml,'//*[1<=1]')
202
 
b1 b2
203
 
SELECT extractValue(@xml,'//*[2<=1]');
204
 
extractValue(@xml,'//*[2<=1]')
205
 
 
206
 
SELECT extractValue(@xml,'//*[1<=2]');
207
 
extractValue(@xml,'//*[1<=2]')
208
 
b1 b2
209
 
SET @xml='<a><b>b11<c>c11</c></b><b>b21<c>c21</c></b></a>';
210
 
SELECT extractValue(@xml,'/a/b[c="c11"]');
211
 
extractValue(@xml,'/a/b[c="c11"]')
212
 
b11
213
 
SELECT extractValue(@xml,'/a/b[c="c21"]');
214
 
extractValue(@xml,'/a/b[c="c21"]')
215
 
b21
216
 
SET @xml='<a><b c="c11">b11</b><b c="c21">b21</b></a>';
217
 
SELECT extractValue(@xml,'/a/b[@c="c11"]');
218
 
extractValue(@xml,'/a/b[@c="c11"]')
219
 
b11
220
 
SELECT extractValue(@xml,'/a/b[@c="c21"]');
221
 
extractValue(@xml,'/a/b[@c="c21"]')
222
 
b21
223
 
SET @xml='<a>a1<b c="c11">b11<d>d11</d></b><b c="c21">b21<d>d21</d></b></a>';
224
 
SELECT extractValue(@xml, '/a/b[@c="c11"]/d');
225
 
extractValue(@xml, '/a/b[@c="c11"]/d')
226
 
d11
227
 
SELECT extractValue(@xml, '/a/b[@c="c21"]/d');
228
 
extractValue(@xml, '/a/b[@c="c21"]/d')
229
 
d21
230
 
SELECT extractValue(@xml, '/a/b[d="d11"]/@c');
231
 
extractValue(@xml, '/a/b[d="d11"]/@c')
232
 
c11
233
 
SELECT extractValue(@xml, '/a/b[d="d21"]/@c');
234
 
extractValue(@xml, '/a/b[d="d21"]/@c')
235
 
c21
236
 
SELECT extractValue(@xml, '/a[b="b11"]');
237
 
extractValue(@xml, '/a[b="b11"]')
238
 
a1
239
 
SELECT extractValue(@xml, '/a[b/@c="c11"]');
240
 
extractValue(@xml, '/a[b/@c="c11"]')
241
 
a1
242
 
SELECT extractValue(@xml, '/a[b/d="d11"]');
243
 
extractValue(@xml, '/a[b/d="d11"]')
244
 
a1
245
 
SELECT extractValue(@xml, '/a[/a/b="b11"]');
246
 
extractValue(@xml, '/a[/a/b="b11"]')
247
 
a1
248
 
SELECT extractValue(@xml, '/a[/a/b/@c="c11"]');
249
 
extractValue(@xml, '/a[/a/b/@c="c11"]')
250
 
a1
251
 
SELECT extractValue(@xml, '/a[/a/b/d="d11"]');
252
 
extractValue(@xml, '/a[/a/b/d="d11"]')
253
 
a1
254
 
SELECT extractValue('<a>a</a>', '/a[false()]');
255
 
extractValue('<a>a</a>', '/a[false()]')
256
 
 
257
 
SELECT extractValue('<a>a</a>', '/a[true()]');
258
 
extractValue('<a>a</a>', '/a[true()]')
259
 
a
260
 
SELECT extractValue('<a>a</a>', '/a[not(false())]');
261
 
extractValue('<a>a</a>', '/a[not(false())]')
262
 
a
263
 
SELECT extractValue('<a>a</a>', '/a[not(true())]');
264
 
extractValue('<a>a</a>', '/a[not(true())]')
265
 
 
266
 
SELECT extractValue('<a>a</a>', '/a[true() and true()]');
267
 
extractValue('<a>a</a>', '/a[true() and true()]')
268
 
a
269
 
SELECT extractValue('<a>a</a>', '/a[true() and false()]');
270
 
extractValue('<a>a</a>', '/a[true() and false()]')
271
 
 
272
 
SELECT extractValue('<a>a</a>', '/a[false()and false()]');
273
 
extractValue('<a>a</a>', '/a[false()and false()]')
274
 
 
275
 
SELECT extractValue('<a>a</a>', '/a[false()and true()]');
276
 
extractValue('<a>a</a>', '/a[false()and true()]')
277
 
 
278
 
SELECT extractValue('<a>a</a>', '/a[true() or true()]');
279
 
extractValue('<a>a</a>', '/a[true() or true()]')
280
 
a
281
 
SELECT extractValue('<a>a</a>', '/a[true() or false()]');
282
 
extractValue('<a>a</a>', '/a[true() or false()]')
283
 
a
284
 
SELECT extractValue('<a>a</a>', '/a[false()or false()]');
285
 
extractValue('<a>a</a>', '/a[false()or false()]')
286
 
 
287
 
SELECT extractValue('<a>a</a>', '/a[false()or true()]');
288
 
extractValue('<a>a</a>', '/a[false()or true()]')
289
 
a
290
 
SET @xml='<a>ab<b c="c" c="e">b1</b><b c="d">b2</b><b c="f" c="e">b3</b></a>';
291
 
select extractValue(@xml,'/a/b[@c="c"]');
292
 
extractValue(@xml,'/a/b[@c="c"]')
293
 
b1
294
 
select extractValue(@xml,'/a/b[@c="d"]');
295
 
extractValue(@xml,'/a/b[@c="d"]')
296
 
b2
297
 
select extractValue(@xml,'/a/b[@c="e"]');
298
 
extractValue(@xml,'/a/b[@c="e"]')
299
 
b1 b3
300
 
select extractValue(@xml,'/a/b[not(@c="e")]');
301
 
extractValue(@xml,'/a/b[not(@c="e")]')
302
 
b2
303
 
select extractValue(@xml,'/a/b[@c!="e"]');
304
 
extractValue(@xml,'/a/b[@c!="e"]')
305
 
b1 b2 b3
306
 
select extractValue(@xml,'/a/b[@c="c" or @c="d"]');
307
 
extractValue(@xml,'/a/b[@c="c" or @c="d"]')
308
 
b1 b2
309
 
select extractValue(@xml,'/a/b[@c="c" and @c="e"]');
310
 
extractValue(@xml,'/a/b[@c="c" and @c="e"]')
311
 
b1
312
 
SET @xml='<a><b c="c" d="d">b1</b><b d="d" e="e">b2</b></a>';
313
 
select extractValue(@xml,'/a/b[@c]');
314
 
extractValue(@xml,'/a/b[@c]')
315
 
b1
316
 
select extractValue(@xml,'/a/b[@d]');
317
 
extractValue(@xml,'/a/b[@d]')
318
 
b1 b2
319
 
select extractValue(@xml,'/a/b[@e]');
320
 
extractValue(@xml,'/a/b[@e]')
321
 
b2
322
 
select extractValue(@xml,'/a/b[not(@c)]');
323
 
extractValue(@xml,'/a/b[not(@c)]')
324
 
b2
325
 
select extractValue(@xml,'/a/b[not(@d)]');
326
 
extractValue(@xml,'/a/b[not(@d)]')
327
 
 
328
 
select extractValue(@xml,'/a/b[not(@e)]');
329
 
extractValue(@xml,'/a/b[not(@e)]')
330
 
b1
331
 
select extractValue(@xml, '/a/b[boolean(@c) or boolean(@d)]');
332
 
extractValue(@xml, '/a/b[boolean(@c) or boolean(@d)]')
333
 
b1 b2
334
 
select extractValue(@xml, '/a/b[boolean(@c) or boolean(@e)]');
335
 
extractValue(@xml, '/a/b[boolean(@c) or boolean(@e)]')
336
 
b1 b2
337
 
select extractValue(@xml, '/a/b[boolean(@d) or boolean(@e)]');
338
 
extractValue(@xml, '/a/b[boolean(@d) or boolean(@e)]')
339
 
b1 b2
340
 
select extractValue(@xml, '/a/b[boolean(@c) and boolean(@d)]');
341
 
extractValue(@xml, '/a/b[boolean(@c) and boolean(@d)]')
342
 
b1
343
 
select extractValue(@xml, '/a/b[boolean(@c) and boolean(@e)]');
344
 
extractValue(@xml, '/a/b[boolean(@c) and boolean(@e)]')
345
 
 
346
 
select extractValue(@xml, '/a/b[boolean(@d) and boolean(@e)]');
347
 
extractValue(@xml, '/a/b[boolean(@d) and boolean(@e)]')
348
 
b2
349
 
select extractValue(@xml, '/a/b[@c or @d]');
350
 
extractValue(@xml, '/a/b[@c or @d]')
351
 
b1 b2
352
 
select extractValue(@xml, '/a/b[@c or @e]');
353
 
extractValue(@xml, '/a/b[@c or @e]')
354
 
b1 b2
355
 
select extractValue(@xml, '/a/b[@d or @e]');
356
 
extractValue(@xml, '/a/b[@d or @e]')
357
 
b1 b2
358
 
select extractValue(@xml, '/a/b[@c and @d]');
359
 
extractValue(@xml, '/a/b[@c and @d]')
360
 
b1
361
 
select extractValue(@xml, '/a/b[@c and @e]');
362
 
extractValue(@xml, '/a/b[@c and @e]')
363
 
 
364
 
select extractValue(@xml, '/a/b[@d and @e]');
365
 
extractValue(@xml, '/a/b[@d and @e]')
366
 
b2
367
 
SET @xml='<a><b c="c">b1</b><b>b2</b></a>';
368
 
SELECT extractValue(@xml,'/a/b[@*]');
369
 
extractValue(@xml,'/a/b[@*]')
370
 
b1
371
 
SELECT extractValue(@xml,'/a/b[not(@*)]');
372
 
extractValue(@xml,'/a/b[not(@*)]')
373
 
b2
374
 
SELECT extractValue('<a>a</a>', '/a[ceiling(3.1)=4]');
375
 
extractValue('<a>a</a>', '/a[ceiling(3.1)=4]')
376
 
a
377
 
SELECT extractValue('<a>a</a>', '/a[floor(3.1)=3]');
378
 
extractValue('<a>a</a>', '/a[floor(3.1)=3]')
379
 
a
380
 
SELECT extractValue('<a>a</a>', '/a[round(3.1)=3]');
381
 
extractValue('<a>a</a>', '/a[round(3.1)=3]')
382
 
a
383
 
SELECT extractValue('<a>a</a>', '/a[round(3.8)=4]');
384
 
extractValue('<a>a</a>', '/a[round(3.8)=4]')
385
 
a
386
 
SELECT extractValue('<a><b>b</b><c>c</c></a>', '/a/b | /a/c');
387
 
extractValue('<a><b>b</b><c>c</c></a>', '/a/b | /a/c')
388
 
b c
389
 
select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=1]');
390
 
extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=1]')
391
 
b1
392
 
select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=2]');
393
 
extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=2]')
394
 
b2
395
 
select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=3]');
396
 
extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=3]')
397
 
b3
398
 
select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[1=position()]');
399
 
extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[1=position()]')
400
 
b1
401
 
select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[2=position()]');
402
 
extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[2=position()]')
403
 
b2
404
 
select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[3=position()]');
405
 
extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[3=position()]')
406
 
b3
407
 
select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[2>=position()]');
408
 
extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[2>=position()]')
409
 
b1 b2
410
 
select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[2<=position()]');
411
 
extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[2<=position()]')
412
 
b2 b3
413
 
select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=3 or position()=2]');
414
 
extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=3 or position()=2]')
415
 
b2 b3
416
 
SELECT extractValue('<a>a<b>a1<c>c1</c></b><b>a2</b></a>','/a/b[count(c)=0]');
417
 
extractValue('<a>a<b>a1<c>c1</c></b><b>a2</b></a>','/a/b[count(c)=0]')
418
 
a2
419
 
SELECT extractValue('<a>a<b>a1<c>c1</c></b><b>a2</b></a>','/a/b[count(c)=1]');
420
 
extractValue('<a>a<b>a1<c>c1</c></b><b>a2</b></a>','/a/b[count(c)=1]')
421
 
a1
422
 
select extractValue('<a>a1<b ba="1" ba="2">b1</b><b>b2</b>4</a>','/a/b[sum(@ba)=3]');
423
 
extractValue('<a>a1<b ba="1" ba="2">b1</b><b>b2</b>4</a>','/a/b[sum(@ba)=3]')
424
 
b1
425
 
select extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[1]');
426
 
extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[1]')
427
 
b1
428
 
select extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[boolean(1)]');
429
 
extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[boolean(1)]')
430
 
b1 b2
431
 
select extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[true()]');
432
 
extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[true()]')
433
 
b1 b2
434
 
select extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[number(true())]');
435
 
extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[number(true())]')
436
 
b1
437
 
select extractValue('<a>ab</a>','/a[contains("abc","b")]');
438
 
extractValue('<a>ab</a>','/a[contains("abc","b")]')
439
 
ab
440
 
select extractValue('<a>ab</a>','/a[contains(.,"a")]');
441
 
extractValue('<a>ab</a>','/a[contains(.,"a")]')
442
 
ab
443
 
select extractValue('<a>ab</a>','/a[contains(.,"b")]');
444
 
extractValue('<a>ab</a>','/a[contains(.,"b")]')
445
 
ab
446
 
select extractValue('<a>ab</a>','/a[contains(.,"c")]');
447
 
extractValue('<a>ab</a>','/a[contains(.,"c")]')
448
 
 
449
 
select extractValue('<a b="1">ab</a>','/a[concat(@b,"2")="12"]');
450
 
extractValue('<a b="1">ab</a>','/a[concat(@b,"2")="12"]')
451
 
ab
452
 
SET @xml='<a b="11" b="12" b="21" b="22">ab</a>';
453
 
select extractValue(@xml, '/a/@b[substring(.,2)="1"]');
454
 
extractValue(@xml, '/a/@b[substring(.,2)="1"]')
455
 
11 21
456
 
select extractValue(@xml, '/a/@b[substring(.,2)="2"]');
457
 
extractValue(@xml, '/a/@b[substring(.,2)="2"]')
458
 
12 22
459
 
select extractValue(@xml, '/a/@b[substring(.,1,1)="1"]');
460
 
extractValue(@xml, '/a/@b[substring(.,1,1)="1"]')
461
 
11 12
462
 
select extractValue(@xml, '/a/@b[substring(.,1,1)="2"]');
463
 
extractValue(@xml, '/a/@b[substring(.,1,1)="2"]')
464
 
21 22
465
 
select extractValue(@xml, '/a/@b[substring(.,2,1)="1"]');
466
 
extractValue(@xml, '/a/@b[substring(.,2,1)="1"]')
467
 
11 21
468
 
select extractValue(@xml, '/a/@b[substring(.,2,1)="2"]');
469
 
extractValue(@xml, '/a/@b[substring(.,2,1)="2"]')
470
 
12 22
471
 
SET @xml='<a><b>b1</b><b>b2</b></a>';
472
 
SELECT extractValue(@xml, '/a/b[string-length("x")=1]');
473
 
extractValue(@xml, '/a/b[string-length("x")=1]')
474
 
b1 b2
475
 
SELECT extractValue(@xml, '/a/b[string-length("xx")=2]');
476
 
extractValue(@xml, '/a/b[string-length("xx")=2]')
477
 
b1 b2
478
 
SELECT extractValue(@xml, '/a/b[string-length("xxx")=2]');
479
 
extractValue(@xml, '/a/b[string-length("xxx")=2]')
480
 
 
481
 
SELECT extractValue(@xml, '/a/b[string-length("x")]');
482
 
extractValue(@xml, '/a/b[string-length("x")]')
483
 
b1
484
 
SELECT extractValue(@xml, '/a/b[string-length("xx")]');
485
 
extractValue(@xml, '/a/b[string-length("xx")]')
486
 
b2
487
 
SELECT extractValue(@xml, '/a/b[string-length()]');
488
 
extractValue(@xml, '/a/b[string-length()]')
489
 
b2
490
 
SELECT extractValue(@xml, 'string-length()');
491
 
ERROR HY000: XPATH syntax error: ''
492
 
SELECT extractValue(@xml, 'string-length("x")');
493
 
extractValue(@xml, 'string-length("x")')
494
 
1
495
 
SET @xml='<a b="b11" b="b12" b="b21" b="22"/>';
496
 
select extractValue(@xml,'/a/@b');
497
 
extractValue(@xml,'/a/@b')
498
 
b11 b12 b21 22
499
 
select extractValue(@xml,'/a/@b[contains(.,"1")]');
500
 
extractValue(@xml,'/a/@b[contains(.,"1")]')
501
 
b11 b12 b21
502
 
select extractValue(@xml,'/a/@b[contains(.,"1")][contains(.,"2")]');
503
 
extractValue(@xml,'/a/@b[contains(.,"1")][contains(.,"2")]')
504
 
b12 b21
505
 
select extractValue(@xml,'/a/@b[contains(.,"1")][contains(.,"2")][2]');
506
 
extractValue(@xml,'/a/@b[contains(.,"1")][contains(.,"2")][2]')
507
 
b21
508
 
SET @xml='<a>a1<b>b1<c>c1</c>b2</b>a2</a>';
509
 
select UpdateXML('<a>a1<b>b1<c>c1</c>b2</b>a2</a>','/a/b/c','+++++++++');
510
 
UpdateXML('<a>a1<b>b1<c>c1</c>b2</b>a2</a>','/a/b/c','+++++++++')
511
 
<a>a1<b>b1+++++++++b2</b>a2</a>
512
 
select UpdateXML('<a>a1<b>b1<c>c1</c>b2</b>a2</a>','/a/b/c','<c1>+++++++++</c1>');
513
 
UpdateXML('<a>a1<b>b1<c>c1</c>b2</b>a2</a>','/a/b/c','<c1>+++++++++</c1>')
514
 
<a>a1<b>b1<c1>+++++++++</c1>b2</b>a2</a>
515
 
select UpdateXML('<a>a1<b>b1<c>c1</c>b2</b>a2</a>','/a/b/c','<c1/>');
516
 
UpdateXML('<a>a1<b>b1<c>c1</c>b2</b>a2</a>','/a/b/c','<c1/>')
517
 
<a>a1<b>b1<c1/>b2</b>a2</a>
518
 
SET @xml='<a><b>bb</b></a>';
519
 
select UpdateXML(@xml, '/a/b', '<b>ccc</b>');
520
 
UpdateXML(@xml, '/a/b', '<b>ccc</b>')
521
 
<a><b>ccc</b></a>
522
 
SET @xml='<a aa1="aa1" aa2="aa2"><b bb1="bb1" bb2="bb2">bb</b></a>';
523
 
select UpdateXML(@xml, '/a/b', '<b>ccc</b>');
524
 
UpdateXML(@xml, '/a/b', '<b>ccc</b>')
525
 
<a aa1="aa1" aa2="aa2"><b>ccc</b></a>
526
 
select UpdateXML(@xml, '/a/@aa1', '');
527
 
UpdateXML(@xml, '/a/@aa1', '')
528
 
<a  aa2="aa2"><b bb1="bb1" bb2="bb2">bb</b></a>
529
 
select UpdateXML(@xml, '/a/@aa1', 'aa3="aa3"');
530
 
UpdateXML(@xml, '/a/@aa1', 'aa3="aa3"')
531
 
<a aa3="aa3" aa2="aa2"><b bb1="bb1" bb2="bb2">bb</b></a>
532
 
select UpdateXML(@xml, '/a/@aa2', '');
533
 
UpdateXML(@xml, '/a/@aa2', '')
534
 
<a aa1="aa1" ><b bb1="bb1" bb2="bb2">bb</b></a>
535
 
select UpdateXML(@xml, '/a/@aa2', 'aa3="aa3"');
536
 
UpdateXML(@xml, '/a/@aa2', 'aa3="aa3"')
537
 
<a aa1="aa1" aa3="aa3"><b bb1="bb1" bb2="bb2">bb</b></a>
538
 
select UpdateXML(@xml, '/a/b/@bb1', '');
539
 
UpdateXML(@xml, '/a/b/@bb1', '')
540
 
<a aa1="aa1" aa2="aa2"><b  bb2="bb2">bb</b></a>
541
 
select UpdateXML(@xml, '/a/b/@bb1', 'bb3="bb3"');
542
 
UpdateXML(@xml, '/a/b/@bb1', 'bb3="bb3"')
543
 
<a aa1="aa1" aa2="aa2"><b bb3="bb3" bb2="bb2">bb</b></a>
544
 
select UpdateXML(@xml, '/a/b/@bb2', '');
545
 
UpdateXML(@xml, '/a/b/@bb2', '')
546
 
<a aa1="aa1" aa2="aa2"><b bb1="bb1" >bb</b></a>
547
 
select UpdateXML(@xml, '/a/b/@bb2', 'bb3="bb3"');
548
 
UpdateXML(@xml, '/a/b/@bb2', 'bb3="bb3"')
549
 
<a aa1="aa1" aa2="aa2"><b bb1="bb1" bb3="bb3">bb</b></a>
550
 
select updatexml('<div><div><span>1</span><span>2</span></div></div>',
551
 
'/','<tr><td>1</td><td>2</td></tr>') as upd1;
552
 
upd1
553
 
<tr><td>1</td><td>2</td></tr>
554
 
select updatexml('', '/', '') as upd2;
555
 
upd2
556
 
 
557
 
SET @xml= '<order><clerk>lesser wombat</clerk></order>';
558
 
select extractvalue(@xml,'order/clerk');
559
 
extractvalue(@xml,'order/clerk')
560
 
lesser wombat
561
 
select extractvalue(@xml,'/order/clerk');
562
 
extractvalue(@xml,'/order/clerk')
563
 
lesser wombat
564
 
select extractvalue('<a><b>B</b></a>','/a|/b');
565
 
extractvalue('<a><b>B</b></a>','/a|/b')
566
 
 
567
 
select extractvalue('<a><b>B</b></a>','/a|b');
568
 
extractvalue('<a><b>B</b></a>','/a|b')
569
 
 
570
 
select extractvalue('<a>a<b>B</b></a>','/a|/b');
571
 
extractvalue('<a>a<b>B</b></a>','/a|/b')
572
 
a
573
 
select extractvalue('<a>a<b>B</b></a>','/a|b');
574
 
extractvalue('<a>a<b>B</b></a>','/a|b')
575
 
a
576
 
select extractvalue('<a>a<b>B</b></a>','a|/b');
577
 
extractvalue('<a>a<b>B</b></a>','a|/b')
578
 
a
579
 
select extractvalue('<a>A</a>','/<a>');
580
 
ERROR HY000: XPATH error: comparison of two nodesets is not supported: '<a>'
581
 
select extractvalue('<a><b>b</b><b!>b!</b!></a>','//b!');
582
 
ERROR HY000: XPATH syntax error: '!'
583
 
select extractvalue('<a>A<b>B<c>C</c></b></a>','/a/descendant::*');
584
 
extractvalue('<a>A<b>B<c>C</c></b></a>','/a/descendant::*')
585
 
B C
586
 
select extractvalue('<a>A<b>B<c>C</c></b></a>','/a/self::*');
587
 
extractvalue('<a>A<b>B<c>C</c></b></a>','/a/self::*')
588
 
A
589
 
select extractvalue('<a>A<b>B<c>C</c></b></a>','/a/descendant-or-self::*');
590
 
extractvalue('<a>A<b>B<c>C</c></b></a>','/a/descendant-or-self::*')
591
 
A B C
592
 
select extractvalue('<A_B>A</A_B>','/A_B');
593
 
extractvalue('<A_B>A</A_B>','/A_B')
594
 
A
595
 
select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[position()]');
596
 
extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[position()]')
597
 
B1 B2
598
 
select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=last()]');
599
 
extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=last()]')
600
 
B1 B2
601
 
select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()]');
602
 
extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()]')
603
 
B2
604
 
select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()-1]');
605
 
extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()-1]')
606
 
B1
607
 
select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()=1]');
608
 
extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()=1]')
609
 
 
610
 
select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()=2]');
611
 
extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()=2]')
612
 
B1 B2
613
 
select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()=position()]');
614
 
extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()=position()]')
615
 
B2
616
 
select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)]');
617
 
extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)]')
618
 
B2
619
 
select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)-1]');
620
 
extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)-1]')
621
 
B1
622
 
select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=1]');
623
 
extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=1]')
624
 
 
625
 
select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=2]');
626
 
extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=2]')
627
 
B1 B2
628
 
select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=position()]');
629
 
extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=position()]')
630
 
B2
631
 
select extractvalue('<a>Jack</a>','/a[contains(../a,"J")]');
632
 
extractvalue('<a>Jack</a>','/a[contains(../a,"J")]')
633
 
Jack
634
 
select extractvalue('<a>Jack</a>','/a[contains(../a,"j")]');
635
 
extractvalue('<a>Jack</a>','/a[contains(../a,"j")]')
636
 
Jack
637
 
select extractvalue('<a>Jack</a>','/a[contains(../a,"j")]' collate latin1_bin);
638
 
extractvalue('<a>Jack</a>','/a[contains(../a,"j")]' collate latin1_bin)
639
 
 
640
 
select extractvalue('<a>Jack</a>' collate latin1_bin,'/a[contains(../a,"j")]');
641
 
extractvalue('<a>Jack</a>' collate latin1_bin,'/a[contains(../a,"j")]')
642
 
 
643
 
select ExtractValue('<tag1><![CDATA[test]]></tag1>','/tag1');
644
 
ExtractValue('<tag1><![CDATA[test]]></tag1>','/tag1')
645
 
test
646
 
select extractValue('<a>a','/a');
647
 
extractValue('<a>a','/a')
648
 
NULL
649
 
Warnings:
650
 
Warning 1525    Incorrect XML value: 'parse error at line 1 pos 5: unexpected END-OF-INPUT'
651
 
select extractValue('<a>a<','/a');
652
 
extractValue('<a>a<','/a')
653
 
NULL
654
 
Warnings:
655
 
Warning 1525    Incorrect XML value: 'parse error at line 1 pos 6: END-OF-INPUT unexpected (ident or '/' wanted)'
656
 
select extractValue('<a>a</','/a');
657
 
extractValue('<a>a</','/a')
658
 
NULL
659
 
Warnings:
660
 
Warning 1525    Incorrect XML value: 'parse error at line 1 pos 7: END-OF-INPUT unexpected (ident wanted)'
661
 
select extractValue('<a>a</a','/a');
662
 
extractValue('<a>a</a','/a')
663
 
NULL
664
 
Warnings:
665
 
Warning 1525    Incorrect XML value: 'parse error at line 1 pos 8: END-OF-INPUT unexpected ('>' wanted)'
666
 
select extractValue('<a>a</a></b>','/a');
667
 
extractValue('<a>a</a></b>','/a')
668
 
NULL
669
 
Warnings:
670
 
Warning 1525    Incorrect XML value: 'parse error at line 1 pos 12: '</b>' unexpected (END-OF-INPUT wanted)'
671
 
select extractValue('<a b=>a</a>','/a');
672
 
extractValue('<a b=>a</a>','/a')
673
 
NULL
674
 
Warnings:
675
 
Warning 1525    Incorrect XML value: 'parse error at line 1 pos 7: '>' unexpected (ident or string wanted)'
676
 
select extractValue('<e>1</e>','position()');
677
 
ERROR HY000: XPATH syntax error: ''
678
 
select extractValue('<e>1</e>','last()');
679
 
ERROR HY000: XPATH syntax error: ''
680
 
select extractValue('<e><a>1</a></e>','/e/');
681
 
ERROR HY000: XPATH syntax error: ''
682
 
set names utf8;
683
 
select extractValue('<Ă‘><r>r</r></Ă‘>','/Ă‘/r');
684
 
extractValue('<Ă‘><r>r</r></Ă‘>','/Ă‘/r')
685
 
r
686
 
select extractValue('<r><Ă‘>Ă‘</Ă‘></r>','/r/Ă‘');
687
 
extractValue('<r><Ă‘>Ă‘</Ă‘></r>','/r/Ă‘')
688
 
Ă‘
689
 
select extractValue('<Ă‘ r="r"/>','/Ă‘/@r');
690
 
extractValue('<Ă‘ r="r"/>','/Ă‘/@r')
691
 
r
692
 
select extractValue('<r Ă‘="Ă‘"/>','/r/@Ă‘');
693
 
extractValue('<r Ă‘="Ă‘"/>','/r/@Ă‘')
694
 
Ă‘
695
 
DROP PROCEDURE IF EXISTS p2;
696
 
CREATE PROCEDURE p2 ()
697
 
BEGIN
698
 
DECLARE p LONGTEXT CHARACTER SET UTF8 DEFAULT '<Ă‘><r>A</r></Ă‘>';
699
 
SELECT EXTRACTVALUE(p,'/Ă‘/r');
700
 
END//
701
 
CALL p2();
702
 
EXTRACTVALUE(p,'/Ă‘/r')
703
 
A
704
 
DROP PROCEDURE p2;
705
 
select extractValue('<ns:element xmlns:ns="myns"/>','count(ns:element)');
706
 
extractValue('<ns:element xmlns:ns="myns"/>','count(ns:element)')
707
 
1
708
 
select extractValue('<ns:element xmlns:ns="myns">a</ns:element>','/ns:element');
709
 
extractValue('<ns:element xmlns:ns="myns">a</ns:element>','/ns:element')
710
 
a
711
 
select extractValue('<ns:element xmlns:ns="myns">a</ns:element>','/ns:element/@xmlns:ns');
712
 
extractValue('<ns:element xmlns:ns="myns">a</ns:element>','/ns:element/@xmlns:ns')
713
 
myns
714
 
select extractValue('<foo><foo.bar>Data</foo.bar><something>Otherdata</something></foo>','/foo/foo.bar');
715
 
extractValue('<foo><foo.bar>Data</foo.bar><something>Otherdata</something></foo>','/foo/foo.bar')
716
 
Data
717
 
select extractValue('<foo><foo.bar>Data</foo.bar><something>Otherdata</something></foo>','/foo/something');
718
 
extractValue('<foo><foo.bar>Data</foo.bar><something>Otherdata</something></foo>','/foo/something')
719
 
Otherdata
720
 
select extractValue('<zot><tim0><01>10:39:15</01><02>140</02></tim0></zot>','/zot/tim0/02');
721
 
ERROR HY000: XPATH syntax error: '02'
722
 
select extractValue('<zot><tim0><01>10:39:15</01><02>140</02></tim0></zot>','//*');
723
 
extractValue('<zot><tim0><01>10:39:15</01><02>140</02></tim0></zot>','//*')
724
 
NULL
725
 
Warnings:
726
 
Warning 1525    Incorrect XML value: 'parse error at line 1 pos 13: unknown token unexpected (ident or '/' wanted)'
727
 
select extractValue('<.>test</.>','//*');
728
 
extractValue('<.>test</.>','//*')
729
 
NULL
730
 
Warnings:
731
 
Warning 1525    Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)'
732
 
select extractValue('<->test</->','//*');
733
 
extractValue('<->test</->','//*')
734
 
NULL
735
 
Warnings:
736
 
Warning 1525    Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)'
737
 
select extractValue('<:>test</:>','//*');
738
 
extractValue('<:>test</:>','//*')
739
 
test
740
 
select extractValue('<_>test</_>','//*');
741
 
extractValue('<_>test</_>','//*')
742
 
test
743
 
select extractValue('<x.-_:>test</x.-_:>','//*');
744
 
extractValue('<x.-_:>test</x.-_:>','//*')
745
 
test
746
 
set @xml= "<entry><id>pt10</id><pt>10</pt></entry><entry><id>pt50</id><pt>50</pt></entry>";
747
 
select ExtractValue(@xml, "/entry[(pt=10)]/id");
748
 
ExtractValue(@xml, "/entry[(pt=10)]/id")
749
 
pt10
750
 
select ExtractValue(@xml, "/entry[(pt!=10)]/id");
751
 
ExtractValue(@xml, "/entry[(pt!=10)]/id")
752
 
pt50
753
 
select ExtractValue(@xml, "/entry[(pt<10)]/id");
754
 
ExtractValue(@xml, "/entry[(pt<10)]/id")
755
 
 
756
 
select ExtractValue(@xml, "/entry[(pt<=10)]/id");
757
 
ExtractValue(@xml, "/entry[(pt<=10)]/id")
758
 
pt10
759
 
select ExtractValue(@xml, "/entry[(pt>10)]/id");
760
 
ExtractValue(@xml, "/entry[(pt>10)]/id")
761
 
pt50
762
 
select ExtractValue(@xml, "/entry[(pt>=10)]/id");
763
 
ExtractValue(@xml, "/entry[(pt>=10)]/id")
764
 
pt10 pt50
765
 
select ExtractValue(@xml, "/entry[(pt=50)]/id");
766
 
ExtractValue(@xml, "/entry[(pt=50)]/id")
767
 
pt50
768
 
select ExtractValue(@xml, "/entry[(pt!=50)]/id");
769
 
ExtractValue(@xml, "/entry[(pt!=50)]/id")
770
 
pt10
771
 
select ExtractValue(@xml, "/entry[(pt<50)]/id");
772
 
ExtractValue(@xml, "/entry[(pt<50)]/id")
773
 
pt10
774
 
select ExtractValue(@xml, "/entry[(pt<=50)]/id");
775
 
ExtractValue(@xml, "/entry[(pt<=50)]/id")
776
 
pt10 pt50
777
 
select ExtractValue(@xml, "/entry[(pt>50)]/id");
778
 
ExtractValue(@xml, "/entry[(pt>50)]/id")
779
 
 
780
 
select ExtractValue(@xml, "/entry[(pt>=50)]/id");
781
 
ExtractValue(@xml, "/entry[(pt>=50)]/id")
782
 
pt50
783
 
select ExtractValue(@xml, "/entry[(10=pt)]/id");
784
 
ExtractValue(@xml, "/entry[(10=pt)]/id")
785
 
pt10
786
 
select ExtractValue(@xml, "/entry[(10!=pt)]/id");
787
 
ExtractValue(@xml, "/entry[(10!=pt)]/id")
788
 
pt50
789
 
select ExtractValue(@xml, "/entry[(10>pt)]/id");
790
 
ExtractValue(@xml, "/entry[(10>pt)]/id")
791
 
 
792
 
select ExtractValue(@xml, "/entry[(10>=pt)]/id");
793
 
ExtractValue(@xml, "/entry[(10>=pt)]/id")
794
 
pt10
795
 
select ExtractValue(@xml, "/entry[(10<pt)]/id");
796
 
ExtractValue(@xml, "/entry[(10<pt)]/id")
797
 
pt50
798
 
select ExtractValue(@xml, "/entry[(10<=pt)]/id");
799
 
ExtractValue(@xml, "/entry[(10<=pt)]/id")
800
 
pt10 pt50
801
 
select ExtractValue(@xml, "/entry[(50=pt)]/id");
802
 
ExtractValue(@xml, "/entry[(50=pt)]/id")
803
 
pt50
804
 
select ExtractValue(@xml, "/entry[(50!=pt)]/id");
805
 
ExtractValue(@xml, "/entry[(50!=pt)]/id")
806
 
pt10
807
 
select ExtractValue(@xml, "/entry[(50>pt)]/id");
808
 
ExtractValue(@xml, "/entry[(50>pt)]/id")
809
 
pt10
810
 
select ExtractValue(@xml, "/entry[(50>=pt)]/id");
811
 
ExtractValue(@xml, "/entry[(50>=pt)]/id")
812
 
pt10 pt50
813
 
select ExtractValue(@xml, "/entry[(50<pt)]/id");
814
 
ExtractValue(@xml, "/entry[(50<pt)]/id")
815
 
 
816
 
select ExtractValue(@xml, "/entry[(50<=pt)]/id");
817
 
ExtractValue(@xml, "/entry[(50<=pt)]/id")
818
 
pt50
819
 
select ExtractValue('<a><b><Text>test</Text></b></a>','/a/b/Text');
820
 
ExtractValue('<a><b><Text>test</Text></b></a>','/a/b/Text')
821
 
test
822
 
select ExtractValue('<a><b><comment>test</comment></b></a>','/a/b/comment');
823
 
ExtractValue('<a><b><comment>test</comment></b></a>','/a/b/comment')
824
 
test
825
 
select ExtractValue('<a><b><node>test</node></b></a>','/a/b/node');
826
 
ExtractValue('<a><b><node>test</node></b></a>','/a/b/node')
827
 
test
828
 
select ExtractValue('<a><b><processing-instruction>test</processing-instruction></b></a>','/a/b/processing-instruction');
829
 
ExtractValue('<a><b><processing-instruction>test</processing-instruction></b></a>','/a/b/processing-instruction')
830
 
test
831
 
select ExtractValue('<a><and>test</and></a>', '/a/and');
832
 
ExtractValue('<a><and>test</and></a>', '/a/and')
833
 
test
834
 
select ExtractValue('<a><or>test</or></a>', '/a/or');
835
 
ExtractValue('<a><or>test</or></a>', '/a/or')
836
 
test
837
 
select ExtractValue('<a><mod>test</mod></a>', '/a/mod');
838
 
ExtractValue('<a><mod>test</mod></a>', '/a/mod')
839
 
test
840
 
select ExtractValue('<a><div>test</div></a>', '/a/div');
841
 
ExtractValue('<a><div>test</div></a>', '/a/div')
842
 
test
843
 
select ExtractValue('<a><and:and>test</and:and></a>', '/a/and:and');
844
 
ExtractValue('<a><and:and>test</and:and></a>', '/a/and:and')
845
 
test
846
 
select ExtractValue('<a><or:or>test</or:or></a>', '/a/or:or');
847
 
ExtractValue('<a><or:or>test</or:or></a>', '/a/or:or')
848
 
test
849
 
select ExtractValue('<a><mod:mod>test</mod:mod></a>', '/a/mod:mod');
850
 
ExtractValue('<a><mod:mod>test</mod:mod></a>', '/a/mod:mod')
851
 
test
852
 
select ExtractValue('<a><div:div>test</div:div></a>', '/a/div:div');
853
 
ExtractValue('<a><div:div>test</div:div></a>', '/a/div:div')
854
 
test
855
 
select ExtractValue('<a><ancestor>test</ancestor></a>', '/a/ancestor');
856
 
ExtractValue('<a><ancestor>test</ancestor></a>', '/a/ancestor')
857
 
test
858
 
select ExtractValue('<a><ancestor-or-self>test</ancestor-or-self></a>', '/a/ancestor-or-self');
859
 
ExtractValue('<a><ancestor-or-self>test</ancestor-or-self></a>', '/a/ancestor-or-self')
860
 
test
861
 
select ExtractValue('<a><attribute>test</attribute></a>', '/a/attribute');
862
 
ExtractValue('<a><attribute>test</attribute></a>', '/a/attribute')
863
 
test
864
 
select ExtractValue('<a><child>test</child></a>', '/a/child');
865
 
ExtractValue('<a><child>test</child></a>', '/a/child')
866
 
test
867
 
select ExtractValue('<a><descendant>test</descendant></a>', '/a/descendant');
868
 
ExtractValue('<a><descendant>test</descendant></a>', '/a/descendant')
869
 
test
870
 
select ExtractValue('<a><descendant-or-self>test</descendant-or-self></a>', '/a/descendant-or-self');
871
 
ExtractValue('<a><descendant-or-self>test</descendant-or-self></a>', '/a/descendant-or-self')
872
 
test
873
 
select ExtractValue('<a><following>test</following></a>', '/a/following');
874
 
ExtractValue('<a><following>test</following></a>', '/a/following')
875
 
test
876
 
select ExtractValue('<a><following-sibling>test</following-sibling></a>', '/a/following-sibling');
877
 
ExtractValue('<a><following-sibling>test</following-sibling></a>', '/a/following-sibling')
878
 
test
879
 
select ExtractValue('<a><namespace>test</namespace></a>', '/a/namespace');
880
 
ExtractValue('<a><namespace>test</namespace></a>', '/a/namespace')
881
 
test
882
 
select ExtractValue('<a><parent>test</parent></a>', '/a/parent');
883
 
ExtractValue('<a><parent>test</parent></a>', '/a/parent')
884
 
test
885
 
select ExtractValue('<a><preceding>test</preceding></a>', '/a/preceding');
886
 
ExtractValue('<a><preceding>test</preceding></a>', '/a/preceding')
887
 
test
888
 
select ExtractValue('<a><preceding-sibling>test</preceding-sibling></a>', '/a/preceding-sibling');
889
 
ExtractValue('<a><preceding-sibling>test</preceding-sibling></a>', '/a/preceding-sibling')
890
 
test
891
 
select ExtractValue('<a><self>test</self></a>', '/a/self');
892
 
ExtractValue('<a><self>test</self></a>', '/a/self')
893
 
test
894
 
set @i=1;
895
 
select ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]');
896
 
ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]')
897
 
b1
898
 
set @i=2;
899
 
select ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]');
900
 
ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]')
901
 
b2
902
 
set @i=NULL;
903
 
select ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]');
904
 
ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]')
905
 
 
906
 
CREATE PROCEDURE spxml(xml VARCHAR(128))
907
 
BEGIN
908
 
DECLARE c INT;
909
 
DECLARE i INT DEFAULT 1;
910
 
SET c= ExtractValue(xml,'count(/a/b)');
911
 
SET @i= c;
912
 
WHILE i <= c DO
913
 
BEGIN
914
 
SELECT i, @i, ExtractValue(xml,'/a/b[$i]'), ExtractValue(xml,'/a/b[$@i]');
915
 
SET i= i + 1;
916
 
SET @i= @i - 1;
917
 
END;
918
 
END WHILE;
919
 
END|
920
 
call spxml('<a><b>b1</b><b>b2</b><b>b3</b></a>');
921
 
i       @i      ExtractValue(xml,'/a/b[$i]')    ExtractValue(xml,'/a/b[$@i]')
922
 
1       3       b1      b3
923
 
i       @i      ExtractValue(xml,'/a/b[$i]')    ExtractValue(xml,'/a/b[$@i]')
924
 
2       2       b2      b2
925
 
i       @i      ExtractValue(xml,'/a/b[$i]')    ExtractValue(xml,'/a/b[$@i]')
926
 
3       1       b3      b1
927
 
drop procedure spxml;
928
 
Multiple matches, but no index specification
929
 
SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b');
930
 
ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b')
931
 
b1 b2
932
 
No matches
933
 
SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/c');
934
 
ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/c')
935
 
 
936
 
Index out of range
937
 
SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[-1]');
938
 
ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[-1]')
939
 
 
940
 
SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[10]');
941
 
ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[10]')
942
 
 
943
 
With string-to-number conversion
944
 
SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b["1"]');
945
 
ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b["1"]')
946
 
b1
947
 
SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b["1 and string"]');
948
 
ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b["1 and string"]')
949
 
b1
950
 
Warnings:
951
 
Warning 1292    Truncated incorrect INTEGER value: '1 and string"]'
952
 
Warning 1292    Truncated incorrect INTEGER value: '1 and string"]'
953
 
SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b["string and 1"]');
954
 
ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b["string and 1"]')
955
 
 
956
 
Warnings:
957
 
Warning 1292    Truncated incorrect INTEGER value: 'string and 1"]'
958
 
Warning 1292    Truncated incorrect INTEGER value: 'string and 1"]'
959
 
SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b["string"]');
960
 
ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b["string"]')
961
 
 
962
 
Warnings:
963
 
Warning 1292    Truncated incorrect INTEGER value: 'string"]'
964
 
Warning 1292    Truncated incorrect INTEGER value: 'string"]'
965
 
String-to-number conversion from a user variable
966
 
SET @i='1';
967
 
SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]');
968
 
ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]')
969
 
b1
970
 
SET @i='1 and string';
971
 
SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]');
972
 
ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]')
973
 
b1
974
 
SET @i='string and 1';
975
 
SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]');
976
 
ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]')
977
 
 
978
 
SET @i='string';
979
 
SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]');
980
 
ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]')
981
 
 
982
 
String-to-number conversion with a CHAR SP variable
983
 
CREATE PROCEDURE spxml(xml VARCHAR(128), i CHAR(16))
984
 
BEGIN
985
 
SELECT ExtractValue(xml,'/a/b[$i]');
986
 
END|
987
 
CALL spxml('<a><b>b1</b><b>b2</b></a>', '1');
988
 
ExtractValue(xml,'/a/b[$i]')
989
 
b1
990
 
CALL spxml('<a><b>b1</b><b>b2</b></a>', '1 and string');
991
 
ExtractValue(xml,'/a/b[$i]')
992
 
b1
993
 
Warnings:
994
 
Warning 1292    Truncated incorrect INTEGER value: '1 and string    '
995
 
Warning 1292    Truncated incorrect INTEGER value: '1 and string    '
996
 
CALL spxml('<a><b>b1</b><b>b2</b></a>', 'string and 1');
997
 
ExtractValue(xml,'/a/b[$i]')
998
 
 
999
 
Warnings:
1000
 
Warning 1292    Truncated incorrect INTEGER value: 'string and 1    '
1001
 
Warning 1292    Truncated incorrect INTEGER value: 'string and 1    '
1002
 
CALL spxml('<a><b>b1</b><b>b2</b></a>', 'string');
1003
 
ExtractValue(xml,'/a/b[$i]')
1004
 
 
1005
 
Warnings:
1006
 
Warning 1292    Truncated incorrect INTEGER value: 'string          '
1007
 
Warning 1292    Truncated incorrect INTEGER value: 'string          '
1008
 
DROP PROCEDURE spxml;
1009
 
select UpdateXML('<a>a</a>',repeat('a b ',1000),'');
1010
 
ERROR HY000: XPATH syntax error: 'b a b a b a b a b a b a b a b a '
1011
 
select ExtractValue('<a>a</a>', '/a[@x=@y0123456789_0123456789_0123456789_0123456789]');
1012
 
ERROR HY000: XPATH error: comparison of two nodesets is not supported: '=@y0123456789_0123456789_0123456'
1013
 
select ExtractValue('<a>a</a>', '/a[@x=$y0123456789_0123456789_0123456789_0123456789]');
1014
 
ERROR HY000: Unknown XPATH variable at: '$y0123456789_0123456789_01234567'
1015
 
select updatexml(NULL, 1, 1), updatexml(1, NULL, 1), updatexml(1, 1, NULL);
1016
 
updatexml(NULL, 1, 1)   updatexml(1, NULL, 1)   updatexml(1, 1, NULL)
1017
 
NULL    NULL    NULL
1018
 
select updatexml(NULL, NULL, 1), updatexml(1, NULL, NULL), 
1019
 
updatexml(NULL, 1, NULL);
1020
 
updatexml(NULL, NULL, 1)        updatexml(1, NULL, NULL)        updatexml(NULL, 1, NULL)
1021
 
NULL    NULL    NULL
1022
 
select updatexml(NULL, NULL, NULL);
1023
 
updatexml(NULL, NULL, NULL)
1024
 
NULL
1025
 
CREATE TABLE t1(a INT NOT NULL);
1026
 
INSERT INTO t1 VALUES (0), (0);
1027
 
SELECT 1 FROM t1 ORDER BY(UPDATEXML(a, '1', '1'));
1028
 
1
1029
 
1
1030
 
1
1031
 
DROP TABLE t1;
1032
 
End of 5.1 tests