PostgreSQL логическая репликация реплицирует временную таблицу при обратной засыпке столбцов по умолчанию - PullRequest
0 голосов
/ 06 июня 2019

Итак, я экспериментировал с использованием логической репликации в PostgreSQL 10.7 и AWS Kinesis для репликации данных через нашу систему ( источник ). Хотя это прекрасно работает, одна вещь, которую я заметил, это случай ниже:

CREATE TABLE foo (id SERIAL PRIMARY KEY, value TEXT);

INSERT INTO foo (value) VALUES ('test');
INSERT INTO foo (value) VALUES ('test2');
INSERT INTO foo (value) VALUES ('test3');
INSERT INTO foo (value) VALUES ('test4');

Издает (используя wal2json) нижеприведенное, как и ожидалось:

{
    "change": [
        {
            "kind": "insert",
            "schema": "public",
            "table": "foo",
            "columnnames": ["id", "value"],
            "columntypes": ["integer", "text"],
            "columnvalues": [1, "test"]
        }
    ]
}
...

Однако, если я тогда ALTER у таблицы появится новый столбец со значением по умолчанию:

ALTER TABLE foo ADD COLUMN bar TEXT DEFAULT 'bar';

Сгенерированные WAL связаны с временной таблицей, предположительно, потому что вся таблица должна быть переписана.

{
    "change": [
        {
            "kind": "insert",
            "schema": "public",
            "table": "pg_temp_16408",
            "columnnames": ["id", "value", "bar"],
            "columntypes": ["integer", "text", "text"],
            "columnvalues": [1, "test", "bar"]
        }
        ,{
            "kind": "insert",
            "schema": "public",
            "table": "pg_temp_16408",
            "columnnames": ["id", "value", "bar"],
            "columntypes": ["integer", "text", "text"],
            "columnvalues": [2, "test", "bar"]
        }
    ...

Итак, мой вопрос: когда я потребляю это изменение вниз по течению, есть ли какой-нибудь способ для меня узнать таблицу, связанную с этими изменениями?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...