1136 lines
		
	
	
		
			40 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			1136 lines
		
	
	
		
			40 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | SET @xml='<a aa1="aa1" aa2="aa2">a1<b ba1="ba1">b1<c>c1</c>b2</b>a2</a>'; | ||
|  | SELECT extractValue(@xml,'/a'); | ||
|  | extractValue(@xml,'/a') | ||
|  | a1 a2 | ||
|  | SELECT extractValue(@xml,'/a/b'); | ||
|  | extractValue(@xml,'/a/b') | ||
|  | b1 b2 | ||
|  | SELECT extractValue(@xml,'/a/b/c'); | ||
|  | extractValue(@xml,'/a/b/c') | ||
|  | c1 | ||
|  | SELECT extractValue(@xml,'/a/@aa1'); | ||
|  | extractValue(@xml,'/a/@aa1') | ||
|  | aa1 | ||
|  | SELECT extractValue(@xml,'/a/@aa2'); | ||
|  | extractValue(@xml,'/a/@aa2') | ||
|  | aa2 | ||
|  | SELECT extractValue(@xml,'/a/@*'); | ||
|  | extractValue(@xml,'/a/@*') | ||
|  | aa1 aa2 | ||
|  | SELECT extractValue(@xml,'//@ba1'); | ||
|  | extractValue(@xml,'//@ba1') | ||
|  | ba1 | ||
|  | SELECT extractValue(@xml,'//a'); | ||
|  | extractValue(@xml,'//a') | ||
|  | a1 a2 | ||
|  | SELECT extractValue(@xml,'//b'); | ||
|  | extractValue(@xml,'//b') | ||
|  | b1 b2 | ||
|  | SELECT extractValue(@xml,'//c'); | ||
|  | extractValue(@xml,'//c') | ||
|  | c1 | ||
|  | SELECT extractValue(@xml,'/a//b'); | ||
|  | extractValue(@xml,'/a//b') | ||
|  | b1 b2 | ||
|  | SELECT extractValue(@xml,'/a//c'); | ||
|  | extractValue(@xml,'/a//c') | ||
|  | c1 | ||
|  | SELECT extractValue(@xml,'//*'); | ||
|  | extractValue(@xml,'//*') | ||
|  | a1 b1 c1 b2 a2 | ||
|  | SELECT extractValue(@xml,'/a//*'); | ||
|  | extractValue(@xml,'/a//*') | ||
|  | b1 c1 b2 | ||
|  | SELECT extractValue(@xml,'/./a'); | ||
|  | extractValue(@xml,'/./a') | ||
|  | a1 a2 | ||
|  | SELECT extractValue(@xml,'/a/b/.'); | ||
|  | extractValue(@xml,'/a/b/.') | ||
|  | b1 b2 | ||
|  | SELECT extractValue(@xml,'/a/b/..'); | ||
|  | extractValue(@xml,'/a/b/..') | ||
|  | a1 a2 | ||
|  | SELECT extractValue(@xml,'/a/b/../@aa1'); | ||
|  | extractValue(@xml,'/a/b/../@aa1') | ||
|  | aa1 | ||
|  | SELECT extractValue(@xml,'/*'); | ||
|  | extractValue(@xml,'/*') | ||
|  | a1 a2 | ||
|  | SELECT extractValue(@xml,'/*/*'); | ||
|  | extractValue(@xml,'/*/*') | ||
|  | b1 b2 | ||
|  | SELECT extractValue(@xml,'/*/*/*'); | ||
|  | extractValue(@xml,'/*/*/*') | ||
|  | c1 | ||
|  | SELECT extractValue(@xml,'/a/child::*'); | ||
|  | extractValue(@xml,'/a/child::*') | ||
|  | b1 b2 | ||
|  | SELECT extractValue(@xml,'/a/self::*'); | ||
|  | extractValue(@xml,'/a/self::*') | ||
|  | a1 a2 | ||
|  | SELECT extractValue(@xml,'/a/descendant::*'); | ||
|  | extractValue(@xml,'/a/descendant::*') | ||
|  | b1 c1 b2 | ||
|  | SELECT extractValue(@xml,'/a/descendant-or-self::*'); | ||
|  | extractValue(@xml,'/a/descendant-or-self::*') | ||
|  | a1 b1 c1 b2 a2 | ||
|  | SELECT extractValue(@xml,'/a/attribute::*'); | ||
|  | extractValue(@xml,'/a/attribute::*') | ||
|  | aa1 aa2 | ||
|  | SELECT extractValue(@xml,'/a/b/c/parent::*'); | ||
|  | extractValue(@xml,'/a/b/c/parent::*') | ||
|  | b1 b2 | ||
|  | SELECT extractValue(@xml,'/a/b/c/ancestor::*'); | ||
|  | extractValue(@xml,'/a/b/c/ancestor::*') | ||
|  | a1 b1 b2 a2 | ||
|  | SELECT extractValue(@xml,'/a/b/c/ancestor-or-self::*'); | ||
|  | extractValue(@xml,'/a/b/c/ancestor-or-self::*') | ||
|  | a1 b1 c1 b2 a2 | ||
|  | SELECT extractValue(@xml,'/descendant-or-self::*'); | ||
|  | extractValue(@xml,'/descendant-or-self::*') | ||
|  | a1 b1 c1 b2 a2 | ||
|  | SET @xml='<a>a11<b ba="ba11" ba="ba12">b11</b><b ba="ba21" ba="ba22">b21<c>c1</c>b22</b>a12</a>'; | ||
|  | SELECT extractValue(@xml,'/a/b/c/ancestor-or-self::*'); | ||
|  | extractValue(@xml,'/a/b/c/ancestor-or-self::*') | ||
|  | a11 b21 c1 b22 a12 | ||
|  | SELECT extractValue(@xml,'//@ba'); | ||
|  | extractValue(@xml,'//@ba') | ||
|  | ba11 ba12 ba21 ba22 | ||
|  | SET @xml='<a><b>b</b><c>c</c></a>'; | ||
|  | SELECT extractValue(@xml,'/a/b'); | ||
|  | extractValue(@xml,'/a/b') | ||
|  | b | ||
|  | SELECT extractValue(@xml,'/a/c'); | ||
|  | extractValue(@xml,'/a/c') | ||
|  | c | ||
|  | SELECT extractValue(@xml,'/a/child::b'); | ||
|  | extractValue(@xml,'/a/child::b') | ||
|  | b | ||
|  | SELECT extractValue(@xml,'/a/child::c'); | ||
|  | extractValue(@xml,'/a/child::c') | ||
|  | c | ||
|  | SET @xml='<a><b>b1</b><c>c1</c><b>b2</b><c>c2</c></a>'; | ||
|  | SELECT extractValue(@xml,'/a/b[1]'); | ||
|  | extractValue(@xml,'/a/b[1]') | ||
|  | b1 | ||
|  | SELECT extractValue(@xml,'/a/b[2]'); | ||
|  | extractValue(@xml,'/a/b[2]') | ||
|  | b2 | ||
|  | SELECT extractValue(@xml,'/a/c[1]'); | ||
|  | extractValue(@xml,'/a/c[1]') | ||
|  | c1 | ||
|  | SELECT extractValue(@xml,'/a/c[2]'); | ||
|  | extractValue(@xml,'/a/c[2]') | ||
|  | c2 | ||
|  | SET @xml='<a><b x="xb1" x="xb2"/><c x="xc1" x="xc2"/></a>'; | ||
|  | SELECT extractValue(@xml,'/a//@x'); | ||
|  | extractValue(@xml,'/a//@x') | ||
|  | xb1 xb2 xc1 xc2 | ||
|  | SELECT extractValue(@xml,'/a//@x[1]'); | ||
|  | extractValue(@xml,'/a//@x[1]') | ||
|  | xb1 xc1 | ||
|  | SELECT extractValue(@xml,'/a//@x[2]'); | ||
|  | extractValue(@xml,'/a//@x[2]') | ||
|  | xb2 xc2 | ||
|  | SET @xml='<a><b>b1</b><b>b2</b><c><b>c1b1</b><b>c1b2</b></c><c><b>c2b1</c></b></a>'; | ||
|  | SELECT extractValue(@xml,'//b[1]'); | ||
|  | extractValue(@xml,'//b[1]') | ||
|  | b1 c1b1 c2b1 | ||
|  | SELECT extractValue(@xml,'/descendant::b[1]'); | ||
|  | extractValue(@xml,'/descendant::b[1]') | ||
|  | b1 | ||
|  | SET @xml='<a><b>b1</b><b>b2</b></a>'; | ||
|  | SELECT extractValue(@xml,'/a/b[1+0]'); | ||
|  | extractValue(@xml,'/a/b[1+0]') | ||
|  | b1 | ||
|  | SELECT extractValue(@xml,'/a/b[1*1]'); | ||
|  | extractValue(@xml,'/a/b[1*1]') | ||
|  | b1 | ||
|  | SELECT extractValue(@xml,'/a/b[--1]'); | ||
|  | extractValue(@xml,'/a/b[--1]') | ||
|  | b1 | ||
|  | SELECT extractValue(@xml,'/a/b[2*1-1]'); | ||
|  | extractValue(@xml,'/a/b[2*1-1]') | ||
|  | b1 | ||
|  | SELECT extractValue(@xml,'/a/b[1+1]'); | ||
|  | extractValue(@xml,'/a/b[1+1]') | ||
|  | b2 | ||
|  | SELECT extractValue(@xml,'/a/b[1*2]'); | ||
|  | extractValue(@xml,'/a/b[1*2]') | ||
|  | b2 | ||
|  | SELECT extractValue(@xml,'/a/b[--2]'); | ||
|  | extractValue(@xml,'/a/b[--2]') | ||
|  | b2 | ||
|  | SELECT extractValue(@xml,'/a/b[1*(3-1)]'); | ||
|  | extractValue(@xml,'/a/b[1*(3-1)]') | ||
|  | b2 | ||
|  | SELECT extractValue(@xml,'//*[1=1]'); | ||
|  | extractValue(@xml,'//*[1=1]') | ||
|  | b1 b2 | ||
|  | SELECT extractValue(@xml,'//*[1!=1]'); | ||
|  | extractValue(@xml,'//*[1!=1]') | ||
|  | 
 | ||
|  | SELECT extractValue(@xml,'//*[1>1]'); | ||
|  | extractValue(@xml,'//*[1>1]') | ||
|  | 
 | ||
|  | SELECT extractValue(@xml,'//*[2>1]'); | ||
|  | extractValue(@xml,'//*[2>1]') | ||
|  | b1 b2 | ||
|  | SELECT extractValue(@xml,'//*[1>2]'); | ||
|  | extractValue(@xml,'//*[1>2]') | ||
|  | 
 | ||
|  | SELECT extractValue(@xml,'//*[1>=1]'); | ||
|  | extractValue(@xml,'//*[1>=1]') | ||
|  | b1 b2 | ||
|  | SELECT extractValue(@xml,'//*[2>=1]'); | ||
|  | extractValue(@xml,'//*[2>=1]') | ||
|  | b1 b2 | ||
|  | SELECT extractValue(@xml,'//*[1>=2]'); | ||
|  | extractValue(@xml,'//*[1>=2]') | ||
|  | 
 | ||
|  | SELECT extractValue(@xml,'//*[1<1]'); | ||
|  | extractValue(@xml,'//*[1<1]') | ||
|  | 
 | ||
|  | SELECT extractValue(@xml,'//*[2<1]'); | ||
|  | extractValue(@xml,'//*[2<1]') | ||
|  | 
 | ||
|  | SELECT extractValue(@xml,'//*[1<2]'); | ||
|  | extractValue(@xml,'//*[1<2]') | ||
|  | b1 b2 | ||
|  | SELECT extractValue(@xml,'//*[1<=1]'); | ||
|  | extractValue(@xml,'//*[1<=1]') | ||
|  | b1 b2 | ||
|  | SELECT extractValue(@xml,'//*[2<=1]'); | ||
|  | extractValue(@xml,'//*[2<=1]') | ||
|  | 
 | ||
|  | SELECT extractValue(@xml,'//*[1<=2]'); | ||
|  | extractValue(@xml,'//*[1<=2]') | ||
|  | b1 b2 | ||
|  | SET @xml='<a><b>b11<c>c11</c></b><b>b21<c>c21</c></b></a>'; | ||
|  | SELECT extractValue(@xml,'/a/b[c="c11"]'); | ||
|  | extractValue(@xml,'/a/b[c="c11"]') | ||
|  | b11 | ||
|  | SELECT extractValue(@xml,'/a/b[c="c21"]'); | ||
|  | extractValue(@xml,'/a/b[c="c21"]') | ||
|  | b21 | ||
|  | SET @xml='<a><b c="c11">b11</b><b c="c21">b21</b></a>'; | ||
|  | SELECT extractValue(@xml,'/a/b[@c="c11"]'); | ||
|  | extractValue(@xml,'/a/b[@c="c11"]') | ||
|  | b11 | ||
|  | SELECT extractValue(@xml,'/a/b[@c="c21"]'); | ||
|  | extractValue(@xml,'/a/b[@c="c21"]') | ||
|  | b21 | ||
|  | SET @xml='<a>a1<b c="c11">b11<d>d11</d></b><b c="c21">b21<d>d21</d></b></a>'; | ||
|  | SELECT extractValue(@xml, '/a/b[@c="c11"]/d'); | ||
|  | extractValue(@xml, '/a/b[@c="c11"]/d') | ||
|  | d11 | ||
|  | SELECT extractValue(@xml, '/a/b[@c="c21"]/d'); | ||
|  | extractValue(@xml, '/a/b[@c="c21"]/d') | ||
|  | d21 | ||
|  | SELECT extractValue(@xml, '/a/b[d="d11"]/@c'); | ||
|  | extractValue(@xml, '/a/b[d="d11"]/@c') | ||
|  | c11 | ||
|  | SELECT extractValue(@xml, '/a/b[d="d21"]/@c'); | ||
|  | extractValue(@xml, '/a/b[d="d21"]/@c') | ||
|  | c21 | ||
|  | SELECT extractValue(@xml, '/a[b="b11"]'); | ||
|  | extractValue(@xml, '/a[b="b11"]') | ||
|  | a1 | ||
|  | SELECT extractValue(@xml, '/a[b/@c="c11"]'); | ||
|  | extractValue(@xml, '/a[b/@c="c11"]') | ||
|  | a1 | ||
|  | SELECT extractValue(@xml, '/a[b/d="d11"]'); | ||
|  | extractValue(@xml, '/a[b/d="d11"]') | ||
|  | a1 | ||
|  | SELECT extractValue(@xml, '/a[/a/b="b11"]'); | ||
|  | extractValue(@xml, '/a[/a/b="b11"]') | ||
|  | a1 | ||
|  | SELECT extractValue(@xml, '/a[/a/b/@c="c11"]'); | ||
|  | extractValue(@xml, '/a[/a/b/@c="c11"]') | ||
|  | a1 | ||
|  | SELECT extractValue(@xml, '/a[/a/b/d="d11"]'); | ||
|  | extractValue(@xml, '/a[/a/b/d="d11"]') | ||
|  | a1 | ||
|  | SELECT extractValue('<a>a</a>', '/a[false()]'); | ||
|  | extractValue('<a>a</a>', '/a[false()]') | ||
|  | 
 | ||
|  | SELECT extractValue('<a>a</a>', '/a[true()]'); | ||
|  | extractValue('<a>a</a>', '/a[true()]') | ||
|  | a | ||
|  | SELECT extractValue('<a>a</a>', '/a[not(false())]'); | ||
|  | extractValue('<a>a</a>', '/a[not(false())]') | ||
|  | a | ||
|  | SELECT extractValue('<a>a</a>', '/a[not(true())]'); | ||
|  | extractValue('<a>a</a>', '/a[not(true())]') | ||
|  | 
 | ||
|  | SELECT extractValue('<a>a</a>', '/a[true() and true()]'); | ||
|  | extractValue('<a>a</a>', '/a[true() and true()]') | ||
|  | a | ||
|  | SELECT extractValue('<a>a</a>', '/a[true() and false()]'); | ||
|  | extractValue('<a>a</a>', '/a[true() and false()]') | ||
|  | 
 | ||
|  | SELECT extractValue('<a>a</a>', '/a[false()and false()]'); | ||
|  | extractValue('<a>a</a>', '/a[false()and false()]') | ||
|  | 
 | ||
|  | SELECT extractValue('<a>a</a>', '/a[false()and true()]'); | ||
|  | extractValue('<a>a</a>', '/a[false()and true()]') | ||
|  | 
 | ||
|  | SELECT extractValue('<a>a</a>', '/a[true() or true()]'); | ||
|  | extractValue('<a>a</a>', '/a[true() or true()]') | ||
|  | a | ||
|  | SELECT extractValue('<a>a</a>', '/a[true() or false()]'); | ||
|  | extractValue('<a>a</a>', '/a[true() or false()]') | ||
|  | a | ||
|  | SELECT extractValue('<a>a</a>', '/a[false()or false()]'); | ||
|  | extractValue('<a>a</a>', '/a[false()or false()]') | ||
|  | 
 | ||
|  | SELECT extractValue('<a>a</a>', '/a[false()or true()]'); | ||
|  | extractValue('<a>a</a>', '/a[false()or true()]') | ||
|  | a | ||
|  | SET @xml='<a>ab<b c="c" c="e">b1</b><b c="d">b2</b><b c="f" c="e">b3</b></a>'; | ||
|  | select extractValue(@xml,'/a/b[@c="c"]'); | ||
|  | extractValue(@xml,'/a/b[@c="c"]') | ||
|  | b1 | ||
|  | select extractValue(@xml,'/a/b[@c="d"]'); | ||
|  | extractValue(@xml,'/a/b[@c="d"]') | ||
|  | b2 | ||
|  | select extractValue(@xml,'/a/b[@c="e"]'); | ||
|  | extractValue(@xml,'/a/b[@c="e"]') | ||
|  | b1 b3 | ||
|  | select extractValue(@xml,'/a/b[not(@c="e")]'); | ||
|  | extractValue(@xml,'/a/b[not(@c="e")]') | ||
|  | b2 | ||
|  | select extractValue(@xml,'/a/b[@c!="e"]'); | ||
|  | extractValue(@xml,'/a/b[@c!="e"]') | ||
|  | b1 b2 b3 | ||
|  | select extractValue(@xml,'/a/b[@c="c" or @c="d"]'); | ||
|  | extractValue(@xml,'/a/b[@c="c" or @c="d"]') | ||
|  | b1 b2 | ||
|  | select extractValue(@xml,'/a/b[@c="c" and @c="e"]'); | ||
|  | extractValue(@xml,'/a/b[@c="c" and @c="e"]') | ||
|  | b1 | ||
|  | SET @xml='<a><b c="c" d="d">b1</b><b d="d" e="e">b2</b></a>'; | ||
|  | select extractValue(@xml,'/a/b[@c]'); | ||
|  | extractValue(@xml,'/a/b[@c]') | ||
|  | b1 | ||
|  | select extractValue(@xml,'/a/b[@d]'); | ||
|  | extractValue(@xml,'/a/b[@d]') | ||
|  | b1 b2 | ||
|  | select extractValue(@xml,'/a/b[@e]'); | ||
|  | extractValue(@xml,'/a/b[@e]') | ||
|  | b2 | ||
|  | select extractValue(@xml,'/a/b[not(@c)]'); | ||
|  | extractValue(@xml,'/a/b[not(@c)]') | ||
|  | b2 | ||
|  | select extractValue(@xml,'/a/b[not(@d)]'); | ||
|  | extractValue(@xml,'/a/b[not(@d)]') | ||
|  | 
 | ||
|  | select extractValue(@xml,'/a/b[not(@e)]'); | ||
|  | extractValue(@xml,'/a/b[not(@e)]') | ||
|  | b1 | ||
|  | select extractValue(@xml, '/a/b[boolean(@c) or boolean(@d)]'); | ||
|  | extractValue(@xml, '/a/b[boolean(@c) or boolean(@d)]') | ||
|  | b1 b2 | ||
|  | select extractValue(@xml, '/a/b[boolean(@c) or boolean(@e)]'); | ||
|  | extractValue(@xml, '/a/b[boolean(@c) or boolean(@e)]') | ||
|  | b1 b2 | ||
|  | select extractValue(@xml, '/a/b[boolean(@d) or boolean(@e)]'); | ||
|  | extractValue(@xml, '/a/b[boolean(@d) or boolean(@e)]') | ||
|  | b1 b2 | ||
|  | select extractValue(@xml, '/a/b[boolean(@c) and boolean(@d)]'); | ||
|  | extractValue(@xml, '/a/b[boolean(@c) and boolean(@d)]') | ||
|  | b1 | ||
|  | select extractValue(@xml, '/a/b[boolean(@c) and boolean(@e)]'); | ||
|  | extractValue(@xml, '/a/b[boolean(@c) and boolean(@e)]') | ||
|  | 
 | ||
|  | select extractValue(@xml, '/a/b[boolean(@d) and boolean(@e)]'); | ||
|  | extractValue(@xml, '/a/b[boolean(@d) and boolean(@e)]') | ||
|  | b2 | ||
|  | select extractValue(@xml, '/a/b[@c or @d]'); | ||
|  | extractValue(@xml, '/a/b[@c or @d]') | ||
|  | b1 b2 | ||
|  | select extractValue(@xml, '/a/b[@c or @e]'); | ||
|  | extractValue(@xml, '/a/b[@c or @e]') | ||
|  | b1 b2 | ||
|  | select extractValue(@xml, '/a/b[@d or @e]'); | ||
|  | extractValue(@xml, '/a/b[@d or @e]') | ||
|  | b1 b2 | ||
|  | select extractValue(@xml, '/a/b[@c and @d]'); | ||
|  | extractValue(@xml, '/a/b[@c and @d]') | ||
|  | b1 | ||
|  | select extractValue(@xml, '/a/b[@c and @e]'); | ||
|  | extractValue(@xml, '/a/b[@c and @e]') | ||
|  | 
 | ||
|  | select extractValue(@xml, '/a/b[@d and @e]'); | ||
|  | extractValue(@xml, '/a/b[@d and @e]') | ||
|  | b2 | ||
|  | SET @xml='<a><b c="c">b1</b><b>b2</b></a>'; | ||
|  | SELECT extractValue(@xml,'/a/b[@*]'); | ||
|  | extractValue(@xml,'/a/b[@*]') | ||
|  | b1 | ||
|  | SELECT extractValue(@xml,'/a/b[not(@*)]'); | ||
|  | extractValue(@xml,'/a/b[not(@*)]') | ||
|  | b2 | ||
|  | SELECT extractValue('<a>a</a>', '/a[ceiling(3.1)=4]'); | ||
|  | extractValue('<a>a</a>', '/a[ceiling(3.1)=4]') | ||
|  | a | ||
|  | SELECT extractValue('<a>a</a>', '/a[floor(3.1)=3]'); | ||
|  | extractValue('<a>a</a>', '/a[floor(3.1)=3]') | ||
|  | a | ||
|  | SELECT extractValue('<a>a</a>', '/a[round(3.1)=3]'); | ||
|  | extractValue('<a>a</a>', '/a[round(3.1)=3]') | ||
|  | a | ||
|  | SELECT extractValue('<a>a</a>', '/a[round(3.8)=4]'); | ||
|  | extractValue('<a>a</a>', '/a[round(3.8)=4]') | ||
|  | a | ||
|  | SELECT extractValue('<a><b>b</b><c>c</c></a>', '/a/b | /a/c'); | ||
|  | extractValue('<a><b>b</b><c>c</c></a>', '/a/b | /a/c') | ||
|  | b c | ||
|  | select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=1]'); | ||
|  | extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=1]') | ||
|  | b1 | ||
|  | select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=2]'); | ||
|  | extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=2]') | ||
|  | b2 | ||
|  | select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=3]'); | ||
|  | extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=3]') | ||
|  | b3 | ||
|  | select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[1=position()]'); | ||
|  | extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[1=position()]') | ||
|  | b1 | ||
|  | select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[2=position()]'); | ||
|  | extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[2=position()]') | ||
|  | b2 | ||
|  | select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[3=position()]'); | ||
|  | extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[3=position()]') | ||
|  | b3 | ||
|  | select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[2>=position()]'); | ||
|  | extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[2>=position()]') | ||
|  | b1 b2 | ||
|  | select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[2<=position()]'); | ||
|  | extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[2<=position()]') | ||
|  | b2 b3 | ||
|  | select extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=3 or position()=2]'); | ||
|  | extractValue('<a b="b1" b="b2" b="b3"/>','/a/@b[position()=3 or position()=2]') | ||
|  | b2 b3 | ||
|  | SELECT extractValue('<a>a<b>a1<c>c1</c></b><b>a2</b></a>','/a/b[count(c)=0]'); | ||
|  | extractValue('<a>a<b>a1<c>c1</c></b><b>a2</b></a>','/a/b[count(c)=0]') | ||
|  | a2 | ||
|  | SELECT extractValue('<a>a<b>a1<c>c1</c></b><b>a2</b></a>','/a/b[count(c)=1]'); | ||
|  | extractValue('<a>a<b>a1<c>c1</c></b><b>a2</b></a>','/a/b[count(c)=1]') | ||
|  | a1 | ||
|  | select extractValue('<a>a1<b ba="1" ba="2">b1</b><b>b2</b>4</a>','/a/b[sum(@ba)=3]'); | ||
|  | extractValue('<a>a1<b ba="1" ba="2">b1</b><b>b2</b>4</a>','/a/b[sum(@ba)=3]') | ||
|  | b1 | ||
|  | select extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[1]'); | ||
|  | extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[1]') | ||
|  | b1 | ||
|  | select extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[boolean(1)]'); | ||
|  | extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[boolean(1)]') | ||
|  | b1 b2 | ||
|  | select extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[true()]'); | ||
|  | extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[true()]') | ||
|  | b1 b2 | ||
|  | select extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[number(true())]'); | ||
|  | extractValue('<a><b>b1</b><b>b2</b></a>','/a/b[number(true())]') | ||
|  | b1 | ||
|  | select extractValue('<a>ab</a>','/a[contains("abc","b")]'); | ||
|  | extractValue('<a>ab</a>','/a[contains("abc","b")]') | ||
|  | ab | ||
|  | select extractValue('<a>ab</a>','/a[contains(.,"a")]'); | ||
|  | extractValue('<a>ab</a>','/a[contains(.,"a")]') | ||
|  | ab | ||
|  | select extractValue('<a>ab</a>','/a[contains(.,"b")]'); | ||
|  | extractValue('<a>ab</a>','/a[contains(.,"b")]') | ||
|  | ab | ||
|  | select extractValue('<a>ab</a>','/a[contains(.,"c")]'); | ||
|  | extractValue('<a>ab</a>','/a[contains(.,"c")]') | ||
|  | 
 | ||
|  | select extractValue('<a b="1">ab</a>','/a[concat(@b,"2")="12"]'); | ||
|  | extractValue('<a b="1">ab</a>','/a[concat(@b,"2")="12"]') | ||
|  | ab | ||
|  | SET @xml='<a b="11" b="12" b="21" b="22">ab</a>'; | ||
|  | select extractValue(@xml, '/a/@b[substring(.,2)="1"]'); | ||
|  | extractValue(@xml, '/a/@b[substring(.,2)="1"]') | ||
|  | 11 21 | ||
|  | select extractValue(@xml, '/a/@b[substring(.,2)="2"]'); | ||
|  | extractValue(@xml, '/a/@b[substring(.,2)="2"]') | ||
|  | 12 22 | ||
|  | select extractValue(@xml, '/a/@b[substring(.,1,1)="1"]'); | ||
|  | extractValue(@xml, '/a/@b[substring(.,1,1)="1"]') | ||
|  | 11 12 | ||
|  | select extractValue(@xml, '/a/@b[substring(.,1,1)="2"]'); | ||
|  | extractValue(@xml, '/a/@b[substring(.,1,1)="2"]') | ||
|  | 21 22 | ||
|  | select extractValue(@xml, '/a/@b[substring(.,2,1)="1"]'); | ||
|  | extractValue(@xml, '/a/@b[substring(.,2,1)="1"]') | ||
|  | 11 21 | ||
|  | select extractValue(@xml, '/a/@b[substring(.,2,1)="2"]'); | ||
|  | extractValue(@xml, '/a/@b[substring(.,2,1)="2"]') | ||
|  | 12 22 | ||
|  | SET @xml='<a><b>b1</b><b>b2</b></a>'; | ||
|  | SELECT extractValue(@xml, '/a/b[string-length("x")=1]'); | ||
|  | extractValue(@xml, '/a/b[string-length("x")=1]') | ||
|  | b1 b2 | ||
|  | SELECT extractValue(@xml, '/a/b[string-length("xx")=2]'); | ||
|  | extractValue(@xml, '/a/b[string-length("xx")=2]') | ||
|  | b1 b2 | ||
|  | SELECT extractValue(@xml, '/a/b[string-length("xxx")=2]'); | ||
|  | extractValue(@xml, '/a/b[string-length("xxx")=2]') | ||
|  | 
 | ||
|  | SELECT extractValue(@xml, '/a/b[string-length("x")]'); | ||
|  | extractValue(@xml, '/a/b[string-length("x")]') | ||
|  | b1 | ||
|  | SELECT extractValue(@xml, '/a/b[string-length("xx")]'); | ||
|  | extractValue(@xml, '/a/b[string-length("xx")]') | ||
|  | b2 | ||
|  | SELECT extractValue(@xml, '/a/b[string-length()]'); | ||
|  | extractValue(@xml, '/a/b[string-length()]') | ||
|  | b2 | ||
|  | SELECT extractValue(@xml, 'string-length()'); | ||
|  | ERROR HY000: XPATH syntax error: '' | ||
|  | SELECT extractValue(@xml, 'string-length("x")'); | ||
|  | extractValue(@xml, 'string-length("x")') | ||
|  | 1 | ||
|  | SET @xml='<a b="b11" b="b12" b="b21" b="22"/>'; | ||
|  | select extractValue(@xml,'/a/@b'); | ||
|  | extractValue(@xml,'/a/@b') | ||
|  | b11 b12 b21 22 | ||
|  | select extractValue(@xml,'/a/@b[contains(.,"1")]'); | ||
|  | extractValue(@xml,'/a/@b[contains(.,"1")]') | ||
|  | b11 b12 b21 | ||
|  | select extractValue(@xml,'/a/@b[contains(.,"1")][contains(.,"2")]'); | ||
|  | extractValue(@xml,'/a/@b[contains(.,"1")][contains(.,"2")]') | ||
|  | b12 b21 | ||
|  | select extractValue(@xml,'/a/@b[contains(.,"1")][contains(.,"2")][2]'); | ||
|  | extractValue(@xml,'/a/@b[contains(.,"1")][contains(.,"2")][2]') | ||
|  | b21 | ||
|  | SET @xml='<a>a1<b>b1<c>c1</c>b2</b>a2</a>'; | ||
|  | select UpdateXML('<a>a1<b>b1<c>c1</c>b2</b>a2</a>','/a/b/c','+++++++++'); | ||
|  | UpdateXML('<a>a1<b>b1<c>c1</c>b2</b>a2</a>','/a/b/c','+++++++++') | ||
|  | <a>a1<b>b1+++++++++b2</b>a2</a> | ||
|  | select UpdateXML('<a>a1<b>b1<c>c1</c>b2</b>a2</a>','/a/b/c','<c1>+++++++++</c1>'); | ||
|  | UpdateXML('<a>a1<b>b1<c>c1</c>b2</b>a2</a>','/a/b/c','<c1>+++++++++</c1>') | ||
|  | <a>a1<b>b1<c1>+++++++++</c1>b2</b>a2</a> | ||
|  | select UpdateXML('<a>a1<b>b1<c>c1</c>b2</b>a2</a>','/a/b/c','<c1/>'); | ||
|  | UpdateXML('<a>a1<b>b1<c>c1</c>b2</b>a2</a>','/a/b/c','<c1/>') | ||
|  | <a>a1<b>b1<c1/>b2</b>a2</a> | ||
|  | SET @xml='<a><b>bb</b></a>'; | ||
|  | select UpdateXML(@xml, '/a/b', '<b>ccc</b>'); | ||
|  | UpdateXML(@xml, '/a/b', '<b>ccc</b>') | ||
|  | <a><b>ccc</b></a> | ||
|  | SET @xml='<a aa1="aa1" aa2="aa2"><b bb1="bb1" bb2="bb2">bb</b></a>'; | ||
|  | select UpdateXML(@xml, '/a/b', '<b>ccc</b>'); | ||
|  | UpdateXML(@xml, '/a/b', '<b>ccc</b>') | ||
|  | <a aa1="aa1" aa2="aa2"><b>ccc</b></a> | ||
|  | select UpdateXML(@xml, '/a/@aa1', ''); | ||
|  | UpdateXML(@xml, '/a/@aa1', '') | ||
|  | <a  aa2="aa2"><b bb1="bb1" bb2="bb2">bb</b></a> | ||
|  | select UpdateXML(@xml, '/a/@aa1', 'aa3="aa3"'); | ||
|  | UpdateXML(@xml, '/a/@aa1', 'aa3="aa3"') | ||
|  | <a aa3="aa3" aa2="aa2"><b bb1="bb1" bb2="bb2">bb</b></a> | ||
|  | select UpdateXML(@xml, '/a/@aa2', ''); | ||
|  | UpdateXML(@xml, '/a/@aa2', '') | ||
|  | <a aa1="aa1" ><b bb1="bb1" bb2="bb2">bb</b></a> | ||
|  | select UpdateXML(@xml, '/a/@aa2', 'aa3="aa3"'); | ||
|  | UpdateXML(@xml, '/a/@aa2', 'aa3="aa3"') | ||
|  | <a aa1="aa1" aa3="aa3"><b bb1="bb1" bb2="bb2">bb</b></a> | ||
|  | select UpdateXML(@xml, '/a/b/@bb1', ''); | ||
|  | UpdateXML(@xml, '/a/b/@bb1', '') | ||
|  | <a aa1="aa1" aa2="aa2"><b  bb2="bb2">bb</b></a> | ||
|  | select UpdateXML(@xml, '/a/b/@bb1', 'bb3="bb3"'); | ||
|  | UpdateXML(@xml, '/a/b/@bb1', 'bb3="bb3"') | ||
|  | <a aa1="aa1" aa2="aa2"><b bb3="bb3" bb2="bb2">bb</b></a> | ||
|  | select UpdateXML(@xml, '/a/b/@bb2', ''); | ||
|  | UpdateXML(@xml, '/a/b/@bb2', '') | ||
|  | <a aa1="aa1" aa2="aa2"><b bb1="bb1" >bb</b></a> | ||
|  | select UpdateXML(@xml, '/a/b/@bb2', 'bb3="bb3"'); | ||
|  | UpdateXML(@xml, '/a/b/@bb2', 'bb3="bb3"') | ||
|  | <a aa1="aa1" aa2="aa2"><b bb1="bb1" bb3="bb3">bb</b></a> | ||
|  | select updatexml('<div><div><span>1</span><span>2</span></div></div>', | ||
|  | '/','<tr><td>1</td><td>2</td></tr>') as upd1; | ||
|  | upd1 | ||
|  | <tr><td>1</td><td>2</td></tr> | ||
|  | select updatexml('', '/', '') as upd2; | ||
|  | upd2 | ||
|  | 
 | ||
|  | SET @xml= '<order><clerk>lesser wombat</clerk></order>'; | ||
|  | select extractvalue(@xml,'order/clerk'); | ||
|  | extractvalue(@xml,'order/clerk') | ||
|  | lesser wombat | ||
|  | select extractvalue(@xml,'/order/clerk'); | ||
|  | extractvalue(@xml,'/order/clerk') | ||
|  | lesser wombat | ||
|  | select extractvalue('<a><b>B</b></a>','/a|/b'); | ||
|  | extractvalue('<a><b>B</b></a>','/a|/b') | ||
|  | 
 | ||
|  | select extractvalue('<a><b>B</b></a>','/a|b'); | ||
|  | extractvalue('<a><b>B</b></a>','/a|b') | ||
|  | 
 | ||
|  | select extractvalue('<a>a<b>B</b></a>','/a|/b'); | ||
|  | extractvalue('<a>a<b>B</b></a>','/a|/b') | ||
|  | a | ||
|  | select extractvalue('<a>a<b>B</b></a>','/a|b'); | ||
|  | extractvalue('<a>a<b>B</b></a>','/a|b') | ||
|  | a | ||
|  | select extractvalue('<a>a<b>B</b></a>','a|/b'); | ||
|  | extractvalue('<a>a<b>B</b></a>','a|/b') | ||
|  | a | ||
|  | select extractvalue('<a>A</a>','/<a>'); | ||
|  | ERROR HY000: XPATH error: comparison of two nodesets is not supported: '<a>' | ||
|  | select extractvalue('<a><b>b</b><b!>b!</b!></a>','//b!'); | ||
|  | ERROR HY000: XPATH syntax error: '!' | ||
|  | select extractvalue('<a>A<b>B<c>C</c></b></a>','/a/descendant::*'); | ||
|  | extractvalue('<a>A<b>B<c>C</c></b></a>','/a/descendant::*') | ||
|  | B C | ||
|  | select extractvalue('<a>A<b>B<c>C</c></b></a>','/a/self::*'); | ||
|  | extractvalue('<a>A<b>B<c>C</c></b></a>','/a/self::*') | ||
|  | A | ||
|  | select extractvalue('<a>A<b>B<c>C</c></b></a>','/a/descendant-or-self::*'); | ||
|  | extractvalue('<a>A<b>B<c>C</c></b></a>','/a/descendant-or-self::*') | ||
|  | A B C | ||
|  | select extractvalue('<A_B>A</A_B>','/A_B'); | ||
|  | extractvalue('<A_B>A</A_B>','/A_B') | ||
|  | A | ||
|  | select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[position()]'); | ||
|  | extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[position()]') | ||
|  | B1 B2 | ||
|  | select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=last()]'); | ||
|  | extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=last()]') | ||
|  | B1 B2 | ||
|  | select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()]'); | ||
|  | extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()]') | ||
|  | B2 | ||
|  | select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()-1]'); | ||
|  | extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()-1]') | ||
|  | B1 | ||
|  | select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()=1]'); | ||
|  | extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()=1]') | ||
|  | 
 | ||
|  | select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()=2]'); | ||
|  | extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()=2]') | ||
|  | B1 B2 | ||
|  | select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()=position()]'); | ||
|  | extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()=position()]') | ||
|  | B2 | ||
|  | select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)]'); | ||
|  | extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)]') | ||
|  | B2 | ||
|  | select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)-1]'); | ||
|  | extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)-1]') | ||
|  | B1 | ||
|  | select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=1]'); | ||
|  | extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=1]') | ||
|  | 
 | ||
|  | select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=2]'); | ||
|  | extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=2]') | ||
|  | B1 B2 | ||
|  | select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=position()]'); | ||
|  | extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=position()]') | ||
|  | B2 | ||
|  | select extractvalue('<a>Jack</a>','/a[contains(../a,"J")]'); | ||
|  | extractvalue('<a>Jack</a>','/a[contains(../a,"J")]') | ||
|  | Jack | ||
|  | select extractvalue('<a>Jack</a>','/a[contains(../a,"j")]'); | ||
|  | extractvalue('<a>Jack</a>','/a[contains(../a,"j")]') | ||
|  | Jack | ||
|  | select extractvalue('<a>Jack</a>','/a[contains(../a,"j")]' collate latin1_bin); | ||
|  | extractvalue('<a>Jack</a>','/a[contains(../a,"j")]' collate latin1_bin) | ||
|  | 
 | ||
|  | select extractvalue('<a>Jack</a>' collate latin1_bin,'/a[contains(../a,"j")]'); | ||
|  | extractvalue('<a>Jack</a>' collate latin1_bin,'/a[contains(../a,"j")]') | ||
|  | 
 | ||
|  | select ExtractValue('<tag1><![CDATA[test]]></tag1>','/tag1'); | ||
|  | ExtractValue('<tag1><![CDATA[test]]></tag1>','/tag1') | ||
|  | test | ||
|  | select extractValue('<a>a','/a'); | ||
|  | extractValue('<a>a','/a') | ||
|  | NULL | ||
|  | Warnings: | ||
|  | Warning	1525	Incorrect XML value: 'parse error at line 1 pos 5: unexpected END-OF-INPUT' | ||
|  | select extractValue('<a>a<','/a'); | ||
|  | extractValue('<a>a<','/a') | ||
|  | NULL | ||
|  | Warnings: | ||
|  | Warning	1525	Incorrect XML value: 'parse error at line 1 pos 6: END-OF-INPUT unexpected (ident or '/' wanted)' | ||
|  | select extractValue('<a>a</','/a'); | ||
|  | extractValue('<a>a</','/a') | ||
|  | NULL | ||
|  | Warnings: | ||
|  | Warning	1525	Incorrect XML value: 'parse error at line 1 pos 7: END-OF-INPUT unexpected (ident wanted)' | ||
|  | select extractValue('<a>a</a','/a'); | ||
|  | extractValue('<a>a</a','/a') | ||
|  | NULL | ||
|  | Warnings: | ||
|  | Warning	1525	Incorrect XML value: 'parse error at line 1 pos 8: END-OF-INPUT unexpected ('>' wanted)' | ||
|  | select extractValue('<a>a</a></b>','/a'); | ||
|  | extractValue('<a>a</a></b>','/a') | ||
|  | NULL | ||
|  | Warnings: | ||
|  | Warning	1525	Incorrect XML value: 'parse error at line 1 pos 12: '</b>' unexpected (END-OF-INPUT wanted)' | ||
|  | select extractValue('<a b=>a</a>','/a'); | ||
|  | extractValue('<a b=>a</a>','/a') | ||
|  | NULL | ||
|  | Warnings: | ||
|  | Warning	1525	Incorrect XML value: 'parse error at line 1 pos 7: '>' unexpected (ident or string wanted)' | ||
|  | select extractValue('<e>1</e>','position()'); | ||
|  | ERROR HY000: XPATH syntax error: '' | ||
|  | select extractValue('<e>1</e>','last()'); | ||
|  | ERROR HY000: XPATH syntax error: '' | ||
|  | select extractValue('<e><a>1</a></e>','/e/'); | ||
|  | ERROR HY000: XPATH syntax error: '' | ||
|  | set names utf8; | ||
|  | select extractValue('<Ñ><r>r</r></Ñ>','/Ñ/r'); | ||
|  | extractValue('<Ñ><r>r</r></Ñ>','/Ñ/r') | ||
|  | r | ||
|  | select extractValue('<r><Ñ>Ñ</Ñ></r>','/r/Ñ'); | ||
|  | extractValue('<r><Ñ>Ñ</Ñ></r>','/r/Ñ') | ||
|  | Ñ | ||
|  | select extractValue('<Ñ r="r"/>','/Ñ/@r'); | ||
|  | extractValue('<Ñ r="r"/>','/Ñ/@r') | ||
|  | r | ||
|  | select extractValue('<r Ñ="Ñ"/>','/r/@Ñ'); | ||
|  | extractValue('<r Ñ="Ñ"/>','/r/@Ñ') | ||
|  | Ñ | ||
|  | DROP PROCEDURE IF EXISTS p2; | ||
|  | CREATE PROCEDURE p2 () | ||
|  | BEGIN | ||
|  | DECLARE p LONGTEXT CHARACTER SET UTF8 DEFAULT '<Ñ><r>A</r></Ñ>'; | ||
|  | SELECT EXTRACTVALUE(p,'/Ñ/r'); | ||
|  | END// | ||
|  | CALL p2(); | ||
|  | EXTRACTVALUE(p,'/Ñ/r') | ||
|  | A | ||
|  | DROP PROCEDURE p2; | ||
|  | select extractValue('<ns:element xmlns:ns="myns"/>','count(ns:element)'); | ||
|  | extractValue('<ns:element xmlns:ns="myns"/>','count(ns:element)') | ||
|  | 1 | ||
|  | select extractValue('<ns:element xmlns:ns="myns">a</ns:element>','/ns:element'); | ||
|  | extractValue('<ns:element xmlns:ns="myns">a</ns:element>','/ns:element') | ||
|  | a | ||
|  | select extractValue('<ns:element xmlns:ns="myns">a</ns:element>','/ns:element/@xmlns:ns'); | ||
|  | extractValue('<ns:element xmlns:ns="myns">a</ns:element>','/ns:element/@xmlns:ns') | ||
|  | myns | ||
|  | select extractValue('<foo><foo.bar>Data</foo.bar><something>Otherdata</something></foo>','/foo/foo.bar'); | ||
|  | extractValue('<foo><foo.bar>Data</foo.bar><something>Otherdata</something></foo>','/foo/foo.bar') | ||
|  | Data | ||
|  | select extractValue('<foo><foo.bar>Data</foo.bar><something>Otherdata</something></foo>','/foo/something'); | ||
|  | extractValue('<foo><foo.bar>Data</foo.bar><something>Otherdata</something></foo>','/foo/something') | ||
|  | Otherdata | ||
|  | select extractValue('<zot><tim0><01>10:39:15</01><02>140</02></tim0></zot>','/zot/tim0/02'); | ||
|  | ERROR HY000: XPATH syntax error: '02' | ||
|  | select extractValue('<zot><tim0><01>10:39:15</01><02>140</02></tim0></zot>','//*'); | ||
|  | extractValue('<zot><tim0><01>10:39:15</01><02>140</02></tim0></zot>','//*') | ||
|  | NULL | ||
|  | Warnings: | ||
|  | Warning	1525	Incorrect XML value: 'parse error at line 1 pos 13: unknown token unexpected (ident or '/' wanted)' | ||
|  | select extractValue('<.>test</.>','//*'); | ||
|  | extractValue('<.>test</.>','//*') | ||
|  | NULL | ||
|  | Warnings: | ||
|  | Warning	1525	Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)' | ||
|  | select extractValue('<->test</->','//*'); | ||
|  | extractValue('<->test</->','//*') | ||
|  | NULL | ||
|  | Warnings: | ||
|  | Warning	1525	Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)' | ||
|  | select extractValue('<:>test</:>','//*'); | ||
|  | extractValue('<:>test</:>','//*') | ||
|  | test | ||
|  | select extractValue('<_>test</_>','//*'); | ||
|  | extractValue('<_>test</_>','//*') | ||
|  | test | ||
|  | select extractValue('<x.-_:>test</x.-_:>','//*'); | ||
|  | extractValue('<x.-_:>test</x.-_:>','//*') | ||
|  | test | ||
|  | set @xml= "<entry><id>pt10</id><pt>10</pt></entry><entry><id>pt50</id><pt>50</pt></entry>"; | ||
|  | select ExtractValue(@xml, "/entry[(pt=10)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(pt=10)]/id") | ||
|  | pt10 | ||
|  | select ExtractValue(@xml, "/entry[(pt!=10)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(pt!=10)]/id") | ||
|  | pt50 | ||
|  | select ExtractValue(@xml, "/entry[(pt<10)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(pt<10)]/id") | ||
|  | 
 | ||
|  | select ExtractValue(@xml, "/entry[(pt<=10)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(pt<=10)]/id") | ||
|  | pt10 | ||
|  | select ExtractValue(@xml, "/entry[(pt>10)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(pt>10)]/id") | ||
|  | pt50 | ||
|  | select ExtractValue(@xml, "/entry[(pt>=10)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(pt>=10)]/id") | ||
|  | pt10 pt50 | ||
|  | select ExtractValue(@xml, "/entry[(pt=50)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(pt=50)]/id") | ||
|  | pt50 | ||
|  | select ExtractValue(@xml, "/entry[(pt!=50)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(pt!=50)]/id") | ||
|  | pt10 | ||
|  | select ExtractValue(@xml, "/entry[(pt<50)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(pt<50)]/id") | ||
|  | pt10 | ||
|  | select ExtractValue(@xml, "/entry[(pt<=50)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(pt<=50)]/id") | ||
|  | pt10 pt50 | ||
|  | select ExtractValue(@xml, "/entry[(pt>50)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(pt>50)]/id") | ||
|  | 
 | ||
|  | select ExtractValue(@xml, "/entry[(pt>=50)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(pt>=50)]/id") | ||
|  | pt50 | ||
|  | select ExtractValue(@xml, "/entry[(10=pt)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(10=pt)]/id") | ||
|  | pt10 | ||
|  | select ExtractValue(@xml, "/entry[(10!=pt)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(10!=pt)]/id") | ||
|  | pt50 | ||
|  | select ExtractValue(@xml, "/entry[(10>pt)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(10>pt)]/id") | ||
|  | 
 | ||
|  | select ExtractValue(@xml, "/entry[(10>=pt)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(10>=pt)]/id") | ||
|  | pt10 | ||
|  | select ExtractValue(@xml, "/entry[(10<pt)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(10<pt)]/id") | ||
|  | pt50 | ||
|  | select ExtractValue(@xml, "/entry[(10<=pt)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(10<=pt)]/id") | ||
|  | pt10 pt50 | ||
|  | select ExtractValue(@xml, "/entry[(50=pt)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(50=pt)]/id") | ||
|  | pt50 | ||
|  | select ExtractValue(@xml, "/entry[(50!=pt)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(50!=pt)]/id") | ||
|  | pt10 | ||
|  | select ExtractValue(@xml, "/entry[(50>pt)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(50>pt)]/id") | ||
|  | pt10 | ||
|  | select ExtractValue(@xml, "/entry[(50>=pt)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(50>=pt)]/id") | ||
|  | pt10 pt50 | ||
|  | select ExtractValue(@xml, "/entry[(50<pt)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(50<pt)]/id") | ||
|  | 
 | ||
|  | select ExtractValue(@xml, "/entry[(50<=pt)]/id"); | ||
|  | ExtractValue(@xml, "/entry[(50<=pt)]/id") | ||
|  | pt50 | ||
|  | select ExtractValue('<a><b><Text>test</Text></b></a>','/a/b/Text'); | ||
|  | ExtractValue('<a><b><Text>test</Text></b></a>','/a/b/Text') | ||
|  | test | ||
|  | select ExtractValue('<a><b><comment>test</comment></b></a>','/a/b/comment'); | ||
|  | ExtractValue('<a><b><comment>test</comment></b></a>','/a/b/comment') | ||
|  | test | ||
|  | select ExtractValue('<a><b><node>test</node></b></a>','/a/b/node'); | ||
|  | ExtractValue('<a><b><node>test</node></b></a>','/a/b/node') | ||
|  | test | ||
|  | select ExtractValue('<a><b><processing-instruction>test</processing-instruction></b></a>','/a/b/processing-instruction'); | ||
|  | ExtractValue('<a><b><processing-instruction>test</processing-instruction></b></a>','/a/b/processing-instruction') | ||
|  | test | ||
|  | select ExtractValue('<a><and>test</and></a>', '/a/and'); | ||
|  | ExtractValue('<a><and>test</and></a>', '/a/and') | ||
|  | test | ||
|  | select ExtractValue('<a><or>test</or></a>', '/a/or'); | ||
|  | ExtractValue('<a><or>test</or></a>', '/a/or') | ||
|  | test | ||
|  | select ExtractValue('<a><mod>test</mod></a>', '/a/mod'); | ||
|  | ExtractValue('<a><mod>test</mod></a>', '/a/mod') | ||
|  | test | ||
|  | select ExtractValue('<a><div>test</div></a>', '/a/div'); | ||
|  | ExtractValue('<a><div>test</div></a>', '/a/div') | ||
|  | test | ||
|  | select ExtractValue('<a><and:and>test</and:and></a>', '/a/and:and'); | ||
|  | ExtractValue('<a><and:and>test</and:and></a>', '/a/and:and') | ||
|  | test | ||
|  | select ExtractValue('<a><or:or>test</or:or></a>', '/a/or:or'); | ||
|  | ExtractValue('<a><or:or>test</or:or></a>', '/a/or:or') | ||
|  | test | ||
|  | select ExtractValue('<a><mod:mod>test</mod:mod></a>', '/a/mod:mod'); | ||
|  | ExtractValue('<a><mod:mod>test</mod:mod></a>', '/a/mod:mod') | ||
|  | test | ||
|  | select ExtractValue('<a><div:div>test</div:div></a>', '/a/div:div'); | ||
|  | ExtractValue('<a><div:div>test</div:div></a>', '/a/div:div') | ||
|  | test | ||
|  | select ExtractValue('<a><ancestor>test</ancestor></a>', '/a/ancestor'); | ||
|  | ExtractValue('<a><ancestor>test</ancestor></a>', '/a/ancestor') | ||
|  | test | ||
|  | select ExtractValue('<a><ancestor-or-self>test</ancestor-or-self></a>', '/a/ancestor-or-self'); | ||
|  | ExtractValue('<a><ancestor-or-self>test</ancestor-or-self></a>', '/a/ancestor-or-self') | ||
|  | test | ||
|  | select ExtractValue('<a><attribute>test</attribute></a>', '/a/attribute'); | ||
|  | ExtractValue('<a><attribute>test</attribute></a>', '/a/attribute') | ||
|  | test | ||
|  | select ExtractValue('<a><child>test</child></a>', '/a/child'); | ||
|  | ExtractValue('<a><child>test</child></a>', '/a/child') | ||
|  | test | ||
|  | select ExtractValue('<a><descendant>test</descendant></a>', '/a/descendant'); | ||
|  | ExtractValue('<a><descendant>test</descendant></a>', '/a/descendant') | ||
|  | test | ||
|  | select ExtractValue('<a><descendant-or-self>test</descendant-or-self></a>', '/a/descendant-or-self'); | ||
|  | ExtractValue('<a><descendant-or-self>test</descendant-or-self></a>', '/a/descendant-or-self') | ||
|  | test | ||
|  | select ExtractValue('<a><following>test</following></a>', '/a/following'); | ||
|  | ExtractValue('<a><following>test</following></a>', '/a/following') | ||
|  | test | ||
|  | select ExtractValue('<a><following-sibling>test</following-sibling></a>', '/a/following-sibling'); | ||
|  | ExtractValue('<a><following-sibling>test</following-sibling></a>', '/a/following-sibling') | ||
|  | test | ||
|  | select ExtractValue('<a><namespace>test</namespace></a>', '/a/namespace'); | ||
|  | ExtractValue('<a><namespace>test</namespace></a>', '/a/namespace') | ||
|  | test | ||
|  | select ExtractValue('<a><parent>test</parent></a>', '/a/parent'); | ||
|  | ExtractValue('<a><parent>test</parent></a>', '/a/parent') | ||
|  | test | ||
|  | select ExtractValue('<a><preceding>test</preceding></a>', '/a/preceding'); | ||
|  | ExtractValue('<a><preceding>test</preceding></a>', '/a/preceding') | ||
|  | test | ||
|  | select ExtractValue('<a><preceding-sibling>test</preceding-sibling></a>', '/a/preceding-sibling'); | ||
|  | ExtractValue('<a><preceding-sibling>test</preceding-sibling></a>', '/a/preceding-sibling') | ||
|  | test | ||
|  | select ExtractValue('<a><self>test</self></a>', '/a/self'); | ||
|  | ExtractValue('<a><self>test</self></a>', '/a/self') | ||
|  | test | ||
|  | set @i=1; | ||
|  | select ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]'); | ||
|  | ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]') | ||
|  | b1 | ||
|  | set @i=2; | ||
|  | select ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]'); | ||
|  | ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]') | ||
|  | b2 | ||
|  | set @i=NULL; | ||
|  | select ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]'); | ||
|  | ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]') | ||
|  | 
 | ||
|  | CREATE PROCEDURE spxml(xml VARCHAR(128)) | ||
|  | BEGIN | ||
|  | DECLARE c INT; | ||
|  | DECLARE i INT DEFAULT 1; | ||
|  | SET c= ExtractValue(xml,'count(/a/b)'); | ||
|  | SET @i= c; | ||
|  | WHILE i <= c DO | ||
|  | BEGIN | ||
|  | SELECT i, @i, ExtractValue(xml,'/a/b[$i]'), ExtractValue(xml,'/a/b[$@i]'); | ||
|  | SET i= i + 1; | ||
|  | SET @i= @i - 1; | ||
|  | END; | ||
|  | END WHILE; | ||
|  | END| | ||
|  | call spxml('<a><b>b1</b><b>b2</b><b>b3</b></a>'); | ||
|  | i	@i	ExtractValue(xml,'/a/b[$i]')	ExtractValue(xml,'/a/b[$@i]') | ||
|  | 1	3	b1	b3 | ||
|  | i	@i	ExtractValue(xml,'/a/b[$i]')	ExtractValue(xml,'/a/b[$@i]') | ||
|  | 2	2	b2	b2 | ||
|  | i	@i	ExtractValue(xml,'/a/b[$i]')	ExtractValue(xml,'/a/b[$@i]') | ||
|  | 3	1	b3	b1 | ||
|  | drop procedure spxml; | ||
|  | Multiple matches, but no index specification | ||
|  | SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b'); | ||
|  | ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b') | ||
|  | b1 b2 | ||
|  | No matches | ||
|  | SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/c'); | ||
|  | ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/c') | ||
|  | 
 | ||
|  | Index out of range | ||
|  | SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[-1]'); | ||
|  | ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[-1]') | ||
|  | 
 | ||
|  | SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[10]'); | ||
|  | ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[10]') | ||
|  | 
 | ||
|  | With string-to-number conversion | ||
|  | SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b["1"]'); | ||
|  | ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b["1"]') | ||
|  | b1 | ||
|  | SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b["1 and string"]'); | ||
|  | ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b["1 and string"]') | ||
|  | b1 | ||
|  | Warnings: | ||
|  | Warning	1292	Truncated incorrect INTEGER value: '1 and string"]' | ||
|  | Warning	1292	Truncated incorrect INTEGER value: '1 and string"]' | ||
|  | SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b["string and 1"]'); | ||
|  | ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b["string and 1"]') | ||
|  | 
 | ||
|  | Warnings: | ||
|  | Warning	1292	Truncated incorrect INTEGER value: 'string and 1"]' | ||
|  | Warning	1292	Truncated incorrect INTEGER value: 'string and 1"]' | ||
|  | SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b["string"]'); | ||
|  | ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b["string"]') | ||
|  | 
 | ||
|  | Warnings: | ||
|  | Warning	1292	Truncated incorrect INTEGER value: 'string"]' | ||
|  | Warning	1292	Truncated incorrect INTEGER value: 'string"]' | ||
|  | String-to-number conversion from a user variable | ||
|  | SET @i='1'; | ||
|  | SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]'); | ||
|  | ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]') | ||
|  | b1 | ||
|  | SET @i='1 and string'; | ||
|  | SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]'); | ||
|  | ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]') | ||
|  | b1 | ||
|  | SET @i='string and 1'; | ||
|  | SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]'); | ||
|  | ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]') | ||
|  | 
 | ||
|  | SET @i='string'; | ||
|  | SELECT ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]'); | ||
|  | ExtractValue('<a><b>b1</b><b>b2</b></a>','/a/b[$@i]') | ||
|  | 
 | ||
|  | String-to-number conversion with a CHAR SP variable | ||
|  | CREATE PROCEDURE spxml(xml VARCHAR(128), i CHAR(16)) | ||
|  | BEGIN | ||
|  | SELECT ExtractValue(xml,'/a/b[$i]'); | ||
|  | END| | ||
|  | CALL spxml('<a><b>b1</b><b>b2</b></a>', '1'); | ||
|  | ExtractValue(xml,'/a/b[$i]') | ||
|  | b1 | ||
|  | CALL spxml('<a><b>b1</b><b>b2</b></a>', '1 and string'); | ||
|  | ExtractValue(xml,'/a/b[$i]') | ||
|  | b1 | ||
|  | Warnings: | ||
|  | Warning	1292	Truncated incorrect INTEGER value: '1 and string    ' | ||
|  | Warning	1292	Truncated incorrect INTEGER value: '1 and string    ' | ||
|  | CALL spxml('<a><b>b1</b><b>b2</b></a>', 'string and 1'); | ||
|  | ExtractValue(xml,'/a/b[$i]') | ||
|  | 
 | ||
|  | Warnings: | ||
|  | Warning	1292	Truncated incorrect INTEGER value: 'string and 1    ' | ||
|  | Warning	1292	Truncated incorrect INTEGER value: 'string and 1    ' | ||
|  | CALL spxml('<a><b>b1</b><b>b2</b></a>', 'string'); | ||
|  | ExtractValue(xml,'/a/b[$i]') | ||
|  | 
 | ||
|  | Warnings: | ||
|  | Warning	1292	Truncated incorrect INTEGER value: 'string          ' | ||
|  | Warning	1292	Truncated incorrect INTEGER value: 'string          ' | ||
|  | DROP PROCEDURE spxml; | ||
|  | select UpdateXML('<a>a</a>',repeat('a b ',1000),''); | ||
|  | ERROR HY000: XPATH syntax error: 'b a b a b a b a b a b a b a b a ' | ||
|  | select ExtractValue('<a>a</a>', '/a[@x=@y0123456789_0123456789_0123456789_0123456789]'); | ||
|  | ERROR HY000: XPATH error: comparison of two nodesets is not supported: '=@y0123456789_0123456789_0123456' | ||
|  | select ExtractValue('<a>a</a>', '/a[@x=$y0123456789_0123456789_0123456789_0123456789]'); | ||
|  | ERROR HY000: Unknown XPATH variable at: '$y0123456789_0123456789_01234567' | ||
|  | select updatexml(NULL, 1, 1), updatexml(1, NULL, 1), updatexml(1, 1, NULL); | ||
|  | updatexml(NULL, 1, 1)	updatexml(1, NULL, 1)	updatexml(1, 1, NULL) | ||
|  | NULL	NULL	NULL | ||
|  | select updatexml(NULL, NULL, 1), updatexml(1, NULL, NULL),  | ||
|  | updatexml(NULL, 1, NULL); | ||
|  | updatexml(NULL, NULL, 1)	updatexml(1, NULL, NULL)	updatexml(NULL, 1, NULL) | ||
|  | NULL	NULL	NULL | ||
|  | select updatexml(NULL, NULL, NULL); | ||
|  | updatexml(NULL, NULL, NULL) | ||
|  | NULL | ||
|  | CREATE TABLE t1(a INT NOT NULL); | ||
|  | INSERT INTO t1 VALUES (0), (0); | ||
|  | SELECT 1 FROM t1 ORDER BY(UPDATEXML(a, '1', '1')); | ||
|  | 1 | ||
|  | 1 | ||
|  | 1 | ||
|  | DROP TABLE t1; | ||
|  | SET @xml= | ||
|  | '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | ||
|  | <html>  | ||
|  |  <head> | ||
|  |   <title> Title - document with document declaration</title> | ||
|  |  </head>  | ||
|  |   <body> Hi, Im a webpage with document a declaration </body>  | ||
|  | </html>'; | ||
|  | SELECT ExtractValue(@xml, 'html/head/title'); | ||
|  | ExtractValue(@xml, 'html/head/title') | ||
|  |  Title - document with document declaration | ||
|  | SELECT ExtractValue(@xml, 'html/body'); | ||
|  | ExtractValue(@xml, 'html/body') | ||
|  |  Hi, Im a webpage with document a declaration  | ||
|  | SELECT ExtractValue('<xml "xxx" "yyy">CharData</xml>', '/xml'); | ||
|  | ExtractValue('<xml "xxx" "yyy">CharData</xml>', '/xml') | ||
|  | NULL | ||
|  | Warnings: | ||
|  | Warning	1525	Incorrect XML value: 'parse error at line 1 pos 11: STRING unexpected ('>' wanted)' | ||
|  | SELECT ExtractValue('<xml  xxx  "yyy">CharData</xml>', '/xml'); | ||
|  | ExtractValue('<xml  xxx  "yyy">CharData</xml>', '/xml') | ||
|  | NULL | ||
|  | Warnings: | ||
|  | Warning	1525	Incorrect XML value: 'parse error at line 1 pos 17: STRING unexpected ('>' wanted)' | ||
|  | set @x=10; | ||
|  | select extractvalue('<a></a>','$@x/a'); | ||
|  | ERROR HY000: XPATH syntax error: '/a' | ||
|  | select extractvalue('<a></a>','round(123.4)/a'); | ||
|  | ERROR HY000: XPATH syntax error: '/a' | ||
|  | select extractvalue('<a></a>','1/a'); | ||
|  | ERROR HY000: XPATH syntax error: '/a' | ||
|  | select extractvalue('<a></a>','"b"/a'); | ||
|  | ERROR HY000: XPATH syntax error: '/a' | ||
|  | select extractvalue('<a></a>','(1)/a'); | ||
|  | ERROR HY000: XPATH syntax error: '/a' | ||
|  | CREATE TABLE IF NOT EXISTS t1 ( | ||
|  | id int(10) unsigned NOT NULL AUTO_INCREMENT, | ||
|  | xml text, | ||
|  | PRIMARY KEY (id) | ||
|  | ) ENGINE=MyISAM; | ||
|  | INSERT INTO t1 (id, xml) VALUES | ||
|  | (15, '<?xml version="1.0"?><bla name="blubb"></bla>'), | ||
|  | (14, '<xml version="kaputt">'); | ||
|  | SELECT | ||
|  | extractvalue( xml, '/bla/@name' ), | ||
|  | extractvalue( xml, '/bla/@name' ) | ||
|  | FROM t1 ORDER BY t1.id; | ||
|  | extractvalue( xml, '/bla/@name' )	extractvalue( xml, '/bla/@name' ) | ||
|  | NULL	NULL | ||
|  | blubb	blubb | ||
|  | Warnings: | ||
|  | Warning	1525	Incorrect XML value: 'parse error at line 1 pos 23: unexpected END-OF-INPUT' | ||
|  | Warning	1525	Incorrect XML value: 'parse error at line 1 pos 23: unexpected END-OF-INPUT' | ||
|  | SELECT | ||
|  | UpdateXML(xml, '/bla/@name', 'test'), | ||
|  | UpdateXML(xml, '/bla/@name', 'test') | ||
|  | FROM t1 ORDER BY t1.id; | ||
|  | UpdateXML(xml, '/bla/@name', 'test')	UpdateXML(xml, '/bla/@name', 'test') | ||
|  | NULL	NULL | ||
|  | <?xml version="1.0"?><bla test></bla>	<?xml version="1.0"?><bla test></bla> | ||
|  | Warnings: | ||
|  | Warning	1525	Incorrect XML value: 'parse error at line 1 pos 23: unexpected END-OF-INPUT' | ||
|  | Warning	1525	Incorrect XML value: 'parse error at line 1 pos 23: unexpected END-OF-INPUT' | ||
|  | DROP TABLE t1; | ||
|  | # | ||
|  | # Bug#57257 Replace(ExtractValue(...)) causes MySQL crash | ||
|  | # | ||
|  | SET NAMES utf8; | ||
|  | SELECT REPLACE(EXTRACTVALUE('1', '/a'),'ds',''); | ||
|  | REPLACE(EXTRACTVALUE('1', '/a'),'ds','') | ||
|  | 
 | ||
|  | # | ||
|  | # Bug #57820 extractvalue crashes | ||
|  | # | ||
|  | SELECT AVG(DISTINCT EXTRACTVALUE((''),('$@k'))); | ||
|  | AVG(DISTINCT EXTRACTVALUE((''),('$@k'))) | ||
|  | NULL | ||
|  | # | ||
|  | # Bug#57279 updatexml dies with: Assertion failed: str_arg[length] == 0 | ||
|  | # | ||
|  | SELECT UPDATEXML(NULL, (LPAD(0.1111E-15, '2011', 1)), 1); | ||
|  | ERROR 22007: Illegal double '111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111' value found during parsing | ||
|  | SELECT EXTRACTVALUE('', LPAD(0.1111E-15, '2011', 1)); | ||
|  | ERROR 22007: Illegal double '111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111' value found during parsing | ||
|  | # | ||
|  | # Bug #44332 	my_xml_scan reads behind the end of buffer | ||
|  | # | ||
|  | SELECT UPDATEXML(CONVERT(_latin1'<' USING utf8),'1','1'); | ||
|  | UPDATEXML(CONVERT(_latin1'<' USING utf8),'1','1') | ||
|  | NULL | ||
|  | Warnings: | ||
|  | Warning	1525	Incorrect XML value: 'parse error at line 1 pos 2: END-OF-INPUT unexpected (ident or '/' wanted)' | ||
|  | SELECT UPDATEXML(CONVERT(_latin1'<!--' USING utf8),'1','1'); | ||
|  | UPDATEXML(CONVERT(_latin1'<!--' USING utf8),'1','1') | ||
|  | NULL | ||
|  | # | ||
|  | # Bug#11766725 (bug#59901): EXTRACTVALUE STILL BROKEN AFTER FIX FOR BUG #44332 | ||
|  | # | ||
|  | SELECT ExtractValue(CONVERT('<\"', BINARY(10)), 1); | ||
|  | ExtractValue(CONVERT('<\"', BINARY(10)), 1) | ||
|  | NULL | ||
|  | Warnings: | ||
|  | Warning	1525	Incorrect XML value: 'parse error at line 1 pos 11: STRING unexpected (ident or '/' wanted)' | ||
|  | End of 5.1 tests |