mirror of
https://github.com/MariaDB/server.git
synced 2025-02-01 11:31:51 +01:00
Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into mysql.com:/usr/home/bar/mysql-5.1-new.b18170
This commit is contained in:
commit
c51d7419e8
3 changed files with 42 additions and 1 deletions
|
@ -665,3 +665,12 @@ 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
|
||||
|
|
|
@ -335,3 +335,11 @@ END//
|
|||
DELIMITER ;//
|
||||
CALL p2();
|
||||
DROP PROCEDURE p2;
|
||||
|
||||
#
|
||||
# Bug#18170: XML: ExtractValue():
|
||||
# XPath expression can't use QNames (colon in names)
|
||||
#
|
||||
select extractValue('<ns:element xmlns:ns="myns"/>','count(ns:element)');
|
||||
select extractValue('<ns:element xmlns:ns="myns">a</ns:element>','/ns:element');
|
||||
select extractValue('<ns:element xmlns:ns="myns">a</ns:element>','/ns:element/@xmlns:ns');
|
||||
|
|
|
@ -2280,6 +2280,30 @@ static int my_xpath_parse_Number(MY_XPATH *xpath)
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
QName grammar can be found in a separate document
|
||||
http://www.w3.org/TR/REC-xml-names/#NT-QName
|
||||
|
||||
[6] QName ::= (Prefix ':')? LocalPart
|
||||
[7] Prefix ::= NCName
|
||||
[8] LocalPart ::= NCName
|
||||
*/
|
||||
static int
|
||||
my_xpath_parse_QName(MY_XPATH *xpath)
|
||||
{
|
||||
const char *beg;
|
||||
if (!my_xpath_parse_term(xpath, MY_XPATH_LEX_IDENT))
|
||||
return 0;
|
||||
beg= xpath->prevtok.beg;
|
||||
if (!my_xpath_parse_term(xpath, MY_XPATH_LEX_COLON))
|
||||
return 1; /* Non qualified name */
|
||||
if (!my_xpath_parse_term(xpath, MY_XPATH_LEX_IDENT))
|
||||
return 0;
|
||||
xpath->prevtok.beg= beg;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Scan Variable reference
|
||||
|
||||
|
@ -2313,7 +2337,7 @@ my_xpath_parse_VariableReference(MY_XPATH *xpath)
|
|||
static int
|
||||
my_xpath_parse_NodeTest_QName(MY_XPATH *xpath)
|
||||
{
|
||||
if (!my_xpath_parse_term(xpath, MY_XPATH_LEX_IDENT))
|
||||
if (!my_xpath_parse_QName(xpath))
|
||||
return 0;
|
||||
DBUG_ASSERT(xpath->context);
|
||||
uint len= xpath->prevtok.end - xpath->prevtok.beg;
|
||||
|
|
Loading…
Add table
Reference in a new issue