TODO list for PostgreSQL ======================== Last updated: Fri Dec 18 00:15:58 EST 1998 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 CHANGES FOR 6.4.1 APPEAR AT THE END OF THIS DOCUMENT A dash(-) marks changes to be in the next release. Developers who have claimed items are: ------------------------------------- * Billy is Billy G. Allie * Brook is Brook Milligan * Bruce is Bruce Momjian * Bryan is Bryan Henderson * D'Arcy is D'Arcy J.M. Cain * Dan is Dan McGuirk * Darren is Darren King * David is David Hartwig * Edmund is Edmund Mergl * Goran is Goran Thyni * Henry is Henry B. Hotz * Jan is Jan Wieck * Jun is Jun Kuwamura * Maarten is Maarten Boekhold * Marc is Marc Fournier * Martin is Martin S. Utesch * Massimo Dal Zotto * Michael is Michael Meskes * Oleg is Oleg Bartunov * Paul is Paul M. Aoki * Peter is Peter T Mount * Phil is Phil Thompson * Ryan is Ryan Kirkpatrick * Soo-Ho Ok * Stefan Simkovics * Sven is Sven Verdoolaege * Tatsuo is Tatsuo Ishii * Tom is Tom Lane * Thomas is Thomas Lockhart * TomH is Tom I Helbekkmo * Vadim is "Vadim B. Mikheev" RELIABILITY ----------- * Overhaul mdmgr/smgr to fix double unlinking and double opens, cleanup * Overhaul bufmgr/lockmgr/transaction manager * Remove EXTEND? * 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 {} * GROUP BY in INSERT INTO table SELECT * FROM table2 fails * Prevent auto-table reference, like SELECT table.col WHERE col = 3 (?) * SELECT * FROM table WHERE int4_column = '1' fails * SELECT a[1] FROM test fails, it needs test.a[1] * UPDATE table SET table.value = 3 fails * User who can create databases can modify pg_database table * optimizer memory exhaustion with many OR's * elog() does not free all its memory(Jan) * views on subselects fail * disallow inherited columns with the same name as new columns * recover or force failure when disk space is exhausted * default char() value not to full length crashes server on some OS's * allow UPDATE using aggregate to affect all rows, not just one * computations in views fail: create view test as select usesysid * usesysid from pg_shadow; * views containing aggregates sometimes fail(Jan) * ALTER TABLE ADD COLUMN does not honor DEFAULT, add CONSTRAINT * SELECT DISTINCT i FROM dtest ORDER BY j generates strange output * fix memory leak in aborted transactions * array index references without table name cause problems * aggregates on array indexes crash backend * subqueries containing HAVING return incorrect results * DEFAULT handles single quotes in value by requiring too many quotes * make CURSOR valid even after you hit end of cursor * views with spaces in view name fail when referenced * plpgsql does not handle quoted mixed-case identifiers * do not allow bpchar column creation without length ENHANCEMENTS ------------ * Replace table-level locking with row or page-level locking(Vadim) * Transaction log, so re-do log can be on a separate disk * Allow transaction commits with rollback with no-fsync performance * More access control over who can create tables and access the database * Add full ANSI SQL capabilities * add OUTER joins, left and right (Thomas) * add INTERSECTS, SUBTRACTS(Stephan) * add temporary tables * add sql3 recursive unions * add the concept of dataspaces * add DECIMAL, NUMERIC, DOUBLE PRECISION, BIT, BIT VARYING * NCHAR (as distinguished from ordinary varchar), * DOMAIN capability * Allow compression of large fields or a compressed field type * Fix the rules system(Jan,Soo-Ho) * add CONSTRAINT * Full set of text operations and functions * word searches, concat,max() on text, char * Large objects * Fix large object mapping scheme, own reltype(Peter) * Allow large text type to use large objects(Peter) * not to stuff everything as files in a single directory * Fix large object memory leaks * delete orphaned large objects * Better interface for adding to pg_group * Make MONEY/DECIMAL have a defined precision * Fix tables >2G, or report error when 2G size reached (fix lseek()/off_t, mdextend()/RELSEG_SIZE) * Add REGEX internationalization * allow row re-use without vacuum, maybe?(Vadim) * Add word index for text fields, maybe with trigrams, i.e.: * ' (cat | dog) & ! fox ' meaning text has cat aor dog, but not fox * Populate backend status area and write program to dump status data * Add ALTER TABLE DROP/ALTER COLUMN feature * Allow INSERT INTO ... SELECT to convert column types * Add syslog functionality(Marc) * Add STDDEV/VARIANCE() function for standard deviation computation/variance * add UNIQUE capability to non-btree indexes * 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 * Restore unused oid's on backend exit if no one else has gotten oids * remove non-standard types from the system, and make them loadable * have UPDATE/DELETE clean out indexes * allow WHERE restriction on ctid * allow pg_descriptions when creating types, tables, columns, and functions * Fix compile and security of Kerberos/GSSAPI code * Allow psql to print nulls as distinct from ""(?) * Allow variable casts with BETWEEN 'today'::asbtime AND 'today'::abstime * Allow INSERT INTO ... SELECT ... FROM view to work * Make VACUUM on database not lock pg_class * Make VACUUM ANALYZE only use a readlock * Allow cursors to be DECLAREd/OPENed/CLOSEed outside transactions * Allow installation data block size and max tuple size configuration(Darren) * Allow views on a UNION * Allow DISTINCT on view * Allow views of aggregate columns * Allow variable block sizes(Darren) * System tables are now more update-able from SQL(Jan) * New pg_shadow file, pg_user is now a view of pg_shadow(Jan) * Allow flag to control COPY input/output of NULLs * Allow CLUSTER on all tables at once, and improve CLUSTER * Change all references of Postgres to PostgreSQL, including binary names * Add ELOG_TIMESTAMPS to elog()(?) * Change LOCK tablename to LOCK TABLE tablename(?) * Allow max tuple length to be changed(Darren) * Have psql with no database name not connect to username as default(?) * Allow subqueries in target list * Granting permissions to another user looses permissions for the owner * Allow queries across multiple databases * Add replication of distributed databases * Allow table destruction/alter to be rolled back * Add pg_attribute.atttypmod/Resdom->restypmod to PGresult structure * Generate error on CREATE OPERATOR of ~~, ~ and and ~* * Allow constraint NULL just as we honor NOT NULL * Add version number in startup banners for psql and postmaster * Restructure storing of GRANT permission information to allow +-= * allow psql \copy to allow delimiters * allow international error message support and add error codes * allow usernames with dashes(GRANT fails) * add a function to return the last inserted oid, for use in psql scripts * allow creation of functional indexes to use default types * put sort files, large objects in their on directory * CREATE VIEW myview (name) AS SELECT lname FROM wages fails * do autocommit so always in a transaction block * add SIMILAR TO to allow character classes, 'pg_[a-c]%' * multi-verion concurrency control(Vadim) * improve reporting of syntax errors by showing location of error in query * allow chaining of pages to allow >8k tuples * no min/max for oid type * remove un-needed conversion functions * redesign the function call interface to handle NULLs better(Jan) * permissions on indexes - prevent them? * allow multiple generic operators in expressions without the use of parentheses * document/trigger/rule so changes to pg_shadow create pg_pwd * improve group handling * generate postmaster pid file and remove flock/fcntl lock code * improve PRIMARY KEY handling * add ability to specifiy location of lock/socket files * psql \d on index with char()/varchar() fields shows improper length * disallow LOCK outside a transaction, change message to LOCK instead of DELETE * Fix roundoff problems in "cash" datatype * fix any sprintf() overruns * add portable vsnprintf() * auto-destroy sequence on SERIAL removal * CREATE TABLE inside aborted transaction causes stray table file * allow user to define char1 column PERFORMANCE ----------- * Use indexes in ORDER BY for restrictive data sets, min(), max() * Allow LIMIT ability on single-table queries that have no ORDER BY or a matching index * Pull requested data directly from indexes, bypassing heap data * Prevent psort() usage when query already using index matching ORDER BY * Optimizing disjunctive queries * Fix bushy-plans * Prevent fsync in SELECT-only queries * 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 * update pg_statistic table to remove operator column * make index creation use psort code, because it is now faster(Vadim) * remove fork()/exec() of backend and make it just fork() * Add base table name to \d index * Allow char() not to use variable-sized header to reduce disk size * Do async I/O to do better read-ahead of data * Fix optmizer problem with self-table joins * Fix memory exhaustion when using many OR's * Use spin locks only on multi-CPU systems, yield CPU instead * Get faster regex() code from Henry Spencer when it is available * use mmap() rather than SYSV shared memory(?) * use index to restrict rows returned by multi-key index when used with non-consecutive keys or OR clauses, so fewer heap accesses * use index with constants on functions DOCUMENTATION ------------- * Update usermanual source(many) * added features used in grammer but not in docs, like :: and CAST * Add keyword list to documentation, already in /tools * Add 'man pgsql' to show all manual page names * Add use of 'const' for varibles in source tree ============================================================================= CHANGES IN THE 6.4.1 RELEASE ---------------------------- Add pg_dump -N flag to force double quotes around identifiers. This is the default Fix for NOT in where clause causing crash(Bruce) EXPLAIN VERBOSE coredump fix(Vadim) Fix shared-library problems on Linux Fix test for table existance to allow mixed-case and whitespace in the table name Fix a couple of pg_dump bugs Fix for creating tables with constraints when table name is mixed-case(Billy) Configure matches template/.similar entries better(Tom) Change builtin function names from SPI_* to spi_* OR WHERE clause fix(Vadim) Fixes for mixed-case table names(Billy) contrib/linux/postgres.init.csh/sh fix libpq memory overrun fix SunOS fixes(Tom) Change exp() behavior to generate error on underflow pg_dump fixes for memory leak, inheritance constraints, layout change update pgaccess to 0.93 Fix prototype for 64-bit platforms Multi-byte fixes(Tatsuo) New ecpg man page Fix memory overruns(Tatsuo) Fix for lo_import() crash(Bruce) Better search for install program(Tom) Timezone fixes(Tom) HPUX fixes(Tom) Use implicit type coersion for matching DEFAULT values Add routines to help with single-byte (internal) character type(Thomas) Compilation of libpq for Win32 fixes(Magnus) Upgrade to PyGreSQL 2.2(D'Arcy)