Итак, я экспериментировал с использованием логической репликации в 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"]
}
...
Итак, мой вопрос: когда я потребляю это изменение вниз по течению, есть ли какой-нибудь способ для меня узнать таблицу, связанную с этими изменениями?