diff --git a/src/backend/commands/variable.c b/src/backend/commands/variable.c
index 77fd47bee97f2d84bdbe3101324225dbdad4c7d0..1b2f847752173f484d9560708e85a5bf1b88693f 100644
--- a/src/backend/commands/variable.c
+++ b/src/backend/commands/variable.c
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/commands/variable.c,v 1.77 2003/05/22 17:13:08 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/commands/variable.c,v 1.78 2003/06/06 16:25:35 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -750,6 +750,16 @@ assign_session_authorization(const char *value, bool doit, bool interactive)
 		/* not a saved ID, so look it up */
 		HeapTuple	userTup;
 
+		if (! IsTransactionState())
+		{
+			/*
+			 * Can't do catalog lookups, so fail.  The upshot of this is
+			 * that session_authorization cannot be set in postgresql.conf,
+			 * which seems like a good thing anyway.
+			 */
+			return NULL;
+		}
+
 		userTup = SearchSysCache(SHADOWNAME,
 								 PointerGetDatum(value),
 								 0, 0, 0);