~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to mysql-test/r/xml.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
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