diff --git a/src/backend/access/nbtree/nbtree.c b/src/backend/access/nbtree/nbtree.c
index 0624bd06a87acc4014302827b2f2b2f70284299f..142eafec029ba0ebf4cbd6d4df8e0ad9f5d5171d 100644
--- a/src/backend/access/nbtree/nbtree.c
+++ b/src/backend/access/nbtree/nbtree.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtree.c,v 1.13 1997/02/12 05:04:17 scrappy Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtree.c,v 1.14 1997/02/18 17:13:42 momjian Exp $
  *
  * NOTES
  *    This file contains only the public interface routines.
diff --git a/src/backend/access/nbtree/nbtscan.c b/src/backend/access/nbtree/nbtscan.c
index 3de9f39d3252ac0eba3763a91da842ddbbe094a9..5e23fe13d7bc5dce9241f8841602b07c9735a9ed 100644
--- a/src/backend/access/nbtree/nbtscan.c
+++ b/src/backend/access/nbtree/nbtscan.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/access/nbtree/Attic/nbtscan.c,v 1.6 1996/11/15 18:37:00 momjian Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/access/nbtree/Attic/nbtscan.c,v 1.7 1997/02/18 17:13:45 momjian Exp $
  *
  *
  * NOTES
@@ -40,7 +40,10 @@ typedef struct BTScanListData {
 typedef BTScanListData	*BTScanList;
 
 static BTScanList	BTScans = (BTScanList) NULL;
-     
+
+static void _bt_scandel(IndexScanDesc scan, int op, BlockNumber blkno, OffsetNumber offno);
+static bool _bt_scantouched(IndexScanDesc scan, BlockNumber blkno, OffsetNumber offno);
+
 /*
  *  _bt_regscan() -- register a new scan.
  */
@@ -81,8 +84,12 @@ _bt_dropscan(IndexScanDesc scan)
     pfree (chk);
 }
 
+/*
+ *  _bt_adjscans() -- adjust all scans in the scan list to compensate
+ *		      for a given deletion or insertion
+ */
 void
-_bt_adjscans(Relation rel, ItemPointer tid)
+_bt_adjscans(Relation rel, ItemPointer tid, int op)
 {
     BTScanList l;
     Oid relid;
@@ -90,13 +97,34 @@ _bt_adjscans(Relation rel, ItemPointer tid)
     relid = rel->rd_id;
     for (l = BTScans; l != (BTScanList) NULL; l = l->btsl_next) {
 	if (relid == l->btsl_scan->relation->rd_id)
-	    _bt_scandel(l->btsl_scan, ItemPointerGetBlockNumber(tid),
+	    _bt_scandel(l->btsl_scan, op,
+			ItemPointerGetBlockNumber(tid),
 			ItemPointerGetOffsetNumber(tid));
     }
 }
 
-void
-_bt_scandel(IndexScanDesc scan, BlockNumber blkno, OffsetNumber offno)
+/*
+ *  _bt_scandel() -- adjust a single scan
+ *
+ * because each index page is always maintained as an ordered array of
+ * index tuples, the index tuples on a given page shift beneath any
+ * given scan.  an index modification "behind" a scan position (i.e.,
+ * same page, lower or equal offset number) will therefore force us to
+ * adjust the scan in the following ways:
+ *
+ * - on insertion, we shift the scan forward by one item.
+ * - on deletion, we shift the scan backward by one item.
+ *
+ * note that:
+ *
+ * - we need not worry about the actual ScanDirection of the scan
+ * itself, since the problem is that the "current" scan position has
+ * shifted.
+ * - modifications "ahead" of our scan position do not change the
+ * array index of the current scan position and so can be ignored.
+ */
+static void
+_bt_scandel(IndexScanDesc scan, int op, BlockNumber blkno, OffsetNumber offno)
 {
     ItemPointer current;
     Buffer buf;
@@ -112,7 +140,17 @@ _bt_scandel(IndexScanDesc scan, BlockNumber blkno, OffsetNumber offno)
     if (ItemPointerIsValid(current)
 	&& ItemPointerGetBlockNumber(current) == blkno
 	&& ItemPointerGetOffsetNumber(current) >= offno) {
-	_bt_step(scan, &buf, BackwardScanDirection);
+	switch (op) {
+	case BT_INSERT:
+	    _bt_step(scan, &buf, ForwardScanDirection);
+	    break;
+	case BT_DELETE:
+	    _bt_step(scan, &buf, BackwardScanDirection);
+	    break;
+	default:
+	    elog(WARN, "_bt_scandel: bad operation '%d'", op);
+	    /*NOTREACHED*/
+	}
 	so->btso_curbuf = buf;
     }
     
@@ -124,7 +162,17 @@ _bt_scandel(IndexScanDesc scan, BlockNumber blkno, OffsetNumber offno)
 	tmp = *current;
 	*current = scan->currentItemData;
 	scan->currentItemData = tmp;
-	_bt_step(scan, &buf, BackwardScanDirection);
+	switch (op) {
+	case BT_INSERT:
+	    _bt_step(scan, &buf, ForwardScanDirection);
+	    break;
+	case BT_DELETE:
+	    _bt_step(scan, &buf, BackwardScanDirection);
+	    break;
+	default:
+	    elog(WARN, "_bt_scandel: bad operation '%d'", op);
+	    /*NOTREACHED*/
+	}
 	so->btso_mrkbuf = buf;
 	tmp = *current;
 	*current = scan->currentItemData;
@@ -132,7 +180,11 @@ _bt_scandel(IndexScanDesc scan, BlockNumber blkno, OffsetNumber offno)
     }
 }
 
-bool
+/*
+ *  _bt_scantouched() -- check to see if a scan is affected by a given
+ *			 change to the index
+ */
+static bool
 _bt_scantouched(IndexScanDesc scan, BlockNumber blkno, OffsetNumber offno)
 {
     ItemPointer current;
diff --git a/src/backend/access/nbtree/nbtsearch.c b/src/backend/access/nbtree/nbtsearch.c
index 569a9e7e7f88c07a87c6fc67e8bb15cd9f15a62a..94521ff1c0b233f7591a3b9e25a5e14febbcbf8b 100644
--- a/src/backend/access/nbtree/nbtsearch.c
+++ b/src/backend/access/nbtree/nbtsearch.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtsearch.c,v 1.13 1997/01/05 10:56:36 vadim Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtsearch.c,v 1.14 1997/02/18 17:13:48 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -332,7 +332,7 @@ _bt_binsrch(Relation rel,
 	else if (result < 0)
 	    high = mid - 1;
 	else
-	return (_bt_firsteq(rel, itupdesc, page, keysz, scankey, mid));
+	    return (_bt_firsteq(rel, itupdesc, page, keysz, scankey, mid));
     }
 	
 	/*
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 1cb91dcaa7eac2a37fa8bd2daf5de72d58235a1a..bbbd02b0644819ec6b58c40f2200100ef7ca3f38 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.40 1997/02/14 04:16:12 momjian Exp $
+ *    $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.41 1997/02/18 17:13:58 momjian Exp $
  *
  * NOTES
  *
@@ -287,12 +287,6 @@ PostmasterMain(int argc, char *argv[])
             else
                 DebugLvl = 1;
             break;
-        case 'e':
-            /*
-             * Use european date formats.
-             */
-            EuroDates = 1;
-            break;
         case 'm':
             MultiplexedBackends = 1;
             MultiplexedBackendPort = atoi(optarg);
@@ -424,7 +418,6 @@ usage(const char *progname)
     fprintf(stderr, "\t-b backend\tuse a specific backend server executable\n");
     fprintf(stderr, "\t-d [1|2|3]\tset debugging level\n");
     fprintf(stderr, "\t-D datadir\tset data directory\n");
-    fprintf(stderr, "\t-e \tturn on European date format\n");
     fprintf(stderr, "\t-m \tstart up multiplexing backends\n");
     fprintf(stderr, "\t-n\t\tdon't reinitialize shared memory after abnormal exit\n");
     fprintf(stderr, "\t-o option\tpass 'option' to each backend servers\n");
@@ -1113,10 +1106,6 @@ DoExec(StartupInfo *packet, int portFd)
         av[ac++] = "-o";
         av[ac++] = ttybuf;
     }
-
-    /* tell the backend we're using European dates */
-    if (EuroDates == 1)
-      av[ac++] = "-e";
     
     /* tell the multiplexed backend to start on a certain port */
     if (MultiplexedBackends) {
diff --git a/src/include/access/nbtree.h b/src/include/access/nbtree.h
index 1ba24d044b52c18b19167a3714acdf6bd83695e1..c1a857bb74a05353303b444ecc2536e41a376b04 100644
--- a/src/include/access/nbtree.h
+++ b/src/include/access/nbtree.h
@@ -6,7 +6,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: nbtree.h,v 1.7 1997/02/14 22:47:36 momjian Exp $
+ * $Id: nbtree.h,v 1.8 1997/02/18 17:14:10 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -238,9 +238,7 @@ extern void btdelete(Relation rel, ItemPointer tid);
  */
 extern void _bt_regscan(IndexScanDesc scan);
 extern void _bt_dropscan(IndexScanDesc scan);
-extern void _bt_adjscans(Relation rel, ItemPointer tid);
-extern void _bt_scandel(IndexScanDesc scan, BlockNumber blkno, OffsetNumber offno);
-extern bool _bt_scantouched(IndexScanDesc scan, BlockNumber blkno, OffsetNumber offno);
+extern void _bt_adjscans(Relation rel, ItemPointer tid, int op);
 
 /*
  * prototypes for functions in nbtsearch.c
diff --git a/src/man/postmaster.1 b/src/man/postmaster.1
index 3ee1f457c2e6cf91f3340742af50968be743984e..08cc9fa763f638697ea5b6498e3b91b62e35b10e 100644
--- a/src/man/postmaster.1
+++ b/src/man/postmaster.1
@@ -1,6 +1,6 @@
 .\" This is -*-nroff-*-
 .\" XXX standard disclaimer belongs here....
-.\" $Header: /cvsroot/pgsql/src/man/Attic/postmaster.1,v 1.3 1997/01/26 15:32:28 scrappy Exp $
+.\" $Header: /cvsroot/pgsql/src/man/Attic/postmaster.1,v 1.4 1997/02/18 17:14:25 momjian Exp $
 .TH POSTMASTER UNIX 11/05/95 PostgreSQL PostgreSQL
 .SH "NAME"
 postmaster \(em run the Postgres postmaster
@@ -173,23 +173,6 @@ programmer can then use the
 .IR shmemdoc
 program to examine shared memory and semaphore state.
 .TP
-.BR "-e"
-The
-.IR "-e"
-option controls how dates are input to and output from the database.
-.IP
-If the
-.IR "-e"
-option is supplied, then all dates passed to and from the frontend
-processes will be assumed to be in
-.IR "European"
-format ie.
-.IR "DD-MM-YYYY"
-otherwise dates are input and output in
-.IR "American"
-format ie.
-.IR "MM-DD-YYYY"
-.TP
 .BR "-o" " backend_options"
 The 
 .IR postgres (1)