diff --git a/src/test/perl/PostgresNode.pm b/src/test/perl/PostgresNode.pm
index cb84f1f..9d46c5d 100644
--- a/src/test/perl/PostgresNode.pm
+++ b/src/test/perl/PostgresNode.pm
@@ -86,6 +86,7 @@ use Config;
 use Cwd;
 use Exporter 'import';
 use File::Basename;
+use File::Path;
 use File::Spec;
 use File::Temp ();
 use IPC::Run;
@@ -139,11 +140,13 @@ sub new
 	my $self = {
 		_port    => $pgport,
 		_host    => $pghost,
-		_basedir => TestLib::tempdir("data_" . $name),
+		_basedir => "$TestLib::tmp_check/${testname}_data_${name}",
 		_name    => $name,
 		_logfile => "$TestLib::log_path/${testname}_${name}.log" };
 
 	bless $self, $class;
+	rmtree $self->{_basedir} if -e $self->{_basedir} && -d _;
+	mkdir $self->{_basedir} or die;
 	$self->dump_info;
 
 	return $self;
@@ -934,6 +937,9 @@ sub teardown_node
 	my $self = shift;
 
 	$self->stop('immediate');
+
+	rmtree $self->{_basedir}
+		unless !TestLib::all_tests_passing() || defined $ENV{'KEEP_TMPCHECK'};
 }
 
 =pod
