pgsql: Add a debugging option to stress-test outfuncs.c andreadfuncs.c
От | Tom Lane |
---|---|
Тема | pgsql: Add a debugging option to stress-test outfuncs.c andreadfuncs.c |
Дата | |
Msg-id | E1g2NI0-0007PV-2r@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Add a debugging option to stress-test outfuncs.c and readfuncs.c. In the normal course of operation, query trees will be serialized only if they are stored as views or rules; and plan trees will be serialized only if they get passed to parallel-query workers. This leaves an awful lot of opportunity for bugs/oversights to not get detected, as indeed we've just been reminded of the hard way. To improve matters, this patch adds a new compile option WRITE_READ_PARSE_PLAN_TREES, which is modeled on the longstanding option COPY_PARSE_PLAN_TREES; but instead of passing all parse and plan trees through copyObject, it passes them through nodeToString + stringToNode. Enabling this option in a buildfarm animal or two will catch problems at least for cases that are exercised by the regression tests. A small problem with this idea is that readfuncs.c historically has discarded location fields, on the reasonable grounds that parse locations in a retrieved view are not relevant to the current query. But doing that in WRITE_READ_PARSE_PLAN_TREES breaks pg_stat_statements, and it could cause problems for future improvements that might try to report error locations at runtime. To fix that, provide a variant behavior in readfuncs.c that makes it restore location fields when told to. In passing, const-ify the string arguments of stringToNode and its subsidiary functions, just because it annoyed me that they weren't const already. Discussion: https://postgr.es/m/17114.1537138992@sss.pgh.pa.us Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/d0cfc3d6a44af1756ca5be8cb2414da7b8bf20d5 Modified Files -------------- src/backend/nodes/read.c | 68 ++++++++++++++++++++++++++++------ src/backend/nodes/readfuncs.c | 31 +++++++++++----- src/backend/parser/parse_relation.c | 1 - src/backend/tcop/postgres.c | 74 ++++++++++++++++++++++++++++++++++++- src/include/nodes/nodes.h | 5 ++- src/include/nodes/readfuncs.h | 13 +++++-- src/include/pg_config_manual.h | 7 ++++ 7 files changed, 170 insertions(+), 29 deletions(-)
В списке pgsql-committers по дате отправления: