Search Postgresql Archives

Re: 5 new entries for FAQ

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



pgman wrote:
> Dan Armbrust wrote:
> > I liked the FAQ entry written up by the original submitter much better,
> > WRT to the long index issue.  This write up does not contain the actual
> > error message encountered, so its not going to be found by someone
> > looking for a solution to the problem.  It doesn't contain the optional
> > workaround, and it doesn't have a link into the full text searching
> > features as the recommended fix.  I was one of the more recent people
> > to encounter this problem, and I don't think that this FAQ would have
> > helped me (if I even saw it, because google certainly won't pick it up
> > in a way that most people will search when the encounter the issue -
> > they are going to put in the error message) 
> > Dan
> 
> True, but we don't have an FAQ that hits every single problem users will
> encounter.  We try to make the FAQ concise so most people will read all
> the items.  If the item come up more often, we will consider making it
> more prominent.

I thought again about your issue and I now remember the proper way to
help users in this case is to improve the error message.  I have added a
"hint" message for the case of indexing large values, patch attached.

[ Sorry about a patch to general but it seems necessary in this case.]

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@xxxxxxxxxxxxxxxx               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
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
---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
       subscribe-nomail command to majordomo@xxxxxxxxxxxxxx so that your
       message can get through to the mailing list cleanly

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux