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