OSDN Git Service

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