diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index fc7ec51a1a..f483135921 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -1,4 +1,4 @@ - + Functions and Operators @@ -13280,13 +13280,12 @@ postgres=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup()); pg_last_xlog_receive_location() text - Get last transaction log location received and synced to disk during - streaming recovery. If streaming recovery is still in progress - this will increase monotonically. If streaming recovery has completed - then this value will remain static at the value of the last WAL record - received and synced to disk during that recovery. When the server has - been started without a streaming recovery then the return value will be - InvalidXLogRecPtr (0/0). + Get last transaction log location received and synced to disk by + streaming replication. While streaming replication is in progress + this will increase monotonically. If recovevery has completed + this will remain static at the value of the last WAL record + received and synced to disk during recovery. If streaming replication + is disabled, or it has not yet started, the function returns NULL. @@ -13298,8 +13297,8 @@ postgres=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup()); If recovery is still in progress this will increase monotonically. If recovery has completed then this value will remain static at the value of the last WAL record applied during that recovery. - When the server has been started normally without a recovery - then the return value will be InvalidXLogRecPtr (0/0). + When the server has been started normally without recovery + the function returns NULL. diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 4718b538e8..ecd7df2107 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.419 2010/06/09 15:04:06 heikki Exp $ + * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.420 2010/06/10 07:00:27 heikki Exp $ * *------------------------------------------------------------------------- */ @@ -8757,6 +8757,9 @@ pg_last_xlog_receive_location(PG_FUNCTION_ARGS) recptr = GetWalRcvWriteRecPtr(); + if (recptr.xlogid == 0 && recptr.xrecoff == 0) + PG_RETURN_NULL(); + snprintf(location, sizeof(location), "%X/%X", recptr.xlogid, recptr.xrecoff); PG_RETURN_TEXT_P(cstring_to_text(location)); @@ -8780,6 +8783,9 @@ pg_last_xlog_replay_location(PG_FUNCTION_ARGS) recptr = xlogctl->recoveryLastRecPtr; SpinLockRelease(&xlogctl->info_lck); + if (recptr.xlogid == 0 && recptr.xrecoff == 0) + PG_RETURN_NULL(); + snprintf(location, sizeof(location), "%X/%X", recptr.xlogid, recptr.xrecoff); PG_RETURN_TEXT_P(cstring_to_text(location));