This patch warns about oid/xid wraparound during VACUUM.  Apply the part
people consider appropriate.  I may not be around before beta.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

Index: src/backend/commands/vacuum.c
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/src/backend/commands/vacuum.c,v
retrieving revision 1.195
diff -c -r1.195 vacuum.c
*** src/backend/commands/vacuum.c	2001/05/25 15:45:32	1.195
--- src/backend/commands/vacuum.c	2001/06/13 21:01:37
***************
*** 17,22 ****
--- 17,23 ----
  #include <fcntl.h>
  #include <unistd.h>
  #include <time.h>
+ #include <limits.h>
  #include <sys/time.h>
  #include <sys/types.h>
  #include <sys/file.h>
***************
*** 159,166 ****
  static bool enough_space(VacPage vacpage, Size len);
  static void init_rusage(VacRUsage *ru0);
  static char *show_rusage(VacRUsage *ru0);
  
- 
  /*
   * Primary entry point for VACUUM and ANALYZE commands.
   */
--- 160,167 ----
  static bool enough_space(VacPage vacpage, Size len);
  static void init_rusage(VacRUsage *ru0);
  static char *show_rusage(VacRUsage *ru0);
+ static void check_limits(void);
  
  /*
   * Primary entry point for VACUUM and ANALYZE commands.
   */
***************
*** 236,241 ****
--- 237,243 ----
  
  	/* clean up */
  	vacuum_shutdown();
+ 	check_limits();
  }
  
  /*
***************
*** 2645,2648 ****
--- 2647,2674 ----
  			 (int) (ru1.tv.tv_usec - ru0->tv.tv_usec) / 10000);
  
  	return result;
+ }
+ 
+ /*
+  *	check if we are near OID or XID wraparound
+  */
+ static void check_limits(void)
+ {
+ 	Oid nextOid;
+ 
+ 	/* If we are 75% to the limit, warn the user */
+ 	if (GetCurrentTransactionId() > UINT_MAX - UINT_MAX / 4)
+ 		elog(NOTICE,"You are %.0f%% toward the limit for transaction ids.\n"
+ 			"\t Dumping your databases, running initdb, and reloading will reset\n"
+ 			"\t the transaction id counter.",
+ 			GetCurrentTransactionId() / (float)UINT_MAX * 100);
+ 
+ 	/* If we are 75% to the limit, warn the user */
+ 	GetNewObjectId(&nextOid);
+ 	if (nextOid > OID_MAX - OID_MAX / 4)
+ 		elog(NOTICE,"You are %.0f%% toward the limit for object ids.\n"
+ 			"\t If you are not using object ids as primary keys, dumping your\n"
+ 			"\t databases, running initdb, and reloading will reset\n"
+ 			"\t the oid counter.",
+ 			(float)nextOid / OID_MAX * 100);
  }
Sun, 16 Sep 2001 00:25:07 -0400 (EDT)
Bruce Momjian <pgman@candle.pha.pa.us>
Warning about oid/xid wraparound
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> This patch warns about oid/xid wraparound during VACUUM.  Apply the part
> people consider appropriate.  I may not be around before beta.

None of it is appropriate anymore...

			regards, tom lane

Sun, 16 Sep 2001 01:03:43 -0400
Tom Lane <tgl@sss.pgh.pa.us>
Re: Warning about oid/xid wraparound 
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > This patch warns about oid/xid wraparound during VACUUM.  Apply the part
> > people consider appropriate.  I may not be around before beta.
> 
> None of it is appropriate anymore...

OID wraparound isn't a problem?

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

Sun, 16 Sep 2001 01:05:07 -0400 (EDT)
Bruce Momjian <pgman@candle.pha.pa.us>
Re: Warning about oid/xid wraparound
Bruce Momjian <pgman@candle.pha.pa.us> writes:
>> None of it is appropriate anymore...

> OID wraparound isn't a problem?

Well, it could be a problem if an app is relying on uniqueness of OIDs
without having installed an unique index on OIDs.  However, I do not
think it is the business of the backend to issue nuisance warnings that
will come out whether an app is using unsafe practices or not.

			regards, tom lane

Sun, 16 Sep 2001 01:22:35 -0400
Tom Lane <tgl@sss.pgh.pa.us>
Re: Warning about oid/xid wraparound 