From 237be3cc2945ad5216bf227a1ee2c47a29818167 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Wed, 10 Aug 2005 21:36:46 +0000 Subject: [PATCH] Add hints to cases where indexes fail because of values that are too long. --- src/backend/access/hash/hashinsert.c | 5 +++-- src/backend/access/nbtree/nbtinsert.c | 7 +++++-- src/backend/access/nbtree/nbtsort.c | 7 +++++-- src/backend/access/rtree/rtree.c | 5 +++-- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/backend/access/hash/hashinsert.c b/src/backend/access/hash/hashinsert.c index a09b8b4bc1..860376cd48 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 9b9fa44e6e..a613b6b978 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 115708b780..edad76b9f2 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 e9eaa1941d..3b96b9ebe2 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 -- GitLab