pgsql: logical replication: fix OID type mapping mechanism

Поиск
Список
Период
Сортировка
От Alvaro Herrera
Тема pgsql: logical replication: fix OID type mapping mechanism
Дата
Msg-id E1ewGr5-0005wl-Ll@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
logical replication: fix OID type mapping mechanism

The logical replication type map seems to have been misused by its only
caller -- it would try to use the remote OID as input for local type
routines, which unsurprisingly could result in bogus "cache lookup
failed for type XYZ" errors, or random other type names being picked up
if they happened to use the right OID.  Fix that, changing
Oid logicalrep_typmap_getid(Oid remoteid) to
char *logicalrep_typmap_gettypname(Oid remoteid)
which is more useful.  If the remote type is not part of the typmap,
this simply prints "unrecognized type" instead of choking trying to
figure out -- a pointless exercise (because the only input for that
comes from replication messages, which are not under the local node's
control) and dangerous to boot, when called from within an error context
callback.

Once that is done, it comes to light that the local OID in the typmap
entry was not being used for anything; the type/schema names are what we
need, so remove local type OID from that struct.

Once you do that, it becomes pointless to attach a callback to regular
syscache invalidation.  So remove that also.

Reported-by: Dang Minh Huong
Author: Masahiko Sawada
Reviewed-by: Álvaro Herrera, Petr Jelínek, Dang Minh Huong, Atsushi Torikoshi
Discussion: https://postgr.es/m/75DB81BEEA95B445AE6D576A0A5C9E936A6BE964@BPXM05GP.gisp.nec.co.jp
Discussion: https://postgr.es/m/75DB81BEEA95B445AE6D576A0A5C9E936A6C4B0A@BPXM05GP.gisp.nec.co.jp

Branch
------
REL_10_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/3c3450e74ff8d0b7d4952003ad8c8ecab08a0ef8

Modified Files
--------------
src/backend/replication/logical/relation.c | 90 ++++++++++--------------------
src/backend/replication/logical/worker.c   | 63 +++++++++++++--------
src/include/replication/logicalproto.h     |  7 +--
src/include/replication/logicalrelation.h  |  2 +-
4 files changed, 74 insertions(+), 88 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Michael Paquier
Дата:
Сообщение: Re: pgsql: Move strtoint() to common
Следующее
От: Alvaro Herrera
Дата:
Сообщение: pgsql: test_ddl_deparse: Don't use pg_class as source for a matview