1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-01 03:47:19 +03:00

Fix for bug #32557: order by updatexml causes assertion in filesort

Problem: even if an Item_xml_str_func successor returns NULL, it doesn't have 
a corresponding property (maybe_null) set, that leads to a failed assertion.

Fix: set nullability property of Item_xml_str_func.
This commit is contained in:
ramil/ram@mysql.com/ramil.myoffice.izhnet.ru
2007-11-21 16:00:09 +04:00
parent 92512e608a
commit b8f65ccf6f
3 changed files with 25 additions and 2 deletions

View File

@ -1022,4 +1022,11 @@ NULL NULL NULL
select updatexml(NULL, NULL, NULL);
updatexml(NULL, NULL, NULL)
NULL
CREATE TABLE t1(a INT NOT NULL);
INSERT INTO t1 VALUES (0), (0);
SELECT 1 FROM t1 ORDER BY(UPDATEXML(a, '1', '1'));
1
1
1
DROP TABLE t1;
End of 5.1 tests

View File

@ -543,4 +543,12 @@ select updatexml(NULL, NULL, 1), updatexml(1, NULL, NULL),
updatexml(NULL, 1, NULL);
select updatexml(NULL, NULL, NULL);
#
# Bug #32557: order by updatexml causes assertion in filesort
#
CREATE TABLE t1(a INT NOT NULL);
INSERT INTO t1 VALUES (0), (0);
SELECT 1 FROM t1 ORDER BY(UPDATEXML(a, '1', '1'));
DROP TABLE t1;
--echo End of 5.1 tests

View File

@ -28,8 +28,16 @@ protected:
String tmp_value, pxml;
Item *nodeset_func;
public:
Item_xml_str_func(Item *a, Item *b): Item_str_func(a,b) {}
Item_xml_str_func(Item *a, Item *b, Item *c): Item_str_func(a,b,c) {}
Item_xml_str_func(Item *a, Item *b):
Item_str_func(a,b)
{
maybe_null= TRUE;
}
Item_xml_str_func(Item *a, Item *b, Item *c):
Item_str_func(a,b,c)
{
maybe_null= TRUE;
}
void fix_length_and_dec();
String *parse_xml(String *raw_xml, String *parsed_xml_buf);
};