aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2005-08-10 21:36:46 +0000
committerBruce Momjian <bruce@momjian.us>2005-08-10 21:36:46 +0000
commit237be3cc2945ad5216bf227a1ee2c47a29818167 (patch)
tree04ffecae37963c99cb6dccac7c403646f6611c7f /src
parent8bbf227ad742ce83e0665604ae099f0d9af70aa8 (diff)
downloadpostgresql-237be3cc2945ad5216bf227a1ee2c47a29818167.tar.gz
postgresql-237be3cc2945ad5216bf227a1ee2c47a29818167.zip
Add hints to cases where indexes fail because of values that are too long.
Diffstat (limited to 'src')
-rw-r--r--src/backend/access/hash/hashinsert.c5
-rw-r--r--src/backend/access/nbtree/nbtinsert.c7
-rw-r--r--src/backend/access/nbtree/nbtsort.c7
-rw-r--r--src/backend/access/rtree/rtree.c5
4 files changed, 16 insertions, 8 deletions
diff --git a/src/backend/access/hash/hashinsert.c b/src/backend/access/hash/hashinsert.c
index a09b8b4bc15..860376cd481 100644
--- a/src/backend/access/hash/hashinsert.c
+++ b/src/backend/access/hash/hashinsert.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/access/hash/hashinsert.c,v 1.36 2005/03/21 01:23:57 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/access/hash/hashinsert.c,v 1.37 2005/08/10 21:36:45 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -88,7 +88,8 @@ _hash_doinsert(Relation rel, HashItem hitem)
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
errmsg("index row size %lu exceeds hash maximum %lu",
(unsigned long) itemsz,
- (unsigned long) HashMaxItemSize((Page) metap))));
+ (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.
diff --git a/src/backend/access/nbtree/nbtinsert.c b/src/backend/access/nbtree/nbtinsert.c
index 9b9fa44e6ed..a613b6b978f 100644
--- a/src/backend/access/nbtree/nbtinsert.c
+++ b/src/backend/access/nbtree/nbtinsert.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.121 2005/06/06 20:22:57 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.122 2005/08/10 21:36:45 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -392,7 +392,10 @@ _bt_insertonpg(Relation rel,
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
errmsg("index row size %lu exceeds btree maximum, %lu",
(unsigned long) itemsz,
- (unsigned long) BTMaxItemSize(page))));
+ (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.
diff --git a/src/backend/access/nbtree/nbtsort.c b/src/backend/access/nbtree/nbtsort.c
index 115708b7809..edad76b9f2f 100644
--- a/src/backend/access/nbtree/nbtsort.c
+++ b/src/backend/access/nbtree/nbtsort.c
@@ -56,7 +56,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtsort.c,v 1.91 2005/06/06 20:22:57 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtsort.c,v 1.92 2005/08/10 21:36:45 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -498,7 +498,10 @@ _bt_buildadd(BTWriteState *wstate, BTPageState *state, BTItem bti)
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
errmsg("index row size %lu exceeds btree maximum, %lu",
(unsigned long) btisz,
- (unsigned long) BTMaxItemSize(npage))));
+ (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)
{
diff --git a/src/backend/access/rtree/rtree.c b/src/backend/access/rtree/rtree.c
index e9eaa1941d6..3b96b9ebe2d 100644
--- a/src/backend/access/rtree/rtree.c
+++ b/src/backend/access/rtree/rtree.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/access/rtree/rtree.c,v 1.90 2005/06/06 17:01:22 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/access/rtree/rtree.c,v 1.91 2005/08/10 21:36:46 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -733,7 +733,8 @@ rtpicksplit(Relation r,
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
errmsg("index row size %lu exceeds rtree maximum, %lu",
(unsigned long) newitemsz,
- (unsigned long) RTPageAvailSpace)));
+ (unsigned long) RTPageAvailSpace),
+ errhint("Values larger than a buffer page cannot be indexed.")));
maxoff = PageGetMaxOffsetNumber(page);
newitemoff = OffsetNumberNext(maxoff); /* phony index for new