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