Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.1-new

into  mysql.com:/usr/home/bar/mysql-5.1-new.16313
This commit is contained in:
bar@mysql.com 2006-02-28 17:29:49 +04:00
commit 3fb0e543c8
3 changed files with 19 additions and 2 deletions

View File

@ -544,3 +544,5 @@ extractvalue('<a>a<b>B</b></a>','a|/b')
a
select extractvalue('<a>A</a>','/<a>');
ERROR HY000: XPATH syntax error: '>'
select extractvalue('<a><b>b</b><b!>b!</b!></a>','//b!');
ERROR HY000: XPATH syntax error: '!'

View File

@ -237,3 +237,9 @@ select extractvalue('<a>a<b>B</b></a>','a|/b');
#
--error 1105
select extractvalue('<a>A</a>','/<a>');
#
# Bug#16313 XML: extractvalue() ignores '!' in names
#
--error 1105
select extractvalue('<a><b>b</b><b!>b!</b!></a>','//b!');

View File

@ -1976,8 +1976,17 @@ static int my_xpath_parse_AndExpr(MY_XPATH *xpath)
*/
static int my_xpath_parse_ne(MY_XPATH *xpath)
{
return my_xpath_parse_term(xpath, MY_XPATH_LEX_EXCL) &&
my_xpath_parse_term(xpath, MY_XPATH_LEX_EQ);
MY_XPATH_LEX prevtok= xpath->prevtok;
if (!my_xpath_parse_term(xpath, MY_XPATH_LEX_EXCL))
return 0;
if (!my_xpath_parse_term(xpath, MY_XPATH_LEX_EQ))
{
/* Unget the exclamation mark */
xpath->lasttok= xpath->prevtok;
xpath->prevtok= prevtok;
return 0;
}
return 1;
}
static int my_xpath_parse_EqualityOperator(MY_XPATH *xpath)
{