mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
34 lines
1.0 KiB
Perl
34 lines
1.0 KiB
Perl
# Single-node test: value can be set, and is still present after recovery
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use TestLib;
|
|
use Test::More tests => 2;
|
|
use PostgresNode;
|
|
|
|
my $node = get_new_node();
|
|
$node->init;
|
|
$node->append_conf('postgresql.conf', 'track_commit_timestamp = on');
|
|
$node->start;
|
|
|
|
# Create a table, compare "now()" to the commit TS of its xmin
|
|
$node->safe_psql('postgres',
|
|
'create table t as select now from (select now(), pg_sleep(1)) f');
|
|
my $true = $node->safe_psql('postgres',
|
|
'select t.now - ts.* < \'1s\' from t, pg_class c, pg_xact_commit_timestamp(c.xmin) ts where relname = \'t\''
|
|
);
|
|
is($true, 't', 'commit TS is set');
|
|
my $ts = $node->safe_psql('postgres',
|
|
'select ts.* from pg_class, pg_xact_commit_timestamp(xmin) ts where relname = \'t\''
|
|
);
|
|
|
|
# Verify that we read the same TS after crash recovery
|
|
$node->stop('immediate');
|
|
$node->start;
|
|
|
|
my $recovered_ts = $node->safe_psql('postgres',
|
|
'select ts.* from pg_class, pg_xact_commit_timestamp(xmin) ts where relname = \'t\''
|
|
);
|
|
is($recovered_ts, $ts, 'commit TS remains after crash recovery');
|