]> granicus.if.org Git - postgresql/commitdiff
Remove completed items:
authorBruce Momjian <bruce@momjian.us>
Fri, 26 Aug 2005 18:59:48 +0000 (18:59 +0000)
committerBruce Momjian <bruce@momjian.us>
Fri, 26 Aug 2005 18:59:48 +0000 (18:59 +0000)
< * -Allow limits on per-db/role connections
43d41
< * -Prevent dropping user that still owns objects, or auto-drop the objects
49d46
< * -Add the client IP address and port to pg_stat_activity
< * -Add session start time and last statement time to pg_stat_activity
< * -Add a function that returns the start time of the postmaster
230d224
<  o -Allow MIN()/MAX() on arrays
<  o -Modify array literal representation to handle array index lower bound
<    of other than one
253d244
< * -Add function to return compressed length of TOAST data values
< * -Prevent to_char() on interval from returning meaningless values
<
<   For example, to_char('1 month', 'mon') is meaningless.  Basically,
<   most date-related parameters to to_char() are meaningless for
<   intervals because interval is not anchored to a date.
<
< * -Have views on temporary tables exist in the temporary namespace
< * -Allow temporary views on non-temporary tables
329d311
< * -Add BETWEEN SYMMETRIC/ASYMMETRIC
< * -Add E'' escape string marker so eventually ordinary strings can treat
<   backslashes literally, for portability
<
< * -Allow additional tables to be specified in DELETE for joins
<
<   UPDATE already allows this (UPDATE...FROM) but we need similar
<   functionality in DELETE.  It's been agreed that the keyword should
<   be USING, to avoid anything as confusing as DELETE FROM a FROM b.
<
341d313
< * -Allow REINDEX to rebuild all database indexes
< * -Add an option to automatically use savepoints for each statement in a
<   multi-statement transaction.
<
<   When enabled, this would allow errors in multi-statement transactions
<   to be automatically ignored.
<
426d391
<  o -Allow FOR UPDATE queries to do NOWAIT locks
473d437
<  o -Allow COPY to understand \x as a hex byte
<  o -Allow COPY to optionally include column headings in the first line
<  o -Allow COPY FROM ... CSV to interpret newlines and carriage
<    returns in data
525d485
<  o -Have SHOW ALL show descriptions for server-side variables
<  o -Allow PL/PgSQL's RAISE function to take expressions
<
<    Currently only constants are supported.
<
<  o -Change PL/PgSQL to use palloc() instead of malloc()
545d499
<  o -Allow PL/pgSQL EXECUTE query_var INTO record_var;
550d503
<  o -Pass arrays natively instead of as text between plperl and postgres
598d550
<  o -Add dumping and restoring of LOB comments
638d589
< * -Implement shared row locks and use them in RI triggers
642d592
< * -Allow triggers to be disabled
< * -Add two-phase commit
<
<
< * -Prevent inherited tables from expanding temporary subtables of other
<   sessions
< * -Use indexes for MIN() and MAX()
<
<   MIN/MAX queries can already be rewritten as SELECT col FROM tab ORDER
<   BY col {DESC} LIMIT 1. Completing this item involves doing this
<   transformation automatically.
<
< * -Use index to restrict rows returned by multi-key index when used with
<   non-consecutive keys to reduce heap accesses
<
<   For an index on col1,col2,col3, and a WHERE clause of col1 = 5 and
<   col3 = 9, spin though the index checking for col1 and col3 matches,
<   rather than just col1; also called skip-scanning.
<
< * -Fetch heap pages matching index entries in sequential order
<
<   Rather than randomly accessing heap pages based on index entries, mark
<   heap pages needing access in a bitmap and do the lookups in sequential
<   order. Another method would be to sort heap ctids matching the index
<   before accessing the heap rows.
<
< * -Allow non-bitmap indexes to be combined by creating bitmaps in memory
<
<   This feature allows separate indexes to be ANDed or ORed together.  This
<   is particularly useful for data warehousing applications that need to
<   query the database in an many permutations.  This feature scans an index
<   and creates an in-memory bitmap, and allows that bitmap to be combined
<   with other bitmap created in a similar way.  The bitmap can either index
<   all TIDs, or be lossy, meaning it records just page numbers and each
<   page tuple has to be checked for validity in a separate pass.
<
< * -Fix incorrect rtree results due to wrong assumptions about "over"
<   operator semantics
782d694
<  o -Add concurrency to GIST
813d724
< * -Allow multiple blocks to be written to WAL with one write()
< * -Consider use of open/fcntl(O_DIRECT) to minimize OS caching,
<   for WAL writes
<
<   O_DIRECT doesn't have the same media write guarantees as fsync, so it
<   is in addition to the fsync method, not in place of it.
<
< * -Cache last known per-tuple offsets to speed long tuple access
< * -Allow the size of the buffer cache used by temporary objects to be
<   specified as a GUC variable
<
<   Larger local buffer cache sizes requires more efficient handling of
<   local cache lookups.
<
< * -Improve the background writer
<
<   Allow the background writer to more efficiently write dirty buffers
<   from the end of the LRU cache and use a clock sweep algorithm to
<   write other dirty buffers to reduced checkpoint I/O
<
897d788
< * -Add a warning when the free space map is too small
917d807
<  o -Move into the backend code
< * -Make locking of shared data structures more fine-grained
<
<   This requires that more locks be acquired but this would reduce lock
<   contention, improving concurrency.
<
< * -Improve SMP performance on i386 machines
<
<   i386-based SMP machines can generate excessive context switching
<   caused by lock failure in high concurrency situations. This may be
<   caused by CPU cache line invalidation inefficiencies.
<
979d857
<  o  -Add ability to turn off full page writes
< * -Eliminate WAL logging for CREATE TABLE AS when not doing WAL archiving
< * -Change WAL to use 32-bit CRC, for performance reasons
<
< * -Use CHECK constraints to influence optimizer decisions
<
<   CHECK constraints contain information about the distribution of values
<   within the table. This is also useful for implementing subtables where
<   a tables content is distributed across several subtables.
<
1045d913
< * -ANALYZE should record a pg_statistic entry for an all-NULL column
1099d966
< * -Remove kerberos4 from source tree
1103d969
< * -Make src/port/snprintf.c thread-safe
1118d983
< * -Add C code on Unix to copy directories for use in creating new databases
1133d997
<  o -Improve dlerror() reporting string

doc/TODO
doc/src/FAQ/TODO.html

index 4ca5718f7c2a2af7eb688b57f53e685f5cb46c68..992545485e3b301eb9b07e1eb17ab8f3d1ac9fcd 100644 (file)
--- a/doc/TODO
+++ b/doc/TODO
@@ -2,7 +2,7 @@
 PostgreSQL TODO List
 ====================
 Current maintainer:    Bruce Momjian (pgman@candle.pha.pa.us)
-Last updated:          Fri Aug 26 14:52:30 EDT 2005
+Last updated:          Fri Aug 26 14:59:39 EDT 2005
 
 The most recent version of this document can be viewed at
 http://www.postgresql.org/docs/faqs.TODO.html.
@@ -22,7 +22,6 @@ Administration
 
 * %Remove behavior of postmaster -o after making postmaster/postgres
   flags unique
-* -Allow limits on per-db/role connections
 * %Allow pooled connections to list all prepared queries
 
   This would allow an application inheriting a pooled connection to know
@@ -40,13 +39,11 @@ Administration
   it is unknown whether other problems exist.  This item mostly
   requires additional testing rather than of writing any new code.
 
-* -Prevent dropping user that still owns objects, or auto-drop the objects
 * %Set proper permissions on non-system schemas during db creation
 
   Currently all schemas are owned by the super-user because they are
   copied from the template1 database.
 
-* -Add the client IP address and port to pg_stat_activity
 * Support table partitioning that allows a single table to be stored
   in subtables that are partitioned based on the primary key or a WHERE
   clause
@@ -156,8 +153,6 @@ Monitoring
   a database for analysis.
 
 * %Add ability to monitor the use of temporary sort files
-* -Add session start time and last statement time to pg_stat_activity
-* -Add a function that returns the start time of the postmaster
 * Allow server logs to be remotely read and removed using SQL commands
 
 
@@ -227,11 +222,8 @@ Data Types
 * Arrays
 
        o Allow NULLs in arrays
-       o -Allow MIN()/MAX() on arrays
        o Delay resolution of array expression's data type so assignment
          coercion can be performed on empty array expressions
-       o -Modify array literal representation to handle array index lower bound
-         of other than one
 
 
 * Binary Data
@@ -250,7 +242,6 @@ Data Types
 Functions
 =========
 
-* -Add function to return compressed length of TOAST data values
 * Allow INET subnet tests using non-constants to be indexed
 * Add transaction_timestamp(), statement_timestamp(), clock_timestamp()
   functionality
@@ -277,12 +268,6 @@ Functions
        o to_char(INTERVAL '43 hours 20 minutes', 'WK:DD:HR:MI') => 0:1:19:20
        o to_char(INTERVAL '3 years 5 months','MM') => 41
 
-* -Prevent to_char() on interval from returning meaningless values
-
-  For example, to_char('1 month', 'mon') is meaningless.  Basically,
-  most date-related parameters to to_char() are meaningless for
-  intervals because interval is not anchored to a date.
-
 * Add sleep() function, remove from regress.c
 
 
@@ -318,27 +303,14 @@ Views / Rules
 
 * Add the functionality for WITH CHECK OPTION clause of CREATE VIEW
 * Allow NOTIFY in rules involving conditionals
-* -Have views on temporary tables exist in the temporary namespace
-* -Allow temporary views on non-temporary tables
 * Allow VIEW/RULE recompilation when the underlying tables change
 
 
 SQL Commands
 ============
 
-* -Add BETWEEN SYMMETRIC/ASYMMETRIC
 * Change LIMIT/OFFSET and FETCH/MOVE to use int8
-* -Add E'' escape string marker so eventually ordinary strings can treat
-  backslashes literally, for portability
-
-* -Allow additional tables to be specified in DELETE for joins
-
-  UPDATE already allows this (UPDATE...FROM) but we need similar
-  functionality in DELETE.  It's been agreed that the keyword should
-  be USING, to avoid anything as confusing as DELETE FROM a FROM b.
-
 * Add CORRESPONDING BY to UNION/INTERSECT/EXCEPT
-* -Allow REINDEX to rebuild all database indexes
 * Add ROLLUP, CUBE, GROUPING SETS options to GROUP BY
 * %Allow SET CONSTRAINTS to be qualified by schema/table name
 * %Allow TRUNCATE ... CASCADE/RESTRICT
@@ -379,12 +351,6 @@ SQL Commands
   creation
 * %Add COMMENT ON for all cluster global objects (roles, databases
   and tablespaces)
-* -Add an option to automatically use savepoints for each statement in a
-  multi-statement transaction.
-
-  When enabled, this would allow errors in multi-statement transactions
-  to be automatically ignored.
-
 * %Make row-wise comparisons work per SQL spec
 * Add RESET CONNECTION command to reset all session state
 
@@ -423,7 +389,6 @@ SQL Commands
 
        o Allow UPDATE tab SET ROW (col, ...) = (...) for updating multiple
          columns
-       o -Allow FOR UPDATE queries to do NOWAIT locks
 
 
 * ALTER
@@ -470,11 +435,7 @@ SQL Commands
          This requires the use of a savepoint before each COPY line is
          processed, with ROLLBACK on COPY failure.
 
-       o -Allow COPY to understand \x as a hex byte
        o %Have COPY return the number of rows loaded/unloaded?
-       o -Allow COPY to optionally include column headings in the first line
-       o -Allow COPY FROM ... CSV to interpret newlines and carriage
-         returns in data
 
 
 * GRANT/REVOKE
@@ -522,7 +483,6 @@ SQL Commands
 
 * SHOW/SET
 
-       o -Have SHOW ALL show descriptions for server-side variables
        o Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM
          ANALYZE, and CLUSTER
        o Add SET PATH for schemas?
@@ -532,22 +492,15 @@ SQL Commands
 
 * Server-Side Languages
 
-       o -Allow PL/PgSQL's RAISE function to take expressions
-
-         Currently only constants are supported.
-
-       o -Change PL/PgSQL to use palloc() instead of malloc()
        o Fix PL/pgSQL RENAME to work on variables other than OLD/NEW
        o Allow function parameters to be passed by name,
          get_employee_salary(emp_id => 12345, tax_year => 2001)
        o Add Oracle-style packages
        o Add table function support to pltcl, plpython
-       o -Allow PL/pgSQL EXECUTE query_var INTO record_var;
        o Add capability to create and call PROCEDURES
        o Allow PL/pgSQL to handle %TYPE arrays, e.g. tab.col%TYPE[]
        o Allow function argument names to be queries from PL/PgSQL
        o Add MOVE to PL/pgSQL
-       o -Pass arrays natively instead of as text between plperl and postgres
        o Add support for polymorphic arguments and return types to
          languages other than PL/PgSQL
        o Add support for OUT and INOUT parameters to languages other 
@@ -595,7 +548,6 @@ Clients
        o %Add dumping of comments on index columns
        o %Replace crude DELETE FROM method of pg_dumpall --clean for 
           cleaning of roles with separate DROP commands
-       o -Add dumping and restoring of LOB comments
        o Stop dumping CASCADE on DROP TYPE commands in clean mode
        o %Add full object name to the tag field.  eg. for operators we need
          '=(integer, integer)', instead of just '='.
@@ -635,11 +587,9 @@ Referential Integrity
   memory.  This could exhaust memory for very large trigger queues.
   This item involves dumping large queues into files.
 
-* -Implement shared row locks and use them in RI triggers
 * Change foreign key constraint for array -> element to mean element
   in array?
 * Allow DEFERRABLE UNIQUE constraints?
-* -Allow triggers to be disabled
 * Allow triggers to be disabled in only the current session.
 
   This is currently possible by starting a multi-statement transaction,
@@ -693,9 +643,6 @@ Exotic Features
 
   This can be done using dblink and two-phase commit.
 
-* -Add two-phase commit
-
-
 * Add the features of packages
 
        o  Make private objects accessable only to objects in the same schema
@@ -717,44 +664,12 @@ Indexes
   that can span more than one table.
 
 * Allow SELECT ... FOR UPDATE on inherited tables
-* -Prevent inherited tables from expanding temporary subtables of other
-  sessions
 * Add UNIQUE capability to non-btree indexes
-* -Use indexes for MIN() and MAX()
-
-  MIN/MAX queries can already be rewritten as SELECT col FROM tab ORDER
-  BY col {DESC} LIMIT 1. Completing this item involves doing this
-  transformation automatically.
-
-* -Use index to restrict rows returned by multi-key index when used with
-  non-consecutive keys to reduce heap accesses
-
-  For an index on col1,col2,col3, and a WHERE clause of col1 = 5 and
-  col3 = 9, spin though the index checking for col1 and col3 matches,
-  rather than just col1; also called skip-scanning.
-
 * Prevent index uniqueness checks when UPDATE does not modify the column
 
   Uniqueness (index) checks are done when updating a column even if the
   column is not modified by the UPDATE.
 
-* -Fetch heap pages matching index entries in sequential order
-
-  Rather than randomly accessing heap pages based on index entries, mark
-  heap pages needing access in a bitmap and do the lookups in sequential
-  order. Another method would be to sort heap ctids matching the index
-  before accessing the heap rows.
-
-* -Allow non-bitmap indexes to be combined by creating bitmaps in memory
-
-  This feature allows separate indexes to be ANDed or ORed together.  This
-  is particularly useful for data warehousing applications that need to
-  query the database in an many permutations.  This feature scans an index
-  and creates an in-memory bitmap, and allows that bitmap to be combined
-  with other bitmap created in a similar way.  The bitmap can either index
-  all TIDs, or be lossy, meaning it records just page numbers and each
-  page tuple has to be checked for validity in a separate pass.
-
 * Allow the creation of on-disk bitmap indexes which can be quickly
   combined with other bitmap indexes
 
@@ -770,8 +685,6 @@ Indexes
   one column or expression indexes, perhaps using per-index statistics
 * Add fillfactor to control reserved free space during index creation
 * Allow the creation of indexes with mixed ascending/descending specifiers
-* -Fix incorrect rtree results due to wrong assumptions about "over"
-  operator semantics
 * Allow constraint_exclusion to work for UNIONs like it does for
   inheritance, and allow it to work for UPDATE and DELETE queries
 
@@ -779,7 +692,6 @@ Indexes
 * GIST
 
        o Add more GIST index support for geometric data types
-       o -Add concurrency to GIST
        o Allow GIST indexes to create certain complex index types, like
          digital trees (see Aoki)
 
@@ -810,7 +722,6 @@ Fsync
   Ideally this requires a separate test program that can be run
   at initdb time or optionally later.
 
-* -Allow multiple blocks to be written to WAL with one write()
 * %Add an option to sync() before fsync()'ing checkpoint files
 * Add program to test if fsync has a delay compared to non-fsync
 
@@ -826,13 +737,6 @@ Cache Usage
   backends that also have the file open, and the feature is not supported
   on all operating systems.
 
-* -Consider use of open/fcntl(O_DIRECT) to minimize OS caching,
-  for WAL writes
-
-  O_DIRECT doesn't have the same media write guarantees as fsync, so it
-  is in addition to the fsync method, not in place of it.
-
-* -Cache last known per-tuple offsets to speed long tuple access
 * Speed up COUNT(*)
 
   We could use a fixed row count and a +/- count to follow MVCC
@@ -858,18 +762,6 @@ Cache Usage
        o Query execute plan
        o Query results
 
-* -Allow the size of the buffer cache used by temporary objects to be
-  specified as a GUC variable
-
-  Larger local buffer cache sizes requires more efficient handling of
-  local cache lookups.
-
-* -Improve the background writer
-
-  Allow the background writer to more efficiently write dirty buffers
-  from the end of the LRU cache and use a clock sweep algorithm to
-  write other dirty buffers to reduced checkpoint I/O
-
 * Allow sequential scans to take advantage of other concurrent
   sequentiqal scans, also called "Synchronised Scanning"
 
@@ -894,7 +786,6 @@ Vacuum
   write lock. However, the read lock promotion to write lock could lead
   to deadlock situations.
 
-* -Add a warning when the free space map is too small
 * Maintain a map of recently-expired rows
 
   This allows vacuum to target specific pages for possible free space 
@@ -914,7 +805,6 @@ Vacuum
 
 * Auto-vacuum
 
-       o -Move into the backend code
        o Use free-space map information to guide refilling
        o %Issue log message to suggest VACUUM FULL if a table is nearly
          empty?
@@ -925,11 +815,6 @@ Vacuum
 Locking
 =======
 
-* -Make locking of shared data structures more fine-grained
-
-  This requires that more locks be acquired but this would reduce lock
-  contention, improving concurrency.
-
 * Add code to detect an SMP machine and handle spinlocks accordingly
   from distributted.net, http://www1.distributed.net/source,
   in client/common/cpucheck.cpp
@@ -938,12 +823,6 @@ Locking
   while on non-SMP machines, the backend should sleep so the process
   holding the lock can complete and release it.
 
-* -Improve SMP performance on i386 machines
-
-  i386-based SMP machines can generate excessive context switching
-  caused by lock failure in high concurrency situations. This may be
-  caused by CPU cache line invalidation inefficiencies.
-
 * Research use of sched_yield() for spinlock acquisition failure
 * Fix priority ordering of read and write light-weight locks (Neil)
 
@@ -976,7 +855,6 @@ Write-Ahead Log
   partial page writes during recovery.  These pages can also be
   eliminated from point-in-time archive files.
 
-       o  -Add ability to turn off full page writes
        o  When off, write CRC to WAL and check file system blocks
           on recovery
 
@@ -1012,9 +890,6 @@ Write-Ahead Log
   remove the 'fsync' parameter (which results in an an inconsistent
   database) in favor of this capability.
 
-* -Eliminate WAL logging for CREATE TABLE AS when not doing WAL archiving
-* -Change WAL to use 32-bit CRC, for performance reasons
-
 
 Optimizer / Executor
 ====================
@@ -1032,17 +907,10 @@ Optimizer / Executor
 * Create utility to compute accurate random_page_cost value
 * Improve ability to display optimizer analysis using OPTIMIZER_DEBUG
 * Have EXPLAIN ANALYZE highlight poor optimizer estimates
-* -Use CHECK constraints to influence optimizer decisions
-
-  CHECK constraints contain information about the distribution of values
-  within the table. This is also useful for implementing subtables where
-  a tables content is distributed across several subtables.
-
 * Consider using hash buckets to do DISTINCT, rather than sorting
 
   This would be beneficial when there are few distinct values.
 
-* -ANALYZE should record a pg_statistic entry for an all-NULL column
 * Log queries where the optimizer row estimates were dramatically
   different from the number of rows actually found?
 * Allow constraint_elimination to be automatically performed
@@ -1096,11 +964,9 @@ Source Code
 * %Promote debug_query_string into a server-side function current_query()
 * %Allow the identifier length to be increased via a configure option
 * Remove Win32 rename/unlink looping if unnecessary
-* -Remove kerberos4 from source tree
 * Allow cross-compiling by generating the zic database on the target system
 * Improve NLS maintenace of libpgport messages linked onto applications
 * Allow ecpg to work with MSVC and BCC
-* -Make src/port/snprintf.c thread-safe
 * Add xpath_array() to /contrib/xml2 to return results as an array
 * Allow building in directories containing spaces
 
@@ -1115,7 +981,6 @@ Source Code
   spaces and then copy the install to a directory with spaces.
 
 * Fix sgmltools so PDFs can be generated with bookmarks
-* -Add C code on Unix to copy directories for use in creating new databases
 * %Clean up compiler warnings (especially with gcc version 4)
 
 
@@ -1130,7 +995,6 @@ Source Code
          backslashes
        o Re-enable timezone output on log_line_prefix '%t' when a
          shorter timezone string is available
-       o -Improve dlerror() reporting string
        o Fix problem with shared memory on the Win32 Terminal Server
         o %Add support for Unicode
 
index 641c33962f0f7abfbdbf0e0f09fec00bbc16d38e..f96793750162c05a93df1842cd38a095bb99b09c 100644 (file)
@@ -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:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>)<br/>
-Last updated:           Fri Aug 26 14:52:30 EDT 2005
+Last updated:           Fri Aug 26 14:59:39 EDT 2005
 </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>.
@@ -27,7 +27,6 @@ first.
 <ul>
   <li>%Remove behavior of postmaster -o after making postmaster/postgres
   flags unique
-  </li><li>-<em>Allow limits on per-db/role connections</em>
   </li><li>%Allow pooled connections to list all prepared queries
 <p>  This would allow an application inheriting a pooled connection to know
   the queries prepared in the current session.
@@ -43,12 +42,10 @@ first.
   it is unknown whether other problems exist.  This item mostly
   requires additional testing rather than of writing any new code.
 </p>
-  </li><li>-<em>Prevent dropping user that still owns objects, or auto-drop the objects</em>
   </li><li>%Set proper permissions on non-system schemas during db creation
 <p>  Currently all schemas are owned by the super-user because they are
   copied from the template1 database.
 </p>
-  </li><li>-<em>Add the client IP address and port to pg_stat_activity</em>
   </li><li>Support table partitioning that allows a single table to be stored
   in subtables that are partitioned based on the primary key or a WHERE
   clause
@@ -144,8 +141,6 @@ first.
   a database for analysis.
 </p>
   </li><li>%Add ability to monitor the use of temporary sort files
-  </li><li>-<em>Add session start time and last statement time to pg_stat_activity</em>
-  </li><li>-<em>Add a function that returns the start time of the postmaster</em>
   </li><li>Allow server logs to be remotely read and removed using SQL commands
 </li></ul>
 <h1><a name="section_4">Data Types</a></h1>
@@ -212,11 +207,8 @@ first.
   </li><li>Arrays
   <ul>
     <li>Allow NULLs in arrays
-    </li><li>-<em>Allow MIN()/MAX() on arrays</em>
     </li><li>Delay resolution of array expression's data type so assignment
           coercion can be performed on empty array expressions
-    </li><li>-<em>Modify array literal representation to handle array index lower bound</em>
-          of other than one
   </li></ul>
   </li><li>Binary Data
   <ul>
@@ -233,8 +225,7 @@ first.
 <h1><a name="section_5">Functions</a></h1>
 
 <ul>
-  <li>-<em>Add function to return compressed length of TOAST data values</em>
-  </li><li>Allow INET subnet tests using non-constants to be indexed
+  <li>Allow INET subnet tests using non-constants to be indexed
   </li><li>Add transaction_timestamp(), statement_timestamp(), clock_timestamp()
   functionality
 <p>  Current CURRENT_TIMESTAMP returns the start time of the current
@@ -259,11 +250,6 @@ first.
     </li><li>to_char(INTERVAL '43 hours 20 minutes', 'WK:DD:HR:MI') =&gt; 0:1:19:20
     </li><li>to_char(INTERVAL '3 years 5 months','MM') =&gt; 41
   </li></ul>
-  </li><li>-<em>Prevent to_char() on interval from returning meaningless values</em>
-<p>  For example, to_char('1 month', 'mon') is meaningless.  Basically,
-  most date-related parameters to to_char() are meaningless for
-  intervals because interval is not anchored to a date.
-</p>
   </li><li>Add sleep() function, remove from regress.c
 </li></ul>
 <h1><a name="section_6">Multi-Language Support</a></h1>
@@ -294,24 +280,13 @@ first.
 </p>
   </li><li>Add the functionality for WITH CHECK OPTION clause of CREATE VIEW
   </li><li>Allow NOTIFY in rules involving conditionals
-  </li><li>-<em>Have views on temporary tables exist in the temporary namespace</em>
-  </li><li>-<em>Allow temporary views on non-temporary tables</em>
   </li><li>Allow VIEW/RULE recompilation when the underlying tables change
 </li></ul>
 <h1><a name="section_8">SQL Commands</a></h1>
 
 <ul>
-  <li>-<em>Add BETWEEN SYMMETRIC/ASYMMETRIC</em>
-  </li><li>Change LIMIT/OFFSET and FETCH/MOVE to use int8
-  </li><li>-<em>Add E'' escape string marker so eventually ordinary strings can treat</em>
-  backslashes literally, for portability
-  </li><li>-<em>Allow additional tables to be specified in DELETE for joins</em>
-<p>  UPDATE already allows this (UPDATE...FROM) but we need similar
-  functionality in DELETE.  It's been agreed that the keyword should
-  be USING, to avoid anything as confusing as DELETE FROM a FROM b.
-</p>
+  <li>Change LIMIT/OFFSET and FETCH/MOVE to use int8
   </li><li>Add CORRESPONDING BY to UNION/INTERSECT/EXCEPT
-  </li><li>-<em>Allow REINDEX to rebuild all database indexes</em>
   </li><li>Add ROLLUP, CUBE, GROUPING SETS options to GROUP BY
   </li><li>%Allow SET CONSTRAINTS to be qualified by schema/table name
   </li><li>%Allow TRUNCATE ... CASCADE/RESTRICT
@@ -347,11 +322,6 @@ first.
   creation
   </li><li>%Add COMMENT ON for all cluster global objects (roles, databases
   and tablespaces)
-  </li><li>-<em>Add an option to automatically use savepoints for each statement in a</em>
-  multi-statement transaction.
-<p>  When enabled, this would allow errors in multi-statement transactions
-  to be automatically ignored.
-</p>
   </li><li>%Make row-wise comparisons work per SQL spec
   </li><li>Add RESET CONNECTION command to reset all session state
 <p>  This would include resetting of all variables (RESET ALL), dropping of
@@ -384,7 +354,6 @@ first.
 </p>
     </li><li>Allow UPDATE tab SET ROW (col, ...) = (...) for updating multiple
           columns
-    </li><li>-<em>Allow FOR UPDATE queries to do NOWAIT locks</em>
   </li></ul>
   </li><li>ALTER
   <ul>
@@ -425,11 +394,7 @@ first.
 <p>          This requires the use of a savepoint before each COPY line is
           processed, with ROLLBACK on COPY failure.
 </p>
-    </li><li>-<em>Allow COPY to understand \x as a hex byte</em>
     </li><li>%Have COPY return the number of rows loaded/unloaded?
-    </li><li>-<em>Allow COPY to optionally include column headings in the first line</em>
-    </li><li>-<em>Allow COPY FROM ... CSV to interpret newlines and carriage</em>
-          returns in data
   </li></ul>
   </li><li>GRANT/REVOKE
   <ul>
@@ -472,8 +437,7 @@ first.
   </li></ul>
   </li><li>SHOW/SET
   <ul>
-    <li>-<em>Have SHOW ALL show descriptions for server-side variables</em>
-    </li><li>Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM
+    <li>Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM
           ANALYZE, and CLUSTER
     </li><li>Add SET PATH for schemas?
 <p>          This is basically the same as SET search_path.
@@ -481,21 +445,15 @@ first.
   </li></ul>
   </li><li>Server-Side Languages
   <ul>
-    <li>-<em>Allow PL/PgSQL's RAISE function to take expressions</em>
-<p>          Currently only constants are supported.
-</p>
-    </li><li>-<em>Change PL/PgSQL to use palloc() instead of malloc()</em>
-    </li><li>Fix PL/pgSQL RENAME to work on variables other than OLD/NEW
+    <li>Fix PL/pgSQL RENAME to work on variables other than OLD/NEW
     </li><li>Allow function parameters to be passed by name,
           get_employee_salary(emp_id =&gt; 12345, tax_year =&gt; 2001)
     </li><li>Add Oracle-style packages
     </li><li>Add table function support to pltcl, plpython
-    </li><li>-<em>Allow PL/pgSQL EXECUTE query_var INTO record_var;</em>
     </li><li>Add capability to create and call PROCEDURES
     </li><li>Allow PL/pgSQL to handle %TYPE arrays, e.g. tab.col%TYPE[<a href="http://momjian.postgresql.org/cgi-bin/pgtodo?"></a>]
     </li><li>Allow function argument names to be queries from PL/PgSQL
     </li><li>Add MOVE to PL/pgSQL
-    </li><li>-<em>Pass arrays natively instead of as text between plperl and postgres</em>
     </li><li>Add support for polymorphic arguments and return types to
           languages other than PL/PgSQL
     </li><li>Add support for OUT and INOUT parameters to languages other 
@@ -539,7 +497,6 @@ first.
     </li><li>%Add dumping of comments on index columns
     </li><li>%Replace crude DELETE FROM method of pg_dumpall --clean for 
           cleaning of roles with separate DROP commands
-    </li><li>-<em>Add dumping and restoring of LOB comments</em>
     </li><li>Stop dumping CASCADE on DROP TYPE commands in clean mode
     </li><li>%Add full object name to the tag field.  eg. for operators we need
           '=(integer, integer)', instead of just '='.
@@ -576,11 +533,9 @@ first.
   memory.  This could exhaust memory for very large trigger queues.
   This item involves dumping large queues into files.
 </p>
-  </li><li>-<em>Implement shared row locks and use them in RI triggers</em>
   </li><li>Change foreign key constraint for array -&gt; element to mean element
   in array?
   </li><li>Allow DEFERRABLE UNIQUE constraints?
-  </li><li>-<em>Allow triggers to be disabled</em>
   </li><li>Allow triggers to be disabled in only the current session.
 <p>  This is currently possible by starting a multi-statement transaction,
   modifying the system tables, performing the desired SQL, restoring the
@@ -628,7 +583,6 @@ first.
   semantics
 <p>  This can be done using dblink and two-phase commit.
 </p>
-  </li><li>-<em>Add two-phase commit</em>
   </li><li>Add the features of packages
   <ul>
     <li>Make private objects accessable only to objects in the same schema
@@ -649,38 +603,10 @@ first.
   that can span more than one table.
 </p>
   </li><li>Allow SELECT ... FOR UPDATE on inherited tables
-  </li><li>-<em>Prevent inherited tables from expanding temporary subtables of other</em>
-  sessions
   </li><li>Add UNIQUE capability to non-btree indexes
-  </li><li>-<em>Use indexes for MIN() and MAX()</em>
-<p>  MIN/MAX queries can already be rewritten as SELECT col FROM tab ORDER
-  BY col {DESC} LIMIT 1. Completing this item involves doing this
-  transformation automatically.
-</p>
-  </li><li>-<em>Use index to restrict rows returned by multi-key index when used with</em>
-  non-consecutive keys to reduce heap accesses
-<p>  For an index on col1,col2,col3, and a WHERE clause of col1 = 5 and
-  col3 = 9, spin though the index checking for col1 and col3 matches,
-  rather than just col1; also called skip-scanning.
-</p>
   </li><li>Prevent index uniqueness checks when UPDATE does not modify the column
 <p>  Uniqueness (index) checks are done when updating a column even if the
   column is not modified by the UPDATE.
-</p>
-  </li><li>-<em>Fetch heap pages matching index entries in sequential order</em>
-<p>  Rather than randomly accessing heap pages based on index entries, mark
-  heap pages needing access in a bitmap and do the lookups in sequential
-  order. Another method would be to sort heap ctids matching the index
-  before accessing the heap rows.
-</p>
-  </li><li>-<em>Allow non-bitmap indexes to be combined by creating bitmaps in memory</em>
-<p>  This feature allows separate indexes to be ANDed or ORed together.  This
-  is particularly useful for data warehousing applications that need to
-  query the database in an many permutations.  This feature scans an index
-  and creates an in-memory bitmap, and allows that bitmap to be combined
-  with other bitmap created in a similar way.  The bitmap can either index
-  all TIDs, or be lossy, meaning it records just page numbers and each
-  page tuple has to be checked for validity in a separate pass.
 </p>
   </li><li>Allow the creation of on-disk bitmap indexes which can be quickly
   combined with other bitmap indexes
@@ -695,14 +621,11 @@ first.
   one column or expression indexes, perhaps using per-index statistics
   </li><li>Add fillfactor to control reserved free space during index creation
   </li><li>Allow the creation of indexes with mixed ascending/descending specifiers
-  </li><li>-<em>Fix incorrect rtree results due to wrong assumptions about "over"</em>
-  operator semantics
   </li><li>Allow constraint_exclusion to work for UNIONs like it does for
   inheritance, and allow it to work for UPDATE and DELETE queries
   </li><li>GIST
   <ul>
     <li>Add more GIST index support for geometric data types
-    </li><li>-<em>Add concurrency to GIST</em>
     </li><li>Allow GIST indexes to create certain complex index types, like
           digital trees (see Aoki)
   </li></ul>
@@ -729,7 +652,6 @@ first.
 <p>  Ideally this requires a separate test program that can be run
   at initdb time or optionally later.
 </p>
-  </li><li>-<em>Allow multiple blocks to be written to WAL with one write()</em>
   </li><li>%Add an option to sync() before fsync()'ing checkpoint files
   </li><li>Add program to test if fsync has a delay compared to non-fsync
 </li></ul>
@@ -743,12 +665,6 @@ first.
   backends that also have the file open, and the feature is not supported
   on all operating systems.
 </p>
-  </li><li>-<em>Consider use of open/fcntl(O_DIRECT) to minimize OS caching,</em>
-  for WAL writes
-<p>  O_DIRECT doesn't have the same media write guarantees as fsync, so it
-  is in addition to the fsync method, not in place of it.
-</p>
-  </li><li>-<em>Cache last known per-tuple offsets to speed long tuple access</em>
   </li><li>Speed up COUNT(*)
 <p>  We could use a fixed row count and a +/- count to follow MVCC
   visibility rules, or a single cached value could be used and
@@ -771,16 +687,6 @@ first.
     </li><li>Query execute plan
     </li><li>Query results
   </li></ul>
-  </li><li>-<em>Allow the size of the buffer cache used by temporary objects to be</em>
-  specified as a GUC variable
-<p>  Larger local buffer cache sizes requires more efficient handling of
-  local cache lookups.
-</p>
-  </li><li>-<em>Improve the background writer</em>
-<p>  Allow the background writer to more efficiently write dirty buffers
-  from the end of the LRU cache and use a clock sweep algorithm to
-  write other dirty buffers to reduced checkpoint I/O
-</p>
   </li><li>Allow sequential scans to take advantage of other concurrent
   sequentiqal scans, also called "Synchronised Scanning"
 <p>  One possible implementation is to start sequential scans from the lowest
@@ -802,7 +708,6 @@ first.
   write lock. However, the read lock promotion to write lock could lead
   to deadlock situations.
 </p>
-  </li><li>-<em>Add a warning when the free space map is too small</em>
   </li><li>Maintain a map of recently-expired rows
 <p>  This allows vacuum to target specific pages for possible free space 
   without requiring a sequential scan.
@@ -818,8 +723,7 @@ first.
   </li><li>%Add system view to show free space map contents
   </li><li>Auto-vacuum
   <ul>
-    <li>-<em>Move into the backend code</em>
-    </li><li>Use free-space map information to guide refilling
+    <li>Use free-space map information to guide refilling
     </li><li>%Issue log message to suggest VACUUM FULL if a table is nearly
           empty?
     </li><li>Improve xid wraparound detection by recording per-table rather
@@ -829,21 +733,12 @@ first.
 <h1><a name="section_17">Locking</a></h1>
 
 <ul>
-  <li>-<em>Make locking of shared data structures more fine-grained</em>
-<p>  This requires that more locks be acquired but this would reduce lock
-  contention, improving concurrency.
-</p>
-  </li><li>Add code to detect an SMP machine and handle spinlocks accordingly
+  <li>Add code to detect an SMP machine and handle spinlocks accordingly
   from distributted.net, <a href="http://www1.distributed.net/source">http://www1.distributed.net/source</a>,
   in client/common/cpucheck.cpp
 <p>  On SMP machines, it is possible that locks might be released shortly,
   while on non-SMP machines, the backend should sleep so the process
   holding the lock can complete and release it.
-</p>
-  </li><li>-<em>Improve SMP performance on i386 machines</em>
-<p>  i386-based SMP machines can generate excessive context switching
-  caused by lock failure in high concurrency situations. This may be
-  caused by CPU cache line invalidation inefficiencies.
 </p>
   </li><li>Research use of sched_yield() for spinlock acquisition failure
   </li><li>Fix priority ordering of read and write light-weight locks (Neil)
@@ -874,8 +769,7 @@ first.
   eliminated from point-in-time archive files.
 </p>
   <ul>
-    <li>-Add ability to turn off full page writes
-    </li><li>When off, write CRC to WAL and check file system blocks
+    <li>When off, write CRC to WAL and check file system blocks
            on recovery
 <p>           If CRC check fails during recovery, remember the page in case
            a later CRC for that page properly matches.
@@ -907,8 +801,6 @@ first.
   remove the 'fsync' parameter (which results in an an inconsistent
   database) in favor of this capability.
 </p>
-  </li><li>-<em>Eliminate WAL logging for CREATE TABLE AS when not doing WAL archiving</em>
-  </li><li>-<em>Change WAL to use 32-bit CRC, for performance reasons</em>
 </li></ul>
 <h1><a name="section_20">Optimizer / Executor</a></h1>
 
@@ -925,15 +817,9 @@ first.
   </li><li>Create utility to compute accurate random_page_cost value
   </li><li>Improve ability to display optimizer analysis using OPTIMIZER_DEBUG
   </li><li>Have EXPLAIN ANALYZE highlight poor optimizer estimates
-  </li><li>-<em>Use CHECK constraints to influence optimizer decisions</em>
-<p>  CHECK constraints contain information about the distribution of values
-  within the table. This is also useful for implementing subtables where
-  a tables content is distributed across several subtables.
-</p>
   </li><li>Consider using hash buckets to do DISTINCT, rather than sorting
 <p>  This would be beneficial when there are few distinct values.
 </p>
-  </li><li>-<em>ANALYZE should record a pg_statistic entry for an all-NULL column</em>
   </li><li>Log queries where the optimizer row estimates were dramatically
   different from the number of rows actually found?
   </li><li>Allow constraint_elimination to be automatically performed
@@ -983,11 +869,9 @@ first.
   </li><li>%Promote debug_query_string into a server-side function current_query()
   </li><li>%Allow the identifier length to be increased via a configure option
   </li><li>Remove Win32 rename/unlink looping if unnecessary
-  </li><li>-<em>Remove kerberos4 from source tree</em>
   </li><li>Allow cross-compiling by generating the zic database on the target system
   </li><li>Improve NLS maintenace of libpgport messages linked onto applications
   </li><li>Allow ecpg to work with MSVC and BCC
-  </li><li>-<em>Make src/port/snprintf.c thread-safe</em>
   </li><li>Add xpath_array() to /contrib/xml2 to return results as an array
   </li><li>Allow building in directories containing spaces
 <p>  This is probably not possible because 'gmake' and other compiler tools
@@ -1000,7 +884,6 @@ first.
   spaces and then copy the install to a directory with spaces.
 </p>
   </li><li>Fix sgmltools so PDFs can be generated with bookmarks
-  </li><li>-<em>Add C code on Unix to copy directories for use in creating new databases</em>
   </li><li>%Clean up compiler warnings (especially with gcc version 4)
   </li><li>Win32
   <ul>
@@ -1013,7 +896,6 @@ first.
           backslashes
     </li><li>Re-enable timezone output on log_line_prefix '%t' when a
           shorter timezone string is available
-    </li><li>-<em>Improve dlerror() reporting string</em>
     </li><li>Fix problem with shared memory on the Win32 Terminal Server
     </li><li>%Add support for Unicode
 <p>          To fix this, the data needs to be converted to/from UTF16/UTF8