diff options
author | Alexander Barkov <bar@mariadb.org> | 2018-02-08 19:06:25 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.org> | 2018-02-08 19:06:25 +0400 |
commit | 3cad31f2a758f797ef0acac5625d0e007ecbce93 (patch) | |
tree | 73c054636c4858b2a51eddf7eaa653746d67524e /sql/item_xmlfunc.cc | |
parent | 560b9895d413bdfedda0a0ca871a635858990c05 (diff) | |
parent | 5c057b3fef3aa92cfadbd63043799b430132a494 (diff) | |
download | mariadb-git-3cad31f2a758f797ef0acac5625d0e007ecbce93.tar.gz |
Merge remote-tracking branch 'origin/10.2' into bb-10.2-ext
Diffstat (limited to 'sql/item_xmlfunc.cc')
-rw-r--r-- | sql/item_xmlfunc.cc | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sql/item_xmlfunc.cc b/sql/item_xmlfunc.cc index a69d48e8328..af32bf9a46d 100644 --- a/sql/item_xmlfunc.cc +++ b/sql/item_xmlfunc.cc @@ -2734,7 +2734,7 @@ void Item_xml_str_func::fix_length_and_dec() bool Item_xml_str_func::fix_fields(THD *thd, Item **ref) { - String *xp, tmp; + String *xp; MY_XPATH xpath; int rc; @@ -2762,7 +2762,13 @@ bool Item_xml_str_func::fix_fields(THD *thd, Item **ref) return true; } - if (!(xp= args[1]->val_str(&tmp))) + /* + Get the XPath query text from args[1] and cache it in m_xpath_query. + Its fragments will be referenced by items created during my_xpath_parse(), + e.g. by Item_nodeset_func_axisbyname::node_name. + */ + if (!(xp= args[1]->val_str(&m_xpath_query)) || + (xp != &m_xpath_query && m_xpath_query.copy(*xp))) return false; // Will return NULL my_xpath_init(&xpath); xpath.thd= thd; |