--- /dev/null
+-- UPDATEs with simple types
+CREATE TABLE tst (
+ a INTEGER PRIMARY KEY,
+ b TEXT,
+ c FLOAT
+ );
+INSERT INTO tst (a, b, c) SELECT generate_series(1, 1000), 1, 1;
+SELECT pg_xlog_wait_remote_apply(pg_current_xlog_location()::text, pid) FROM pg_stat_replication;
+ pg_xlog_wait_remote_apply
+---------------------------
+
+
+(2 rows)
+
+\c postgres
+SELECT COUNT(*) FROM tst;
+ count
+-------
+ 1000
+(1 row)
+
+UPDATE tst SET b = 'xyz';
+SELECT pg_xlog_wait_remote_apply(pg_current_xlog_location()::text, pid) FROM pg_stat_replication;
+ pg_xlog_wait_remote_apply
+---------------------------
+
+
+(2 rows)
+
+\c regression
+SELECT b, COUNT(*) FROM tst GROUP BY b ORDER BY b;
+ b | count
+-----+-------
+ xyz | 1000
+(1 row)
+
+UPDATE tst SET b = 'def' WHERE a BETWEEN 10 AND 500;
+SELECT pg_xlog_wait_remote_apply(pg_current_xlog_location()::text, pid) FROM pg_stat_replication;
+ pg_xlog_wait_remote_apply
+---------------------------
+
+
+(2 rows)
+
+\c postgres
+SELECT b, COUNT(*) FROM tst GROUP BY b ORDER BY b;
+ b | count
+-----+-------
+ def | 491
+ xyz | 509
+(2 rows)
+
+-- two UPDATEs without explicit sync in between
+UPDATE tst SET b = 'abc' WHERE a BETWEEN 10 AND 500;
+\c regression
+UPDATE tst SET b = 'abc' WHERE a = 1;
+SELECT pg_xlog_wait_remote_apply(pg_current_xlog_location()::text, pid) FROM pg_stat_replication;
+ pg_xlog_wait_remote_apply
+---------------------------
+
+
+(2 rows)
+
+\c postgres
+SELECT pg_xlog_wait_remote_apply(pg_current_xlog_location()::text, pid) FROM pg_stat_replication;
+ pg_xlog_wait_remote_apply
+---------------------------
+
+
+(2 rows)
+
+SELECT b, count(*) FROM tst GROUP BY b ORDER BY b;
+ b | count
+-----+-------
+ abc | 492
+ xyz | 508
+(2 rows)
+
+\c regression
+SELECT b, count(*) FROM tst GROUP BY b ORDER BY b;
+ b | count
+-----+-------
+ abc | 492
+ xyz | 508
+(2 rows)
+
+BEGIN;
+UPDATE tst SET b = 'abc' WHERE a BETWEEN 10 AND 500;
+UPDATE tst SET b = 'abc1' WHERE a BETWEEN 20 AND 600;
+UPDATE tst SET b = 'abc2' WHERE a BETWEEN 30 AND 700;
+COMMIT;
+SELECT pg_xlog_wait_remote_apply(pg_current_xlog_location()::text, pid) FROM pg_stat_replication;
+ pg_xlog_wait_remote_apply
+---------------------------
+
+
+(2 rows)
+
+\c postgres
+SELECT b, count(*) FROM tst GROUP BY b ORDER BY b;
+ b | count
+------+-------
+ abc | 11
+ abc1 | 10
+ abc2 | 671
+ xyz | 308
+(4 rows)
+
+DROP TABLE tst;
--- /dev/null
+-- UPDATEs with simple types
+CREATE TABLE tst (
+ a INTEGER PRIMARY KEY,
+ b TEXT,
+ c FLOAT
+ );
+INSERT INTO tst (a, b, c) SELECT generate_series(1, 1000), 1, 1;
+SELECT pg_xlog_wait_remote_apply(pg_current_xlog_location()::text, pid) FROM pg_stat_replication;
+\c postgres
+SELECT COUNT(*) FROM tst;
+
+UPDATE tst SET b = 'xyz';
+SELECT pg_xlog_wait_remote_apply(pg_current_xlog_location()::text, pid) FROM pg_stat_replication;
+\c regression
+SELECT b, COUNT(*) FROM tst GROUP BY b ORDER BY b;
+
+UPDATE tst SET b = 'def' WHERE a BETWEEN 10 AND 500;
+SELECT pg_xlog_wait_remote_apply(pg_current_xlog_location()::text, pid) FROM pg_stat_replication;
+\c postgres
+SELECT b, COUNT(*) FROM tst GROUP BY b ORDER BY b;
+
+-- two UPDATEs without explicit sync in between
+UPDATE tst SET b = 'abc' WHERE a BETWEEN 10 AND 500;
+\c regression
+UPDATE tst SET b = 'abc' WHERE a = 1;
+SELECT pg_xlog_wait_remote_apply(pg_current_xlog_location()::text, pid) FROM pg_stat_replication;
+\c postgres
+SELECT pg_xlog_wait_remote_apply(pg_current_xlog_location()::text, pid) FROM pg_stat_replication;
+SELECT b, count(*) FROM tst GROUP BY b ORDER BY b;
+\c regression
+SELECT b, count(*) FROM tst GROUP BY b ORDER BY b;
+
+BEGIN;
+UPDATE tst SET b = 'abc' WHERE a BETWEEN 10 AND 500;
+UPDATE tst SET b = 'abc1' WHERE a BETWEEN 20 AND 600;
+UPDATE tst SET b = 'abc2' WHERE a BETWEEN 30 AND 700;
+COMMIT;
+SELECT pg_xlog_wait_remote_apply(pg_current_xlog_location()::text, pid) FROM pg_stat_replication;
+\c postgres
+SELECT b, count(*) FROM tst GROUP BY b ORDER BY b;
+
+DROP TABLE tst;