diff --git a/doc/TODO b/doc/TODO index 8d349eb65a..f8f6d647f5 100644 --- a/doc/TODO +++ b/doc/TODO @@ -1,165 +1,164 @@ -==================================================== -TODO list (FAQ) for PostgreSQL -==================================================== -last updated: Fri Oct 17 08:18:16 EDT 1997 +TODO list for PostgreSQL +======================== +Last updated: Fri Oct 17 08:18:16 EDT 1997 -current maintainer: Bruce Momjian (maillist@candle.pha.pa.us) +Current maintainer: Bruce Momjian (maillist@candle.pha.pa.us) The most recent version of this document can be viewed at -the postgreSQL WWW site, http://www.postgreSQL.org. +the PostgreSQL WWW site, http://www.postgreSQL.org. -THE CHANGES FOR 6.2 and 6.2.1 APPEAR AT THE END OF THIS DOCUMENT +THE CHANGES FOR 6.2 AND 6.2.1 APPEAR AT THE END OF THIS DOCUMENT Developers who have claimed items are: - Bruce is Bruce Momjian - Bryan is Bryan Henderson - Dan is Dan McGuirk - Daniel is Daniel Kalchev - Darren is Darren King - Edmund is Edmund Mergl - Erich Stamberger - Gerhard is Gerhard Reithofer - Igor is Igor - Jun is Jun Kuwamura - Kurt is "Kurt J. Lidl" - Martin is Martin S. Utesch - Oleg is Oleg Bartunov - Paul is Paul M. Aoki - Patrick is Patrick van Kleef - Raymond is Raymond Toy - Soo-Ho Ok - Stefan Simkovics - Sven is Sven Verdoolaege - Tatsuo is Tatsuo Ishii - Thomas is Thomas Lockhart - Vadim is "Vadim B. Mikheev" - Vivek is Vivek Khera +------------------------------------- + * Bruce is Bruce Momjian + * Bryan is Bryan Henderson + * Dan is Dan McGuirk + * Daniel is Daniel Kalchev + * Darren is Darren King + * Edmund is Edmund Mergl + * Erich Stamberger + * Gerhard is Gerhard Reithofer + * Igor is Igor + * Jun is Jun Kuwamura + * Kurt is "Kurt J. Lidl" + * Martin is Martin S. Utesch + * Oleg is Oleg Bartunov + * Paul is Paul M. Aoki + * Patrick is Patrick van Kleef + * Raymond is Raymond Toy + * Soo-Ho Ok + * Stefan Simkovics + * Sven is Sven Verdoolaege + * Tatsuo is Tatsuo Ishii + * Thomas is Thomas Lockhart + * Vadim is "Vadim B. Mikheev" + * Vivek is Vivek Khera RELIABILITY ----------- --Overhaul mdmgr/smgr to fix double unlinking and double opens, cleanup(Erich) --Overhaul bufmgr/lockmgr/transaction manager(Vadim) -Fix CLUSTER -Remove EXTEND? -Fix all NULL features - allow psql to print nulls meaningfully -Fix compile and security of Kerberos/GSSAPI code (Daniel Kalchev?) -COUNT on VIEW always returns zero (maybe because there is no oid for views?) -CREATE VIEW requires super-user priviledge -can lo_export()/lo_import() read/write anywhere, causing a security problem? -Tables that start with xinv confused to be large objects -Two and three dimmensional arrays display improperly, missing {} -Add GROUP BY and HAVING to INSERT INTO table SELECT * FROM table2 -lo_unlink() crashes server -Allow variable casts with BETWEEN 'today'::asbtime AND 'today'::abstime -Prevent auto-table reference, like SELECT table.col WHERE col = 3 (?) -Remove un-needed malloc() calls and replace with palloc(). -SELECT * FROM table WHERE int4_column = '1' fails -SELECT a[1] FROM test fails, it needs test.a[1] -SELECT COUNT(*) FROM TAB1, TAB2 fails -SELECT SUM(2+2) FROM table dumps core -UPDATE table SET table.value = 3 fails -UPDATE key_table SET keyval=max(reftab.NUM)+1 WHERE tblname='reftab' fails -INSERT INTO ... SELECT DISTINCT ... generates error on DISTINCT -INSERT INTO table SELECT id, count(*) FROM table2 GROUP BY id generate error +* -Overhaul mdmgr/smgr to fix double unlinking and double opens, cleanup(Erich) +* -Overhaul bufmgr/lockmgr/transaction manager(Vadim) +* Fix CLUSTER +* Remove EXTEND? +* Fix all NULL features, allow psql to print nulls meaningfully +* Fix compile and security of Kerberos/GSSAPI code (Daniel Kalchev?) +* COUNT on VIEW always returns zero (maybe because there is no oid for views?) +* CREATE VIEW requires super-user priviledge +* can lo_export()/lo_import() read/write anywhere, causing a security problem? +* Tables that start with xinv confused to be large objects +* Two and three dimmensional arrays display improperly, missing {} +* Add GROUP BY and HAVING to INSERT INTO table SELECT * FROM table2 +* lo_unlink() crashes server +* Allow variable casts with BETWEEN 'today'::asbtime AND 'today'::abstime +* Prevent auto-table reference, like SELECT table.col WHERE col = 3 (?) +* Remove un-needed malloc() calls and replace with palloc(). +* SELECT * FROM table WHERE int4_column = '1' fails +* SELECT a[1] FROM test fails, it needs test.a[1] +* SELECT COUNT(*) FROM TAB1, TAB2 fails +* SELECT SUM(2+2) FROM table dumps core +* UPDATE table SET table.value = 3 fails +* UPDATE key_table SET keyval=max(reftab.NUM)+1 WHERE tblname='reftab' fails +* INSERT INTO ... SELECT DISTINCT ... generates error on DISTINCT +* INSERT INTO table SELECT id, count(*) FROM table2 GROUP BY id generate error ENHANCEMENTS ------------ -Replace table-level locking with row or page-level locking(Vadim) -PRIMARY KEY during table creation -Add SERIAL type -Preserve GRANT/REVOKE/pg_group in pg_dump -Transaction log -More access control over who can create tables and access the database -Add full ANSI SQL capabilities (Stefan) - add subselects, possibility using temporary SQL functions - Implement HAVING clause - Implement EXISTS qualifier - report "Not implemented" if valid syntax is supplied - add OUTER joins, left and right (Thomas) - make VIEWs updateable where possible - add UNIONS, INTERSECTS, SUBTRACTS - add temporary tables - add sql3 recursive unions - add the concept of dataspaces - allow conversion type casts on SELECT target fields - add DECIMAL, NUMERIC, DOUBLE PRECISION, BIT, BIT VARYING - NCHAR (as distinguished from ordinary varchar), -Allow compression of large fields or a compressed field type -Fix the rules system(Jan?,Soo-Ho) - robust - making INSTEAD rules work - add CONSTRAINT -Full set of text operations and functions - word searches, concat,max() on text, char -Large objects - overwriting blocks has problems - there are other problems, too. - Fix large object mapping scheme - not to stuff everything as files in a single directory -Better interface for adding to pg_group -Make MONEY/DECIMAL have a defined precision -Add support for tables >2G, or test current version -Threaded version of the server or libpq -Allow libpq to cancel query requests -Add REGEX internationalization -Add other language types for built-in functions - expand to allow tcl, perl, java, - generalize the function manager switch to pass - function sources to interpreter engines. -remove time-travel feature(Vadim) -reduce system column overhead(Vadmin) -remove pg_time table(Vadim) -allow row re-use without vacuum, maybe?(Vadim) -can't vacuum large objects -can't reduce index file size with vacuum -Remove restriction that ORDER BY field must be in SELECT list(?) -Allow queries about owner of tables, like: - SELECT u.usesysid FROM postgres.pg_user u; -Add word index for text fields, maybe with trigrams, i.e.: - ' (cat | dog) & ! fox ' meaning text has cat or dog, but not fox -Allow readline-type or editor command editing of multi-line SQL commands -Populate backend status area and write program to dump status data -Add ALTER TABLE DROP COLUMN feature -Remove stale files upon startup(Vivek) -Add command to show privileges -Allow INSERT INTO ... SELECT to convert column types -Add syslog functionality -Add STDDEV/VARIANCE() function for standard deviation computation/variance -Add table/column/function discription table indexed by oid -add pg_type attribute to identify types that need length (bpchar, varchar) -add UNIQUE capability to non-btree indexes -make large objects have their own reltype -make number of backends a config parameter, storage/sinvaladt.h:MaxBackendId -certain indexes will not shrink, i.e. oid indexes with many inserts -make NULL's come out at the beginning or end depending on the ORDER BY direction -change the library/backend interface to use network byte order -allow unix domain sockets for local connections for performance and security -Add PAGER for psql's \dt and \d tablename -Make timezone set-able by client applications(Thomas) -Restore unused oid's on backend exit if no one else has gotten oids +* Replace table-level locking with row or page-level locking(Vadim) +* PRIMARY KEY during table creation +* Add SERIAL type +* Preserve GRANT/REVOKE/pg_group in pg_dump +* Transaction log +* More access control over who can create tables and access the database +* Add full ANSI SQL capabilities (Stefan) + * add subselects, possibility using temporary SQL functions + * Implement HAVING clause + * Implement EXISTS qualifier + * report "Not implemented" if valid syntax is supplied + * add OUTER joins, left and right (Thomas) + * make VIEWs updateable where possible + * add UNIONS, INTERSECTS, SUBTRACTS + * add temporary tables + * add sql3 recursive unions + * add the concept of dataspaces + * allow conversion type casts on SELECT target fields + * add DECIMAL, NUMERIC, DOUBLE PRECISION, BIT, BIT VARYING + * NCHAR (as distinguished from ordinary varchar), +* Allow compression of large fields or a compressed field type +* Fix the rules system(Jan?,Soo-Ho) + * robust + * making INSTEAD rules work + * add CONSTRAINT +* Full set of text operations and functions + * word searches, concat,max() on text, char +* Large objects + * overwriting blocks has problems + * there are other problems, too. + * Fix large object mapping scheme + * not to stuff everything as files in a single directory +* Better interface for adding to pg_group +* Make MONEY/DECIMAL have a defined precision +* Add support for tables >2G, or test current version +* Threaded version of the server or libpq +* Allow libpq to cancel query requests +* Add REGEX internationalization +* Add other language types for built-in functions + * expand to allow tcl, perl, java, + * generalize the function manager switch to pass + * function sources to interpreter engines. +* remove time-travel feature(Vadim) +* reduce system column overhead(Vadmin) +* remove pg_time table(Vadim) +* allow row re-use without vacuum, maybe?(Vadim) +* can't vacuum large objects +* can't reduce index file size with vacuum +* Remove restriction that ORDER BY field must be in SELECT list(?) +* Allow queries about owner of tables, like: + * SELECT u.usesysid FROM postgres.pg_user u; +* Add word index for text fields, maybe with trigrams, i.e.: + * ' (cat | dog) & ! fox ' meaning text has cat or dog, but not fox +* Allow readline-type or editor command editing of multi-line SQL commands +* Populate backend status area and write program to dump status data +* Add ALTER TABLE DROP COLUMN feature +* Remove stale files upon startup(Vivek) +* Add command to show privileges +* Allow INSERT INTO ... SELECT to convert column types +* Add syslog functionality +* Add STDDEV/VARIANCE() function for standard deviation computation/variance +* Add table/column/function discription table indexed by oid +* add pg_type attribute to identify types that need length (bpchar, varchar) +* add UNIQUE capability to non-btree indexes +* make large objects have their own reltype +* make number of backends a config parameter, storage/sinvaladt.h:MaxBackendId +* certain indexes will not shrink, i.e. oid indexes with many inserts +* make NULL's come out at the beginning or end depending on the ORDER BY direction +* change the library/backend interface to use network byte order +* allow unix domain sockets for local connections for performance and security +* Add PAGER for psql's \dt and \d tablename +* Make timezone set-able by client applications(Thomas) +* Restore unused oid's on backend exit if no one else has gotten oids PERFORMANCE ----------- -Use indexes in ORDER BY -Allow LIKE/wildcard matches to use indexes if the wildcard character is not first -Optimizing disjunctive queries -Fix bushy-plans (Martin) -Other optimizer bugs -Is fsync use optimized? -Cache most recent query plan(s?) -Shared catalog cache, reduce lseek()'s by caching table size in shared area -Allow compression of log and meta data -Add FILLFACTOR to index creation -Allow indexes to be used with OR clauses(Vadim) -update pg_statistic table to remove operator column +* Use indexes in ORDER BY +* Allow LIKE/wildcard matches to use indexes if the wildcard character is not first +* Optimizing disjunctive queries +* Fix bushy-plans (Martin) +* Other optimizer bugs +* Is fsync use optimized? +* Cache most recent query plan(s?) +* Shared catalog cache, reduce lseek()'s by caching table size in shared area +* Allow compression of log and meta data +* Add FILLFACTOR to index creation +* Allow indexes to be used with OR clauses(Vadim) +* update pg_statistic table to remove operator column DOCUMENTATION ------------- -Update usermanual source(many) -remove time-travel in documentation(Bruce) -added features used in grammer but not in docs, like :: and CAST -update libpq++ manual page +* Update usermanual source(many) +* remove time-travel in documentation(Bruce) +* added features used in grammer but not in docs, like :: and CAST +* update libpq++ manual page PORTABILITY -----------