Clarification of nodeToString() use cases
| От | Andrey Lepikhov |
|---|---|
| Тема | Clarification of nodeToString() use cases |
| Дата | |
| Msg-id | 3690074f-abd2-56a9-144a-aa5545d7a291@postgrespro.ru обсуждение исходный текст |
| Ответы |
XMLNAMESPACES (was Re: Clarification of nodeToString() use cases)
|
| Список | pgsql-hackers |
Hi, Hackers! In the AQO project (Adaptive Query Optimization) [1] the nodeToString() function is used by the planner to convert an query parse tree into a string to generate a hash value [2]. In PostgreSQL v.11 call nodeToString(parse) segfaulted. The reason is: parse tree node for XMLNAMESPACES clause has null pointer in the case of DEFAULT namespace (the pointer will be initialized at executor on the first call). Function _outValue() uses value->val.str[0] [3] without checking of value->val.str. I want to know, which of next options is correct: 1. Converting a parse tree into string with nodeToString() is illegal operation. We need to add a comment to the description of nodeToString(). 2. We can use nodeToString() for parse tree convertation. In this case we need to check node variable 'value->val.str' to NULL pointer (Now I use this approach, see attachment). [1] https://github.com/postgrespro/aqo [2] hash.c, line 55. [3] outfuncs.c, line 3312. -- Andrey Lepikhov Postgres Professional https://postgrespro.com The Russian Postgres Company
Вложения
В списке pgsql-hackers по дате отправления: