因此,我正在尝试在PostgreSQL 10.7
中使用逻辑复制,并使用AWS Kinesis通过我们的系统(source)复制数据。虽然效果很好,但我注意到的是以下情况:
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"]
}
...
所以我的问题是,当我在下游使用此更改时,有什么办法让我知道与这些更改相关的表?