2 $Header: /cvsroot/pgsql/doc/src/sgml/release.sgml,v 1.163 2002/10/12 16:29:51 petere Exp $
5 <appendix id="release">
6 <title>Release Notes</title>
8 <sect1 id="release-devel">
9 <title>7.3 Development Branch</title>
12 Below is a subset of the changes that have gone into the
13 development branch of PostgreSQL since version 7.2. For a complete
14 list of changes, consult the CVS logs.
18 Developers: When you add a feature, mention it here. This avoids
19 lossiness when digging out the information from the CVS logs, and
20 furthermore it advertises your feature to external parties at the
21 earliest possible moment.
23 CDATA means the content is "SGML-free", so you can write without
24 worries about funny characters.
26 <literallayout><![CDATA[
27 Mixed numeric-and-float expressions are evaluated as float, per SQL spec
28 Explicit casts to char, varchar, bit, varbit will truncate or pad without error
29 CREATE OR REPLACE VIEW, CREATE OR REPLACE RULE are available
30 No-autocommit mode is available (set autocommit to off)
31 Substantial improvements in functionality for functions returning sets
32 Client libraries older than 6.3 no longer supported (version 0 protocol removed)
33 PREPARE statement allows caching query plans for interactive statements
34 Type OPAQUE is now deprecated in favor of pseudo-types cstring, trigger, etc
35 Standalone composite types can now be created with CREATE TYPE
36 Files larger than 2 GB are now supported (if supported by the operating system)
37 SERIAL no longer implies UNIQUE; specify explicitly if index is wanted
38 pg_dump -n and -N options have been removed. The new behavior is like -n but knows about key words.
39 CLUSTER is no longer hazardous to your schema
40 COPY accepts a list of columns to copy
41 ALTER TABLE DROP COLUMN
42 CREATE OPERATOR CLASS/DROP OPERATOR CLASS
44 Sequences created by SERIAL column definitions now auto-drop with the column
45 Most forms of DROP now support RESTRICT and CASCADE options
46 Recursive SQL functions can be defined
47 User-defined procedural languages can register a validator function to check new functions as they are created
48 Functions can be executed with the privileges of the owner
49 Syntax of CREATE FUNCTION has been extended to resemble SQL99
50 Effects of SET within a transaction block now roll back if transaction aborts
51 New SET LOCAL syntax sets a parameter for the life of the current transaction
52 Datestyle, timezone, client_encoding can be set in postgresql.conf
53 The last vestiges of support for type names datetime and timespan are gone; use timestamp and interval instead
54 Rule names are now per-relation, not global; DROP RULE and COMMENT ON RULE syntax changes accordingly
55 Readline and Zlib are now required by default and must be turned off explicitly if their use is not desired
56 Define a third class of function volatility to allow indexscans in more cases
57 Locale support is now built by default; choice of locale is set by initdb and/or at run-time
58 ALTER TABLE ALTER COLUMN SET/DROP NOT NULL
59 EXPLAIN and SHOW output comes out as a query result, not a NOTICE message
60 DOMAINs (types that are constrained versions of base types)
61 Access privileges on functions
62 Access privileges on procedural languages
63 CREATE DATABASE has OWNER option so superuser can create DB for someone else
64 Kerberos 5 support now works with Heimdal
65 Database and user-specific session defaults for run-time configuration variables (ALTER DATABASE ... SET and ALTER USER ... SET)
66 String function OVERLAY() implemented per SQL99
67 Regular expression operator SIMILAR TO implemented per SQL99
68 Regular expression function SUBSTRING() implemented per SQL99
73 <sect1 id="release-7-3">
74 <title>Release 7.3</title>
77 <title>Release date</title>
78 <simpara>2002-??-??</simpara>
82 <title>Overview</title>
85 TO BE FILLED IN. SEE /HISTORY.
89 Major changes in this release:
96 TO BE FILLED IN. SEE /HISTORY.
105 <title>Migration to version 7.3</title>
108 A dump/restore using <command>pg_dump</command> is required for
109 those wishing to migrate data from any previous release.
113 Observe the following incompatibilities:
118 TO BE FILLED IN. SEE /HISTORY.
128 <title>Changes</title>
133 TO BE FILLED IN. SEE /HISTORY.
140 <sect1 id="release-7-2-3">
141 <title>Release 7.2.3</title>
144 <title>Release date</title>
145 <simpara>2002-10-01</simpara>
149 This has a variety of fixes from 7.2.2, including fixes to prevent
155 <title>Migration to version 7.2.3</title>
158 A dump/restore is <emphasis>not</emphasis> required for those running
164 <title>Changes</title>
168 Prevent possible compressed transaction log loss (Tom)
169 Prevent non-superuser from increasing most recent vacuum info (Tom)
170 Handle pre-1970 date values in newer versions of glibc (Tom)
171 Fix possible hang during server shutdown
172 Prevent spinlock hangs on SMP PPC machines (Tomoyuki Niijima)
173 Fix pg_dump to properly dump FULL JOIN USING (Tom)
180 <sect1 id="release-7-2-2">
181 <title>Release 7.2.2</title>
184 <title>Release date</title>
185 <simpara>2002-08-23</simpara>
189 This has a variety of fixes from 7.2.1.
194 <title>Migration to version 7.2.2</title>
197 A dump/restore is <emphasis>not</emphasis> required for those running
203 <title>Changes</title>
207 Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom)
208 Fix for compressed transaction log id wraparound (Tom)
209 Fix PQescapeBytea/PQunescapeBytea so that they handle bytes > 0x7f (Tatsuo)
210 Fix for psql and pg_dump crashing when invoked with non-existand long
212 Fix crash when invoking geometric operators (Tom)
213 Allow OPEN cursor(args) (Tom)
214 Fix for rtree_gist index build (Teodor)
215 Fix for dumping user-defined aggregates (Tom)
216 Contrib/intarray fixes (Oleg)
217 Fix for complex UNION/EXCEPT/INTERSECT queries using parens (Tom)
218 Fix to pg_convert (Tatsuo)
219 Fix for crash with long DATA strings (Thomes, Neil)
220 Fix for repeat(), lpad(), rpad() and long strings (Neil)
227 <sect1 id="release-7-2-1">
228 <title>Release 7.2.1</title>
231 <title>Release date</title>
232 <simpara>2002-03-21</simpara>
236 This has a variety of fixes from 7.2.
241 <title>Migration to version 7.2.1</title>
244 A dump/restore is <emphasis>not</emphasis> required for those running
250 <title>Changes</title>
254 Ensure that sequence counters do not go backwards after a crash (Tom)
255 Fix pgaccess kanji-coversion key binding (Tatsuo)
256 Optimizer improvements (Tom)
257 cash I/O improvements (Tom)
259 Compile fix for missing AuthBlockSig (Heiko)
260 Additional time zones and time zone fixes (Thomas)
261 Allow psql \connect to handle mixed case database and user names (Tom)
262 Return proper OID on command completion even with ON INSERT rules (Tom)
263 Allow COPY FROM to use 8-bit DELIMITERS (Tatsuo)
264 Fix bug in extract/date_part for milliseconds/microseconds (Tatsuo)
265 Improve handling of multiple UNIONs with different lengths (Tom)
266 contrib/btree_gist improvements (Teodor Sigaev)
267 contrib/tsearch dictionary improvements, see README.tsearch for
268 an additional installation step (Thomas T. Thai, Teodor Sigaev)
269 Fix for array subscripts handling (Tom)
270 Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom)
277 <sect1 id="release-7-2">
278 <title>Release 7.2</title>
281 <title>Release date</title>
282 <simpara>2002-02-04</simpara>
286 <title>Overview</title>
289 This release improves <productname>PostgreSQL</> for use in
290 high-volume applications.
294 Major changes in this release:
301 Vacuuming no longer locks tables, thus allowing normal user
302 access during the vacuum. A new <command>VACUUM FULL</>
303 command does old-style vacuum by locking the table and
304 shrinking the on-disk copy of the table.
310 <term>Transactions</term>
313 There is no longer a problem with installations that exceed
314 four billion transactions.
323 OIDs are now optional. Users can now create tables without
324 OIDs for cases where OID usage is excessive.
330 <term>Optimizer</term>
333 The system now computes histogram column statistics during
334 <command>ANALYZE</>, allowing much better optimizer choices.
340 <term>Security</term>
343 A new MD5 encryption option allows more secure storage and
344 transfer of passwords. A new Unix-domain socket
345 authentication option is available on Linux and BSD systems.
351 <term>Statistics</term>
354 Administrators can use the new table access statistics module
355 to get fine-grained information about table and index usage.
361 <term>Internationalization</term>
364 Program and library messages can now be displayed in several
374 <title>Migration to version 7.2</title>
377 A dump/restore using <command>pg_dump</command> is required for
378 those wishing to migrate data from any previous release.
382 Observe the following incompatibilities:
387 The semantics of the <command>VACUUM</command> command have
388 changed in this release. You may wish to update your
389 maintenance procedures accordingly.
395 In this release, comparisons using <literal>= NULL</literal>
396 will always return false (or NULL, more precisely). Previous
397 releases automatically transformed this syntax to <literal>IS
398 NULL</literal>. The old behavior can be re-enabled using a
399 <filename>postgresql.conf</filename> parameter.
405 The <filename>pg_hba.conf</> and <filename>pg_ident.conf</>
406 configuration is now only reloaded after receiving a
407 <systemitem>SIGHUP</> signal, not with each connection.
413 The function <filename>octet_length()</> now returns the uncompressed data length.
419 The date/time value <literal>'current'</literal> is no longer
420 available. You will need to rewrite your applications.
426 The <literal>timestamp()</literal>, <literal>time()</literal>,
427 and <literal>interval()</literal> functions are no longer
428 available. Instead of <literal>timestamp()</literal>, use
429 <literal>timestamp 'string'</literal> or <literal>CAST</literal>.
439 The <literal>SELECT ... LIMIT #,#</literal> syntax will be removed
440 in the next release. You should change your queries to use
441 separate LIMIT and OFFSET clauses, e.g. <literal>LIMIT 10 OFFSET
447 <title>Changes</title>
450 <title>Server Operation</title>
452 Create temporary files in a separate directory (Bruce)
453 Delete orphaned temporary files on postmaster startup (Bruce)
454 Added unique indexes to some system tables (Tom)
455 System table operator reorganization (Oleg Bartunov, Teodor Sigaev, Tom)
456 Renamed pg_log to pg_clog (Tom)
457 Enable SIGTERM, SIGQUIT to kill backends (Jan)
458 Removed compile-time limit on number of backends (Tom)
459 Better cleanup for semaphore resource failure (Tatsuo, Tom)
460 Allow safe transaction ID wraparound (Tom)
461 Removed OIDs from some system tables (Tom)
462 Removed "triggered data change violation" error check (Tom)
463 SPI portal creation of prepared/saved plans (Jan)
464 Allow SPI column functions to work for system columns (Tom)
465 Long value compression improvement (Tom)
466 Statistics collector for table, index access (Jan)
467 Truncate extra-long sequence names to a reasonable value (Tom)
468 Measure transaction times in milliseconds (Thomas)
469 Fix TID sequential scans (Hiroshi)
470 Superuser ID now fixed at 1 (Peter E)
471 New pg_ctl "reload" option (Tom)
476 <title>Performance</title>
478 Optimizer improvements (Tom)
479 New histogram column statistics for optimizer (Tom)
480 Reuse write-ahead log files rather than discarding them (Tom)
481 Cache improvements (Tom)
482 IS NULL, IS NOT NULL optimizer improvement (Tom)
483 Improve lock manager to reduce lock contention (Tom)
484 Keep relcache entries for index access support functions (Tom)
485 Allow better selectivity with NaN and infinities in NUMERIC (Tom)
486 R-tree performance improvements (Kenneth Been)
487 B-tree splits more efficient (Tom)
492 <title>Privileges</title>
494 Change UPDATE, DELETE permissions to be distinct (Peter E)
495 New REFERENCES, TRIGGER privileges (Peter E)
496 Allow GRANT/REVOKE to/from more than one user at a time (Peter E)
497 New has_table_privilege() function (Joe Conway)
498 Allow non-superuser to vacuum database (Tom)
499 New SET SESSION AUTHORIZATION command (Peter E)
500 Fix bug in privilege modifications on newly created tables (Tom)
501 Disallow access to pg_statistic for non-superuser, add user-accessible views (Tom)
506 <title>Client Authentication</title>
508 Fork postmaster before doing authentication to prevent hangs (Peter E)
509 Add ident authentication over Unix domain sockets on Linux, *BSD (Helge Bahmann, Oliver Elphick, Teodor Sigaev, Bruce)
510 Add a password authentication method that uses MD5 encryption (Bruce)
511 Allow encryption of stored passwords using MD5 (Bruce)
512 PAM authentication (Dominic J. Eidson)
513 Load pg_hba.conf and pg_ident.conf only on startup and SIGHUP (Bruce)
518 <title>Server Configuration</title>
520 Interpretation of some time zone abbreviations as Australian rather than North American now settable at run time (Bruce)
521 New parameter to set default transaction isolation level (Peter E)
522 New parameter to enable conversion of "expr = NULL" into "expr IS NULL", off by default (Peter E)
523 New parameter to control memory usage by VACUUM (Tom)
524 New parameter to set client authentication timeout (Tom)
525 New parameter to set maximum number of open files (Tom)
530 <title>Queries</title>
532 Statements added by INSERT rules now execute after the INSERT (Jan)
533 Prevent unadorned relation names in target list (Bruce)
534 NULLs now sort after all normal values in ORDER BY (Tom)
535 New IS UNKNOWN, IS NOT UNKNOWN Boolean tests (Tom)
536 New SHARE UPDATE EXCLUSIVE lock mode (Tom)
537 New EXPLAIN ANALYZE command that shows run times and row counts (Martijn van Oosterhout)
538 Fix problem with LIMIT and subqueries (Tom)
539 Fix for LIMIT, DISTINCT ON pushed into subqueries (Tom)
540 Fix nested EXCEPT/INTERSECT (Tom)
545 <title>Schema Manipulation</title>
547 Fix SERIAL in temporary tables (Bruce)
548 Allow temporary sequences (Bruce)
549 Sequences now use int8 internally (Tom)
550 New SERIAL8 creates int8 columns with sequences, default still SERIAL4 (Tom)
551 Make OIDs optional using WITHOUT OIDS (Tom)
552 Add %TYPE syntax to CREATE TYPE (Ian Lance Taylor)
553 Add ALTER TABLE / DROP CONSTRAINT for CHECK constraints (Christopher Kings-Lynne)
554 New CREATE OR REPLACE FUNCTION to alter existing function (preserving the function OID) (Gavin Sherry)
555 Add ALTER TABLE / ADD [ UNIQUE | PRIMARY ] (Christopher Kings-Lynne)
556 Allow column renaming in views
557 Make ALTER TABLE / RENAME COLUMN update column names of indexes (Brent Verner)
558 Fix for ALTER TABLE / ADD CONSTRAINT ... CHECK with inherited tables (Stephan Szabo)
559 ALTER TABLE RENAME update foreign-key trigger arguments correctly (Brent Verner)
560 DROP AGGREGATE and COMMENT ON AGGREGATE now accept an aggtype (Tom)
561 Add automatic return type data casting for SQL functions (Tom)
562 Allow GiST indexes to handle NULLs and multikey indexes (Oleg Bartunov, Teodor Sigaev, Tom)
563 Enable partial indexes (Martijn van Oosterhout)
568 <title>Utility Commands</title>
570 Add RESET ALL, SHOW ALL (Marko Kreen)
571 CREATE/ALTER USER/GROUP now allow options in any order (Vince)
572 Add LOCK A, B, C functionality (Neil Padgett)
573 New ENCRYPTED/UNENCRYPTED option to CREATE/ALTER USER (Bruce)
574 New light-weight VACUUM does not lock table; old semantics are available as VACUUM FULL (Tom)
575 Disable COPY TO/FROM on views (Bruce)
576 COPY DELIMITERS string must be exactly one character (Tom)
577 VACUUM warning about index tuples fewer than heap now only appears when appropriate (Martijn van Oosterhout)
578 Fix permission checks for CREATE INDEX (Tom)
579 Disallow inappropriate use of CREATE/DROP INDEX/TRIGGER/VIEW (Tom)
584 <title>Data Types and Functions</title>
586 SUM(), AVG(), COUNT() now uses int8 internally for speed (Tom)
587 Add convert(), convert2() (Tatsuo)
588 New function bit_length() (Peter E)
589 Make the "n" in CHAR(n)/VARCHAR(n) represents letters, not bytes (Tatsuo)
590 CHAR(), VARCHAR() now reject strings that are too long (Peter E)
591 BIT VARYING now rejects bit strings that are too long (Peter E)
592 BIT now rejects bit strings that do not match declared size (Peter E)
593 INET, CIDR text conversion functions (Alex Pilosov)
594 INET, CIDR operators << and <<= indexable (Alex Pilosov)
595 Bytea \### now requires valid three digit octal number
596 Bytea comparison improvements, now supports =, <>, >, >=, <, and <=
597 Bytea now supports B-tree indexes
598 Bytea now supports LIKE, LIKE...ESCAPE, NOT LIKE, NOT LIKE...ESCAPE
599 Bytea now supports concatenation
600 New bytea functions: position, substring, trim, btrim, and length
601 New encode() function mode, "escaped", converts minimally escaped bytea to/from text
602 Add pg_database_encoding_max_length() (Tatsuo)
603 Add pg_client_encoding() function (Tatsuo)
604 now() returns time with millisecond precision (Thomas)
605 New TIMESTAMP WITHOUT TIMEZONE data type (Thomas)
606 Add ISO date/time specification with "T", yyyy-mm-ddThh:mm:ss (Thomas)
607 New xid/int comparison functions (Hiroshi)
608 Add precision to TIME, TIMESTAMP, and INVERVAL data types (Thomas)
609 Modify type coercion logic to attempt binary-compatible functions first (Tom)
610 New encode() function installed by default (Marko Kreen)
611 Improved to_*() conversion functions (Karel Zak)
612 Optimize LIKE/ILIKE when using single-byte encodings (Tatsuo)
613 New functions in contrib/pgcrypto: crypt(), hmac(), encrypt(), gen_salt() (Marko Kreen)
614 Correct description of translate() function (Bruce)
615 Add INTERVAL argument for SET TIME ZONE (Thomas)
616 Add INTERVAL YEAR TO MONTH (etc.) syntax (Thomas)
617 Optimize length functions when using single-byte encodings (Tatsuo)
618 Fix path_inter, path_distance, path_length, dist_ppath to handle closed paths (Curtis Barrett, Tom)
619 octet_length(text) now returns non-compressed length (Tatsuo, Bruce)
620 Handle "July" full name in date/time literals (Greg Sabino Mullane)
621 Some datatype() function calls now evaluated differently
622 Add support for Julian and ISO time specifications (Thomas)
627 <title>Internationalization</title>
629 National language support in psql, pg_dump, libpq, and server (Peter E)
630 Message translations in Chinese (simplified, traditional), Czech, French, German, Hungarian, Russian, Swedish (Peter E, Serguei A. Mokhov, Karel Zak, Weiping He, Zhenbang Wei, Kovacs Zoltan)
631 Make trim, ltrim, rtrim, btrim, lpad, rpad, translate multibyte aware (Tatsuo)
632 Add LATIN5,6,7,8,9,10 support (Tatsuo)
633 Add ISO 8859-5,6,7,8 support (Tatsuo)
634 Correct LATIN5 to mean ISO-8859-9, not ISO-8859-5 (Tatsuo)
635 Make mic2ascii() non-ASCII aware (Tatsuo)
636 Reject invalid multibyte character sequences (Tatsuo)
641 <title><application>PL/pgSQL</></title>
643 Now uses portals for SELECT loops, allowing huge result sets (Jan)
644 CURSOR and REFCURSOR support (Jan)
645 Can now return open cursors (Jan)
646 Add ELSEIF (Klaus Reger)
647 Improve PL/pgSQL error reporting, including location of error (Tom)
648 Allow IS or FOR key words in cursor declaration, for compatibility (Bruce)
649 Fix for SELECT ... FOR UPDATE (Tom)
650 Fix for PERFORM returning multiple rows (Tom)
651 Make PL/pgSQL use the server's type coercion code (Tom)
652 Memory leak fix (Jan, Tom)
653 Make trailing semicolon optional (Tom)
658 <title>PL/Perl</title>
660 New untrusted PL/Perl (Alex Pilosov)
661 PL/Perl is now built on some platforms even if libperl is not shared (Peter E)
666 <title>PL/Tcl</title>
668 Now reports errorInfo (Vsevolod Lobko)
669 Add spi_lastoid function (bob@redivi.com)
674 <title>PL/Python</title>
676 ...is new (Andrew Bosma)
681 <title><application>Psql</></title>
683 \d displays indexes in unique, primary groupings (Christopher Kings-Lynne)
684 Allow trailing semicolons in backslash commands (Greg Sabino Mullane)
685 Read password from /dev/tty if possible
686 Force new password prompt when changing user and database (Tatsuo, Tom)
687 Format the correct number of columns for Unicode (Patrice)
692 <title><application>Libpq</></title>
694 New function PQescapeString() to escape quotes in command strings (Florian Weimer)
695 New function PQescapeBytea() escapes binary strings for use as SQL string literals
702 Return OID of INSERT (Ken K)
703 Handle more data types (Ken K)
704 Handle single quotes and newlines in strings (Ken K)
705 Handle NULL variables (Ken K)
706 Fix for time zone handling (Barry Lind)
707 Improved Druid support
708 Allow eight-bit characters with non-multibyte server (Barry Lind)
709 Support BIT, BINARY types (Ned Wolpert)
710 Reduce memory usage (Michael Stephens, Dave Cramer)
711 Update DatabaseMetaData (Peter E)
712 Add DatabaseMetaData.getCatalogs() (Peter E)
713 Encoding fixes (Anders Bengtsson)
714 Get/setCatalog methods (Jason Davies)
715 DatabaseMetaData.getColumns() now returns column defaults (Jason Davies)
716 DatabaseMetaData.getColumns() performance improvement (Jeroen van Vianen)
717 Some JDBC1 and JDBC2 merging (Anders Bengtsson)
718 Transaction performance improvements (Barry Lind)
719 Array fixes (Greg Zoller)
721 Fix batch processing (Rene Pijlman)
722 ExecSQL method reorganization (Anders Bengtsson)
723 GetColumn() fixes (Jeroen van Vianen)
724 Fix isWriteable() function (Rene Pijlman)
725 Improved passage of JDBC2 conformance tests (Rene Pijlman)
726 Add bytea type capability (Barry Lind)
727 Add isNullable() (Rene Pijlman)
728 JDBC date/time test suite fixes (Liam Stewart)
729 Fix for SELECT 'id' AS xxx FROM table (Dave Cramer)
730 Fix DatabaseMetaData to show precision properly (Mark Lillywhite)
731 New getImported/getExported keys (Jason Davies)
732 MD5 password encryption support (Jeremy Wohl)
733 Fix to actually use type cache (Ned Wolpert)
740 Remove query size limit (Hiroshi)
741 Remove text field size limit (Hiroshi)
742 Fix for SQLPrimaryKeys in multibyte mode (Hiroshi)
743 Allow ODBC procedure calls (Hiroshi)
744 Improve boolean handing (Aidan Mountford)
745 Most configuration options on setable via DSN (Hiroshi)
746 Multibyte, performance fixes (Hiroshi)
747 Allow driver to be used with iODBC or unixODBC (Peter E)
748 MD5 password encryption support (Bruce)
749 Add more compatibility functions to odbc.sql (Peter E)
754 <title><application>ECPG</></title>
756 EXECUTE ... INTO implemented (Christof Petig)
757 Multiple row descriptor support (e.g. CARDINALITY) (Christof Petig)
758 Fix for GRANT parameters (Lee Kindness)
759 Fix INITIALLY DEFERRED bug
760 Various bug fixes (Michael, Christof Petig)
761 Auto allocation for indicator variable arrays (int *ind_p=NULL)
762 Auto allocation for string arrays (char **foo_pp=NULL)
763 ECPGfree_auto_mem fixed
764 All function names with external linkage are now prefixed by ECPG
765 Fixes for arrays of structures (Michael)
770 <title>Misc. Interfaces</title>
772 Python fix fetchone() (Gerhard Haring)
773 Use UTF, Unicode in Tcl where appropriate (Vsevolod Lobko, Reinhard Max)
774 Add Tcl COPY TO/FROM (ljb)
775 Prevent output of default index op class in pg_dump (Tom)
776 Fix libpgeasy memory leak (Bruce)
781 <title>Build and Install</title>
783 Configure, dynamic loader, and shared library fixes (Peter E)
784 Fixes in QNX 4 port (Bernd Tegge)
785 Fixes in Cygwin and Win32 ports (Jason Tishler, Gerhard Haring, Dmitry Yurtaev, Darko Prenosil, Mikhail Terekhov)
786 Fix for Win32 socket communication failures (Magnus, Mikhail Terekhov)
787 Hurd compile fix (Oliver Elphick)
788 BeOS fixes (Cyril Velter)
789 Remove configure --enable-unicode-conversion, now enabled by multibyte (Tatsuo)
790 AIX fixes (Tatsuo, Andreas)
791 Fix parallel make (Peter E)
792 Install SQL language manual pages into OS-specific directories (Peter E)
793 Rename config.h to pg_config.h (Peter E)
794 Reorganize installation layout of header files (Peter E)
799 <title>Source Code</title>
801 Remove SEP_CHAR (Bruce)
803 Merge GUC and command line handling (Marko Kreen)
804 Remove EXTEND INDEX (Martijn van Oosterhout, Tom)
805 New pgjindent utility to indent java code (Bruce)
806 Remove define of true/false when compiling under C++ (Leandro Fanzone, Tom)
807 pgindent fixes (Bruce, Tom)
808 Replace strcasecmp() with strcmp() where appropriate (Peter E)
809 Dynahash portability improvements (Tom)
810 Add 'volatile' usage in spinlock structures
811 Improve signal handling logic (Tom)
816 <title>Contrib</title>
818 New contrib/rtree_gist (Oleg Bartunov, Teodor Sigaev)
819 New contrib/tsearch full-text indexing (Oleg, Teodor Sigaev)
820 Add contrib/dblink for remote database access (Joe Conway)
821 contrib/ora2pg Oracle conversion utility (Gilles Darold)
822 contrib/xml XML conversion utility (John Gray)
823 contrib/fulltextindex fixes (Christopher Kings-Lynne)
824 New contrib/fuzzystrmatch with levenshtein and metaphone, soundex merged (Joe Conway)
825 Add contrib/intarray boolean queries, binary search, fixes (Oleg Bartunov)
826 New pg_upgrade utility (Bruce)
827 Add new pg_resetxlog options (Bruce, Tom)
834 <sect1 id="release-7-1-3">
835 <title>Release 7.1.3</title>
838 <title>Release date</title>
839 <simpara>2001-08-15</simpara>
843 <title>Migration to version 7.1.3</title>
846 A dump/restore is <emphasis>not</emphasis> required for those running
852 <title>Changes</title>
856 Remove unused WAL segements of large transactions (Tom)
857 Multiaction rule fix (Tom)
858 PL/pgSQL memory allocation fix (Jan)
859 VACUUM buffer fix (Tom)
860 Regression test fixes (Tom)
861 pg_dump fixes for GRANT/REVOKE/comments on views, user-defined types (Tom)
862 Fix subselects with DISTINCT ON or LIMIT (Tom)
864 Disable COPY TO/FROM a view (Tom)
865 Cygwin build (Jason Tishler)
872 <sect1 id="release-7-1-2">
873 <title>Release 7.1.2</title>
876 <title>Release date</title>
877 <simpara>2001-05-11</simpara>
881 This has one fix from 7.1.1.
886 <title>Migration to version 7.1.2</title>
889 A dump/restore is <emphasis>not</emphasis> required for those running
895 <title>Changes</title>
899 Fix PL/pgSQL SELECTs when returning no rows
900 Fix for psql backslash core dump
901 Referential integrity permission fix
910 <sect1 id="release-7-1-1">
911 <title>Release 7.1.1</title>
914 <title>Release date</title>
915 <simpara>2001-05-05</simpara>
919 This has a variety of fixes from 7.1.
924 <title>Migration to version 7.1.1</title>
927 A dump/restore is <emphasis>not</emphasis> required for those running
933 <title>Changes</title>
937 Fix for numeric MODULO operator (Tom)
938 pg_dump fixes (Philip)
939 pg_dump can dump 7.0 databases (Philip)
940 readline 4.2 fixes (Peter E)
942 AIX, MSWIN, VAX, N32K fixes (Tom)
943 Multibytes fixes (Tom)
944 Unicode fixes (Tatsuo)
945 Optimizer improvements (Tom)
946 Fix for whole tuples in functions (Tom)
947 Fix for pg_ctl and option strings with spaces (Peter E)
949 EXTRACT can now take string argument (Thomas)
957 <sect1 id="release-7-1">
958 <title>Release 7.1</title>
961 <title>Release date</title>
962 <simpara>2001-04-13</simpara>
966 This release focuses on removing limitations that have existed in the
967 PostgreSQL code for many years.
971 Major changes in this release:
976 Write-ahead Log (WAL)
980 To maintain database consistency in case
981 of an operating system crash, previous releases of PostgreSQL have
982 forced all data modifications to disk before each transaction commit.
983 With WAL, only one log file must be flushed to disk, greatly improving
984 performance. If you have been using -F in previous releases to disable
985 disk flushes, you may want to consider discontinuing its use.
996 TOAST - Previous releases had a compiled-in row length limit,
997 typically 8k - 32k. This limit made storage of long text fields
998 difficult. With TOAST, long rows of any length can be stored with good
1010 We now support outer joins. The UNION/NOT IN
1011 workaround for outer joins is no longer required. We use the SQL92
1023 The previous C function manager did not
1024 handle null values properly, nor did it support 64-bit <acronym>CPU</acronym>'s (Alpha). The new
1025 function manager does. You can continue using your old custom
1026 functions, but you may want to rewrite them in the future to use the new
1027 function manager call interface.
1038 A large number of complex queries that were
1039 unsupported in previous releases now work. Many combinations of views,
1040 aggregates, UNION, LIMIT, cursors, subqueries, and inherited tables
1041 now work properly. Inherited tables are now accessed by default.
1042 Subqueries in FROM are now supported.
1051 <title>Migration to version 7.1</title>
1054 A dump/restore using pg_dump is required for those wishing to migrate
1055 data from any previous release.
1060 <title>Changes</title>
1066 Many multibyte/Unicode/locale fixes (Tatsuo and others)
1067 More reliable ALTER TABLE RENAME (Tom)
1068 Kerberos V fixes (David Wragg)
1069 Fix for INSERT INTO...SELECT where targetlist has subqueries (Tom)
1070 Prompt username/password on standard error (Bruce)
1071 Large objects inv_read/inv_write fixes (Tom)
1072 Fixes for to_char(), to_date(), to_ascii(), and to_timestamp() (Karel,
1074 Prevent query expressions from leaking memory (Tom)
1075 Allow UPDATE of arrays elements (Tom)
1076 Wake up lock waiters during cancel (Hiroshi)
1077 Fix rare cursor crash when using hash join (Tom)
1078 Fix for DROP TABLE/INDEX in rolled-back transaction (Hiroshi)
1079 Fix psql crash from \l+ if MULTIBYTE enabled (Peter E)
1080 Fix truncation of rule names during CREATE VIEW (Ross Reedstrom)
1081 Fix PL/perl (Alex Kapranoff)
1082 Disallow LOCK on views (Mark Hollomon)
1083 Disallow INSERT/UPDATE/DELETE on views (Mark Hollomon)
1084 Disallow DROP RULE, CREATE INDEX, TRUNCATE on views (Mark Hollomon)
1085 Allow PL/pgSQL accept non-ASCII identifiers (Tatsuo)
1086 Allow views to proper handle GROUP BY, aggregates, DISTINCT (Tom)
1087 Fix rare failure with TRUNCATE command (Tom)
1088 Allow UNION/INTERSECT/EXCEPT to be used with ALL, subqueries, views,
1089 DISTINCT, ORDER BY, SELECT...INTO (Tom)
1090 Fix parser failures during aborted transactions (Tom)
1091 Allow temporary relations to properly clean up indexes (Bruce)
1092 Fix VACUUM problem with moving rows in same page (Tom)
1093 Modify pg_dump to better handle user-defined items in template1 (Philip)
1094 Allow LIMIT in VIEW (Tom)
1095 Require cursor FETCH to honor LIMIT (Tom)
1096 Allow PRIMARY/FOREIGN Key definitions on inherited columns (Stephan)
1097 Allow ORDER BY, LIMIT in sub-selects (Tom)
1098 Allow UNION in CREATE RULE (Tom)
1099 Make ALTER/DROP TABLE rollback-able (Vadim, Tom)
1100 Store initdb collation in pg_control so collation cannot be changed (Tom)
1101 Fix INSERT...SELECT with rules (Tom)
1102 Fix FOR UPDATE inside views and subselects (Tom)
1103 Fix OVERLAPS operators conform to SQL92 spec regarding NULLs (Tom)
1104 Fix lpad() and rpad() to handle length less than input string (Tom)
1105 Fix use of NOTIFY in some rules (Tom)
1106 Overhaul btree code (Tom)
1107 Fix NOT NULL use in Pl/pgSQL variables (Tom)
1108 Overhaul GIST code (Oleg)
1109 Fix CLUSTER to preserve constraints and column default (Tom)
1110 Improved deadlock detection handling (Tom)
1111 Allow multiple SERIAL columns in a table (Tom)
1112 Prevent occasional index corruption (Vadim)
1116 Add OUTER JOINs (Tom)
1117 Function manager overhaul (Tom)
1118 Allow ALTER TABLE RENAME on indexes (Tom)
1119 Improve CLUSTER (Tom)
1120 Improve ps status display for more platforms (Peter E, Marc)
1121 Improve CREATE FUNCTION failure message (Ross)
1122 JDBC improvements (Peter, Travis Bauer, Christopher Cain, William Webber,
1124 Grand Unified Configuration scheme/GUC. Many options can now be set in
1125 data/postgresql.conf, postmaster/postgres flags, or SET commands (Peter E)
1126 Improved handling of file descriptor cache (Tom)
1127 New warning code about auto-created table alias entries (Bruce)
1128 Overhaul initdb process (Tom, Peter E)
1129 Overhaul of inherited tables; inherited tables now accessed by default;
1130 new ONLY keyword prevents it (Chris Bitmead, Tom)
1131 ODBC cleanups/improvements (Nick Gorham, Stephan Szabo, Zoltan Kovacs,
1133 Allow renaming of temp tables (Tom)
1134 Overhaul memory manager contexts (Tom)
1135 pg_dumpall uses CREATE USER or CREATE GROUP rather using COPY (Peter E)
1136 Overhaul pg_dump (Philip Warner)
1137 Allow pg_hba.conf secondary password file to specify only username (Peter E)
1138 Allow TEMPORARY or TEMP keyword when creating temporary tables (Bruce)
1139 New memory leak checker (Karel)
1140 New SET SESSION CHARACTERISTICS (Thomas)
1141 Allow nested block comments (Thomas)
1142 Add WITHOUT TIME ZONE type qualifier (Thomas)
1143 New ALTER TABLE ADD CONSTRAINT (Stephan)
1144 Use NUMERIC accumulators for INTEGER aggregates (Tom)
1145 Overhaul aggregate code (Tom)
1146 New VARIANCE and STDDEV() aggregates
1147 Improve dependency ordering of pg_dump (Philip)
1148 New pg_restore command (Philip)
1149 New pg_dump tar output option (Philip)
1150 New pg_dump of large objects (Philip)
1151 New ESCAPE option to LIKE (Thomas)
1152 New case-insensitive LIKE - ILIKE (Thomas)
1153 Allow functional indexes to use binary-compatible type (Tom)
1154 Allow SQL functions to be used in more contexts (Tom)
1155 New pg_config utility (Peter E)
1156 New PL/pgSQL EXECUTE command which allows dynamic SQL and utility statements
1158 New PL/pgSQL GET DIAGNOSTICS statement for SPI value access (Jan)
1159 New quote_identifiers() and quote_literal() functions (Jan)
1160 New ALTER TABLE table OWNER TO user command (Mark Hollomon)
1161 Allow subselects in FROM, i.e. FROM (SELECT ...) [AS] alias (Tom)
1162 Update PyGreSQL to version 3.1 (D'Arcy)
1163 Store tables as files named by OID (Vadim)
1164 New SQL function setval(seq,val,bool) for use in pg_dump (Philip)
1165 Require DROP VIEW to remove views, no DROP TABLE (Mark)
1166 Allow DROP VIEW view1, view2 (Mark)
1167 Allow multiple objects in DROP INDEX, DROP RULE, and DROP TYPE (Tom)
1168 Allow automatic conversion to/from Unicode (Tatsuo, Eiji)
1169 New /contrib/pgcrypto hashing functions (Marko Kreen)
1170 New pg_dumpall --globals-only option (Peter E)
1171 New CHECKPOINT command for WAL which creates new WAL log file (Vadim)
1172 New AT TIME ZONE syntax (Thomas)
1173 Allow location of Unix domain socket to be configurable (David J. MacKenzie)
1174 Allow postmaster to listen on a specific IP address (David J. MacKenzie)
1175 Allow socket path name to be specified in hostname by using leading slash
1176 (David J. MacKenzie)
1177 Allow CREATE DATABASE to specify template database (Tom)
1178 New utility to convert MySQL schema dumps to SQL92 and PostgreSQL (Thomas)
1179 New /contrib/rserv replication toolkit (Vadim)
1180 New file format for COPY BINARY (Tom)
1181 New /contrib/oid2name to map numeric files to table names (B Palmer)
1182 New "idle in transaction" ps status message (Marc)
1183 Update to pgaccess 0.98.7 (Constantin Teodorescu)
1184 pg_ctl now defaults to -w (wait) on shutdown, new -l (log) option
1185 Add rudimentary dependency checking to pg_dump (Philip)
1189 Fix INET/CIDR type ordering and add new functions (Tom)
1190 Make OID behave as an unsigned type (Tom)
1191 Allow BIGINT as synonym for INT8 (Peter E)
1192 New int2 and int8 comparison operators (Tom)
1193 New BIT and BIT VARYING types (Adriaan Joubert, Tom, Peter E)
1194 CHAR() no longer faster than VARCHAR() because of TOAST (Tom)
1195 New GIST seg/cube examples (Gene Selkov)
1196 Improved round(numeric) handling (Tom)
1197 Fix CIDR output formatting (Tom)
1198 New CIDR abbrev() function (Tom)
1202 Write-Ahead Log (WAL) to provide crash recovery with less performance
1204 ANALYZE stage of VACUUM no longer exclusively locks table (Bruce)
1205 Reduced file seeks (Denis Perchine)
1206 Improve BTREE code for duplicate keys (Tom)
1207 Store all large objects in a single table (Denis Perchine, Tom)
1208 Improve memory allocation performance (Karel, Tom)
1212 New function manager call conventions (Tom)
1213 SGI portability fixes (David Kaelbling)
1214 New configure --enable-syslog option (Peter E)
1215 New BSDI README (Bruce)
1216 configure script moved to top level, not /src (Peter E)
1217 Makefile/configuration/compilation overhaul (Peter E)
1218 New configure --with-python option (Peter E)
1219 Solaris cleanups (Peter E)
1220 Overhaul /contrib Makefiles (Karel)
1221 New OpenSSL configuration option (Magnus, Peter E)
1223 QNX fixes (Maurizio)
1224 New heap_open(), heap_openr() API (Tom)
1225 Remove colon and semi-colon operators (Thomas)
1226 New pg_class.relkind value for views (Mark Hollomon)
1227 Rename ichar() to chr() (Karel)
1228 New documentation for btrim(), ascii(), chr(), repeat() (Karel)
1229 Fixes for NT/Cygwin (Pete Forman)
1230 AIX port fixes (Andreas)
1231 New BeOS port (David Reid, Cyril Velter)
1232 Add proofreader's changes to docs (Addison-Wesley, Bruce)
1233 New Alpha spinlock code (Adriaan Joubert, Compaq)
1234 UnixWare port overhaul (Peter E)
1235 New Darwin/MacOS X port (Peter Bierman, Bruce Hartzler)
1236 New FreeBSD Alpha port (Alfred)
1237 Overhaul shared memory segments (Tom)
1238 Add IBM S/390 support (Neale Ferguson)
1239 Moved macmanuf to /contrib (Larry Rosenman)
1240 Syslog improvements (Larry Rosenman)
1241 New template0 database that contains no user additions (Tom)
1242 New /contrib/cube and /contrib/seg GIST sample code (Gene Selkov)
1243 Allow NetBSD's libedit instead of readline (Peter)
1244 Improved assembly language source code format (Bruce)
1245 New contrib/pg_logger
1246 New --template option to createdb
1247 New contrib/pg_control utility (Oliver)
1248 New FreeBSD tools ipc_check, start-scripts/freebsd
1255 <sect1 id="release-7-0-3">
1256 <title>Release 7.0.3</title>
1259 <title>Release date</title>
1260 <simpara>2000-11-11</simpara>
1264 This has a variety of fixes from 7.0.2.
1269 <title>Migration to version 7.0.3</title>
1272 A dump/restore is <emphasis>not</emphasis> required for those running
1278 <title>Changes</title>
1283 Large object fix (Tom)
1284 Fix lean in COPY WITH OIDS leak (Tom)
1285 Fix backwards-index-scan (Tom)
1286 Fix SELECT ... FOR UPDATE so it checks for duplicate keys (Hiroshi)
1287 Add --enable-syslog to configure (Marc)
1288 Fix abort transaction at backend exit in rare cases (Tom)
1289 Fix for psql \l+ when multibyte enabled (Tatsuo)
1290 Allow PL/pgSQL to accept non ascii identifiers (Tatsuo)
1291 Make vacuum always flush buffers (Tom)
1292 Fix to allow cancel while waiting for a lock (Hiroshi)
1293 Fix for memory aloocation problem in user authentication code (Tom)
1294 Remove bogus use of int4out() (Tom)
1295 Fixes for multiple subqueries in COALESCE or BETWEEN (Tom)
1296 Fix for failure of triggers on heap open in certain cases (Jeroen van
1298 Fix for erroneous selectivity of not-equals (Tom)
1299 Fix for erroneous use of strcmp() (Tom)
1300 Fix for bug where storage manager accesses items beyond end of file
1302 Fix to include kernel errno message in all smgr elog messages (Tom)
1303 Fix for '.' not in PATH at build time (SL Baur)
1304 Fix for out-of-file-descriptors error (Tom)
1305 Fix to make pg_dump dump 'iscachable' flag for functions (Tom)
1306 Fix for subselect in targetlist of Append node (Tom)
1307 Fix for mergejoin plans (Tom)
1308 Fix TRUNCATE failure on relations with indexes (Tom)
1309 Avoid database-wide restart on write error (Hiroshi)
1310 Fix nodeMaterial to honor chgParam by recomputing its output (Tom)
1311 Fix VACUUM problem with moving chain of update tuples when source and
1312 destination of a tuple lie on the same page (Tom)
1313 Fix user.c CommandCounterIncrement (Tom)
1314 Fix for AM/PM boundary problem in to_char() (Karel Zak)
1315 Fix TIME aggregate handling (Tom)
1316 Fix to_char() to avoid coredump on NULL input (Tom)
1318 Fix for inserting/copying longer multibyte strings into char() data
1320 Fix for crash of backend, on abort (Tom)
1327 <sect1 id="release-7-0-2">
1328 <title>Release 7.0.2</title>
1331 <title>Release date</title>
1332 <simpara>2000-06-05</simpara>
1336 This is a repackaging of 7.0.1 with added documentation.
1341 <title>Migration to version 7.0.2</title>
1344 A dump/restore is <emphasis>not</emphasis> required for those running
1350 <title>Changes</title>
1354 Added documentation to tarball.
1361 <sect1 id="release-7-0-1">
1362 <title>Release 7.0.1</title>
1365 <title>Release date</title>
1366 <simpara>2000-06-01</simpara>
1370 This is a cleanup release for 7.0.
1374 <title>Migration to version 7.0.1</title>
1377 A dump/restore is <emphasis>not</emphasis> required for those running
1383 <title>Changes</title>
1387 Fix many CLUSTER failures (Tom)
1388 Allow ALTER TABLE RENAME works on indexes (Tom)
1389 Fix plpgsql to handle datetime->timestamp and timespan->interval (Bruce)
1390 New configure --with-setproctitle switch to use setproctitle() (Marc, Bruce)
1391 Fix the off by one errors in ResultSet from 6.5.3, and more.
1392 jdbc ResultSet fixes (Joseph Shraibman)
1393 optimizer tunings (Tom)
1394 Fix create user for pgaccess
1395 Fix for UNLISTEN failure
1396 IRIX fixes (David Kaelbling)
1397 QNX fixes (Andreas Kardos)
1398 Reduce COPY IN lock level (Tom)
1399 Change libpqeasy to use PQconnectdb() style parameters (Bruce)
1400 Fix pg_dump to handle OID indexes (Tom)
1401 Fix small memory leak (Tom)
1402 Solaris fix for createdb/dropdb (Tatsuo)
1403 Fix for non-blocking connections (Alfred Perlstein)
1404 Fix improper recovery after RENAME TABLE failures (Tom)
1405 Copy pg_ident.conf.sample into /lib directory in install (Bruce)
1406 Add SJIS UDC (NEC selection IBM kanji) support (Eiji Tokuya)
1407 Fix too long syslog message (Tatsuo)
1408 Fix problem with quoted indexes that are too long (Tom)
1409 JDBC ResultSet.getTimestamp() fix (Gregory Krasnow & Floyd Marinescu)
1410 ecpg changes (Michael)
1416 <sect1 id="release-7-0">
1417 <title>Release 7.0</title>
1420 <title>Release date</title>
1421 <simpara>2000-05-08</simpara>
1425 This release contains improvements in many areas, demonstrating
1426 the continued growth of <productname>PostgreSQL</productname>.
1427 There are more improvements and fixes in 7.0 than in any previous
1428 release. The developers have confidence that this is the best
1429 release yet; we do our best to put out only solid releases, and
1430 this one is no exception.
1434 Major changes in this release:
1443 Foreign keys are now implemented, with the exception of PARTIAL MATCH
1444 foreign keys. Many users have been asking for this feature, and we are
1445 pleased to offer it.
1456 Continuing on work started a year ago, the optimizer has been
1457 improved, allowing better query plan selection and faster performance
1458 with less memory usage.
1465 Updated <application>psql</application>
1469 <application>psql</application>, our interactive terminal monitor, has been
1470 updated with a variety of new features. See the <application>psql</application> manual page for details.
1481 SQL92 join syntax is now supported, though only as
1482 <literal>INNER JOIN</> for this release. <literal>JOIN</>,
1483 <literal>NATURAL JOIN</>, <literal>JOIN</>/<literal>USING</>,
1484 and <literal>JOIN</>/<literal>ON</> are available, as are
1485 column correlation names.
1497 In 7.1 or 7.2, we plan to have outer joins, storage for very long rows, and a
1498 write-ahead logging system.
1507 <title>Migration to version 7.0</title>
1510 A dump/restore using <application>pg_dump</application>
1511 is required for those wishing to migrate data from any
1512 previous release of <productname>PostgreSQL</productname>.
1513 For those upgrading from 6.5.*, you may instead use
1514 <application>pg_upgrade</application> to upgrade to this
1515 release; however, a full dump/reload installation is always the
1516 most robust method for upgrades.
1520 Interface and compatibility issues to consider for the new
1526 The date/time types <type>datetime</type> and
1527 <type>timespan</type> have been superseded by the
1528 SQL92-defined types <type>timestamp</type> and
1529 <type>interval</type>. Although there has been some effort to
1530 ease the transition by allowing
1531 <productname>PostgreSQL</productname> to recognize
1532 the deprecated type names and translate them to the new type
1533 names, this mechanism may not be completely transparent to
1534 your existing application.
1540 The optimizer has been substantially improved in the area of
1541 query cost estimation. In some cases, this will result in
1542 decreased query times as the optimizer makes a better choice
1543 for the preferred plan. However, in a small number of cases,
1544 usually involving pathological distributions of data, your
1545 query times may go up. If you are dealing with large amounts
1546 of data, you may want to check your queries to verify
1553 The <acronym>JDBC</acronym> and <acronym>ODBC</acronym>
1554 interfaces have been upgraded and extended.
1560 The string function <function>CHAR_LENGTH</function> is now a
1561 native function. Previous versions translated this into a call
1562 to <function>LENGTH</function>, which could result in
1563 ambiguity with other types implementing
1564 <function>LENGTH</function> such as the geometric types.
1573 <title>Changes</title>
1579 Prevent function calls exceeding maximum number of arguments (Tom)
1580 Improve CASE construct (Tom)
1581 Fix SELECT coalesce(f1,0) FROM int4_tbl GROUP BY f1 (Tom)
1582 Fix SELECT sentence.words[0] FROM sentence GROUP BY sentence.words[0] (Tom)
1583 Fix GROUP BY scan bug (Tom)
1584 Improvements in SQL grammar processing (Tom)
1585 Fix for views involved in INSERT ... SELECT ... (Tom)
1586 Fix for SELECT a/2, a/2 FROM test_missing_target GROUP BY a/2 (Tom)
1587 Fix for subselects in INSERT ... SELECT (Tom)
1588 Prevent INSERT ... SELECT ... ORDER BY (Tom)
1589 Fixes for relations greater than 2GB, including vacuum
1590 Improve propagating system table changes to other backends (Tom)
1591 Improve propagating user table changes to other backends (Tom)
1592 Fix handling of temp tables in complex situations (Bruce, Tom)
1593 Allow table locking at table open, improving concurrent reliability (Tom)
1594 Properly quote sequence names in pg_dump (Ross J. Reedstrom)
1595 Prevent DROP DATABASE while others accessing
1596 Prevent any rows from being returned by GROUP BY if no rows processed (Tom)
1597 Fix SELECT COUNT(1) FROM table WHERE ...' if no rows matching WHERE (Tom)
1598 Fix pg_upgrade so it works for MVCC (Tom)
1599 Fix for SELECT ... WHERE x IN (SELECT ... HAVING SUM(x) > 1) (Tom)
1600 Fix for "f1 datetime DEFAULT 'now'" (Tom)
1601 Fix problems with CURRENT_DATE used in DEFAULT (Tom)
1602 Allow comment-only lines, and ;;; lines too. (Tom)
1603 Improve recovery after failed disk writes, disk full (Hiroshi)
1604 Fix cases where table is mentioned in FROM but not joined (Tom)
1605 Allow HAVING clause without aggregate functions (Tom)
1606 Fix for "--" comment and no trailing newline, as seen in perl interface
1607 Improve pg_dump failure error reports (Bruce)
1608 Allow sorts and hashes to exceed 2GB file sizes (Tom)
1609 Fix for pg_dump dumping of inherited rules (Tom)
1610 Fix for NULL handling comparisons (Tom)
1611 Fix inconsistent state caused by failed CREATE/DROP commands (Hiroshi)
1612 Fix for dbname with dash
1613 Prevent DROP INDEX from interfering with other backends (Tom)
1614 Fix file descriptor leak in verify_password()
1615 Fix for "Unable to identify an operator =$" problem
1616 Fix ODBC so no segfault if CommLog and Debug enabled (Dirk Niggemann)
1617 Fix for recursive exit call (Massimo)
1618 Fix for extra-long timezones (Jeroen van Vianen)
1619 Make pg_dump preserve primary key information (Peter E)
1620 Prevent databases with single quotes (Peter E)
1621 Prevent DROP DATABASE inside transaction (Peter E)
1622 ecpg memory leak fixes (Stephen Birch)
1623 Fix for SELECT null::text, SELECT int4fac(null) and SELECT 2 + (null) (Tom)
1624 Y2K timestamp fix (Massimo)
1625 Fix for VACUUM 'HEAP_MOVED_IN was not expected' errors (Tom)
1626 Fix for views with tables/columns containing spaces (Tom)
1627 Prevent permissions on indexes (Peter E)
1628 Fix for spinlock stuck problem when error is generated (Hiroshi)
1629 Fix ipcclean on Linux
1630 Fix handling of NULL constraint conditions (Tom)
1631 Fix memory leak in odbc driver (Nick Gorham)
1632 Fix for permission check on UNION tables (Tom)
1633 Fix to allow SELECT 'a' LIKE 'a' (Tom)
1634 Fix for SELECT 1 + NULL (Tom)
1636 Fix log() on numeric type (Tom)
1637 Deprecate ':' and ';' operators
1638 Allow vacuum of temporary tables
1639 Disallow inherited columns with the same name as new columns
1640 Recover or force failure when disk space is exhausted (Hiroshi)
1641 Fix INSERT INTO ... SELECT with AS columns matching result columns
1642 Fix INSERT ... SELECT ... GROUP BY groups by target columns not source columns (Tom)
1643 Fix CREATE TABLE test (a char(5) DEFAULT text '', b int4) with INSERT (Tom)
1644 Fix UNION with LIMIT
1645 Fix CREATE TABLE x AS SELECT 1 UNION SELECT 2
1646 Fix CREATE TABLE test(col char(2) DEFAULT user)
1647 Fix mismatched types in CREATE TABLE ... DEFAULT
1648 Fix SELECT * FROM pg_class where oid in (0,-1)
1649 Fix SELECT COUNT('asdf') FROM pg_class WHERE oid=12
1650 Prevent user who can create databases can modifying pg_database table (Peter E)
1651 Fix btree to give a useful elog when key > 1/2 (page - overhead) (Tom)
1652 Fix INSERT of 0.0 into DECIMAL(4,4) field (Tom)
1656 New CLI interface include file sqlcli.h, based on SQL3/SQL98
1657 Remove all limits on query length, row length limit still exists (Tom)
1658 Update jdbc protocol to 2.0 (Jens Glaser <email>jens@jens.de</email>)
1659 Add TRUNCATE command to quickly truncate relation (Mike Mascari)
1660 Fix to give super user and createdb user proper update catalog rights (Peter E)
1661 Allow ecpg bool variables to have NULL values (Christof)
1662 Issue ecpg error if NULL value for variable with no NULL indicator (Christof)
1663 Allow ^C to cancel COPY command (Massimo)
1664 Add SET FSYNC and SHOW PG_OPTIONS commands(Massimo)
1665 Function name overloading for dynamically-loaded C functions (Frankpitt)
1666 Add CmdTuples() to libpq++(Vince)
1667 New CREATE CONSTRAINT TRIGGER and SET CONSTRAINTS commands(Jan)
1668 Allow CREATE FUNCTION/WITH clause to be used for all language types
1669 configure --enable-debug adds -g (Peter E)
1670 configure --disable-debug removes -g (Peter E)
1671 Allow more complex default expressions (Tom)
1672 First real FOREIGN KEY constraint trigger functionality (Jan)
1673 Add FOREIGN KEY ... MATCH FULL ... ON DELETE CASCADE (Jan)
1674 Add FOREIGN KEY ... MATCH <unspecified> referential actions (Don Baccus)
1675 Allow WHERE restriction on ctid (physical heap location) (Hiroshi)
1676 Move pginterface from contrib to interface directory, rename to pgeasy (Bruce)
1677 Change pgeasy connectdb() parameter ordering (Bruce)
1678 Require SELECT DISTINCT target list to have all ORDER BY columns (Tom)
1679 Add Oracle's COMMENT ON command (Mike Mascari <email>mascarim@yahoo.com</email>)
1680 libpq's PQsetNoticeProcessor function now returns previous hook(Peter E)
1681 Prevent PQsetNoticeProcessor from being set to NULL (Peter E)
1682 Make USING in COPY optional (Bruce)
1683 Allow subselects in the target list (Tom)
1684 Allow subselects on the left side of comparison operators (Tom)
1685 New parallel regression test (Jan)
1686 Change backend-side COPY to write files with permissions 644 not 666 (Tom)
1687 Force permissions on PGDATA directory to be secure, even if it exists (Tom)
1688 Added psql LASTOID variable to return last inserted oid (Peter E)
1689 Allow concurrent vacuum and remove pg_vlock vacuum lock file (Tom)
1690 Add permissions check for vacuum (Peter E)
1691 New libpq functions to allow asynchronous connections: PQconnectStart(),
1692 PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(),
1693 PQsetenvPoll(), PQsetenvAbort (Ewan Mellor)
1694 New libpq PQsetenv() function (Ewan Mellor)
1695 create/alter user extension (Peter E)
1696 New postmaster.pid and postmaster.opts under $PGDATA (Tatsuo)
1697 New scripts for create/drop user/db (Peter E)
1698 Major psql overhaul (Peter E)
1699 Add const to libpq interface (Peter E)
1700 New libpq function PQoidValue (Peter E)
1701 Show specific non-aggregate causing problem with GROUP BY (Tom)
1702 Make changes to pg_shadow recreate pg_pwd file (Peter E)
1703 Add aggregate(DISTINCT ...) (Tom)
1704 Allow flag to control COPY input/output of NULLs (Peter E)
1705 Make postgres user have a password by default (Peter E)
1706 Add CREATE/ALTER/DROP GROUP (Peter E)
1707 All administration scripts now support --long options (Peter E, Karel)
1708 Vacuumdb script now supports --all option (Peter E)
1709 ecpg new portable FETCH syntax
1710 Add ecpg EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF
1711 and EXEC SQL ENDIF directives
1712 Add pg_ctl script to control backend start-up (Tatsuo)
1713 Add postmaster.opts.default file to store start-up flags (Tatsuo)
1714 Allow --with-mb=SQL_ASCII
1715 Increase maximum number of index keys to 16 (Bruce)
1716 Increase maximum number of function arguments to 16 (Bruce)
1717 Allow configuration of maximum number of index keys and arguments (Bruce)
1718 Allow unprivileged users to change their passwords (Peter E)
1719 Password authentication enabled; required for new users (Peter E)
1720 Disallow dropping a user who owns a database (Peter E)
1721 Change initdb option --with-mb to --enable-multibyte
1722 Add option for initdb to prompts for superuser password (Peter E)
1723 Allow complex type casts like col::numeric(9,2) and col::int2::float8 (Tom)
1724 Updated user interfaces on initdb, initlocation, pg_dump, ipcclean (Peter E)
1725 New pg_char_to_encoding() and pg_encoding_to_char() functions (Tatsuo)
1726 Libpq non-blocking mode (Alfred Perlstein)
1727 Improve conversion of types in casts that don't specify a length
1728 New plperl internal programming language (Mark Hollomon)
1729 Allow COPY IN to read file that do not end with a newline (Tom)
1730 Indicate when long identifiers are truncated (Tom)
1731 Allow aggregates to use type equivalency (Peter E)
1732 Add Oracle's to_char(), to_date(), to_datetime(), to_timestamp(), to_number()
1733 conversion functions (Karel Zak <zakkr@zf.jcu.cz>)
1734 Add SELECT DISTINCT ON (expr [, expr ...]) targetlist ... (Tom)
1735 Check to be sure ORDER BY is compatible with the DISTINCT operation (Tom)
1736 Add NUMERIC and int8 types to ODBC
1737 Improve EXPLAIN results for Append, Group, Agg, Unique (Tom)
1738 Add ALTER TABLE ... ADD FOREIGN KEY (Stephan Szabo)
1739 Allow SELECT .. FOR UPDATE in PL/pgSQL (Hiroshi)
1740 Enable backward sequential scan even after reaching EOF (Hiroshi)
1741 Add btree indexing of boolean values, >= and <= (Don Baccus)
1742 Print current line number when COPY FROM fails (Massimo)
1743 Recognize POSIX time zone e.g. "PST+8" and "GMT-8" (Thomas)
1744 Add DEC as synonym for DECIMAL (Thomas)
1745 Add SESSION_USER as SQL92 keyword, same as CURRENT_USER (Thomas)
1746 Implement SQL92 column aliases (aka correlation names) (Thomas)
1747 Implement SQL92 join syntax (Thomas)
1748 Make INTERVAL reserved word allowed as a column identifier (Thomas)
1749 Implement REINDEX command (Hiroshi)
1750 Accept ALL in aggregate function SUM(ALL col) (Tom)
1751 Prevent GROUP BY from using column aliases (Tom)
1752 New psql \encoding option (Tatsuo)
1753 Allow PQrequestCancel() to terminate when in waiting-for-lock state (Hiroshi)
1754 Allow negation of a negative number in all cases
1755 Add ecpg descriptors (Christof, Michael)
1756 Allow CREATE VIEW v AS SELECT f1::char(8) FROM tbl
1757 Allow casts with length, like foo::char(8)
1758 New libpq functions PQsetClientEncoding(), PQclientEncoding() (Tatsuo)
1759 Add support for SJIS user defined characters (Tatsuo)
1760 Larger views/rules supported
1761 Make libpq's PQconndefaults() thread-safe (Tom)
1762 Disable // as comment to be ANSI conforming, should use -- (Tom)
1763 Allow column aliases on views CREATE VIEW name (collist)
1764 Fixes for views with subqueries (Tom)
1765 Allow UPDATE table SET fld = (SELECT ...) (Tom)
1766 SET command options no longer require quotes
1767 Update pgaccess to 0.98.6
1768 New SET SEED command
1769 New pg_options.sample file
1770 New SET FSYNC command (Massimo)
1771 Allow pg_descriptions when creating tables
1772 Allow pg_descriptions when creating types, columns, and functions
1773 Allow psql \copy to allow delimiters (Peter E)
1774 Allow psql to print nulls as distinct from "" [null] (Peter E)
1778 Many array fixes (Tom)
1779 Allow bare column names to be subscripted as arrays (Tom)
1780 Improve type casting of int and float constants (Tom)
1781 Cleanups for int8 inputs, range checking, and type conversion (Tom)
1782 Fix for SELECT timespan('21:11:26'::time) (Tom)
1783 netmask('x.x.x.x/0') is 255.255.255.255 instead of 0.0.0.0 (Oleg Sharoiko)
1784 Add btree index on NUMERIC (Jan)
1785 Perl fix for large objects containing NUL characters (Douglas Thomson)
1786 ODBC fix for for large objects (free)
1787 Fix indexing of cidr data type
1788 Fix for Ethernet MAC addresses (macaddr type) comparisons
1789 Fix for date/time types when overflows happened in computations (Tom)
1790 Allow array on int8 (Peter E)
1791 Fix for rounding/overflow of NUMERIC type, like NUMERIC(4,4) (Tom)
1792 Allow NUMERIC arrays
1793 Fix bugs in NUMERIC ceil() and floor() functions (Tom)
1794 Make char_length()/octet_length including trailing blanks (Tom)
1795 Made abstime/reltime use int4 instead of time_t (Peter E)
1796 New lztext data type for compressed text fields
1797 Revise code to handle coercion of int and float constants (Tom)
1798 Start at new code to implement a BIT and BIT VARYING type (Adriaan Joubert)
1799 NUMERIC now accepts scientific notation (Tom)
1800 NUMERIC to int4 rounds (Tom)
1801 Convert float4/8 to NUMERIC properly (Tom)
1802 Allow type conversion with NUMERIC (Thomas)
1803 Make ISO date style (2000-02-16 09:33) the default (Thomas)
1804 Add NATIONAL CHAR [ VARYING ] (Thomas)
1805 Allow NUMERIC round and trunc to accept negative scales (Tom)
1806 New TIME WITH TIME ZONE type (Thomas)
1807 Add MAX()/MIN() on time type (Thomas)
1808 Add abs(), mod(), fac() for int8 (Thomas)
1809 Rename functions to round(), sqrt(), cbrt(), pow() for float8 (Thomas)
1810 Add transcendental math functions (e.g. sin(), acos()) for float8 (Thomas)
1811 Add exp() and ln() for NUMERIC type
1812 Rename NUMERIC power() to pow() (Thomas)
1813 Improved TRANSLATE() function (Edwin Ramirez, Tom)
1814 Allow X=-Y operators (Tom)
1815 Allow SELECT float8(COUNT(*))/(SELECT COUNT(*) FROM t) FROM t GROUP BY f1; (Tom)
1816 Allow LOCALE to use indexes in regular expression searches (Tom)
1817 Allow creation of functional indexes to use default types
1821 Prevent exponential space consumption with many AND's and OR's (Tom)
1822 Collect attribute selectivity values for system columns (Tom)
1823 Reduce memory usage of aggregates (Tom)
1824 Fix for LIKE optimization to use indexes with multibyte encodings (Tom)
1825 Fix r-tree index optimizer selectivity (Thomas)
1826 Improve optimizer selectivity computations and functions (Tom)
1827 Optimize btree searching for cases where many equal keys exist (Tom)
1828 Enable fast LIKE index processing only if index present (Tom)
1829 Re-use free space on index pages with duplicates (Tom)
1830 Improve hash join processing (Tom)
1831 Prevent descending sort if result is already sorted(Hiroshi)
1832 Allow commuting of index scan query qualifications (Tom)
1833 Prefer index scans in cases where ORDER BY/GROUP BY is required (Tom)
1834 Allocate large memory requests in fix-sized chunks for performance (Tom)
1835 Fix vacuum's performance by reducing memory allocation requests (Tom)
1836 Implement constant-expression simplification (Bernard Frankpitt, Tom)
1837 Use secondary columns to be used to determine start of index scan (Hiroshi)
1838 Prevent quadruple use of disk space when doing internal sorting (Tom)
1839 Faster sorting by calling fewer functions (Tom)
1840 Create system indexes to match all system caches (Bruce, Hiroshi)
1841 Make system caches use system indexes (Bruce)
1842 Make all system indexes unique (Bruce)
1843 Improve pg_statistics management for VACUUM speed improvement (Tom)
1844 Flush backend cache less frequently (Tom, Hiroshi)
1845 COPY now reuses previous memory allocation, improving performance (Tom)
1846 Improve optimization cost estimation (Tom)
1847 Improve optimizer estimate of range queries x > lowbound AND x < highbound (Tom)
1848 Use DNF instead of CNF where appropriate (Tom, Taral)
1849 Further cleanup for OR-of-AND WHERE-clauses (Tom)
1850 Make use of index in OR clauses (x = 1 AND y = 2) OR (x = 2 AND y = 4) (Tom)
1851 Smarter optimizer computations for random index page access (Tom)
1852 New SET variable to control optimizer costs (Tom)
1853 Optimizer queries based on LIMIT, OFFSET, and EXISTS qualifications (Tom)
1854 Reduce optimizer internal housekeeping of join paths for speedup (Tom)
1855 Major subquery speedup (Tom)
1856 Fewer fsync writes when fsync is not disabled (Tom)
1857 Improved LIKE optimizer estimates (Tom)
1858 Prevent fsync in SELECT-only queries (Vadim)
1859 Make index creation use psort code, because it is now faster (Tom)
1860 Allow creation of sort temp tables > 1 Gig
1864 Fix for linux PPC compile
1865 New generic expression-tree-walker subroutine (Tom)
1866 Change form() to varargform() to prevent portability problems
1867 Improved range checking for large integers on Alphas
1868 Clean up #include in /include directory (Bruce)
1869 Add scripts for checking includes (Bruce)
1870 Remove un-needed #include's from *.c files (Bruce)
1871 Change #include's to use <> and "" as appropriate (Bruce)
1872 Enable WIN32 compilation of libpq
1873 Alpha spinlock fix from Uncle George <email>gatgul@voicenet.com</email>
1874 Overhaul of optimizer data structures (Tom)
1875 Fix to cygipc library (Yutaka Tanida)
1876 Allow pgsql to work on newer Cygwin snapshots (Dan)
1877 New catalog version number (Tom)
1879 Rename heap_replace to heap_update
1880 Update for QNX (Dr. Andreas Kardos)
1881 New platform-specific regression handling (Tom)
1882 Rename oid8 -> oidvector and int28 -> int2vector (Bruce)
1883 Included all yacc and lex files into the distribution (Peter E.)
1884 Remove lextest, no longer needed (Peter E)
1885 Fix for libpq and psql on Win32 (Magnus)
1886 Internally change datetime and timespan into timestamp and interval (Thomas)
1887 Fix for plpgsql on BSD/OS
1888 Add SQL_ASCII test case to the regression test (Tatsuo)
1889 configure --with-mb now deprecated (Tatsuo)
1891 NetBSD fixes (Johnny C. Lam <email>lamj@stat.cmu.edu</email>)
1892 Fixes for Alpha compiles
1893 New multibyte encodings
1899 <sect1 id="release-6-5-3">
1900 <title>Release 6.5.3</title>
1903 <title>Release date</title>
1904 <simpara>1999-10-13</simpara>
1908 This is basically a cleanup release for 6.5.2. We have added a new
1909 <application>PgAccess</> that was missing in 6.5.2, and installed an NT-specific fix.
1914 <title>Migration to version 6.5.3</title>
1917 A dump/restore is <emphasis>not</emphasis> required for those running
1922 <title>Changes</title>
1926 Updated version of pgaccess 0.98
1928 Fix dumping rules on inherited tables
1935 <sect1 id="release-6-5-2">
1936 <title>Release 6.5.2</title>
1939 <title>Release date</title>
1940 <simpara>1999-09-15</simpara>
1944 This is basically a cleanup release for 6.5.1. We have fixed a variety of
1945 problems reported by 6.5.1 users.
1950 <title>Migration to version 6.5.2</title>
1953 A dump/restore is <emphasis>not</emphasis> required for those running
1959 <title>Changes</title>
1963 subselect+CASE fixes(Tom)
1964 Add SHLIB_LINK setting for solaris_i386 and solaris_sparc ports(Daren Sefcik)
1965 Fixes for CASE in WHERE join clauses(Tom)
1966 Fix BTScan abort(Tom)
1967 Repair the check for redundant UNIQUE and PRIMARY KEY indexes(Thomas)
1968 Improve it so that it checks for multicolumn constraints(Thomas)
1969 Fix for Win32 making problem with MB enabled(Hiroki Kataoka)
1970 Allow BSD yacc and bison to compile pl code(Bruce)
1971 Fix SET NAMES working
1973 Fix vacuum's memory consumption(Hiroshi,Tatsuo)
1974 Reduce the total memory consumption of vacuum(Tom)
1975 Fix for timestamp(datetime)
1976 Rule deparsing bugfixes(Tom)
1977 Fix quoting problems in mkMakefile.tcldefs.sh.in and mkMakefile.tkdefs.sh.in(Tom)
1978 This is to re-use space on index pages freed by vacuum(Vadim)
1979 document -x for pg_dump(Bruce)
1980 Fix for unary operators in rule deparser(Tom)
1981 Comment out FileUnlink of excess segments during mdtruncate()(Tom)
1982 IRIX linking fix from Yu Cao >yucao@falcon.kla-tencor.com<
1983 Repair logic error in LIKE: should not return LIKE_ABORT
1984 when reach end of pattern before end of text(Tom)
1985 Repair incorrect cleanup of heap memory allocation during transaction abort(Tom)
1986 Updated version of pgaccess 0.98
1992 <sect1 id="release-6-5-1">
1993 <title>Release 6.5.1</title>
1996 <title>Release date</title>
1997 <simpara>1999-07-15</simpara>
2001 This is basically a cleanup release for 6.5. We have fixed a variety of
2002 problems reported by 6.5 users.
2006 <title>Migration to version 6.5.1</title>
2009 A dump/restore is <emphasis>not</emphasis> required for those running
2015 <title>Changes</title>
2020 Portability fixes for linux_ppc, IRIX, linux_alpha, OpenBSD, alpha
2021 Remove QUERY_LIMIT, use SELECT...LIMIT
2022 Fix for EXPLAIN on inheritance(Tom)
2023 Patch to allow vacuum on multisegment tables(Hiroshi)
2024 R-Tree optimizer selectivity fix(Tom)
2025 ACL file descriptor leak fix(Atsushi Ogawa)
2026 New expresssion subtree code(Tom)
2027 Avoid disk writes for read-only transactions(Vadim)
2028 Fix for removal of temp tables if last transaction was aborted(Bruce)
2029 Fix to prevent too large tuple from being created(Bruce)
2031 Allow port numbers 32k - 64k(Bruce)
2032 Add ^ precidence(Bruce)
2033 Rename sort files called pg_temp to pg_sorttemp(Bruce)
2034 Fix for microseconds in time values(Tom)
2035 Tutorial source cleanup
2037 Fix for sorting of NULL's in some cases(Tom)
2038 Shared library dependencies fixed (Tom)
2039 Fixed glitches affecting GROUP BY in subselects(Tom)
2040 Fix some compiler warnings (Tomoaki Nishiyama)
2041 Add Win1250 (Czech) support (Pavel Behal)
2047 <sect1 id="release-6-5">
2048 <title>Release 6.5</title>
2051 <title>Release date</title>
2052 <simpara>1999-06-09</simpara>
2056 This release marks a major step in the development team's mastery of the source
2057 code we inherited from Berkeley. You will see we are now easily adding
2058 major features, thanks to the increasing size and experience of our
2059 world-wide development team.
2063 Here is a brief summary of the more notable changes:
2068 Multiversion concurrency control(MVCC)
2072 This removes our old
2073 table-level locking, and replaces it with a locking system that is
2074 superior to most commercial database systems. In a traditional system,
2075 each row that is modified is locked until committed, preventing reads by
2076 other users. MVCC uses the natural multiversion nature of PostgreSQL
2077 to allow readers to continue reading consistent data during writer
2078 activity. Writers continue to use the compact pg_log transaction
2079 system. This is all performed without having to allocate a lock for
2080 every row like traditional database systems. So, basically, we no
2081 longer are restricted by simple table-level locking;
2082 we have something better than row-level locking.
2089 Hot backups from <application>pg_dump</application>
2093 <application>pg_dump</application> takes advantage of the new
2094 MVCC features to give a consistent database dump/backup while
2095 the database stays online and available for queries.
2106 We now have a true numeric data type, with
2107 user-specified precision.
2118 Temporary tables are guaranteed to have unique names
2119 within a database session, and are destroyed on session exit.
2130 We now have CASE, INTERSECT, and EXCEPT statement
2131 support. We have new LIMIT/OFFSET, SET TRANSACTION ISOLATION LEVEL,
2132 SELECT ... FOR UPDATE, and an improved LOCK TABLE command.
2143 We continue to speed up PostgreSQL, thanks to the variety of
2144 talents within our team. We have sped up memory allocation,
2145 optimization, table joins, and row transfer routines.
2156 We continue to expand our port list, this time including
2157 <systemitem class="osname">Windows NT</>/<systemitem>ix86</> and <systemitem class="osname">NetBSD</>/<systemitem>arm32</>.
2168 Most interfaces have new versions, and existing functionality
2180 New and updated material is present throughout the
2181 documentation. New <acronym>FAQ</acronym>s have been
2182 contributed for <systemitem class="osname">SGI</> and <systemitem class="osname">AIX</> platforms.
2183 The <citetitle>Tutorial</citetitle> has introductory information
2184 on <acronym>SQL</acronym> from Stefan Simkovics.
2185 For the <citetitle>User's Guide</citetitle>, there are
2186 reference pages covering the postmaster and more utility
2187 programs, and a new appendix
2188 contains details on date/time behavior.
2189 The <citetitle>Administrator's Guide</citetitle> has a new
2190 chapter on troubleshooting from Tom Lane.
2191 And the <citetitle>Programmer's Guide</citetitle> has a
2192 description of query processing, also from Stefan, and details
2193 on obtaining the <productname>PostgreSQL</productname> source
2194 tree via anonymous <productname>CVS</productname> and
2195 <productname>CVSup</productname>.
2203 <title>Migration to version 6.5</title>
2206 A dump/restore using <application>pg_dump</application>
2207 is required for those wishing to migrate data from any
2208 previous release of <productname>PostgreSQL</productname>.
2209 <application>pg_upgrade</application> can <emphasis>not</emphasis>
2210 be used to upgrade to this release because the on-disk structure
2211 of the tables has changed compared to previous releases.
2215 The new Multiversion Concurrency Control (MVCC) features can
2216 give somewhat different behaviors in multiuser
2217 environments. <emphasis>Read and understand the following section
2218 to ensure that your existing applications will give you the
2219 behavior you need.</emphasis>
2223 <title>Multiversion Concurrency Control</title>
2226 Because readers in 6.5 don't lock data, regardless of transaction
2227 isolation level, data read by one transaction can be overwritten by
2228 another. In other words, if a row is returned by
2229 <command>SELECT</command> it doesn't mean that this row really exists
2230 at the time it is returned (i.e. sometime after the statement or
2231 transaction began) nor that the row is protected from being deleted or
2232 updated by concurrent transactions before the current transaction does
2233 a commit or rollback.
2237 To ensure the actual existence of a row and protect it against
2238 concurrent updates one must use <command>SELECT FOR UPDATE</command> or
2239 an appropriate <command>LOCK TABLE</command> statement. This should be
2240 taken into account when porting applications from previous releases of
2241 <productname>PostgreSQL</productname> and other environments.
2245 Keep the above in mind if you are using
2246 <filename>contrib/refint.*</filename> triggers for
2247 referential integrity. Additional techniques are required now. One way is
2248 to use <command>LOCK parent_table IN SHARE ROW EXCLUSIVE MODE</command>
2249 command if a transaction is going to update/delete a primary key and
2250 use <command>LOCK parent_table IN SHARE MODE</command> command if a
2251 transaction is going to update/insert a foreign key.
2255 Note that if you run a transaction in SERIALIZABLE mode then you must
2256 execute the <command>LOCK</command> commands above before execution of any
2257 <acronym>DML</acronym> statement
2258 (<command>SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO</command>) in the
2265 These inconveniences will disappear in the future
2266 when the ability to read dirty
2267 (uncommitted) data (regardless of isolation level) and true referential
2268 integrity will be implemented.
2274 <title>Changes</title>
2280 Fix text<->float8 and text<->float4 conversion functions(Thomas)
2281 Fix for creating tables with mixed-case constraints(Billy)
2282 Change exp()/pow() behavior to generate error on underflow/overflow(Jan)
2283 Fix bug in pg_dump -z
2284 Memory overrun cleanups(Tatsuo)
2285 Fix for lo_import crash(Tatsuo)
2286 Adjust handling of data type names to suppress double quotes(Thomas)
2287 Use type coercion for matching columns and DEFAULT(Thomas)
2288 Fix deadlock so it only checks once after one second of sleep(Bruce)
2289 Fixes for aggregates and PL/pgsql(Hiroshi)
2290 Fix for subquery crash(Vadim)
2291 Fix for libpq function PQfnumber and case-insensitive names(Bahman Rafatjoo)
2292 Fix for large object write-in-middle, no extra block, memory consumption(Tatsuo)
2293 Fix for pg_dump -d or -D and quote special characters in INSERT
2294 Repair serious problems with dynahash(Tom)
2295 Fix INET/CIDR portability problems
2296 Fix problem with selectivity error in ALTER TABLE ADD COLUMN(Bruce)
2297 Fix executor so mergejoin of different column types works(Tom)
2298 Fix for Alpha OR selectivity bug
2299 Fix OR index selectivity problem(Bruce)
2300 Fix so \d shows proper length for char()/varchar()(Ryan)
2301 Fix tutorial code(Clark)
2302 Improve destroyuser checking(Oliver)
2303 Fix for Kerberos(Rodney McDuff)
2304 Fix for dropping database while dirty buffers(Bruce)
2305 Fix so sequence nextval() can be case-sensitive(Bruce)
2307 Drop buffers before destroying database files(Bruce)
2308 Fix case where executor evaluates functions twice(Tatsuo)
2309 Allow sequence nextval actions to be case-sensitive(Bruce)
2310 Fix optimizer indexing not working for negative numbers(Bruce)
2311 Fix for memory leak in executor with fjIsNull
2312 Fix for aggregate memory leaks(Erik Riedel)
2313 Allow username containing a dash GRANT permissions
2314 Cleanup of NULL in inet types
2315 Clean up system table bugs(Tom)
2316 Fix problems of PAGER and \? command(Masaaki Sakaida)
2317 Reduce default multisegment file size limit to 1GB(Peter)
2318 Fix for dumping of CREATE OPERATOR(Tom)
2319 Fix for backward scanning of cursors(Hiroshi Inoue)
2320 Fix for COPY FROM STDIN when using \i(Tom)
2321 Fix for subselect is compared inside an expression(Jan)
2322 Fix handling of error reporting while returning rows(Tom)
2323 Fix problems with reference to array types(Tom,Jan)
2324 Prevent UPDATE SET oid(Jan)
2325 Fix pg_dump so -t option can handle case-sensitive tablenames
2326 Fixes for GROUP BY in special cases(Tom, Jan)
2327 Fix for memory leak in failed queries(Tom)
2328 DEFAULT now supports mixed-case identifiers(Tom)
2329 Fix for multisegment uses of DROP/RENAME table, indexes(Ole Gjerde)
2330 Disable use of pg_dump with both -o and -d options(Bruce)
2331 Allow pg_dump to properly dump GROUP permissions(Bruce)
2332 Fix GROUP BY in INSERT INTO table SELECT * FROM table2(Jan)
2333 Fix for computations in views(Jan)
2334 Fix for aggregates on array indexes(Tom)
2335 Fix for DEFAULT handles single quotes in value requiring too many quotes
2336 Fix security problem with non-super users importing/exporting large objects(Tom)
2337 Rollback of transaction that creates table cleaned up properly(Tom)
2338 Fix to allow long table and column names to generate proper serial names(Tom)
2342 Add "vacuumdb" utility
2343 Speed up libpq by allocating memory better(Tom)
2344 EXPLAIN all indexes used(Tom)
2345 Implement CASE, COALESCE, NULLIF expression(Thomas)
2346 New pg_dump table output format(Constantin)
2347 Add string min()/max() functions(Thomas)
2348 Extend new type coercion techniques to aggregates(Thomas)
2349 New moddatetime contrib(Terry)
2350 Update to pgaccess 0.96(Constantin)
2351 Add routines for single-byte "char" type(Thomas)
2352 Improved substr() function(Thomas)
2353 Improved multibyte handling(Tatsuo)
2354 Multiversion concurrency control/MVCC(Vadim)
2355 New Serialized mode(Vadim)
2356 Fix for tables over 2gigs(Peter)
2357 New SET TRANSACTION ISOLATION LEVEL(Vadim)
2358 New LOCK TABLE IN ... MODE(Vadim)
2359 Update ODBC driver(Byron)
2360 New NUMERIC data type(Jan)
2361 New SELECT FOR UPDATE(Vadim)
2362 Handle "NaN" and "Infinity" for input values(Jan)
2363 Improved date/year handling(Thomas)
2364 Improved handling of backend connections(Magnus)
2365 New options ELOG_TIMESTAMPS and USE_SYSLOG options for log files(Massimo)
2366 New TCL_ARRAYS option(Massimo)
2367 New INTERSECT and EXCEPT(Stefan)
2368 New pg_index.indisprimary for primary key tracking(D'Arcy)
2369 New pg_dump option to allow dropping of tables before creation(Brook)
2370 Speedup of row output routines(Tom)
2371 New READ COMMITTED isolation level(Vadim)
2372 New TEMP tables/indexes(Bruce)
2373 Prevent sorting if result is already sorted(Jan)
2374 New memory allocation optimization(Jan)
2375 Allow psql to do \p\g(Bruce)
2376 Allow multiple rule actions(Jan)
2377 Added LIMIT/OFFSET functionality(Jan)
2378 Improve optimizer when joining a large number of tables(Bruce)
2379 New intro to SQL from S. Simkovics' Master's Thesis (Stefan, Thomas)
2380 New intro to backend processing from S. Simkovics' Master's Thesis (Stefan)
2381 Improved int8 support(Ryan Bradetich, Thomas, Tom)
2382 New routines to convert between int8 and text/varchar types(Thomas)
2383 New bushy plans, where meta-tables are joined(Bruce)
2384 Enable right-hand queries by default(Bruce)
2385 Allow reliable maximum number of backends to be set at configure time
2386 (--with-maxbackends and postmaster switch (-N backends))(Tom)
2387 GEQO default now 10 tables because of optimizer speedups(Tom)
2388 Allow NULL=Var for MS-SQL portability(Michael, Bruce)
2389 Modify contrib check_primary_key() so either "automatic" or "dependent"(Anand)
2390 Allow psql \d on a view show query(Ryan)
2391 Speedup for LIKE(Bruce)
2392 Ecpg fixes/features, see src/interfaces/ecpg/ChangeLog file(Michael)
2393 JDBC fixes/features, see src/interfaces/jdbc/CHANGELOG(Peter)
2394 Make % operator have precedence like /(Bruce)
2395 Add new postgres -O option to allow system table structure changes(Bruce)
2396 Update contrib/pginterface/findoidjoins script(Tom)
2397 Major speedup in vacuum of deleted rows with indexes(Vadim)
2398 Allow non-SQL functions to run different versions based on arguments(Tom)
2399 Add -E option that shows actual queries sent by \dt and friends(Masaaki Sakaida)
2400 Add version number in start-up banners for psql(Masaaki Sakaida)
2401 New contrib/vacuumlo removes large objects not referenced(Peter)
2402 New initialization for table sizes so non-vacuumed tables perform better(Tom)
2403 Improve error messages when a connection is rejected(Tom)
2404 Support for arrays of char() and varchar() fields(Massimo)
2405 Overhaul of hash code to increase reliability and performance(Tom)
2406 Update to PyGreSQL 2.4(D'Arcy)
2407 Changed debug options so -d4 and -d5 produce different node displays(Jan)
2408 New pg_options: pretty_plan, pretty_parse, pretty_rewritten(Jan)
2409 Better optimization statistics for system table access(Tom)
2410 Better handling of non-default block sizes(Massimo)
2411 Improve GEQO optimizer memory consumption(Tom)
2412 UNION now suppports ORDER BY of columns not in target list(Jan)
2413 Major libpq++ improvements(Vince Vielhaber)
2414 pg_dump now uses -z(ACL's) as default(Bruce)
2415 backend cache, memory speedups(Tom)
2416 have pg_dump do everything in one snapshot transaction(Vadim)
2417 fix for large object memory leakage, fix for pg_dumping(Tom)
2418 INET type now respects netmask for comparisons
2419 Make VACUUM ANALYZE only use a readlock(Vadim)
2420 Allow VIEWs on UNIONS(Jan)
2421 pg_dump now can generate consistent snapshots on active databases(Vadim)
2425 Improve port matching(Tom)
2426 Portability fixes for SunOS
2427 Add NT/Win32 backend port and enable dynamic loading(Magnus and Daniel Horak)
2428 New port to Cobalt Qube(Mips) running Linux(Tatsuo)
2429 Port to NetBSD/m68k(Mr. Mutsuki Nakajima)
2430 Port to NetBSD/sun3(Mr. Mutsuki Nakajima)
2431 Port to NetBSD/macppc(Toshimi Aoki)
2432 Fix for tcl/tk configuration(Vince)
2433 Removed CURRENT keyword for rule queries(Jan)
2434 NT dynamic loading now works(Daniel Horak)
2435 Add ARM32 support(Andrew McMurry)
2436 Better support for HP-UX 11 and UnixWare
2437 Improve file handling to be more uniform, prevent file descriptor leak(Tom)
2438 New install commands for plpgsql(Jan)
2445 <sect1 id="release-6-4-2">
2446 <title>Release 6.4.2</title>
2449 <title>Release date</title>
2450 <simpara>1998-12-20</simpara>
2454 The 6.4.1 release was improperly packaged. This also has one additional
2460 <title>Migration to version 6.4.2</title>
2463 A dump/restore is <emphasis>not</emphasis> required for those running
2468 <title>Changes</title>
2472 Fix for datetime constant problem on some platforms(Thomas)
2480 <sect1 id="release-6-4-1">
2481 <title>Release 6.4.1</title>
2484 <title>Release date</title>
2485 <simpara>1998-12-18</simpara>
2489 This is basically a cleanup release for 6.4. We have fixed a variety of
2490 problems reported by 6.4 users.
2495 <title>Migration to version 6.4.1</title>
2498 A dump/restore is <emphasis>not</emphasis> required for those running
2503 <title>Changes</title>
2507 Add pg_dump -N flag to force double quotes around identifiers. This is
2509 Fix for NOT in where clause causing crash(Bruce)
2510 EXPLAIN VERBOSE coredump fix(Vadim)
2511 Fix shared-library problems on Linux
2512 Fix test for table existance to allow mixed-case and whitespace in
2513 the table name(Thomas)
2514 Fix a couple of pg_dump bugs
2515 Configure matches template/.similar entries better(Tom)
2516 Change builtin function names from SPI_* to spi_*
2517 OR WHERE clause fix(Vadim)
2518 Fixes for mixed-case table names(Billy)
2519 contrib/linux/postgres.init.csh/sh fix(Thomas)
2520 libpq memory overrun fix
2522 Change exp() behavior to generate error on underflow(Thomas)
2523 pg_dump fixes for memory leak, inheritance constraints, layout change
2524 update pgaccess to 0.93
2525 Fix prototype for 64-bit platforms
2526 Multibyte fixes(Tatsuo)
2528 Fix memory overruns(Tatsuo)
2529 Fix for lo_import() crash(Bruce)
2530 Better search for install program(Tom)
2533 Use implicit type coercion for matching DEFAULT values(Thomas)
2534 Add routines to help with single-byte (internal) character type(Thomas)
2535 Compilation of libpq for Win32 fixes(Magnus)
2536 Upgrade to PyGreSQL 2.2(D'Arcy)
2544 <sect1 id="release-6-4">
2545 <title>Release 6.4</title>
2548 <title>Release date</title>
2549 <simpara>1998-10-30</simpara>
2553 There are <emphasis>many</emphasis> new features and improvements in this release.
2554 Thanks to our developers and maintainers, nearly every aspect of the system
2555 has received some attention since the previous release.
2556 Here is a brief, incomplete summary:
2561 Views and rules are now functional thanks to extensive new code in the
2562 rewrite rules system from Jan Wieck. He also wrote a chapter on it
2563 for the <citetitle>Programmer's Guide</citetitle>.
2568 Jan also contributed a second procedural language, <application>PL/pgSQL</application>, to go with the
2569 original <application>PL/pgTCL</application> procedural language he contributed last release.
2575 We have optional multiple-byte character set support from Tatsuo Ishii
2576 to complement our existing locale support.
2582 Client/server communications has been cleaned up, with better support for
2583 asynchronous messages and interrupts thanks to Tom Lane.
2589 The parser will now perform automatic type coercion to match arguments
2590 to available operators and functions, and to match columns and expressions
2591 with target columns. This uses a generic mechanism which supports
2592 the type extensibility features of <productname>PostgreSQL</productname>.
2593 There is a new chapter in the <citetitle>User's Guide</citetitle>
2594 which covers this topic.
2600 Three new data types have been added.
2601 Two types, <type>inet</type> and <type>cidr</type>, support various forms
2602 of IP network, subnet, and machine addressing. There is now an 8-byte integer
2603 type available on some platforms. See the chapter on data types
2604 in the <citetitle>User's Guide</citetitle> for details.
2605 A fourth type, <type>serial</type>, is now supported by the parser as an
2606 amalgam of the <type>int4</type> type, a sequence, and a unique index.
2612 Several more <acronym>SQL92</acronym>-compatible syntax features have been
2613 added, including <command>INSERT DEFAULT VALUES</command>
2619 The automatic configuration and installation system has received some
2620 attention, and should be more robust for more platforms than it has ever
2629 <title>Migration to version 6.4</title>
2632 A dump/restore using <application>pg_dump</application>
2633 or <application>pg_dumpall</application>
2634 is required for those wishing to migrate data from any
2635 previous release of <productname>PostgreSQL</productname>.
2640 <title>Changes</title>
2646 Fix for a tiny memory leak in PQsetdb/PQfinish(Bryan)
2647 Remove char2-16 data types, use char/varchar(Darren)
2648 Pqfn not handles a NOTICE message(Anders)
2649 Reduced busywaiting overhead for spinlocks with many backends (dg)
2650 Stuck spinlock detection (dg)
2651 Fix up "ISO-style" timespan decoding and encoding(Thomas)
2652 Fix problem with table drop after rollback of transaction(Vadim)
2653 Change error message and remove non-functional update message(Vadim)
2654 Fix for COPY array checking
2655 Fix for SELECT 1 UNION SELECT NULL
2656 Fix for buffer leaks in large object calls(Pascal)
2657 Change owner from oid to int4 type(Bruce)
2658 Fix a bug in the oracle compatibility functions btrim() ltrim() and rtrim()
2659 Fix for shared invalidation cache overflow(Massimo)
2660 Prevent file descriptor leaks in failed COPY's(Bruce)
2661 Fix memory leak in libpgtcl's pg_select(Constantin)
2662 Fix problems with username/passwords over 8 characters(Tom)
2663 Fix problems with handling of asynchronous NOTIFY in backend(Tom)
2664 Fix of many bad system table entries(Tom)
2668 Upgrade ecpg and ecpglib,see src/interfaces/ecpc/ChangeLog(Michael)
2669 Show the index used in an EXPLAIN(Zeugswetter)
2670 EXPLAIN invokes rule system and shows plan(s) for rewritten queries(Jan)
2671 Multibyte awareness of many data types and functions, via configure(Tatsuo)
2672 New configure --with-mb option(Tatsuo)
2673 New initdb --pgencoding option(Tatsuo)
2674 New createdb -E multibyte option(Tatsuo)
2675 Select version(); now returns PostgreSQL version(Jeroen)
2676 Libpq now allows asynchronous clients(Tom)
2677 Allow cancel from client of backend query(Tom)
2678 Psql now cancels query with Control-C(Tom)
2679 Libpq users need not issue dummy queries to get NOTIFY messages(Tom)
2680 NOTIFY now sends sender's PID, so you can tell whether it was your own(Tom)
2681 PGresult struct now includes associated error message, if any(Tom)
2682 Define "tz_hour" and "tz_minute" arguments to date_part()(Thomas)
2683 Add routines to convert between varchar and bpchar(Thomas)
2684 Add routines to allow sizing of varchar and bpchar into target columns(Thomas)
2685 Add bit flags to support timezonehour and minute in data retrieval(Thomas)
2686 Allow more variations on valid floating point numbers (e.g. ".1", "1e6")(Thomas)
2687 Fixes for unary minus parsing with leading spaces(Thomas)
2688 Implement TIMEZONE_HOUR, TIMEZONE_MINUTE per SQL92 specs(Thomas)
2689 Check for and properly ignore FOREIGN KEY column constraints(Thomas)
2690 Define USER as synonym for CURRENT_USER per SQL92 specs(Thomas)
2691 Enable HAVING clause but no fixes elsewhere yet.
2692 Make "char" type a synonym for "char(1)" (actually implemented as bpchar)(Thomas)
2693 Save string type if specified for DEFAULT clause handling(Thomas)
2694 Coerce operations involving different data types(Thomas)
2695 Allow some index use for columns of different types(Thomas)
2696 Add capabilities for automatic type conversion(Thomas)
2697 Cleanups for large objects, so file is truncated on open(Peter)
2698 Readline cleanups(Tom)
2699 Allow psql \f \ to make spaces as delimiter(Bruce)
2700 Pass pg_attribute.atttypmod to the frontend for column field lengths(Tom,Bruce)
2701 Msql compatibility library in /contrib(Aldrin)
2702 Remove the requirement that ORDER/GROUP BY clause identifiers be
2703 included in the target list(David)
2704 Convert columns to match columns in UNION clauses(Thomas)
2705 Remove fork()/exec() and only do fork()(Bruce)
2706 Jdbc cleanups(Peter)
2707 Show backend status on ps command line(only works on some platforms)(Bruce)
2708 Pg_hba.conf now has a sameuser option in the database field
2709 Make lo_unlink take oid param, not int4
2710 New DISABLE_COMPLEX_MACRO for compilers that can't handle our macros(Bruce)
2711 Libpgtcl now handles NOTIFY as a Tcl event, need not send dummy queries(Tom)
2712 libpgtcl cleanups(Tom)
2713 Add -error option to libpgtcl's pg_result command(Tom)
2714 New locale patch, see docs/README/locale(Oleg)
2715 Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb)
2716 New contrib/lo code for large object orphan removal(Peter)
2717 New psql command "SET CLIENT_ENCODING TO 'encoding'" for multibytes
2718 feature, see /doc/README.mb(Tatsuo)
2719 /contrib/noupdate code to revoke update permission on a column
2720 Libpq can now be compiled on win32(Magnus)
2721 Add PQsetdbLogin() in libpq
2722 New 8-byte integer type, checked by configure for OS support(Thomas)
2723 Better support for quoted table/column names(Thomas)
2724 Surround table and column names with double-quotes in pg_dump(Thomas)
2725 PQreset() now works with passwords(Tom)
2726 Handle case of GROUP BY target list column number out of range(David)
2727 Allow UNION in subselects
2728 Add auto-size to screen to \d? commands(Bruce)
2729 Use UNION to show all \d? results in one query(Bruce)
2730 Add \d? field search feature(Bruce)
2731 Pg_dump issues fewer \connect requests(Tom)
2732 Make pg_dump -z flag work better, document it in manual page(Tom)
2733 Add HAVING clause with full support for subselects and unions(Stephan)
2734 Full text indexing routines in contrib/fulltextindex(Maarten)
2735 Transaction ids now stored in shared memory(Vadim)
2736 New PGCLIENTENCODING when issuing COPY command(Tatsuo)
2737 Support for SQL92 syntax "SET NAMES"(Tatsuo)
2738 Support for LATIN2-5(Tatsuo)
2739 Add UNICODE regression test case(Tatsuo)
2740 Lock manager cleanup, new locking modes for LLL(Vadim)
2741 Allow index use with OR clauses(Bruce)
2742 Allows "SELECT NULL ORDER BY 1;"
2743 Explain VERBOSE prints the plan, and now pretty-prints the plan to
2744 the postmaster log file(Bruce)
2745 Add indexes display to \d command(Bruce)
2746 Allow GROUP BY on functions(David)
2747 New pg_class.relkind for large objects(Bruce)
2748 New way to send libpq NOTICE messages to a different location(Tom)
2749 New \w write command to psql(Bruce)
2750 New /contrib/findoidjoins scans oid columns to find join relationships(Bruce)
2751 Allow binary-compatible indexes to be considered when checking for valid
2752 Indexes for restriction clauses containing a constant(Thomas)
2753 New ISBN/ISSN code in /contrib/isbn_issn
2754 Allow NOT LIKE, IN, NOT IN, BETWEEN, and NOT BETWEEN constraint(Thomas)
2755 New rewrite system fixes many problems with rules and views(Jan)
2756 * Rules on relations work
2757 * Event qualifications on insert/update/delete work
2758 * New OLD variable to reference CURRENT, CURRENT will be remove in future
2759 * Update rules can reference NEW and OLD in rule qualifications/actions
2760 * Insert/update/delete rules on views work
2761 * Multiple rule actions are now supported, surrounded by parentheses
2762 * Regular users can create views/rules on tables they have RULE permits
2763 * Rules and views inherit the permissions on the creator
2764 * No rules at the column level
2765 * No UPDATE NEW/OLD rules
2766 * New pg_tables, pg_indexes, pg_rules and pg_views system views
2767 * Only a single action on SELECT rules
2768 * Total rewrite overhaul, perhaps for 6.5
2770 * handle aggregates on views
2771 * handle insert into select from view works
2772 System indexes are now multikey(Bruce)
2773 Oidint2, oidint4, and oidname types are removed(Bruce)
2774 Use system cache for more system table lookups(Bruce)
2775 New backend programming language PL/pgSQL in backend/pl(Jan)
2776 New SERIAL data type, auto-creates sequence/index(Thomas)
2777 Enable assert checking without a recompile(Massimo)
2778 User lock enhancements(Massimo)
2779 New setval() command to set sequence value(Massimo)
2780 Auto-remove unix socket file on start-up if no postmaster running(Massimo)
2781 Conditional trace package(Massimo)
2782 New UNLISTEN command(Massimo)
2783 Psql and libpq now compile under win32 using win32.mak(Magnus)
2784 Lo_read no longer stores trailing NULL(Bruce)
2785 Identifiers are now truncated to 31 characters internally(Bruce)
2786 Createuser options now availble on the command line
2787 Code for 64-bit integer supported added, configure tested, int8 type(Thomas)
2788 Prevent file descriptor leaf from failed COPY(Bruce)
2789 New pg_upgrade command(Bruce)
2790 Updated /contrib directories(Massimo)
2791 New CREATE TABLE DEFAULT VALUES statement available(Thomas)
2792 New INSERT INTO TABLE DEFAULT VALUES statement available(Thomas)
2793 New DECLARE and FETCH feature(Thomas)
2794 libpq's internal structures now not exported(Tom)
2795 Allow up to 8 key indexes(Bruce)
2796 Remove ARCHIVE keyword, that is no longer used(Thomas)
2797 pg_dump -n flag to supress quotes around indentifiers
2798 disable system columns for views(Jan)
2799 new INET and CIDR types for network addresses(TomH, Paul)
2800 no more double quotes in psql output
2801 pg_dump now dumps views(Terry)
2802 new SET QUERY_LIMIT(Tatsuo,Jan)
2806 /contrib cleanup(Jun)
2807 Inline some small functions called for every row(Bruce)
2810 Multibyte regression tests(Soonmyung.)
2811 Remove --disabled options from configure
2812 Define PGDOC to use POSTGRESDIR by default
2813 Make regression optional
2814 Remove extra braces code to pgindent(Bruce)
2815 Add bsdi shared library support(Bruce)
2816 New --without-CXX support configure option(Brook)
2818 Update backend flowchart in tools/backend(Bruce)
2819 Change atttypmod from int16 to int32(Bruce, Tom)
2820 Getrusage() fix for platforms that do not have it(Tom)
2821 Add PQconnectdb, PGUSER, PGPASSWORD to libpq man page
2822 NS32K platform fixes(Phil Nelson, John Buller)
2823 SCO 7/UnixWare 2.x fixes(Billy,others)
2824 Sparc/Solaris 2.5 fixes(Ryan)
2825 Pgbuiltin.3 is obsolete, move to doc files(Thomas)
2826 Even more documention(Thomas)
2827 Nextstep support(Jacek)
2829 pginterface manual page(Bruce)
2830 shared libraries all have version numbers
2831 merged all OS-specific shared library defines into one file
2832 smarter TCL/TK configuration checking(Billy)
2833 smarter perl configuration(Brook)
2834 configure uses supplied install-sh if no install script found(Tom)
2835 new Makefile.shlib for shared library configuration(Tom)
2841 <sect1 id="release-6-3-2">
2842 <title>Release 6.3.2</title>
2845 <title>Release date</title>
2846 <simpara>1998-04-07</simpara>
2850 This is a bug-fix release for 6.3.x.
2851 Refer to the release notes for version 6.3 for a more complete summary of new features.
2859 Repairs automatic configuration support for some platforms, including Linux,
2860 from breakage inadvertently introduced in version 6.3.1.
2866 Correctly handles function calls on the left side of BETWEEN and LIKE clauses.
2873 A dump/restore is NOT required for those running 6.3 or 6.3.1. A
2874 <literal>make distclean</>, <literal>make</>, and <literal>make install</> is all that is required.
2875 This last step should be performed while the postmaster is not running.
2876 You should re-link any custom applications that use <productname>PostgreSQL</productname> libraries.
2879 For upgrades from pre-6.3 installations,
2880 refer to the installation and migration instructions for version 6.3.
2884 <title>Changes</title>
2888 Configure detection improvements for tcl/tk(Brook Milligan, Alvin)
2889 Manual page improvements(Bruce)
2890 BETWEEN and LIKE fix(Thomas)
2891 fix for psql \connect used by pg_dump(Oliver Elphick)
2893 pgaccess, version 0.86
2894 qsort removed, now uses libc version, cleanups(Jeroen)
2895 fix for buffer over-runs detected(Maurice Gittens)
2896 fix for buffer overrun in libpgtcl(Randy Kunkee)
2897 fix for UNION with DISTINCT or ORDER BY(Bruce)
2898 gettimeofday configure check(Doug Winterburn)
2899 Fix "indexes not used" bug(Vadim)
2900 docs additions(Thomas)
2901 Fix for backend memory leak(Bruce)
2902 libreadline cleanup(Erwan MAS)
2903 Remove DISTDIR(Bruce)
2904 Makefile dependency cleanup(Jeroen van Vianen)
2911 <sect1 id="release-6-3-1">
2912 <title>Release 6.3.1</title>
2915 <title>Release date</title>
2916 <simpara>1998-03-23</simpara>
2925 Additional support for multibyte character sets.
2931 Repair byte ordering for mixed-endian clients and servers.
2937 Minor updates to allowed SQL syntax.
2943 Improvements to the configuration autodetection for installation.
2950 A dump/restore is NOT required for those running 6.3. A
2951 <literal>make distclean</>, <literal>make</>, and <literal>make install</> is all that is required.
2952 This last step should be performed while the postmaster is not running.
2953 You should re-link any custom applications that use <productname>PostgreSQL</productname> libraries.
2956 For upgrades from pre-6.3 installations,
2957 refer to the installation and migration instructions for version 6.3.
2961 <title>Changes</title>
2965 ecpg cleanup/fixes, now version 1.1(Michael Meskes)
2966 pg_user cleanup(Bruce)
2967 large object fix for pg_dump and tclsh (alvin)
2968 LIKE fix for multiple adjacent underscores
2969 fix for redefining builtin functions(Thomas)
2971 upgrade to pg_access 0.83
2972 updated CLUSTER manual page
2973 multibyte character set support, see doc/README.mb(Tatsuo)
2974 configure --with-pgport fix
2976 big-endian fix for backend communications(Kataoka)
2977 SUBSTR() and substring() fix(Jan)
2978 several jdbc fixes(Peter)
2979 libpgtcl improvements, see libptcl/README(Randy Kunkee)
2980 Fix for "Datasize = 0" error(Vadim)
2981 Prevent \do from wrapping(Bruce)
2982 Remove duplicate Russian character set entries
2984 Allow optional TABLE keyword in LOCK and SELECT INTO(Thomas)
2985 CREATE SEQUENCE options to allow a negative integer(Thomas)
2986 Add "PASSWORD" as an allowed column identifier(Thomas)
2987 Add checks for UNION target fields(Bruce)
2988 Fix Alpha port(Dwayne Bailey)
2989 Fix for text arrays containing quotes(Doug Gibson)
2990 Solaris compile fix(Albert Chin-A-Young)
2991 Better identify tcl and tk libs and includes(Bruce)
2997 <sect1 id="release-6-3">
2998 <title>Release 6.3</title>
3001 <title>Release date</title>
3002 <simpara>1998-03-01</simpara>
3006 There are <emphasis>many</emphasis> new features and improvements in this release.
3007 Here is a brief, incomplete summary:
3012 Many new SQL features, including
3013 full <acronym>SQL92</acronym> subselect capability
3014 (everything is here but target-list subselects).
3020 Support for client-side environment variables to specify time zone and date style.
3026 Socket interface for client/server connection. This is the default now
3027 so you may need to start <application>postmaster</application> with the
3028 <option>-i</option> flag.
3034 Better password authorization mechanisms. Default table permissions have changed.
3040 Old-style <firstterm>time travel</firstterm>
3041 has been removed. Performance has been improved.
3049 Bruce Momjian wrote the following notes to introduce the new release.
3054 There are some general 6.3 issues that I want to mention. These are
3055 only the big items that can not be described in one sentence. A review
3056 of the detailed changes list is still needed.
3059 First, we now have subselects. Now that we have them, I would like to
3060 mention that without subselects, SQL is a very limited language.
3061 Subselects are a major feature, and you should review your code for
3062 places where subselects provide a better solution for your queries. I
3063 think you will find that there are more uses for subselects than you may
3064 think. Vadim has put us on the big SQL map with subselects, and fully
3065 functional ones too. The only thing you can't do with subselects is to
3066 use them in the target list.
3069 Second, 6.3 uses Unix domain sockets rather than TCP/IP by default. To
3070 enable connections from other machines, you have to use the new
3071 postmaster -i option, and of course edit <filename>pg_hba.conf</filename>. Also, for this
3072 reason, the format of <filename>pg_hba.conf</filename> has changed.
3075 Third, <type>char()</type> fields will now allow faster access than <type>varchar()</type> or
3076 <type>text</type>. Specifically, the <type>text</> and <type>varchar()</type> have a penalty for access to
3077 any columns after the first column of this type. <type>char()</type> used to also
3078 have this access penalty, but it no longer does. This may suggest that
3079 you redesign some of your tables, especially if you have short character
3080 columns that you have defined as <type>varchar()</type> or <type>text</type>. This and other
3081 changes make 6.3 even faster than earlier releases.
3084 We now have passwords definable independent of any Unix file. There are
3085 new SQL USER commands.
3086 See the <citetitle>Administrator's Guide</citetitle> for more
3087 information. There is a new table, pg_shadow, which is used to store
3088 user information and user passwords, and it by default only SELECT-able
3089 by the <systemitem>postgres</systemitem> super-user. pg_user is now a view of pg_shadow, and is
3090 SELECT-able by PUBLIC. You should keep using pg_user in your
3091 application without changes.
3094 User-created tables now no longer have SELECT permission to PUBLIC by
3095 default. This was done because the ANSI standard requires it. You can
3096 of course GRANT any permissions you want after the table is created.
3097 System tables continue to be SELECT-able by PUBLIC.
3100 We also have real deadlock detection code. No more sixty-second
3101 timeouts. And the new locking code implements a <acronym>FIFO</acronym> better, so there
3102 should be less resource starvation during heavy use.
3105 Many complaints have been made about inadequate documentation in previous
3106 releases. Thomas has put much effort into many new manuals for this
3107 release. Check out the doc/ directory.
3110 For performance reasons, time travel is gone, but can be implemented
3111 using triggers (see <filename>pgsql/contrib/spi/README</filename>). Please check out the new
3112 \d command for types, operators, etc. Also, views have their own
3113 permissions now, not based on the underlying tables, so permissions on
3114 them have to be set separately. Check <filename>/pgsql/interfaces</filename> for some new
3115 ways to talk to <productname>PostgreSQL</productname>.
3118 This is the first release that really required an explanation for
3119 existing users. In many ways, this was necessary because the new
3120 release removes many limitations, and the work-arounds people were using
3121 are no longer needed.
3125 <title>Migration to version 6.3</title>
3128 A dump/restore using <application>pg_dump</application>
3129 or <application>pg_dumpall</application>
3130 is required for those wishing to migrate data from any
3131 previous release of <productname>PostgreSQL</productname>.
3136 <title>Changes</title>
3142 Fix binary cursors broken by MOVE implementation(Vadim)
3143 Fix for tcl library crash(Jan)
3144 Fix for array handling, from Gerhard Hintermayer
3145 Fix acl error, and remove duplicate pqtrace(Bruce)
3146 Fix psql \e for empty file(Bruce)
3147 Fix for textcat on varchar() fields(Bruce)
3148 Fix for DBT Sendproc (Zeugswetter Andres)
3149 Fix vacuum analyze syntax problem(Bruce)
3150 Fix for international identifiers(Tatsuo)
3151 Fix aggregates on inherited tables(Bruce)
3152 Fix substr() for out-of-bounds data
3153 Fix for select 1=1 or 2=2, select 1=1 and 2=2, and select sum(2+2)(Bruce)
3154 Fix notty output to show status result. -q option still turns it off(Bruce)
3155 Fix for count(*), aggs with views and multiple tables and sum(3)(Bruce)
3157 Fix for PQtrace start/stop several times(Bruce)
3158 Fix a variety of locking problems like newer lock waiters getting
3159 lock before older waiters, and having readlock people not share
3160 locks if a writer is waiting for a lock, and waiting writers not
3161 getting priority over waiting readers(Bruce)
3162 Fix crashes in psql when executing queries from external files(James)
3163 Fix problem with multiple order by columns, with the first one having
3165 Use correct hash table support functions for float8 and int4(Thomas)
3166 Re-enable JOIN= option in CREATE OPERATOR statement (Thomas)
3167 Change precedence for boolean operators to match expected behavior(Thomas)
3168 Generate elog(ERROR) on over-large integer(Bruce)
3169 Allow multiple-argument functions in constraint clauses(Thomas)
3170 Check boolean input literals for 'true','false','yes','no','1','0'
3171 and throw elog(ERROR) if unrecognized(Thomas)
3172 Major large objects fix
3173 Fix for GROUP BY showing duplicates(Vadim)
3174 Fix for index scans in MergeJion(Vadim)
3178 Subselects with EXISTS, IN, ALL, ANY keywords (Vadim, Bruce, Thomas)
3179 New User Manual(Thomas, others)
3180 Speedup by inlining some frequently-called functions
3181 Real deadlock detection, no more timeouts(Bruce)
3182 Add SQL92 "constants" CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP,
3183 CURRENT_USER(Thomas)
3184 Modify constraint syntax to be SQL92-compliant(Thomas)
3185 Implement SQL92 PRIMARY KEY and UNIQUE clauses using indexes(Thomas)
3186 Recognize SQL92 syntax for FOREIGN KEY. Throw elog notice(Thomas)
3187 Allow NOT NULL UNIQUE constraint clause (each allowed separately before)(Thomas)
3188 Allow PostgreSQL-style casting ("::") of non-constants(Thomas)
3189 Add support for SQL3 TRUE and FALSE boolean constants(Thomas)
3190 Support SQL92 syntax for IS TRUE/IS FALSE/IS NOT TRUE/IS NOT FALSE(Thomas)
3191 Allow shorter strings for boolean literals (e.g. "t", "tr", "tru")(Thomas)
3192 Allow SQL92 delimited identifiers(Thomas)
3193 Implement SQL92 binary and hexadecimal string decoding (b'10' and x'1F')(Thomas)
3194 Support SQL92 syntax for type coercion of literal strings
3195 (e.g. "DATETIME 'now'")(Thomas)
3196 Add conversions for int2, int4, and OID types to and from text(Thomas)
3197 Use shared lock when building indexes(Vadim)
3198 Free memory allocated for an user query inside transaction block after
3199 this query is done, was turned off in <= 6.2.1(Vadim)
3200 New SQL statement CREATE PROCEDURAL LANGUAGE(Jan)
3201 New <productname>PostgreSQL</productname> Procedural Language (PL) backend interface(Jan)
3202 Rename pg_dump -H option to -h(Bruce)
3203 Add Java support for passwords, European dates(Peter)
3204 Use indexes for LIKE and ~, !~ operations(Bruce)
3205 Add hash functions for datetime and timespan(Thomas)
3206 Time Travel removed(Vadim, Bruce)
3207 Add paging for \d and \z, and fix \i(Bruce)
3208 Add Unix domain socket support to backend and to frontend library(Goran)
3209 Implement CREATE DATABASE/WITH LOCATION and initlocation utility(Thomas)
3210 Allow more SQL92 and/or <productname>PostgreSQL</productname> reserved words as column identifiers(Thomas)
3211 Augment support for SQL92 SET TIME ZONE...(Thomas)
3212 SET/SHOW/RESET TIME ZONE uses TZ backend environment variable(Thomas)
3213 Implement SET keyword = DEFAULT and SET TIME ZONE DEFAULT(Thomas)
3214 Enable SET TIME ZONE using TZ environment variable(Thomas)
3215 Add PGDATESTYLE environment variable to frontend and backend initialization(Thomas)
3216 Add PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO
3217 frontend library initialization environment variables(Thomas)
3218 Regression tests time zone automatically set with "setenv PGTZ PST8PDT"(Thomas)
3219 Add pg_description table for info on tables, columns, operators, types, and
3221 Increase 16 char limit on system table/index names to 32 characters(Bruce)
3222 Rename system indexes(Bruce)
3223 Add 'GERMAN' option to SET DATESTYLE(Thomas)
3224 Define an "ISO-style" timespan output format with "hh:mm:ss" fields(Thomas)
3225 Allow fractional values for delta times (e.g. '2.5 days')(Thomas)
3226 Validate numeric input more carefully for delta times(Thomas)
3227 Implement day of year as possible input to date_part()(Thomas)
3228 Define timespan_finite() and text_timespan() functions(Thomas)
3229 Remove archive stuff(Bruce)
3230 Allow for a pg_password authentication database that is separate from
3231 the system password file(Todd)
3232 Dump ACLs, GRANT, REVOKE permissions(Matt)
3233 Define text, varchar, and bpchar string length functions(Thomas)
3234 Fix Query handling for inheritance, and cost computations(Bruce)
3235 Implement CREATE TABLE/AS SELECT (alternative to SELECT/INTO)(Thomas)
3236 Allow NOT, IS NULL, IS NOT NULL in constraints(Thomas)
3237 Implement UNIONs for SELECT(Bruce)
3238 Add UNION, GROUP, DISTINCT to INSERT(Bruce)
3239 varchar() stores only necessary bytes on disk(Bruce)
3240 Fix for BLOBs(Peter)
3241 Mega-Patch for JDBC...see README_6.3 for list of changes(Peter)
3242 Remove unused "option" from PQconnectdb()
3243 New LOCK command and lock manual page describing deadlocks(Bruce)
3244 Add new psql \da, \dd, \df, \do, \dS, and \dT commands(Bruce)
3245 Enhance psql \z to show sequences(Bruce)
3246 Show NOT NULL and DEFAULT in psql \d table(Bruce)
3247 New psql .psqlrc file start-up(Andrew)
3248 Modify sample start-up script in contrib/linux to show syslog(Thomas)
3249 New types for IP and MAC addresses in contrib/ip_and_mac(TomH)
3250 Unix system time conversions with date/time types in contrib/unixdate(Thomas)
3251 Update of contrib stuff(Massimo)
3252 Add Unix socket support to DBD::Pg(Goran)
3253 New python interface (PyGreSQL 2.0)(D'Arcy)
3254 New frontend/backend protocol has a version number, network byte order(Phil)
3255 Security features in pg_hba.conf enhanced and documented, many cleanups(Phil)
3256 CHAR() now faster access than VARCHAR() or TEXT
3257 ecpg embedded SQL preprocessor
3258 Reduce system column overhead(Vadmin)
3259 Remove pg_time table(Vadim)
3260 Add pg_type attribute to identify types that need length (bpchar, varchar)
3261 Add report of offending line when COPY command fails
3262 Allow VIEW permissions to be set separately from the underlying tables.
3263 For security, use GRANT/REVOKE on views as appropriate(Jan)
3264 Tables now have no default GRANT SELECT TO PUBLIC. You must
3265 explicitly grant such permissions.
3266 Clean up tutorial examples(Darren)
3270 Add new html development tools, and flow chart in /tools/backend
3271 Fix for SCO compiles
3272 Stratus computer port Robert Gillies
3273 Added support for shlib for BSD44_derived & i386_solaris
3274 Make configure more automated(Brook)
3275 Add script to check regression test results
3276 Break parser functions into smaller files, group together(Bruce)
3277 Rename heap_create to heap_create_and_catalog, rename heap_creatr
3278 to heap_create()(Bruce)
3279 Sparc/Linux patch for locking(TomS)
3280 Remove PORTNAME and reorganize port-specific stuff(Marc)
3281 Add optimizer README file(Bruce)
3282 Remove some recursion in optimizer and clean up some code there(Bruce)
3283 Fix for NetBSD locking(Henry)
3284 Fix for libptcl make(Tatsuo)
3286 Change IS TRUE, IS FALSE, ... to expressions using "=" rather than
3287 function calls to istrue() or isfalse() to allow optimization(Thomas)
3288 Various fixes NetBSD/Sparc related(TomH)
3289 Alpha linux locking(Travis,Ryan)
3290 Change elog(WARN) to elog(ERROR)(Bruce)
3291 FAQ for FreeBSD(Marc)
3292 Bring in the PostODBC source tree as part of our standard distribution(Marc)
3293 A minor patch for HP/UX 10 vs 9(Stan)
3294 New pg_attribute.atttypmod for type-specific info like varchar length(Bruce)
3295 UnixWare patches(Billy)
3296 New i386 'lock' for spin lock asm(Billy)
3297 Support for multiplexed backends is removed
3298 Start an OpenBSD port
3301 Add string functions to regression suite(Thomas)
3302 Expand a few function names formerly truncated to 16 characters(Thomas)
3303 Remove un-needed malloc() calls and replace with palloc()(Bruce)
3309 <sect1 id="release-6-2-1">
3310 <title>Release 6.2.1</title>
3313 <title>Release date</title>
3314 <simpara>1997-10-17</simpara>
3318 6.2.1 is a bug-fix and usability release on 6.2.
3326 Allow strings to span lines, per <acronym>SQL92</acronym>.
3332 Include example trigger function for inserting user names on table updates.
3339 This is a minor bug-fix release on 6.2.
3340 For upgrades from pre-6.2 systems, a full dump/reload is required.
3341 Refer to the 6.2 release notes for instructions.
3345 <title>Migration from version 6.2 to version 6.2.1</title>
3348 This is a minor bug-fix release. A dump/reload is not required from version 6.2,
3349 but is required from any release prior to 6.2.
3352 In upgrading from version 6.2, if you choose to dump/reload you will find that
3353 avg(money) is now calculated correctly. All other bug fixes take effect
3354 upon updating the executables.
3357 Another way to avoid dump/reload is to use the following SQL command
3358 from <command>psql</command> to update the existing system table:
3361 update pg_aggregate set aggfinalfn = 'cash_div_flt8'
3362 where aggname = 'avg' and aggbasetype = 790;
3366 This will need to be done to every existing database, including template1.
3371 <title>Changes</title>
3375 Allow TIME and TYPE column names(Thomas)
3376 Allow larger range of true/false as boolean values(Thomas)
3377 Support output of "now" and "current"(Thomas)
3378 Handle DEFAULT with INSERT of NULL properly(Vadim)
3379 Fix for relation reference counts problem in buffer manager(Vadim)
3380 Allow strings to span lines, like ANSI(Thomas)
3381 Fix for backward cursor with ORDER BY(Vadim)
3382 Fix avg(cash) computation(Thomas)
3383 Fix for specifying a column twice in ORDER/GROUP BY(Vadim)
3384 Documented new libpq function to return affected rows, PQcmdTuples(Bruce)
3385 Trigger function for inserting user names for INSERT/UPDATE(Brook Milligan)
3391 <sect1 id="release-6-2">
3392 <title>Release 6.2</title>
3395 <title>Release date</title>
3396 <simpara>1997-10-02</simpara>
3400 A dump/restore is required for those wishing to migrate data from
3401 previous releases of <productname>PostgreSQL</productname>.
3405 <title>Migration from version 6.1 to version 6.2</title>
3408 This migration requires a complete dump of the 6.1 database and a
3409 restore of the database in 6.2.
3412 Note that the <command>pg_dump</command> and <command>pg_dumpall</command> utility from 6.2 should be used
3413 to dump the 6.1 database.
3418 <title>Migration from version 1.<replaceable>x</> to version 6.2</title>
3421 Those migrating from earlier 1.* releases should first upgrade to 1.09
3422 because the COPY output format was improved from the 1.02 release.
3427 <title>Changes</title>
3433 Fix problems with pg_dump for inheritance, sequences, archive tables(Bruce)
3434 Fix compile errors on overflow due to shifts, unsigned, and bad prototypes
3435 from Solaris(Diab Jerius)
3436 Fix bugs in geometric line arithmetic (bad intersection calculations)(Thomas)
3437 Check for geometric intersections at endpoints to avoid rounding ugliness(Thomas)
3438 Catch non-functional delete attempts(Vadim)
3439 Change time function names to be more consistent(Michael Reifenberg)
3440 Check for zero divides(Michael Reifenberg)
3441 Fix very old bug which made tuples changed/inserted by a commnd
3442 visible to the command itself (so we had multiple update of
3443 updated tuples, etc)(Vadim)
3444 Fix for SELECT null, 'fail' FROM pg_am (Patrick)
3445 SELECT NULL as EMPTY_FIELD now allowed(Patrick)
3446 Remove un-needed signal stuff from contrib/pginterface
3447 Fix OR (where x != 1 or x isnull didn't return tuples with x NULL) (Vadim)
3448 Fix time_cmp function (Vadim)
3449 Fix handling of functions with non-attribute first argument in
3450 WHERE clauses (Vadim)
3451 Fix GROUP BY when order of entries is different from order
3452 in target list (Vadim)
3453 Fix pg_dump for aggregates without sfunc1 (Vadim)
3457 Default genetic optimizer GEQO parameter is now 8(Bruce)
3458 Allow use parameters in target list having aggregates in functions(Vadim)
3459 Added JDBC driver as an interface(Adrian & Peter)
3461 Return number of tuples inserted/affected by INSERT/UPDATE/DELETE etc.(Vadim)
3462 Triggers implemented with CREATE TRIGGER (SQL3)(Vadim)
3463 SPI (Server Programming Interface) allows execution of queries inside
3465 NOT NULL implemented (SQL92)(Robson Paniago de Miranda)
3466 Include reserved words for string handling, outer joins, and unions(Thomas)
3467 Implement extended comments ("/* ... */") using exclusive states(Thomas)
3468 Add "//" single-line comments(Bruce)
3469 Remove some restrictions on characters in operator names(Thomas)
3470 DEFAULT and CONSTRAINT for tables implemented (SQL92)(Vadim & Thomas)
3471 Add text concatenation operator and function (SQL92)(Thomas)
3472 Support WITH TIME ZONE syntax (SQL92)(Thomas)
3473 Support INTERVAL unit TO unit syntax (SQL92)(Thomas)
3474 Define types DOUBLE PRECISION, INTERVAL, CHARACTER,
3475 and CHARACTER VARYING (SQL92)(Thomas)
3476 Define type FLOAT(p) and rudimentary DECIMAL(p,s), NUMERIC(p,s) (SQL92)(Thomas)
3477 Define EXTRACT(), POSITION(), SUBSTRING(), and TRIM() (SQL92)(Thomas)
3478 Define CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP (SQL92)(Thomas)
3479 Add syntax and warnings for UNION, HAVING, INNER and OUTER JOIN (SQL92)(Thomas)
3480 Add more reserved words, mostly for SQL92 compliance(Thomas)
3481 Allow hh:mm:ss time entry for timespan/reltime types(Thomas)
3482 Add center() routines for lseg, path, polygon(Thomas)
3483 Add distance() routines for circle-polygon, polygon-polygon(Thomas)
3484 Check explicitly for points and polygons contained within polygons
3485 using an axis-crossing algorithm(Thomas)
3486 Add routine to convert circle-box(Thomas)
3487 Merge conflicting operators for different geometric data types(Thomas)
3488 Replace distance operator "<===>" with "<->"(Thomas)
3489 Replace "above" operator "!^" with ">^" and "below" operator "!|" with "<^"(Thomas)
3490 Add routines for text trimming on both ends, substring, and string position(Thomas)
3491 Added conversion routines circle(box) and poly(circle)(Thomas)
3492 Allow internal sorts to be stored in memory rather than in files(Bruce & Vadim)
3493 Allow functions and operators on internally-identical types to succeed(Bruce)
3494 Speed up backend start-up after profiling analysis(Bruce)
3495 Inline frequently called functions for performance(Bruce)
3496 Reduce open() calls(Bruce)
3497 psql: Add PAGER for \h and \?,\C fix
3498 Fix for psql pager when no tty(Bruce)
3499 New entab utility(Bruce)
3500 General trigger functions for referential integrity (Vadim)
3501 General trigger functions for time travel (Vadim)
3502 General trigger functions for AUTOINCREMENT/IDENTITY feature (Vadim)
3503 MOVE implementation (Vadim)
3507 HP-UX 10 patches (Vladimir Turin)
3508 Added SCO support, (Daniel Harris)
3509 MkLinux patches (Tatsuo Ishii)
3510 Change geometric box terminology from "length" to "width"(Thomas)
3511 Deprecate temporary unstored slope fields in geometric code(Thomas)
3512 Remove restart instructions from INSTALL(Bruce)
3513 Look in /usr/ucb first for install(Bruce)
3514 Fix c++ copy example code(Thomas)
3515 Add -o to psql manual page(Bruce)
3516 Prevent relname unallocated string length from being copied into database(Bruce)
3517 Cleanup for NAMEDATALEN use(Bruce)
3518 Fix pg_proc names over 15 chars in output(Bruce)
3519 Add strNcpy() function(Bruce)
3520 remove some (void) casts that are unnecessary(Bruce)
3521 new interfaces directory(Marc)
3522 Replace fopen() calls with calls to fd.c functions(Bruce)
3523 Make functions static where possible(Bruce)
3524 enclose unused functions in #ifdef NOT_USED(Bruce)
3525 Remove call to difftime() in timestamp support to fix SunOS(Bruce & Thomas)
3526 Changes for Digital Unix
3527 Portability fix for pg_dumpall(Bruce)
3528 Rename pg_attribute.attnvals to attdispersion(Bruce)
3529 "intro/unix" manual page now "pgintro"(Bruce)
3530 "built-in" manual page now "pgbuiltin"(Bruce)
3531 "drop" manual page now "drop_table"(Bruce)
3532 Add "create_trigger", "drop_trigger" manual pages(Thomas)
3533 Add constraints regression test(Vadim & Thomas)
3534 Add comments syntax regression test(Thomas)
3535 Add PGINDENT and support program(Bruce)
3536 Massive commit to run PGINDENT on all *.c and *.h files(Bruce)
3537 Files moved to /src/tools directory(Bruce)
3538 SPI and Trigger programming guides (Vadim & D'Arcy)
3544 <sect1 id="release-6-1-1">
3545 <title>Release 6.1.1</title>
3548 <title>Release date</title>
3549 <simpara>1997-07-22</simpara>
3553 <title>Migration from version 6.1 to version 6.1.1</title>
3556 This is a minor bug-fix release. A dump/reload is not required from version 6.1,
3557 but is required from any release prior to 6.1.
3558 Refer to the release notes for 6.1 for more details.
3563 <title>Changes</title>
3567 fix for SET with options (Thomas)
3568 allow pg_dump/pg_dumpall to preserve ownership of all tables/objects(Bruce)
3569 new psql \connect option allows changing usernames without changing databases
3570 fix for initdb --debug option(Yoshihiko Ichikawa))
3571 lextest cleanup(Bruce)
3573 fix date/time month boundary arithmetic(Thomas)
3574 fix timezone daylight handling for some ports(Thomas, Bruce, Tatsuo)
3575 timestamp overhauled to use standard functions(Thomas)
3576 other code cleanup in date/time routines(Thomas)
3577 psql's \d now case-insensitive(Bruce)
3578 psql's backslash commands can now have trailing semicolon(Bruce)
3579 fix memory leak in psql when using \g(Bruce)
3580 major fix for endian handling of communication to server(Thomas, Tatsuo)
3581 Fix for Solaris assembler and include files(Yoshihiko Ichikawa)
3582 allow underscores in usernames(Bruce)
3583 pg_dumpall now returns proper status, portability fix(Bruce)
3589 <sect1 id="release-6-1">
3590 <title>Release 6.1</title>
3593 <title>Release date</title>
3594 <simpara>1997-06-08</simpara>
3598 The regression tests have been adapted and extensively modified for the
3599 6.1 release of <productname>PostgreSQL</productname>.
3603 Three new data types (<type>datetime</type>, <type>timespan</type>, and <type>circle</type>) have been added to
3604 the native set of <productname>PostgreSQL</productname> types. Points, boxes, paths, and polygons
3605 have had their output formats made consistent across the data types.
3606 The polygon output in misc.out has only been spot-checked for correctness
3607 relative to the original regression output.
3611 <productname>PostgreSQL</productname> 6.1 introduces a new, alternate
3612 optimizer which uses <firstterm>genetic</firstterm>
3613 algorithms. These algorithms introduce a random behavior in the ordering
3614 of query results when the query contains multiple qualifiers or multiple
3615 tables (giving the optimizer a choice on order of evaluation). Several
3616 regression tests have been modified to explicitly order the results, and
3617 hence are insensitive to optimizer choices. A few regression tests are
3618 for data types which are inherently unordered (e.g. points and time
3619 intervals) and tests involving those types are explicitly bracketed with
3620 <command>set geqo to 'off'</command> and <command>reset geqo</command>.
3624 The interpretation of array specifiers (the curly braces around atomic
3625 values) appears to have changed sometime after the original regression
3626 tests were generated. The current <filename>./expected/*.out</filename> files reflect this
3627 new interpretation, which may not be correct!
3631 The float8 regression test fails on at least some platforms. This is due
3632 to differences in implementations of <function>pow()</function> and <function>exp()</function> and the signaling
3633 mechanisms used for overflow and underflow conditions.
3637 The <quote>random</> results in the random test should cause the
3638 <quote>random</quote> test to be <quote>failed</quote>, since the
3639 regression tests are evaluated using a simple diff. However,
3640 <quote>random</> does not seem to produce random results on my test
3641 machine (Linux/<application>gcc</>/i686).
3645 <title>Migration to version 6.1</title>
3648 This migration requires a complete dump of the 6.0 database and a
3649 restore of the database in 6.1.
3652 Those migrating from earlier 1.* releases should first upgrade to 1.09
3653 because the COPY output format was improved from the 1.02 release.
3658 <title>Changes</title>
3664 packet length checking in library routines
3665 lock manager priority patch
3666 check for under/over flow of float8(Bruce)
3667 multitable join fix(Vadim)
3668 SIGPIPE crash fix(Darren)
3669 large object fixes(Sven)
3670 allow btree indexes to handle NULLs(Vadim)
3671 timezone fixes(D'Arcy)
3672 select SUM(x) can return NULL on no rows(Thomas)
3673 internal optimizer, executor bug fixes(Vadim)
3674 fix problem where inner loop in < or <= has no rows(Vadim)
3675 prevent re-commuting join index clauses(Vadim)
3676 fix join clauses for multiple tables(Vadim)
3677 fix hash, hashjoin for arrays(Vadim)
3678 fix btree for abstime type(Vadim)
3679 large object fixes(Raymond)
3680 fix buffer leak in hash indexes (Vadim)
3681 fix rtree for use in inner scan (Vadim)
3682 fix gist for use in inner scan, cleanups (Vadim, Andrea)
3683 avoid unnecessary local buffers allocation (Vadim, Massimo)
3684 fix local buffers leak in transaction aborts (Vadim)
3685 fix file manager memmory leaks, cleanups (Vadim, Massimo)
3686 fix storage manager memmory leaks (Vadim)
3687 fix btree duplicates handling (Vadim)
3688 fix deleted tuples re-incarnation caused by vacuum (Vadim)
3689 fix SELECT varchar()/char() INTO TABLE made zero-length fields(Bruce)
3690 many psql, pg_dump, and libpq memory leaks fixed using Purify (Igor)
3694 attribute optimization statistics(Bruce)
3695 much faster new btree bulk load code(Paul)
3696 BTREE UNIQUE added to bulk load code(Vadim)
3697 new lock debug code(Massimo)
3698 massive changes to libpg++(Leo)
3699 new GEQO optimizer speeds table multitable optimization(Martin)
3700 new WARN message for non-unique insert into unique key(Marc)
3701 update x=-3, no spaces, now valid(Bruce)
3702 remove case-sensitive identifier handling(Bruce,Thomas,Dan)
3703 debug backend now pretty-prints tree(Darren)
3704 new Oracle character functions(Edmund)
3705 new plaintext password functions(Dan)
3706 no such class or insufficient privilege changed to distinct messages(Dan)
3707 new ANSI timestamp function(Dan)
3708 new ANSI Time and Date types (Thomas)
3709 move large chunks of data in backend(Martin)
3710 multicolumn btree indexes(Vadim)
3711 new SET var TO value command(Martin)
3712 update transaction status on reads(Dan)
3713 new locale settings for character types(Oleg)
3714 new SEQUENCE serial number generator(Vadim)
3715 GROUP BY function now possible(Vadim)
3716 re-organize regression test(Thomas,Marc)
3717 new optimizer operation weights(Vadim)
3718 new psql \z grant/permit option(Marc)
3719 new MONEY data type(D'Arcy,Thomas)
3720 tcp socket communication speed improved(Vadim)
3721 new VACUUM option for attribute statistics, and for certain columns (Vadim)
3722 many geometric type improvements(Thomas,Keith)
3723 additional regression tests(Thomas)
3724 new datestyle variable(Thomas,Vadim,Martin)
3725 more comparison operators for sorting types(Thomas)
3726 new conversion functions(Thomas)
3727 new more compact btree format(Vadim)
3728 allow pg_dumpall to preserve database ownership(Bruce)
3729 new SET GEQO=# and R_PLANS variable(Vadim)
3730 old (!GEQO) optimizer can use right-sided plans (Vadim)
3731 typechecking improvement in SQL parser(Bruce)
3732 new SET, SHOW, RESET commands(Thomas,Vadim)
3733 new \connect database USER option
3734 new destroydb -i option (Igor)
3735 new \dt and \di psql commands (Darren)
3736 SELECT "\n" now escapes newline (A. Duursma)
3737 new geometry conversion functions from old format (Thomas)
3741 new configuration script(Marc)
3742 readline configuration option added(Marc)
3743 OS-specific configuration options removed(Marc)
3744 new OS-specific template files(Marc)
3745 no more need to edit Makefile.global(Marc)
3746 re-arrange include files(Marc)
3747 nextstep patches (Gregor Hoffleit)
3748 removed WIN32-specific code(Bruce)
3749 removed postmaster -e option, now only postgres -e option (Bruce)
3750 merge duplicate library code in front/backends(Martin)
3751 now works with eBones, international Kerberos(Jun)
3752 more shared library support
3753 c++ include file cleanup(Bruce)
3754 warn about buggy flex(Bruce)
3755 DG/UX, Ultrix, IRIX, AIX portability fixes
3761 <sect1 id="release-6-0">
3762 <title>Release 6.0</title>
3765 <title>Release date</title>
3766 <simpara>1997-01-29</simpara>
3770 A dump/restore is required for those wishing to migrate data from
3771 previous releases of <productname>PostgreSQL</productname>.
3775 <title>Migration from version 1.09 to version 6.0</title>
3778 This migration requires a complete dump of the 1.09 database and a
3779 restore of the database in 6.0.
3784 <title>Migration from pre-1.09 to version 6.0</title>
3787 Those migrating from earlier 1.* releases should first upgrade to 1.09
3788 because the COPY output format was improved from the 1.02 release.
3793 <title>Changes</title>
3799 ALTER TABLE bug - running postgress process needs to re-read table definition
3800 Allow vacuum to be run on one table or entire database(Bruce)
3802 Fix array over-runs of memory writes(Kurt)
3803 Fix elusive btree range/non-range bug(Dan)
3804 Fix for hash indexes on some types like time and date
3805 Fix for pg_log size explosion
3806 Fix permissions on lo_export()(Bruce)
3807 Fix unitialized reads of memory(Kurt)
3808 Fixed ALTER TABLE ... char(3) bug(Bruce)
3809 Fixed a few small memory leaks
3810 Fixed EXPLAIN handling of options and changed full_path option name
3811 Fixed output of group acl permissions
3812 Memory leaks (hunt and destroy with tools like Purify(Kurt)
3813 Minor improvements to rules system
3815 New asserts for run-checking
3816 Overhauled parser/analyze code to properly report errors and increase speed
3817 Pg_dump -d now handles NULL's properly(Bruce)
3818 Prevent SELECT NULL from crashing server (Bruce)
3819 Properly report errors when INSERT ... SELECT columns did not match
3820 Properly report errors when insert column names were not correct
3821 Psql \g filename now works(Bruce)
3822 Psql fixed problem with multiple statements on one line with multiple outputs
3823 Removed duplicate system OIDs
3824 SELECT * INTO TABLE . GROUP/ORDER BY gives unlink error if table exists(Bruce)
3825 Several fixes for queries that crashed the backend
3826 Starting quote in insert string errors(Bruce)
3827 Submitting an empty query now returns empty status, not just " " query(Bruce)
3831 Add EXPLAIN manual page(Bruce)
3832 Add UNIQUE index capability(Dan)
3833 Add hostname/user level access control rather than just hostname and user
3834 Add synonym of != for <>(Bruce)
3835 Allow "select oid,* from table"
3836 Allow BY,ORDER BY to specify columns by number, or by non-alias table.column(Bruce)
3837 Allow COPY from the frontend(Bryan)
3838 Allow GROUP BY to use alias column name(Bruce)
3839 Allow actual compression, not just reuse on the same page(Vadim)
3840 Allow installation-configuration option to auto-add all local users(Bryan)
3841 Allow libpq to distinguish between text value '' and null(Bruce)
3842 Allow non-postgres users with createdb privs to destroydb's
3843 Allow restriction on who can create C functions(Bryan)
3844 Allow restriction on who can do backend COPY(Bryan)
3845 Can shrink tables, pg_time and pg_log(Vadim & Erich)
3846 Change debug level 2 to print queries only, changed debug heading layout(Bruce)
3847 Change default decimal constant representation from float4 to float8(Bruce)
3848 European date format now set when postmaster is started
3849 Execute lowercase function names if not found with exact case
3850 Fixes for aggregate/GROUP processing, allow 'select sum(func(x),sum(x+y) from z'
3851 Gist now included in the distrubution(Marc)
3852 Idend authentication of local users(Bryan)
3853 Implement BETWEEN qualifier(Bruce)
3854 Implement IN qualifier(Bruce)
3855 Libpq has PQgetisnull()(Bruce)
3856 Libpq++ improvements
3857 New options to initdb(Bryan)
3858 Pg_dump allow dump of OIDs(Bruce)
3859 Pg_dump create indexes after tables are loaded for speed(Bruce)
3860 Pg_dumpall dumps all databases, and the user table
3861 Pginterface additions for NULL values(Bruce)
3862 Prevent postmaster from being run as root
3863 Psql \h and \? is now readable(Bruce)
3864 Psql allow backslashed, semicolons anywhere on the line(Bruce)
3865 Psql changed command prompt for lines in query or in quotes(Bruce)
3866 Psql char(3) now displays as (bp)char in \d output(Bruce)
3867 Psql return code now more accurate(Bryan?)
3868 Psql updated help syntax(Bruce)
3869 Re-visit and fix vacuum(Vadim)
3870 Reduce size of regression diffs, remove timezone name difference(Bruce)
3871 Remove compile-time parameters to enable binary distributions(Bryan)
3872 Reverse meaning of HBA masks(Bryan)
3873 Secure Authentication of local users(Bryan)
3874 Speed up vacuum(Vadim)
3875 Vacuum now had VERBOSE option(Bruce)
3879 All functions now have prototypes that are compared against the calls
3880 Allow asserts to be disabled easly from Makefile.global(Bruce)
3881 Change oid constants used in code to #define names
3882 Decoupled sparc and solaris defines(Kurt)
3883 Gcc -Wall compiles cleanly with warnings only from unfixable constructs
3884 Major include file reorganization/reduction(Marc)
3885 Make now stops on compile failure(Bryan)
3886 Makefile restructuring(Bryan, Marc)
3887 Merge bsdi_2_1 to bsdi(Bruce)
3888 Monitor program removed
3889 Name change from Postgres95 to PostgreSQL
3890 New config.h file(Marc, Bryan)
3891 PG_VERSION now set to 6.0 and used by postmaster
3892 Portability additions, including Ultrix, DG/UX, AIX, and Solaris
3893 Reduced the number of #define's, centeralized #define's
3894 Remove duplicate OIDS in system tables(Dan)
3895 Remove duplicate system catalog info or report mismatches(Dan)
3896 Removed many os-specific #define's
3897 Restructured object file generation/location(Bryan, Marc)
3898 Restructured port-specific file locations(Bryan, Marc)
3899 Unused/uninialized variables corrected
3905 <sect1 id="release-1-09">
3906 <title>Release 1.09</title>
3909 <title>Release date</title>
3910 <simpara>1996-11-04</simpara>
3914 Sorry, we didn't keep track of changes from 1.02 to 1.09. Some of
3915 the changes listed in 6.0 were actually included in the 1.02.1 to 1.09
3920 <sect1 id="release-1-02">
3921 <title>Release 1.02</title>
3924 <title>Release date</title>
3925 <simpara>1996-08-01</simpara>
3929 <title>Migration from version 1.02 to version 1.02.1</title>
3932 Here is a new migration file for 1.02.1. It includes the 'copy' change
3933 and a script to convert old <acronym>ASCII</acronym> files.
3937 The following notes are for the benefit of users who want to migrate
3938 databases from <productname>Postgres95</> 1.01 and 1.02 to <productname>Postgres95</> 1.02.1.
3941 If you are starting afresh with <productname>Postgres95</> 1.02.1 and do not need
3942 to migrate old databases, you do not need to read any further.
3947 In order to upgrade older <productname>Postgres95</> version 1.01 or 1.02 databases to
3948 version 1.02.1, the following steps are required:
3953 Start up a new 1.02.1 postmaster
3958 Add the new built-in functions and operators of 1.02.1 to 1.01 or 1.02
3959 databases. This is done by running the new 1.02.1 server against
3960 your own 1.01 or 1.02 database and applying the queries attached at
3961 the end of the file. This can be done easily through <command>psql</>. If your
3962 1.01 or 1.02 database is named <literal>testdb</literal> and you have cut the commands
3963 from the end of this file and saved them in <filename>addfunc.sql</filename>:
3965 % psql testdb -f addfunc.sql
3968 Those upgrading 1.02 databases will get a warning when executing the
3969 last two statements in the file because they are already present in 1.02. This is
3970 not a cause for concern.
3977 <title>Dump/Reload Procedure</title>
3980 If you are trying to reload a pg_dump or text-mode, <literal>copy tablename to
3981 stdout</literal> generated with a previous version, you will need to run the
3982 attached <command>sed</command> script on the ASCII file before loading it into the
3983 database. The old format used '.' as end-of-data, while '\.' is now the
3984 end-of-data marker. Also, empty strings are now loaded in as '' rather
3985 than NULL. See the copy manual page for full details.
3988 sed 's/^\.$/\\./g' <in_file >out_file
3992 If you are loading an older binary copy or non-<systemitem>stdout</> copy, there is no
3993 end-of-data character, and hence no conversion necessary.
3996 -- following lines added by agc to reflect the case-insensitive
3997 -- regexp searching for varchar (in 1.02), and bpchar (in 1.02.1)
3998 create operator ~* (leftarg = bpchar, rightarg = text, procedure = texticregexeq);
3999 create operator !~* (leftarg = bpchar, rightarg = text, procedure = texticregexne);
4000 create operator ~* (leftarg = varchar, rightarg = text, procedure = texticregexeq);
4001 create operator !~* (leftarg = varchar, rightarg = text, procedure = texticregexne);
4007 <title>Changes</title>
4011 Source code maintenance and development
4012 * worldwide team of volunteers
4013 * the source tree now in CVS at ftp.ki.net
4016 * psql (and underlying libpq library) now has many more options for
4017 formatting output, including HTML
4018 * pg_dump now output the schema and/or the data, with many fixes to
4019 enhance completeness.
4020 * psql used in place of monitor in administration shell scripts.
4021 monitor to be depreciated in next release.
4022 * date/time functions enhanced
4023 * NULL insert/update/comparison fixed/enhanced
4024 * TCL/TK lib and shell fixed to work with both tck7.4/tk4.0 and tcl7.5/tk4.1
4026 Bug Fixes (almost too numerous to mention)
4028 * storage management
4029 * check for NULL pointer before dereferencing
4033 * added SolarisX86 port
4034 * added BSD/OS 2.1 port
4039 Contributors (appologies to any missed)
4040 * Kurt J. Lidl <lidl@va.pubnix.com>
4041 (missed in first run, but no less important)
4042 * Erich Stamberger <eberger@gewi.kfunigraz.ac.at>
4043 * Jason Wright <jason@shiloh.vnet.net>
4044 * Cees de Groot <C.deGroot@inter.NL.net>
4045 * ernst.molitor@uni-bonn.de
4046 * michael.siebenborn@ae3.Hypo.DE (Michael Siebenborn (6929))
4047 * Brian E. Gallew <geek+@cmu.edu>
4048 * Vadim B. Mikheev <vadim@sable.krasnoyarsk.su>
4049 * Adam Sussman <myddryn@vidya.com>
4050 * Chris Dunlop <chris@onthe.net.au>
4051 * Marc G. Fournier <scrappy@ki.net>
4052 * Dan McGuirk <mcguirk@indirect.com>
4053 * Dr_George_D_Detlefsen <drgeorge@ilt.com>
4054 * Erich Stamberger <eberger@gewi.kfunigraz.ac.at>
4055 * Massimo Dal Zotto <dz@cs.unitn.it>
4056 * Randy Kunkee <kunkee@Starbase.NeoSoft.COM>
4057 * Rick Weldon <rick@wisetech.com>
4058 * Thomas van Reimersdahl <reimersd@dali.techinfo.rwth-aachen.de>
4059 * david bennett <dave@bensoft.com>
4060 * ernst.molitor@uni-bonn.de
4061 * Julian Assange <proff@suburbia.net>
4062 * Bruce Momjian <maillist@candle.pha.pa.us>
4063 * Paul "Shag" Walmsley <ccshag@cclabs.missouri.edu>
4064 * "Alistair G. Crooks" <azcb0@sde.uts.amdahl.com>
4069 <sect1 id="release-1-01">
4070 <title>Release 1.01</title>
4073 <title>Release date</title>
4074 <simpara>1996-02-23</simpara>
4079 <title>Migration from version 1.0 to version 1.01</title>
4082 The following notes are for the benefit of users who want to migrate
4083 databases from <productname>Postgres95</> 1.0 to <productname>Postgres95</> 1.01.
4086 If you are starting afresh with <productname>Postgres95</> 1.01 and do not need
4087 to migrate old databases, you do not need to read any further.
4090 In order to <productname>Postgres95</> version 1.01 with databases created with
4091 <productname>Postgres95</> version 1.0, the following steps are required:
4096 Set the definition of <symbol>NAMEDATALEN</symbol> in <filename>src/Makefile.global</filename> to 16
4097 and <symbol>OIDNAMELEN</symbol> to 20.
4102 Decide whether you want to use Host based authentication.
4107 If you do, you must create a file name <literal>pg_hba</literal> in your top-level data
4108 directory (typically the value of your <envar>$PGDATA</envar>). <filename>src/libpq/pg_hba</filename>
4109 shows an example syntax.
4114 If you do not want host-based authentication, you can comment out
4119 in <filename>src/Makefile.global</filename>
4122 Note that host-based authentication is turned on by default, and if
4123 you do not take steps A or B above, the out-of-the-box 1.01 will
4124 not allow you to connect to 1.0 databases.
4132 Compile and install 1.01, but DO NOT do the <command>initdb</command> step.
4137 Before doing anything else, terminate your 1.0 postmaster, and
4138 backup your existing <envar>$PGDATA</envar> directory.
4143 Set your <envar>PGDATA</envar> environment variable to your 1.0 databases, but set up
4144 path up so that 1.01 binaries are being used.
4149 Modify the file <filename><envar>$PGDATA</envar>/PG_VERSION</filename> from 5.0 to 5.1
4154 Start up a new 1.01 postmaster
4159 Add the new built-in functions and operators of 1.01 to 1.0
4160 databases. This is done by running the new 1.01 server against
4161 your own 1.0 database and applying the queries attached and saving
4162 in the file 1.0_to_1.01.sql. This can be done easily through <command>psql</command>.
4163 If your 1.0 database is name <literal>testdb</literal>:
4166 % psql testdb -f 1.0_to_1.01.sql
4169 and then execute the following commands (cut and paste from here):
4172 -- add builtin functions that are new to 1.01
4174 create function int4eqoid (int4, oid) returns bool as 'foo'
4175 language 'internal';
4176 create function oideqint4 (oid, int4) returns bool as 'foo'
4177 language 'internal';
4178 create function char2icregexeq (char2, text) returns bool as 'foo'
4179 language 'internal';
4180 create function char2icregexne (char2, text) returns bool as 'foo'
4181 language 'internal';
4182 create function char4icregexeq (char4, text) returns bool as 'foo'
4183 language 'internal';
4184 create function char4icregexne (char4, text) returns bool as 'foo'
4185 language 'internal';
4186 create function char8icregexeq (char8, text) returns bool as 'foo'
4187 language 'internal';
4188 create function char8icregexne (char8, text) returns bool as 'foo'
4189 language 'internal';
4190 create function char16icregexeq (char16, text) returns bool as 'foo'
4191 language 'internal';
4192 create function char16icregexne (char16, text) returns bool as 'foo'
4193 language 'internal';
4194 create function texticregexeq (text, text) returns bool as 'foo'
4195 language 'internal';
4196 create function texticregexne (text, text) returns bool as 'foo'
4197 language 'internal';
4199 -- add builtin functions that are new to 1.01
4201 create operator = (leftarg = int4, rightarg = oid, procedure = int4eqoid);
4202 create operator = (leftarg = oid, rightarg = int4, procedure = oideqint4);
4203 create operator ~* (leftarg = char2, rightarg = text, procedure = char2icregexeq);
4204 create operator !~* (leftarg = char2, rightarg = text, procedure = char2icregexne);
4205 create operator ~* (leftarg = char4, rightarg = text, procedure = char4icregexeq);
4206 create operator !~* (leftarg = char4, rightarg = text, procedure = char4icregexne);
4207 create operator ~* (leftarg = char8, rightarg = text, procedure = char8icregexeq);
4208 create operator !~* (leftarg = char8, rightarg = text, procedure = char8icregexne);
4209 create operator ~* (leftarg = char16, rightarg = text, procedure = char16icregexeq);
4210 create operator !~* (leftarg = char16, rightarg = text, procedure = char16icregexne);
4211 create operator ~* (leftarg = text, rightarg = text, procedure = texticregexeq);
4212 create operator !~* (leftarg = text, rightarg = text, procedure = texticregexne);
4220 <title>Changes</title>
4225 * 1.01 is backwards compatible with 1.0 database provided the user
4226 follow the steps outlined in the MIGRATION_from_1.0_to_1.01 file.
4227 If those steps are not taken, 1.01 is not compatible with 1.0 database.
4230 * added PQdisplayTuples() to libpq and changed monitor and psql to use it
4231 * added NeXT port (requires SysVIPC implementation)
4232 * added CAST .. AS ... syntax
4233 * added ASC and DESC keywords
4234 * added 'internal' as a possible language for CREATE FUNCTION
4235 internal functions are C functions which have been statically linked
4236 into the postgres backend.
4237 * a new type "name" has been added for system identifiers (table names,
4238 attribute names, etc.) This replaces the old char16 type. The
4239 of name is set by the NAMEDATALEN #define in src/Makefile.global
4240 * a readable reference manual that describes the query language.
4241 * added host-based access control. A configuration file ($PGDATA/pg_hba)
4242 is used to hold the configuration data. If host-based access control
4243 is not desired, comment out HBA=1 in src/Makefile.global.
4244 * changed regex handling to be uniform use of Henry Spencer's regex code
4245 regardless of platform. The regex code is included in the distribution
4246 * added functions and operators for case-insensitive regular expressions.
4247 The operators are ~* and !~*.
4248 * pg_dump uses COPY instead of SELECT loop for better performance
4251 * fixed an optimizer bug that was causing core dumps when
4252 functions calls were used in comparisons in the WHERE clause
4253 * changed all uses of getuid to geteuid so that effective uids are used
4254 * psql now returns non-zero status on errors when using -c
4255 * applied public patches 1-14
4261 <sect1 id="release-1-0">
4262 <title>Release 1.0</title>
4265 <title>Release date</title>
4266 <simpara>1995-09-05</simpara>
4270 <title>Changes</title>
4275 * The copyright of <productname>Postgres</productname> 1.0 has been loosened to be freely modifiable
4276 and modifiable for any purpose. Please read the COPYRIGHT file.
4277 Thanks to Professor Michael Stonebraker for making this possible.
4280 * date formats have to be MM-DD-YYYY (or DD-MM-YYYY if you're using
4281 EUROPEAN STYLE). This follows SQL-92 specs.
4282 * "delimiters" is now a keyword
4285 * sql LIKE syntax has been added
4286 * copy command now takes an optional USING DELIMITER specification.
4287 delimiters can be any single-character string.
4288 * IRIX 5.3 port has been added.
4289 Thanks to Paul Walmsley and others.
4290 * updated pg_dump to work with new libpq
4291 * \d has been added psql
4292 Thanks to Keith Parks
4293 * regexp performance for architectures that use POSIX regex has been
4294 improved due to caching of precompiled patterns.
4295 Thanks to Alistair Crooks
4296 * a new version of libpq++
4297 Thanks to William Wanders
4300 * arbitrary userids can be specified in the createuser script
4301 * \c to connect to other databases in psql now works.
4302 * bad pg_proc entry for float4inc() is fixed
4303 * users with usecreatedb field set can now create databases without
4304 having to be usesuper
4305 * remove access control entries when the entry no longer has any
4307 * fixed non-portable datetimes implementation
4308 * added kerberos flags to the src/backend/Makefile
4309 * libpq now works with kerberos
4310 * typographic errors in the user manual have been corrected.
4311 * btrees with multiple index never worked, now we tell you they don't
4312 work when you try to use them
4318 <sect1 id="release-0-03">
4319 <title><productname>Postgres95</productname> Release 0.03</title>
4322 <title>Release date</title>
4323 <simpara>1995-07-21</simpara>
4327 <title>Changes</title>
4330 Incompatible changes:
4331 * BETA-0.3 IS INCOMPATIBLE WITH DATABASES CREATED WITH PREVIOUS VERSIONS
4332 (due to system catalog changes and indexing structure changes).
4333 * double-quote (") is deprecated as a quoting character for string literals;
4334 you need to convert them to single quotes ('). <!-- " -->
4335 * name of aggregates (eg. int4sum) are renamed in accordance with the
4336 SQL standard (eg. sum).
4337 * CHANGE ACL syntax is replaced by GRANT/REVOKE syntax.
4338 * float literals (eg. 3.14) are now of type float4 (instead of float8 in
4339 previous releases); you might have to do typecasting if you depend on it
4340 being of type float8. If you neglect to do the typecasting and you assign
4341 a float literal to a field of type float8, you may get incorrect values
4343 * LIBPQ has been totally revamped so that frontend applications
4344 can connect to multiple backends
4345 * the usesysid field in pg_user has been changed from int2 to int4 to
4346 allow wider range of Unix user ids.
4347 * the netbsd/freebsd/bsd o/s ports have been consolidated into a
4348 single BSD44_derived port. (thanks to Alistair Crooks)
4350 SQL standard-compliance (the following details changes that makes postgres95
4351 more compliant to the SQL-92 standard):
4352 * the following SQL types are now built-in: smallint, int(eger), float, real,
4353 char(N), varchar(N), date and time.
4355 The following are aliases to existing postgres types:
4357 integer, int -> int4
4358 float, real -> float4
4359 char(N) and varchar(N) are implemented as truncated text types. In
4360 addition, char(N) does blank-padding.
4361 * single-quote (') is used for quoting string literals; '' (in addition to
4362 \') is supported as means of inserting a single quote in a string
4363 * SQL standard aggregate names (MAX, MIN, AVG, SUM, COUNT) are used
4364 (Also, aggregates can now be overloaded, i.e. you can define your
4365 own MAX aggregate to take in a user-defined type.)
4366 * CHANGE ACL removed. GRANT/REVOKE syntax added.
4367 - Privileges can be given to a group using the "GROUP" keyword.
4369 GRANT SELECT ON foobar TO GROUP my_group;
4370 The keyword 'PUBLIC' is also supported to mean all users.
4372 Privileges can only be granted or revoked to one user or group
4375 "WITH GRANT OPTION" is not supported. Only class owners can change
4377 - The default access control is to to grant users readonly access.
4378 You must explicitly grant insert/update access to users. To change
4379 this, modify the line in
4380 src/backend/utils/acl.h
4381 that defines ACL_WORLD_DEFAULT
4384 * the bug where aggregates of empty tables were not run has been fixed. Now,
4385 aggregates run on empty tables will return the initial conditions of the
4386 aggregates. Thus, COUNT of an empty table will now properly return 0.
4387 MAX/MIN of an empty table will return a tuple of value NULL.
4388 * allow the use of \; inside the monitor
4389 * the LISTEN/NOTIFY asynchronous notification mechanism now work
4390 * NOTIFY in rule action bodies now work
4391 * hash indexes work, and access methods in general should perform better.
4392 creation of large btree indexes should be much faster. (thanks to Paul
4395 Other changes and enhancements:
4396 * addition of an EXPLAIN statement used for explaining the query execution
4397 plan (eg. "EXPLAIN SELECT * FROM EMP" prints out the execution plan for
4399 * WARN and NOTICE messages no longer have timestamps on them. To turn on
4400 timestamps of error messages, uncomment the line in
4401 src/backend/utils/elog.h:
4402 /* define ELOG_TIMESTAMPS */
4403 * On an access control violation, the message
4404 "Either no such class or insufficient privilege"
4405 will be given. This is the same message that is returned when
4406 a class is not found. This dissuades non-privileged users from
4407 guessing the existence of privileged classes.
4408 * some additional system catalog changes have been made that are not
4409 visible to the user.
4412 * The -oid option has been added to the "pg_result" tcl command.
4413 pg_result -oid returns oid of the last tuple inserted. If the
4414 last command was not an INSERT, then pg_result -oid returns "".
4415 * the large object interface is available as pg_lo* tcl commands:
4416 pg_lo_open, pg_lo_close, pg_lo_creat, etc.
4418 Portability enhancements and New Ports:
4419 * flex/lex problems have been cleared up. Now, you should be able to use
4420 flex instead of lex on any platforms. We no longer make assumptions of
4421 what lexer you use based on the platform you use.
4422 * The Linux-ELF port is now supported. Various configuration have been
4423 tested: The following configuration is known to work:
4424 kernel 1.2.10, gcc 2.6.3, libc 4.7.2, flex 2.5.2, bison 1.24
4425 with everything in ELF format,
4428 * ipcclean added to the distribution
4429 ipcclean usually does not need to be run, but if your backend crashes
4430 and leaves shared memory segments hanging around, ipcclean will
4431 clean them up for you.
4434 * the user manual has been revised and libpq documentation added.
4440 <sect1 id="release-0-02">
4441 <title><productname>Postgres95</productname> Release 0.02</title>
4444 <title>Release date</title>
4445 <simpara>1995-05-25</simpara>
4449 <title>Changes</title>
4453 Incompatible changes:
4454 * The SQL statement for creating a database is 'CREATE DATABASE' instead
4455 of 'CREATEDB'. Similarly, dropping a database is 'DROP DATABASE' instead
4456 of 'DESTROYDB'. However, the names of the executables 'createdb' and
4457 'destroydb' remain the same.
4460 * pgperl - a Perl (4.036) interface to Postgres95
4461 * pg_dump - a utility for dumping out a postgres database into a
4462 script file containing query commands. The script files are in a ASCII
4463 format and can be used to reconstruct the database, even on other
4464 machines and other architectures. (Also good for converting
4465 a Postgres 4.2 database to Postgres95 database.)
4467 The following ports have been incorporated into postgres95-beta-0.02:
4468 * the NetBSD port by Alistair Crooks
4469 * the AIX port by Mike Tung
4470 * the Windows NT port by Jon Forrest (more stuff but not done yet)
4471 * the Linux ELF port by Brian Gallew
4473 The following bugs have been fixed in postgres95-beta-0.02:
4474 * new lines not escaped in COPY OUT and problem with COPY OUT when first
4476 * cannot type return to use the default user id in createuser
4477 * SELECT DISTINCT on big tables crashes
4478 * Linux installation problems
4479 * monitor doesn't allow use of 'localhost' as PGHOST
4480 * psql core dumps when doing \c or \l
4481 * the "pgtclsh" target missing from src/bin/pgtclsh/Makefile
4482 * libpgtcl has a hard-wired default port number
4483 * SELECT DISTINCT INTO TABLE hangs
4484 * CREATE TYPE doesn't accept 'variable' as the internallength
4485 * wrong result using more than 1 aggregate in a SELECT
4491 <sect1 id="release-0-01">
4492 <title><productname>Postgres95</productname> Release 0.01</title>
4495 <title>Release date</title>
4496 <simpara>1995-05-01</simpara>
4505 <sect1 id="timing-results">
4506 <title>Timing Results</title>
4509 These timing results are from running the regression test with the commands
4512 % cd src/test/regress
4518 Timing under Linux 2.0.27 seems to have a roughly 5% variation from run
4519 to run, presumably due to the scheduling vagaries of multitasking systems.
4523 <title>Version 6.5</title>
4526 As has been the case for previous releases, timing between
4527 releases is not directly comparable since new regression tests
4528 have been added. In general, 6.5 is faster than previous
4533 Timing with <function>fsync()</function> disabled:
4537 02:00 Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486
4538 04:38 Sparc Ultra 1 143MHz, 64MB, Solaris 2.6
4543 Timing with <function>fsync()</function> enabled:
4547 04:21 Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486
4550 For the <systemitem class="osname">Linux</systemitem> system above, using <acronym>UW-SCSI</acronym> disks rather than (older) <acronym>IDE</acronym>
4551 disks leads to a 50% improvement in speed on the regression test.
4556 <title>Version 6.4beta</title>
4559 The times for this release are not directly comparable to those for previous releases
4560 since some additional regression tests have been included.
4561 In general, however, 6.4 should be slightly faster than the previous release (thanks, Bruce!).
4566 02:26 Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
4572 <title>Version 6.3</title>
4575 The times for this release are not directly comparable to those for previous releases
4576 since some additional regression tests have been included and some obsolete tests involving
4577 time travel have been removed.
4578 In general, however, 6.3 is substantially faster than previous releases (thanks, Bruce!).
4583 02:30 Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
4584 04:12 Dual Pentium Pro 180, 96MB, EIDE, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
4590 <title>Version 6.1</title>
4595 06:12 Pentium Pro 180, 32MB, EIDE, Linux 2.0.30, gcc 2.7.2 -O2 -m486
4596 12:06 P-100, 48MB, Linux 2.0.29, gcc
4597 39:58 Sparc IPC 32MB, Solaris 2.5, gcc 2.7.2.1 -O -g
4605 <!-- Keep this comment at the end of the file
4610 sgml-minimize-attributes:nil
4611 sgml-always-quote-attributes:t
4614 sgml-parent-document:nil
4615 sgml-default-dtd-file:"./reference.ced"
4616 sgml-exposed-tags:nil
4617 sgml-local-catalogs:("/usr/lib/sgml/catalog")
4618 sgml-local-ecat-files:nil