diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index acd95aa..b44fed0 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -5216,6 +5216,14 @@ readRecoveryCommandFile(void) } FreeConfigVariables(head); + + /* + * We don't support standby_mode in standalone backends; that + * requires other processes such as the WAL receiver to be alive. + */ + if (StandbyModeRequested && !IsUnderPostmaster) + ereport(FATAL, + (errmsg("standby mode is not supported for standalone backends"))); } /* diff --git a/src/test/recovery/t/001_stream_rep.pl b/src/test/recovery/t/001_stream_rep.pl index fd71095..7b47301 100644 --- a/src/test/recovery/t/001_stream_rep.pl +++ b/src/test/recovery/t/001_stream_rep.pl @@ -3,7 +3,7 @@ use strict; use warnings; use PostgresNode; use TestLib; -use Test::More tests => 4; +use Test::More tests => 5; # Initialize master node my $node_master = get_new_node('master'); @@ -18,6 +18,11 @@ $node_master->backup($backup_name); my $node_standby_1 = get_new_node('standby_1'); $node_standby_1->init_from_backup($node_master, $backup_name, has_streaming => 1); + +# Standby mode not supported for standalone backends +command_fails(['postgres', '--single', '-D', $node_standby_1->data_dir], + 'no standby mode support for standalone backends'); + $node_standby_1->start; # Take backup of standby 1 (not mandatory, but useful to check if