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