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