diff --git a/src/backend/access/hash/hash.c b/src/backend/access/hash/hash.c
index af4c4c058fd7cda8690ff38417ad730a28a805e4..a24350367fc1a4f868d63191e7cdc7919cfd54bc 100644
--- a/src/backend/access/hash/hash.c
+++ b/src/backend/access/hash/hash.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/access/hash/hash.c,v 1.105 2008/09/15 18:43:41 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/access/hash/hash.c,v 1.106 2008/10/17 23:50:57 tgl Exp $
  *
  * NOTES
  *	  This file contains only the public interface routines.
@@ -345,10 +345,9 @@ hashbeginscan(PG_FUNCTION_ARGS)
 	so = (HashScanOpaque) palloc(sizeof(HashScanOpaqueData));
 	so->hashso_bucket_valid = false;
 	so->hashso_bucket_blkno = 0;
-	so->hashso_curbuf = so->hashso_mrkbuf = InvalidBuffer;
-	/* set positions invalid (this will cause _hash_first call) */
+	so->hashso_curbuf = InvalidBuffer;
+	/* set position invalid (this will cause _hash_first call) */
 	ItemPointerSetInvalid(&(so->hashso_curpos));
-	ItemPointerSetInvalid(&(so->hashso_mrkpos));
 
 	scan->opaque = so;
 
@@ -372,23 +371,18 @@ hashrescan(PG_FUNCTION_ARGS)
 	/* if we are called from beginscan, so is still NULL */
 	if (so)
 	{
-		/* release any pins we still hold */
+		/* release any pin we still hold */
 		if (BufferIsValid(so->hashso_curbuf))
 			_hash_dropbuf(rel, so->hashso_curbuf);
 		so->hashso_curbuf = InvalidBuffer;
 
-		if (BufferIsValid(so->hashso_mrkbuf))
-			_hash_dropbuf(rel, so->hashso_mrkbuf);
-		so->hashso_mrkbuf = InvalidBuffer;
-
 		/* release lock on bucket, too */
 		if (so->hashso_bucket_blkno)
 			_hash_droplock(rel, so->hashso_bucket_blkno, HASH_SHARE);
 		so->hashso_bucket_blkno = 0;
 
-		/* set positions invalid (this will cause _hash_first call) */
+		/* set position invalid (this will cause _hash_first call) */
 		ItemPointerSetInvalid(&(so->hashso_curpos));
-		ItemPointerSetInvalid(&(so->hashso_mrkpos));
 	}
 
 	/* Update scan key, if a new one is given */
@@ -417,15 +411,11 @@ hashendscan(PG_FUNCTION_ARGS)
 	/* don't need scan registered anymore */
 	_hash_dropscan(scan);
 
-	/* release any pins we still hold */
+	/* release any pin we still hold */
 	if (BufferIsValid(so->hashso_curbuf))
 		_hash_dropbuf(rel, so->hashso_curbuf);
 	so->hashso_curbuf = InvalidBuffer;
 
-	if (BufferIsValid(so->hashso_mrkbuf))
-		_hash_dropbuf(rel, so->hashso_mrkbuf);
-	so->hashso_mrkbuf = InvalidBuffer;
-
 	/* release lock on bucket, too */
 	if (so->hashso_bucket_blkno)
 		_hash_droplock(rel, so->hashso_bucket_blkno, HASH_SHARE);
@@ -443,24 +433,7 @@ hashendscan(PG_FUNCTION_ARGS)
 Datum
 hashmarkpos(PG_FUNCTION_ARGS)
 {
-	IndexScanDesc scan = (IndexScanDesc) PG_GETARG_POINTER(0);
-	HashScanOpaque so = (HashScanOpaque) scan->opaque;
-	Relation	rel = scan->indexRelation;
-
-	/* release pin on old marked data, if any */
-	if (BufferIsValid(so->hashso_mrkbuf))
-		_hash_dropbuf(rel, so->hashso_mrkbuf);
-	so->hashso_mrkbuf = InvalidBuffer;
-	ItemPointerSetInvalid(&(so->hashso_mrkpos));
-
-	/* bump pin count on current buffer and copy to marked buffer */
-	if (ItemPointerIsValid(&(so->hashso_curpos)))
-	{
-		IncrBufferRefCount(so->hashso_curbuf);
-		so->hashso_mrkbuf = so->hashso_curbuf;
-		so->hashso_mrkpos = so->hashso_curpos;
-	}
-
+	elog(ERROR, "hash does not support mark/restore");
 	PG_RETURN_VOID();
 }
 
@@ -470,24 +443,7 @@ hashmarkpos(PG_FUNCTION_ARGS)
 Datum
 hashrestrpos(PG_FUNCTION_ARGS)
 {
-	IndexScanDesc scan = (IndexScanDesc) PG_GETARG_POINTER(0);
-	HashScanOpaque so = (HashScanOpaque) scan->opaque;
-	Relation	rel = scan->indexRelation;
-
-	/* release pin on current data, if any */
-	if (BufferIsValid(so->hashso_curbuf))
-		_hash_dropbuf(rel, so->hashso_curbuf);
-	so->hashso_curbuf = InvalidBuffer;
-	ItemPointerSetInvalid(&(so->hashso_curpos));
-
-	/* bump pin count on marked buffer and copy to current buffer */
-	if (ItemPointerIsValid(&(so->hashso_mrkpos)))
-	{
-		IncrBufferRefCount(so->hashso_mrkbuf);
-		so->hashso_curbuf = so->hashso_mrkbuf;
-		so->hashso_curpos = so->hashso_mrkpos;
-	}
-
+	elog(ERROR, "hash does not support mark/restore");
 	PG_RETURN_VOID();
 }
 
diff --git a/src/include/access/hash.h b/src/include/access/hash.h
index e00176d4519ae1f25b8f4edcd6703d2018f89475..6cd57ec00c5b6950fe495cd37efe0dd9dc17b7cf 100644
--- a/src/include/access/hash.h
+++ b/src/include/access/hash.h
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/access/hash.h,v 1.90 2008/09/15 18:43:41 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/access/hash.h,v 1.91 2008/10/17 23:50:57 tgl Exp $
  *
  * NOTES
  *		modeled after Margo Seltzer's hash implementation for unix.
@@ -92,17 +92,15 @@ typedef struct HashScanOpaqueData
 	BlockNumber hashso_bucket_blkno;
 
 	/*
-	 * We also want to remember which buffers we're currently examining in the
-	 * scan. We keep these buffers pinned (but not locked) across hashgettuple
+	 * We also want to remember which buffer we're currently examining in the
+	 * scan. We keep the buffer pinned (but not locked) across hashgettuple
 	 * calls, in order to avoid doing a ReadBuffer() for every tuple in the
 	 * index.
 	 */
 	Buffer		hashso_curbuf;
-	Buffer		hashso_mrkbuf;
 
-	/* Current and marked position of the scan */
+	/* Current position of the scan */
 	ItemPointerData hashso_curpos;
-	ItemPointerData hashso_mrkpos;
 } HashScanOpaqueData;
 
 typedef HashScanOpaqueData *HashScanOpaque;