diff options
author | unknown <bar@mysql.com> | 2006-03-03 18:36:14 +0400 |
---|---|---|
committer | unknown <bar@mysql.com> | 2006-03-03 18:36:14 +0400 |
commit | a5694ba4cf36bbb4434d319665831fb25b1c995e (patch) | |
tree | 2b26ee2e04c02d466877f00f7d596e6d5541d0ca /mysql-test/t/xml.test | |
parent | 104b9e789a60c8881e6e82cbbf7b8d919ff1bbf1 (diff) | |
download | mariadb-git-a5694ba4cf36bbb4434d319665831fb25b1c995e.tar.gz |
Bug#16318: XML: extractvalue() incorrectly returns last() = 1
xml.result, xml.test:
Adding test case.
item_xmlfunc.cc:
- adding "size" member into MY_XPATH_FLT struct,
to pass parent's context size when iterating
in a predicate. Previously, temporaty context
size was calculated instead, which is always 1.
As a result, things like last() and count()
didn't work fine.
- adding iteration into Item_func_xpath_elementbyindex:
similar to Item_func_xpath_predicate.
This is to make things like last() and count()
work inside square brackets.
sql/item_xmlfunc.cc:
Bug#16318: XML: extractvalue() incorrectly returns last() = 1
- adding "size" member into MY_XPATH_FLT struct,
to pass parent's context size when iterating
in a predicate. Previously, temporaty context
size was calculated instead, which is always 1.
As a result, things like last() and count()
didn't work fine.
- adding iteration into Item_func_xpath_elementbyindex:
similar to Item_func_xpath_predicate.
This is to make things like last() and count()
work inside square brackets.
mysql-test/t/xml.test:
Adding test case.
mysql-test/r/xml.result:
Adding test case.
Diffstat (limited to 'mysql-test/t/xml.test')
-rw-r--r-- | mysql-test/t/xml.test | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/mysql-test/t/xml.test b/mysql-test/t/xml.test index 6a91d785d4e..b4272c7cabc 100644 --- a/mysql-test/t/xml.test +++ b/mysql-test/t/xml.test @@ -254,3 +254,19 @@ select extractvalue('<a>A<b>B<c>C</c></b></a>','/a/descendant-or-self::*'); # Bug #16320 XML: extractvalue() won't accept names containing underscores # select extractvalue('<A_B>A</A_B>','/A_B'); + +# +# Bug#16318: XML: extractvalue() incorrectly returns last() = 1 +# +select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[position()]'); +select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=last()]'); +select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()]'); +select 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()=1]'); +select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()=2]'); +select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[last()=position()]'); +select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)]'); +select 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(.)=1]'); +select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=2]'); +select extractvalue('<a>A<b>B1</b><b>B2</b></a>','/a/b[count(.)=position()]'); |