Index: src/backend/commands/vacuumlazy.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/commands/vacuumlazy.c,v
retrieving revision 1.88
diff -c -r1.88 vacuumlazy.c
*** src/backend/commands/vacuumlazy.c	30 Apr 2007 03:23:48 -0000	1.88
--- src/backend/commands/vacuumlazy.c	9 May 2007 17:59:35 -0000
***************
*** 254,260 ****
  	BlockNumber nblocks,
  				blkno;
  	HeapTupleData tuple;
! 	char	   *relname;
  	BlockNumber empty_pages,
  				vacuumed_pages;
  	double		num_tuples,
--- 254,261 ----
  	BlockNumber nblocks,
  				blkno;
  	HeapTupleData tuple;
! 	char	   *relname,
!                *relnamespace;
  	BlockNumber empty_pages,
  				vacuumed_pages;
  	double		num_tuples,
***************
*** 267,276 ****
  
  	pg_rusage_init(&ru0);
  
  	relname = RelationGetRelationName(onerel);
  	ereport(elevel,
  			(errmsg("vacuuming \"%s.%s\"",
! 					get_namespace_name(RelationGetNamespace(onerel)),
  					relname)));
  
  	empty_pages = vacuumed_pages = 0;
--- 268,278 ----
  
  	pg_rusage_init(&ru0);
  
+     relnamespace = get_namespace_name(RelationGetNamespace(onerel)),
  	relname = RelationGetRelationName(onerel);
  	ereport(elevel,
  			(errmsg("vacuuming \"%s.%s\"",
! 					relnamespace,
  					relname)));
  
  	empty_pages = vacuumed_pages = 0;
***************
*** 306,311 ****
--- 308,322 ----
  		if ((vacrelstats->max_dead_tuples - vacrelstats->num_dead_tuples) < MaxHeapTuplesPerPage &&
  			vacrelstats->num_dead_tuples > 0)
  		{
+             /* Warn the user that we've exceeded maintenance_work_mem */
+             if (vacrelstats->num_index_scans == 0)
+                 ereport(WARNING,
+                         (errmsg("exceeded maintenance_work_mem while vacuuming relation \"%s.%s\"",
+                                 relnamespace,
+                                 relname),
+                          /* XXX would be nice to estimate how much it needs to be increased */
+                          errhint("Consider increasing maintenance_work_mem")));
+ 
  			/* Remove index entries */
  			for (i = 0; i < nindexes; i++)
  				lazy_vacuum_index(Irel[i],
