mirror of
https://github.com/postgres/postgres.git
synced 2025-04-22 23:02:54 +03:00
Fix local/remote attribute mix-up in logical replication
This would lead to failures if local and remote tables have a different column order. The tests previously didn't catch that because they only tested the initial data copy. So add another test that exercises the apply worker. Author: Petr Jelinek <petr.jelinek@2ndquadrant.com>
This commit is contained in:
parent
0e58455dd4
commit
fca17a933b
@ -402,7 +402,8 @@ slot_modify_cstrings(TupleTableSlot *slot, LogicalRepRelMapEntry *rel,
|
||||
errarg.attnum = remoteattnum;
|
||||
|
||||
getTypeInputInfo(att->atttypid, &typinput, &typioparam);
|
||||
slot->tts_values[i] = OidInputFunctionCall(typinput, values[i],
|
||||
slot->tts_values[i] = OidInputFunctionCall(typinput,
|
||||
values[remoteattnum],
|
||||
typioparam,
|
||||
att->atttypmod);
|
||||
slot->tts_isnull[i] = false;
|
||||
|
@ -89,6 +89,8 @@ $node_publisher->safe_psql('postgres',
|
||||
$node_publisher->safe_psql('postgres', "DELETE FROM tab_rep WHERE a > 20");
|
||||
$node_publisher->safe_psql('postgres', "UPDATE tab_rep SET a = -a");
|
||||
|
||||
$node_publisher->safe_psql('postgres', "INSERT INTO tab_mixed VALUES (2, 'bar')");
|
||||
|
||||
$node_publisher->poll_query_until('postgres', $caughtup_query)
|
||||
or die "Timed out while waiting for subscriber to catch up";
|
||||
|
||||
@ -102,7 +104,8 @@ is($result, qq(20|-20|-1), 'check replicated changes on subscriber');
|
||||
|
||||
$result = $node_subscriber->safe_psql('postgres',
|
||||
"SELECT c, b, a FROM tab_mixed");
|
||||
is($result, qq(|foo|1), 'check replicated changes with different column order');
|
||||
is($result, qq(|foo|1
|
||||
|bar|2), 'check replicated changes with different column order');
|
||||
|
||||
# insert some duplicate rows
|
||||
$node_publisher->safe_psql('postgres',
|
||||
|
Loading…
x
Reference in New Issue
Block a user