Index: src/backend/access/hash/hashinsert.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/access/hash/hashinsert.c,v
retrieving revision 1.36
diff -c -c -r1.36 hashinsert.c
*** src/backend/access/hash/hashinsert.c	21 Mar 2005 01:23:57 -0000	1.36
--- src/backend/access/hash/hashinsert.c	10 Aug 2005 21:27:50 -0000
***************
*** 88,94 ****
  				(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
  				 errmsg("index row size %lu exceeds hash maximum %lu",
  						(unsigned long) itemsz,
! 						(unsigned long) HashMaxItemSize((Page) metap))));
  
  	/*
  	 * Compute the target bucket number, and convert to block number.
--- 88,95 ----
  				(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
  				 errmsg("index row size %lu exceeds hash maximum %lu",
  						(unsigned long) itemsz,
! 						(unsigned long) HashMaxItemSize((Page) metap)),
! 				 errhint("Values larger than a buffer page cannot be indexed.")));
  
  	/*
  	 * Compute the target bucket number, and convert to block number.
Index: src/backend/access/nbtree/nbtinsert.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/access/nbtree/nbtinsert.c,v
retrieving revision 1.121
diff -c -c -r1.121 nbtinsert.c
*** src/backend/access/nbtree/nbtinsert.c	6 Jun 2005 20:22:57 -0000	1.121
--- src/backend/access/nbtree/nbtinsert.c	10 Aug 2005 21:27:51 -0000
***************
*** 392,398 ****
  				(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
  				 errmsg("index row size %lu exceeds btree maximum, %lu",
  						(unsigned long) itemsz,
! 						(unsigned long) BTMaxItemSize(page))));
  
  	/*
  	 * Determine exactly where new item will go.
--- 392,401 ----
  				(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
  				 errmsg("index row size %lu exceeds btree maximum, %lu",
  						(unsigned long) itemsz,
! 						(unsigned long) BTMaxItemSize(page)),
! 				 errhint("Values larger than 1/3 of a buffer page cannot be indexed\n"
! 						 "Consider a separate column containing an MD5 hash of the value\n"
! 						 "or use full text indexing.")));
  
  	/*
  	 * Determine exactly where new item will go.
Index: src/backend/access/nbtree/nbtsort.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/access/nbtree/nbtsort.c,v
retrieving revision 1.91
diff -c -c -r1.91 nbtsort.c
*** src/backend/access/nbtree/nbtsort.c	6 Jun 2005 20:22:57 -0000	1.91
--- src/backend/access/nbtree/nbtsort.c	10 Aug 2005 21:27:52 -0000
***************
*** 498,504 ****
  				(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
  				 errmsg("index row size %lu exceeds btree maximum, %lu",
  						(unsigned long) btisz,
! 						(unsigned long) BTMaxItemSize(npage))));
  
  	if (pgspc < btisz || pgspc < state->btps_full)
  	{
--- 498,507 ----
  				(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
  				 errmsg("index row size %lu exceeds btree maximum, %lu",
  						(unsigned long) btisz,
! 						(unsigned long) BTMaxItemSize(npage)),
! 				 errhint("Values larger than 1/3 of a buffer page cannot be indexed\n"
! 						 "Consider a separate column containing an MD5 hash of the value\n"
! 						 "or use full text indexing.")));
  
  	if (pgspc < btisz || pgspc < state->btps_full)
  	{
Index: src/backend/access/rtree/rtree.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/access/rtree/rtree.c,v
retrieving revision 1.90
diff -c -c -r1.90 rtree.c
*** src/backend/access/rtree/rtree.c	6 Jun 2005 17:01:22 -0000	1.90
--- src/backend/access/rtree/rtree.c	10 Aug 2005 21:27:52 -0000
***************
*** 733,739 ****
  				(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
  				 errmsg("index row size %lu exceeds rtree maximum, %lu",
  						(unsigned long) newitemsz,
! 						(unsigned long) RTPageAvailSpace)));
  
  	maxoff = PageGetMaxOffsetNumber(page);
  	newitemoff = OffsetNumberNext(maxoff);		/* phony index for new
--- 733,740 ----
  				(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
  				 errmsg("index row size %lu exceeds rtree maximum, %lu",
  						(unsigned long) newitemsz,
! 						(unsigned long) RTPageAvailSpace),
! 				 errhint("Values larger than a buffer page cannot be indexed.")));
  
  	maxoff = PageGetMaxOffsetNumber(page);
  	newitemoff = OffsetNumberNext(maxoff);		/* phony index for new
