*** a/doc/src/sgml/func.sgml
--- b/doc/src/sgml/func.sgml
***************
*** 14219,14224 **** postgres=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup());
--- 14219,14234 ----
      </tgroup>
     </table>
  
+    <indexterm>
+     <primary>pg_is_xlog_replay_paused</primary>
+    </indexterm>
+    <indexterm>
+     <primary>pg_xlog_replay_pause</primary>
+    </indexterm>
+    <indexterm>
+     <primary>pg_xlog_replay_resume</primary>
+    </indexterm>
+ 
     <para>
      The functions shown in <xref
      linkend="functions-recovery-control-table"> control the progress of recovery.
*** a/doc/src/sgml/recovery-config.sgml
--- b/doc/src/sgml/recovery-config.sgml
***************
*** 272,277 **** restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"'  # Windows
--- 272,281 ----
          recovery target settings to a later target and restart to
          continue recovery.
         </para>
+        <para>
+         This setting has no effect if either <xref linkend="guc-hot-standby">
+         is <literal>off</> or no recovery target is set.
+        </para>
        </listitem>
       </varlistentry>
  
*** a/src/backend/access/transam/recovery.conf.sample
--- b/src/backend/access/transam/recovery.conf.sample
***************
*** 87,92 ****
--- 87,100 ----
  #
  #recovery_target_timeline = 'latest'
  #
+ #
+ # If pause_at_recovery_target is enabled, recovery will pause when the
+ # recovery target is reached. The pause state will continue until
+ # pg_xlog_replay_resume() is called. This setting has no effect if either
+ # hot standby is disabled or no recovery target is set.
+ #
+ #pause_at_recovery_target = true
+ #
  #---------------------------------------------------------------------------
  # STANDBY SERVER PARAMETERS
  #---------------------------------------------------------------------------
*** a/src/backend/access/transam/xlog.c
--- b/src/backend/access/transam/xlog.c
***************
*** 5368,5373 **** readRecoveryCommandFile(void)
--- 5368,5379 ----
  							RECOVERY_COMMAND_FILE)));
  	}
  
+ 	if (!EnableHotStandby && recoveryPauseAtTarget &&
+ 		recoveryTarget != RECOVERY_TARGET_UNSET)
+ 		ereport(FATAL,
+ 				(errmsg("hot standby must be enabled to pause recovery"),
+ 				 errhint("Either turn on hot_standby, turn off pause_at_recovery_target, or unset the recovery target.")));
+ 
  	/* Enable fetching from archive recovery area */
  	InArchiveRecovery = true;
  
***************
*** 6481,6486 **** StartupXLOG(void)
--- 6487,6495 ----
  				{
  					if (recoveryPauseAtTarget)
  					{
+ 						ereport(LOG,
+ 								(errmsg("recovery has paused"),
+ 								 errhint("Execute pg_xlog_replay_resume() to continue.")));
  						SetRecoveryPause(true);
  						recoveryPausesHere();
  					}
