]> granicus.if.org Git - postgresql/blobdiff - doc/TODO
Add URL for:
[postgresql] / doc / TODO
index 0c1441e4ee1ceeed34d7cd7744751c27a0e148a3..faaafd5c658c4c1448e603c883294182ff32696c 100644 (file)
--- a/doc/TODO
+++ b/doc/TODO
@@ -1,16 +1,14 @@
 PostgreSQL TODO List
 ====================
 Current maintainer:    Bruce Momjian (bruce@momjian.us)
-Last updated:          Tue Apr 15 17:39:12 EDT 2008
+Last updated:          Wed Jun 18 21:15:40 EDT 2008
 
 The most recent version of this document can be viewed at
 http://www.postgresql.org/docs/faqs.TODO.html.
 
-#A hyphen, "-", marks changes that will appear in the upcoming 8.3 release.#
+#A hyphen, "-", marks changes that will appear in the upcoming 8.4 release.#
 #A percent sign, "%", marks items that are easier to implement.#
 
-Bracketed items, "[]", have more detail.
-
 This list contains all known PostgreSQL bugs and feature requests. If
 you would like to work on an item, please read the Developer's FAQ
 first.  There is also a developer's wiki at
@@ -20,17 +18,8 @@ http://developer.postgresql.org.
 Administration
 ==============
 
-* Allow administrators to safely terminate individual sessions either
+* -Allow administrators to safely terminate individual sessions either
   via an SQL function or SIGTERM
-
-  Lock table corruption following SIGTERM of an individual backend
-  has been reported in 8.0.  A possible cause was fixed in 8.1, but
-  it is unknown whether other problems exist.  This item mostly
-  requires additional testing rather than of writing any new code.
-
-  http://archives.postgresql.org/pgsql-hackers/2006-08/msg00174.php
-  http://archives.postgresql.org/pgsql-hackers/2007-04/msg00218.php
-
 * Check for unreferenced table files created by transactions that were
   in-progress when the server terminated abruptly
 
@@ -43,19 +32,7 @@ Administration
   from the template database, it is not clear that setting schemas to the db
   owner is correct.
 
-* Add function to report the time of the most recent server reload
-* Allow statistics collector information to be pulled from the collector
-  process directly, rather than requiring the collector to write a
-  filesystem file twice a second?
-* Reduce file system activity overhead of statistics file pgstat.stat
-
-  http://archives.postgresql.org/pgsql-general/2007-12/msg00106.php
-
-* Allow statistics last vacuum/analyze execution times to be displayed
-  without requiring stats_row_level to be enabled
-
-  http://archives.postgresql.org/pgsql-docs/2007-04/msg00028.php
-
+* -Add function to report the time of the most recent server reload
 * Allow log_min_messages to be specified on a per-module basis
 
   This would allow administrators to see more detailed information from
@@ -121,6 +98,7 @@ Administration
          check that hostname against the host names in pg_hba.conf.
          We could also then check that the host name maps to the IP
          address.
+         http://archives.postgresql.org/pgsql-hackers/2008-06/msg00569.php
 
        o %Allow postgresql.conf file values to be changed via an SQL
          API, perhaps using SET GLOBAL
@@ -137,6 +115,8 @@ Administration
 
          http://archives.postgresql.org/pgsql-hackers/2007-11/msg00009.php
 
+       o Add functions to syntax check configuration files
+
 
 * Tablespaces
 
@@ -168,10 +148,28 @@ Administration
        o Allow per-tablespace quotas
 
 
+* Statistics Collector
+
+       o Allow statistics collector information to be pulled from the collector
+         process directly, rather than requiring the collector to write a
+         filesystem file twice a second?
+       o Reduce file system activity overhead of statistics file pgstat.stat
+
+         http://archives.postgresql.org/pgsql-general/2007-12/msg00106.php
+
+       o Allow statistics last vacuum/analyze execution times to be displayed
+         without requiring stats_row_level to be enabled
+
+         http://archives.postgresql.org/pgsql-docs/2007-04/msg00028.php
+
+       o Clear table counters on TRUNCATE
+
+         http://archives.postgresql.org/pgsql-hackers/2008-04/msg00169.php
+
+
 * Point-In-Time Recovery (PITR)
 
        o Allow a warm standby system to also allow read-only statements
-         [pitr]
 
          http://archives.postgresql.org/pgsql-hackers/2007-03/msg00050.php
 
@@ -242,19 +240,6 @@ Data Types
 
   http://archives.postgresql.org/pgsql-hackers/2008-02/msg01214.php
 
-* Allow text search dictionary to filter out only stop words
-
-  http://archives.postgresql.org/pgsql-patches/2007-11/msg00081.php
-
-* Consider a function-based API for '@@' full text searches
-
-  http://archives.postgresql.org/pgsql-hackers/2007-11/msg00511.php
-
-* Improve text search error messages
-
-  http://archives.postgresql.org/pgsql-hackers/2007-10/msg00966.php
-  http://archives.postgresql.org/pgsql-hackers/2007-11/msg01146.php
-
 * Consider a special data type for regular expressions
 
   http://archives.postgresql.org/pgsql-hackers/2007-08/msg01067.php
@@ -277,6 +262,10 @@ Data Types
 
   http://archives.postgresql.org/pgsql-general/2008-02/msg00347.php
 
+* Allow adding/renaming/removing enumerated values to an existing
+  enumerated data type
+
+  http://archives.postgresql.org/pgsql-hackers/2008-04/msg01718.php
 
 * Dates and Times
 
@@ -284,10 +273,11 @@ Data Types
        o Merge hardwired timezone names with the TZ database; allow either
          kind everywhere a TZ name is currently taken
        o Allow TIMESTAMP WITH TIME ZONE to store the original timezone
-         information, either zone name or offset from UTC [timezone]
+         information, either zone name or offset from UTC
 
          If the TIMESTAMP value is stored with a time zone name, interval
          computations should adjust based on the time zone rules.
+         http://archives.postgresql.org/pgsql-hackers/2004-10/msg00705.php
 
        o Fix SELECT '0.01 years'::interval, '0.01 months'::interval
        o Add a GUC variable to allow output of interval values in ISO8601
@@ -312,7 +302,7 @@ Data Types
 
          http://archives.postgresql.org/pgsql-hackers/2006-09/msg01363.php
 
-       o Use LC_TIME for localized weekday/month names, rather than
+       o -Use LC_TIME for localized weekday/month names, rather than
          LC_MESSAGES
 
          http://archives.postgresql.org/pgsql-hackers/2006-11/msg00390.php
@@ -391,6 +381,29 @@ Data Types
          restore to a system with a different locale
        * Allow MONEY to be easily cast to/from other numeric data types
 
+* Text Search
+
+       o Allow dictionaries to change the token that is passed on to
+         later dictionaries
+
+         http://archives.postgresql.org/pgsql-patches/2007-11/msg00081.php
+
+       o Consider a function-based API for '@@' searches
+
+         http://archives.postgresql.org/pgsql-hackers/2007-11/msg00511.php
+
+       o Improve text search error messages
+
+         http://archives.postgresql.org/pgsql-hackers/2007-10/msg00966.php
+         http://archives.postgresql.org/pgsql-hackers/2007-11/msg01146.php
+
+       o Consider changing error to warning for strings larger than one
+         megabyte
+
+         http://archives.postgresql.org/pgsql-bugs/2008-02/msg00190.php
+         http://archives.postgresql.org/pgsql-patches/2008-03/msg00062.php
+
+
 
 Functions
 =========
@@ -512,18 +525,23 @@ Multi-Language Support
   database creation might have locale-aware indexes.  The indexes would
   need to be reindexed to match the new locale.
 
-* Allow encoding on a per-column basis optionally using the ICU library
+* Allow encoding on a per-column basis optionally using the ICU library;
+  Add CREATE COLLATE
 
-  Right now only one encoding is allowed per database.  [locale]
+  Right now only one encoding is allowed per database.
 
   http://archives.postgresql.org/pgsql-hackers/2005-03/msg00932.php
+  http://archives.postgresql.org/pgsql-patches/2005-08/msg00039.php
   http://archives.postgresql.org/pgsql-patches/2005-08/msg00309.php
+  http://archives.postgresql.org/pgsql-hackers/2005-09/msg00110.php
+  http://archives.postgresql.org/pgsql-patches/2005-09/msg00020.php
+  http://archives.postgresql.org/pgsql-hackers/2005-12/msg01121.php
+  http://archives.postgresql.org/pgsql-hackers/2006-01/msg00767.php
   http://archives.postgresql.org/pgsql-patches/2006-03/msg00233.php
   http://archives.postgresql.org/pgsql-hackers/2006-09/msg00662.php
   http://wiki.postgresql.org/wiki/Todo:Collate 
   http://wiki.postgresql.org/wiki/Todo:ICU
 
-* Add CREATE COLLATE?  [locale]
 * Support multiple simultaneous character sets, per SQL92
 * Improve UTF8 combined character handling?
 * Add octet_length_server() and octet_length_client()
@@ -609,24 +627,29 @@ SQL Commands
 
   http://archives.postgresql.org/pgsql-hackers/2006-11/msg00092.php
 
-* Add a GUC variable to warn about non-standard SQL usage in queries
-* Add SQL-standard MERGE command, typically used to merge two tables
-  [merge]
+* Improve failure message when DROP DATABASE is used on a database that
+  has prepared transactions
+* Allow prepared transactions with temporary tables created and dropped
+  in the same transaction, and when an ON COMMIT DELETE ROWS temporary 
+  table is accessed
 
-  This is similar to UPDATE, then for unmatched rows, INSERT.
-  Whether concurrent access allows modifications which could cause
-  row loss is implementation independent.
+  http://archives.postgresql.org/pgsql-hackers/2008-03/msg00047.php
 
-* Add REPLACE or UPSERT command that does UPDATE, or on failure, INSERT
-  [merge]
+* Add a GUC variable to warn about non-standard SQL usage in queries
+* Add SQL-standard MERGE/REPLACE/UPSERT command
 
+  MERGE is typically used to merge two tables.  REPLACE or UPSERT
+  command does UPDATE, or on failure, INSERT. This is similar to UPDATE,
+  then for unmatched rows, INSERT.  Whether concurrent access allows
+  modifications which could cause row loss is implementation independent.
   To implement this cleanly requires that the table have a unique index
-  so duplicate checking can be easily performed.  It is possible to
-  do it without a unique index if we require the user to LOCK the table
-  before the MERGE.
+  so duplicate checking can be easily performed.  It is possible to do it
+  without a unique index if we require the user to LOCK the table before
+  the MERGE.
 
   http://archives.postgresql.org/pgsql-hackers/2005-11/msg00501.php
   http://archives.postgresql.org/pgsql-hackers/2005-11/msg00536.php
+  http://archives.postgresql.org/pgsql-hackers/2008-04/msg01475.php
 
 * Add NOVICE output level for helpful messages like automatic sequence/index
   creation
@@ -665,13 +688,16 @@ SQL Commands
 * Allow DISTINCT to work in multiple-argument aggregate calls
 * Add column to pg_stat_activity that shows the progress of long-running
   commands like CREATE INDEX and VACUUM
+
+  http://archives.postgresql.org/pgsql-patches/2008-04/msg00203.php
+
 * Implement SQL:2003 window functions
-* Improve failure message when DROP DATABASE is used on a database that
-  has prepared transactions
-* Allow INSERT/UPDATE ... RETURNING inside a SELECT 'FROM' clause
+* Allow INSERT/UPDATE ... RETURNING inside a SELECT 'FROM' clause or
+  target list
 
   http://archives.postgresql.org/pgsql-general/2006-09/msg00803.php
   http://archives.postgresql.org/pgsql-hackers/2006-10/msg00693.php
+  http://archives.postgresql.org/pgsql-hackers/2008-06/msg00124.php
 
 * Increase locking when DROPing objects so dependent objects cannot
   get dropped while the DROP operation is happening
@@ -715,6 +741,9 @@ SQL Commands
 
          http://archives.postgresql.org/pgsql-bugs/2007-10/msg00169.php
 
+       o Add CREATE SCHEMA ... LIKE that copies a schema
+
+
 
 * UPDATE
        o Allow UPDATE tab SET ROW (col, ...) = (SELECT...)
@@ -763,10 +792,10 @@ SQL Commands
          Currently non-global system tables must be in the default database
          tablespace. Global system tables can never be moved.
 
-       o Prevent parent tables from altering or dropping constraints
+       o -Prevent parent tables from altering or dropping constraints
          like CHECK that are inherited by child tables unless CASCADE
          is used
-       o %Prevent child tables from altering or dropping constraints
+       o -Prevent child tables from altering or dropping constraints
           like CHECK that were inherited from the parent table
        o Have ALTER INDEX update the name of a constraint using that index
        o Add ALTER TABLE RENAME CONSTRAINT, update index name also
@@ -775,6 +804,9 @@ SQL Commands
 
          http://archives.postgresql.org/pgsql-hackers/2006-12/msg00782.php
 
+       o Allow an existing index to be marked as a table's primary key
+
+         http://archives.postgresql.org/pgsql-hackers/2008-04/msg00500.php
 
 
 * CLUSTER
@@ -833,6 +865,10 @@ SQL Commands
          which generates an error when loading into an integer column
          http://archives.postgresql.org/pgsql-hackers/2007-07/msg00905.php
 
+       o Impove COPY performance
+
+         http://archives.postgresql.org/pgsql-hackers/2008-02/msg00954.php
+
 
 
 * GRANT/REVOKE
@@ -967,7 +1003,7 @@ Server-Side Languages
 
          http://archives.postgresql.org/pgsql-hackers/2008-01/msg01009.php
 
-       o Add CASE capability to language (already in SQL)
+       o -Add CASE capability to language (already in SQL)
 
          http://archives.postgresql.org/pgsql-hackers/2008-01/msg00696.php
 
@@ -1016,12 +1052,13 @@ Clients
 * psql
        o Have psql show current values for a sequence
        o Move psql backslash database information into the backend, use
-         mnemonic commands? [psql]
+         mnemonic commands?
 
          This would allow non-psql clients to pull the same information out
          of the database as psql.
+         http://archives.postgresql.org/pgsql-hackers/2004-01/msg00191.php
 
-       o Fix psql's \d commands more consistent
+       o Make psql's \d commands more consistent
 
          http://archives.postgresql.org/pgsql-hackers/2004-11/msg00014.php
          http://archives.postgresql.org/pgsql-hackers/2004-11/msg00014.php
@@ -1058,7 +1095,7 @@ Clients
          http://archives.postgresql.org/pgsql-hackers/2007-04/msg00424.php
 
        o Have \d show child tables that inherit from the specified parent
-       o Have \l+ show database size, if permissions allow
+       o -Have \l+ show database size, if permissions allow
 
          Ideally it will not generate an error for invalid permissions
 
@@ -1066,11 +1103,8 @@ Clients
 
          http://archives.postgresql.org/pgsql-general/2007-09/msg00438.php
 
-       o Improve display if enums
-
-         http://archives.postgresql.org/pgsql-hackers/2008-01/msg00826.php
-
-
+       o -Improve display of enums to show valid enum values
+       o Add prompt escape to display the client and server versions
 
 
 * pg_dump / pg_restore
@@ -1189,7 +1223,9 @@ Triggers
 
   Right now all deferred trigger information is stored in backend
   memory.  This could exhaust memory for very large trigger queues.
-  This item involves dumping large queues into files.
+  This item involves dumping large queues into files, or doing some
+  kind of join to process all the triggers, or some bulk operation.
+  http://archives.postgresql.org/pgsql-hackers/2008-05/msg00876.php
 
 * Allow triggers to be disabled in only the current session.
 
@@ -1224,6 +1260,9 @@ Triggers
   http://archives.postgresql.org/pgsql-general/2007-02/msg01466.php
 
 * -Add ability to trigger on TRUNCATE
+* Add database and transaction-level triggers
+
+  http://archives.postgresql.org/pgsql-hackers/2008-03/msg00451.php
 
 
 
@@ -1256,24 +1295,27 @@ Indexes
   http://archives.postgresql.org/pgsql-performance/2006-10/msg00222.php
   http://archives.postgresql.org/pgsql-hackers/2007-03/msg01131.php
 
-* Consider increasing the number of default statistics target, and
-  reduce statistics target overhead
+* Consider increasing the default and maximum number of statistics targets,
+  and reduce statistics target overhead
 
   Also consider having a larger statistics target for indexed columns
-  and expression indexes
+  and expression indexes.
   http://archives.postgresql.org/pgsql-general/2007-05/msg01228.php
   http://archives.postgresql.org/pgsql-general/2007-06/msg00542.php
   http://archives.postgresql.org/pgsql-hackers/2008-01/msg01066.php
+  http://archives.postgresql.org/pgsql-hackers/2008-03/msg00188.php
 
-* Consider compressing indexes by storing key values duplicated in
-  several rows as a single index entry
+* Consider smaller indexes that record a range of values per heap page,
+  rather than having one index entry for every heap row
 
+  This is useful if the heap is clustered by the indexed values.
   http://archives.postgresql.org/pgsql-hackers/2006-12/msg00341.php
   http://archives.postgresql.org/pgsql-hackers/2007-02/msg01264.php
   http://archives.postgresql.org/pgsql-hackers/2007-03/msg00465.php
   http://archives.postgresql.org/pgsql-patches/2007-03/msg00163.php
   http://archives.postgresql.org/pgsql-hackers/2007-08/msg00014.php
   http://archives.postgresql.org/pgsql-hackers/2007-08/msg00487.php
+  http://archives.postgresql.org/pgsql-hackers/2008-04/msg01589.php
 
 * Add REINDEX CONCURRENTLY, like CREATE INDEX CONCURRENTLY
 
@@ -1290,9 +1332,11 @@ Indexes
 
   http://archives.postgresql.org/pgsql-general/2008-01/msg01010.php
 
-* Allow index scans to return matching index keys
+* Allow index scans to return matching index keys, not just the matching
+  heap locations
+
+  http://archives.postgresql.org/pgsql-hackers/2008-04/msg01657.php
 
-  http://archives.postgresql.org/pgsql-hackers/2007-03/msg01079.php
 
 
 * Inheritance
@@ -1472,7 +1516,7 @@ Vacuum
   in hopes that empty pages at the end can be truncated by VACUUM
 * Allow FSM page return free space based on table clustering, to assist
   in maintaining clustering?
-* Improve dead row detection during multi-statement transactions usage
+* -Improve dead row detection during multi-statement transactions usage
 
   http://archives.postgresql.org/pgsql-patches/2007-03/msg00358.php
 
@@ -1548,7 +1592,7 @@ Locking
 Startup Time Improvements
 =========================
 
-* Experiment with multi-threaded backend for backend creation [thread]
+* Experiment with multi-threaded backend for backend creation
 
   This would prevent the overhead associated with process creation. Most
   operating systems have trivial process creation time compared to
@@ -1561,12 +1605,13 @@ Startup Time Improvements
 Write-Ahead Log
 ===============
 
-* Eliminate need to write full pages to WAL before page modification [wal]
+* Eliminate need to write full pages to WAL before page modification
 
   Currently, to protect against partial disk page writes, we write
   full page images to WAL before they are modified so we can correct any
   partial page writes during recovery.  These pages can also be
   eliminated from point-in-time archive files.
+  http://archives.postgresql.org/pgsql-hackers/2002-06/msg00655.php
 
        o  When off, write CRC to WAL and check file system blocks
           on recovery
@@ -1599,9 +1644,10 @@ Write-Ahead Log
   Currently fsync of WAL requires the disk platter to perform a full
   rotation to fsync again. One idea is to write the WAL to different
   offsets that might reduce the rotational delay.
+  http://archives.postgresql.org/pgsql-hackers/2002-11/msg00483.php
 
 * Allow WAL logging to be turned off for a table, but the table
-  might be dropped or truncated during crash recovery [walcontrol]
+  might be dropped or truncated during crash recovery
 
   Allow tables to bypass WAL writes and just fsync() dirty pages on
   commit.  This should be implemented using ALTER TABLE, e.g. ALTER
@@ -1609,15 +1655,17 @@ Write-Ahead Log
   non-default logging should not use referential integrity with
   default-logging tables.  A table without dirty buffers during a
   crash could perhaps avoid the drop/truncate.
+  http://archives.postgresql.org/pgsql-hackers/2005-12/msg01016.php
 
 * Allow WAL logging to be turned off for a table, but the table would
-  avoid being truncated/dropped [walcontrol]
+  avoid being truncated/dropped
 
   To do this, only a single writer can modify the table, and writes
   must happen only on new pages so the new pages can be removed during
   crash recovery.  Readers can continue accessing the table.  Such
   tables probably cannot have indexes.  One complexity is the handling
   of indexes on TOAST tables.
+  http://archives.postgresql.org/pgsql-hackers/2005-12/msg01016.php
 
 * Speed WAL recovery by allowing more than one page to be prefetched
 
@@ -1858,6 +1906,10 @@ Source Code
 
   http://archives.postgresql.org/pgsql-hackers/2006-11/msg00245.php
 
+* Improve the /contrib installation experience
+
+  http://archives.postgresql.org/pgsql-hackers/2008-04/msg00132.php
+
 * Use UTF8 encoding for NLS messages so all server encodings can
   read them properly
 * Update Bonjour to work with newer cross-platform SDK
@@ -1920,19 +1972,25 @@ Source Code
 
   http://archives.postgresql.org/pgsql-hackers/2007-10/msg00851.php
 
-* Improve detection of shared memory segments being used by other
-  FreeBSD jails
+* Improve detection of shared memory segments being used by others
+  by checking the SysV shared memory field 'nattch'
 
   http://archives.postgresql.org/pgsql-hackers/2008-01/msg00656.php
+  http://archives.postgresql.org/pgsql-hackers/2008-01/msg00673.php
 
+* Implement the non-threaded Avahi service discovery protocol
 
+  http://archives.postgresql.org/pgsql-hackers/2008-02/msg00939.php
+  http://archives.postgresql.org/pgsql-patches/2008-02/msg00097.php
+  http://archives.postgresql.org/pgsql-hackers/2008-03/msg01211.php
+  http://archives.postgresql.org/pgsql-patches/2008-04/msg00001.php
 
 * Win32
 
        o Remove configure.in check for link failure when cause is found
        o Remove readdir() errno patch when runtime/mingwex/dirent.c rev
          1.4 is released
-       o Remove psql newline patch when we find out why mingw outputs an
+       o -Remove psql newline patch when we find out why mingw outputs an
          extra newline
        o Allow psql to use readline once non-US code pages work with
          backslashes