diff options
author | unknown <bar@mysql.com> | 2006-03-02 10:42:08 +0400 |
---|---|---|
committer | unknown <bar@mysql.com> | 2006-03-02 10:42:08 +0400 |
commit | 526d28f36a8e5cabbec495d5745230faa0471011 (patch) | |
tree | 870c8c101fe7f45878a5679e849ae600cb287094 /sql/item_xmlfunc.cc | |
parent | 605c82d2a8502d4114a0ab1768ccf894903699e6 (diff) | |
parent | 3f480fcb9f726f65925526045e036b16ecc2d8fa (diff) | |
download | mariadb-git-526d28f36a8e5cabbec495d5745230faa0471011.tar.gz |
Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into mysql.com:/usr/home/bar/mysql-5.1-new.16315
sql/item_xmlfunc.cc:
Auto merged
mysql-test/r/xml.result:
After merge fix
mysql-test/t/xml.test:
After merge fix
Diffstat (limited to 'sql/item_xmlfunc.cc')
-rw-r--r-- | sql/item_xmlfunc.cc | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/sql/item_xmlfunc.cc b/sql/item_xmlfunc.cc index 61f7579fa22..26c2e84f8dd 100644 --- a/sql/item_xmlfunc.cc +++ b/sql/item_xmlfunc.cc @@ -252,6 +252,18 @@ public: }; +/* Returns self */ +class Item_nodeset_func_selfbyname: public Item_nodeset_func_axisbyname +{ +public: + Item_nodeset_func_selfbyname(Item *a, const char *n_arg, uint l_arg, + String *pxml): + Item_nodeset_func_axisbyname(a, n_arg, l_arg, pxml) {} + const char *func_name() const { return "xpath_selfbyname"; } + String *val_nodeset(String *nodeset); +}; + + /* Returns children */ class Item_nodeset_func_childbyname: public Item_nodeset_func_axisbyname { @@ -572,6 +584,20 @@ String * Item_nodeset_func_union::val_nodeset(String *nodeset) } +String *Item_nodeset_func_selfbyname::val_nodeset(String *nodeset) +{ + prepare(nodeset); + for (MY_XPATH_FLT *flt= fltbeg; flt < fltend; flt++) + { + uint pos= 0; + MY_XML_NODE *self= &nodebeg[flt->num]; + if (validname(self)) + ((XPathFilter*)nodeset)->append_element(flt->num,pos++); + } + return nodeset; +} + + String *Item_nodeset_func_childbyname::val_nodeset(String *nodeset) { prepare(nodeset); @@ -945,6 +971,9 @@ static Item* nametestfunc(MY_XPATH *xpath, case MY_XPATH_AXIS_ATTRIBUTE: res= new Item_nodeset_func_attributebyname(arg, beg, len, xpath->pxml); break; + case MY_XPATH_AXIS_SELF: + res= new Item_nodeset_func_selfbyname(arg, beg, len, xpath->pxml); + break; default: res= new Item_nodeset_func_childbyname(arg, beg, len, xpath->pxml); } |