==================================================== TODO list (FAQ) for PostgreSQL ==================================================== last updated: Mon Jul 21 18:01:37 EDT 1997 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.1 and 6.1.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 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) remove -S (stable memory) option or fix memory manager Fix CLUSTER Fix all NULL features allow psql to print nulls meaningfully Fix compile and security of Kerberos/GSSAPI code (Daniel Kalchev?) Dropping a table twice causes corruption, drop/create not rollback-able COUNT on VIEW always returns zero (maybe because there is no oid for views?) CREATE VIEW requires super-user priviledge SELECT a[1] FROM test fails, it needs test.a[1] INSERT INTO ... SELECT DISTINCT ... generates error on DISTINCT pg_database.datdba is oid, should be int4 can lo_export()/lo_import() read/write anywhere, causing a security problem? Fix UPDATE key_table SET keyval=max(reftab.NUM)+1 WHERE tblname='reftab' SELECT COUNT(*) FROM TAB1, TAB2 fails 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 Make timestamp type recognize DateStyle(Tom) ENHANCEMENTS ------------ Add full ANSI SQL capabilities (Stefan) add subselects, possibility using temporary SQL functions Implement HAVING clause Implement EXISTS qualifier column constraints (using rules), PRIMARY KEY during table creation add DEFAULT, RESTRAINT, and CHECK capabilities report "Not implemented" if valid syntax is supplied add NOT NULL to CREATE statement add OUTER joins, left and right make VIEWs updateable where possible add UNIONS, INTERSECTS, SUBTRACTS add temporary tables add assertions add domains add sql3 recursive unions add the concept of dataspaces allow conversion type casts on SELECT target fields 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 Replace table-level locking with row or page-level locking(Vadim) 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 Incorporate the PERL PG95 interface library into source tree(Edmund) 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 datbases, 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 pg_dumpall preserve table ownership, not just database ownership 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 PERFORMANCE ----------- Optimizing disjunctive queries Fix bushy-plans (Martin) Other optimizer bugs Is fsync use optimized? Multi-representational types, a la Illustra. For example, have a text type that is stored in-tuple when less than 8K and in large objects, when greater than 8K. Use indexes in ORDER BY Profile engine in INSERT's and other operations Cache most recent query plan(s?) Allow compression of log and meta data Allow LIKE/wildcard matches to use indexes if the wildcard character is not first Add FILLFACTOR to index creation Allow indexes to be used with OR clauses(Vadim) Change pg_attribute.attnvals name to attdispursion and change type float4 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 add DECLARE manual page update libpq++ manual page PORTABILITY ----------- --------------------------------------------------------------------------- CHANGES IN THE 6.1.1 RELEASE Changes in this release ----------------------- fix for SET with options (Thomas) allow pg_dump/pg_dumpall to preserve ownership of all tables/objects(Bruce) new psql \connect option allows changing usernames without chaning databases fix for initdb --debug option(Yoshihiko Ichikawa) lextest cleanup(Bruce) hash fixes(Vadim) fix date/time month boundary arithmetic(Thomas) fix timezone daylight handling for some ports(Thomas, Bruce, Tatsuo) timestamp overhauled to use standard functions(Thomas) other code cleanup in date/time routines(Thomas) psql's \d now case-insensitive(Bruce) psql's backslash commands can now have trailing semicolon(Bruce) fix memory leak in psql when using \g(Bruce) major fix for endian handling of communication to server(Thomas, Tatsuo) Fix for Solaris assembler and include files(Yoshihiko Ichikawa) allow underscores in usernames(Bruce) pg_dumpall now returns proper status, portability fix(Bruce) --------------------------------------------------------------------------- CHANGES IN THE 6.1 RELEASE Bug Fixes --------- packet length checking in library routines lock manager priority patch check for under/over flow of float8(Bruce) multi-table join fix(Vadim) SIGPIPE crash fix(Darren) large object fixes(Sven) allow btree indexes to handle NULLs(Vadim) timezone fixes(D'Arcy) select SUM(x) can return NULL on no rows(Thomas) internal optimizer, executor bug fixes(Vadim) fix problem where inner loop in < or <= has no rows(Vadim) prevent re-commuting join index clauses(Vadim) fix join clauses for multiple tables(Vadim) fix hash, hashjoin for arrays(Vadim) fix btree for abstime type(Vadim) large object fixes(Raymond) fix buffer leak in hash indices (Vadim) fix rtree for use in inner scan (Vadim) fix gist for use in inner scan, cleanups (Vadim, Andrea) avoid unnecessary local buffers allocation (Vadim, Massimo) fix local buffers leak in transaction aborts (Vadim) fix file manager memmory leaks, cleanups (Vadim, Massimo) fix storage manager memmory leaks (Vadim) fix btree duplicates handling (Vadim) fix deleted tuples re-incarnation caused by vacuum (Vadim) fix SELECT varchar()/char() INTO TABLE made zero-length fields(Bruce) many psql, pg_dump, and libpq memory leaks fixed using Purify (Igor) SELECT on two tables where zero or one table in WHERE and target clause returns no rows(Vadim) Enhancements ------------ attribute optimization statistics(Bruce) much faster new btree bulk load code(Paul) BTREE UNIQUE added to bulk load code(Vadim) new lock debug code(Massimo) massive changes to libpg++(Leo) new GEQO optimizer speeds table multi-table optimization(Martin) new WARN message for non-unique insert into unique key(Marc) update x=-3, no spaces, now valid(Bruce) remove case-sensitive identifier handling(Bruce,Thomas,Dan) debug backend now pretty-prints tree(Darren) new Oracle character functions(Edmund) new plaintext password functions(Dan) no such class or insufficient privilege changed to distinct messages(Dan) new ANSI timestamp function(Dan) new ANSI Time and Date types (Thomas) move large chunks of data in backend(Martin) multi-column btree indexes(Vadim) new SET var TO value command(Martin) update transaction status on reads(Dan) new locale settings for character types(Oleg) new SEQUENCE serial number generator(Vadim) GROUP BY function now possible(Vadim) re-organize regression test(Thomas,Marc) new optimizer operation weights(Vadim) new psql \z grant/permit option(Marc) new MONEY data type(D'Arcy,Thomas) tcp socket communication speed improved(Vadim) new VACUUM option for attribute statistics, and for certain columns (Vadim) many geometric type improvements(Thomas,Keith) additional regression tests(Thomas) new datestyle variable(Thomas,Vadim,Martin) more comparison operators for sorting types(Thomas) new conversion functions(Thomas) new more compact btree format(Vadim) allow pg_dumpall to preserve database ownership(Bruce) new SET GEQO=# and R_PLANS variable(Vadim) old (!GEQO) optimizer can use right-sided plans (Vadim) typechecking improvement in SQL parser(Bruce) new SET, SHOW, RESET commands(Thomas,Vadim) new \connect database USER option new destroydb -i option (Igor) new \dt and \di psql commands (Darren) SELECT "\n" now escapes newline (A. Duursma) new geometry conversion functions from old format (Thomas) Improve optimizer plan choice(Vadim) Source tree changes ------------------- new configuration script(Marc) readline configuration option added(Marc) OS-specific configuration options removed(Marc) new OS-specific template files(Marc) no more need to edit Makefile.global(Marc) re-arrange include files(Marc) nextstep patches (Gregor Hoffleit) removed WIN32-specific code(Bruce) removed postmaster -e option, now only postgres -e option (Bruce) merge duplicate library code in front/backends(Martin) now works with eBones, international Kerberos(Jun) more shared library support c++ include file cleanup(Bruce) warn about buggy flex(Bruce) DG-UX, Ultrix, Irix, AIX portability fixes