7 This release improves PostgreSQL for use in high-volume applications.
9 Major changes in this release:
13 Vacuuming no longer locks tables, thus allowing normal user access
14 during the vacuum. A new "VACUUM FULL" command does old-style
15 vacuum by locking the table and shrinking the on-disk copy of the
20 There is no longer a problem with installations that exceed four
25 OID's are now optional. Users can now create tables without OID's
26 for cases where OID usage is excessive.
30 The system now computes histogram column statistics during
31 "ANALYZE", allowing much better optimizer choices.
35 A new MD5 encryption option allows more secure storage and
36 transfer of passwords. A new Unix-domain socket authentication
37 option is available on Linux and BSD systems.
41 Administrators can use the new table access statistics module to
42 get fine-grained information about table and index usage.
46 Program and library messages can now be displayed in several
49 ----------------------------------------------------------------------
51 Migration to version 7.2
53 A dump/restore using "pg_dump" is required for those wishing to migrate
54 data from any previous release.
56 Observe the following incompatibilities:
58 * The semantics of the "VACUUM" command have changed in this release.
59 You may wish to update your maintenance procedures accordingly.
61 * In this release, comparisons using = NULL will always return false (or
62 NULL, more precisely). Previous releases automatically transformed
63 this syntax to IS NULL. The old behavior can be re-enabled using a
64 "postgresql.conf" parameter.
66 * The "pg_hba.conf" and "pg_ident.conf" configuration is now only
67 reloaded after receiving a SIGHUP signal, not with each connection.
69 * The function "octet_length()" now returns the uncompressed data
72 * The date/time value 'current' is no longer available. You will need to
73 rewrite your applications.
75 * The timestamp() function is no longer available. Use timestamp
76 'string' instead, or CAST.
78 The SELECT ... LIMIT #,# syntax will be removed in the next release. You
79 should change your queries to use separate LIMIT and OFFSET clauses, e.g.
82 ----------------------------------------------------------------------
88 Create temporary files in a separate directory (Bruce)
89 Delete orphanded temporary files on postmaster startup (Bruce)
90 Added unique indexes to some system tables (Tom)
91 System table operator reorganization (Oleg Bartunov, Teodor Sigaev, Tom)
92 Renamed pg_log to pg_clog (Tom)
93 Enable SIGTERM, SIGQUIT to kill backends (Jan)
94 Removed compile-time limit on number of backends (Tom)
95 Better cleanup for semaphore resource failure (Tatsuo, Tom)
96 Allow safe transaction ID wraparound (Tom)
97 Removed OID's from some system tables (Tom)
98 Removed "triggered data change violation" error check (Tom)
99 SPI portal creation of prepared/saved plans (Jan)
100 Allow SPI column functions to work for system columns (Tom)
101 Long value compression improvement (Tom)
102 Statistics collector for table, index access (Jan)
103 Truncate extra-long sequence names to a reasonable value (Tom)
104 Measure transaction times in milliseconds (Thomas)
105 Fix TID sequential scans (Hiroshi)
106 Superuser ID now fixed at 1 (Peter E)
107 New pg_ctl "reload" option (Tom)
109 ----------------------------------------------------------------------
113 Optimizer improvements (Tom)
114 New histogram column statistics for optimizer (Tom)
115 Reuse write-ahead log files rather than discarding them (Tom)
116 Cache improvements (Tom)
117 IS NULL, IS NOT NULL optimizer improvement (Tom)
118 Improve lock manager to reduce lock contention (Tom)
119 Keep relcache entries for index access support functions (Tom)
120 Allow better selectivity with NaN and infinities in NUMERIC (Tom)
121 R-tree performance improvements (Kenneth Been)
122 B-tree splits more efficient (Tom)
124 ----------------------------------------------------------------------
128 Change UPDATE, DELETE permissions to be distinct (Peter E)
129 New REFERENCES, TRIGGER privileges (Peter E)
130 Allow GRANT/REVOKE to/from more than one user at a time (Peter E)
131 New has_table_privilege() function (Joe Conway)
132 Allow non-superuser to vacuum database (Tom)
133 New SET SESSION AUTHORIZATION command (Peter E)
134 Fix bug in privilege modifications on newly created tables (Tom)
135 Disallow access to pg_statistic for non-superuser, add user-accessible views (Tom)
137 ----------------------------------------------------------------------
139 Client Authentication
141 Fork postmaster before doing authentication to prevent hangs (Peter E)
142 Add ident authentication over Unix domain sockets on Linux, *BSD (Helge Bahmann, Oliver Elphick, Teodor Sigaev, Bruce)
143 Add a password authentication method that uses MD5 encryption (Bruce)
144 Allow encryption of stored passwords using MD5 (Bruce)
145 PAM authentication (Dominic J. Eidson)
146 Load pg_hba.conf and pg_ident.conf only on startup and SIGHUP (Bruce)
148 ----------------------------------------------------------------------
152 Interpretation of some time zone abbreviations as Australian rather than North American now settable at run time (Bruce)
153 New parameter to set default transaction isolation level (Peter E)
154 New parameter to enable conversion of "expr = NULL" into "expr IS NULL", off by default (Peter E)
155 New parameter to control memory usage by VACUUM (Tom)
156 New parameter to set client authentication timeout (Tom)
157 New parameter to set maximum number of open files (Tom)
159 ----------------------------------------------------------------------
163 Statements added by INSERT rules now execute after the INSERT (Jan)
164 Prevent unadorned relation names in target list (Bruce)
165 NULLs now sort after all normal values in ORDER BY (Tom)
166 New IS UNKNOWN, IS NOT UNKNOWN Boolean tests (Tom)
167 New SHARE UPDATE EXCLUSIVE lock mode (Tom)
168 New EXPLAIN ANALYZE command that shows run times and row counts (Martijn van Oosterhout)
169 Fix problem with LIMIT and subqueries (Tom)
170 Fix for LIMIT, DISTINCT ON pushed into subqueryies (Tom)
171 Fix nested EXCEPT/INTERSECT (Tom)
173 ----------------------------------------------------------------------
177 Fix SERIAL in temporary tables (Bruce)
178 Allow temporary sequences (Bruce)
179 Sequences now use int8 internally (Tom)
180 New SERIAL8 creates int8 columns with sequences, default still SERIAL4 (Tom)
181 Make OIDs optional using WITHOUT OIDS (Tom)
182 Add %TYPE syntax to CREATE TYPE (Ian Lance Taylor)
183 Add ALTER TABLE / DROP CONSTRAINT for CHECK constraints (Christopher Kings-Lynne)
184 New CREATE OR REPLACE FUNCTION to alter existing function (preserving the function OID) (Gavin Sherry)
185 Add ALTER TABLE / ADD UNIQUE (Christopher Kings-Lynne)
186 Allow column renaming in views
187 Make ALTER TABLE / RENAME COLUMN update column names of indexes (Brent Verner)
188 Fix for ALTER TABLE / ADD CONSTRAINT ... CHECK with inherited tables (Stephan Szabo)
189 ALTER TABLE RENAME update foreign-key trigger arguments correctly (Brent Verner)
190 DROP AGGREGATE and COMMENT ON AGGREGATE now accept an aggtype (Tom)
191 Add automatic return type data casting for SQL functions (Tom)
192 Allow GiST indexes to handle NULLs and multikey indexes (Oleg Bartunov, Teodor Sigaev, Tom)
193 Enable partial indexes (Martijn van Oosterhout)
195 ----------------------------------------------------------------------
199 Add RESET ALL, SHOW ALL (Marko Kreen)
200 CREATE/ALTER USER/GROUP now allow options in any order (Vince)
201 Add LOCK A, B, C functionality (Neil Padgett)
202 New ENCRYPTED/UNENCRYPTED option to CREATE/ALTER USER (Bruce)
203 New light-weight VACUUM does not lock table; old semantics are available as VACUUM FULL (Tom)
204 Disable COPY TO/FROM on views (Bruce)
205 COPY DELIMITERS string must be exactly one character (Tom)
206 VACUUM warning about index tuples fewer than heap now only appears when appropriate (Martijn van Oosterhout)
208 ----------------------------------------------------------------------
210 Data Types and Functions
212 SUM(), AVG(), COUNT() now uses int8 internally for speed (Tom)
213 Add convert(), convert2() (Tatsuo)
214 New function bit_length() (Peter E)
215 Make the "n" in CHAR(n)/VARCHAR(n) represents letters, not bytes (Tatsuo)
216 CHAR(), VARCHAR() now reject strings that are too long (Peter E)
217 BIT VARYING now rejects bit strings that are too long (Peter E)
218 BIT now rejects bit strings that do not match declared size (Peter E)
219 INET, CIDR text conversion functions (Alex Pilosov)
220 INET, CIDR operators << and <<= indexable (Alex Pilosov)
221 Bytea \### now requires valid three digit octal number
222 Bytea comparison improvements, now supports =, <>, >, >=, <, and <=
223 Bytea now supports B-tree indexes
224 Bytea now supports LIKE, LIKE...ESCAPE, NOT LIKE, NOT LIKE...ESCAPE
225 Bytea now supports concatenation
226 New bytea functions: position, substring, trim, btrim, and length
227 New encode() function mode, "escaped", converts minimally escaped bytea to/from text
228 Add pg_database_encoding_max_length() (Tatsuo)
229 Add pg_client_encoding() function (Tatsuo)
230 now() returns time with millisecond precision (Thomas)
231 New TIMESTAMP WITHOUT TIMEZONE data type (Thomas)
232 Add ISO date/time specification with "T", yyyy-mm-ddThh:mm:ss (Thomas)
233 New xid/int comparison functions (Hiroshi)
234 Add precision to TIME, TIMESTAMP, and INVERVAL data types (Thomas)
235 Modify type coersion logic to attempt binary-compatible functions first (Tom)
236 New encode() function installed by default (Marko Kreen)
237 Improved to_*() conversion functions (Karel Zak)
238 Optimize LIKE/ILIKE when using single-byte encodings (Tatsuo)
239 New functions in contrib/pgcrypto: crypt(), hmac(), encrypt(), gen_salt() (Marko Kreen)
240 Correct description of translate() function (Bruce)
241 Add INTERVAL argument for SET TIME ZONE (Thomas)
242 Add INTERVAL YEAR TO MONTH (etc.) syntax (Thomas)
243 Optimize length functions when using single-byte encodings (Tatsuo)
244 Fix path_inter, path_distance, path_length, dist_ppath to handle closed paths (Curtis Barrett, Tom)
245 octet_length(text) now returns non-compressed length (Tatsuo, Bruce)
246 Handle "July" full name in date/time literals (Greg Sabino Mullane)
247 Some datatype() function calls now evaluated differently
249 ----------------------------------------------------------------------
253 National language support in psql, pg_dump, libpq, and server (Peter E)
254 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)
255 Make trim, ltrim, rtrim, btrim, lpad, rpad, translate multibyte aware (Tatsuo)
256 Add LATIN5,6,7,8,9,10 support (Tatsuo)
257 Add ISO 8859-5,6,7,8 support (Tatsuo)
258 Correct LATIN5 to mean ISO-8859-9, not ISO-8859-5 (Tatsuo)
259 Make mic2ascii() non-ASCII aware (Tatsuo)
260 Reject invalid multibyte character sequences (Tatsuo)
262 ----------------------------------------------------------------------
266 Now uses portals for SELECT loops, allowing huge result sets (Jan)
267 CURSOR and REFCURSOR support (Jan)
268 Can now return open cursors (Jan)
269 Add ELSEIF (Klaus Reger)
270 Improve PL/pgSQL error reporting, including location of error (Tom)
271 Allow IS or FOR key words in cursor declaration, for compatibility (Bruce)
272 Fix for SELECT ... FOR UPDATE (Tom)
273 Fix for PERFORM returning multiple rows (Tom)
274 Make PL/PgSQL use the server's type coercion code (Tom)
275 Memory leak fix (Jan, Tom)
276 Make trailing semicolon optional (Tom)
278 ----------------------------------------------------------------------
282 New untrusted PL/Perl (Alex Pilosov)
283 PL/Perl is now built on some platforms even if libperl is not shared (Peter E)
285 ----------------------------------------------------------------------
289 Now reports errorInfo (Vsevolod Lobko)
290 Add spi_lastoid function (bob@redivi.com)
292 ----------------------------------------------------------------------
296 ...is new (Andrew Bosma)
298 ----------------------------------------------------------------------
302 \d displays indexes in unique, primary groupings (Christopher Kings-Lynne)
303 Allow trailing semicolons in backslash commands (Greg Sabino Mullane)
304 Read password from /dev/tty if possible
305 Force new password prompt when changing user and database (Tatsuo, Tom)
306 Format the correct number of columns for Unicode (Patrice)
308 ----------------------------------------------------------------------
312 New function PQescapeString() to escape quotes in command strings (Florian Weimer)
313 New function PQescapeBytea() escapes binary strings for use as SQL string literals
315 ----------------------------------------------------------------------
319 Return OID of INSERT (Ken K)
320 Handle more data types (Ken K)
321 Handle single quotes and newlines in strings (Ken K)
322 Handle NULL variables (Ken K)
323 Fix for time zone handling (Barry Lind)
324 Improved Druid support
325 Allow eight-bit characters with non-multibyte server (Barry Lind)
326 Support BIT, BINARY types (Ned Wolpert)
327 Reduce memory usage (Michael Stephens, Dave Cramer)
328 Update DatabaseMetaData (Peter E)
329 Add DatabaseMetaData.getCatalogs() (Peter E)
330 Encoding fixes (Anders Bengtsson)
331 Get/setCatalog methods (Jason Davies)
332 DatabaseMetaData.getColumns() now returns column defaults (Jason Davies)
333 DatabaseMetaData.getColumns() performance improvement (Jeroen van Vianen)
334 Some JDBC1 and JDBC2 merging (Anders Bengtsson)
335 Transaction performance improvements (Barry Lind)
336 Array fixes (Greg Zoller)
338 Fix batch processing (Rene Pijlman)
339 ExecSQL method reorganization (Anders Bengtsson)
340 GetColumn() fixes (Jeroen van Vianen)
341 Fix isWriteable() function (Rene Pijlman)
342 Improved passage of JDBC2 conformance tests (Rene Pijlman)
343 Add bytea type capability (Barry Lind)
344 Add isNullable() (Rene Pijlman)
345 JDBC date/time test suite fixes (Liam Stewart)
346 Fix for SELECT 'id' AS xxx FROM table (Dave Cramer)
347 Fix DatabaseMetaData to show precision properly (Mark Lillywhite)
348 New getImported/getExported keys (Jason Davies)
349 MD5 password encryption support (Jeremy Wohl)
350 Fix to actually use type cache (Ned Wolpert)
352 ----------------------------------------------------------------------
356 Remove query size limit (Hiroshi)
357 Remove text field size limit (Hiroshi)
358 Fix for SQLPrimaryKeys in multibyte mode (Hiroshi)
359 Allow ODBC procedure calls (Hiroshi)
360 Improve boolean handing (Aidan Mountford)
361 Most configuration options on setable via DSN (Hiroshi)
362 Multibyte, performance fixes (Hiroshi)
363 Allow driver to be used with iODBC or unixODBC (Peter E)
364 MD5 password encryption support (Bruce)
365 Add more compatibility functions to odbc.sql (Peter E)
367 ----------------------------------------------------------------------
371 EXECUTE ... INTO implemented (Christof Petig)
372 Multiple row descriptor support (e.g. CARDINALITY) (Christof Petig)
373 Fix for GRANT parameters (Lee Kindness)
374 Fix INITIALLY DEFERRED bug
375 Various bug fixes (Michael, Christof Petig)
376 Auto allocation for indicator variable arrays (int *ind_p=NULL)
377 Auto allocation for string arrays (char **foo_pp=NULL)
378 ECPGfree_auto_mem fixed
379 All function names with external linkage are now prefixed by ECPG
381 ----------------------------------------------------------------------
385 Python fix fetchone() (Gerhard Haring)
386 Use UTF, Unicode in Tcl where appropriate (Vsevolod Lobko, Reinhard Max)
387 Add Tcl COPY TO/FROM (ljb)
388 Prevent output of default index op class in pg_dump (Tom)
389 Fix libpgeasy memory leak (Bruce)
391 ----------------------------------------------------------------------
395 Configure, dynamic loader, and shared library fixes (Peter E)
396 Fixes in QNX 4 port (Bernd Tegge)
397 Fixes in Cygwin and Win32 ports (Jason Tishler, Gerhard Haring, Dmitry Yurtaev, Darko Prenosil, Mikhail Terekhov)
398 Fix for Win32 socket communication failures (Magnus, Mikhail Terekhov)
399 Hurd compile fix (Oliver Elphick)
400 BeOS fixes (Cyril Velter)
401 Remove configure --enable-unicode-conversion, now enabled by multibyte (Tatsuo)
402 AIX fixes (Tatsuo, Andreas)
403 Fix parallel make (Peter E)
404 Install SQL language manual pages into OS-specific directories (Peter E)
405 Rename config.h to pg_config.h (Peter E)
406 Reorganize installation layout of header files (Peter E)
408 ----------------------------------------------------------------------
412 Remove SEP_CHAR (Bruce)
414 Merge GUC and command line handling (Marko Kreen)
415 Remove EXTEND INDEX (Martijn van Oosterhout, Tom)
416 New pgjindent utility to indent java code (Bruce)
417 Remove define of true/false when compiling under C++ (Leandro Fanzone, Tom)
418 pgindent fixes (Bruce, Tom)
419 Replace strcasecmp() with strcmp() where appropriate (Peter E)
420 Dynahash portability improvements (Tom)
422 ----------------------------------------------------------------------
426 New contrib/rtree_gist (Oleg Bartunov, Teodor Sigaev)
427 New contrib/tsearch full-text indexing (Oleg, Teodor Sigaev)
428 Add contrib/dblink for remote database access (Joe Conway)
429 contrib/ora2pg Oracle conversion utility (Gilles Darold)
430 contrib/xml XML conversion utility (John Gray)
431 contrib/fulltextindex fixes (Christopher Kings-Lynne)
432 New contrib/fuzzystrmatch with levenshtein and metaphone, soundex merged (Joe Conway)
433 Add contrib/intarray boolean queries, binary search, fixes (Oleg Bartunov)
435 ----------------------------------------------------------------------
439 Release date: 2001-08-15
441 ----------------------------------------------------------------------
443 Migration to version 7.1.3
445 A dump/restore is *not* required for those running 7.1.X.
447 ----------------------------------------------------------------------
451 Remove unused WAL segements of large transactions (Tom)
452 Multiaction rule fix (Tom)
453 Pl/pgSQL memory allocation fix (Jan)
454 VACUUM buffer fix (Tom)
455 Regression test fixes (Tom)
456 pg_dump fixes for GRANT/REVOKE/comments on views, user-defined types (Tom)
457 Fix subselects with DISTINCT ON or LIMIT (Tom)
459 Disable COPY TO/FROM a view (Tom)
460 Cygwin build (Jason Tishler)
463 ----------------------------------------------------------------------
467 Release date: 2001-05-11
469 This has one fix from 7.1.1.
471 ----------------------------------------------------------------------
473 Migration to version 7.1.2
475 A dump/restore is *not* required for those running 7.1.X.
477 ----------------------------------------------------------------------
481 Fix PL/PgSQL SELECTs when returning no rows
482 Fix for psql backslash core dump
483 Referential integrity permission fix
488 ----------------------------------------------------------------------
492 Release date: 2001-05-05
494 This has a variety of fixes from 7.1.
496 ----------------------------------------------------------------------
498 Migration to version 7.1.1
500 A dump/restore is *not* required for those running 7.1.
502 ----------------------------------------------------------------------
506 Fix for numeric MODULO operator (Tom)
507 pg_dump fixes (Philip)
508 pg_dump can dump 7.0 databases (Philip)
509 readline 4.2 fixes (Peter E)
511 AIX, MSWIN, VAX,N32K fixes (Tom)
512 Multibytes fixes (Tom)
513 Unicode fixes (Tatsuo)
514 Optimizer improvements (Tom)
515 Fix for whole tuples in functions (Tom)
516 Fix for pg_ctl and option strings with spaces (Peter E)
518 EXTRACT can now take string argument (Thomas)
522 ----------------------------------------------------------------------
526 Release date: 2001-04-13
528 This release focuses on removing limitations that have existed in the
529 PostgreSQL code for many years.
531 Major changes in this release:
533 Write-ahead Log (WAL)
535 To maintain database consistency in case of an operating system
536 crash, previous releases of PostgreSQL have forced all data
537 modifications to disk before each transaction commit. With WAL,
538 only one log file must be flushed to disk, greatly improving
539 performance. If you have been using -F in previous releases to
540 disable disk flushes, you may want to consider discontinuing its
545 TOAST - Previous releases had a compiled-in row length limit,
546 typically 8k - 32k. This limit made storage of long text fields
547 difficult. With TOAST, long rows of any length can be stored with
552 We now support outer joins. The UNION/NOT IN workaround for outer
553 joins is no longer required. We use the SQL92 outer join syntax.
557 The previous C function manager did not handle NULLs properly, nor
558 did it support 64-bit CPU's (Alpha). The new function manager
559 does. You can continue using your old custom functions, but you
560 may want to rewrite them in the future to use the new function
561 manager call interface.
565 A large number of complex queries that were unsupported in
566 previous releases now work. Many combinations of views,
567 aggregates, UNION, LIMIT, cursors, subqueries, and inherited
568 tables now work properly. Inherited tables are now accessed by
569 default. Subqueries in FROM are now supported.
571 ----------------------------------------------------------------------
573 Migration to version 7.1
575 A dump/restore using pg_dump is required for those wishing to migrate data
576 from any previous release.
578 ----------------------------------------------------------------------
584 Many multi-byte/Unicode/locale fixes (Tatsuo and others)
585 More reliable ALTER TABLE RENAME (Tom)
586 Kerberos V fixes (David Wragg)
587 Fix for INSERT INTO...SELECT where targetlist has subqueries (Tom)
588 Prompt username/password on standard error (Bruce)
589 Large objects inv_read/inv_write fixes (Tom)
590 Fixes for to_char(), to_date(), to_ascii(), and to_timestamp() (Karel,
592 Prevent query expressions from leaking memory (Tom)
593 Allow UPDATE of arrays elements (Tom)
594 Wake up lock waiters during cancel (Hiroshi)
595 Fix rare cursor crash when using hash join (Tom)
596 Fix for DROP TABLE/INDEX in rolled-back transaction (Hiroshi)
597 Fix psql crash from \l+ if MULTIBYTE enabled (Peter E)
598 Fix truncation of rule names during CREATE VIEW (Ross Reedstrom)
599 Fix PL/perl (Alex Kapranoff)
600 Disallow LOCK on views (Mark Hollomon)
601 Disallow INSERT/UPDATE/DELETE on views (Mark Hollomon)
602 Disallow DROP RULE, CREATE INDEX, TRUNCATE on views (Mark Hollomon)
603 Allow PL/pgSQL accept non-ASCII identifiers (Tatsuo)
604 Allow views to proper handle GROUP BY, aggregates, DISTINCT (Tom)
605 Fix rare failure with TRUNCATE command (Tom)
606 Allow UNION/INTERSECT/EXCEPT to be used with ALL, subqueries, views,
607 DISTINCT, ORDER BY, SELECT...INTO (Tom)
608 Fix parser failures during aborted transactions (Tom)
609 Allow temporary relations to properly clean up indexes (Bruce)
610 Fix VACUUM problem with moving rows in same page (Tom)
611 Modify pg_dump to better handle user-defined items in template1 (Philip)
612 Allow LIMIT in VIEW (Tom)
613 Require cursor FETCH to honor LIMIT (Tom)
614 Allow PRIMARY/FOREIGN Key definitions on inherited columns (Stephan)
615 Allow ORDER BY, LIMIT in sub-selects (Tom)
616 Allow UNION in CREATE RULE (Tom)
617 Make ALTER/DROP TABLE rollback-able (Vadim, Tom)
618 Store initdb collation in pg_control so collation cannot be changed (Tom)
619 Fix INSERT...SELECT with rules (Tom)
620 Fix FOR UPDATE inside views and subselects (Tom)
621 Fix OVERLAPS operators conform to SQL92 spec regarding NULLs (Tom)
622 Fix lpad() and rpad() to handle length less than input string (Tom)
623 Fix use of NOTIFY in some rules (Tom)
624 Overhaul btree code (Tom)
625 Fix NOT NULL use in Pl/PgSQL variables (Tom)
626 Overhaul GIST code (Oleg)
627 Fix CLUSTER to preserve constraints and column default (Tom)
628 Improved deadlock detection handling (Tom)
629 Allow multiple SERIAL columns in a table (Tom)
630 Prevent occasional index corruption (Vadim)
634 Add OUTER JOINs (Tom)
635 Function manager overhaul (Tom)
636 Allow ALTER TABLE RENAME on indexes (Tom)
637 Improve CLUSTER (Tom)
638 Improve ps status display for more platforms (Peter E, Marc)
639 Improve CREATE FUNCTION failure message (Ross)
640 JDBC improvements (Peter, Travis Bauer, Christopher Cain, William Webber,
642 Grand Unified Configuration scheme/GUC. Many options can now be set in
643 data/postgresql.conf, postmaster/postgres flags, or SET commands (Peter E)
644 Improved handling of file descriptor cache (Tom)
645 New warning code about auto-created table alias entries (Bruce)
646 Overhaul initdb process (Tom, Peter E)
647 Overhaul of inherited tables; inherited tables now accessed by default;
648 new ONLY keyword prevents it (Chris Bitmead, Tom)
649 ODBC cleanups/improvements (Nick Gorham, Stephan Szabo, Zoltan Kovacs,
651 Allow renaming of temp tables (Tom)
652 Overhaul memory manager contexts (Tom)
653 pg_dumpall uses CREATE USER or CREATE GROUP rather using COPY (Peter E)
654 Overhaul pg_dump (Philip Warner)
655 Allow pg_hba.conf secondary password file to specify only username (Peter E)
656 Allow TEMPORARY or TEMP keyword when creating temporary tables (Bruce)
657 New memory leak checker (Karel)
658 New SET SESSION CHARACTERISTICS (Thomas)
659 Allow nested block comments (Thomas)
660 Add WITHOUT TIME ZONE type qualifier (Thomas)
661 New ALTER TABLE ADD CONSTRAINT (Stephan)
662 Use NUMERIC accumulators for INTEGER aggregates (Tom)
663 Overhaul aggregate code (Tom)
664 New VARIANCE and STDDEV() aggregates
665 Improve dependency ordering of pg_dump (Philip)
666 New pg_restore command (Philip)
667 New pg_dump tar output option (Philip)
668 New pg_dump of large objects (Philip)
669 New ESCAPE option to LIKE (Thomas)
670 New case-insensitive LIKE - ILIKE (Thomas)
671 Allow functional indexes to use binary-compatible type (Tom)
672 Allow SQL functions to be used in more contexts (Tom)
673 New pg_config utility (Peter E)
674 New PL/pgSQL EXECUTE command which allows dynamic SQL and utility statements
676 New PL/pgSQL GET DIAGNOSTICS statement for SPI value access (Jan)
677 New quote_identifiers() and quote_literal() functions (Jan)
678 New ALTER TABLE table OWNER TO user command (Mark Hollomon)
679 Allow subselects in FROM, i.e. FROM (SELECT ...) [AS] alias (Tom)
680 Update PyGreSQL to version 3.1 (D'Arcy)
681 Store tables as files named by OID (Vadim)
682 New SQL function setval(seq,val,bool) for use in pg_dump (Philip)
683 Require DROP VIEW to remove views, no DROP TABLE (Mark)
684 Allow DROP VIEW view1, view2 (Mark)
685 Allow multiple objects in DROP INDEX, DROP RULE, and DROP TYPE (Tom)
686 Allow automatic conversion to/from Unicode (Tatsuo, Eiji)
687 New /contrib/pgcrypto hashing functions (Marko Kreen)
688 New pg_dumpall --globals-only option (Peter E)
689 New CHECKPOINT command for WAL which creates new WAL log file (Vadim)
690 New AT TIME ZONE syntax (Thomas)
691 Allow location of Unix domain socket to be configurable (David J. MacKenzie)
692 Allow postmaster to listen on a specific IP address (David J. MacKenzie)
693 Allow socket path name to be specified in hostname by using leading slash
695 Allow CREATE DATABASE to specify template database (Tom)
696 New utility to convert MySQL schema dumps to SQL92 and PostgreSQL (Thomas)
697 New /contrib/rserv replication toolkit (Vadim)
698 New file format for COPY BINARY (Tom)
699 New /contrib/oid2name to map numeric files to table names (B Palmer)
700 New "idle in transaction" ps status message (Marc)
701 Update to pgaccess 0.98.7 (Constantin Teodorescu)
702 pg_ctl now defaults to -w (wait) on shutdown, new -l (log) option
703 Add rudimentary dependency checking to pg_dump (Philip)
707 Fix INET/CIDR type ordering and add new functions (Tom)
708 Make OID behave as an unsigned type (Tom)
709 Allow BIGINT as synonym for INT8 (Peter E)
710 New int2 and int8 comparison operators (Tom)
711 New BIT and BIT VARYING types (Adriaan Joubert, Tom, Peter E)
712 CHAR() no longer faster than VARCHAR() because of TOAST (Tom)
713 New GIST seg/cube examples (Gene Selkov)
714 Improved round(numeric) handling (Tom)
715 Fix CIDR output formatting (Tom)
716 New CIDR abbrev() function (Tom)
720 Write-Ahead Log (WAL) to provide crash recovery with less performance
722 ANALYZE stage of VACUUM no longer exclusively locks table (Bruce)
723 Reduced file seeks (Denis Perchine)
724 Improve BTREE code for duplicate keys (Tom)
725 Store all large objects in a single table (Denis Perchine, Tom)
726 Improve memory allocation performance (Karel, Tom)
730 New function manager call conventions (Tom)
731 SGI portability fixes (David Kaelbling)
732 New configure --enable-syslog option (Peter E)
733 New BSDI README (Bruce)
734 configure script moved to top level, not /src (Peter E)
735 Makefile/configuration/compilation overhaul (Peter E)
736 New configure --with-python option (Peter E)
737 Solaris cleanups (Peter E)
738 Overhaul /contrib Makefiles (Karel)
739 New OpenSSL configuration option (Magnus, Peter E)
742 New heap_open(), heap_openr() API (Tom)
743 Remove colon and semi-colon operators (Thomas)
744 New pg_class.relkind value for views (Mark Hollomon)
745 Rename ichar() to chr() (Karel)
746 New documentation for btrim(), ascii(), chr(), repeat() (Karel)
747 Fixes for NT/Cygwin (Pete Forman)
748 AIX port fixes (Andreas)
749 New BeOS port (David Reid, Cyril Velter)
750 Add proofreader's changes to docs (Addison-Wesley, Bruce)
751 New Alpha spinlock code (Adriaan Joubert, Compaq)
752 Unixware port overhaul (Peter E)
753 New Darwin/Mac OSX port (Peter Bierman, Bruce Hartzler)
754 New FreeBSD Alpha port (Alfred)
755 Overhaul shared memory segments (Tom)
756 Add IBM S/390 support (Neale Ferguson)
757 Moved macmanuf to /contrib (Larry Rosenman)
758 Syslog improvements (Larry Rosenman)
759 New template0 database that contains no user additions (Tom)
760 New /contrib/cube and /contrib/seg GIST sample code (Gene Selkov)
761 Allow NetBSD's libedit instead of readline (Peter)
762 Improved assembly language source code format (Bruce)
763 New contrib/pg_logger
764 New --template option to createdb
765 New contrib/pg_control utility (Oliver)
766 New FreeBSD tools ipc_check, start-scripts/freebsd
769 ----------------------------------------------------------------------
773 Release date: 2000-11-11
775 This has a variety of fixes from 7.0.2.
777 ----------------------------------------------------------------------
779 Migration to version 7.0.3
781 A dump/restore is *not* required for those running 7.0.*.
783 ----------------------------------------------------------------------
788 Large object fix (Tom)
789 Fix lean in COPY WITH OIDS leak (Tom)
790 Fix backwards-index-scan (Tom)
791 Fix SELECT ... FOR UPDATE so it checks for duplicate keys (Hiroshi)
792 Add --enable-syslog to configure (Marc)
793 Fix abort transaction at backend exit in rare cases (Tom)
794 Fix for psql \l+ when multi-byte enabled (Tatsuo)
795 Allow PL/pgSQL to accept non ascii identifiers (Tatsuo)
796 Make vacuum always flush buffers (Tom)
797 Fix to allow cancel while waiting for a lock (Hiroshi)
798 Fix for memory aloocation problem in user authentication code (Tom)
799 Remove bogus use of int4out() (Tom)
800 Fixes for multiple subqueries in COALESCE or BETWEEN (Tom)
801 Fix for failure of triggers on heap open in certain cases (Jeroen van
803 Fix for erroneous selectivity of not-equals (Tom)
804 Fix for erroneous use of strcmp() (Tom)
805 Fix for bug where storage manager accesses items beyond end of file
807 Fix to include kernel errno message in all smgr elog messages (Tom)
808 Fix for '.' not in PATH at build time (SL Baur)
809 Fix for out-of-file-descriptors error (Tom)
810 Fix to make pg_dump dump 'iscachable' flag for functions (Tom)
811 Fix for subselect in targetlist of Append node (Tom)
812 Fix for mergejoin plans (Tom)
813 Fix TRUNCATE failure on relations with indexes (Tom)
814 Avoid database-wide restart on write error (Hiroshi)
815 Fix nodeMaterial to honor chgParam by recomputing its output (Tom)
816 Fix VACUUM problem with moving chain of update tuples when source and
817 destination of a tuple lie on the same page (Tom)
818 Fix user.c CommandCounterIncrement (Tom)
819 Fix for AM/PM boundary problem in to_char() (Karel Zak)
820 Fix TIME aggregate handling (Tom)
821 Fix to_char() to avoid coredump on NULL input (Tom)
823 Fix for inserting/copying longer multibyte strings into char() data
825 Fix for crash of backend, on abort (Tom)
828 ----------------------------------------------------------------------
832 Release date: 2000-06-05
834 This is a repackaging of 7.0.1 with added documentation.
836 ----------------------------------------------------------------------
838 Migration to version 7.0.2
840 A dump/restore is *not* required for those running 7.*.
842 ----------------------------------------------------------------------
846 Added documentation to tarball.
849 ----------------------------------------------------------------------
853 Release date: 2000-06-01
855 This is a cleanup release for 7.0.
857 ----------------------------------------------------------------------
859 Migration to version 7.0.1
861 A dump/restore is *not* required for those running 7.0.
863 ----------------------------------------------------------------------
867 Fix many CLUSTER failures (Tom)
868 Allow ALTER TABLE RENAME works on indexes (Tom)
869 Fix plpgsql to handle datetime->timestamp and timespan->interval (Bruce)
870 New configure --with-setproctitle switch to use setproctitle() (Marc, Bruce)
871 Fix the off by one errors in ResultSet from 6.5.3, and more.
872 jdbc ResultSet fixes (Joseph Shraibman)
873 optimizer tunings (Tom)
874 Fix create user for pgaccess
875 Fix for UNLISTEN failure
876 IRIX fixes (David Kaelbling)
877 QNX fixes (Andreas Kardos)
878 Reduce COPY IN lock level (Tom)
879 Change libpqeasy to use PQconnectdb() style parameters (Bruce)
880 Fix pg_dump to handle OID indexes (Tom)
881 Fix small memory leak (Tom)
882 Solaris fix for createdb/dropdb (Tatsuo)
883 Fix for non-blocking connections (Alfred Perlstein)
884 Fix improper recovery after RENAME TABLE failures (Tom)
885 Copy pg_ident.conf.sample into /lib directory in install (Bruce)
886 Add SJIS UDC (NEC selection IBM kanji) support (Eiji Tokuya)
887 Fix too long syslog message (Tatsuo)
888 Fix problem with quoted indexes that are too long (Tom)
889 JDBC ResultSet.getTimestamp() fix (Gregory Krasnow & Floyd Marinescu)
890 ecpg changes (Michael)
893 ----------------------------------------------------------------------
897 Release date: 2000-05-08
899 This release contains improvements in many areas, demonstrating the
900 continued growth of PostgreSQL. There are more improvements and fixes in
901 7.0 than in any previous release. The developers have confidence that this
902 is the best release yet; we do our best to put out only solid releases,
903 and this one is no exception.
905 Major changes in this release:
909 Foreign keys are now implemented, with the exception of PARTIAL
910 MATCH foreign keys. Many users have been asking for this feature,
911 and we are pleased to offer it.
915 Continuing on work started a year ago, the optimizer has been
916 improved, allowing better query plan selection and faster
917 performance with less memory usage.
921 psql, our interactive terminal monitor, has been updated with a
922 variety of new features. See the psql manual page for details.
926 SQL92 join syntax is now supported, though only as INNER JOINs for
927 this release. JOIN, NATURAL JOIN, JOIN/USING, JOIN/ON are
928 available, as are column correlation names.
930 ----------------------------------------------------------------------
932 Migration to version 7.0
934 A dump/restore using pg_dump is required for those wishing to migrate data
935 from any previous release of PostgreSQL. For those upgrading from 6.5.*,
936 you may instead use pg_upgrade to upgrade to this release; however, a full
937 dump/reload installation is always the most robust method for upgrades.
939 Interface and compatibility issues to consider for the new release
942 * The date/time types datetime and timespan have been superseded by the
943 SQL92-defined types timestamp and interval. Although there has been
944 some effort to ease the transition by allowing PostgreSQL to recognize
945 the deprecated type names and translate them to the new type names,
946 this mechanism may not be completely transparent to your existing
949 * The optimizer has been substantially improved in the area of query
950 cost estimation. In some cases, this will result in decreased query
951 times as the optimizer makes a better choice for the preferred plan.
952 However, in a small number of cases, usually involving pathological
953 distributions of data, your query times may go up. If you are dealing
954 with large amounts of data, you may want to check your queries to
957 * The JDBC and ODBC interfaces have been upgraded and extended.
959 * The string function CHAR_LENGTH is now a native function. Previous
960 versions translated this into a call to LENGTH, which could result in
961 ambiguity with other types implementing LENGTH such as the geometric
964 ----------------------------------------------------------------------
970 Prevent function calls exceeding maximum number of arguments (Tom)
971 Improve CASE construct (Tom)
972 Fix SELECT coalesce(f1,0) FROM int4_tbl GROUP BY f1 (Tom)
973 Fix SELECT sentence.words[0] FROM sentence GROUP BY sentence.words[0] (Tom)
974 Fix GROUP BY scan bug (Tom)
975 Improvements in SQL grammar processing (Tom)
976 Fix for views involved in INSERT ... SELECT ... (Tom)
977 Fix for SELECT a/2, a/2 FROM test_missing_target GROUP BY a/2 (Tom)
978 Fix for subselects in INSERT ... SELECT (Tom)
979 Prevent INSERT ... SELECT ... ORDER BY (Tom)
980 Fixes for relations greater than 2GB, including vacuum
981 Improve propagating system table changes to other backends (Tom)
982 Improve propagating user table changes to other backends (Tom)
983 Fix handling of temp tables in complex situations (Bruce, Tom)
984 Allow table locking at table open, improving concurrent reliability (Tom)
985 Properly quote sequence names in pg_dump (Ross J. Reedstrom)
986 Prevent DROP DATABASE while others accessing
987 Prevent any rows from being returned by GROUP BY if no rows processed (Tom)
988 Fix SELECT COUNT(1) FROM table WHERE ...' if no rows matching WHERE (Tom)
989 Fix pg_upgrade so it works for MVCC (Tom)
990 Fix for SELECT ... WHERE x IN (SELECT ... HAVING SUM(x) > 1) (Tom)
991 Fix for "f1 datetime DEFAULT 'now'" (Tom)
992 Fix problems with CURRENT_DATE used in DEFAULT (Tom)
993 Allow comment-only lines, and ;;; lines too. (Tom)
994 Improve recovery after failed disk writes, disk full (Hiroshi)
995 Fix cases where table is mentioned in FROM but not joined (Tom)
996 Allow HAVING clause without aggregate functions (Tom)
997 Fix for "--" comment and no trailing newline, as seen in perl interface
998 Improve pg_dump failure error reports (Bruce)
999 Allow sorts and hashes to exceed 2GB file sizes (Tom)
1000 Fix for pg_dump dumping of inherited rules (Tom)
1001 Fix for NULL handling comparisons (Tom)
1002 Fix inconsistent state caused by failed CREATE/DROP commands (Hiroshi)
1003 Fix for dbname with dash
1004 Prevent DROP INDEX from interfering with other backends (Tom)
1005 Fix file descriptor leak in verify_password()
1006 Fix for "Unable to identify an operator =$" problem
1007 Fix ODBC so no segfault if CommLog and Debug enabled (Dirk Niggemann)
1008 Fix for recursive exit call (Massimo)
1009 Fix for extra-long timezones (Jeroen van Vianen)
1010 Make pg_dump preserve primary key information (Peter E)
1011 Prevent databases with single quotes (Peter E)
1012 Prevent DROP DATABASE inside transaction (Peter E)
1013 ecpg memory leak fixes (Stephen Birch)
1014 Fix for SELECT null::text, SELECT int4fac(null) and SELECT 2 + (null) (Tom)
1015 Y2K timestamp fix (Massimo)
1016 Fix for VACUUM 'HEAP_MOVED_IN was not expected' errors (Tom)
1017 Fix for views with tables/columns containing spaces (Tom)
1018 Prevent permissions on indexes (Peter E)
1019 Fix for spinlock stuck problem when error is generated (Hiroshi)
1020 Fix ipcclean on Linux
1021 Fix handling of NULL constraint conditions (Tom)
1022 Fix memory leak in odbc driver (Nick Gorham)
1023 Fix for permission check on UNION tables (Tom)
1024 Fix to allow SELECT 'a' LIKE 'a' (Tom)
1025 Fix for SELECT 1 + NULL (Tom)
1027 Fix log() on numeric type (Tom)
1028 Deprecate ':' and ';' operators
1029 Allow vacuum of temporary tables
1030 Disallow inherited columns with the same name as new columns
1031 Recover or force failure when disk space is exhausted (Hiroshi)
1032 Fix INSERT INTO ... SELECT with AS columns matching result columns
1033 Fix INSERT ... SELECT ... GROUP BY groups by target columns not source columns (Tom)
1034 Fix CREATE TABLE test (a char(5) DEFAULT text '', b int4) with INSERT (Tom)
1035 Fix UNION with LIMIT
1036 Fix CREATE TABLE x AS SELECT 1 UNION SELECT 2
1037 Fix CREATE TABLE test(col char(2) DEFAULT user)
1038 Fix mismatched types in CREATE TABLE ... DEFAULT
1039 Fix SELECT * FROM pg_class where oid in (0,-1)
1040 Fix SELECT COUNT('asdf') FROM pg_class WHERE oid=12
1041 Prevent user who can create databases can modifying pg_database table (Peter E)
1042 Fix btree to give a useful elog when key > 1/2 (page - overhead) (Tom)
1043 Fix INSERT of 0.0 into DECIMAL(4,4) field (Tom)
1047 New CLI interface include file sqlcli.h, based on SQL3/SQL98
1048 Remove all limits on query length, row length limit still exists (Tom)
1049 Update jdbc protocol to 2.0 (Jens Glaser <jens@jens.de>)
1050 Add TRUNCATE command to quickly truncate relation (Mike Mascari)
1051 Fix to give super user and createdb user proper update catalog rights (Peter E)
1052 Allow ecpg bool variables to have NULL values (Christof)
1053 Issue ecpg error if NULL value for variable with no NULL indicator (Christof)
1054 Allow ^C to cancel COPY command (Massimo)
1055 Add SET FSYNC and SHOW PG_OPTIONS commands(Massimo)
1056 Function name overloading for dynamically-loaded C functions (Frankpitt)
1057 Add CmdTuples() to libpq++(Vince)
1058 New CREATE CONSTRAINT TRIGGER and SET CONSTRAINTS commands(Jan)
1059 Allow CREATE FUNCTION/WITH clause to be used for all language types
1060 configure --enable-debug adds -g (Peter E)
1061 configure --disable-debug removes -g (Peter E)
1062 Allow more complex default expressions (Tom)
1063 First real FOREIGN KEY constraint trigger functionality (Jan)
1064 Add FOREIGN KEY ... MATCH FULL ... ON DELETE CASCADE (Jan)
1065 Add FOREIGN KEY ... MATCH <unspecified> referential actions (Don Baccus)
1066 Allow WHERE restriction on ctid (physical heap location) (Hiroshi)
1067 Move pginterface from contrib to interface directory, rename to pgeasy (Bruce)
1068 Change pgeasy connectdb() parameter ordering (Bruce)
1069 Require SELECT DISTINCT target list to have all ORDER BY columns (Tom)
1070 Add Oracle's COMMENT ON command (Mike Mascari <mascarim@yahoo.com>)
1071 libpq's PQsetNoticeProcessor function now returns previous hook(Peter E)
1072 Prevent PQsetNoticeProcessor from being set to NULL (Peter E)
1073 Make USING in COPY optional (Bruce)
1074 Allow subselects in the target list (Tom)
1075 Allow subselects on the left side of comparison operators (Tom)
1076 New parallel regression test (Jan)
1077 Change backend-side COPY to write files with permissions 644 not 666 (Tom)
1078 Force permissions on PGDATA directory to be secure, even if it exists (Tom)
1079 Added psql LASTOID variable to return last inserted oid (Peter E)
1080 Allow concurrent vacuum and remove pg_vlock vacuum lock file (Tom)
1081 Add permissions check for vacuum (Peter E)
1082 New libpq functions to allow asynchronous connections: PQconnectStart(),
1083 PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(),
1084 PQsetenvPoll(), PQsetenvAbort (Ewan Mellor)
1085 New libpq PQsetenv() function (Ewan Mellor)
1086 create/alter user extension (Peter E)
1087 New postmaster.pid and postmaster.opts under $PGDATA (Tatsuo)
1088 New scripts for create/drop user/db (Peter E)
1089 Major psql overhaul (Peter E)
1090 Add const to libpq interface (Peter E)
1091 New libpq function PQoidValue (Peter E)
1092 Show specific non-aggregate causing problem with GROUP BY (Tom)
1093 Make changes to pg_shadow recreate pg_pwd file (Peter E)
1094 Add aggregate(DISTINCT ...) (Tom)
1095 Allow flag to control COPY input/output of NULLs (Peter E)
1096 Make postgres user have a password by default (Peter E)
1097 Add CREATE/ALTER/DROP GROUP (Peter E)
1098 All administration scripts now support --long options (Peter E, Karel)
1099 Vacuumdb script now supports --all option (Peter E)
1100 ecpg new portable FETCH syntax
1101 Add ecpg EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF
1102 and EXEC SQL ENDIF directives
1103 Add pg_ctl script to control backend start-up (Tatsuo)
1104 Add postmaster.opts.default file to store start-up flags (Tatsuo)
1105 Allow --with-mb=SQL_ASCII
1106 Increase maximum number of index keys to 16 (Bruce)
1107 Increase maximum number of function arguments to 16 (Bruce)
1108 Allow configuration of maximum number of index keys and arguments (Bruce)
1109 Allow unprivileged users to change their passwords (Peter E)
1110 Password authentication enabled; required for new users (Peter E)
1111 Disallow dropping a user who owns a database (Peter E)
1112 Change initdb option --with-mb to --enable-multibyte
1113 Add option for initdb to prompts for superuser password (Peter E)
1114 Allow complex type casts like col::numeric(9,2) and col::int2::float8 (Tom)
1115 Updated user interfaces on initdb, initlocation, pg_dump, ipcclean (Peter E)
1116 New pg_char_to_encoding() and pg_encoding_to_char() functions (Tatsuo)
1117 Libpq non-blocking mode (Alfred Perlstein)
1118 Improve conversion of types in casts that don't specify a length
1119 New plperl internal programming language (Mark Hollomon)
1120 Allow COPY IN to read file that do not end with a newline (Tom)
1121 Indicate when long identifiers are truncated (Tom)
1122 Allow aggregates to use type equivalency (Peter E)
1123 Add Oracle's to_char(), to_date(), to_datetime(), to_timestamp(), to_number()
1124 conversion functions (Karel Zak <zakkr@zf.jcu.cz>)
1125 Add SELECT DISTINCT ON (expr [, expr ...]) targetlist ... (Tom)
1126 Check to be sure ORDER BY is compatible with the DISTINCT operation (Tom)
1127 Add NUMERIC and int8 types to ODBC
1128 Improve EXPLAIN results for Append, Group, Agg, Unique (Tom)
1129 Add ALTER TABLE ... ADD FOREIGN KEY (Stephan Szabo)
1130 Allow SELECT .. FOR UPDATE in PL/pgSQL (Hiroshi)
1131 Enable backward sequential scan even after reaching EOF (Hiroshi)
1132 Add btree indexing of boolean values, >= and <= (Don Baccus)
1133 Print current line number when COPY FROM fails (Massimo)
1134 Recognize POSIX time zone e.g. "PST+8" and "GMT-8" (Thomas)
1135 Add DEC as synonym for DECIMAL (Thomas)
1136 Add SESSION_USER as SQL92 keyword, same as CURRENT_USER (Thomas)
1137 Implement SQL92 column aliases (aka correlation names) (Thomas)
1138 Implement SQL92 join syntax (Thomas)
1139 Make INTERVAL reserved word allowed as a column identifier (Thomas)
1140 Implement REINDEX command (Hiroshi)
1141 Accept ALL in aggregate function SUM(ALL col) (Tom)
1142 Prevent GROUP BY from using column aliases (Tom)
1143 New psql \encoding option (Tatsuo)
1144 Allow PQrequestCancel() to terminate when in waiting-for-lock state (Hiroshi)
1145 Allow negation of a negative number in all cases
1146 Add ecpg descriptors (Christof, Michael)
1147 Allow CREATE VIEW v AS SELECT f1::char(8) FROM tbl
1148 Allow casts with length, like foo::char(8)
1149 New libpq functions PQsetClientEncoding(), PQclientEncoding() (Tatsuo)
1150 Add support for SJIS user defined characters (Tatsuo)
1151 Larger views/rules supported
1152 Make libpq's PQconndefaults() thread-safe (Tom)
1153 Disable // as comment to be ANSI conforming, should use -- (Tom)
1154 Allow column aliases on views CREATE VIEW name (collist)
1155 Fixes for views with subqueries (Tom)
1156 Allow UPDATE table SET fld = (SELECT ...) (Tom)
1157 SET command options no longer require quotes
1158 Update pgaccess to 0.98.6
1159 New SET SEED command
1160 New pg_options.sample file
1161 New SET FSYNC command (Massimo)
1162 Allow pg_descriptions when creating tables
1163 Allow pg_descriptions when creating types, columns, and functions
1164 Allow psql \copy to allow delimiters (Peter E)
1165 Allow psql to print nulls as distinct from "" [null] (Peter E)
1169 Many array fixes (Tom)
1170 Allow bare column names to be subscripted as arrays (Tom)
1171 Improve type casting of int and float constants (Tom)
1172 Cleanups for int8 inputs, range checking, and type conversion (Tom)
1173 Fix for SELECT timespan('21:11:26'::time) (Tom)
1174 netmask('x.x.x.x/0') is 255.255.255.255 instead of 0.0.0.0 (Oleg Sharoiko)
1175 Add btree index on NUMERIC (Jan)
1176 Perl fix for large objects containing NUL characters (Douglas Thomson)
1177 ODBC fix for for large objects (free)
1178 Fix indexing of cidr data type
1179 Fix for Ethernet MAC addresses (macaddr type) comparisons
1180 Fix for date/time types when overflows happened in computations (Tom)
1181 Allow array on int8 (Peter E)
1182 Fix for rounding/overflow of NUMERIC type, like NUMERIC(4,4) (Tom)
1183 Allow NUMERIC arrays
1184 Fix bugs in NUMERIC ceil() and floor() functions (Tom)
1185 Make char_length()/octet_length including trailing blanks (Tom)
1186 Made abstime/reltime use int4 instead of time_t (Peter E)
1187 New lztext data type for compressed text fields
1188 Revise code to handle coercion of int and float constants (Tom)
1189 Start at new code to implement a BIT and BIT VARYING type (Adriaan Joubert)
1190 NUMERIC now accepts scientific notation (Tom)
1191 NUMERIC to int4 rounds (Tom)
1192 Convert float4/8 to NUMERIC properly (Tom)
1193 Allow type conversion with NUMERIC (Thomas)
1194 Make ISO date style (2000-02-16 09:33) the default (Thomas)
1195 Add NATIONAL CHAR [ VARYING ] (Thomas)
1196 Allow NUMERIC round and trunc to accept negative scales (Tom)
1197 New TIME WITH TIME ZONE type (Thomas)
1198 Add MAX()/MIN() on time type (Thomas)
1199 Add abs(), mod(), fac() for int8 (Thomas)
1200 Rename functions to round(), sqrt(), cbrt(), pow() for float8 (Thomas)
1201 Add transcendental math functions (e.g. sin(), acos()) for float8 (Thomas)
1202 Add exp() and ln() for NUMERIC type
1203 Rename NUMERIC power() to pow() (Thomas)
1204 Improved TRANSLATE() function (Edwin Ramirez, Tom)
1205 Allow X=-Y operators (Tom)
1206 Allow SELECT float8(COUNT(*))/(SELECT COUNT(*) FROM t) FROM t GROUP BY f1; (Tom)
1207 Allow LOCALE to use indexes in regular expression searches (Tom)
1208 Allow creation of functional indexes to use default types
1212 Prevent exponential space consumption with many AND's and OR's (Tom)
1213 Collect attribute selectivity values for system columns (Tom)
1214 Reduce memory usage of aggregates (Tom)
1215 Fix for LIKE optimization to use indexes with multibyte encodings (Tom)
1216 Fix r-tree index optimizer selectivity (Thomas)
1217 Improve optimizer selectivity computations and functions (Tom)
1218 Optimize btree searching for cases where many equal keys exist (Tom)
1219 Enable fast LIKE index processing only if index present (Tom)
1220 Re-use free space on index pages with duplicates (Tom)
1221 Improve hash join processing (Tom)
1222 Prevent descending sort if result is already sorted(Hiroshi)
1223 Allow commuting of index scan query qualifications (Tom)
1224 Prefer index scans in cases where ORDER BY/GROUP BY is required (Tom)
1225 Allocate large memory requests in fix-sized chunks for performance (Tom)
1226 Fix vacuum's performance by reducing memory allocation requests (Tom)
1227 Implement constant-expression simplification (Bernard Frankpitt, Tom)
1228 Use secondary columns to be used to determine start of index scan (Hiroshi)
1229 Prevent quadruple use of disk space when doing internal sorting (Tom)
1230 Faster sorting by calling fewer functions (Tom)
1231 Create system indexes to match all system caches (Bruce, Hiroshi)
1232 Make system caches use system indexes (Bruce)
1233 Make all system indexes unique (Bruce)
1234 Improve pg_statistics management for VACUUM speed improvement (Tom)
1235 Flush backend cache less frequently (Tom, Hiroshi)
1236 COPY now reuses previous memory allocation, improving performance (Tom)
1237 Improve optimization cost estimation (Tom)
1238 Improve optimizer estimate of range queries x > lowbound AND x < highbound (Tom)
1239 Use DNF instead of CNF where appropriate (Tom, Taral)
1240 Further cleanup for OR-of-AND WHERE-clauses (Tom)
1241 Make use of index in OR clauses (x = 1 AND y = 2) OR (x = 2 AND y = 4) (Tom)
1242 Smarter optimizer computations for random index page access (Tom)
1243 New SET variable to control optimizer costs (Tom)
1244 Optimizer queries based on LIMIT, OFFSET, and EXISTS qualifications (Tom)
1245 Reduce optimizer internal housekeeping of join paths for speedup (Tom)
1246 Major subquery speedup (Tom)
1247 Fewer fsync writes when fsync is not disabled (Tom)
1248 Improved LIKE optimizer estimates (Tom)
1249 Prevent fsync in SELECT-only queries (Vadim)
1250 Make index creation use psort code, because it is now faster (Tom)
1251 Allow creation of sort temp tables > 1 Gig
1255 Fix for linux PPC compile
1256 New generic expression-tree-walker subroutine (Tom)
1257 Change form() to varargform() to prevent portability problems
1258 Improved range checking for large integers on Alphas
1259 Clean up #include in /include directory (Bruce)
1260 Add scripts for checking includes (Bruce)
1261 Remove un-needed #include's from *.c files (Bruce)
1262 Change #include's to use <> and "" as appropriate (Bruce)
1263 Enable WIN32 compilation of libpq
1264 Alpha spinlock fix from Uncle George <gatgul@voicenet.com>
1265 Overhaul of optimizer data structures (Tom)
1266 Fix to cygipc library (Yutaka Tanida)
1267 Allow pgsql to work on newer Cygwin snapshots (Dan)
1268 New catalog version number (Tom)
1270 Rename heap_replace to heap_update
1271 Update for QNX (Dr. Andreas Kardos)
1272 New platform-specific regression handling (Tom)
1273 Rename oid8 -> oidvector and int28 -> int2vector (Bruce)
1274 Included all yacc and lex files into the distribution (Peter E.)
1275 Remove lextest, no longer needed (Peter E)
1276 Fix for libpq and psql on Win32 (Magnus)
1277 Internally change datetime and timespan into timestamp and interval (Thomas)
1278 Fix for plpgsql on BSDI
1279 Add SQL_ASCII test case to the regression test (Tatsuo)
1280 configure --with-mb now deprecated (Tatsuo)
1282 NetBSD fixes (Johnny C. Lam <lamj@stat.cmu.edu>)
1283 Fixes for Alpha compiles
1284 New multibyte encodings
1287 ----------------------------------------------------------------------
1291 Release date: 1999-10-13
1293 This is basically a cleanup release for 6.5.2. We have added a new
1294 PgAccess that was missing in 6.5.2, and installed an NT-specific fix.
1296 ----------------------------------------------------------------------
1298 Migration to version 6.5.3
1300 A dump/restore is *not* required for those running 6.5.*.
1302 ----------------------------------------------------------------------
1306 Updated version of pgaccess 0.98
1308 Fix dumping rules on inherited tables
1311 ----------------------------------------------------------------------
1315 Release date: 1999-09-15
1317 This is basically a cleanup release for 6.5.1. We have fixed a variety of
1318 problems reported by 6.5.1 users.
1320 ----------------------------------------------------------------------
1322 Migration to version 6.5.2
1324 A dump/restore is *not* required for those running 6.5.*.
1326 ----------------------------------------------------------------------
1330 subselect+CASE fixes(Tom)
1331 Add SHLIB_LINK setting for solaris_i386 and solaris_sparc ports(Daren Sefcik)
1332 Fixes for CASE in WHERE join clauses(Tom)
1333 Fix BTScan abort(Tom)
1334 Repair the check for redundant UNIQUE and PRIMARY KEY indexes(Thomas)
1335 Improve it so that it checks for multi-column constraints(Thomas)
1336 Fix for Win32 making problem with MB enabled(Hiroki Kataoka)
1337 Allow BSD yacc and bison to compile pl code(Bruce)
1338 Fix SET NAMES working
1340 Fix vacuum's memory consumption(Hiroshi,Tatsuo)
1341 Reduce the total memory consumption of vacuum(Tom)
1342 Fix for timestamp(datetime)
1343 Rule deparsing bugfixes(Tom)
1344 Fix quoting problems in mkMakefile.tcldefs.sh.in and mkMakefile.tkdefs.sh.in(Tom)
1345 This is to re-use space on index pages freed by vacuum(Vadim)
1346 document -x for pg_dump(Bruce)
1347 Fix for unary operators in rule deparser(Tom)
1348 Comment out FileUnlink of excess segments during mdtruncate()(Tom)
1349 Irix linking fix from Yu Cao >yucao@falcon.kla-tencor.com<
1350 Repair logic error in LIKE: should not return LIKE_ABORT
1351 when reach end of pattern before end of text(Tom)
1352 Repair incorrect cleanup of heap memory allocation during transaction abort(Tom)
1353 Updated version of pgaccess 0.98
1356 ----------------------------------------------------------------------
1360 Release date: 1999-07-15
1362 This is basically a cleanup release for 6.5. We have fixed a variety of
1363 problems reported by 6.5 users.
1365 ----------------------------------------------------------------------
1367 Migration to version 6.5.1
1369 A dump/restore is *not* required for those running 6.5.
1371 ----------------------------------------------------------------------
1376 Portability fixes for linux_ppc, Irix, linux_alpha, OpenBSD, alpha
1377 Remove QUERY_LIMIT, use SELECT...LIMIT
1378 Fix for EXPLAIN on inheritance(Tom)
1379 Patch to allow vacuum on multi-segment tables(Hiroshi)
1380 R-Tree optimizer selectivity fix(Tom)
1381 ACL file descriptor leak fix(Atsushi Ogawa)
1382 New expresssion subtree code(Tom)
1383 Avoid disk writes for read-only transactions(Vadim)
1384 Fix for removal of temp tables if last transaction was aborted(Bruce)
1385 Fix to prevent too large tuple from being created(Bruce)
1387 Allow port numbers 32k - 64k(Bruce)
1388 Add ^ precidence(Bruce)
1389 Rename sort files called pg_temp to pg_sorttemp(Bruce)
1390 Fix for microseconds in time values(Tom)
1391 Tutorial source cleanup
1393 Fix for sorting of NULL's in some cases(Tom)
1394 Shared library dependencies fixed (Tom)
1395 Fixed glitches affecting GROUP BY in subselects(Tom)
1396 Fix some compiler warnings (Tomoaki Nishiyama)
1397 Add Win1250 (Czech) support (Pavel Behal)
1400 ----------------------------------------------------------------------
1404 Release date: 1999-06-09
1406 This release marks a major step in the development team's mastery of the
1407 source code we inherited from Berkeley. You will see we are now easily
1408 adding major features, thanks to the increasing size and experience of our
1409 world-wide development team.
1411 Here is a brief summary of the more notable changes:
1413 Multi-version concurrency control(MVCC)
1415 This removes our old table-level locking, and replaces it with a
1416 locking system that is superior to most commercial database
1417 systems. In a traditional system, each row that is modified is
1418 locked until committed, preventing reads by other users. MVCC uses
1419 the natural multi-version nature of PostgreSQL to allow readers to
1420 continue reading consistent data during writer activity. Writers
1421 continue to use the compact pg_log transaction system. This is all
1422 performed without having to allocate a lock for every row like
1423 traditional database systems. So, basically, we no longer are
1424 restricted by simple table-level locking; we have something better
1425 than row-level locking.
1427 Hot backups from pg_dump
1429 pg_dump takes advantage of the new MVCC features to give a
1430 consistent database dump/backup while the database stays online
1431 and available for queries.
1435 We now have a true numeric data type, with user-specified
1440 Temporary tables are guaranteed to have unique names within a
1441 database session, and are destroyed on session exit.
1445 We now have CASE, INTERSECT, and EXCEPT statement support. We have
1446 new LIMIT/OFFSET, SET TRANSACTION ISOLATION LEVEL, SELECT ... FOR
1447 UPDATE, and an improved LOCK TABLE command.
1451 We continue to speed up PostgreSQL, thanks to the variety of
1452 talents within our team. We have sped up memory allocation,
1453 optimization, table joins, and row transfer routines.
1457 We continue to expand our port list, this time including Windows
1458 NT/ix86 and NetBSD/arm32.
1462 Most interfaces have new versions, and existing functionality has
1467 New and updated material is present throughout the documentation.
1468 New FAQs have been contributed for SGI and AIX platforms. The
1469 Tutorial has introductory information on SQL from Stefan
1470 Simkovics. For the User's Guide, there are reference pages
1471 covering the postmaster and more utility programs, and a new
1472 appendix contains details on date/time behavior. The
1473 Administrator's Guide has a new chapter on troubleshooting from
1474 Tom Lane. And the Programmer's Guide has a description of query
1475 processing, also from Stefan, and details on obtaining the
1476 PostgreSQL source tree via anonymous CVS and CVSup.
1478 ----------------------------------------------------------------------
1480 Migration to version 6.5
1482 A dump/restore using pg_dump is required for those wishing to migrate data
1483 from any previous release of PostgreSQL. pg_upgrade can *not* be used to
1484 upgrade to this release because the on-disk structure of the tables has
1485 changed compared to previous releases.
1487 The new Multi-Version Concurrency Control (MVCC) features can give
1488 somewhat different behaviors in multi-user environments. *Read and
1489 understand the following section to ensure that your existing applications
1490 will give you the behavior you need.*
1492 ----------------------------------------------------------------------
1494 Multi-Version Concurrency Control
1496 Because readers in 6.5 don't lock data, regardless of transaction
1497 isolation level, data read by one transaction can be overwritten by
1498 another. In other words, if a row is returned by "SELECT" it doesn't mean
1499 that this row really exists at the time it is returned (i.e. sometime
1500 after the statement or transaction began) nor that the row is protected
1501 from being deleted or updated by concurrent transactions before the
1502 current transaction does a commit or rollback.
1504 To ensure the actual existence of a row and protect it against concurrent
1505 updates one must use "SELECT FOR UPDATE" or an appropriate "LOCK TABLE"
1506 statement. This should be taken into account when porting applications
1507 from previous releases of PostgreSQL and other environments.
1509 Keep the above in mind if you are using "contrib/refint.*" triggers for
1510 referential integrity. Additional techniques are required now. One way is
1511 to use "LOCK parent_table IN SHARE ROW EXCLUSIVE MODE" command if a
1512 transaction is going to update/delete a primary key and use "LOCK
1513 parent_table IN SHARE MODE" command if a transaction is going to
1514 update/insert a foreign key.
1516 Note: Note that if you run a transaction in SERIALIZABLE mode then you
1517 must execute the "LOCK" commands above before execution of any DML
1518 statement ("SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO") in the
1521 These inconveniences will disappear in the future when the ability to read
1522 dirty (uncommitted) data (regardless of isolation level) and true
1523 referential integrity will be implemented.
1525 ----------------------------------------------------------------------
1531 Fix text<->float8 and text<->float4 conversion functions(Thomas)
1532 Fix for creating tables with mixed-case constraints(Billy)
1533 Change exp()/pow() behavior to generate error on underflow/overflow(Jan)
1534 Fix bug in pg_dump -z
1535 Memory overrun cleanups(Tatsuo)
1536 Fix for lo_import crash(Tatsuo)
1537 Adjust handling of data type names to suppress double quotes(Thomas)
1538 Use type coercion for matching columns and DEFAULT(Thomas)
1539 Fix deadlock so it only checks once after one second of sleep(Bruce)
1540 Fixes for aggregates and PL/pgsql(Hiroshi)
1541 Fix for subquery crash(Vadim)
1542 Fix for libpq function PQfnumber and case-insensitive names(Bahman Rafatjoo)
1543 Fix for large object write-in-middle, no extra block, memory consumption(Tatsuo)
1544 Fix for pg_dump -d or -D and quote special characters in INSERT
1545 Repair serious problems with dynahash(Tom)
1546 Fix INET/CIDR portability problems
1547 Fix problem with selectivity error in ALTER TABLE ADD COLUMN(Bruce)
1548 Fix executor so mergejoin of different column types works(Tom)
1549 Fix for Alpha OR selectivity bug
1550 Fix OR index selectivity problem(Bruce)
1551 Fix so \d shows proper length for char()/varchar()(Ryan)
1552 Fix tutorial code(Clark)
1553 Improve destroyuser checking(Oliver)
1554 Fix for Kerberos(Rodney McDuff)
1555 Fix for dropping database while dirty buffers(Bruce)
1556 Fix so sequence nextval() can be case-sensitive(Bruce)
1558 Drop buffers before destroying database files(Bruce)
1559 Fix case where executor evaluates functions twice(Tatsuo)
1560 Allow sequence nextval actions to be case-sensitive(Bruce)
1561 Fix optimizer indexing not working for negative numbers(Bruce)
1562 Fix for memory leak in executor with fjIsNull
1563 Fix for aggregate memory leaks(Erik Riedel)
1564 Allow username containing a dash GRANT permissions
1565 Cleanup of NULL in inet types
1566 Clean up system table bugs(Tom)
1567 Fix problems of PAGER and \? command(Masaaki Sakaida)
1568 Reduce default multi-segment file size limit to 1GB(Peter)
1569 Fix for dumping of CREATE OPERATOR(Tom)
1570 Fix for backward scanning of cursors(Hiroshi Inoue)
1571 Fix for COPY FROM STDIN when using \i(Tom)
1572 Fix for subselect is compared inside an expression(Jan)
1573 Fix handling of error reporting while returning rows(Tom)
1574 Fix problems with reference to array types(Tom,Jan)
1575 Prevent UPDATE SET oid(Jan)
1576 Fix pg_dump so -t option can handle case-sensitive tablenames
1577 Fixes for GROUP BY in special cases(Tom, Jan)
1578 Fix for memory leak in failed queries(Tom)
1579 DEFAULT now supports mixed-case identifiers(Tom)
1580 Fix for multi-segment uses of DROP/RENAME table, indexes(Ole Gjerde)
1581 Disable use of pg_dump with both -o and -d options(Bruce)
1582 Allow pg_dump to properly dump GROUP permissions(Bruce)
1583 Fix GROUP BY in INSERT INTO table SELECT * FROM table2(Jan)
1584 Fix for computations in views(Jan)
1585 Fix for aggregates on array indexes(Tom)
1586 Fix for DEFAULT handles single quotes in value requiring too many quotes
1587 Fix security problem with non-super users importing/exporting large objects(Tom)
1588 Rollback of transaction that creates table cleaned up properly(Tom)
1589 Fix to allow long table and column names to generate proper serial names(Tom)
1593 Add "vacuumdb" utility
1594 Speed up libpq by allocating memory better(Tom)
1595 EXPLAIN all indexes used(Tom)
1596 Implement CASE, COALESCE, NULLIF expression(Thomas)
1597 New pg_dump table output format(Constantin)
1598 Add string min()/max() functions(Thomas)
1599 Extend new type coercion techniques to aggregates(Thomas)
1600 New moddatetime contrib(Terry)
1601 Update to pgaccess 0.96(Constantin)
1602 Add routines for single-byte "char" type(Thomas)
1603 Improved substr() function(Thomas)
1604 Improved multibyte handling(Tatsuo)
1605 Multi-version concurrency control/MVCC(Vadim)
1606 New Serialized mode(Vadim)
1607 Fix for tables over 2gigs(Peter)
1608 New SET TRANSACTION ISOLATION LEVEL(Vadim)
1609 New LOCK TABLE IN ... MODE(Vadim)
1610 Update ODBC driver(Byron)
1611 New NUMERIC data type(Jan)
1612 New SELECT FOR UPDATE(Vadim)
1613 Handle "NaN" and "Infinity" for input values(Jan)
1614 Improved date/year handling(Thomas)
1615 Improved handling of backend connections(Magnus)
1616 New options ELOG_TIMESTAMPS and USE_SYSLOG options for log files(Massimo)
1617 New TCL_ARRAYS option(Massimo)
1618 New INTERSECT and EXCEPT(Stefan)
1619 New pg_index.indisprimary for primary key tracking(D'Arcy)
1620 New pg_dump option to allow dropping of tables before creation(Brook)
1621 Speedup of row output routines(Tom)
1622 New READ COMMITTED isolation level(Vadim)
1623 New TEMP tables/indexes(Bruce)
1624 Prevent sorting if result is already sorted(Jan)
1625 New memory allocation optimization(Jan)
1626 Allow psql to do \p\g(Bruce)
1627 Allow multiple rule actions(Jan)
1628 Added LIMIT/OFFSET functionality(Jan)
1629 Improve optimizer when joining a large number of tables(Bruce)
1630 New intro to SQL from S. Simkovics' Master's Thesis (Stefan, Thomas)
1631 New intro to backend processing from S. Simkovics' Master's Thesis (Stefan)
1632 Improved int8 support(Ryan Bradetich, Thomas, Tom)
1633 New routines to convert between int8 and text/varchar types(Thomas)
1634 New bushy plans, where meta-tables are joined(Bruce)
1635 Enable right-hand queries by default(Bruce)
1636 Allow reliable maximum number of backends to be set at configure time
1637 (--with-maxbackends and postmaster switch (-N backends))(Tom)
1638 GEQO default now 10 tables because of optimizer speedups(Tom)
1639 Allow NULL=Var for MS-SQL portability(Michael, Bruce)
1640 Modify contrib check_primary_key() so either "automatic" or "dependent"(Anand)
1641 Allow psql \d on a view show query(Ryan)
1642 Speedup for LIKE(Bruce)
1643 Ecpg fixes/features, see src/interfaces/ecpg/ChangeLog file(Michael)
1644 JDBC fixes/features, see src/interfaces/jdbc/CHANGELOG(Peter)
1645 Make % operator have precedence like /(Bruce)
1646 Add new postgres -O option to allow system table structure changes(Bruce)
1647 Update contrib/pginterface/findoidjoins script(Tom)
1648 Major speedup in vacuum of deleted rows with indexes(Vadim)
1649 Allow non-SQL functions to run different versions based on arguments(Tom)
1650 Add -E option that shows actual queries sent by \dt and friends(Masaaki Sakaida)
1651 Add version number in start-up banners for psql(Masaaki Sakaida)
1652 New contrib/vacuumlo removes large objects not referenced(Peter)
1653 New initialization for table sizes so non-vacuumed tables perform better(Tom)
1654 Improve error messages when a connection is rejected(Tom)
1655 Support for arrays of char() and varchar() fields(Massimo)
1656 Overhaul of hash code to increase reliability and performance(Tom)
1657 Update to PyGreSQL 2.4(D'Arcy)
1658 Changed debug options so -d4 and -d5 produce different node displays(Jan)
1659 New pg_options: pretty_plan, pretty_parse, pretty_rewritten(Jan)
1660 Better optimization statistics for system table access(Tom)
1661 Better handling of non-default block sizes(Massimo)
1662 Improve GEQO optimizer memory consumption(Tom)
1663 UNION now suppports ORDER BY of columns not in target list(Jan)
1664 Major libpq++ improvements(Vince Vielhaber)
1665 pg_dump now uses -z(ACL's) as default(Bruce)
1666 backend cache, memory speedups(Tom)
1667 have pg_dump do everything in one snapshot transaction(Vadim)
1668 fix for large object memory leakage, fix for pg_dumping(Tom)
1669 INET type now respects netmask for comparisons
1670 Make VACUUM ANALYZE only use a readlock(Vadim)
1671 Allow VIEWs on UNIONS(Jan)
1672 pg_dump now can generate consistent snapshots on active databases(Vadim)
1676 Improve port matching(Tom)
1677 Portability fixes for SunOS
1678 Add NT/Win32 backend port and enable dynamic loading(Magnus and Daniel Horak)
1679 New port to Cobalt Qube(Mips) running Linux(Tatsuo)
1680 Port to NetBSD/m68k(Mr. Mutsuki Nakajima)
1681 Port to NetBSD/sun3(Mr. Mutsuki Nakajima)
1682 Port to NetBSD/macppc(Toshimi Aoki)
1683 Fix for tcl/tk configuration(Vince)
1684 Removed CURRENT keyword for rule queries(Jan)
1685 NT dynamic loading now works(Daniel Horak)
1686 Add ARM32 support(Andrew McMurry)
1687 Better support for HPUX 11 and Unixware
1688 Improve file handling to be more uniform, prevent file descriptor leak(Tom)
1689 New install commands for plpgsql(Jan)
1692 ----------------------------------------------------------------------
1696 Release date: 1998-12-20
1698 The 6.4.1 release was improperly packaged. This also has one additional
1701 ----------------------------------------------------------------------
1703 Migration to version 6.4.2
1705 A dump/restore is *not* required for those running 6.4.*.
1707 ----------------------------------------------------------------------
1711 Fix for datetime constant problem on some platforms(Thomas)
1713 ----------------------------------------------------------------------
1717 Release date: 1998-12-18
1719 This is basically a cleanup release for 6.4. We have fixed a variety of
1720 problems reported by 6.4 users.
1722 ----------------------------------------------------------------------
1724 Migration to version 6.4.1
1726 A dump/restore is *not* required for those running 6.4.
1728 ----------------------------------------------------------------------
1732 Add pg_dump -N flag to force double quotes around identifiers. This is
1734 Fix for NOT in where clause causing crash(Bruce)
1735 EXPLAIN VERBOSE coredump fix(Vadim)
1736 Fix shared-library problems on Linux
1737 Fix test for table existance to allow mixed-case and whitespace in
1738 the table name(Thomas)
1739 Fix a couple of pg_dump bugs
1740 Configure matches template/.similar entries better(Tom)
1741 Change builtin function names from SPI_* to spi_*
1742 OR WHERE clause fix(Vadim)
1743 Fixes for mixed-case table names(Billy)
1744 contrib/linux/postgres.init.csh/sh fix(Thomas)
1745 libpq memory overrun fix
1747 Change exp() behavior to generate error on underflow(Thomas)
1748 pg_dump fixes for memory leak, inheritance constraints, layout change
1749 update pgaccess to 0.93
1750 Fix prototype for 64-bit platforms
1751 Multibyte fixes(Tatsuo)
1753 Fix memory overruns(Tatsuo)
1754 Fix for lo_import() crash(Bruce)
1755 Better search for install program(Tom)
1758 Use implicit type coercion for matching DEFAULT values(Thomas)
1759 Add routines to help with single-byte (internal) character type(Thomas)
1760 Compilation of libpq for Win32 fixes(Magnus)
1761 Upgrade to PyGreSQL 2.2(D'Arcy)
1763 ----------------------------------------------------------------------
1767 Release date: 1998-10-30
1769 There are *many* new features and improvements in this release. Thanks to
1770 our developers and maintainers, nearly every aspect of the system has
1771 received some attention since the previous release. Here is a brief,
1774 * Views and rules are now functional thanks to extensive new code in the
1775 rewrite rules system from Jan Wieck. He also wrote a chapter on it for
1776 the Programmer's Guide.
1778 * Jan also contributed a second procedural language, PL/pgSQL, to go
1779 with the original PL/pgTCL procedural language he contributed last
1782 * We have optional multiple-byte character set support from Tatsuo Iishi
1783 to complement our existing locale support.
1785 * Client/server communications has been cleaned up, with better support
1786 for asynchronous messages and interrupts thanks to Tom Lane.
1788 * The parser will now perform automatic type coercion to match arguments
1789 to available operators and functions, and to match columns and
1790 expressions with target columns. This uses a generic mechanism which
1791 supports the type extensibility features of PostgreSQL. There is a new
1792 chapter in the User's Guide which covers this topic.
1794 * Three new data types have been added. Two types, inet and cidr,
1795 support various forms of IP network, subnet, and machine addressing.
1796 There is now an 8-byte integer type available on some platforms. See
1797 the chapter on data types in the User's Guide for details. A fourth
1798 type, serial, is now supported by the parser as an amalgam of the int4
1799 type, a sequence, and a unique index.
1801 * Several more SQL92-compatible syntax features have been added,
1802 including "INSERT DEFAULT VALUES"
1804 * The automatic configuration and installation system has received some
1805 attention, and should be more robust for more platforms than it has
1808 ----------------------------------------------------------------------
1810 Migration to version 6.4
1812 A dump/restore using pg_dump or pg_dumpall is required for those wishing
1813 to migrate data from any previous release of PostgreSQL.
1815 ----------------------------------------------------------------------
1821 Fix for a tiny memory leak in PQsetdb/PQfinish(Bryan)
1822 Remove char2-16 data types, use char/varchar(Darren)
1823 Pqfn not handles a NOTICE message(Anders)
1824 Reduced busywaiting overhead for spinlocks with many backends (dg)
1825 Stuck spinlock detection (dg)
1826 Fix up "ISO-style" timespan decoding and encoding(Thomas)
1827 Fix problem with table drop after rollback of transaction(Vadim)
1828 Change error message and remove non-functional update message(Vadim)
1829 Fix for COPY array checking
1830 Fix for SELECT 1 UNION SELECT NULL
1831 Fix for buffer leaks in large object calls(Pascal)
1832 Change owner from oid to int4 type(Bruce)
1833 Fix a bug in the oracle compatibility functions btrim() ltrim() and rtrim()
1834 Fix for shared invalidation cache overflow(Massimo)
1835 Prevent file descriptor leaks in failed COPY's(Bruce)
1836 Fix memory leak in libpgtcl's pg_select(Constantin)
1837 Fix problems with username/passwords over 8 characters(Tom)
1838 Fix problems with handling of asynchronous NOTIFY in backend(Tom)
1839 Fix of many bad system table entries(Tom)
1843 Upgrade ecpg and ecpglib,see src/interfaces/ecpc/ChangeLog(Michael)
1844 Show the index used in an EXPLAIN(Zeugswetter)
1845 EXPLAIN invokes rule system and shows plan(s) for rewritten queries(Jan)
1846 Multibyte awareness of many data types and functions, via configure(Tatsuo)
1847 New configure --with-mb option(Tatsuo)
1848 New initdb --pgencoding option(Tatsuo)
1849 New createdb -E multibyte option(Tatsuo)
1850 Select version(); now returns PostgreSQL version(Jeroen)
1851 Libpq now allows asynchronous clients(Tom)
1852 Allow cancel from client of backend query(Tom)
1853 Psql now cancels query with Control-C(Tom)
1854 Libpq users need not issue dummy queries to get NOTIFY messages(Tom)
1855 NOTIFY now sends sender's PID, so you can tell whether it was your own(Tom)
1856 PGresult struct now includes associated error message, if any(Tom)
1857 Define "tz_hour" and "tz_minute" arguments to date_part()(Thomas)
1858 Add routines to convert between varchar and bpchar(Thomas)
1859 Add routines to allow sizing of varchar and bpchar into target columns(Thomas)
1860 Add bit flags to support timezonehour and minute in data retrieval(Thomas)
1861 Allow more variations on valid floating point numbers (e.g. ".1", "1e6")(Thomas)
1862 Fixes for unary minus parsing with leading spaces(Thomas)
1863 Implement TIMEZONE_HOUR, TIMEZONE_MINUTE per SQL92 specs(Thomas)
1864 Check for and properly ignore FOREIGN KEY column constraints(Thomas)
1865 Define USER as synonym for CURRENT_USER per SQL92 specs(Thomas)
1866 Enable HAVING clause but no fixes elsewhere yet.
1867 Make "char" type a synonym for "char(1)" (actually implemented as bpchar)(Thomas)
1868 Save string type if specified for DEFAULT clause handling(Thomas)
1869 Coerce operations involving different data types(Thomas)
1870 Allow some index use for columns of different types(Thomas)
1871 Add capabilities for automatic type conversion(Thomas)
1872 Cleanups for large objects, so file is truncated on open(Peter)
1873 Readline cleanups(Tom)
1874 Allow psql \f \ to make spaces as delimiter(Bruce)
1875 Pass pg_attribute.atttypmod to the frontend for column field lengths(Tom,Bruce)
1876 Msql compatibility library in /contrib(Aldrin)
1877 Remove the requirement that ORDER/GROUP BY clause identifiers be
1878 included in the target list(David)
1879 Convert columns to match columns in UNION clauses(Thomas)
1880 Remove fork()/exec() and only do fork()(Bruce)
1881 Jdbc cleanups(Peter)
1882 Show backend status on ps command line(only works on some platforms)(Bruce)
1883 Pg_hba.conf now has a sameuser option in the database field
1884 Make lo_unlink take oid param, not int4
1885 New DISABLE_COMPLEX_MACRO for compilers that can't handle our macros(Bruce)
1886 Libpgtcl now handles NOTIFY as a Tcl event, need not send dummy queries(Tom)
1887 libpgtcl cleanups(Tom)
1888 Add -error option to libpgtcl's pg_result command(Tom)
1889 New locale patch, see docs/README/locale(Oleg)
1890 Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb)
1891 New contrib/lo code for large object orphan removal(Peter)
1892 New psql command "SET CLIENT_ENCODING TO 'encoding'" for multibytes
1893 feature, see /doc/README.mb(Tatsuo)
1894 /contrib/noupdate code to revoke update permission on a column
1895 Libpq can now be compiled on win32(Magnus)
1896 Add PQsetdbLogin() in libpq
1897 New 8-byte integer type, checked by configure for OS support(Thomas)
1898 Better support for quoted table/column names(Thomas)
1899 Surround table and column names with double-quotes in pg_dump(Thomas)
1900 PQreset() now works with passwords(Tom)
1901 Handle case of GROUP BY target list column number out of range(David)
1902 Allow UNION in subselects
1903 Add auto-size to screen to \d? commands(Bruce)
1904 Use UNION to show all \d? results in one query(Bruce)
1905 Add \d? field search feature(Bruce)
1906 Pg_dump issues fewer \connect requests(Tom)
1907 Make pg_dump -z flag work better, document it in manual page(Tom)
1908 Add HAVING clause with full support for subselects and unions(Stephan)
1909 Full text indexing routines in contrib/fulltextindex(Maarten)
1910 Transaction ids now stored in shared memory(Vadim)
1911 New PGCLIENTENCODING when issuing COPY command(Tatsuo)
1912 Support for SQL92 syntax "SET NAMES"(Tatsuo)
1913 Support for LATIN2-5(Tatsuo)
1914 Add UNICODE regression test case(Tatsuo)
1915 Lock manager cleanup, new locking modes for LLL(Vadim)
1916 Allow index use with OR clauses(Bruce)
1917 Allows "SELECT NULL ORDER BY 1;"
1918 Explain VERBOSE prints the plan, and now pretty-prints the plan to
1919 the postmaster log file(Bruce)
1920 Add indexes display to \d command(Bruce)
1921 Allow GROUP BY on functions(David)
1922 New pg_class.relkind for large objects(Bruce)
1923 New way to send libpq NOTICE messages to a different location(Tom)
1924 New \w write command to psql(Bruce)
1925 New /contrib/findoidjoins scans oid columns to find join relationships(Bruce)
1926 Allow binary-compatible indexes to be considered when checking for valid
1927 Indexes for restriction clauses containing a constant(Thomas)
1928 New ISBN/ISSN code in /contrib/isbn_issn
1929 Allow NOT LIKE, IN, NOT IN, BETWEEN, and NOT BETWEEN constraint(Thomas)
1930 New rewrite system fixes many problems with rules and views(Jan)
1931 * Rules on relations work
1932 * Event qualifications on insert/update/delete work
1933 * New OLD variable to reference CURRENT, CURRENT will be remove in future
1934 * Update rules can reference NEW and OLD in rule qualifications/actions
1935 * Insert/update/delete rules on views work
1936 * Multiple rule actions are now supported, surrounded by parentheses
1937 * Regular users can create views/rules on tables they have RULE permits
1938 * Rules and views inherit the permissions on the creator
1939 * No rules at the column level
1940 * No UPDATE NEW/OLD rules
1941 * New pg_tables, pg_indexes, pg_rules and pg_views system views
1942 * Only a single action on SELECT rules
1943 * Total rewrite overhaul, perhaps for 6.5
1945 * handle aggregates on views
1946 * handle insert into select from view works
1947 System indexes are now multi-key(Bruce)
1948 Oidint2, oidint4, and oidname types are removed(Bruce)
1949 Use system cache for more system table lookups(Bruce)
1950 New backend programming language PL/pgSQL in backend/pl(Jan)
1951 New SERIAL data type, auto-creates sequence/index(Thomas)
1952 Enable assert checking without a recompile(Massimo)
1953 User lock enhancements(Massimo)
1954 New setval() command to set sequence value(Massimo)
1955 Auto-remove unix socket file on start-up if no postmaster running(Massimo)
1956 Conditional trace package(Massimo)
1957 New UNLISTEN command(Massimo)
1958 Psql and libpq now compile under win32 using win32.mak(Magnus)
1959 Lo_read no longer stores trailing NULL(Bruce)
1960 Identifiers are now truncated to 31 characters internally(Bruce)
1961 Createuser options now availble on the command line
1962 Code for 64-bit integer supported added, configure tested, int8 type(Thomas)
1963 Prevent file descriptor leaf from failed COPY(Bruce)
1964 New pg_upgrade command(Bruce)
1965 Updated /contrib directories(Massimo)
1966 New CREATE TABLE DEFAULT VALUES statement available(Thomas)
1967 New INSERT INTO TABLE DEFAULT VALUES statement available(Thomas)
1968 New DECLARE and FETCH feature(Thomas)
1969 libpq's internal structures now not exported(Tom)
1970 Allow up to 8 key indexes(Bruce)
1971 Remove ARCHIVE keyword, that is no longer used(Thomas)
1972 pg_dump -n flag to supress quotes around indentifiers
1973 disable system columns for views(Jan)
1974 new INET and CIDR types for network addresses(TomH, Paul)
1975 no more double quotes in psql output
1976 pg_dump now dumps views(Terry)
1977 new SET QUERY_LIMIT(Tatsuo,Jan)
1981 /contrib cleanup(Jun)
1982 Inline some small functions called for every row(Bruce)
1985 Multibyte regression tests(Soonmyung.)
1986 Remove --disabled options from configure
1987 Define PGDOC to use POSTGRESDIR by default
1988 Make regression optional
1989 Remove extra braces code to pgindent(Bruce)
1990 Add bsdi shared library support(Bruce)
1991 New --without-CXX support configure option(Brook)
1993 Update backend flowchart in tools/backend(Bruce)
1994 Change atttypmod from int16 to int32(Bruce, Tom)
1995 Getrusage() fix for platforms that do not have it(Tom)
1996 Add PQconnectdb, PGUSER, PGPASSWORD to libpq man page
1997 NS32K platform fixes(Phil Nelson, John Buller)
1998 Sco 7/UnixWare 2.x fixes(Billy,others)
1999 Sparc/Solaris 2.5 fixes(Ryan)
2000 Pgbuiltin.3 is obsolete, move to doc files(Thomas)
2001 Even more documention(Thomas)
2002 Nextstep support(Jacek)
2004 pginterface manual page(Bruce)
2005 shared libraries all have version numbers
2006 merged all OS-specific shared library defines into one file
2007 smarter TCL/TK configuration checking(Billy)
2008 smarter perl configuration(Brook)
2009 configure uses supplied install-sh if no install script found(Tom)
2010 new Makefile.shlib for shared library configuration(Tom)
2012 ----------------------------------------------------------------------
2016 Release date: 1998-04-07
2018 This is a bug-fix release for 6.3.x. Refer to the release notes for
2019 version 6.3 for a more complete summary of new features.
2023 * Repairs automatic configuration support for some platforms, including
2024 Linux, from breakage inadvertently introduced in version 6.3.1.
2026 * Correctly handles function calls on the left side of BETWEEN and LIKE
2029 A dump/restore is NOT required for those running 6.3 or 6.3.1. A make
2030 distclean, make, and make install is all that is required. This last step
2031 should be performed while the postmaster is not running. You should
2032 re-link any custom applications that use PostgreSQL libraries.
2034 For upgrades from pre-6.3 installations, refer to the installation and
2035 migration instructions for version 6.3.
2037 ----------------------------------------------------------------------
2041 Configure detection improvements for tcl/tk(Brook Milligan, Alvin)
2042 Manual page improvements(Bruce)
2043 BETWEEN and LIKE fix(Thomas)
2044 fix for psql \connect used by pg_dump(Oliver Elphick)
2046 pgaccess, version 0.86
2047 qsort removed, now uses libc version, cleanups(Jeroen)
2048 fix for buffer over-runs detected(Maurice Gittens)
2049 fix for buffer overrun in libpgtcl(Randy Kunkee)
2050 fix for UNION with DISTINCT or ORDER BY(Bruce)
2051 gettimeofday configure check(Doug Winterburn)
2052 Fix "indexes not used" bug(Vadim)
2053 docs additions(Thomas)
2054 Fix for backend memory leak(Bruce)
2055 libreadline cleanup(Erwan MAS)
2056 Remove DISTDIR(Bruce)
2057 Makefile dependency cleanup(Jeroen van Vianen)
2061 ----------------------------------------------------------------------
2065 Release date: 1998-03-23
2069 * Additional support for multibyte character sets.
2071 * Repair byte ordering for mixed-endian clients and servers.
2073 * Minor updates to allowed SQL syntax.
2075 * Improvements to the configuration autodetection for installation.
2077 A dump/restore is NOT required for those running 6.3. A make distclean,
2078 make, and make install is all that is required. This last step should be
2079 performed while the postmaster is not running. You should re-link any
2080 custom applications that use PostgreSQL libraries.
2082 For upgrades from pre-6.3 installations, refer to the installation and
2083 migration instructions for version 6.3.
2085 ----------------------------------------------------------------------
2089 ecpg cleanup/fixes, now version 1.1(Michael Meskes)
2090 pg_user cleanup(Bruce)
2091 large object fix for pg_dump and tclsh (alvin)
2092 LIKE fix for multiple adjacent underscores
2093 fix for redefining builtin functions(Thomas)
2095 upgrade to pg_access 0.83
2096 updated CLUSTER manual page
2097 multibyte character set support, see doc/README.mb(Tatsuo)
2098 configure --with-pgport fix
2100 big-endian fix for backend communications(Kataoka)
2101 SUBSTR() and substring() fix(Jan)
2102 several jdbc fixes(Peter)
2103 libpgtcl improvements, see libptcl/README(Randy Kunkee)
2104 Fix for "Datasize = 0" error(Vadim)
2105 Prevent \do from wrapping(Bruce)
2106 Remove duplicate Russian character set entries
2108 Allow optional TABLE keyword in LOCK and SELECT INTO(Thomas)
2109 CREATE SEQUENCE options to allow a negative integer(Thomas)
2110 Add "PASSWORD" as an allowed column identifier(Thomas)
2111 Add checks for UNION target fields(Bruce)
2112 Fix Alpha port(Dwayne Bailey)
2113 Fix for text arrays containing quotes(Doug Gibson)
2114 Solaris compile fix(Albert Chin-A-Young)
2115 Better identify tcl and tk libs and includes(Bruce)
2118 ----------------------------------------------------------------------
2122 Release date: 1998-03-01
2124 There are *many* new features and improvements in this release. Here is a
2125 brief, incomplete summary:
2127 * Many new SQL features, including full SQL92 subselect capability
2128 (everything is here but target-list subselects).
2130 * Support for client-side environment variables to specify time zone and
2133 * Socket interface for client/server connection. This is the default now
2134 so you may need to start postmaster with the "-i" flag.
2136 * Better password authorization mechanisms. Default table permissions
2139 * Old-style time travel has been removed. Performance has been improved.
2141 Note: Bruce Momjian wrote the following notes to introduce the new
2144 There are some general 6.3 issues that I want to mention. These are only
2145 the big items that can not be described in one sentence. A review of the
2146 detailed changes list is still needed.
2148 First, we now have subselects. Now that we have them, I would like to
2149 mention that without subselects, SQL is a very limited language.
2150 Subselects are a major feature, and you should review your code for places
2151 where subselects provide a better solution for your queries. I think you
2152 will find that there are more uses for subselects than you may think.
2153 Vadim has put us on the big SQL map with subselects, and fully functional
2154 ones too. The only thing you can't do with subselects is to use them in
2157 Second, 6.3 uses Unix domain sockets rather than TCP/IP by default. To
2158 enable connections from other machines, you have to use the new postmaster
2159 -i option, and of course edit "pg_hba.conf". Also, for this reason, the
2160 format of "pg_hba.conf" has changed.
2162 Third, char() fields will now allow faster access than varchar() or text.
2163 Specifically, the text and varchar() have a penalty for access to any
2164 columns after the first column of this type. char() used to also have this
2165 access penalty, but it no longer does. This may suggest that you redesign
2166 some of your tables, especially if you have short character columns that
2167 you have defined as varchar() or text. This and other changes make 6.3
2168 even faster than earlier releases.
2170 We now have passwords definable independent of any Unix file. There are
2171 new SQL USER commands. See the Administrator's Guide for more information.
2172 There is a new table, pg_shadow, which is used to store user information
2173 and user passwords, and it by default only SELECT-able by the postgres
2174 super-user. pg_user is now a view of pg_shadow, and is SELECT-able by
2175 PUBLIC. You should keep using pg_user in your application without changes.
2177 User-created tables now no longer have SELECT permission to PUBLIC by
2178 default. This was done because the ANSI standard requires it. You can of
2179 course GRANT any permissions you want after the table is created. System
2180 tables continue to be SELECT-able by PUBLIC.
2182 We also have real deadlock detection code. No more sixty-second timeouts.
2183 And the new locking code implements a FIFO better, so there should be less
2184 resource starvation during heavy use.
2186 Many complaints have been made about inadequate documentation in previous
2187 releases. Thomas has put much effort into many new manuals for this
2188 release. Check out the doc/ directory.
2190 For performance reasons, time travel is gone, but can be implemented using
2191 triggers (see "pgsql/contrib/spi/README"). Please check out the new \d
2192 command for types, operators, etc. Also, views have their own permissions
2193 now, not based on the underlying tables, so permissions on them have to be
2194 set separately. Check "/pgsql/interfaces" for some new ways to talk to
2197 This is the first release that really required an explanation for existing
2198 users. In many ways, this was necessary because the new release removes
2199 many limitations, and the work-arounds people were using are no longer
2202 ----------------------------------------------------------------------
2204 Migration to version 6.3
2206 A dump/restore using pg_dump or pg_dumpall is required for those wishing
2207 to migrate data from any previous release of PostgreSQL.
2209 ----------------------------------------------------------------------
2215 Fix binary cursors broken by MOVE implementation(Vadim)
2216 Fix for tcl library crash(Jan)
2217 Fix for array handling, from Gerhard Hintermayer
2218 Fix acl error, and remove duplicate pqtrace(Bruce)
2219 Fix psql \e for empty file(Bruce)
2220 Fix for textcat on varchar() fields(Bruce)
2221 Fix for DBT Sendproc (Zeugswetter Andres)
2222 Fix vacuum analyze syntax problem(Bruce)
2223 Fix for international identifiers(Tatsuo)
2224 Fix aggregates on inherited tables(Bruce)
2225 Fix substr() for out-of-bounds data
2226 Fix for select 1=1 or 2=2, select 1=1 and 2=2, and select sum(2+2)(Bruce)
2227 Fix notty output to show status result. -q option still turns it off(Bruce)
2228 Fix for count(*), aggs with views and multiple tables and sum(3)(Bruce)
2230 Fix for PQtrace start/stop several times(Bruce)
2231 Fix a variety of locking problems like newer lock waiters getting
2232 lock before older waiters, and having readlock people not share
2233 locks if a writer is waiting for a lock, and waiting writers not
2234 getting priority over waiting readers(Bruce)
2235 Fix crashes in psql when executing queries from external files(James)
2236 Fix problem with multiple order by columns, with the first one having
2238 Use correct hash table support functions for float8 and int4(Thomas)
2239 Re-enable JOIN= option in CREATE OPERATOR statement (Thomas)
2240 Change precedence for boolean operators to match expected behavior(Thomas)
2241 Generate elog(ERROR) on over-large integer(Bruce)
2242 Allow multiple-argument functions in constraint clauses(Thomas)
2243 Check boolean input literals for 'true','false','yes','no','1','0'
2244 and throw elog(ERROR) if unrecognized(Thomas)
2245 Major large objects fix
2246 Fix for GROUP BY showing duplicates(Vadim)
2247 Fix for index scans in MergeJion(Vadim)
2251 Subselects with EXISTS, IN, ALL, ANY keywords (Vadim, Bruce, Thomas)
2252 New User Manual(Thomas, others)
2253 Speedup by inlining some frequently-called functions
2254 Real deadlock detection, no more timeouts(Bruce)
2255 Add SQL92 "constants" CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP,
2256 CURRENT_USER(Thomas)
2257 Modify constraint syntax to be SQL92-compliant(Thomas)
2258 Implement SQL92 PRIMARY KEY and UNIQUE clauses using indexes(Thomas)
2259 Recognize SQL92 syntax for FOREIGN KEY. Throw elog notice(Thomas)
2260 Allow NOT NULL UNIQUE constraint clause (each allowed separately before)(Thomas)
2261 Allow PostgreSQL-style casting ("::") of non-constants(Thomas)
2262 Add support for SQL3 TRUE and FALSE boolean constants(Thomas)
2263 Support SQL92 syntax for IS TRUE/IS FALSE/IS NOT TRUE/IS NOT FALSE(Thomas)
2264 Allow shorter strings for boolean literals (e.g. "t", "tr", "tru")(Thomas)
2265 Allow SQL92 delimited identifiers(Thomas)
2266 Implement SQL92 binary and hexadecimal string decoding (b'10' and x'1F')(Thomas)
2267 Support SQL92 syntax for type coercion of literal strings
2268 (e.g. "DATETIME 'now'")(Thomas)
2269 Add conversions for int2, int4, and OID types to and from text(Thomas)
2270 Use shared lock when building indexes(Vadim)
2271 Free memory allocated for an user query inside transaction block after
2272 this query is done, was turned off in <= 6.2.1(Vadim)
2273 New SQL statement CREATE PROCEDURAL LANGUAGE(Jan)
2274 New PostgreSQL Procedural Language (PL) backend interface(Jan)
2275 Rename pg_dump -H option to -h(Bruce)
2276 Add Java support for passwords, European dates(Peter)
2277 Use indexes for LIKE and ~, !~ operations(Bruce)
2278 Add hash functions for datetime and timespan(Thomas)
2279 Time Travel removed(Vadim, Bruce)
2280 Add paging for \d and \z, and fix \i(Bruce)
2281 Add Unix domain socket support to backend and to frontend library(Goran)
2282 Implement CREATE DATABASE/WITH LOCATION and initlocation utility(Thomas)
2283 Allow more SQL92 and/or PostgreSQL reserved words as column identifiers(Thomas)
2284 Augment support for SQL92 SET TIME ZONE...(Thomas)
2285 SET/SHOW/RESET TIME ZONE uses TZ backend environment variable(Thomas)
2286 Implement SET keyword = DEFAULT and SET TIME ZONE DEFAULT(Thomas)
2287 Enable SET TIME ZONE using TZ environment variable(Thomas)
2288 Add PGDATESTYLE environment variable to frontend and backend initialization(Thomas)
2289 Add PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO
2290 frontend library initialization environment variables(Thomas)
2291 Regression tests time zone automatically set with "setenv PGTZ PST8PDT"(Thomas)
2292 Add pg_description table for info on tables, columns, operators, types, and
2294 Increase 16 char limit on system table/index names to 32 characters(Bruce)
2295 Rename system indexes(Bruce)
2296 Add 'GERMAN' option to SET DATESTYLE(Thomas)
2297 Define an "ISO-style" timespan output format with "hh:mm:ss" fields(Thomas)
2298 Allow fractional values for delta times (e.g. '2.5 days')(Thomas)
2299 Validate numeric input more carefully for delta times(Thomas)
2300 Implement day of year as possible input to date_part()(Thomas)
2301 Define timespan_finite() and text_timespan() functions(Thomas)
2302 Remove archive stuff(Bruce)
2303 Allow for a pg_password authentication database that is separate from
2304 the system password file(Todd)
2305 Dump ACLs, GRANT, REVOKE permissions(Matt)
2306 Define text, varchar, and bpchar string length functions(Thomas)
2307 Fix Query handling for inheritance, and cost computations(Bruce)
2308 Implement CREATE TABLE/AS SELECT (alternative to SELECT/INTO)(Thomas)
2309 Allow NOT, IS NULL, IS NOT NULL in constraints(Thomas)
2310 Implement UNIONs for SELECT(Bruce)
2311 Add UNION, GROUP, DISTINCT to INSERT(Bruce)
2312 varchar() stores only necessary bytes on disk(Bruce)
2313 Fix for BLOBs(Peter)
2314 Mega-Patch for JDBC...see README_6.3 for list of changes(Peter)
2315 Remove unused "option" from PQconnectdb()
2316 New LOCK command and lock manual page describing deadlocks(Bruce)
2317 Add new psql \da, \dd, \df, \do, \dS, and \dT commands(Bruce)
2318 Enhance psql \z to show sequences(Bruce)
2319 Show NOT NULL and DEFAULT in psql \d table(Bruce)
2320 New psql .psqlrc file start-up(Andrew)
2321 Modify sample start-up script in contrib/linux to show syslog(Thomas)
2322 New types for IP and MAC addresses in contrib/ip_and_mac(TomH)
2323 Unix system time conversions with date/time types in contrib/unixdate(Thomas)
2324 Update of contrib stuff(Massimo)
2325 Add Unix socket support to DBD::Pg(Goran)
2326 New python interface (PyGreSQL 2.0)(D'Arcy)
2327 New frontend/backend protocol has a version number, network byte order(Phil)
2328 Security features in pg_hba.conf enhanced and documented, many cleanups(Phil)
2329 CHAR() now faster access than VARCHAR() or TEXT
2330 ecpg embedded SQL preprocessor
2331 Reduce system column overhead(Vadmin)
2332 Remove pg_time table(Vadim)
2333 Add pg_type attribute to identify types that need length (bpchar, varchar)
2334 Add report of offending line when COPY command fails
2335 Allow VIEW permissions to be set separately from the underlying tables.
2336 For security, use GRANT/REVOKE on views as appropriate(Jan)
2337 Tables now have no default GRANT SELECT TO PUBLIC. You must
2338 explicitly grant such permissions.
2339 Clean up tutorial examples(Darren)
2343 Add new html development tools, and flow chart in /tools/backend
2344 Fix for SCO compiles
2345 Stratus computer port Robert Gillies
2346 Added support for shlib for BSD44_derived & i386_solaris
2347 Make configure more automated(Brook)
2348 Add script to check regression test results
2349 Break parser functions into smaller files, group together(Bruce)
2350 Rename heap_create to heap_create_and_catalog, rename heap_creatr
2351 to heap_create()(Bruce)
2352 Sparc/Linux patch for locking(TomS)
2353 Remove PORTNAME and reorganize port-specific stuff(Marc)
2354 Add optimizer README file(Bruce)
2355 Remove some recursion in optimizer and clean up some code there(Bruce)
2356 Fix for NetBSD locking(Henry)
2357 Fix for libptcl make(Tatsuo)
2359 Change IS TRUE, IS FALSE, ... to expressions using "=" rather than
2360 function calls to istrue() or isfalse() to allow optimization(Thomas)
2361 Various fixes NetBSD/Sparc related(TomH)
2362 Alpha linux locking(Travis,Ryan)
2363 Change elog(WARN) to elog(ERROR)(Bruce)
2364 FAQ for FreeBSD(Marc)
2365 Bring in the PostODBC source tree as part of our standard distribution(Marc)
2366 A minor patch for HP/UX 10 vs 9(Stan)
2367 New pg_attribute.atttypmod for type-specific info like varchar length(Bruce)
2368 Unixware patches(Billy)
2369 New i386 'lock' for spin lock asm(Billy)
2370 Support for multiplexed backends is removed
2371 Start an OpenBSD port
2374 Add string functions to regression suite(Thomas)
2375 Expand a few function names formerly truncated to 16 characters(Thomas)
2376 Remove un-needed malloc() calls and replace with palloc()(Bruce)
2378 ----------------------------------------------------------------------
2382 Release date: 1997-10-17
2384 6.2.1 is a bug-fix and usability release on 6.2.
2388 * Allow strings to span lines, per SQL92.
2390 * Include example trigger function for inserting user names on table
2393 This is a minor bug-fix release on 6.2. For upgrades from pre-6.2 systems,
2394 a full dump/reload is required. Refer to the 6.2 release notes for
2397 ----------------------------------------------------------------------
2399 Migration from version 6.2 to version 6.2.1
2401 This is a minor bug-fix release. A dump/reload is not required from
2402 version 6.2, but is required from any release prior to 6.2.
2404 In upgrading from version 6.2, if you choose to dump/reload you will find
2405 that avg(money) is now calculated correctly. All other bug fixes take
2406 effect upon updating the executables.
2408 Another way to avoid dump/reload is to use the following SQL command from
2409 "psql" to update the existing system table:
2411 update pg_aggregate set aggfinalfn = 'cash_div_flt8'
2412 where aggname = 'avg' and aggbasetype = 790;
2414 This will need to be done to every existing database, including template1.
2416 ----------------------------------------------------------------------
2420 Allow TIME and TYPE column names(Thomas)
2421 Allow larger range of true/false as boolean values(Thomas)
2422 Support output of "now" and "current"(Thomas)
2423 Handle DEFAULT with INSERT of NULL properly(Vadim)
2424 Fix for relation reference counts problem in buffer manager(Vadim)
2425 Allow strings to span lines, like ANSI(Thomas)
2426 Fix for backward cursor with ORDER BY(Vadim)
2427 Fix avg(cash) computation(Thomas)
2428 Fix for specifying a column twice in ORDER/GROUP BY(Vadim)
2429 Documented new libpq function to return affected rows, PQcmdTuples(Bruce)
2430 Trigger function for inserting user names for INSERT/UPDATE(Brook Milligan)
2433 ----------------------------------------------------------------------
2437 Release date: 1997-10-02
2439 A dump/restore is required for those wishing to migrate data from previous
2440 releases of PostgreSQL.
2442 ----------------------------------------------------------------------
2444 Migration from version 6.1 to version 6.2
2446 This migration requires a complete dump of the 6.1 database and a restore
2447 of the database in 6.2.
2449 Note that the "pg_dump" and "pg_dumpall" utility from 6.2 should be used
2450 to dump the 6.1 database.
2452 ----------------------------------------------------------------------
2454 Migration from version 1.x to version 6.2
2456 Those migrating from earlier 1.* releases should first upgrade to 1.09
2457 because the COPY output format was improved from the 1.02 release.
2459 ----------------------------------------------------------------------
2465 Fix problems with pg_dump for inheritance, sequences, archive tables(Bruce)
2466 Fix compile errors on overflow due to shifts, unsigned, and bad prototypes
2467 from Solaris(Diab Jerius)
2468 Fix bugs in geometric line arithmetic (bad intersection calculations)(Thomas)
2469 Check for geometric intersections at endpoints to avoid rounding ugliness(Thomas)
2470 Catch non-functional delete attempts(Vadim)
2471 Change time function names to be more consistent(Michael Reifenberg)
2472 Check for zero divides(Michael Reifenberg)
2473 Fix very old bug which made tuples changed/inserted by a commnd
2474 visible to the command itself (so we had multiple update of
2475 updated tuples, etc)(Vadim)
2476 Fix for SELECT null, 'fail' FROM pg_am (Patrick)
2477 SELECT NULL as EMPTY_FIELD now allowed(Patrick)
2478 Remove un-needed signal stuff from contrib/pginterface
2479 Fix OR (where x != 1 or x isnull didn't return tuples with x NULL) (Vadim)
2480 Fix time_cmp function (Vadim)
2481 Fix handling of functions with non-attribute first argument in
2482 WHERE clauses (Vadim)
2483 Fix GROUP BY when order of entries is different from order
2484 in target list (Vadim)
2485 Fix pg_dump for aggregates without sfunc1 (Vadim)
2489 Default genetic optimizer GEQO parameter is now 8(Bruce)
2490 Allow use parameters in target list having aggregates in functions(Vadim)
2491 Added JDBC driver as an interface(Adrian & Peter)
2493 Return number of tuples inserted/affected by INSERT/UPDATE/DELETE etc.(Vadim)
2494 Triggers implemented with CREATE TRIGGER (SQL3)(Vadim)
2495 SPI (Server Programming Interface) allows execution of queries inside
2497 NOT NULL implemented (SQL92)(Robson Paniago de Miranda)
2498 Include reserved words for string handling, outer joins, and unions(Thomas)
2499 Implement extended comments ("/* ... */") using exclusive states(Thomas)
2500 Add "//" single-line comments(Bruce)
2501 Remove some restrictions on characters in operator names(Thomas)
2502 DEFAULT and CONSTRAINT for tables implemented (SQL92)(Vadim & Thomas)
2503 Add text concatenation operator and function (SQL92)(Thomas)
2504 Support WITH TIME ZONE syntax (SQL92)(Thomas)
2505 Support INTERVAL unit TO unit syntax (SQL92)(Thomas)
2506 Define types DOUBLE PRECISION, INTERVAL, CHARACTER,
2507 and CHARACTER VARYING (SQL92)(Thomas)
2508 Define type FLOAT(p) and rudimentary DECIMAL(p,s), NUMERIC(p,s) (SQL92)(Thomas)
2509 Define EXTRACT(), POSITION(), SUBSTRING(), and TRIM() (SQL92)(Thomas)
2510 Define CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP (SQL92)(Thomas)
2511 Add syntax and warnings for UNION, HAVING, INNER and OUTER JOIN (SQL92)(Thomas)
2512 Add more reserved words, mostly for SQL92 compliance(Thomas)
2513 Allow hh:mm:ss time entry for timespan/reltime types(Thomas)
2514 Add center() routines for lseg, path, polygon(Thomas)
2515 Add distance() routines for circle-polygon, polygon-polygon(Thomas)
2516 Check explicitly for points and polygons contained within polygons
2517 using an axis-crossing algorithm(Thomas)
2518 Add routine to convert circle-box(Thomas)
2519 Merge conflicting operators for different geometric data types(Thomas)
2520 Replace distance operator "<===>" with "<->"(Thomas)
2521 Replace "above" operator "!^" with ">^" and "below" operator "!|" with "<^"(Thomas)
2522 Add routines for text trimming on both ends, substring, and string position(Thomas)
2523 Added conversion routines circle(box) and poly(circle)(Thomas)
2524 Allow internal sorts to be stored in memory rather than in files(Bruce & Vadim)
2525 Allow functions and operators on internally-identical types to succeed(Bruce)
2526 Speed up backend start-up after profiling analysis(Bruce)
2527 Inline frequently called functions for performance(Bruce)
2528 Reduce open() calls(Bruce)
2529 psql: Add PAGER for \h and \?,\C fix
2530 Fix for psql pager when no tty(Bruce)
2531 New entab utility(Bruce)
2532 General trigger functions for referential integrity (Vadim)
2533 General trigger functions for time travel (Vadim)
2534 General trigger functions for AUTOINCREMENT/IDENTITY feature (Vadim)
2535 MOVE implementation (Vadim)
2539 HPUX 10 patches (Vladimir Turin)
2540 Added SCO support, (Daniel Harris)
2541 mkLinux patches (Tatsuo Ishii)
2542 Change geometric box terminology from "length" to "width"(Thomas)
2543 Deprecate temporary unstored slope fields in geometric code(Thomas)
2544 Remove restart instructions from INSTALL(Bruce)
2545 Look in /usr/ucb first for install(Bruce)
2546 Fix c++ copy example code(Thomas)
2547 Add -o to psql manual page(Bruce)
2548 Prevent relname unallocated string length from being copied into database(Bruce)
2549 Cleanup for NAMEDATALEN use(Bruce)
2550 Fix pg_proc names over 15 chars in output(Bruce)
2551 Add strNcpy() function(Bruce)
2552 remove some (void) casts that are unnecessary(Bruce)
2553 new interfaces directory(Marc)
2554 Replace fopen() calls with calls to fd.c functions(Bruce)
2555 Make functions static where possible(Bruce)
2556 enclose unused functions in #ifdef NOT_USED(Bruce)
2557 Remove call to difftime() in timestamp support to fix SunOS(Bruce & Thomas)
2558 Changes for Digital Unix
2559 Portability fix for pg_dumpall(Bruce)
2560 Rename pg_attribute.attnvals to attdispersion(Bruce)
2561 "intro/unix" manual page now "pgintro"(Bruce)
2562 "built-in" manual page now "pgbuiltin"(Bruce)
2563 "drop" manual page now "drop_table"(Bruce)
2564 Add "create_trigger", "drop_trigger" manual pages(Thomas)
2565 Add constraints regression test(Vadim & Thomas)
2566 Add comments syntax regression test(Thomas)
2567 Add PGINDENT and support program(Bruce)
2568 Massive commit to run PGINDENT on all *.c and *.h files(Bruce)
2569 Files moved to /src/tools directory(Bruce)
2570 SPI and Trigger programming guides (Vadim & D'Arcy)
2572 ----------------------------------------------------------------------
2576 Release date: 1997-07-22
2578 ----------------------------------------------------------------------
2580 Migration from version 6.1 to version 6.1.1
2582 This is a minor bug-fix release. A dump/reload is not required from
2583 version 6.1, but is required from any release prior to 6.1. Refer to the
2584 release notes for 6.1 for more details.
2586 ----------------------------------------------------------------------
2590 fix for SET with options (Thomas)
2591 allow pg_dump/pg_dumpall to preserve ownership of all tables/objects(Bruce)
2592 new psql \connect option allows changing usernames without changing databases
2593 fix for initdb --debug option(Yoshihiko Ichikawa))
2594 lextest cleanup(Bruce)
2596 fix date/time month boundary arithmetic(Thomas)
2597 fix timezone daylight handling for some ports(Thomas, Bruce, Tatsuo)
2598 timestamp overhauled to use standard functions(Thomas)
2599 other code cleanup in date/time routines(Thomas)
2600 psql's \d now case-insensitive(Bruce)
2601 psql's backslash commands can now have trailing semicolon(Bruce)
2602 fix memory leak in psql when using \g(Bruce)
2603 major fix for endian handling of communication to server(Thomas, Tatsuo)
2604 Fix for Solaris assembler and include files(Yoshihiko Ichikawa)
2605 allow underscores in usernames(Bruce)
2606 pg_dumpall now returns proper status, portability fix(Bruce)
2609 ----------------------------------------------------------------------
2613 Release date: 1997-06-08
2615 The regression tests have been adapted and extensively modified for the
2616 6.1 release of PostgreSQL.
2618 Three new data types (datetime, timespan, and circle) have been added to
2619 the native set of PostgreSQL types. Points, boxes, paths, and polygons
2620 have had their output formats made consistent across the data types. The
2621 polygon output in misc.out has only been spot-checked for correctness
2622 relative to the original regression output.
2624 PostgreSQL 6.1 introduces a new, alternate optimizer which uses genetic
2625 algorithms. These algorithms introduce a random behavior in the ordering
2626 of query results when the query contains multiple qualifiers or multiple
2627 tables (giving the optimizer a choice on order of evaluation). Several
2628 regression tests have been modified to explicitly order the results, and
2629 hence are insensitive to optimizer choices. A few regression tests are for
2630 data types which are inherently unordered (e.g. points and time intervals)
2631 and tests involving those types are explicitly bracketed with "set geqo to
2632 'off'" and "reset geqo".
2634 The interpretation of array specifiers (the curly braces around atomic
2635 values) appears to have changed sometime after the original regression
2636 tests were generated. The current "./expected/*.out" files reflect this
2637 new interpretation, which may not be correct!
2639 The float8 regression test fails on at least some platforms. This is due
2640 to differences in implementations of pow() and exp() and the signaling
2641 mechanisms used for overflow and underflow conditions.
2643 The "random" results in the random test should cause the "random" test to
2644 be "failed", since the regression tests are evaluated using a simple diff.
2645 However, "random" does not seem to produce random results on my test
2646 machine (Linux/gcc/i686).
2648 ----------------------------------------------------------------------
2650 Migration to version 6.1
2652 This migration requires a complete dump of the 6.0 database and a restore
2653 of the database in 6.1.
2655 Those migrating from earlier 1.* releases should first upgrade to 1.09
2656 because the COPY output format was improved from the 1.02 release.
2658 ----------------------------------------------------------------------
2664 packet length checking in library routines
2665 lock manager priority patch
2666 check for under/over flow of float8(Bruce)
2667 multi-table join fix(Vadim)
2668 SIGPIPE crash fix(Darren)
2669 large object fixes(Sven)
2670 allow btree indexes to handle NULLs(Vadim)
2671 timezone fixes(D'Arcy)
2672 select SUM(x) can return NULL on no rows(Thomas)
2673 internal optimizer, executor bug fixes(Vadim)
2674 fix problem where inner loop in < or <= has no rows(Vadim)
2675 prevent re-commuting join index clauses(Vadim)
2676 fix join clauses for multiple tables(Vadim)
2677 fix hash, hashjoin for arrays(Vadim)
2678 fix btree for abstime type(Vadim)
2679 large object fixes(Raymond)
2680 fix buffer leak in hash indexes (Vadim)
2681 fix rtree for use in inner scan (Vadim)
2682 fix gist for use in inner scan, cleanups (Vadim, Andrea)
2683 avoid unnecessary local buffers allocation (Vadim, Massimo)
2684 fix local buffers leak in transaction aborts (Vadim)
2685 fix file manager memmory leaks, cleanups (Vadim, Massimo)
2686 fix storage manager memmory leaks (Vadim)
2687 fix btree duplicates handling (Vadim)
2688 fix deleted tuples re-incarnation caused by vacuum (Vadim)
2689 fix SELECT varchar()/char() INTO TABLE made zero-length fields(Bruce)
2690 many psql, pg_dump, and libpq memory leaks fixed using Purify (Igor)
2694 attribute optimization statistics(Bruce)
2695 much faster new btree bulk load code(Paul)
2696 BTREE UNIQUE added to bulk load code(Vadim)
2697 new lock debug code(Massimo)
2698 massive changes to libpg++(Leo)
2699 new GEQO optimizer speeds table multi-table optimization(Martin)
2700 new WARN message for non-unique insert into unique key(Marc)
2701 update x=-3, no spaces, now valid(Bruce)
2702 remove case-sensitive identifier handling(Bruce,Thomas,Dan)
2703 debug backend now pretty-prints tree(Darren)
2704 new Oracle character functions(Edmund)
2705 new plaintext password functions(Dan)
2706 no such class or insufficient privilege changed to distinct messages(Dan)
2707 new ANSI timestamp function(Dan)
2708 new ANSI Time and Date types (Thomas)
2709 move large chunks of data in backend(Martin)
2710 multi-column btree indexes(Vadim)
2711 new SET var TO value command(Martin)
2712 update transaction status on reads(Dan)
2713 new locale settings for character types(Oleg)
2714 new SEQUENCE serial number generator(Vadim)
2715 GROUP BY function now possible(Vadim)
2716 re-organize regression test(Thomas,Marc)
2717 new optimizer operation weights(Vadim)
2718 new psql \z grant/permit option(Marc)
2719 new MONEY data type(D'Arcy,Thomas)
2720 tcp socket communication speed improved(Vadim)
2721 new VACUUM option for attribute statistics, and for certain columns (Vadim)
2722 many geometric type improvements(Thomas,Keith)
2723 additional regression tests(Thomas)
2724 new datestyle variable(Thomas,Vadim,Martin)
2725 more comparison operators for sorting types(Thomas)
2726 new conversion functions(Thomas)
2727 new more compact btree format(Vadim)
2728 allow pg_dumpall to preserve database ownership(Bruce)
2729 new SET GEQO=# and R_PLANS variable(Vadim)
2730 old (!GEQO) optimizer can use right-sided plans (Vadim)
2731 typechecking improvement in SQL parser(Bruce)
2732 new SET, SHOW, RESET commands(Thomas,Vadim)
2733 new \connect database USER option
2734 new destroydb -i option (Igor)
2735 new \dt and \di psql commands (Darren)
2736 SELECT "\n" now escapes newline (A. Duursma)
2737 new geometry conversion functions from old format (Thomas)
2741 new configuration script(Marc)
2742 readline configuration option added(Marc)
2743 OS-specific configuration options removed(Marc)
2744 new OS-specific template files(Marc)
2745 no more need to edit Makefile.global(Marc)
2746 re-arrange include files(Marc)
2747 nextstep patches (Gregor Hoffleit)
2748 removed WIN32-specific code(Bruce)
2749 removed postmaster -e option, now only postgres -e option (Bruce)
2750 merge duplicate library code in front/backends(Martin)
2751 now works with eBones, international Kerberos(Jun)
2752 more shared library support
2753 c++ include file cleanup(Bruce)
2754 warn about buggy flex(Bruce)
2755 DG-UX, Ultrix, Irix, AIX portability fixes
2757 ----------------------------------------------------------------------
2761 Release date: 1997-01-29
2763 A dump/restore is required for those wishing to migrate data from previous
2764 releases of PostgreSQL.
2766 ----------------------------------------------------------------------
2768 Migration from version 1.09 to version 6.0
2770 This migration requires a complete dump of the 1.09 database and a restore
2771 of the database in 6.0.
2773 ----------------------------------------------------------------------
2775 Migration from pre-1.09 to version 6.0
2777 Those migrating from earlier 1.* releases should first upgrade to 1.09
2778 because the COPY output format was improved from the 1.02 release.
2780 ----------------------------------------------------------------------
2786 ALTER TABLE bug - running postgress process needs to re-read table definition
2787 Allow vacuum to be run on one table or entire database(Bruce)
2789 Fix array over-runs of memory writes(Kurt)
2790 Fix elusive btree range/non-range bug(Dan)
2791 Fix for hash indexes on some types like time and date
2792 Fix for pg_log size explosion
2793 Fix permissions on lo_export()(Bruce)
2794 Fix unitialized reads of memory(Kurt)
2795 Fixed ALTER TABLE ... char(3) bug(Bruce)
2796 Fixed a few small memory leaks
2797 Fixed EXPLAIN handling of options and changed full_path option name
2798 Fixed output of group acl permissions
2799 Memory leaks (hunt and destroy with tools like Purify(Kurt)
2800 Minor improvements to rules system
2802 New asserts for run-checking
2803 Overhauled parser/analyze code to properly report errors and increase speed
2804 Pg_dump -d now handles NULL's properly(Bruce)
2805 Prevent SELECT NULL from crashing server (Bruce)
2806 Properly report errors when INSERT ... SELECT columns did not match
2807 Properly report errors when insert column names were not correct
2808 Psql \g filename now works(Bruce)
2809 Psql fixed problem with multiple statements on one line with multiple outputs
2810 Removed duplicate system oid's
2811 SELECT * INTO TABLE . GROUP/ORDER BY gives unlink error if table exists(Bruce)
2812 Several fixes for queries that crashed the backend
2813 Starting quote in insert string errors(Bruce)
2814 Submitting an empty query now returns empty status, not just " " query(Bruce)
2818 Add EXPLAIN manual page(Bruce)
2819 Add UNIQUE index capability(Dan)
2820 Add hostname/user level access control rather than just hostname and user
2821 Add synonym of != for <>(Bruce)
2822 Allow "select oid,* from table"
2823 Allow BY,ORDER BY to specify columns by number, or by non-alias table.column(Bruce)
2824 Allow COPY from the frontend(Bryan)
2825 Allow GROUP BY to use alias column name(Bruce)
2826 Allow actual compression, not just reuse on the same page(Vadim)
2827 Allow installation-configuration option to auto-add all local users(Bryan)
2828 Allow libpq to distinguish between text value '' and null(Bruce)
2829 Allow non-postgres users with createdb privs to destroydb's
2830 Allow restriction on who can create C functions(Bryan)
2831 Allow restriction on who can do backend COPY(Bryan)
2832 Can shrink tables, pg_time and pg_log(Vadim & Erich)
2833 Change debug level 2 to print queries only, changed debug heading layout(Bruce)
2834 Change default decimal constant representation from float4 to float8(Bruce)
2835 European date format now set when postmaster is started
2836 Execute lowercase function names if not found with exact case
2837 Fixes for aggregate/GROUP processing, allow 'select sum(func(x),sum(x+y) from z'
2838 Gist now included in the distrubution(Marc)
2839 Idend authentication of local users(Bryan)
2840 Implement BETWEEN qualifier(Bruce)
2841 Implement IN qualifier(Bruce)
2842 Libpq has PQgetisnull()(Bruce)
2843 Libpq++ improvements
2844 New options to initdb(Bryan)
2845 Pg_dump allow dump of oid's(Bruce)
2846 Pg_dump create indexes after tables are loaded for speed(Bruce)
2847 Pg_dumpall dumps all databases, and the user table
2848 Pginterface additions for NULL values(Bruce)
2849 Prevent postmaster from being run as root
2850 Psql \h and \? is now readable(Bruce)
2851 Psql allow backslashed, semicolons anywhere on the line(Bruce)
2852 Psql changed command prompt for lines in query or in quotes(Bruce)
2853 Psql char(3) now displays as (bp)char in \d output(Bruce)
2854 Psql return code now more accurate(Bryan?)
2855 Psql updated help syntax(Bruce)
2856 Re-visit and fix vacuum(Vadim)
2857 Reduce size of regression diffs, remove timezone name difference(Bruce)
2858 Remove compile-time parameters to enable binary distributions(Bryan)
2859 Reverse meaning of HBA masks(Bryan)
2860 Secure Authentication of local users(Bryan)
2861 Speed up vacuum(Vadim)
2862 Vacuum now had VERBOSE option(Bruce)
2866 All functions now have prototypes that are compared against the calls
2867 Allow asserts to be disabled easly from Makefile.global(Bruce)
2868 Change oid constants used in code to #define names
2869 Decoupled sparc and solaris defines(Kurt)
2870 Gcc -Wall compiles cleanly with warnings only from unfixable constructs
2871 Major include file reorganization/reduction(Marc)
2872 Make now stops on compile failure(Bryan)
2873 Makefile restructuring(Bryan, Marc)
2874 Merge bsdi_2_1 to bsdi(Bruce)
2875 Monitor program removed
2876 Name change from Postgres95 to PostgreSQL
2877 New config.h file(Marc, Bryan)
2878 PG_VERSION now set to 6.0 and used by postmaster
2879 Portability additions, including Ultrix, DG/UX, AIX, and Solaris
2880 Reduced the number of #define's, centeralized #define's
2881 Remove duplicate OIDS in system tables(Dan)
2882 Remove duplicate system catalog info or report mismatches(Dan)
2883 Removed many os-specific #define's
2884 Restructured object file generation/location(Bryan, Marc)
2885 Restructured port-specific file locations(Bryan, Marc)
2886 Unused/uninialized variables corrected
2888 ----------------------------------------------------------------------
2892 Release date: 1996-11-04
2894 Sorry, we didn't keep track of changes from 1.02 to 1.09. Some of the
2895 changes listed in 6.0 were actually included in the 1.02.1 to 1.09
2898 ----------------------------------------------------------------------
2902 Release date: 1996-08-01
2904 ----------------------------------------------------------------------
2906 Migration from version 1.02 to version 1.02.1
2908 Here is a new migration file for 1.02.1. It includes the 'copy' change and
2909 a script to convert old ASCII files.
2911 Note: The following notes are for the benefit of users who want to
2912 migrate databases from Postgres95 1.01 and 1.02 to Postgres95 1.02.1.
2914 If you are starting afresh with Postgres95 1.02.1 and do not need to
2915 migrate old databases, you do not need to read any further.
2917 In order to upgrade older Postgres95 version 1.01 or 1.02 databases to
2918 version 1.02.1, the following steps are required:
2923 databases. This is done by running the new 1.02.1 server against your
2924 own 1.01 or 1.02 database and applying the queries attached at the end
2925 of the file. This can be done easily through "psql". If your 1.01 or
2926 1.02 database is named testdb and you have cut the commands from the
2927 end of this file and saved them in "addfunc.sql":
2929 % psql testdb -f addfunc.sql
2931 Those upgrading 1.02 databases will get a warning when executing the
2932 last two statements in the file because they are already present in
2933 1.02. This is not a cause for concern.
2935 ----------------------------------------------------------------------
2937 Dump/Reload Procedure
2939 If you are trying to reload a pg_dump or text-mode, copy tablename to
2940 stdout generated with a previous version, you will need to run the
2941 attached "sed" script on the ASCII file before loading it into the
2942 database. The old format used '.' as end-of-data, while '\.' is now the
2943 end-of-data marker. Also, empty strings are now loaded in as '' rather
2944 than NULL. See the copy manual page for full details.
2946 sed 's/^\.$/\\./g' <in_file >out_file
2948 If you are loading an older binary copy or non-stdout copy, there is no
2949 end-of-data character, and hence no conversion necessary.
2951 -- following lines added by agc to reflect the case-insensitive
2952 -- regexp searching for varchar (in 1.02), and bpchar (in 1.02.1)
2953 create operator ~* (leftarg = bpchar, rightarg = text, procedure = texticregexeq);
2954 create operator !~* (leftarg = bpchar, rightarg = text, procedure = texticregexne);
2955 create operator ~* (leftarg = varchar, rightarg = text, procedure = texticregexeq);
2956 create operator !~* (leftarg = varchar, rightarg = text, procedure = texticregexne);
2958 ----------------------------------------------------------------------
2962 Source code maintenance and development
2963 * worldwide team of volunteers
2964 * the source tree now in CVS at ftp.ki.net
2967 * psql (and underlying libpq library) now has many more options for
2968 formatting output, including HTML
2969 * pg_dump now output the schema and/or the data, with many fixes to
2970 enhance completeness.
2971 * psql used in place of monitor in administration shell scripts.
2972 monitor to be depreciated in next release.
2973 * date/time functions enhanced
2974 * NULL insert/update/comparison fixed/enhanced
2975 * TCL/TK lib and shell fixed to work with both tck7.4/tk4.0 and tcl7.5/tk4.1
2977 Bug Fixes (almost too numerous to mention)
2979 * storage management
2980 * check for NULL pointer before dereferencing
2984 * added SolarisX86 port
2985 * added BSDI 2.1 port
2988 ----------------------------------------------------------------------
2992 Release date: 1996-02-23
2994 ----------------------------------------------------------------------
2996 Migration from version 1.0 to version 1.01
2998 The following notes are for the benefit of users who want to migrate
2999 databases from Postgres95 1.0 to Postgres95 1.01.
3001 If you are starting afresh with Postgres95 1.01 and do not need to migrate
3002 old databases, you do not need to read any further.
3004 In order to Postgres95 version 1.01 with databases created with Postgres95
3005 version 1.0, the following steps are required:
3013 data directory (typically the value of your $PGDATA).
3014 "src/libpq/pg_hba" shows an example syntax.
3021 in "src/Makefile.global"
3023 Note that host-based authentication is turned on by default, and
3024 if you do not take steps A or B above, the out-of-the-box 1.01
3025 will not allow you to connect to 1.0 databases.
3030 your existing $PGDATA directory.
3033 path up so that 1.01 binaries are being used.
3040 This is done by running the new 1.01 server against your own 1.0
3041 database and applying the queries attached and saving in the file
3042 1.0_to_1.01.sql. This can be done easily through "psql". If your 1.0
3043 database is name testdb:
3045 % psql testdb -f 1.0_to_1.01.sql
3047 and then execute the following commands (cut and paste from here):
3049 -- add builtin functions that are new to 1.01
3051 create function int4eqoid (int4, oid) returns bool as 'foo'
3052 language 'internal';
3053 create function oideqint4 (oid, int4) returns bool as 'foo'
3054 language 'internal';
3055 create function char2icregexeq (char2, text) returns bool as 'foo'
3056 language 'internal';
3057 create function char2icregexne (char2, text) returns bool as 'foo'
3058 language 'internal';
3059 create function char4icregexeq (char4, text) returns bool as 'foo'
3060 language 'internal';
3061 create function char4icregexne (char4, text) returns bool as 'foo'
3062 language 'internal';
3063 create function char8icregexeq (char8, text) returns bool as 'foo'
3064 language 'internal';
3065 create function char8icregexne (char8, text) returns bool as 'foo'
3066 language 'internal';
3067 create function char16icregexeq (char16, text) returns bool as 'foo'
3068 language 'internal';
3069 create function char16icregexne (char16, text) returns bool as 'foo'
3070 language 'internal';
3071 create function texticregexeq (text, text) returns bool as 'foo'
3072 language 'internal';
3073 create function texticregexne (text, text) returns bool as 'foo'
3074 language 'internal';
3076 -- add builtin functions that are new to 1.01
3078 create operator = (leftarg = int4, rightarg = oid, procedure = int4eqoid);
3079 create operator = (leftarg = oid, rightarg = int4, procedure = oideqint4);
3080 create operator ~* (leftarg = char2, rightarg = text, procedure = char2icregexeq);
3081 create operator !~* (leftarg = char2, rightarg = text, procedure = char2icregexne);
3082 create operator ~* (leftarg = char4, rightarg = text, procedure = char4icregexeq);
3083 create operator !~* (leftarg = char4, rightarg = text, procedure = char4icregexne);
3084 create operator ~* (leftarg = char8, rightarg = text, procedure = char8icregexeq);
3085 create operator !~* (leftarg = char8, rightarg = text, procedure = char8icregexne);
3086 create operator ~* (leftarg = char16, rightarg = text, procedure = char16icregexeq);
3087 create operator !~* (leftarg = char16, rightarg = text, procedure = char16icregexne);
3088 create operator ~* (leftarg = text, rightarg = text, procedure = texticregexeq);
3089 create operator !~* (leftarg = text, rightarg = text, procedure = texticregexne);
3091 ----------------------------------------------------------------------
3096 * 1.01 is backwards compatible with 1.0 database provided the user
3097 follow the steps outlined in the MIGRATION_from_1.0_to_1.01 file.
3098 If those steps are not taken, 1.01 is not compatible with 1.0 database.
3101 * added PQdisplayTuples() to libpq and changed monitor and psql to use it
3102 * added NeXT port (requires SysVIPC implementation)
3103 * added CAST .. AS ... syntax
3104 * added ASC and DESC keywords
3105 * added 'internal' as a possible language for CREATE FUNCTION
3106 internal functions are C functions which have been statically linked
3107 into the postgres backend.
3108 * a new type "name" has been added for system identifiers (table names,
3109 attribute names, etc.) This replaces the old char16 type. The
3110 of name is set by the NAMEDATALEN #define in src/Makefile.global
3111 * a readable reference manual that describes the query language.
3112 * added host-based access control. A configuration file ($PGDATA/pg_hba)
3113 is used to hold the configuration data. If host-based access control
3114 is not desired, comment out HBA=1 in src/Makefile.global.
3115 * changed regex handling to be uniform use of Henry Spencer's regex code
3116 regardless of platform. The regex code is included in the distribution
3117 * added functions and operators for case-insensitive regular expressions.
3118 The operators are ~* and !~*.
3119 * pg_dump uses COPY instead of SELECT loop for better performance
3122 * fixed an optimizer bug that was causing core dumps when
3123 functions calls were used in comparisons in the WHERE clause
3124 * changed all uses of getuid to geteuid so that effective uids are used
3125 * psql now returns non-zero status on errors when using -c
3126 * applied public patches 1-14
3128 ----------------------------------------------------------------------
3132 Release date: 1995-09-05
3134 ----------------------------------------------------------------------
3139 * The copyright of Postgres 1.0 has been loosened to be freely modifiable
3140 and modifiable for any purpose. Please read the COPYRIGHT file.
3141 Thanks to Professor Michael Stonebraker for making this possible.
3144 * date formats have to be MM-DD-YYYY (or DD-MM-YYYY if you're using
3145 EUROPEAN STYLE). This follows SQL-92 specs.
3146 * "delimiters" is now a keyword
3149 * sql LIKE syntax has been added
3150 * copy command now takes an optional USING DELIMITER specification.
3151 delimiters can be any single-character string.
3152 * IRIX 5.3 port has been added.
3153 Thanks to Paul Walmsley and others.
3154 * updated pg_dump to work with new libpq
3155 * \d has been added psql
3156 Thanks to Keith Parks
3157 * regexp performance for architectures that use POSIX regex has been
3158 improved due to caching of precompiled patterns.
3159 Thanks to Alistair Crooks
3160 * a new version of libpq++
3161 Thanks to William Wanders
3164 * arbitrary userids can be specified in the createuser script
3165 * \c to connect to other databases in psql now works.
3166 * bad pg_proc entry for float4inc() is fixed
3167 * users with usecreatedb field set can now create databases without
3168 having to be usesuper
3169 * remove access control entries when the entry no longer has any
3171 * fixed non-portable datetimes implementation
3172 * added kerberos flags to the src/backend/Makefile
3173 * libpq now works with kerberos
3174 * typographic errors in the user manual have been corrected.
3175 * btrees with multiple index never worked, now we tell you they don't
3176 work when you try to use them
3178 ----------------------------------------------------------------------
3180 Postgres95 Release 0.03
3182 Release date: 1995-07-21
3184 ----------------------------------------------------------------------
3188 Incompatible changes:
3189 * BETA-0.3 IS INCOMPATIBLE WITH DATABASES CREATED WITH PREVIOUS VERSIONS
3190 (due to system catalog changes and indexing structure changes).
3191 * double-quote (") is deprecated as a quoting character for string literals;
3192 you need to convert them to single quotes (').
3193 * name of aggregates (eg. int4sum) are renamed in accordance with the
3194 SQL standard (eg. sum).
3195 * CHANGE ACL syntax is replaced by GRANT/REVOKE syntax.
3196 * float literals (eg. 3.14) are now of type float4 (instead of float8 in
3197 previous releases); you might have to do typecasting if you depend on it
3198 being of type float8. If you neglect to do the typecasting and you assign
3199 a float literal to a field of type float8, you may get incorrect values
3201 * LIBPQ has been totally revamped so that frontend applications
3202 can connect to multiple backends
3203 * the usesysid field in pg_user has been changed from int2 to int4 to
3204 allow wider range of Unix user ids.
3205 * the netbsd/freebsd/bsd o/s ports have been consolidated into a
3206 single BSD44_derived port. (thanks to Alistair Crooks)
3208 SQL standard-compliance (the following details changes that makes postgres95
3209 more compliant to the SQL-92 standard):
3210 * the following SQL types are now built-in: smallint, int(eger), float, real,
3211 char(N), varchar(N), date and time.
3213 The following are aliases to existing postgres types:
3215 integer, int -> int4
3216 float, real -> float4
3217 char(N) and varchar(N) are implemented as truncated text types. In
3218 addition, char(N) does blank-padding.
3219 * single-quote (') is used for quoting string literals; '' (in addition to
3220 \') is supported as means of inserting a single quote in a string
3221 * SQL standard aggregate names (MAX, MIN, AVG, SUM, COUNT) are used
3222 (Also, aggregates can now be overloaded, i.e. you can define your
3223 own MAX aggregate to take in a user-defined type.)
3224 * CHANGE ACL removed. GRANT/REVOKE syntax added.
3225 - Privileges can be given to a group using the "GROUP" keyword.
3227 GRANT SELECT ON foobar TO GROUP my_group;
3228 The keyword 'PUBLIC' is also supported to mean all users.
3230 Privileges can only be granted or revoked to one user or group
3233 "WITH GRANT OPTION" is not supported. Only class owners can change
3235 - The default access control is to to grant users readonly access.
3236 You must explicitly grant insert/update access to users. To change
3237 this, modify the line in
3238 src/backend/utils/acl.h
3239 that defines ACL_WORLD_DEFAULT
3242 * the bug where aggregates of empty tables were not run has been fixed. Now,
3243 aggregates run on empty tables will return the initial conditions of the
3244 aggregates. Thus, COUNT of an empty table will now properly return 0.
3245 MAX/MIN of an empty table will return a tuple of value NULL.
3246 * allow the use of \; inside the monitor
3247 * the LISTEN/NOTIFY asynchronous notification mechanism now work
3248 * NOTIFY in rule action bodies now work
3249 * hash indexes work, and access methods in general should perform better.
3250 creation of large btree indexes should be much faster. (thanks to Paul
3253 Other changes and enhancements:
3254 * addition of an EXPLAIN statement used for explaining the query execution
3255 plan (eg. "EXPLAIN SELECT * FROM EMP" prints out the execution plan for
3257 * WARN and NOTICE messages no longer have timestamps on them. To turn on
3258 timestamps of error messages, uncomment the line in
3259 src/backend/utils/elog.h:
3260 /* define ELOG_TIMESTAMPS */
3261 * On an access control violation, the message
3262 "Either no such class or insufficient privilege"
3263 will be given. This is the same message that is returned when
3264 a class is not found. This dissuades non-privileged users from
3265 guessing the existence of privileged classes.
3266 * some additional system catalog changes have been made that are not
3267 visible to the user.
3270 * The -oid option has been added to the "pg_result" tcl command.
3271 pg_result -oid returns oid of the last tuple inserted. If the
3272 last command was not an INSERT, then pg_result -oid returns "".
3273 * the large object interface is available as pg_lo* tcl commands:
3274 pg_lo_open, pg_lo_close, pg_lo_creat, etc.
3276 Portability enhancements and New Ports:
3277 * flex/lex problems have been cleared up. Now, you should be able to use
3278 flex instead of lex on any platforms. We no longer make assumptions of
3279 what lexer you use based on the platform you use.
3280 * The Linux-ELF port is now supported. Various configuration have been
3281 tested: The following configuration is known to work:
3282 kernel 1.2.10, gcc 2.6.3, libc 4.7.2, flex 2.5.2, bison 1.24
3283 with everything in ELF format,
3286 * ipcclean added to the distribution
3287 ipcclean usually does not need to be run, but if your backend crashes
3288 and leaves shared memory segments hanging around, ipcclean will
3289 clean them up for you.
3292 * the user manual has been revised and libpq documentation added.
3294 ----------------------------------------------------------------------
3296 Postgres95 Release 0.02
3298 Release date: 1995-05-25
3300 ----------------------------------------------------------------------
3304 Incompatible changes:
3305 * The SQL statement for creating a database is 'CREATE DATABASE' instead
3306 of 'CREATEDB'. Similarly, dropping a database is 'DROP DATABASE' instead
3307 of 'DESTROYDB'. However, the names of the executables 'createdb' and
3308 'destroydb' remain the same.
3311 * pgperl - a Perl (4.036) interface to Postgres95
3312 * pg_dump - a utility for dumping out a postgres database into a
3313 script file containing query commands. The script files are in a ASCII
3314 format and can be used to reconstruct the database, even on other
3315 machines and other architectures. (Also good for converting
3316 a Postgres 4.2 database to Postgres95 database.)
3318 The following ports have been incorporated into postgres95-beta-0.02:
3319 * the NetBSD port by Alistair Crooks
3320 * the AIX port by Mike Tung
3321 * the Windows NT port by Jon Forrest (more stuff but not done yet)
3322 * the Linux ELF port by Brian Gallew
3324 The following bugs have been fixed in postgres95-beta-0.02:
3325 * new lines not escaped in COPY OUT and problem with COPY OUT when first
3327 * cannot type return to use the default user id in createuser
3328 * SELECT DISTINCT on big tables crashes
3329 * Linux installation problems
3330 * monitor doesn't allow use of 'localhost' as PGHOST
3331 * psql core dumps when doing \c or \l
3332 * the "pgtclsh" target missing from src/bin/pgtclsh/Makefile
3333 * libpgtcl has a hard-wired default port number
3334 * SELECT DISTINCT INTO TABLE hangs
3335 * CREATE TYPE doesn't accept 'variable' as the internallength
3336 * wrong result using more than 1 aggregate in a SELECT
3338 ----------------------------------------------------------------------
3340 Postgres95 Release 0.01
3342 Release date: 1995-05-01