############################################################################### # Check that replay will correctly set SUBTRANS and properly advance nextXid # so that it won't conflict with savepoint xids. ###############################################################################
$node_primary->psql( 'postgres', " BEGIN; DELETE FROM t_012_tbl;
INSERT INTO t_012_tbl VALUES (43);
SAVEPOINT s1;
INSERT INTO t_012_tbl VALUES (43);
SAVEPOINT s2;
INSERT INTO t_012_tbl VALUES (43);
SAVEPOINT s3;
INSERT INTO t_012_tbl VALUES (43);
SAVEPOINT s4;
INSERT INTO t_012_tbl VALUES (43);
SAVEPOINT s5;
INSERT INTO t_012_tbl VALUES (43);
PREPARE TRANSACTION 'xact_012_1';
CHECKPOINT;");
$node_primary->stop;
$node_primary->start;
$node_primary->psql( 'postgres', "
-- here we can get xid of previous savepoint if nextXid
-- wasn't properly advanced BEGIN;
INSERT INTO t_012_tbl VALUES (142);
ROLLBACK;
COMMIT PREPARED 'xact_012_1';");
$node_primary->psql( 'postgres', "SELECT count(*) FROM t_012_tbl",
stdout => \$psql_out);
is($psql_out, '6', "Check nextXid handling for prepared subtransactions");
############################################################################### # Check that replay will correctly set 2PC with more than # PGPROC_MAX_CACHED_SUBXIDS subtransactions and also show data properly # on promotion ###############################################################################
$node_primary->psql('postgres', "DELETE FROM t_012_tbl");
# Function borrowed from src/test/regress/sql/hs_primary_extremes.sql
$node_primary->psql( 'postgres', "
CREATE OR REPLACE FUNCTION hs_subxids (n integer)
RETURNS void
LANGUAGE plpgsql
AS \$\$ BEGIN IF n <= 0THEN RETURN; ENDIF;
INSERT INTO t_012_tbl VALUES (n);
PERFORM hs_subxids(n - 1);
RETURN;
EXCEPTION WHEN raise_exception THEN NULL; END;
\$\$;");
$node_primary->psql( 'postgres', " BEGIN;
SELECT hs_subxids(127);
COMMIT;");
$node_primary->wait_for_catchup($node_standby);
$node_standby->psql( 'postgres', "SELECT coalesce(sum(id),-1) FROM t_012_tbl",
stdout => \$psql_out);
is($psql_out, '8128', "Visible");
$node_primary->stop;
$node_standby->promote;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.