X-Git-Url: https://granicus.if.org/sourcecode?a=blobdiff_plain;f=doc%2Fsrc%2Fsgml%2Frelease.sgml;h=8a21874a2dd7f77d7b9e33d5fe7f5b81d18537c0;hb=73d8bbc2aca04c6274a5e3b53cee2acf43e0fdf1;hp=5594a68f12ede0e46cabf7c5672c1f5be2a34791;hpb=4fa0fd22a313bb3651f9a677e0a0ea4cd6502cb6;p=postgresql diff --git a/doc/src/sgml/release.sgml b/doc/src/sgml/release.sgml index 5594a68f12..8a21874a2d 100644 --- a/doc/src/sgml/release.sgml +++ b/doc/src/sgml/release.sgml @@ -1,6 +1,414 @@ + + Release Notes + + Release 7.0 + + + This release shows the continued growth of PostgreSQL. There are more + changes in 7.0 than in any previous release. Don't be concerned this is + a dot-zero release. We do our best to put out only solid releases, and + this one is no exception. + + + + Major changes in this release: + + + + + Foreign Keys + + + + Foreign keys are now implemented, with the exception of PARTIAL MATCH + foreign keys. Many users have been asking for this feature, and we are + pleased to offer it. + + + + + + + Optimizer Overhaul + + + + Continuing on work started a year ago, the optimizer has been + overhauled, allowing improved query execution and better performance + with less memory usage. + + + + + + + Updated psql + + + + psql, our interactive terminal monitor, has been + updated with a variety of new features. See the psql manual page for details. + + + + + + + Join Syntax + + + + SQL92 join syntax is now supported, though only as INNER JOINs + for this release. JOIN, NATURAL JOIN, JOIN/USING, JOIN/ON are + available, as are column correlation names. + + + + + + + + Upcoming Features + + + + In 7.1, we plan to have outer joins, storage for very long rows, and a + write-ahead logging system. + + + + + + + + Migration to v7.0 + + + A dump/restore using pg_dump + is required for those wishing to migrate data from any + previous release of Postgres. + For those upgrading from 6.5.*, you can use + pg_upgrade to upgrade to this + release. + + + + + Detailed Change List + + +Bug Fixes +--------- +Prevent function calls with more than maximum number of arguments (Tom) +Improve CASE construct (Tom) +Fix SELECT coalesce(f1,0) FROM int4_tbl GROUP BY f1 (Tom) +Fix SELECT sentence.words[0] FROM sentence GROUP BY sentence.words[0] (Tom) +Fix GROUP BY scan bug (Tom) +Improvements in SQL grammar processing (Tom) +Fix for views involved in INSERT ... SELECT ... (Tom) +Fix for SELECT a/2, a/2 FROM test_missing_target GROUP BY a/2 (Tom) +Fix for subselects in INSERT ... SELECT (Tom) +Prevent INSERT ... SELECT ... ORDER BY (Tom) +Fixes for relations greater than 2GB, including vacuum +Improve communication of system table changes to other running backends (Tom) +Improve communication of user table modifications to other running backends (Tom) +Fix handling of temp tables in complex situations (Bruce, Tom) +Allow table locking when tables opened, improving concurrent reliability (Tom) +Properly quote sequence names in pg_dump (Ross J. Reedstrom) +Prevent DESTROY DATABASE while others accessing +Prevent any rows from being returned by GROUP BY if no rows processed (Tom) +Fix SELECT COUNT(1) FROM table WHERE ...' if no rows matching WHERE (Tom) +Fix pg_upgrade so it works for MVCC(Tom) +Fix for SELECT ... WHERE x IN (SELECT ... HAVING SUM(x) > 1) (Tom) +Fix for "f1 datetime DEFAULT 'now'" (Tom) +Fix problems with CURRENT_DATE used in DEFAULT (Tom) +Allow comment-only lines, and ;;; lines too. (Tom) +Improve recovery after failed disk writes, disk full (Hiroshi) +Fix cases where table is mentioned in FROM but not joined (Tom) +Allow HAVING clause without aggregate functions (Tom) +Fix for "--" comment and no trailing newline, as seen in Perl +Improve pg_dump failure error reports (Bruce) +Allow sorts and hashes to exceed 2GB file sizes (Tom) +Fix for pg_dump dumping of inherited rules (Tom) +Fix for NULL handling comparisons (Tom) +Fix inconsistent state caused by failed CREATE/DROP commands (Hiroshi) +Fix for dbname with dash +Prevent DROP INDEX from interfering with other backends (Tom) +Fix file descriptor leak in verify_password() +Fix for "Unable to identify an operator =$" problem +Fix ODBC so no segfault if CommLog and Debug enabled (Dirk Niggemann) +Fix for recursive exit call (Massimo) +Fix for extra-long timezones (Jeroen van Vianen) +Make pg_dump preserve primary key information (Peter E) +Prevent databases with single quotes (Peter E) +Prevent DROP DATABASE inside transaction (Peter E) +ecpg memory leak fixes (Stephen Birch) +Fix for SELECT null::text, SELECT int4fac(null) and SELECT 2 + (null) (Tom) +Y2K timestamp fix (Massimo) +Fix for VACUUM 'HEAP_MOVED_IN was not expected' errors (Tom) +Fix for views with tables/columns containing spaces (Tom) +Prevent permissions on indexes (Peter E) +Fix for spinlock stuck problem when error is generated (Hiroshi) +Fix ipcclean on Linux +Fix handling of NULL constraint conditions (Tom) +Fix memory leak in odbc driver (Nick Gorham) +Fix for permission check on UNION tables (Tom) +Fix to allow SELECT 'a' LIKE 'a' (Tom) +Fix for SELECT 1 + NULL (Tom) +Fixes to CHAR +Fix log() on numeric type (Tom) +Deprecate ':' and ';' operators + +Enhancements +------------ +New CLI interface include file sqlcli.h, based on SQL3/SQL98 +Remove all limits on query length, row length limit still exists (Tom) +Update jdbc protocol to 2.0 (Jens Glaser) +Add TRUNCATE command to quickly truncate relation (Mike Mascari) +Fix to give super user and createdb user proper update catalog rights (Peter E) +Allow ecpg bool variables to have NULL values (Christof) +Issue ecpg error if NULL value is returned to variable with no NULL +indicator (Christof) +Allow ^C to cancel COPY command (Massimo) +Add SET FSYNC and SHOW PG_OPTIONS commands(Massimo) +Improve CREATE FUNCTION to allow type conversion (Bernie Frankpitt) +Add CmdTuples() to libpq++(Vince) +New CREATE CONSTRAINT TRIGGER and SET CONSTRAINTS commands(Jan) +Allow CREATE FUNCTION/WITH clause to be used for all language types +configure --enable-debug adds -g (Peter E) +configure --disable-debug removes -g (Peter E) +Allow more complex default expressions (Tom) +First real FOREIGN KEY constraint trigger functionality (Jan) +Add FOREIGN KEY ... MATCH FULL ... ON DELETE CASCADE (Jan) +Add FOREIGN KEY ... MATCH <unspecified> referential actions (Don Baccus) +Allow WHERE restriction on ctid (physical heap location) (Hiroshi) +Move pginterface from contrib to interface directory, rename to pgeasy (Bruce) +Add DEC and SESSION_USER as reserved words (Thomas) +Require SELECT DISTINCT target list to have all ORDER BY columns (Tom) +Add Oracle's COMMENT ON command (Mike Mascari) +libpq's PQsetNoticeProcessor function now returns previous hook(Peter E) +Prevent PQsetNoticeProcessor from being set to NULL (Peter E) +Make USING in COPY optional (Bruce) +Allow subselects in the target list (Tom) +Allow subselects on the left side of comparison operators (Tom) +New parallel regression test (Jan) +Change backend-side COPY to write files with permissions 644 not 666 (Tom) +Force permissions on PGDATA directory to be secure, even if it exists (Tom) +Added psql LASTOID variable to return last inserted oid (Peter E) +Allow concurrent vacuum and remove pg_vlock vacuum lock file (Tom) +Add permissions check so only Postgres superuser or table owner can +vacuum (Peter E) +New libpq functions to allow asynchronous connections: PQconnectStart(), + PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(), + PQsetenvPoll(), PQsetenvAbort (Ewan Mellor) +New libpq PQsetenv() function (Ewan Mellor) +create/alter user extension (Peter E) +New postmaster.pid and postmaster.opts under $PGDATA (Tatsuo) +New scripts for create/drop user/db (Peter E) +Major psql overhaul(Peter E) +Add const to libpq interface(Peter E) +New libpq function PQoidValue (Peter E) +Show specific non-aggregate causing problem with GROUP BY (Tom) +Make changes to pg_shadow recreate pg_pwd file (Peter E) +Add aggregate(DISTINCT ...) (Tom) +Allow flag to control COPY input/output of NULLs (Peter E) +Make postgres user have a password by default (Peter E) +Add CREATE/ALTER/DROP GROUP (Peter E) +All administration scripts now support --long options (Peter E, Karel) +Vacuumdb script now supports --all option (Peter E) +ecpg new portable FETCH syntax +Add ecpg EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF + and EXEC SQL ENDIF directives +Add pg_ctl script to control backend startup (Tatsuo) +Add postmaster.opts.default file to store startup flags (Tatsuo) +Allow --with-mb=SQL_ASCII +Increase maximum number of index keys to 16 (Bruce) +Increase maximum number of function arguments to 16 (Bruce) +Allow configuration of maximum number of index keys and arguments (Bruce) +Allow unprivileged users to change their passwords (Peter E) +Password authentication enabled; required for new users (Peter E) +Disallow dropping a user who owns a database (Peter E) +Change initdb option --with-mb to --enable-multibyte +Add option for initdb to prompts for superuser password (Peter E) +Allow complex type casts like col::numeric(9,2) and col::int2::float8 (Tom) +Updated user interfaces on initdb, initlocation, pg_dump, ipcclean (Peter E) +New pg_char_to_encoding() and pg_encoding_to_char() functions (Tatsuo) +Libpq non-blocking mode (Alfred Perlstein) +Improve conversion of types in casts that don't specify a length +New plperl internal programming language (Mark Hollomon) +Allow COPY IN to read file that do not end with a newline (Tom) +Indicate when long identifiers are truncated (Tom) +Allow aggregates to use type equivalency (Peter E) +Add Oracle's to_char(), to_date(), to_datetime(), to_timestamp(), to_number() + conversion functions (Karel Zak <zakkr@zf.jcu.cz>) +Add SELECT DISTINCT ON (expr [, expr ...]) targetlist ... (Tom) +Check to be sure ORDER BY is compatible with the DISTINCT operation (Tom) +Add NUMERIC and int8 types to ODBC +Improve EXPLAIN results for Append, Group, Agg, Unique (Tom) +Add ALTER TABLE ... ADD FOREIGN KEY (Stephan Szabo) +Allow SELECT .. FOR UPDATE in PL/pgSQL (Hiroshi) +Enable backward sequential scan even after reaching EOF (Hiroshi) +Add btree indexing of boolean values, >= and <= (Don Baccus) +Print current line number when COPY FROM fails (Massimo) +Recognize special case of POSIX time zone: "GMT+8" and "GMT-8" (Thomas) +Add DEC as synonym for "DECIMAL (Thomas) +Add SESSION_USER as SQL92 keyword, same as CURRENT_USER (Thomas) +Implement column aliases (aka correlation names) and join syntax (Thomas) +Allow queries like SELECT a FROM t1 tx (a) (Thomas) +Allow queries like SELECT * FROM t1 NATURAL JOIN t2 (Thomas) +Make INTERVAL reserved word allowed as a column identifier (Thomas) +Implement REINDEX command (Hiroshi) +Accept ALL in aggregate function SUM(ALL col) (Tom) +Prevent GROUP BY from using column aliases (Tom) +New psql \encoding option (Tatsuo) +Allow PQrequestCancel() to terminate when in waiting-for-lock state (Hiroshi) +Allow negation of a negative number in all cases +Add ecpg descriptors (Christof, Michael) +Allow CREATE VIEW v AS SELECT f1::char(8) FROM tbl +Allow casts with length, like foo::char(8) +New libpq functions PQsetClientEncoding(), PQclientEncoding() (Tatsuo) +Add support for SJIS user defined characters (Tatsuo) +Larger views/rules supported +Make libpq's PQconndefaults() thread-safe (Tom) +Disable // as comment to be ANSI conforming, should use -- (Tom) +Allow column aliases on views CREATE VIEW name (collist) +Fixes for views with subqueries (Tom) +Allow UPDATE table SET fld = (SELECT ...) (Tom) + +Types +----- +Many array fixes (Tom) +Allow bare column names to be subscripted as arrays (Tom) +Improve type casting of int and float constants (Tom) +Cleanups for int8 inputs, range checking, and type conversion (Tom) +Fix for SELECT timespan('21:11:26'::time) (Tom) +Fix for netmask('x.x.x.x/0') is 255.255.255.255 instead of 0.0.0.0 + (Oleg Sharoiko) +Add btree index on NUMERIC(Jan) +Perl fix for large objects containing NUL characters (Douglas Thomson) +ODBC fix for for large objects (free) +Fix indexing of cidr data type +Fix for Ethernet MAC addresses (macaddr type) comparisons +Fix for date/time types when overflows happened in computations (Tom) +Allow array on int8 (Peter E) +Fix for rounding/overflow of NUMERIC type, like NUMERIC(4,4) (Tom) +Allow NUMERIC arrays +Fix bugs in NUMERIC ceil() and floor() functions (Tom) +Make char_length()/octet_length including trailing blanks (Tom) +Made abstime/reltime use int4 instead of time_t (Peter E) +New lztext data type for compressed text fields +Revise code to handle coercion of int and float constants (Tom) +New C-routines to implement a BIT and BIT VARYING type in /contrib + (Adriaan Joubert) +NUMERIC now accepts scientific notation (Tom) +NUMERIC to int4 rounds (Tom) +Convert float4/8 to NUMERIC properly (Tom) +Allow type conversion with NUMERIC (Thomas) +Make ISO date style (2000-02-16 09:33) the default (Thomas) +Add NATIONAL CHAR [ VARYING ] +Allow NUMERIC round and trunc to accept negative scales (Tom) +New TIME WITH TIME ZONE type (Thomas) +Add MAX()/MIN() on time type (Thomas) +Add abs(), mod(), fac() for int8 (Thomas) +Add round(), sqrt(), cbrt(), pow() +Rename NUMERIC power() to pow() +Improved TRANSLATE() function +Allow X=-Y operators (Tom) +Add exp() and ln() as NUMERIC types +Allow SELECT float8(COUNT(*)) / (SELECT COUNT(*) FROM int4_tbl) FROM int4_tbl + GROUP BY f1; (Tom) + +Performance +----------- +Prevent exponential space consumption with many AND's and OR's (Tom) +Collect attribute selectivity values for system columns (Tom) +Reduce memory usage of aggregates (Tom) +Fix for LIKE optimization to use indexes with multi-byte encodings (Tom) +Fix r-tree index optimizer selectivity (Thomas) +Improve optimizer selectivity computations and functions (Tom) +Optimize btree searching for cases where many equal keys exist (Tom) +Enable fast LIKE index processing only if index present (Tom) +Re-use free space on index pages with duplicates (Tom) +Improve hash join processing (Tom) +Prevent descending sort if result is already sorted(Hiroshi) +Allow commuting of index scan query qualifications (Tom) +Prefer index scans in cases where ORDER BY/GROUP BY is required (Tom) +Allocate large memory requests in fix-sized chunks for performance (Tom) +Fix vacuum's performance by reducing memory allocation requests (Tom) +Implement constant-expression simplification (Bernard Frankpitt, Tom) +Allow more than first column to be used to determine start of index scan + (Hiroshi) +Prevent quadruple use of disk space when doing internal sorting (Tom) +Faster sorting by calling fewer functions (Tom) +Create system indexes to match all system caches (Bruce, Hiroshi) +Make system caches use system indexes(Bruce) +Make all system indexes unique(Bruce) +Improve pg_statistics management for VACUUM speed improvement (Tom) +Flush backend cache less frequently (Tom, Hiroshi) +COPY now reuses previous memory allocation, improving performance (Tom) +Improve optimization cost estimation (Tom) +Improve optimizer estimate of range queries x > lowbound AND x < highbound (Tom) +Use DNF instead of CNF where appropriate (Tom, Taral) +Further cleanup for OR-of-AND WHERE-clauses (Tom) +Make use of index in OR clauses (x = 1 AND y = 2) OR (x = 2 AND y = 4) (Tom) +Smarter optimizer computations for random index page access (Tom) +New SET variable to control optimizer costs (Tom) +Optimizer queries based on LIMIT, OFFSET, and EXISTS qualifications (Tom) +Reduce optimizer internal housekeeping of join paths for speedup (Tom) +Major subquery speedup (Tom) + +Source Tree Changes +------------------- +Fix for linux PPC compile +New generic expression-tree-walker subroutine (Tom) +Change form() to varargform() to prevent portability problems. +Improved range checking for large integers on Alphas +Clean up #include in /include directory (Bruce) +Add scripts for checking includes (Bruce) +Remove un-needed #include's from *.c files (Bruce) +Change #include's to use <> and "" as appropriate (Bruce) +Enable WIN32 compilation of libpq +Alpha spinlock fix from Uncle George +Overhaul of optimizer data structures (Tom) +Fix to cygipc library (Yutaka Tanida) +Allow pgsql to work on newer Cygwin snapshots(Dan) +New catalog version number (Tom) +Add Linux ARM. +Rename heap_replace to heap_update +Update for QNX (Dr. Andreas Kardos) +New platform-specific regression handling (Tom) +Rename oid8 -> oidvector and int28 -> int2vector (Bruce) +Included all yacc and lex files into the distribution (Peter E.) +Remove lextest, no longer needed (Peter E) +Fix for libpq and psql on Win32 (Magnus) +Internally change datetime and timespan into timestamp and interval (Thomas) +Fix for plpgsql on BSDI +Add SQL_ASCII test case to the regression test (Tatsuo) +configure --with-mb now deprecated (Tatsuo) +NT fixes +NetBSD fixes Johnny C. Lam +Fixes for Alpha compiles +New multibyte encodings + + + + + Release 6.5.3 @@ -413,7 +822,7 @@ Fix bug in pg_dump -z Memory overrun cleanups(Tatsuo) Fix for lo_import crash(Tatsuo) Adjust handling of data type names to suppress double quotes(Thomas) -Use type coersion for matching columns and DEFAULT(Thomas) +Use type coercion for matching columns and DEFAULT(Thomas) Fix deadlock so it only checks once after one second of sleep(Bruce) Fixes for aggregates and PL/pgsql(Hiroshi) Fix for subquery crash(Vadim) @@ -441,7 +850,7 @@ Fix for memory leak in executor with fjIsNull Fix for aggregate memory leaks(Erik Riedel) Allow username containing a dash GRANT permissions Cleanup of NULL in inet types -Clean up system table bugs(Tom) +Clean up system table bugs(Tom) Fix problems of PAGER and \? command(Masaaki Sakaida) Reduce default multi-segment file size limit to 1GB(Peter) Fix for dumping of CREATE OPERATOR(Tom) @@ -474,7 +883,7 @@ EXPLAIN all indices used(Tom) Implement CASE, COALESCE, NULLIF expression(Thomas) New pg_dump table output format(Constantin) Add string min()/max() functions(Thomas) -Extend new type coersion techniques to aggregates(Thomas) +Extend new type coercion techniques to aggregates(Thomas) New moddatetime contrib(Terry) Update to pgaccess 0.96(Constantin) Add routines for single-byte "char" type(Thomas) @@ -671,7 +1080,7 @@ 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(Thomas) +Use implicit type coercion for matching DEFAULT values(Thomas) 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) @@ -733,7 +1142,7 @@ asynchronous messages and interrupts thanks to Tom Lane. -The parser will now perform automatic type coersion to match arguments +The parser will now perform automatic type coercion to match arguments to available operators and functions, and to match columns and expressions with target columns. This uses a generic mechanism which supports the type extensibility features of Postgres. @@ -2870,7 +3279,7 @@ In general, however, v6.3 is substantially faster than previous releases (thanks