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