diff --git a/doc/TODO b/doc/TODO
index 5a7461cc08cf8bc21cc57c24e177916df14e19f0..fb862f50dd2b9e2a892dbff94eedda6fe26800cc 100644
--- a/doc/TODO
+++ b/doc/TODO
@@ -1,7 +1,7 @@
 PostgreSQL TODO List
 ====================
 Current maintainer:	Bruce Momjian (bruce@momjian.us)
-Last updated:		Wed Mar  5 11:07:13 EST 2008
+Last updated:		Wed Mar  5 22:15:29 EST 2008
 
 The most recent version of this document can be viewed at
 http://www.postgresql.org/docs/faqs.TODO.html.
@@ -711,73 +711,75 @@ SQL Commands
 	  ANALYZE, and CLUSTER
 
 
-* Referential Integrity
 
-	o Add MATCH PARTIAL referential integrity
-	o Change foreign key constraint for array -> element to mean element
-	  in array?
-	o Fix problem when cascading referential triggers make changes on
-	  cascaded tables, seeing the tables in an intermediate state
+Referential Integrity
+=====================
 
-	  http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php
-	  http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php
+* Add MATCH PARTIAL referential integrity
+* Change foreign key constraint for array -> element to mean element
+  in array?
+* Fix problem when cascading referential triggers make changes on
+  cascaded tables, seeing the tables in an intermediate state
 
-	o Allow DEFERRABLE and end-of-statement UNIQUE constraints?
+  http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php
+  http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php
 
-	  This would allow UPDATE tab SET col = col + 1 to work if col has
-	  a unique index.  Currently, uniqueness checks are done while the
-	  command is being executed, rather than at the end of the statement
-	  or transaction.
+* Allow DEFERRABLE and end-of-statement UNIQUE constraints?
 
-	  http://people.planetpostgresql.org/greg/index.php?/archives/2006/06/10.html
-	  http://archives.postgresql.org/pgsql-hackers/2006-09/msg01458.php
+  This would allow UPDATE tab SET col = col + 1 to work if col has
+  a unique index.  Currently, uniqueness checks are done while the
+  command is being executed, rather than at the end of the statement
+  or transaction.
+  http://people.planetpostgresql.org/greg/index.php?/archives/2006/06/10.html
+  http://archives.postgresql.org/pgsql-hackers/2006-09/msg01458.php
 
 
-* Server-Side Languages
+Server-Side Languages
+=====================
 
-	o PL/pgSQL
-		o Fix RENAME to work on variables other than OLD/NEW
+* PL/pgSQL
+	o Fix RENAME to work on variables other than OLD/NEW
 
-		  http://archives.postgresql.org/pgsql-hackers/2002-03/msg00591.php
-		  http://archives.postgresql.org/pgsql-hackers/2007-01/msg01615.php
-		  http://archives.postgresql.org/pgsql-hackers/2007-01/msg01587.php
+	  http://archives.postgresql.org/pgsql-hackers/2002-03/msg00591.php
+	  http://archives.postgresql.org/pgsql-hackers/2007-01/msg01615.php
+	  http://archives.postgresql.org/pgsql-hackers/2007-01/msg01587.php
 
-		o Allow function parameters to be passed by name,
-		  get_employee_salary(12345 AS emp_id, 2001 AS tax_year)
-		o Allow handling of %TYPE arrays, e.g. tab.col%TYPE[]
-		o Allow listing of record column names, and access to
-		  record columns via variables, e.g. columns := r.(*),
-		  tval2 := r.(colname)
+	o Allow function parameters to be passed by name,
+	  get_employee_salary(12345 AS emp_id, 2001 AS tax_year)
+	o Allow handling of %TYPE arrays, e.g. tab.col%TYPE[]
+	o Allow listing of record column names, and access to
+	  record columns via variables, e.g. columns := r.(*),
+	  tval2 := r.(colname)
 
-		  http://archives.postgresql.org/pgsql-patches/2005-07/msg00458.php
-		  http://archives.postgresql.org/pgsql-patches/2006-05/msg00302.php
-		  http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php
+	  http://archives.postgresql.org/pgsql-patches/2005-07/msg00458.php
+	  http://archives.postgresql.org/pgsql-patches/2006-05/msg00302.php
+	  http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php
 
-		o Add support for SCROLL cursors
-		o Add support for WITH HOLD cursors
-		o Allow row and record variables to be set to NULL constants,
-		  and allow NULL tests on such variables
+	o Add support for SCROLL cursors
+	o Add support for WITH HOLD cursors
+	o Allow row and record variables to be set to NULL constants,
+	  and allow NULL tests on such variables
 
-		  Because a row is not scalar, do not allow assignment
-		  from NULL-valued scalars.
+	  Because a row is not scalar, do not allow assignment
+	  from NULL-valued scalars.
 
-		  http://archives.postgresql.org/pgsql-hackers/2006-10/msg00070.php
+	  http://archives.postgresql.org/pgsql-hackers/2006-10/msg00070.php
 
-	o Other
-		o Add table function support to pltcl, plpythonu
-		o Add support for polymorphic arguments and return types to
-		  languages other than PL/PgSQL
-		o Add capability to create and call PROCEDURES
-		o Add support for OUT and INOUT parameters to languages other
-		  than PL/PgSQL
-		o Add PL/PythonU tracebacks
+* Other
+	o Add table function support to pltcl, plpythonu
+	o Add support for polymorphic arguments and return types to
+	  languages other than PL/PgSQL
+	o Add capability to create and call PROCEDURES
+	o Add support for OUT and INOUT parameters to languages other
+	  than PL/PgSQL
+	o Add PL/PythonU tracebacks
 
-		  http://archives.postgresql.org/pgsql-patches/2006-02/msg00288.php
+	  http://archives.postgresql.org/pgsql-patches/2006-02/msg00288.php
 
-		o Allow data to be passed in native language formats, rather
-		  than only text
+	o Allow data to be passed in native language formats, rather
+	  than only text
 
-		  http://archives.postgresql.org/pgsql-hackers/2007-05/msg00289.php
+	  http://archives.postgresql.org/pgsql-hackers/2007-05/msg00289.php
 
 
 Clients
diff --git a/doc/src/FAQ/TODO.html b/doc/src/FAQ/TODO.html
index 7e520f6a7e79776442c4c27202a67dc2f3a362d0..b38becbc191e4fe1b181ab1312f2abe144f2572a 100644
--- a/doc/src/FAQ/TODO.html
+++ b/doc/src/FAQ/TODO.html
@@ -8,7 +8,7 @@
 <body bgcolor="#FFFFFF" text="#000000" link="#FF0000" vlink="#A00000" alink="#0000FF">
 <h1><a name="section_1">PostgreSQL TODO List</a></h1>
 <p>Current maintainer:     Bruce Momjian (<a href="mailto:bruce@momjian.us">bruce@momjian.us</a>)<br/>
-Last updated:           Wed Mar  5 11:07:13 EST 2008
+Last updated:           Wed Mar  5 22:15:29 EST 2008
 </p>
 <p>The most recent version of this document can be viewed at<br/>
 <a href="http://www.postgresql.org/docs/faqs.TODO.html">http://www.postgresql.org/docs/faqs.TODO.html</a>.
@@ -623,74 +623,75 @@ first.  There is also a developer's wiki at<br/>
     <li>Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM
           ANALYZE, and CLUSTER
   </li></ul>
-  </li><li>Referential Integrity
+</li></ul>
+<h1><a name="section_8">Referential Integrity</a></h1>
+
+<ul>
+  <li>Add MATCH PARTIAL referential integrity
+  </li><li>Change foreign key constraint for array -&gt; element to mean element
+  in array?
+  </li><li>Fix problem when cascading referential triggers make changes on
+  cascaded tables, seeing the tables in an intermediate state
+<p>  <a href="http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php">http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php</a>
+  <a href="http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php">http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php</a>
+</p>
+  </li><li>Allow DEFERRABLE and end-of-statement UNIQUE constraints?
+<p>  This would allow UPDATE tab SET col = col + 1 to work if col has
+  a unique index.  Currently, uniqueness checks are done while the
+  command is being executed, rather than at the end of the statement
+  or transaction.
+  <a href="http://people.planetpostgresql.org/greg/index.php?/archives/2006/06/10.html">http://people.planetpostgresql.org/greg/index.php?/archives/2006/06/10.html</a>
+  <a href="http://archives.postgresql.org/pgsql-hackers/2006-09/msg01458.php">http://archives.postgresql.org/pgsql-hackers/2006-09/msg01458.php</a>
+</p>
+</li></ul>
+<h1><a name="section_9">Server-Side Languages</a></h1>
+
+<ul>
+  <li>PL/pgSQL
   <ul>
-    <li>Add MATCH PARTIAL referential integrity
-    </li><li>Change foreign key constraint for array -&gt; element to mean element
-          in array?
-    </li><li>Fix problem when cascading referential triggers make changes on
-          cascaded tables, seeing the tables in an intermediate state
-<p>          <a href="http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php">http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php</a>
-          <a href="http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php">http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php</a>
-</p>
-    </li><li>Allow DEFERRABLE and end-of-statement UNIQUE constraints?
-<p>          This would allow UPDATE tab SET col = col + 1 to work if col has
-          a unique index.  Currently, uniqueness checks are done while the
-          command is being executed, rather than at the end of the statement
-          or transaction.
-</p>
-<p>          <a href="http://people.planetpostgresql.org/greg/index.php?/archives/2006/06/10.html">http://people.planetpostgresql.org/greg/index.php?/archives/2006/06/10.html</a>
-          <a href="http://archives.postgresql.org/pgsql-hackers/2006-09/msg01458.php">http://archives.postgresql.org/pgsql-hackers/2006-09/msg01458.php</a>
+    <li>Fix RENAME to work on variables other than OLD/NEW
+<p>          <a href="http://archives.postgresql.org/pgsql-hackers/2002-03/msg00591.php">http://archives.postgresql.org/pgsql-hackers/2002-03/msg00591.php</a>
+          <a href="http://archives.postgresql.org/pgsql-hackers/2007-01/msg01615.php">http://archives.postgresql.org/pgsql-hackers/2007-01/msg01615.php</a>
+          <a href="http://archives.postgresql.org/pgsql-hackers/2007-01/msg01587.php">http://archives.postgresql.org/pgsql-hackers/2007-01/msg01587.php</a>
+</p>
+    </li><li>Allow function parameters to be passed by name,
+          get_employee_salary(12345 AS emp_id, 2001 AS tax_year)
+    </li><li>Allow handling of %TYPE arrays, e.g. tab.col%TYPE[<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?"></a>]
+    </li><li>Allow listing of record column names, and access to
+          record columns via variables, e.g. columns := r.(*),
+          tval2 := r.(colname)
+<p>          <a href="http://archives.postgresql.org/pgsql-patches/2005-07/msg00458.php">http://archives.postgresql.org/pgsql-patches/2005-07/msg00458.php</a>
+          <a href="http://archives.postgresql.org/pgsql-patches/2006-05/msg00302.php">http://archives.postgresql.org/pgsql-patches/2006-05/msg00302.php</a>
+          <a href="http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php">http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php</a>
+</p>
+    </li><li>Add support for SCROLL cursors
+    </li><li>Add support for WITH HOLD cursors
+    </li><li>Allow row and record variables to be set to NULL constants,
+          and allow NULL tests on such variables
+<p>          Because a row is not scalar, do not allow assignment
+          from NULL-valued scalars.
+</p>
+<p>          <a href="http://archives.postgresql.org/pgsql-hackers/2006-10/msg00070.php">http://archives.postgresql.org/pgsql-hackers/2006-10/msg00070.php</a>
 </p>
   </li></ul>
-  </li><li>Server-Side Languages
+  </li><li>Other
   <ul>
-    <li>PL/pgSQL
-    <ul>
-      <li>Fix RENAME to work on variables other than OLD/NEW
-<p>                  <a href="http://archives.postgresql.org/pgsql-hackers/2002-03/msg00591.php">http://archives.postgresql.org/pgsql-hackers/2002-03/msg00591.php</a>
-                  <a href="http://archives.postgresql.org/pgsql-hackers/2007-01/msg01615.php">http://archives.postgresql.org/pgsql-hackers/2007-01/msg01615.php</a>
-                  <a href="http://archives.postgresql.org/pgsql-hackers/2007-01/msg01587.php">http://archives.postgresql.org/pgsql-hackers/2007-01/msg01587.php</a>
-</p>
-      </li><li>Allow function parameters to be passed by name,
-                  get_employee_salary(12345 AS emp_id, 2001 AS tax_year)
-      </li><li>Allow handling of %TYPE arrays, e.g. tab.col%TYPE[<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?"></a>]
-      </li><li>Allow listing of record column names, and access to
-                  record columns via variables, e.g. columns := r.(*),
-                  tval2 := r.(colname)
-<p>                  <a href="http://archives.postgresql.org/pgsql-patches/2005-07/msg00458.php">http://archives.postgresql.org/pgsql-patches/2005-07/msg00458.php</a>
-                  <a href="http://archives.postgresql.org/pgsql-patches/2006-05/msg00302.php">http://archives.postgresql.org/pgsql-patches/2006-05/msg00302.php</a>
-                  <a href="http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php">http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php</a>
-</p>
-      </li><li>Add support for SCROLL cursors
-      </li><li>Add support for WITH HOLD cursors
-      </li><li>Allow row and record variables to be set to NULL constants,
-                  and allow NULL tests on such variables
-<p>                  Because a row is not scalar, do not allow assignment
-                  from NULL-valued scalars.
-</p>
-<p>                  <a href="http://archives.postgresql.org/pgsql-hackers/2006-10/msg00070.php">http://archives.postgresql.org/pgsql-hackers/2006-10/msg00070.php</a>
-</p>
-    </li></ul>
-    </li><li>Other
-    <ul>
-      <li>Add table function support to pltcl, plpythonu
-      </li><li>Add support for polymorphic arguments and return types to
-                  languages other than PL/PgSQL
-      </li><li>Add capability to create and call PROCEDURES
-      </li><li>Add support for OUT and INOUT parameters to languages other
-                  than PL/PgSQL
-      </li><li>Add PL/PythonU tracebacks
-<p>                  <a href="http://archives.postgresql.org/pgsql-patches/2006-02/msg00288.php">http://archives.postgresql.org/pgsql-patches/2006-02/msg00288.php</a>
-</p>
-      </li><li>Allow data to be passed in native language formats, rather
-                  than only text
-<p>                  <a href="http://archives.postgresql.org/pgsql-hackers/2007-05/msg00289.php">http://archives.postgresql.org/pgsql-hackers/2007-05/msg00289.php</a>
+    <li>Add table function support to pltcl, plpythonu
+    </li><li>Add support for polymorphic arguments and return types to
+          languages other than PL/PgSQL
+    </li><li>Add capability to create and call PROCEDURES
+    </li><li>Add support for OUT and INOUT parameters to languages other
+          than PL/PgSQL
+    </li><li>Add PL/PythonU tracebacks
+<p>          <a href="http://archives.postgresql.org/pgsql-patches/2006-02/msg00288.php">http://archives.postgresql.org/pgsql-patches/2006-02/msg00288.php</a>
+</p>
+    </li><li>Allow data to be passed in native language formats, rather
+          than only text
+<p>          <a href="http://archives.postgresql.org/pgsql-hackers/2007-05/msg00289.php">http://archives.postgresql.org/pgsql-hackers/2007-05/msg00289.php</a>
 </p>
-    </li></ul>
   </li></ul>
 </li></ul>
-<h1><a name="section_8">Clients</a></h1>
+<h1><a name="section_10">Clients</a></h1>
 
 <ul>
   <li>Have pg_ctl look at PGHOST in case it is a socket directory?
@@ -821,7 +822,7 @@ first.  There is also a developer's wiki at<br/>
 </p>
   </li></ul>
 </li></ul>
-<h1><a name="section_9">Triggers</a></h1>
+<h1><a name="section_11">Triggers</a></h1>
 
 <ul>
   <li>Add deferred trigger queue file
@@ -859,7 +860,7 @@ first.  There is also a developer's wiki at<br/>
 <p>  <a href="http://archives.postgresql.org/pgsql-sql/2008-01/msg00050.php">http://archives.postgresql.org/pgsql-sql/2008-01/msg00050.php</a>
 </p>
 </li></ul>
-<h1><a name="section_10">Indexes</a></h1>
+<h1><a name="section_12">Indexes</a></h1>
 
 <ul>
   <li>Add UNIQUE capability to non-btree indexes
@@ -931,7 +932,7 @@ first.  There is also a developer's wiki at<br/>
 <p>          <a href="http://archives.postgresql.org/pgsql-hackers/2007-03/msg01199.php">http://archives.postgresql.org/pgsql-hackers/2007-03/msg01199.php</a>
 </p>
 </li></ul>
-<h1><a name="section_11">Fsync</a></h1>
+<h1><a name="section_13">Fsync</a></h1>
 
 <ul>
   <li>Determine optimal fdatasync/fsync, O_SYNC/O_DSYNC options
@@ -941,7 +942,7 @@ first.  There is also a developer's wiki at<br/>
 </p>
   </li><li>Add program to test if fsync has a delay compared to non-fsync
 </li></ul>
-<h1><a name="section_12">Cache Usage</a></h1>
+<h1><a name="section_14">Cache Usage</a></h1>
 
 <ul>
   <li>Speed up COUNT(*)
@@ -994,7 +995,7 @@ first.  There is also a developer's wiki at<br/>
   <a href="http://archives.postgresql.org/pgsql-hackers/2007-01/msg00752.php">http://archives.postgresql.org/pgsql-hackers/2007-01/msg00752.php</a>
 </p>
 </li></ul>
-<h1><a name="section_13">Vacuum</a></h1>
+<h1><a name="section_15">Vacuum</a></h1>
 
 <ul>
   <li>Improve speed with indexes
@@ -1045,7 +1046,7 @@ first.  There is also a developer's wiki at<br/>
 </p>
   </li></ul>
 </li></ul>
-<h1><a name="section_14">Locking</a></h1>
+<h1><a name="section_16">Locking</a></h1>
 
 <ul>
   <li>Fix priority ordering of read and write light-weight locks (Neil)
@@ -1071,7 +1072,7 @@ first.  There is also a developer's wiki at<br/>
   <a href="http://archives.postgresql.org/pgsql-committers/2008-01/msg00365.php">http://archives.postgresql.org/pgsql-committers/2008-01/msg00365.php</a>
 </p>
 </li></ul>
-<h1><a name="section_15">Startup Time Improvements</a></h1>
+<h1><a name="section_17">Startup Time Improvements</a></h1>
 
 <ul>
   <li>Experiment with multi-threaded backend for backend creation [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?thread">thread</a>]
@@ -1082,7 +1083,7 @@ first.  There is also a developer's wiki at<br/>
   a single session using multiple threads to execute a statement faster.
 </p>
 </li></ul>
-<h1><a name="section_16">Write-Ahead Log</a></h1>
+<h1><a name="section_18">Write-Ahead Log</a></h1>
 
 <ul>
   <li>Eliminate need to write full pages to WAL before page modification [<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?wal">wal</a>]
@@ -1143,7 +1144,7 @@ first.  There is also a developer's wiki at<br/>
   <a href="http://archives.postgresql.org/pgsql-hackers/2008-02/msg01279.php">http://archives.postgresql.org/pgsql-hackers/2008-02/msg01279.php</a>
 </p>
 </li></ul>
-<h1><a name="section_17">Optimizer / Executor</a></h1>
+<h1><a name="section_19">Optimizer / Executor</a></h1>
 
 <ul>
   <li>Improve selectivity functions for geometric operators
@@ -1166,7 +1167,7 @@ first.  There is also a developer's wiki at<br/>
 <p>  <a href="http://archives.postgresql.org/pgsql-hackers/2007-01/msg00096.php">http://archives.postgresql.org/pgsql-hackers/2007-01/msg00096.php</a>
 </p>
 </li></ul>
-<h1><a name="section_18">Miscellaneous Performance</a></h1>
+<h1><a name="section_20">Miscellaneous Performance</a></h1>
 
 <ul>
   <li>Do async I/O for faster random read-ahead of data
@@ -1219,7 +1220,7 @@ first.  There is also a developer's wiki at<br/>
   concurrent reads from multiple devices in a partitioned table.
 </p>
 </li></ul>
-<h1><a name="section_19">Source Code</a></h1>
+<h1><a name="section_21">Source Code</a></h1>
 
 <ul>
   <li>Add use of 'const' for variables in source tree
@@ -1286,7 +1287,7 @@ first.  There is also a developer's wiki at<br/>
           of result sets using new statement protocol
   </li></ul>
 </li></ul>
-<h1><a name="section_20">Exotic Features</a></h1>
+<h1><a name="section_22">Exotic Features</a></h1>
 
 <ul>
   <li>Add pre-parsing phase that converts non-ISO syntax to supported
@@ -1313,7 +1314,7 @@ first.  There is also a developer's wiki at<br/>
 <p>  <a href="http://archives.postgresql.org/pgsql-hackers/2008-01/msg00893.php">http://archives.postgresql.org/pgsql-hackers/2008-01/msg00893.php</a>
 </p>
 </li></ul>
-<h1><a name="section_21">Features We Do <u>Not</u> Want</a></h1>
+<h1><a name="section_23">Features We Do <u>Not</u> Want</a></h1>
 
 <ul>
   <li>All backends running as threads in a single process (not wanted)