pgsql: Avoid crash with WHERE CURRENT OF and a custom scan plan.
От | Tom Lane |
---|---|
Тема | pgsql: Avoid crash with WHERE CURRENT OF and a custom scan plan. |
Дата | |
Msg-id | E1l1e1f-0004Cb-KA@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Avoid crash with WHERE CURRENT OF and a custom scan plan. execCurrent.c's search_plan_tree() assumed that ForeignScanStates and CustomScanStates necessarily have a valid ss_currentRelation. This is demonstrably untrue for postgres_fdw's remote join and remote aggregation plans, and non-leaf custom scans might not have an identifiable scan relation either. Avoid crashing by ignoring such nodes when the field is null. This solution will lead to errors like 'cursor "foo" is not a simply updatable scan of table "bar"' in cases where maybe we could have allowed WHERE CURRENT OF to work. That's not an issue for postgres_fdw's usages, since joins or aggregations would render WHERE CURRENT OF invalid anyway. But an otherwise-transparent upper level custom scan node might find this annoying. When and if someone cares to expend work on such a scenario, we could invent a custom-scan-provider callback to determine what's safe. Report and patch by David Geier, commentary by me. It's been like this for awhile, so back-patch to all supported branches. Discussion: https://postgr.es/m/0253344d-9bdd-11c4-7f0d-d88c02cd7991@swarm64.com Branch ------ REL9_6_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/ffbf1746354a44a16d4d525d62226aa65fdb4e69 Modified Files -------------- src/backend/executor/execCurrent.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)
В списке pgsql-committers по дате отправления: