diff --git a/doc/TODO b/doc/TODO index 60959f8436..50928ed9d5 100644 --- a/doc/TODO +++ b/doc/TODO @@ -1,6 +1,6 @@ TODO list for PostgreSQL ======================== -Last updated: Tue Jan 22 15:49:54 EST 2002 +Last updated: Tue Jan 22 16:54:39 EST 2002 Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us) @@ -35,55 +35,75 @@ URGENT * Point-in-time data recovery using backup and write-ahead log * Allow row re-use without vacuum (Tom) -ADMIN +REPORTING + +* Allow elog() to return error codes, module name, file name, line + number, not just messages (Peter E) +* Add error codes (Peter E) +* -Allow international error message support (Peter E) +* Change DEBUG startup tag to NOTICE; change NOTICE to output to client + only if client exists (Bruce) +* Show location of syntax error in query [yacc] +* -Populate backend status area and write program to dump status data (Jan) + +PERMISSIONS * Improve control over user privileges, including table creation and lock use [privileges] (Karel, others) +* Allow usernames to be specified directly in pg_hba.conf (Bruce) +* Add PGPASSWORDFILE environment variable or ~/.pgpass to store + user/host/password combinations +* Remove PGPASSWORD because is insecure on some OS's +* Make single-user local access permissions the default (Peter E) +* -Allow single-user access without passwords using Unix socket permissions +* -Better document pg_hba.conf host-based authentication (Bruce) +* -Add MD5 to ODBC (Bruce) +* Use thread-safe crypt() in libpq, if available + +ADMIN + +* Incremental backups * Make it easier to create a database owned by someone who can't createdb, perhaps CREATE DATABASE dbname WITH OWNER = "user" (Gavin) * Make equals sign optional in CREATE DATABASE WITH param = 'val' * -Permission to DELETE table also allows UPDATE (Peter E) -* Allow elog() to return error codes, module name, file name, line - number, not just messages (Peter E) -* -Allow international error message support (Peter E) -* Add error codes (Peter E) * -Remove unused sort files on postmaster startup (Bruce) * Remove unreferenced table files and temp tables during database vacuum or postmaster startup (Bruce) * -Remove unreferenced sort files during postmaster startup (Bruce) * Add table name mapping for numeric file names (Bruce) -* -Better document pg_hba.conf host-based authentication (Bruce) -* -Encrpyt passwords in pg_shadow table using MD5 (Bruce, Vince) -* Incremental backups +* -Encrypt passwords in pg_shadow table using MD5 (Bruce, Vince) * Remove behavior of postmaster -o after making postmaster/postgres flags unique -* Allow usernames to be specified directly in pg_hba.conf (Bruce) -* Add function to return compressed length of TOAST data values (Tom) -* Change DEBUG startup tag to NOTICE; change NOTICE to output to client - only if client exists (Bruce) - +* Allow logging of query durations +* -Put sort files in their own directory (Bruce) DATA TYPES * Add domain capability [domain] * Add IPv6 capability to INET/CIDR types -* -Add conversion function from text to inet -* Store binary-compatible type information in the system -* Allow better handling of numeric constants, type conversion [typeconv] -* Support construction of array result values in expressions * Remove Money type, add money formatting for decimal type * SELECT cash_out(2) crashes because of opaque * Declare typein/out functions in pg_proc with a special "C string" data type * Functions returning sets do not totally work -* SELECT col FROM tab WHERE numeric_col = 10.1 fails, requires quotes -* Missing optimizer selectivities for date, r-tree, etc. [optimizer] * -Add SQL standard function bit_length() (Peter E) * -Make oid use unsigned int more reliably (Tom) * Change factorial to return a numeric +* Add function to return compressed length of TOAST data values (Tom) + +* CONVERSION + o -Add conversion function from text to inet + o Store binary-compatible type information in the system + o Allow better handling of numeric constants, type conversion + [typeconv] + o SELECT col FROM tab WHERE numeric_col = 10.1 fails, requires quotes + * ARRAYS o Allow nulls in arrays o Allow arrays to be ORDER'ed o Ensure we have array-eq operators for every built-in array type + o Support construction of array result values in expressions + * BINARY DATA o -Add non-large-object binary field (already exists -- bytea) o -Make binary interface for TOAST columns (base64) @@ -131,8 +151,8 @@ INDEXES * UNIQUE INDEX on base column not honored on inserts from inherited table INSERT INTO inherit_table (unique_index_col) VALUES (dup) should fail [inheritance] -* Have UPDATE/DELETE clean out indexes * Allow UPDATE/DELETE on inherited table +* Have UPDATE/DELETE clean out indexes * Add UNIQUE capability to non-btree indexes * Add btree index support for reltime, tinterval, regproc * Add rtree index support for line, lseg, path, point @@ -177,7 +197,8 @@ COMMANDS * CREATE TABLE AS can not determine column lengths from expressions [atttypmod] * Allow UPDATE to handle complex aggregates [update] * Prevent create/drop scripts from allowing extra args (Bruce) -* Allow command blocks that can ignore certain types of errors +* Allow command blocks to ignore certain types of errors + * ALTER o ALTER TABLE ADD COLUMN does not honor DEFAULT and non-CHECK CONSTRAINT o ALTER TABLE ADD COLUMN to inherited table put column in wrong place @@ -192,23 +213,27 @@ COMMANDS o ALTER TABLE ADD COLUMN column SET DEFAULT should fill existing rows with DEFAULT value o Have ALTER TABLE OWNER change all dependant objects like indexes + * CLUSTER o cluster all tables at once o prevent lose of indexes, permissions, inheritance (Bruce) - o Automatically keep clustering on a table + o Automatically maintain clustering on a table o -Keep statistics about clustering (Tom) [optimizer] + * COPY o Allow specification of column names o Allow dump/load of CSV format o Change syntax to WITH DELIMITER, (keep old syntax around?) o Allow COPY to report error lines and continue; optionally allow error codes to be specified; requires savepoints + * CURSOR - o Allow BINARY option to SELECT, like we do with DECLARE + o Allow BINARY option to SELECT, just like DECLARE o MOVE 0 should not move to end of cursor o Allow cursors to be DECLAREd/OPENed/CLOSEed outside transactions o Allow DELETE WHERE CURRENT OF cursor o Prevent DROP of table being referenced by our own open cursor + * INSERT o Allow INSERT/UPDATE of system-generated oid value for a row o Allow INSERT INTO tab (col1, ..) VALUES (val1, ..), (val2, ..) @@ -216,6 +241,7 @@ COMMANDS o Disallow missing columns in INSERT ... VALUES, per ANSI o Allow INSERT/UPDATE ... RETURNING new.col or old.col; handle RULE cases (Philip) + * SHOW/SET o Add SHOW command to display locks o -Add SHOW command to show all settings @@ -226,6 +252,7 @@ COMMANDS o Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM ANALYZE, and CLUSTER o Add SHOW command to see locale + * SERVER-SIDE LANGUAGES o Allow PL/PgSQL's RAISE function to take expressions o Fix PL/PgSQL to handle quoted mixed-case identifiers @@ -245,15 +272,8 @@ CLIENTS * Allow psql \d to show temporary table structure * Add XML interface: psql, pg_dump, COPY, separate server (?) * -Fix libpq to properly handle socket failures under native MS Win32 -* -Add MD5 to ODBC (Bruce) -* Use thread-safe crypt() in libpq, if available * Add config file check for $ODBCINI, $HOME/.odbc.ini, installpath/etc/odbc.ini -* Add documentation for perl, including mention of DBI/DBD perl location -* Add PGPASSWORDFILE environment variable or ~/.pgpass to store - user/host/password combinations -* Remove PGPASSWORD because is insecure on some OS's -* -Allow single-user access without passwords using Unix socket permissions -* Make single-user local access permissions the default (Peter E) + * JDBC o Comprehensive test suite. This may be available already. o Updateable resultSet (must be done in backend code) @@ -267,6 +287,7 @@ CLIENTS o Implement cancel() method on Statement o Use cursors implicitly to avoid large results (see setCursorName()) o Add support for CallableStatements + * ECPG o Implement set descriptor, using descriptor o Make casts work in variable initializations @@ -283,7 +304,7 @@ CLIENTS o -Remove space_or_nl and line_end from pgc.l o Fix nested C comments o Add SQLSTATE - o fix handling of DB attributes taht are arrays + o fix handling of DB attributes that are arrays REFERENTIAL INTEGRITY @@ -333,16 +354,6 @@ EXOTIC FEATURES * SQL*Net listener that makes PostgreSQL appear as an Oracle database to clients -MISCELLANEOUS - -* Increase identifier length (NAMEDATALEN) if small performance hit -* Increase maximum number of function parameters if little wasted space -* -Populate backend status area and write program to dump status data (Jan) -* -Put sort files in their own directory (Bruce) -* Show location of syntax error in query [yacc] -* Change representation of whole-tuple parameters to functions -* Add optional CRC checksum to heap and index pages -* Add WAL index reliability improvement to non-btree indexes PERFORMANCE ----------- @@ -369,7 +380,7 @@ VACUUM * Reduce lock time by moving tuples with read lock, then write lock and truncate table [vacuum] * -Make ANALYZE a separate command (Tom) -* -Allow ANALYZE to ESTIMATE based on certain random precentage of rows (Tom) +* -Allow ANALYZE to ESTIMATE based on certain random percentage of rows (Tom) * Add LAZY VACUUM (Vadim) [performance] LOCKING @@ -396,6 +407,7 @@ WRITE-AHEAD LOG * Reduce number of after-change WAL writes; they exist only to gaurd against partial page writes * Turn off after-change writes if fsync is disabled (?) +* Add WAL index reliability improvement to non-btree indexes OPTIMIZER/EXECUTOR @@ -410,6 +422,7 @@ OPTIMIZER/EXECUTOR evaluated only once or once per query * Change FIXED_CHAR_SEL to 0.20 from 0.04 to give better selectivity (Bruce) * Make IN/NOT IN have similar performance to EXISTS/NOT EXISTS [exists] +* Missing optimizer selectivities for date, r-tree, etc. [optimizer] MISCELLANEOUS @@ -420,7 +433,6 @@ MISCELLANEOUS * Use mmap() rather than SYSV shared memory or to write WAL files (?) [mmap] * -Allow GUC configuration of maximum number of open files (Tom) * -Improve statistics storage in pg_class [performance] (Tom) -* Allow logging of query durations * -Read pg_hba.conf only on postmaster startup or SIGHUP (Bruce) @@ -438,7 +450,6 @@ SOURCE CODE * HOLDER/HOLDERTAB rename to PROCLOCK/PROCLOCKTAG (Bruce) * Remove LockMethodTable.prio field, not used (Bruce) * Add version file format stamp to heap and other table types -* Make elog(LOG) in WAL its own output type, distinct from DEBUG * Rename some /contrib modules from pg* to pg_* * Move some things from /contrib into main tree * Remove warnings created by -Wcast-align @@ -455,6 +466,11 @@ SOURCE CODE * Improve access-permissions check on data directory in Cygwin (Tom) * Report failure to find readline or zlib at end of configure run * Add --port flag to regression tests +* Increase identifier length (NAMEDATALEN) if small performance hit +* Increase maximum number of function parameters if little wasted space +* Add documentation for perl, including mention of DBI/DBD perl location +* Add optional CRC checksum to heap and index pages +* Change representation of whole-tuple parameters to functions ---------------------------------------------------------------------------