From b508136d81a424ffa4a766059e91118bac16c446 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Thu, 23 Mar 2000 06:30:58 +0000 Subject: [PATCH] Update HISTORY file for 7.0. --- HISTORY | 153 +++++++------- doc/FAQ | 160 +++++++++++---- doc/src/sgml/biblio.sgml | 10 +- doc/src/sgml/release.sgml | 405 +++++++++++++++++++++++++++++++++++++- src/tools/RELEASE_CHANGES | 2 +- src/tools/pgcvslog | 2 +- 6 files changed, 610 insertions(+), 122 deletions(-) diff --git a/HISTORY b/HISTORY index 90901d5ab3..f24d163751 100644 --- a/HISTORY +++ b/HISTORY @@ -1,56 +1,41 @@ - -Chapter 0. Release Notes - - Table of Contents - Release 7.0 - Release 6.5.3 - Release 6.5.2 - Release 6.5.1 - Release 6.5 - Release 6.4.2 - Release 6.4.1 - Release 6.4 - Release 6.3.2 - Release 6.3.1 - Release 6.3 - Release 6.2.1 - Release 6.2 - Release 6.1.1 - Release 6.1 - Release v6.0 - Release v1.09 - Release v1.02 - Release v1.01 - Release v1.0 - Postgres95 Beta 0.03 - Postgres95 Beta 0.02 - Postgres95 Beta 0.01 - Timing Results - + ------------------------------------------------------------------------ + Release Notes + ------------------------------------------------------------------------ + Release 7.0 ------------ - -This release shows the continued growth of PostgreSQL. There are more -updated items in 7.0 than in any previous release. Don't be concerned -this is a dot-zero release. PostgreSQL does its best to put -out only solid releases, and this one is no exception. + 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. + + 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 -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 finally offer it. - -Optimizer Overhaul: Continuing on work started a year ago, the -optimizer has been overhauled in many significant ways, allowing better -query execution processing with faster performance and 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 the details. - -Upcoming Features: In 7.1, we plan to have outer joins, storage for very long -rows, and a write-ahead logging system. + A dump/restore using pg_dump is required for those wishing to migrate + data from any previous release. For those upgrading from 6.5.*, you + can use pg_upgrade to upgrade to this release. + +Detailed Change List Bug Fixes --------- @@ -58,7 +43,6 @@ Prevent function calls with more than maximum number of arguments (Tom) Many fixes for CASE (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) -Allow utility statements in plpgsql (Tom) Fix GROUP BY scan bug (Tom) Improvements in SQL grammar processing (Tom) Fix for views involved in INSERT ... SELECT ... (Tom) @@ -67,9 +51,9 @@ 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) +Improve communication of user table modifications to other running backends (To +m) Fix handling of temp tables in complex situations (Bruce, Tom) -Disallow DROP TABLE/DROP INDEX inside a transaction block 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 @@ -110,6 +94,12 @@ 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) +Remove ':' and ';' operators Enhancements ------------ @@ -123,8 +113,8 @@ 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 specification - (Bernie Frankpitt) +Improve CREATE FUNCTION to allow type conversion specification + (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 @@ -133,12 +123,12 @@ 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 referential actions (Don Baccus) +Add FOREIGN KEY ... MATCH 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 Require SELECT DISTINCT target list to have all ORDER BY columns (Tom) -Add Oracle's COMMENT ON command (Mike Mascari ) + conversion functions (Karel Zak 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 @@ -222,9 +212,15 @@ 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 -- +Allow column aliases on views CREATE VIEW name (collist) +Fixes for views with subqueries (Tom) +Allow UPDATE table SET fld = (SELECT ...) (Tom) Types ----- @@ -233,10 +229,10 @@ 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) +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) +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 @@ -249,13 +245,25 @@ 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) +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 ----------- @@ -286,7 +294,8 @@ 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) +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) @@ -294,6 +303,7 @@ 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 ------------------- @@ -304,9 +314,10 @@ Improved range checking for large integers on Alpha's 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) +Change #include's to use +and "" as appropriate (Bruce) Enable WIN32 compilation of libpq -Alpha spinlock fix from Uncle George +Alpha spinlock fix from Uncle George voicenet.com> Overhaul of optimizer data structures (Tom) Fix to cygipc library (Yutaka Tanida) Allow pgsql to work on newer Cygwin snapshots(Dan) @@ -323,6 +334,10 @@ 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 stat.cmu.edu> +Fixes for Alpha compiles +New multibyte encodings diff --git a/doc/FAQ b/doc/FAQ index b0f6404b43..221ffaa322 100644 --- a/doc/FAQ +++ b/doc/FAQ @@ -1,9 +1,9 @@ Frequently Asked Questions (FAQ) for PostgreSQL - Last updated: Tue Sep 28 01:06:15 EDT 1999 + Last updated: Tue Mar 21 16:09:11 EST 2000 - Current maintainer: Bruce Momjian (maillist@candle.pha.pa.us) + Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us) The most recent version of this document can be viewed at the postgreSQL Web site, http://www.PostgreSQL.org. @@ -87,7 +87,10 @@ regexp searching? 4.14) In a query, how do I detect if a field is NULL? 4.15) What is the difference between the various character types? - 4.16) How do I create a serial/auto-incrementing field? + 4.16.1) How do I create a serial/auto-incrementing field? + 4.16.2) How do I get the value of a serial insert? + 4.16.3) Wouldn't use of currval() and nextval() lead to a race + condition with other concurrent backend processes? 4.17) What is an oid? What is a tid? 4.18) What is the meaning of some of the terms used in PostgreSQL? 4.19) Why do I get the error "FATAL: palloc failure: memory @@ -96,6 +99,7 @@ 4.21) My large-object operations get invalid large obj descriptor. Why? 4.22) How do I create a column that will default to the current time? + 4.23) Why are my subqueries using IN so slow? Extending PostgreSQL @@ -144,7 +148,8 @@ PostgreSQL Data Base Management System - Copyright (c) 1994-6 Regents of the University of California + Portions copyright (c) 1996-2000, PostgreSQL, Inc Portions Copyright + (c) 1994-6 Regents of the University of California Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written @@ -198,8 +203,8 @@ Unix/NT porting library. See pgsql/doc/README.NT in the distribution. There is also a web page at - http://members.tripod.com/~kevlo/postgres/portNT.html. There is - another port using U/Win at http://surya.wipro.com/uwin/ported.html. + http://www.freebsd.org/~kevlo/postgres/portNT.html. There is another + port using U/Win at http://surya.wipro.com/uwin/ported.html. 1.5) Where can I get PostgreSQL? @@ -279,10 +284,14 @@ There is a nice tutorial at http://w3.one.net/~jhoffman/sqltut.htm and at - http://ourworld.compuserve.com/homepages/Graeme_Birchall/DB2_COOK.HTM. + http://ourworld.compuserve.com/homepages/Graeme_Birchall/HTM_COOK.HTM. + + Another one is "Teach Yourself SQL in 21 Days, Second Edition" at + http://members.tripod.com/er4ebus/sql/index.htm Many of our users like The Practical SQL Handbook, Bowman et al., - Addison Wesley. + Addison Wesley. Others like Lan Times Guide to SQL, Groff et al., + Osborne McGraw-Hill. 1.11) Is PostgreSQL Y2K compliant? @@ -295,7 +304,7 @@ subscribe to the pgsql-hackers and pgsql-patches mailing lists. Third, submit high-quality patches to pgsql-patches. - There are about a dozen people who have commit privileges to the + There are about a dozen people who have COMMIT privileges to the PostgreSQL CVS archive. All of them have submitted so many high-quality patches that it was a pain for the existing committers to keep up, and we had confidence that patches they committed were likely @@ -506,13 +515,13 @@ 3.10) How do I tune the database engine for better performance? - Certainly, indices can speed up queries. The explain command allows + Certainly, indices can speed up queries. The EXPLAIN command allows you to see how PostgreSQL is interpreting your query, and which indices are being used. - If you are doing a lot of inserts, consider doing them in a large - batch using the copy command. This is much faster than single - individual inserts. Second, statements not in a begin work/commit + If you are doing a lot of INSERTs, consider doing them in a large + batch using the COPY command. This is much faster than single + individual INSERTS. Second, statements not in a BEGIN WORK/COMMIT transaction block are considered to be in their own transaction. Consider performing several statements in a single transaction block. This reduces the transaction overhead. Also consider dropping and @@ -534,7 +543,7 @@ is unwise to make this value too large, or you may run out of memory when a query invokes several concurrent sorts. - You can also use the cluster command to group data in base tables to + You can also use the CLUSTER command to group data in base tables to match an index. See the cluster(l) manual page for more details. 3.11) What debugging features are available in PostgreSQL? @@ -607,7 +616,7 @@ 3.13) What are the pg_tempNNN.NN files in my database directory? They are temporary files generated by the query executor. For example, - if a sort needs to be done to satisfy an order by, and the sort + if a sort needs to be done to satisfy an ORDER BY, and the sort requires more space than the backend's -S parameter allows, then temp files are created to hold the extra data. @@ -648,16 +657,17 @@ 4.2) What is the exact difference between binary cursors and normal cursors? - See the declare manual page for a description. + See the DECLARE manual page for a description. - 4.3) How do I select only the first few rows of a query? + 4.3) How do I SELECT only the first few rows of a query? - See the fetch manual page, or use SELECT ... LIMIT.... + See the FETCH manual page, or use SELECT ... LIMIT.... - This only prevents all row results from being transferred to the - client. The entire query must be evaluated, even if you only want just - the first few rows. Consider a query that has an order by. There is no - way to return any rows until the entire query is evaluated and sorted. + The entire query may have to be evaluated, even if you only want the + first few rows. Consider a query that has an ORDER BY. If there is an + index that matches the ORDER BY, PostgreSQL may be able to evaluate + only the first few records requested, or the entire query may have to + be evaluated until the desired rows have been generated. 4.4) How do I get a list of tables, or other information I see in psql? @@ -669,7 +679,7 @@ 4.5) How do you remove a column from a table? - We do not support alter table drop column, but do this: + We do not support ALTER TABLE DROP COLUMN, but do this: SELECT ... -- select all columns but the one you want to remove INTO TABLE new_table FROM old_table; @@ -725,35 +735,36 @@ \? to see them. Also try the file pgsql/src/tutorial/syscat.source. It illustrates - many of the selects needed to get information from the database system + many of the SELECTs needed to get information from the database system tables. 4.9) My queries are slow or don't make use of the indexes. Why? PostgreSQL does not automatically maintain statistics. One has to make - an explicit vacuum call to update the statistics. After statistics are + an explicit VACUUM call to update the statistics. After statistics are updated, the optimizer knows how many rows in the table, and can better decide if it should use indices. Note that the optimizer does not use indices in cases when the table is small because a sequential scan would be faster. - For column-specific optimization statistics, use vacuum analyze. - Vacuum analyze is important for complex multi-join queries, so the + For column-specific optimization statistics, use VACUUM ANALYZE. + VACUUM ANALYZE is important for complex multi-join queries, so the optimizer can estimate the number of rows returned from each table, and choose the proper join order. The backend does not keep track of - column statistics on its own, so vacuum analyze must be run to collect + column statistics on its own, so VACUUM ANALYZE must be run to collect them periodically. - Indexes are not used for order by operations. + Indexes are not used for ORDER BY operations. When using wild-card operators such as LIKE or ~, indices can only be used if the beginning of the search is anchored to the start of the string. So, to use indices, LIKE searches can should not begin with %, - and ~(regular expression searches) should start with ^. + and ~(regular expression searches) should start with ^. If you have + locale enabled, indexes can't be used for wild-card searches. 4.10) How do I see how the query optimizer is evaluating my query? - See the explain manual page. + See the EXPLAIN manual page. 4.11) What is an R-tree index? @@ -816,14 +827,60 @@ BYTEA bytea variable-length array of bytes using them. Specifically, the penalty is for access to all columns after the first column of this type. - 4.16) How do I create a serial/auto-incrementing field? + 4.16.1) How do I create a serial/auto-incrementing field? - PostgreSQL supports a serial data type. It auto-creates a sequence and - index on the column. See the create_sequence manual page for more - information about sequences. You can also use each row's oid field as - a unique value. However, if you need to dump and reload the database, - you need to use pg_dump's -o option or copy with oids option to - preserve the oids. + PostgreSQL supports SERIAL data type. It auto-creates a sequence and + index on the column. For example, this... + CREATE TABLE person ( + id SERIAL, + name TEXT + ); + + ...is automatically translated into this... + CREATE SEQUENCE person_id_seq; + CREATE TABLE person ( + id INT4 NOT NULL DEFAULT nextval('person_id_seq'), + name TEXT + ); + CREATE UNIQUE INDEX person_id_key ON person ( id ); + + See the create_sequence manual page for more information about + sequences. You can also use each row's oid field as a unique value. + However, if you need to dump and reload the database, you need to use + pg_dump's -o option or COPY WITH OIDS option to preserve the oids. + + For more details, see Bruce Momjian's chapter on Numbering Rows. + + 4.16.2) How do I get the back the generated SERIAL value after an insert? + + Probably the simplest approach is to to retrieve the next SERIAL value + from the sequence object with the nextval() function before inserting + and then insert it explicitly. Using the example table in 4.16.1, that + might look like this: + $newSerialID = nextval('person_id_seq'); + INSERT INTO person (id, name) VALUES ($newSerialID, 'Blaise Pascal'); + + You would then also have the new value stored in $newSerialID for use + in other queries (e.g., as a foreign key to the person table). Note + that the name of the automatically-created SEQUENCE object will be + named __seq, where table and serialcolumn are the + names of your table and your SERIAL column, respectively. + + Similarly, you could retrieve the just-assigned SERIAL value with the + currval() function after it was inserted by default, e.g., + INSERT INTO person (name) VALUES ('Blaise Pascal'); + $newID = currval('person_id_seq'); + + Finally, you could use the oid returned from the INSERT statement to + lookup the default value, though this is probably the least portable + approach. In perl, using DBI with Edmund Mergl's DBD::Pg module, the + oid value is made available via $sth->{pg_oid_status} after + $sth->execute(). + + 4.16.3) Wouldn't use of currval() and nextval() lead to a race condition + with other concurrent backend processes? + + No. That has been handled by the backends. 4.17) What is an oid? What is a tid? @@ -858,9 +915,9 @@ BYTEA bytea variable-length array of bytes Some of the source code and older documentation use terms that have more common usage. Here are some: + * table, relation, class * row, record, tuple - * attribute, field, column - * table, class + * column, field, attribute * retrieve, select * replace, update * append, insert @@ -913,10 +970,27 @@ BYTEA bytea variable-length array of bytes but this makes the column default to the time of table creation, not the time of row insertion. Instead do: - create table test (x int, modtime timestamp default text 'now'); + CREATE TABLE test (x int, modtime timestamp default now() ); - The casting of the value to text prevents the default value from being - computed at table creation time, and delays it until insertion time. + The calling of the function now() prevents the default value from + being computed at table creation time, and delays it until insertion + time. We believe this will not be a problem in post-6.5.* releases. + + 4.23) Why are my subqueries using IN so slow? + + Currently, we join subqueries to outer queries by sequential scanning + the result of the subquery for each row of the outer query. A + workaround is to replace IN with EXISTS. For example, change: + SELECT * + FROM tab + WHERE col1 IN (SELECT col2 FROM TAB2) + + to: + SELECT * + FROM tab + WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2) + + We hope to fix this limitation in a future release. _________________________________________________________________ Extending PostgreSQL diff --git a/doc/src/sgml/biblio.sgml b/doc/src/sgml/biblio.sgml index 0427b10efe..de74a78a68 100644 --- a/doc/src/sgml/biblio.sgml +++ b/doc/src/sgml/biblio.sgml @@ -19,8 +19,8 @@ The Practical <acronym>SQL</acronym> Handbook - - Bowman et al, 1993 + + Bowman et al, 1996 Using Structured Query Language @@ -28,7 +28,7 @@ 3 - Judity + Judith Bowman @@ -37,7 +37,7 @@ Marcy - Damovsky + Darnovsky 0-201-44787-8 @@ -46,7 +46,7 @@ Addison-Wesley - 1997 + 1996 Addison-Wesley Longman, Inc. + + + + + 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. + + + + + + + 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) +Many fixes for CASE (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) +Make TABLE optional keyword in LOCK TABLE (Bruce) +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) +Remove ':' 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 jens@jens.de) +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 specification + (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 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 +Require SELECT DISTINCT target list to have all ORDER BY columns (Tom) +Add Oracle's COMMENT ON command (Mike Mascari ) +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 more 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 -- +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 Alpha's +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 (Kardos, Dr. Andreas) +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