diff --git a/src/backend/access/heap/tuptoaster.c b/src/backend/access/heap/tuptoaster.c
index 7478f90cd8025cbc44b3e1578a07eab11b68c795..b7923e408394c5508b8b08e1d564ee16428ca1f8 100644
--- a/src/backend/access/heap/tuptoaster.c
+++ b/src/backend/access/heap/tuptoaster.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/access/heap/tuptoaster.c,v 1.87 2008/04/17 21:37:28 alvherre Exp $
+ *	  $PostgreSQL: pgsql/src/backend/access/heap/tuptoaster.c,v 1.88 2008/06/13 02:59:47 tgl Exp $
  *
  *
  * INTERFACE ROUTINES
@@ -1216,8 +1216,6 @@ toast_save_datum(Relation rel, Datum value,
 		SET_VARSIZE(&chunk_data, chunk_size + VARHDRSZ);
 		memcpy(VARDATA(&chunk_data), data_p, chunk_size);
 		toasttup = heap_form_tuple(toasttupDesc, t_values, t_isnull);
-		if (!HeapTupleIsValid(toasttup))
-			elog(ERROR, "failed to build TOAST tuple");
 
 		heap_insert(toastrel, toasttup, mycid, use_wal, use_fsm);
 
@@ -1412,7 +1410,9 @@ toast_fetch_datum(struct varlena * attr)
 		else
 		{
 			/* should never happen */
-			elog(ERROR, "found toasted toast chunk");
+			elog(ERROR, "found toasted toast chunk for toast value %u in %s",
+				 toast_pointer.va_valueid,
+				 RelationGetRelationName(toastrel));
 			chunksize = 0;		/* keep compiler quiet */
 			chunkdata = NULL;
 		}
@@ -1421,31 +1421,35 @@ toast_fetch_datum(struct varlena * attr)
 		 * Some checks on the data we've found
 		 */
 		if (residx != nextidx)
-			elog(ERROR, "unexpected chunk number %d (expected %d) for toast value %u",
+			elog(ERROR, "unexpected chunk number %d (expected %d) for toast value %u in %s",
 				 residx, nextidx,
-				 toast_pointer.va_valueid);
+				 toast_pointer.va_valueid,
+				 RelationGetRelationName(toastrel));
 		if (residx < numchunks - 1)
 		{
 			if (chunksize != TOAST_MAX_CHUNK_SIZE)
-				elog(ERROR, "unexpected chunk size %d (expected %d) in chunk %d of %d for toast value %u",
+				elog(ERROR, "unexpected chunk size %d (expected %d) in chunk %d of %d for toast value %u in %s",
 					 chunksize, (int) TOAST_MAX_CHUNK_SIZE,
 					 residx, numchunks,
-					 toast_pointer.va_valueid);
+					 toast_pointer.va_valueid,
+					 RelationGetRelationName(toastrel));
 		}
 		else if (residx == numchunks - 1)
 		{
 			if ((residx * TOAST_MAX_CHUNK_SIZE + chunksize) != ressize)
-				elog(ERROR, "unexpected chunk size %d (expected %d) in final chunk %d for toast value %u",
+				elog(ERROR, "unexpected chunk size %d (expected %d) in final chunk %d for toast value %u in %s",
 					 chunksize,
 					 (int) (ressize - residx * TOAST_MAX_CHUNK_SIZE),
 					 residx,
-					 toast_pointer.va_valueid);
+					 toast_pointer.va_valueid,
+					 RelationGetRelationName(toastrel));
 		}
 		else
-			elog(ERROR, "unexpected chunk number %d for toast value %u (out of range %d..%d)",
+			elog(ERROR, "unexpected chunk number %d (out of range %d..%d) for toast value %u in %s",
 				 residx,
+				 0, numchunks - 1,
 				 toast_pointer.va_valueid,
-				 0, numchunks - 1);
+				 RelationGetRelationName(toastrel));
 
 		/*
 		 * Copy the data into proper place in our result
@@ -1461,9 +1465,10 @@ toast_fetch_datum(struct varlena * attr)
 	 * Final checks that we successfully fetched the datum
 	 */
 	if (nextidx != numchunks)
-		elog(ERROR, "missing chunk number %d for toast value %u",
+		elog(ERROR, "missing chunk number %d for toast value %u in %s",
 			 nextidx,
-			 toast_pointer.va_valueid);
+			 toast_pointer.va_valueid,
+			 RelationGetRelationName(toastrel));
 
 	/*
 	 * End scan and close relations
@@ -1621,7 +1626,9 @@ toast_fetch_datum_slice(struct varlena * attr, int32 sliceoffset, int32 length)
 		else
 		{
 			/* should never happen */
-			elog(ERROR, "found toasted toast chunk");
+			elog(ERROR, "found toasted toast chunk for toast value %u in %s",
+				 toast_pointer.va_valueid,
+				 RelationGetRelationName(toastrel));
 			chunksize = 0;		/* keep compiler quiet */
 			chunkdata = NULL;
 		}
@@ -1630,31 +1637,35 @@ toast_fetch_datum_slice(struct varlena * attr, int32 sliceoffset, int32 length)
 		 * Some checks on the data we've found
 		 */
 		if ((residx != nextidx) || (residx > endchunk) || (residx < startchunk))
-			elog(ERROR, "unexpected chunk number %d (expected %d) for toast value %u",
+			elog(ERROR, "unexpected chunk number %d (expected %d) for toast value %u in %s",
 				 residx, nextidx,
-				 toast_pointer.va_valueid);
+				 toast_pointer.va_valueid,
+				 RelationGetRelationName(toastrel));
 		if (residx < totalchunks - 1)
 		{
 			if (chunksize != TOAST_MAX_CHUNK_SIZE)
-				elog(ERROR, "unexpected chunk size %d (expected %d) in chunk %d of %d for toast value %u when fetching slice",
+				elog(ERROR, "unexpected chunk size %d (expected %d) in chunk %d of %d for toast value %u in %s when fetching slice",
 					 chunksize, (int) TOAST_MAX_CHUNK_SIZE,
 					 residx, totalchunks,
-					 toast_pointer.va_valueid);
+					 toast_pointer.va_valueid,
+					 RelationGetRelationName(toastrel));
 		}
 		else if (residx == totalchunks - 1)
 		{
 			if ((residx * TOAST_MAX_CHUNK_SIZE + chunksize) != attrsize)
-				elog(ERROR, "unexpected chunk size %d (expected %d) in final chunk %d for toast value %u when fetching slice",
+				elog(ERROR, "unexpected chunk size %d (expected %d) in final chunk %d for toast value %u in %s when fetching slice",
 					 chunksize,
 					 (int) (attrsize - residx * TOAST_MAX_CHUNK_SIZE),
 					 residx,
-					 toast_pointer.va_valueid);
+					 toast_pointer.va_valueid,
+					 RelationGetRelationName(toastrel));
 		}
 		else
-			elog(ERROR, "unexpected chunk number %d for toast value %u (out of range %d..%d)",
+			elog(ERROR, "unexpected chunk number %d (out of range %d..%d) for toast value %u in %s",
 				 residx,
+				 0, totalchunks - 1,
 				 toast_pointer.va_valueid,
-				 0, totalchunks - 1);
+				 RelationGetRelationName(toastrel));
 
 		/*
 		 * Copy the data into proper place in our result
@@ -1678,9 +1689,10 @@ toast_fetch_datum_slice(struct varlena * attr, int32 sliceoffset, int32 length)
 	 * Final checks that we successfully fetched the datum
 	 */
 	if (nextidx != (endchunk + 1))
-		elog(ERROR, "missing chunk number %d for toast value %u",
+		elog(ERROR, "missing chunk number %d for toast value %u in %s",
 			 nextidx,
-			 toast_pointer.va_valueid);
+			 toast_pointer.va_valueid,
+			 RelationGetRelationName(toastrel));
 
 	/*
 	 * End scan and close relations