Index: TODO
===================================================================
RCS file: /projects/cvsroot/pgsql/doc/TODO,v
retrieving revision 1.1626
diff -c -r1.1626 TODO
*** TODO	23 Aug 2005 23:51:16 -0000	1.1626
--- TODO	24 Aug 2005 05:49:50 -0000
***************
*** 19,28 ****
  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
    the queries prepared in the current session.
--- 19,28 ----
  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
    the queries prepared in the current session.
***************
*** 37,43 ****
    Currently SIGTERM of a backend can lead to lock table corruption.
  
  * -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.
--- 37,43 ----
    Currently SIGTERM of a backend can lead to lock table corruption.
  
  * -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.
***************
*** 61,72 ****
  
  * Configuration files
  
! 	o Add "include file" functionality in postgresql.conf
  	o Allow postgresql.conf values to be set so they can not be changed
  	  by the user
  	o Allow commenting of variables in postgresql.conf to restore them
  	  to defaults
! 	o Allow pg_hba.conf settings to be controlled via SQL
  
  	  This would add a function to load the SQL table from
            pg_hba.conf, and one to writes its contents to the flat file.
--- 61,72 ----
  
  * Configuration files
  
! 	o %Add "include file" functionality in postgresql.conf
  	o Allow postgresql.conf values to be set so they can not be changed
  	  by the user
  	o Allow commenting of variables in postgresql.conf to restore them
  	  to defaults
! 	o %Allow pg_hba.conf settings to be controlled via SQL
  
  	  This would add a function to load the SQL table from
            pg_hba.conf, and one to writes its contents to the flat file.
***************
*** 74,80 ****
  	  can be inserted between existing rows, e.g. row 2.5 goes
  	  between row 2 and row 3.
  
! 	o Allow postgresql.conf file values to be changed via an SQL
  	  API, perhaps using SET GLOBAL
  	o Allow the server to be stopped/restarted via an SQL API
  
--- 74,80 ----
  	  can be inserted between existing rows, e.g. row 2.5 goes
  	  between row 2 and row 3.
  
! 	o %Allow postgresql.conf file values to be changed via an SQL
  	  API, perhaps using SET GLOBAL
  	o Allow the server to be stopped/restarted via an SQL API
  
***************
*** 102,108 ****
  	  requires a tool that will call that function and connect to each
  	  database to find the objects in each database for that tablespace.
  
! 	o Add a GUC variable to control the tablespace for temporary objects
  	  and sort files
  
  	  It could start with a random tablespace from a supplied list and
--- 102,108 ----
  	  requires a tool that will call that function and connect to each
  	  database to find the objects in each database for that tablespace.
  
! 	o %Add a GUC variable to control the tablespace for temporary objects
  	  and sort files
  
  	  It could start with a random tablespace from a supplied list and
***************
*** 131,137 ****
  	    the archive contins all the files needed for point-in-time
  	    recovery.
  
! 	  o Create dump tool for write-ahead logs for use in determining
  	    transaction id for point-in-time recovery
  	  o Allow a warm standby system to also allow read-only queries
  	    [pitr]
--- 131,137 ----
  	    the archive contins all the files needed for point-in-time
  	    recovery.
  
! 	  o %Create dump tool for write-ahead logs for use in determining
  	    transaction id for point-in-time recovery
  	  o Allow a warm standby system to also allow read-only queries
  	    [pitr]
***************
*** 149,155 ****
    This would allow server log information to be easily loaded into
    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
--- 149,155 ----
    This would allow server log information to be easily loaded into
    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
***************
*** 158,164 ****
  Data Types
  ==========
  
! * Remove Money type, add money formatting for decimal type
  * Change NUMERIC to enforce the maximum precision, and increase it
  * Add NUMERIC division operator that doesn't round?
  
--- 158,164 ----
  Data Types
  ==========
  
! * %Remove Money type, add money formatting for decimal type
  * Change NUMERIC to enforce the maximum precision, and increase it
  * Add NUMERIC division operator that doesn't round?
  
***************
*** 173,186 ****
  
  * Have sequence dependency track use of DEFAULT sequences,
    seqname.nextval?
! * Disallow changing default expression of a SERIAL column?
  * Fix data types where equality comparison isn't intuitive, e.g. box
! * Prevent INET cast to CIDR if the unmasked bits are not zero, or
    zero the bits
! * Prevent INET cast to CIDR from droping netmask, SELECT '1.1.1.1'::inet::cidr
  * Allow INET + INT4 to increment the host part of the address, or
    throw an error on overflow
! * Add 'tid != tid ' operator for use in corruption recovery
  
  
  * Dates and Times
--- 173,186 ----
  
  * Have sequence dependency track use of DEFAULT sequences,
    seqname.nextval?
! * %Disallow changing default expression of a SERIAL column?
  * Fix data types where equality comparison isn't intuitive, e.g. box
! * %Prevent INET cast to CIDR if the unmasked bits are not zero, or
    zero the bits
! * %Prevent INET cast to CIDR from droping netmask, SELECT '1.1.1.1'::inet::cidr
  * Allow INET + INT4 to increment the host part of the address, or
    throw an error on overflow
! * %Add 'tid != tid ' operator for use in corruption recovery
  
  
  * Dates and Times
***************
*** 217,223 ****
  * 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
--- 217,223 ----
  * 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
***************
*** 251,257 ****
    make time reporting more consistent and will allow reporting of
    the statement start time.
  
! * Add pg_get_acldef(), pg_get_typedefault(), and pg_get_attrdef()
  * Allow to_char() to print localized month names
  * Allow functions to have a schema search path specified at creation time
  * Allow substring/replace() to get/set bit values
--- 251,257 ----
    make time reporting more consistent and will allow reporting of
    the statement start time.
  
! * %Add pg_get_acldef(), pg_get_typedefault(), and pg_get_attrdef()
  * Allow to_char() to print localized month names
  * Allow functions to have a schema search path specified at creation time
  * Allow substring/replace() to get/set bit values
***************
*** 300,315 ****
  Views / Rules
  =============
  
! * Automatically create rules on views so they are updateable, per SQL99
  
    We can only auto-create rules for simple views.  For more complex
    cases users will still have to write 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 RULE recompilation
  
  
  SQL Commands
--- 300,315 ----
  Views / Rules
  =============
  
! * %Automatically create rules on views so they are updateable, per SQL99
  
    We can only auto-create rules for simple views.  For more complex
    cases users will still have to write 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 RULE recompilation
  
  
  SQL Commands
***************
*** 329,337 ****
  * 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
! * Add a separate TRUNCATE permission
  
    Currently only the owner can TRUNCATE a table because triggers are not
    called, and the table is locked in exclusive mode.
--- 329,337 ----
  * 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
! * %Add a separate TRUNCATE permission
  
    Currently only the owner can TRUNCATE a table because triggers are not
    called, and the table is locked in exclusive mode.
***************
*** 363,369 ****
    triggers?)
  * Add NOVICE output level for helpful messages like automatic sequence/index
    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.
--- 363,369 ----
    triggers?)
  * Add NOVICE output level for helpful messages like automatic sequence/index
    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.
***************
*** 416,426 ****
  
  * ALTER
  
! 	o Have ALTER TABLE RENAME rename SERIAL sequence names
! 	o Add ALTER DOMAIN TYPE
! 	o Allow ALTER TABLE ... ALTER CONSTRAINT ... RENAME
! 	o Allow ALTER TABLE to change constraint deferrability and actions
! 	o Disallow dropping of an inherited constraint
  	o -Allow objects to be moved to different schemas
  	o Allow ALTER TABLESPACE to move to different directories
  	o Allow databases to be moved to different tablespaces
--- 416,426 ----
  
  * ALTER
  
! 	o %Have ALTER TABLE RENAME rename SERIAL sequence names
! 	o %Add ALTER DOMAIN TYPE
! 	o %Allow ALTER TABLE ... ALTER CONSTRAINT ... RENAME
! 	o %Allow ALTER TABLE to change constraint deferrability and actions
! 	o %Disallow dropping of an inherited constraint
  	o -Allow objects to be moved to different schemas
  	o Allow ALTER TABLESPACE to move to different directories
  	o Allow databases to be moved to different tablespaces
***************
*** 429,435 ****
  	  Currently non-global system tables must be in the default database
  	  tablespace. Global system tables can never be moved.
  
! 	o Prevent child tables from altering constraints like CHECK that were
  	  inherited from the parent table
  
  
--- 429,435 ----
  	  Currently non-global system tables must be in the default database
  	  tablespace. Global system tables can never be moved.
  
! 	o %Prevent child tables from altering constraints like CHECK that were
  	  inherited from the parent table
  
  
***************
*** 445,451 ****
  	  store heap rows in hashed groups, perhaps using a user-supplied
  	  hash function.
  
! 	o Add default clustering to system tables
  
  	  To do this, determine the ideal cluster index for each system
  	  table and set the cluster setting during initdb.
--- 445,451 ----
  	  store heap rows in hashed groups, perhaps using a user-supplied
  	  hash function.
  
! 	o %Add default clustering to system tables
  
  	  To do this, determine the ideal cluster index for each system
  	  table and set the cluster setting during initdb.
***************
*** 459,465 ****
  	  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
--- 459,465 ----
  	  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
***************
*** 468,474 ****
  * GRANT/REVOKE
  
  	o Allow column-level privileges
! 	o Allow GRANT/REVOKE permissions to be applied to all schema objects
  	  with one command
  
  	  The proposed syntax is:
--- 468,474 ----
  * GRANT/REVOKE
  
  	o Allow column-level privileges
! 	o %Allow GRANT/REVOKE permissions to be applied to all schema objects
  	  with one command
  
  	  The proposed syntax is:
***************
*** 491,497 ****
  	o Prevent DROP TABLE from dropping a row referenced by its own open
  	  cursor?
  
! 	o Allow pooled connections to list all open WITH HOLD cursors
  
  	  Because WITH HOLD cursors exist outside transactions, this allows
  	  them to be listed so they can be closed.
--- 491,497 ----
  	o Prevent DROP TABLE from dropping a row referenced by its own open
  	  cursor?
  
! 	o %Allow pooled connections to list all open WITH HOLD cursors
  
  	  Because WITH HOLD cursors exist outside transactions, this allows
  	  them to be listed so they can be closed.
***************
*** 585,606 ****
  
  * pg_dump
  
! 	o Have pg_dump use multi-statement transactions for INSERT dumps
! 	o Allow pg_dump to use multiple -t and -n switches [pg_dump]
! 	o Add dumping of comments on composite type columns
! 	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 '='.
  	o Add pg_dumpall custom format dumps.
  
  	  This is probably best done by combining pg_dump and pg_dumpall
  	  into a single binary.
  
! 	o Add CSV output format
  	o Update pg_dump and psql to use the new COPY libpq API (Christopher)
  	o Remove unnecessary abstractions in pg_dump source code
  
--- 585,606 ----
  
  * pg_dump
  
! 	o %Have pg_dump use multi-statement transactions for INSERT dumps
! 	o %Allow pg_dump to use multiple -t and -n switches [pg_dump]
! 	o %Add dumping of comments on composite type columns
! 	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 '='.
  	o Add pg_dumpall custom format dumps.
  
  	  This is probably best done by combining pg_dump and pg_dumpall
  	  into a single binary.
  
! 	o %Add CSV output format
  	o Update pg_dump and psql to use the new COPY libpq API (Christopher)
  	o Remove unnecessary abstractions in pg_dump source code
  
***************
*** 618,624 ****
  	o Use backend PREPARE/EXECUTE facility for ecpg where possible
  	o Implement SQLDA
  	o Fix nested C comments
! 	o sqlwarn[6] should be 'W' if the PRECISION or SCALE value specified
  	o Make SET CONNECTION thread-aware, non-standard?
  	o Allow multidimensional arrays
  	o Add internationalized message strings
--- 618,624 ----
  	o Use backend PREPARE/EXECUTE facility for ecpg where possible
  	o Implement SQLDA
  	o Fix nested C comments
! 	o %sqlwarn[6] should be 'W' if the PRECISION or SCALE value specified
  	o Make SET CONNECTION thread-aware, non-standard?
  	o Allow multidimensional arrays
  	o Add internationalized message strings
***************
*** 653,659 ****
  
  * Allow statement-level triggers to access modified rows
  * Support triggers on columns (Greg Sabino Mullane)
! * Remove CREATE CONSTRAINT TRIGGER
  
    This was used in older releases to dump referential integrity
    constraints.
--- 653,659 ----
  
  * Allow statement-level triggers to access modified rows
  * Support triggers on columns (Greg Sabino Mullane)
! * %Remove CREATE CONSTRAINT TRIGGER
  
    This was used in older releases to dump referential integrity
    constraints.
***************
*** 804,810 ****
  * Improve commit_delay handling to reduce fsync()
  * Determine optimal fdatasync/fsync, O_SYNC/O_DSYNC options
  * -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
  
  
--- 804,810 ----
  * Improve commit_delay handling to reduce fsync()
  * Determine optimal fdatasync/fsync, O_SYNC/O_DSYNC options
  * -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
  
  
***************
*** 902,915 ****
    VACUUM can look at just those pages rather than the entire table.  In
    the event of a system crash, the bitmap would probably be invalidated.
  
! * Add system view to show free space map contents
  
  
  * Auto-vacuum
  
  	o -Move into the backend code
  	o Use free-space map information to guide refilling
! 	o Do VACUUM FULL if table is nearly empty?
  	o Improve xid wraparound detection by recording per-table rather
  	  than per-database
  
--- 902,915 ----
    VACUUM can look at just those pages rather than the entire table.  In
    the event of a system crash, the bitmap would probably be invalidated.
  
! * %Add system view to show free space map contents
  
  
  * Auto-vacuum
  
  	o -Move into the backend code
  	o Use free-space map information to guide refilling
! 	o %Do VACUUM FULL if table is nearly empty?
  	o Improve xid wraparound detection by recording per-table rather
  	  than per-database
  
***************
*** 1075,1081 ****
  * Rename some /contrib modules from pg* to pg_*
  * Move some things from /contrib into main tree
  * Move some /contrib modules out to their own project sites
! * Remove warnings created by -Wcast-align
  * Move platform-specific ps status display info from ps_status.c to ports
  * Add optional CRC checksum to heap and index pages
  * Improve documentation to build only interfaces (Marc)
--- 1075,1081 ----
  * Rename some /contrib modules from pg* to pg_*
  * Move some things from /contrib into main tree
  * Move some /contrib modules out to their own project sites
! * %Remove warnings created by -Wcast-align
  * Move platform-specific ps status display info from ps_status.c to ports
  * Add optional CRC checksum to heap and index pages
  * Improve documentation to build only interfaces (Marc)
***************
*** 1106,1111 ****
--- 1106,1112 ----
  * Fix cross-compiling of time zone database via 'zic'
  * 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
