mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Bug #18172 XML: Extractvalue() accepts mallformed
XPath without a XPath syntax error item_xmlfunc.cc: Error message didn't happen because after a failing attempt to parse RelativeLocationPath, my_xpath_parse_AbsoluteLocationPath() returned success. Changeing logic a bit: - Try to parse EOF first, return success if true. - Then try to parse RelativeLocationPath(), return success if true. - Otherwise return failure. xml.result: Adding test case. Also, this change made it possible to generate an error message earlier in the case of another bad XPATH syntax. xml.test: Adding test case.
This commit is contained in:
@@ -546,7 +546,7 @@ 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 syntax error: '>'
|
||||
ERROR HY000: XPATH syntax error: '<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::*');
|
||||
@@ -613,3 +613,5 @@ 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: ''
|
||||
|
||||
Reference in New Issue
Block a user