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