diff --git a/doc/TODO b/doc/TODO index 34256dc2b2eb39749c1a4b14ebe781786095f054..70301caf4e0ae1a585d32232ae3ecf7198724a6f 100644 --- a/doc/TODO +++ b/doc/TODO @@ -2,7 +2,7 @@ PostgreSQL TODO List ==================== Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us) -Last updated: Mon Jul 4 13:00:23 EDT 2005 +Last updated: Mon Jul 4 13:43:32 EDT 2005 The most recent version of this document can be viewed at http://www.postgresql.org/docs/faqs.TODO.html. @@ -49,6 +49,7 @@ Administration * Improve replication solutions + o Load balancing You can use any of the master/slave replication servers to use a @@ -59,6 +60,7 @@ Administration * 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 @@ -71,6 +73,7 @@ Administration * Tablespaces + * Allow a database in tablespace t1 with tables created in tablespace t2 to be used as a template for a new database created with default tablespace t2 @@ -104,7 +107,8 @@ Administration o Allow per-tablespace quotas -* Point-in-time Recovery (PITR) +* Point-In-Time Recovery (PITR) + o Allow point-in-time recovery to archive partially filled write-ahead logs [pitr] @@ -163,21 +167,7 @@ Data Types * Have sequence dependency track use of DEFAULT sequences, seqname.nextval? * Disallow changing default expression of a SERIAL column? -* Allow infinite dates just like infinite timestamps -* Add a GUC variable to allow output of interval values in ISO8601 format * Fix data types where equality comparison isn't intuitive, e.g. box -* Merge hardwired timezone names with the TZ database; allow either kind - everywhere a TZ name is currently taken -* Allow customization of the known set of TZ names (generalize the - present australian_timezones hack) -* Allow TIMESTAMP WITH TIME ZONE to store the original timezone - information, either zone name or offset from UTC [timezone] - - If the TIMESTAMP value is stored with a time zone name, interval - computations should adjust based on the time zone rules, e.g. adding - 24 hours to a timestamp would yield a different result from adding one - day. - * 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 @@ -185,23 +175,42 @@ Data Types throw an error on overflow * Add 'tid != tid ' operator for use in corruption recovery +* Dates and Times + + o Allow infinite dates just like infinite timestamps + o Add a GUC variable to allow output of interval values in ISO8601 + format + o Merge hardwired timezone names with the TZ database; allow either + kind everywhere a TZ name is currently taken + o Allow customization of the known set of TZ names (generalize the + present australian_timezones hack) + o Allow TIMESTAMP WITH TIME ZONE to store the original timezone + information, either zone name or offset from UTC [timezone] + + If the TIMESTAMP value is stored with a time zone name, interval + computations should adjust based on the time zone rules, e.g. + adding 24 hours to a timestamp would yield a different result from + adding one day. + + + o Add ISO INTERVAL handling + o Add support for day-time syntax, INTERVAL '1 2:03:04' DAY TO + SECOND + o Add support for year-month syntax, INTERVAL '50-6' YEAR TO MONTH + o For syntax that isn't uniquely ISO or PG syntax, like '1:30' or + '1', treat as ISO if there is a range specification clause, + and as PG if there no clause is present, e.g. interpret + '1:30' MINUTE TO SECOND as '1 minute 30 seconds', and + interpret '1:30' as '1 hour, 30 minutes' + o Interpret INTERVAL '1 year' MONTH as CAST (INTERVAL '1 year' AS + INTERVAL MONTH), and this should return '12 months' + o Round or truncate values to the requested precision, e.g. + INTERVAL '11 months' AS YEAR should return one or zero + o Support precision, CREATE TABLE foo (a INTERVAL MONTH(3)) + + +* Arrays -* Add ISO INTERVAL handling - o Add support for day-time syntax, INTERVAL '1 2:03:04' DAY TO SECOND - o Add support for year-month syntax, INTERVAL '50-6' YEAR TO MONTH - o For syntax that isn't uniquely ISO or PG syntax, like '1:30' or - '1', treat as ISO if there is a range specification clause, - and as PG if there no clause is present, e.g. interpret '1:30' - MINUTE TO SECOND as '1 minute 30 seconds', and interpret '1:30' - as '1 hour, 30 minutes' - o Interpret INTERVAL '1 year' MONTH as CAST (INTERVAL '1 year' AS - INTERVAL MONTH), and this should return '12 months' - o Round or truncate values to the requested precision, e.g. - INTERVAL '11 months' AS YEAR should return one or zero - o Support precision, CREATE TABLE foo (a INTERVAL MONTH(3)) - - -* ARRAYS o Allow NULLs in arrays o Allow MIN()/MAX() on arrays o Delay resolution of array expression's data type so assignment @@ -210,7 +219,8 @@ Data Types of other than one -* BINARY DATA +* Binary Data + o Improve vacuum of large objects, like /contrib/vacuumlo? o Add security checking for large objects @@ -297,33 +307,23 @@ Views / Rules * Allow RULE recompilation -Commands -======== +SQL Commands +============ * -Add BETWEEN SYMMETRIC/ASYMMETRIC * Change LIMIT/OFFSET and FETCH/MOVE to use int8 -* Allow CREATE TABLE AS to determine column lengths for complex - expressions like SELECT col1 || col2 -* Allow UPDATE to handle complex aggregates [update]? * -Add E'' escape string marker so eventually ordinary strings can treat backslashes literally, for portability -* Allow an alias to be provided for the target table in UPDATE/DELETE - - This is not SQL-spec but many DBMSs allow it. - * -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. -* Have initdb set DateStyle based on locale? * Add CORRESPONDING BY to UNION/INTERSECT/EXCEPT * -Allow REINDEX to rebuild all database indexes * Add ROLLUP, CUBE, GROUPING SETS options to GROUP BY -* Add a schema option to createlang -* Allow UPDATE tab SET ROW (col, ...) = (...) for updating multiple columns * Allow SET CONSTRAINTS to be qualified by schema/table name * Allow TRUNCATE ... CASCADE/RESTRICT * Allow PREPARE of cursors @@ -348,26 +348,9 @@ Commands message, perhaps indicating the row modified or other custom information. -* Use more reliable method for CREATE DATABASE to get a consistent copy - of db? - - Currently the system uses the operating system COPY command to create - a new database. - -* Add C code on Unix to copy directories for use in creating new databases -* Have pg_ctl look at PGHOST in case it is a socket directory? -* Allow pg_ctl to work properly with configuration files located outside - the PGDATA directory - - pg_ctl can not read the pid file because it isn't located in the - config directory but in the PGDATA directory. The solution is to - allow pg_ctl to read and understand postgresql.conf to find the - data_directory value. - * Add a GUC variable to warn about non-standard SQL usage in queries * Add MERGE command that does UPDATE/DELETE, or on failure, INSERT (rules, triggers?) -* Add ON COMMIT capability to CREATE TABLE AS SELECT * Add NOVICE output level for helpful messages like automatic sequence/index creation * Add COMMENT ON for all cluster global objects (roles, databases @@ -390,11 +373,36 @@ Commands is for this to be a protocol-only feature. Another approach is to notify the protocol when a RESET CONNECTION command is used. -* Allow FOR UPDATE queries to do NOWAIT locks * Add GUC to issue notice about queries that use unjoined tables +* CREATE + + o Allow CREATE TABLE AS to determine column lengths for complex + expressions like SELECT col1 || col2 + + o Use more reliable method for CREATE DATABASE to get a consistent + copy of db? + + o Currently the system uses the operating system COPY command to + create a new database. Add ON COMMIT capability to CREATE TABLE AS + SELECT + + +* UPDATE + o Allow UPDATE to handle complex aggregates [update]? + o Allow an alias to be provided for the target table in + UPDATE/DELETE + + This is not SQL-spec but many DBMSs allow it. + + o Allow UPDATE tab SET ROW (col, ...) = (...) for updating multiple + columns + o Allow FOR UPDATE queries to do NOWAIT locks + + * ALTER + o Have ALTER TABLE RENAME rename SERIAL sequence names o Add ALTER DOMAIN TYPE o Allow ALTER TABLE ... ALTER CONSTRAINT ... RENAME @@ -413,6 +421,7 @@ Commands * CLUSTER + o Automatically maintain clustering on a table This might require some background daemon to maintain clustering @@ -430,6 +439,7 @@ Commands * COPY + o Allow COPY to report error lines and continue This requires the use of a savepoint before each COPY line is @@ -443,6 +453,7 @@ Commands * GRANT/REVOKE + o Allow column-level privileges * Allow GRANT/REVOKE permissions to be applied to all schema objects with one command @@ -456,6 +467,7 @@ Commands * CURSOR + o Allow UPDATE/DELETE WHERE CURRENT OF cursor This requires using the row ctid to map cursor rows back to the @@ -473,6 +485,7 @@ Commands * INSERT + o Allow INSERT/UPDATE of the system-generated oid value for a row o Allow INSERT INTO tab (col1, ..) VALUES (val1, ..), (val2, ..) o Allow INSERT/UPDATE ... RETURNING new.col or old.col @@ -483,6 +496,7 @@ 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 @@ -491,7 +505,8 @@ Commands This is basically the same as SET search_path. -* SERVER-SIDE LANGUAGES +* Server-Side Languages + o -Allow PL/PgSQL's RAISE function to take expressions Currently only constants are supported. @@ -526,20 +541,35 @@ Clients This would be used for checking if the server is up. -* Have psql show current values for a sequence -* Move psql backslash database information into the backend, use mnemonic - commands? [psql] +* Have initdb set DateStyle based on locale? +* Have pg_ctl look at PGHOST in case it is a socket directory? +* Add a schema option to createlang +* Allow pg_ctl to work properly with configuration files located outside + the PGDATA directory - This would allow non-psql clients to pull the same information out of - the database as psql. + pg_ctl can not read the pid file because it isn't located in the + config directory but in the PGDATA directory. The solution is to + allow pg_ctl to read and understand postgresql.conf to find the + data_directory value. -* Fix psql's display of schema information (Neil) -* Allow psql \pset boolean variables to set to fixed values, rather than toggle -* Consistently display privilege information for all objects in psql -* Improve psql's handling of multi-line queries + +* psql + o Have psql show current values for a sequence + o Move psql backslash database information into the backend, use + mnemonic commands? [psql] + + This would allow non-psql clients to pull the same information out + of the database as psql. + + o Fix psql's display of schema information (Neil) + o Allow psql \pset boolean variables to set to fixed values, rather + than toggle + o Consistently display privilege information for all objects in psql + o Improve psql's handling of multi-line queries * 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 @@ -559,7 +589,8 @@ Clients o Update pg_dump and psql to use the new COPY libpq API (Christopher) -* ECPG +* ecpg + o Docs Document differences between ecpg and the SQL standard and @@ -588,7 +619,6 @@ Referential Integrity This item involves dumping large queues into files. * -Implement shared row locks and use them in RI triggers -* Enforce referential integrity for system tables * Change foreign key constraint for array -> element to mean element in array? * Allow DEFERRABLE UNIQUE constraints? @@ -609,6 +639,7 @@ Referential Integrity This was used in older releases to dump referential integrity constraints. +* Enforce referential integrity for system tables * Allow AFTER triggers on system tables System tables are modified in many places in the backend without going @@ -641,12 +672,12 @@ Exotic Features * Allow queries across databases or servers with transaction semantics - Right now contrib/dblink can be used to issue such queries except it - does not have locking or transaction semantics. Two-phase commit is - needed to enable transaction semantics. + 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 o Allow current_schema.objname to access current schema objects o Add session variables @@ -666,7 +697,6 @@ Indexes that can span more than one table. * Add UNIQUE capability to non-btree indexes -* Add more GIST index support for geometric data types * -Use indexes for MIN() and MAX() MIN/MAX queries can already be rewritten as SELECT col FROM tab ORDER @@ -713,18 +743,22 @@ Indexes One solution is to create a partial index on an IS NULL expression. -* -Add concurrency to GIST * Allow accurate statistics to be collected on indexes with more than 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 GIST indexes to create certain complex index types, like digital - trees (see Aoki) +* 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) * Hash + o Pack hash index buckets onto disk pages more efficiently Currently no only one hash bucket can be stored on a page. Ideally @@ -841,6 +875,7 @@ Vacuum the event of a system crash, the bitmap would probably be invalidated. * 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? @@ -849,7 +884,7 @@ Vacuum Locking ======= -* Make locking of shared data structures more fine-grained +* -Make locking of shared data structures more fine-grained This requires that more locks be acquired but this would reduce lock contention, improving concurrency. @@ -926,7 +961,7 @@ 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 +* -Eliminate WAL logging for CREATE TABLE AS when not doing WAL archiving * -Change WAL to use 32-bit CRC, for performance reasons @@ -946,7 +981,7 @@ 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 +* -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 @@ -1026,7 +1061,10 @@ Source Code * 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 + * 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 @@ -1046,6 +1084,7 @@ Source Code locales but provides no ordering or character set classes. * Wire Protocol Changes + o Allow dynamic character set handling o Add decoded type, length, precision o Use compression? diff --git a/doc/src/FAQ/TODO.html b/doc/src/FAQ/TODO.html index 7f1546e9c4aa117ab98598eb7096e278c3d14376..c0725581af45b073e96f300f56f86ae53ddc0e57 100644 --- a/doc/src/FAQ/TODO.html +++ b/doc/src/FAQ/TODO.html @@ -8,7 +8,7 @@

PostgreSQL TODO List

Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
-Last updated: Mon Jul 4 13:00:23 EDT 2005 +Last updated: Mon Jul 4 13:43:32 EDT 2005

The most recent version of this document can be viewed at
http://www.postgresql.org/docs/faqs.TODO.html. @@ -101,7 +101,7 @@ first.

  • Allow per-tablespace quotas
  • -
  • Point-in-time Recovery (PITR) +
  • Point-In-Time Recovery (PITR) +
  • Arrays -
  • BINARY DATA +
  • Binary Data -

    Commands

    +

    SQL Commands