diff options
Diffstat (limited to 'sql')
-rw-r--r-- | sql/item_xmlfunc.cc | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/sql/item_xmlfunc.cc b/sql/item_xmlfunc.cc index d86b6acfc56..aad9e12f6c5 100644 --- a/sql/item_xmlfunc.cc +++ b/sql/item_xmlfunc.cc @@ -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) { |