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