====================================================
TODO list (FAQ) for PostgreSQL
====================================================
-last updated: Sat Sep 13 22:00:05 EDT 1997
+last updated: Mon Sep 29 22:45:43 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
+THE CHANGES FOR 6.2 APPEAR AT THE END OF THIS DOCUMENT
Developers who have claimed items are:
Bruce is Bruce Momjian<maillist@candle.pha.pa.us>
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
-SELECT a[1] FROM test fails, it needs test.a[1]
-INSERT INTO ... SELECT DISTINCT ... generates error on DISTINCT
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)
-SELECT SUM(2+2) FROM table dumps core
lo_unlink() crashes server
-UPDATE table SET table.value = 3 fails
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
-Allow INSERT INTO table SELECT id, count(*) FROM table2 GROUP BY id
+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
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 OUTER joins, left and right (Thomas)
make VIEWs updateable where possible
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.
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:
+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
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
-Make operators for float8/int4 arithmetic
+Add PAGER for psql's \dt and \d tablename
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?
-Use indexes in ORDER BY
-Profile engine in INSERT's and other operations
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
-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)
update pg_statistic table to remove operator column
remove time-travel in documentation(Bruce)
added features used in grammer but not in docs, like :: and CAST
update libpq++ manual page
-Add pg_password 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
-
+ CHANGES IN THE 6.2 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)
+Fix problems with pg_dump for inheritance, sequences, archive tables(Bruce)
+Fix compile errors on overflow due to shifts, unsigned, and bad prototypes
+ from Solaris(Diab Jerius)
+Fix bugs in geometric line arithmetic (bad intersection calculations)(Thomas)
+Check for geometric intersections at endpoints to avoid rounding ugliness(Thomas)
+Catch non-functional delete attempts(Vadim)
+Change time function names to be more consistent(Michael Reifenberg)
+Check for zero divides(Michael Reifenberg)
+Fix very old bug which made tuples changed/inserted by a commnd
+ visible to the command itself (so we had multiple update of
+ updated tuples, etc)(Vadim)
+Fix for SELECT null, 'fail' FROM pg_am (Patrick)
+SELECT NULL as EMPTY_FIELD now allowed(Patrick)
+Remove un-needed signal stuff from contrib/pginterface
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)
+Default genetic optimizer GEQO parameter is now 8(Bruce)
+Allow use parameters in target list having aggregates in functions(Vadim)
+Added JDBC driver as an interface(Adrian & Peter)
+pg_password utility
+Return number of tuples inserted/affected by INSERT/UPDATE/DELETE etc.(Vadim)
+Triggers implemented with CREATE TRIGGER (SQL3)(Vadim)
+SPI (Server Programming Interface) implemented to support triggers(Vadim)
+NOT NULL implemented (SQL92)(Robson Paniago de Miranda)
+Include reserved words for string handling, outer joins, and unions(Thomas)
+Implement extended comments ("/* ... */") using exclusive states(Thomas)
+Add "//" single-line comments(Bruce)
+Remove some restrictions on characters in operator names(Thomas)
+DEFAULT and CONSTRAINT for tables implemented (SQL92)(Vadim & Thomas)
+Add text concatenation operator and function (SQL92)(Thomas)
+Support WITH TIME ZONE syntax (SQL92)(Thomas)
+Support INTERVAL <unit> TO <unit> syntax (SQL92)(Thomas)
+Define types DOUBLE PRECISION, INTERVAL, CHARACTER,
+ and CHARACTER VARYING (SQL92)(Thomas)
+Define type FLOAT(p) and rudimentary DECIMAL(p,s), NUMERIC(p,s) (SQL92)(Thomas)
+Define EXTRACT(), POSITION(), SUBSTRING(), and TRIM() (SQL92)(Thomas)
+Define CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP (SQL92)(Thomas)
+Add syntax and warnings for UNION, HAVING, INNER and OUTER JOIN (SQL92)(Thomas)
+Add more reserved words, mostly for SQL92 compliance(Thomas)
+Allow hh:mm:ss time entry for timespan/reltime types(Thomas)
+Add center() routines for lseg, path, polygon(Thomas)
+Add distance() routines for circle-polygon, polygon-polygon(Thomas)
+Check explicitly for points and polygons contained within polygons
+ using an axis-crossing algorithm(Thomas)
+Add routine to convert circle-box(Thomas)
+Merge conflicting operators for different geometric data types(Thomas)
+Replace distance operator "<===>" with "<->"(Thomas)
+Replace "above" operator "!^" with ">^" and "below" operator "!|" with "<^"(Thomas)
+Add routines for text trimming on both ends, substring, and string position(Thomas)
+Added conversion routines circle(box) and poly(circle)(Thomas)
+Allow internal sorts to be stored in memory rather than in files(Bruce & Vadim)
+Allow functions and operators on internally-identical types to succeed(Bruce)
+Speed up backend startup after profiling analysis(Bruce)
+Inline frequently called functions for performance(Bruce)
+Reduce open() calls(Bruce)
+psql: Add PAGER for \h and \?,\C fix
+Fix for psql pager when no tty(Bruce)
+New entab utility(Bruce)
-Source tree changes
+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
+HPUX 10 patches (Vladimir Turin)
+Added SCO support, (Daniel Harris)
+mkLinux patches (Tatsuo Ishii)
+Change geometric box terminology from "length" to "width"(Thomas)
+Deprecate temporary unstored slope fields in geometric code(Thomas)
+Remove restart instructions from INSTALL(Bruce)
+Look in /usr/ucb first for install(Bruce)
+Fix c++ copy example code(Thomas)
+Add -o to psql manual page(Bruce)
+Prevent relname unallocated string length from being copied into database(Bruce)
+Cleanup for NAMEDATALEN use(Bruce)
+Fix pg_proc names over 15 chars in output(Bruce)
+Add strNcpy() function(Bruce)
+remove some (void) casts that are unnecessary(Bruce)
+new interfaces directory(Marc)
+Replace fopen() calls with calls to fd.c functions(Bruce)
+Make functions static where possible(Bruce)
+enclose unused functions in #ifdef NOT_USED(Bruce)
+Remove call to difftime() in timestamp support to fix SunOS(Bruce & Thomas)
+Changes for Digital Unix
+Portability fix for pg_dumpall(Bruce)
+Rename pg_attribute.attnvals to attdisbursion(Bruce)
+"intro/unix" manual page now "pgintro"(Bruce)
+"built-in" manual page now "pgbuiltin"(Bruce)
+"drop" manual page now "drop_table"(Bruce)
+Add "create_trigger", "drop_trigger" manual pages(Thomas)
+Add constraints regression test(Vadim & Thomas)
+Add comments syntax regression test(Thomas)
+Add PGINDENT and support program(Bruce)
+Massive commit to run PGINDENT on all *.c and *.h files(Bruce)
+Files moved to /src/tools directory(Bruce)