From: Christoph Moench-Tegeder Date: Thu, 24 Jul 2014 15:46:20 +0000 (+0200) Subject: bdr: basic UPDATE tests X-Git-Tag: bdr-plugin/dynconf-before-global-add~227 X-Git-Url: http://git.postgresql.org/gitweb/static/gitweb.js?a=commitdiff_plain;h=910dc8d357b799b9bdc58ddb2fab42b0271fa482;p=2ndquadrant_bdr.git bdr: basic UPDATE tests --- diff --git a/Makefile b/Makefile index 95a6ee6f92..ba468625bf 100644 --- a/Makefile +++ b/Makefile @@ -68,7 +68,7 @@ check: all | submake-regress submake-btree_gist submake-pg_trgm regresscheck REGRESSCHECKS=init \ ddl/create ddl/alter_table ddl/extension ddl/sequence \ - dml/basic dml/delete_pk dml/delete_extended dml/toasted + dml/basic dml/delete_pk dml/delete_extended dml/update_basic dml/toasted regresscheck: [ -e pg_hba.conf ] || ln -s $(top_srcdir)/contrib/bdr/pg_hba.conf . diff --git a/expected/dml/update_basic.out b/expected/dml/update_basic.out new file mode 100644 index 0000000000..b7f9ed5030 --- /dev/null +++ b/expected/dml/update_basic.out @@ -0,0 +1,109 @@ +-- 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; diff --git a/sql/dml/update_basic.sql b/sql/dml/update_basic.sql new file mode 100644 index 0000000000..35df6d65b0 --- /dev/null +++ b/sql/dml/update_basic.sql @@ -0,0 +1,42 @@ +-- 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;