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