pgsql: Make postgres_fdw's "Relations" output agree with the rest of EX
От | Tom Lane |
---|---|
Тема | pgsql: Make postgres_fdw's "Relations" output agree with the rest of EX |
Дата | |
Msg-id | E1ibtHi-0000ou-4N@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Make postgres_fdw's "Relations" output agree with the rest of EXPLAIN. The relation aliases shown in the "Relations" line for a foreign scan didn't always agree with those used in the rest of EXPLAIN's output. The regression test result changes appearing here provide examples. It's really impossible for postgres_fdw to duplicate EXPLAIN's alias assignment logic during postgresGetForeignRelSize(), because of the de-duplication that EXPLAIN does on a global basis --- and anyway, trying to duplicate that would be unmaintainable. Instead, just put numeric rangetable indexes into the string, and convert those to table names/aliases in postgresExplainForeignScan, which does have access to the results of ruleutils.c's alias assignment logic. Aside from being more reliable, this shifts some work from planning to EXPLAIN, which is a good tradeoff for performance. (I also changed from using StringInfo to using psprintf, which makes the code slightly simpler and reduces its memory consumption.) A kluge required by this solution is that we have to reverse-engineer the rtoffset applied by setrefs.c. If that logic ever fails (presumably because the member tables of a join got offset by different amounts), we'll need some more cooperation with setrefs.c to keep things straight. But for now, there's no need for that. Arguably this is a back-patchable bug fix, but since this is a mostly cosmetic issue and there have been no field complaints, I'll refrain for now. Discussion: https://postgr.es/m/12424.1575168015@sss.pgh.pa.us Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/4526951d564a7eed512b4a0ac3b5893e0a115690 Modified Files -------------- contrib/postgres_fdw/expected/postgres_fdw.out | 30 +++--- contrib/postgres_fdw/postgres_fdw.c | 132 ++++++++++++++++++------- contrib/postgres_fdw/postgres_fdw.h | 11 ++- 3 files changed, 117 insertions(+), 56 deletions(-)
В списке pgsql-committers по дате отправления: