Remove completed items:
authorBruce Momjian
Fri, 26 Aug 2005 18:59:48 +0000 (18:59 +0000)
committerBruce Momjian
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 ([email protected])
-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 @@
 
 

PostgreSQL TODO List

 

Current maintainer:     Bruce Momjian ([email protected])

-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.
@@ -27,7 +27,6 @@ first.
 
       
  • %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

       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.
     

    -  
  • -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
    @@ -144,8 +141,6 @@ first.
       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
  •  
     

    Data Types

    @@ -212,11 +207,8 @@ first.
       
  • Arrays
  •    
           
    • Allow NULLs in arrays
    • -    
    • -Allow MIN()/MAX() on arrays
    •      
    • Delay resolution of array expression's data type so assignment
    •            coercion can be performed on empty array expressions
      -    
    • -Modify array literal representation to handle array index lower bound
    • -          of other than one
         
         
    • Binary Data
    •    
        @@ -233,8 +225,7 @@ first.
         

        Functions

         
         
          -  
        • -Add function to return compressed length of TOAST data values
        • -  
        • Allow INET subnet tests using non-constants to be indexed
        • +  
        • Allow INET subnet tests using non-constants to be indexed
        •    
        • Add transaction_timestamp(), statement_timestamp(), clock_timestamp()
        •    functionality
           

            Current CURRENT_TIMESTAMP returns the start time of the current

          @@ -259,11 +250,6 @@ first.
               
        • to_char(INTERVAL '43 hours 20 minutes', 'WK:DD:HR:MI') => 0:1:19:20
        •      
        • 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
        •  
           

          Multi-Language Support

          @@ -294,24 +280,13 @@ first.
           

             
        • 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.
            -

            +  
          • Change LIMIT/OFFSET and FETCH/MOVE to use int8
          •    
          • 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
          • @@ -347,11 +322,6 @@ first.
               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
          •  

              This would include resetting of all variables (RESET ALL), dropping of

            @@ -384,7 +354,6 @@ first.
             

                 
          • Allow UPDATE tab SET ROW (col, ...) = (...) for updating multiple
          •            columns
            -    
          • -Allow FOR UPDATE queries to do NOWAIT locks
          •    
               
          • ALTER
          •    
              @@ -425,11 +394,7 @@ first.
               

                        This requires the use of a savepoint before each COPY line is

                         processed, with ROLLBACK on COPY failure.
               

              -    
            • -Allow COPY to understand \x as a hex byte
            •      
            • %Have COPY return the number of rows loaded/unloaded?
            • -    
            • -Allow COPY to optionally include column headings in the first line
            • -    
            • -Allow COPY FROM ... CSV to interpret newlines and carriage
            • -          returns in data
                 
                 
            • GRANT/REVOKE
            •    
                @@ -472,8 +437,7 @@ first.
                   
                   
              • SHOW/SET
              •    
                  -    
                • -Have SHOW ALL show descriptions for server-side variables
                • -    
                • Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM
                • +    
                • Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM
                •            ANALYZE, and CLUSTER
                       
                • Add SET PATH for schemas?
                •  

                            This is basically the same as SET search_path.

                  @@ -481,21 +445,15 @@ first.
                     
                     
                • Server-Side Languages
                •    
                    -    
                  • -Allow PL/PgSQL's RAISE function to take expressions
                  • -

                              Currently only constants are supported.

                    -

                    -    
                  • -Change PL/PgSQL to use palloc() instead of malloc()
                  • -    
                  • Fix PL/pgSQL RENAME to work on variables other than OLD/NEW
                  • +    
                  • Fix PL/pgSQL RENAME to work on variables other than OLD/NEW
                  •      
                  • Allow function parameters to be passed by name,
                  •            get_employee_salary(emp_id => 12345, tax_year => 2001)
                         
                  • Add Oracle-style packages
                  •      
                  • Add table function support to pltcl, plpython
                  • -    
                  • -Allow PL/pgSQL EXECUTE query_var INTO record_var;
                  •      
                  • Add capability to create and call PROCEDURES
                  •      
                  • Allow PL/pgSQL to handle %TYPE arrays, e.g. tab.col%TYPE[]
                  •      
                  • Allow function argument names to be queries from PL/PgSQL
                  •      
                  • Add MOVE to PL/pgSQL
                  • -    
                  • -Pass arrays natively instead of as text between plperl and postgres
                  •      
                  • Add support for polymorphic arguments and return types to
                  •            languages other than PL/PgSQL
                         
                  • Add support for OUT and INOUT parameters to languages other 
                  • @@ -539,7 +497,6 @@ first.
                         
                  • %Add dumping of comments on index columns
                  •      
                  • %Replace crude DELETE FROM method of pg_dumpall --clean for 
                  •            cleaning of roles with separate DROP commands
                    -    
                  • -Add dumping and restoring of LOB comments
                  •      
                  • Stop dumping CASCADE on DROP TYPE commands in clean mode
                  •      
                  • %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.
                     

                    -  
                  • -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,

                       modifying the system tables, performing the desired SQL, restoring the
                    @@ -628,7 +583,6 @@ first.
                       semantics
                     

                      This can be done using dblink and two-phase commit.

                     

                    -  
                  • -Add two-phase commit
                  •    
                  • Add the features of packages
                  •    
                           
                    • Make private objects accessable only to objects in the same schema
                    • @@ -649,38 +603,10 @@ first.
                         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
                      @@ -695,14 +621,11 @@ first.
                         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
                         
                    • GIST
                    •    
                             
                      • Add more GIST index support for geometric data types
                      • -    
                      • -Add concurrency to GIST
                      •      
                      • Allow GIST indexes to create certain complex index types, like
                      •            digital trees (see Aoki)
                           
                        @@ -729,7 +652,6 @@ first.
                         

                          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
                      •  
                        @@ -743,12 +665,6 @@ first.
                           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

                           visibility rules, or a single cached value could be used and
                        @@ -771,16 +687,6 @@ first.
                             
                      • Query execute plan
                      •      
                      • 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"
                         

                          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.
                         

                        -  
                      • -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 

                           without requiring a sequential scan.
                        @@ -818,8 +723,7 @@ first.
                           
                      • %Add system view to show free space map contents
                      •    
                      • Auto-vacuum
                      •    
                          -    
                        • -Move into the backend code
                        • -    
                        • Use free-space map information to guide refilling
                        • +    
                        • Use free-space map information to guide refilling
                        •      
                        • %Issue log message to suggest VACUUM FULL if a table is nearly
                        •            empty?
                               
                        • Improve xid wraparound detection by recording per-table rather
                        • @@ -829,21 +733,12 @@ first.
                           

                          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
                          • +  
                          • Add code to detect an SMP machine and handle spinlocks accordingly
                          •    from distributted.net, http://www1.distributed.net/source,
                               in client/common/cpucheck.cpp
                             

                              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.
                            -

                            -  
                          • -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)
                          • @@ -874,8 +769,7 @@ first.
                               eliminated from point-in-time archive files.
                             

                               
                              -    
                            • -Add ability to turn off full page writes
                            • -    
                            • When off, write CRC to WAL and check file system blocks
                            • +    
                            • When off, write CRC to WAL and check file system blocks
                            •             on recovery
                               

                                         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.
                               

                              -  
                            • -Eliminate WAL logging for CREATE TABLE AS when not doing WAL archiving
                            • -  
                            • -Change WAL to use 32-bit CRC, for performance reasons
                            •  
                               

                              Optimizer / Executor

                               
                              @@ -925,15 +817,9 @@ first.
                                 
                            • 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
                            • @@ -983,11 +869,9 @@ first.
                                 
                            • %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
                            •  

                                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.
                               

                                 
                            • 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)
                            •    
                            • Win32
                            •    
                                @@ -1013,7 +896,6 @@ first.
                                           backslashes
                                     
                              • Re-enable timezone output on log_line_prefix '%t' when a
                              •            shorter timezone string is available
                                -    
                              • -Improve dlerror() reporting string
                              •      
                              • Fix problem with shared memory on the Win32 Terminal Server
                              •      
                              • %Add support for Unicode
                              •  

                                          To fix this, the data needs to be converted to/from UTF16/UTF8