pgsql: Make pg_get_expr() more bulletproof.
От | Tom Lane |
---|---|
Тема | pgsql: Make pg_get_expr() more bulletproof. |
Дата | |
Msg-id | E1n6cDs-0002uj-Nn@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Make pg_get_expr() more bulletproof. Since this function is defined to accept pg_node_tree values, it could get applied to any nodetree that can appear in a cataloged pg_node_tree column. Some such cases can't be supported --- for example, its API doesn't allow providing referents for more than one relation --- but we should try to throw a user-facing error rather than an internal error when encountering such a case. In support of this, extend expression_tree_walker/mutator to be sure they'll work on any such node tree (which basically means adding support for relpartbound node types). That allows us to run pull_varnos and check for the case of multiple relations before we start processing the tree. The alternative of changing the low-level error thrown for an out-of-range varno isn't appealing, because that could mask actual bugs in other usages of ruleutils. Per report from Justin Pryzby. This is basically cosmetic, so no back-patch. Discussion: https://postgr.es/m/20211219205422.GT17618@telsasoft.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/6867f963e319934cbdafeb4bd5beaea5797c7be2 Modified Files -------------- src/backend/nodes/nodeFuncs.c | 42 +++++++++++++++++++++++++++++++++++++ src/backend/optimizer/util/var.c | 11 ++++++++-- src/backend/utils/adt/ruleutils.c | 44 ++++++++++++++++++++++++++++++++++++++- 3 files changed, 94 insertions(+), 3 deletions(-)
В списке pgsql-committers по дате отправления: