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