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