Skip to content
Snippets Groups Projects
Commit d228278c authored by Bruce Momjian's avatar Bruce Momjian
Browse files

Update TODO list.

parent a871e369
No related branches found
No related tags found
No related merge requests found
TODO list for PostgreSQL TODO list for PostgreSQL
======================== ========================
Last updated: Thu May 10 13:29:36 EDT 2001 Last updated: Thu May 10 16:26:24 EDT 2001
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us) Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
...@@ -57,13 +57,13 @@ ADMIN ...@@ -57,13 +57,13 @@ ADMIN
* Remove unused files during database vacuum or postmaster startup * Remove unused files during database vacuum or postmaster startup
* Add table name mapping for numeric file names * Add table name mapping for numeric file names
* Overhaul pg_hba.conf host-based authentication * Overhaul pg_hba.conf host-based authentication
* Incremental backups
TYPES TYPES
* Add domain capability * Add domain capability
* Add IPv6 capability to INET/CIDR types * Add IPv6 capability to INET/CIDR types
* Add conversion function from text to inet * Add conversion function from text to inet
* Make a separate SERIAL type?
* Store binary-compatible type information in the system * Store binary-compatible type information in the system
* Allow nulls in arrays * Allow nulls in arrays
* Allow arrays to be ORDER'ed * Allow arrays to be ORDER'ed
...@@ -107,41 +107,72 @@ INDEXES ...@@ -107,41 +107,72 @@ INDEXES
[inheritance] [inheritance]
* Prevent pg_attribute from having duplicate oids for indexes (Tom) * Prevent pg_attribute from having duplicate oids for indexes (Tom)
* Add UNIQUE capability to non-btree indexes * Add UNIQUE capability to non-btree indexes
* Certain indexes will not shrink, i.e. oid indexes with many inserts (Vadim) * Certain indexes will not shrink, e.g. oid indexes with many inserts (Vadim)
* Have UPDATE/DELETE clean out indexes * Have UPDATE/DELETE clean out indexes
* Add btree index support for reltime, tinterval, regproc * Add btree index support for reltime, tinterval, regproc
* Add rtree index support for line, lseg, path, point * Add rtree index support for line, lseg, path, point
* Use indexes for min() and max()
* Use index to restrict rows returned by multi-key index when used with
non-consecutive keys or OR clauses, so fewer heap accesses
* Allow SELECT * FROM tab WHERE int2col = 4 use int2col index, int8,
float4, numeric/decimal too [optimizer]
* Use indexes with CIDR '<<' (contains) operator
* Allow LIKE indexing optimization for non-ASCII locales
* Be smarter about insertion of already-ordered data into btree index
* Gather more accurate dispersion statistics using indexes
* Add deleted bit to index tuples to reduce heap access
* Prevent index uniqueness checks when UPDATE does not modifying column
* System Tables
* Add unique indexes to pg_shadow.usename and pg_shadow.usesysid or
switch to pg_shadow.oid as user id
* Add unique indexes on pg_database
* Check all system tables and add unique indexes as needed
* Remove pg_listener index
* Remove unused pg_variable, pg_inheritproc, pg_ipl tables
COMMANDS COMMANDS
* ALTER TABLE ADD COLUMN to inherited table put column in wrong place * ALTER
[inheritance] * ALTER TABLE ADD COLUMN to inherited table put column in wrong place
* Add ALTER TABLE DROP COLUMN feature [drop] [inheritance]
* Add ALTER FUNCTION * Add ALTER TABLE DROP COLUMN feature [drop]
* Add ALTER TABLE ... DROP CONSTRAINT * Add ALTER FUNCTION
* Automatically drop constraints/functions when object is dropped * Add ALTER TABLE DROP CONSTRAINT
* CLUSTER * CLUSTER
* cluster all tables at once * cluster all tables at once
* prevent lose of indexes, permissions, inheritance * prevent lose of indexes, permissions, inheritance
* Automatically keep clustering on a table * Automatically keep clustering on a table
* Keep statistics about clustering, perhaps during VACUUM ANALYZE * Keep statistics about clustering, perhaps during VACUUM ANALYZE
[optimizer] [optimizer]
* COPY
* Update reltuples in COPY
* Allow specification of column names
* Allow dump/load of CSV format
* CURSOR
* Allow BINARY option to SELECT, like we do with DECLARE
* MOVE 0 should not move to end of cursor
* Allow cursors to be DECLAREd/OPENed/CLOSEed outside transactions
* Allow DELETE WHERE CURRENT OF cursor
* INSERT
* Allow INSERT/UPDATE of system-generated oid value for a row
* Allow INSERT INTO tab (col1, ..) VALUES (val1, ..), (val2, ..)
* Allow INSERT INTO my_table VALUES (a, b, c, DEFAULT, x, y, z, ...)
* Disallow missing columns in INSERT ... VALUES, per ANSI
* Allow INSERT/UPDATE ... RETURNING new.col or old.col (Philip)
* Add SIMILAR TO to allow character classes, 'pg_[a-c]%' * Add SIMILAR TO to allow character classes, 'pg_[a-c]%'
* Auto-destroy sequence on DROP of table with SERIAL (Ryan) * Auto-destroy sequence on DROP of table with SERIAL, perhaps with a separate
SERIAL type
* Allow LOCK TABLE tab1, tab2, tab3 so all tables locked in unison [lock] * Allow LOCK TABLE tab1, tab2, tab3 so all tables locked in unison [lock]
* Allow INSERT/UPDATE of system-generated oid value for a row
* Allow INSERT INTO my_table VALUES (a, b, c, DEFAULT, x, y, z, ...)
* Allow INSERT INTO tab (col1, ..) VALUES (val1, ..), (val2, ..)
* Allow RULE recompilation * Allow RULE recompilation
* Allow BINARY option to SELECT, like we do with DECLARE
* MOVE 0 should not move to end of cursor
* Add SHOW command to display locks
* Bring INSERT ... VALUES up to full SQL92 spec, disallow missing
columns, allow DEFAULT
* Allow cursors to be DECLAREd/OPENed/CLOSEed outside transactions
* Allow DELETE WHERE CURRENT OF cursor
* Add BETWEEN ASYMMETRIC/SYMMETRIC * Add BETWEEN ASYMMETRIC/SYMMETRIC
* Add SET or BEGIN timeout parameter to cancel query if waiting too long * SHOW/SET
* Add SHOW command to display locks
* Add a global RESET command for use with connection pooling
* Add SET or BEGIN timeout parameter to cancel query if waiting too long
* Add SET REAL_FORMAT and SET DOUBLE_PRECISION_FORMAT using printf args
* Remove SET KSQO option now that OR processing is improved (Tom)
* Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM
ANALYZE, and CLUSTER
* Change LIMIT val,val to offset,limit to match MySQL * Change LIMIT val,val to offset,limit to match MySQL
* Allow Pl/PgSQL's RAISE function to take expressions * Allow Pl/PgSQL's RAISE function to take expressions
...@@ -149,24 +180,18 @@ CLIENTS ...@@ -149,24 +180,18 @@ CLIENTS
* Make NULL's come out at the beginning or end depending on the * Make NULL's come out at the beginning or end depending on the
ORDER BY direction ORDER BY direction
* COPY * fix array handling in ECPG
* Update reltuples in COPY
* Allow specification of column names
* Allow dump/load of CSV format
* fix array handling for ECPG
* have pg_dump use LEFT OUTER JOIN in multi-table SELECTs * have pg_dump use LEFT OUTER JOIN in multi-table SELECTs
or multiple SELECTS to avoid bad system catalog entries or multiple SELECTS to avoid bad system catalog entries
* allow psql \d to show primary and foreign keys * allow psql \d to show primary and foreign keys
* allow psql \d to show temporary table structure * allow psql \d to show temporary table structure
* add XML interface capability * add XML interface capability
* Add a global RESET command for use with connection pooling
* Remove <=6.3 version compatibility in ODBC? * Remove <=6.3 version compatibility in ODBC?
* Add SET REAL_FORMAT and SET DOUBLE_PRECISION_FORMAT using printf args
REFERENTIAL INTEGRITY REFERENTIAL INTEGRITY
* Add MATCH PARTIAL referential integrity * Add MATCH PARTIAL referential integrity
* Check that primary key exists at foreign key definition time * -Check that primary key exists at foreign key definition time
* Prevent column dropping if column is used by foreign key * Prevent column dropping if column is used by foreign key
* Propagate column or table renaming to foreign key constraints * Propagate column or table renaming to foreign key constraints
* Add deferred trigger queue file (Jan) * Add deferred trigger queue file (Jan)
...@@ -175,39 +200,37 @@ REFERENTIAL INTEGRITY ...@@ -175,39 +200,37 @@ REFERENTIAL INTEGRITY
* Enforce referential integrity for system tables * Enforce referential integrity for system tables
* INSERT & UPDATE/DELETE in transaction of primary key fails with * INSERT & UPDATE/DELETE in transaction of primary key fails with
deferredTriggerGetPreviousEvent or "change violation" [foreign] deferredTriggerGetPreviousEvent or "change violation" [foreign]
* Add unique indexes to pg_shadow.usename and pg_shadow.usesysid or
switch to pg_shadow.oid as user id
* Add unique indexes on pg_database
* Check all system tables and add unique indexes as needed
* Make constraints clearer in dump file * Make constraints clearer in dump file
* Change foreign key constraint for array -> element to mean element * Change foreign key constraint for array -> element to mean element
in array in array
* Automatically drop constraints/functions when object is dropped
TRANSACTIONS
* Implement UNDO using transaction log
* Allow autocommit so always in a transaction block
* Overhaul bufmgr/lockmgr/transaction manager
* Allow nested transactions (Vadim)
* Handle transaction rollover [transactions]
EXOTIC FEATURES EXOTIC FEATURES
* Add sql3 recursive unions * Add sql3 recursive unions
* Add the concept of dataspaces/tablespaces [tablespaces] * Add the concept of dataspaces/tablespaces [tablespaces]
* Allow SQL92 schemas
* Allow queries across multiple databases * Allow queries across multiple databases
* Allow nested transactions (Vadim) * Add pre-parsing phase that converts non-ANSI features to supported features
* Allow INSERT/UPDATE ... RETURNING new.col or old.col (Philip)
* Add pre-parsing phase that convets non-ANSI features to supported features
* SQL*Net listener that makes PostgreSQL appear as an Oracle database * SQL*Net listener that makes PostgreSQL appear as an Oracle database
to clients to clients
* Incremental backups
* Allow SQL92 schemas
* Handle transaction rollover [transactions]
MISCELLANEOUS MISCELLANEOUS
* Increase identifier length(NAMEDATALEN) if small performance hit * Increase identifier length(NAMEDATALEN) if small performance hit
* Create a background process for each database that runs while * Create a background process for each database that runs while
database is idle, finding superceeded rows, gathering stats and vacuuming database is idle, finding superceeded rows, gathering stats and vacuuming
* Implement UNDO using transaction log
* Populate backend status area and write program to dump status data * Populate backend status area and write program to dump status data
* Put sort files in their own directory * Put sort files in their own directory
* Allow autocommit so always in a transaction block
* Show location of syntax error in query [yacc] * Show location of syntax error in query [yacc]
* Overhaul bufmgr/lockmgr/transaction manager
* Encrpyt passwords in pg_shadow table using MD5 (Vince) * Encrpyt passwords in pg_shadow table using MD5 (Vince)
* Allow Java server-side programming [java] * Allow Java server-side programming [java]
* Add sed-like regular expression search/replace capability * Add sed-like regular expression search/replace capability
...@@ -216,27 +239,13 @@ MISCELLANEOUS ...@@ -216,27 +239,13 @@ MISCELLANEOUS
PERFORMANCE PERFORMANCE
----------- -----------
-FSYNC FSYNC
* Delay fsync() when other backends are about to commit too [fsync] * Delay fsync() when other backends are about to commit too [fsync]
* Determine optimal commit_delay value * Determine optimal commit_delay value
* Determine optimal fdatasync/fsync, O_SYNC/O_DSYNC options * Determine optimal fdatasync/fsync, O_SYNC/O_DSYNC options
* Allow multiple blocks to be written to WAL with one write() * Allow multiple blocks to be written to WAL with one write()
INDEXES
* Use indexes to find min() and max()
* Use index to restrict rows returned by multi-key index when used with
non-consecutive keys or OR clauses, so fewer heap accesses
* Allow SELECT * FROM tab WHERE int2col = 4 use int2col index, int8,
float4, numeric/decimal too [optimizer]
* Use indexes with CIDR '<<' (contains) operator
* Allow LIKE indexing optimization for non-ASCII locales
* Be smarter about insertion of already-ordered data into btree index
* Gather more accurate dispersion statistics using indexes
* Add deleted bit to index tuples to reduce heap access
* Prevent index uniqueness checks when UPDATE does not modify column
CACHE CACHE
* Cache most recent query plan(s) (Karel) [prepare] * Cache most recent query plan(s) (Karel) [prepare]
...@@ -247,14 +256,15 @@ VACUUM ...@@ -247,14 +256,15 @@ VACUUM
* Improve speed with indexes (perhaps recreate index instead) [vacuum] * Improve speed with indexes (perhaps recreate index instead) [vacuum]
* Reduce lock time by moving tuples with read lock, then write * Reduce lock time by moving tuples with read lock, then write
lock and truncate table [vacuum] lock and truncate table [vacuum]
* Make ANALYZE a separate command * -Make ANALYZE a separate command
* Allow ANALYZE to ESTIMATE based on certain random precentage of rows * -Allow ANALYZE to ESTIMATE based on certain random precentage of rows
* Add LAZY VACUUM (Vadim) * Add LAZY VACUUM (Vadim)
MISCELLANEOUS MISCELLANEOUS
* Allow compression of log and meta data * Allow compression of log and meta data
* Do async I/O to do better read-ahead of data * Do async I/O to do better read-ahead of data
* Experiment with multi-threaded backend [thread]
* Get faster regex() code from Henry Spencer <henry@zoo.utoronto.ca> * Get faster regex() code from Henry Spencer <henry@zoo.utoronto.ca>
when it is available when it is available
* Use mmap() rather than SYSV shared memory(?) [mmap] * Use mmap() rather than SYSV shared memory(?) [mmap]
...@@ -263,15 +273,11 @@ MISCELLANEOUS ...@@ -263,15 +273,11 @@ MISCELLANEOUS
* improve dynamic memory allocation by introducing tuple-context memory * improve dynamic memory allocation by introducing tuple-context memory
allocation (Tom) allocation (Tom)
* allow configuration of maximum number of open files * allow configuration of maximum number of open files
* Remove pg_listener index * -Improve statistics storage in pg_class [performance]
* Improve statistics storage in pg_class [performance]
* Add connection pooling [pool] * Add connection pooling [pool]
* Allow persistent backends [persistent] * Allow persistent backends [persistent]
* Create a transaction processor to aid in persistent connections and * Create a transaction processor to aid in persistent connections and
connection pooling connection pooling
* Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM
ANALYZE, and CLUSTER
* Force transactions that commit at near the same time use a single fsync()
* Make blind writes go through the file descriptor cache * Make blind writes go through the file descriptor cache
* Allow logging of query durations * Allow logging of query durations
...@@ -279,10 +285,7 @@ SOURCE CODE ...@@ -279,10 +285,7 @@ SOURCE CODE
----------- -----------
* Add use of 'const' for variables in source tree * Add use of 'const' for variables in source tree
* Does Mariposa source contain any other bug fixes? * Does Mariposa source contain any other bug fixes?
* Remove SET KSQO option now that OR processing is improved (Tom)
* Convert remaining fprintf(stderr,...)/perror() to elog() * Convert remaining fprintf(stderr,...)/perror() to elog()
* Remove unused pg_variable, pg_inheritproc, pg_ipl tables
* Experiment with multi-threaded backend [thread]
* Fix problems with libpq non-blocking/async code [async] * Fix problems with libpq non-blocking/async code [async]
* Merge global and template BKI files (Peter E) * Merge global and template BKI files (Peter E)
* Fix username/password length limits in all areas * Fix username/password length limits in all areas
...@@ -293,12 +296,12 @@ SOURCE CODE ...@@ -293,12 +296,12 @@ SOURCE CODE
* Add version file format stamp to heap and other table types * Add version file format stamp to heap and other table types
* Make elog(LOG) in WAL its own output type, distinct from DEBUG * Make elog(LOG) in WAL its own output type, distinct from DEBUG
* Rename some /contrib modules from pg* to pg_* * Rename some /contrib modules from pg* to pg_*
* Move some things from /contrib into main tree, like soundex
* Allow plug-in modules to emulate features from other databases
* Remove warnings created by -Wcast-align * Remove warnings created by -Wcast-align
* Move platform-specific ps status display info from ps_status.c to ports * Move platform-specific ps status display info from ps_status.c to ports
* Decide on spelling of indexes/indices
* Allow ps status display to work on Solaris/SVr4-based systems * Allow ps status display to work on Solaris/SVr4-based systems
* Move some things from /contrib into main tree, like soundex * Decide on spelling of indexes/indices
* Allow plug-in modules to emulate features from other databases
* Add mention of VACUUM, log rotation to Administrator's Guide * Add mention of VACUUM, log rotation to Administrator's Guide
* Add PL/Python documentation * Add PL/Python documentation
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment