]> granicus.if.org Git - postgresql/blob - doc/src/sgml/release.sgml
Replace &version; by appropriate version.
[postgresql] / doc / src / sgml / release.sgml
1 <!--
2 $Header: /cvsroot/pgsql/doc/src/sgml/release.sgml,v 1.163 2002/10/12 16:29:51 petere Exp $
3 -->
4
5 <appendix id="release">
6  <title>Release Notes</title>
7
8  <sect1 id="release-devel">
9   <title>7.3 Development Branch</title>
10
11   <para>
12    Below is a subset of the changes that have gone into the
13    development branch of PostgreSQL since version 7.2.  For a complete
14    list of changes, consult the CVS logs.
15   </para>
16
17 <!--
18 Developers: When you add a feature, mention it here.  This avoids
19 lossiness when digging out the information from the CVS logs, and
20 furthermore it advertises your feature to external parties at the
21 earliest possible moment.
22  
23 CDATA means the content is "SGML-free", so you can write without
24 worries about funny characters.
25 -->
26 <literallayout><![CDATA[
27 Mixed numeric-and-float expressions are evaluated as float, per SQL spec
28 Explicit casts to char, varchar, bit, varbit will truncate or pad without error
29 CREATE OR REPLACE VIEW, CREATE OR REPLACE RULE are available
30 No-autocommit mode is available (set autocommit to off)
31 Substantial improvements in functionality for functions returning sets
32 Client libraries older than 6.3 no longer supported (version 0 protocol removed)
33 PREPARE statement allows caching query plans for interactive statements
34 Type OPAQUE is now deprecated in favor of pseudo-types cstring, trigger, etc
35 Standalone composite types can now be created with CREATE TYPE
36 Files larger than 2 GB are now supported (if supported by the operating system)
37 SERIAL no longer implies UNIQUE; specify explicitly if index is wanted
38 pg_dump -n and -N options have been removed.  The new behavior is like -n but knows about key words.
39 CLUSTER is no longer hazardous to your schema
40 COPY accepts a list of columns to copy
41 ALTER TABLE DROP COLUMN
42 CREATE OPERATOR CLASS/DROP OPERATOR CLASS
43 CREATE CAST/DROP CAST
44 Sequences created by SERIAL column definitions now auto-drop with the column
45 Most forms of DROP now support RESTRICT and CASCADE options
46 Recursive SQL functions can be defined
47 User-defined procedural languages can register a validator function to check new functions as they are created
48 Functions can be executed with the privileges of the owner
49 Syntax of CREATE FUNCTION has been extended to resemble SQL99
50 Effects of SET within a transaction block now roll back if transaction aborts
51 New SET LOCAL syntax sets a parameter for the life of the current transaction
52 Datestyle, timezone, client_encoding can be set in postgresql.conf
53 The last vestiges of support for type names datetime and timespan are gone; use timestamp and interval instead
54 Rule names are now per-relation, not global; DROP RULE and COMMENT ON RULE syntax changes accordingly
55 Readline and Zlib are now required by default and must be turned off explicitly if their use is not desired
56 Define a third class of function volatility to allow indexscans in more cases
57 Locale support is now built by default; choice of locale is set by initdb and/or at run-time
58 ALTER TABLE ALTER COLUMN SET/DROP NOT NULL
59 EXPLAIN and SHOW output comes out as a query result, not a NOTICE message
60 DOMAINs (types that are constrained versions of base types)
61 Access privileges on functions
62 Access privileges on procedural languages
63 CREATE DATABASE has OWNER option so superuser can create DB for someone else
64 Kerberos 5 support now works with Heimdal
65 Database and user-specific session defaults for run-time configuration variables (ALTER DATABASE ... SET and ALTER USER ... SET)
66 String function OVERLAY() implemented per SQL99
67 Regular expression operator SIMILAR TO implemented per SQL99
68 Regular expression function SUBSTRING() implemented per SQL99
69 ]]></literallayout>
70
71  </sect1>
72
73  <sect1 id="release-7-3">
74   <title>Release 7.3</title>
75
76   <note>
77    <title>Release date</title>
78    <simpara>2002-??-??</simpara>
79   </note>
80
81   <sect2>
82    <title>Overview</title>
83
84    <para>
85     TO BE FILLED IN.  SEE /HISTORY.
86    </para>
87
88    <para>
89     Major changes in this release:
90
91     <variablelist>
92      <varlistentry>
93       <term>XXX</term>
94       <listitem>
95        <para>
96     TO BE FILLED IN.  SEE /HISTORY.
97        </para>
98       </listitem>
99      </varlistentry>
100     </variablelist>
101    </para>
102   </sect2>
103
104   <sect2>
105    <title>Migration to version 7.3</title>
106
107    <para>
108     A dump/restore using <command>pg_dump</command> is required for
109     those wishing to migrate data from any previous release.
110    </para>
111
112    <para>
113     Observe the following incompatibilities:
114
115     <itemizedlist>
116      <listitem>
117       <para>
118     TO BE FILLED IN.  SEE /HISTORY.
119       </para>
120      </listitem>
121
122     </itemizedlist>
123    </para>
124
125   </sect2>
126
127   <sect2>
128    <title>Changes</title>
129
130    <sect3>
131     <title>XXX</title>
132 <literallayout>
133     TO BE FILLED IN.  SEE /HISTORY.
134 </literallayout>
135    </sect3>
136   </sect2>
137  </sect1>
138
139
140   <sect1 id="release-7-2-3">
141    <title>Release 7.2.3</title>
142
143    <note>
144    <title>Release date</title>
145    <simpara>2002-10-01</simpara>
146    </note>
147
148    <para>
149     This has a variety of fixes from 7.2.2, including fixes to prevent
150     possible data loss.
151    </para>
152
153
154    <sect2>
155     <title>Migration to version 7.2.3</title>
156
157     <para>
158      A dump/restore is <emphasis>not</emphasis> required for those running
159      7.2.X.
160     </para>
161    </sect2>
162
163    <sect2>
164     <title>Changes</title>
165
166     <para>
167 <literallayout>
168 Prevent possible compressed transaction log loss (Tom)
169 Prevent non-superuser from increasing most recent vacuum info (Tom)
170 Handle pre-1970 date values in newer versions of glibc (Tom)
171 Fix possible hang during server shutdown
172 Prevent spinlock hangs on SMP PPC machines (Tomoyuki Niijima)
173 Fix pg_dump to properly dump FULL JOIN USING (Tom)
174 </literallayout>
175     </para>
176    </sect2>
177   </sect1>
178   
179   
180   <sect1 id="release-7-2-2">
181    <title>Release 7.2.2</title>
182
183    <note>
184    <title>Release date</title>
185    <simpara>2002-08-23</simpara>
186    </note>
187
188    <para>
189     This has a variety of fixes from 7.2.1.
190    </para>
191
192
193    <sect2>
194     <title>Migration to version 7.2.2</title>
195
196     <para>
197      A dump/restore is <emphasis>not</emphasis> required for those running
198      7.2.X.
199     </para>
200    </sect2>
201
202    <sect2>
203     <title>Changes</title>
204
205     <para>
206 <literallayout>
207 Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom)
208 Fix for compressed transaction log id wraparound (Tom)
209 Fix PQescapeBytea/PQunescapeBytea so that they handle bytes > 0x7f (Tatsuo)
210 Fix for psql and pg_dump crashing when invoked with non-existand long 
211   options (Tatsuo)
212 Fix crash when invoking geometric operators (Tom)
213 Allow OPEN cursor(args) (Tom)
214 Fix for rtree_gist index build (Teodor)
215 Fix for dumping user-defined aggregates (Tom)
216 Contrib/intarray fixes (Oleg)
217 Fix for complex UNION/EXCEPT/INTERSECT queries using parens (Tom)
218 Fix to pg_convert (Tatsuo)
219 Fix for crash with long DATA strings (Thomes, Neil)
220 Fix for repeat(), lpad(), rpad() and long strings (Neil)
221 </literallayout>
222     </para>
223    </sect2>
224   </sect1>
225   
226   
227   <sect1 id="release-7-2-1">
228    <title>Release 7.2.1</title>
229
230    <note>
231    <title>Release date</title>
232    <simpara>2002-03-21</simpara>
233    </note>
234
235    <para>
236     This has a variety of fixes from 7.2.
237    </para>
238
239
240    <sect2>
241     <title>Migration to version 7.2.1</title>
242
243     <para>
244      A dump/restore is <emphasis>not</emphasis> required for those running
245      7.2.
246     </para>
247    </sect2>
248
249    <sect2>
250     <title>Changes</title>
251
252     <para>
253 <literallayout>
254 Ensure that sequence counters do not go backwards after a crash (Tom)
255 Fix pgaccess kanji-coversion key binding (Tatsuo)
256 Optimizer improvements (Tom)
257 cash I/O improvements (Tom)
258 New Russian FAQ
259 Compile fix for missing AuthBlockSig (Heiko)
260 Additional time zones and time zone fixes (Thomas)
261 Allow psql \connect to handle mixed case database and user names (Tom)
262 Return proper OID on command completion even with ON INSERT rules (Tom)
263 Allow COPY FROM to use 8-bit DELIMITERS (Tatsuo)
264 Fix bug in extract/date_part for milliseconds/microseconds (Tatsuo)
265 Improve handling of multiple UNIONs with different lengths (Tom)
266 contrib/btree_gist improvements (Teodor Sigaev)
267 contrib/tsearch dictionary improvements, see README.tsearch for
268   an additional installation step (Thomas T. Thai, Teodor Sigaev)
269 Fix for array subscripts handling (Tom)
270 Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom)
271 </literallayout>
272     </para>
273    </sect2>
274   </sect1>
275
276
277  <sect1 id="release-7-2">
278   <title>Release 7.2</title>
279
280   <note>
281    <title>Release date</title>
282    <simpara>2002-02-04</simpara>
283   </note>
284
285   <sect2>
286    <title>Overview</title>
287
288    <para>
289     This release improves <productname>PostgreSQL</> for use in
290     high-volume applications.
291    </para>
292
293    <para>
294     Major changes in this release:
295
296     <variablelist>
297      <varlistentry>
298       <term>VACUUM</term>
299       <listitem>
300        <para>
301         Vacuuming no longer locks tables, thus allowing normal user
302         access during the vacuum.  A new <command>VACUUM FULL</>
303         command does old-style vacuum by locking the table and
304         shrinking the on-disk copy of the table.
305        </para>
306       </listitem>
307      </varlistentry>
308  
309      <varlistentry>
310       <term>Transactions</term>
311       <listitem>
312        <para>
313         There is no longer a problem with installations that exceed
314         four billion transactions.
315        </para>
316       </listitem>
317      </varlistentry>
318  
319      <varlistentry>
320       <term>OIDs</term>
321       <listitem>
322        <para>
323         OIDs are now optional.  Users can now create tables without
324         OIDs for cases where OID usage is excessive.
325        </para>
326       </listitem>
327      </varlistentry>
328  
329      <varlistentry>
330       <term>Optimizer</term>
331       <listitem>
332        <para>
333         The system now computes histogram column statistics during
334         <command>ANALYZE</>, allowing much better optimizer choices.
335        </para>
336       </listitem>
337      </varlistentry>
338  
339      <varlistentry>
340       <term>Security</term>
341       <listitem>
342        <para>
343         A new MD5 encryption option allows more secure storage and
344         transfer of passwords.  A new Unix-domain socket
345         authentication option is available on Linux and BSD systems.
346        </para>
347       </listitem>
348      </varlistentry>
349  
350      <varlistentry>
351       <term>Statistics</term>
352       <listitem>
353        <para>
354         Administrators can use the new table access statistics module
355         to get fine-grained information about table and index usage.
356        </para>
357       </listitem>
358      </varlistentry>
359
360      <varlistentry>
361       <term>Internationalization</term>
362       <listitem>
363        <para>
364         Program and library messages can now be displayed in several
365         languages.
366        </para>
367       </listitem>
368      </varlistentry>
369     </variablelist>
370    </para>
371   </sect2>
372
373   <sect2>
374    <title>Migration to version 7.2</title>
375
376    <para>
377     A dump/restore using <command>pg_dump</command> is required for
378     those wishing to migrate data from any previous release.
379    </para>
380
381    <para>
382     Observe the following incompatibilities:
383
384     <itemizedlist>
385      <listitem>
386       <para>
387        The semantics of the <command>VACUUM</command> command have
388        changed in this release.  You may wish to update your
389        maintenance procedures accordingly.
390       </para>
391      </listitem>
392
393      <listitem>
394       <para>
395        In this release, comparisons using <literal>= NULL</literal>
396        will always return false (or NULL, more precisely).  Previous
397        releases automatically transformed this syntax to <literal>IS
398        NULL</literal>.  The old behavior can be re-enabled using a
399        <filename>postgresql.conf</filename> parameter.
400       </para>
401      </listitem>
402
403      <listitem>
404       <para>
405        The <filename>pg_hba.conf</> and <filename>pg_ident.conf</>
406        configuration is now only reloaded after receiving a
407        <systemitem>SIGHUP</> signal, not with each connection.
408       </para>
409      </listitem>
410
411      <listitem>
412       <para>
413        The function <filename>octet_length()</> now returns the uncompressed data length.
414       </para>
415      </listitem>
416
417      <listitem>
418       <para>
419        The date/time value <literal>'current'</literal> is no longer
420        available.  You will need to rewrite your applications.
421       </para>
422      </listitem>
423
424      <listitem>
425       <para>
426        The <literal>timestamp()</literal>, <literal>time()</literal>,
427        and <literal>interval()</literal> functions are no longer
428        available.  Instead of <literal>timestamp()</literal>, use 
429        <literal>timestamp 'string'</literal> or <literal>CAST</literal>.
430       </para>
431      </listitem>
432
433
434
435     </itemizedlist>
436    </para>
437
438    <para>
439     The <literal>SELECT ... LIMIT #,#</literal> syntax will be removed
440     in the next release. You should change your queries to use
441     separate LIMIT and OFFSET clauses, e.g. <literal>LIMIT 10 OFFSET
442     20</literal>.
443    </para>
444   </sect2>
445
446   <sect2>
447    <title>Changes</title>
448
449    <sect3>
450     <title>Server Operation</title>
451 <literallayout>
452 Create temporary files in a separate directory (Bruce)
453 Delete orphaned temporary files on postmaster startup (Bruce)
454 Added unique indexes to some system tables (Tom)
455 System table operator reorganization (Oleg Bartunov, Teodor Sigaev, Tom)
456 Renamed pg_log to pg_clog (Tom)
457 Enable SIGTERM, SIGQUIT to kill backends (Jan)
458 Removed compile-time limit on number of backends (Tom)
459 Better cleanup for semaphore resource failure (Tatsuo, Tom)
460 Allow safe transaction ID wraparound (Tom)
461 Removed OIDs from some system tables (Tom)
462 Removed "triggered data change violation" error check (Tom)
463 SPI portal creation of prepared/saved plans (Jan)
464 Allow SPI column functions to work for system columns (Tom)
465 Long value compression improvement (Tom)
466 Statistics collector for table, index access (Jan)
467 Truncate extra-long sequence names to a reasonable value (Tom)
468 Measure transaction times in milliseconds (Thomas)
469 Fix TID sequential scans (Hiroshi)
470 Superuser ID now fixed at 1 (Peter E)
471 New pg_ctl "reload" option (Tom)
472 </literallayout>
473    </sect3>
474
475    <sect3>
476     <title>Performance</title>
477 <literallayout>
478 Optimizer improvements (Tom)
479 New histogram column statistics for optimizer (Tom)
480 Reuse write-ahead log files rather than discarding them (Tom)
481 Cache improvements (Tom)
482 IS NULL, IS NOT NULL optimizer improvement (Tom)
483 Improve lock manager to reduce lock contention (Tom)
484 Keep relcache entries for index access support functions (Tom)
485 Allow better selectivity with NaN and infinities in NUMERIC (Tom)
486 R-tree performance improvements (Kenneth Been)
487 B-tree splits more efficient (Tom)
488 </literallayout>
489    </sect3>
490
491    <sect3>
492     <title>Privileges</title>
493 <literallayout>
494 Change UPDATE, DELETE permissions to be distinct (Peter E)
495 New REFERENCES, TRIGGER privileges (Peter E)
496 Allow GRANT/REVOKE to/from more than one user at a time (Peter E)
497 New has_table_privilege() function (Joe Conway)
498 Allow non-superuser to vacuum database (Tom)
499 New SET SESSION AUTHORIZATION command (Peter E)
500 Fix bug in privilege modifications on newly created tables (Tom)
501 Disallow access to pg_statistic for non-superuser, add user-accessible views (Tom)
502 </literallayout>
503    </sect3>
504
505    <sect3>
506     <title>Client Authentication</title>
507 <literallayout>
508 Fork postmaster before doing authentication to prevent hangs (Peter E)
509 Add ident authentication over Unix domain sockets on Linux, *BSD (Helge Bahmann, Oliver Elphick, Teodor Sigaev, Bruce)
510 Add a password authentication method that uses MD5 encryption (Bruce)
511 Allow encryption of stored passwords using MD5 (Bruce)
512 PAM authentication (Dominic J. Eidson)
513 Load pg_hba.conf and pg_ident.conf only on startup and SIGHUP (Bruce)
514 </literallayout>
515    </sect3>
516
517    <sect3>
518     <title>Server Configuration</title>
519 <literallayout>
520 Interpretation of some time zone abbreviations as Australian rather than North American now settable at run time (Bruce)
521 New parameter to set default transaction isolation level (Peter E)
522 New parameter to enable conversion of "expr = NULL" into "expr IS NULL", off by default (Peter E)
523 New parameter to control memory usage by VACUUM (Tom)
524 New parameter to set client authentication timeout (Tom)
525 New parameter to set maximum number of open files (Tom)
526 </literallayout>
527    </sect3>
528
529    <sect3>
530     <title>Queries</title>
531 <literallayout>
532 Statements added by INSERT rules now execute after the INSERT (Jan)
533 Prevent unadorned relation names in target list (Bruce)
534 NULLs now sort after all normal values in ORDER BY (Tom)
535 New IS UNKNOWN, IS NOT UNKNOWN Boolean tests (Tom)
536 New SHARE UPDATE EXCLUSIVE lock mode (Tom)
537 New EXPLAIN ANALYZE command that shows run times and row counts (Martijn van Oosterhout)
538 Fix problem with LIMIT and subqueries (Tom)
539 Fix for LIMIT, DISTINCT ON pushed into subqueries (Tom)
540 Fix nested EXCEPT/INTERSECT (Tom)
541 </literallayout>
542    </sect3>
543
544    <sect3>
545     <title>Schema Manipulation</title>
546 <literallayout>
547 Fix SERIAL in temporary tables (Bruce)
548 Allow temporary sequences (Bruce)
549 Sequences now use int8 internally (Tom)
550 New SERIAL8 creates int8 columns with sequences, default still SERIAL4 (Tom)
551 Make OIDs optional using WITHOUT OIDS (Tom)
552 Add %TYPE syntax to CREATE TYPE (Ian Lance Taylor)
553 Add ALTER TABLE / DROP CONSTRAINT for CHECK constraints (Christopher Kings-Lynne)
554 New CREATE OR REPLACE FUNCTION to alter existing function (preserving the function OID) (Gavin Sherry)
555 Add ALTER TABLE / ADD [ UNIQUE | PRIMARY ] (Christopher Kings-Lynne)
556 Allow column renaming in views
557 Make ALTER TABLE / RENAME COLUMN update column names of indexes (Brent Verner)
558 Fix for ALTER TABLE / ADD CONSTRAINT ... CHECK with inherited tables (Stephan Szabo)
559 ALTER TABLE RENAME update foreign-key trigger arguments correctly (Brent Verner)
560 DROP AGGREGATE and COMMENT ON AGGREGATE now accept an aggtype (Tom)
561 Add automatic return type data casting for SQL functions (Tom)
562 Allow GiST indexes to handle NULLs and multikey indexes (Oleg Bartunov, Teodor Sigaev, Tom)
563 Enable partial indexes (Martijn van Oosterhout)
564 </literallayout>
565    </sect3>
566
567    <sect3>
568     <title>Utility Commands</title>
569 <literallayout>
570 Add RESET ALL, SHOW ALL (Marko Kreen)
571 CREATE/ALTER USER/GROUP now allow options in any order (Vince)
572 Add LOCK A, B, C functionality (Neil Padgett)
573 New ENCRYPTED/UNENCRYPTED option to CREATE/ALTER USER (Bruce)
574 New light-weight VACUUM does not lock table; old semantics are available as VACUUM FULL (Tom)
575 Disable COPY TO/FROM on views (Bruce)
576 COPY DELIMITERS string must be exactly one character (Tom)
577 VACUUM warning about index tuples fewer than heap now only appears when appropriate (Martijn van Oosterhout)
578 Fix permission checks for CREATE INDEX (Tom)
579 Disallow inappropriate use of CREATE/DROP INDEX/TRIGGER/VIEW (Tom)
580 </literallayout>
581    </sect3>
582
583    <sect3>
584     <title>Data Types and Functions</title>
585 <literallayout>
586 SUM(), AVG(), COUNT() now uses int8 internally for speed (Tom)
587 Add convert(), convert2() (Tatsuo)
588 New function bit_length() (Peter E)
589 Make the "n" in CHAR(n)/VARCHAR(n) represents letters, not bytes (Tatsuo)
590 CHAR(), VARCHAR() now reject strings that are too long (Peter E)
591 BIT VARYING now rejects bit strings that are too long (Peter E)
592 BIT now rejects bit strings that do not match declared size (Peter E)
593 INET, CIDR text conversion functions (Alex Pilosov)
594 INET, CIDR operators << and <<= indexable (Alex Pilosov)
595 Bytea \### now requires valid three digit octal number
596 Bytea comparison improvements, now supports =, &lt;&gt;, >, >=, <, and <=
597 Bytea now supports B-tree indexes
598 Bytea now supports LIKE, LIKE...ESCAPE, NOT LIKE, NOT LIKE...ESCAPE
599 Bytea now supports concatenation
600 New bytea functions: position, substring, trim, btrim, and length
601 New encode() function mode, "escaped", converts minimally escaped bytea to/from text
602 Add pg_database_encoding_max_length() (Tatsuo)
603 Add pg_client_encoding() function (Tatsuo)
604 now() returns time with millisecond precision (Thomas)
605 New TIMESTAMP WITHOUT TIMEZONE data type (Thomas)
606 Add ISO date/time specification with "T", yyyy-mm-ddThh:mm:ss (Thomas)
607 New xid/int comparison functions (Hiroshi)
608 Add precision to TIME, TIMESTAMP, and INVERVAL data types (Thomas)
609 Modify type coercion logic to attempt binary-compatible functions first (Tom)
610 New encode() function installed by default (Marko Kreen)
611 Improved to_*() conversion functions (Karel Zak)
612 Optimize LIKE/ILIKE when using single-byte encodings (Tatsuo)
613 New functions in contrib/pgcrypto: crypt(), hmac(), encrypt(), gen_salt() (Marko Kreen)
614 Correct description of translate() function (Bruce)
615 Add INTERVAL argument for SET TIME ZONE (Thomas)
616 Add INTERVAL YEAR TO MONTH (etc.) syntax (Thomas)
617 Optimize length functions when using single-byte encodings (Tatsuo)
618 Fix path_inter, path_distance, path_length, dist_ppath to handle closed paths (Curtis Barrett, Tom)
619 octet_length(text) now returns non-compressed length (Tatsuo, Bruce)
620 Handle "July" full name in date/time literals (Greg Sabino Mullane)
621 Some datatype() function calls now evaluated differently
622 Add support for Julian and ISO time specifications (Thomas)
623 </literallayout>
624    </sect3>
625
626    <sect3>
627     <title>Internationalization</title>
628 <literallayout>
629 National language support in psql, pg_dump, libpq, and server (Peter E)
630 Message translations in Chinese (simplified, traditional), Czech, French, German, Hungarian, Russian, Swedish (Peter E, Serguei A. Mokhov, Karel Zak, Weiping He, Zhenbang Wei, Kovacs Zoltan)
631 Make trim, ltrim, rtrim, btrim, lpad, rpad, translate multibyte aware (Tatsuo)
632 Add LATIN5,6,7,8,9,10 support (Tatsuo)
633 Add ISO 8859-5,6,7,8 support (Tatsuo)
634 Correct LATIN5 to mean ISO-8859-9, not ISO-8859-5 (Tatsuo)
635 Make mic2ascii() non-ASCII aware (Tatsuo)
636 Reject invalid multibyte character sequences (Tatsuo)
637 </literallayout>
638    </sect3>
639
640    <sect3>
641     <title><application>PL/pgSQL</></title>
642 <literallayout>
643 Now uses portals for SELECT loops, allowing huge result sets (Jan)
644 CURSOR and REFCURSOR support (Jan)
645 Can now return open cursors (Jan)
646 Add ELSEIF (Klaus Reger)
647 Improve PL/pgSQL error reporting, including location of error (Tom)
648 Allow IS or FOR key words in cursor declaration, for compatibility (Bruce)
649 Fix for SELECT ... FOR UPDATE (Tom)
650 Fix for PERFORM returning multiple rows (Tom)
651 Make PL/pgSQL use the server's type coercion code (Tom)
652 Memory leak fix (Jan, Tom)
653 Make trailing semicolon optional (Tom)
654 </literallayout>
655    </sect3>
656
657    <sect3>
658     <title>PL/Perl</title>
659 <literallayout>
660 New untrusted PL/Perl (Alex Pilosov)
661 PL/Perl is now built on some platforms even if libperl is not shared (Peter E)
662 </literallayout>
663     </sect3>
664
665    <sect3>
666     <title>PL/Tcl</title>
667 <literallayout>
668 Now reports errorInfo (Vsevolod Lobko)
669 Add spi_lastoid function (bob@redivi.com)
670 </literallayout>
671    </sect3>
672
673    <sect3>
674     <title>PL/Python</title>
675 <literallayout>
676 ...is new (Andrew Bosma)
677 </literallayout>
678    </sect3>
679
680    <sect3>
681     <title><application>Psql</></title>
682 <literallayout>
683 \d displays indexes in unique, primary groupings (Christopher Kings-Lynne)
684 Allow trailing semicolons in backslash commands (Greg Sabino Mullane)
685 Read password from /dev/tty if possible
686 Force new password prompt when changing user and database (Tatsuo, Tom)
687 Format the correct number of columns for Unicode (Patrice)
688 </literallayout>
689    </sect3>
690
691    <sect3>
692     <title><application>Libpq</></title>
693 <literallayout>
694 New function PQescapeString() to escape quotes in command strings (Florian Weimer)
695 New function PQescapeBytea() escapes binary strings for use as SQL string literals
696 </literallayout>
697    </sect3>
698
699    <sect3>
700     <title>JDBC</title>
701 <literallayout>
702 Return OID of INSERT (Ken K)
703 Handle more data types (Ken K)
704 Handle single quotes and newlines in strings (Ken K)
705 Handle NULL variables (Ken K)
706 Fix for time zone handling (Barry Lind)
707 Improved Druid support
708 Allow eight-bit characters with non-multibyte server (Barry Lind)
709 Support BIT, BINARY types (Ned Wolpert)
710 Reduce memory usage (Michael Stephens, Dave Cramer)
711 Update DatabaseMetaData (Peter E)
712 Add DatabaseMetaData.getCatalogs() (Peter E)
713 Encoding fixes (Anders Bengtsson)
714 Get/setCatalog methods (Jason Davies)
715 DatabaseMetaData.getColumns() now returns column defaults (Jason Davies)
716 DatabaseMetaData.getColumns() performance improvement (Jeroen van Vianen)
717 Some JDBC1 and JDBC2 merging (Anders Bengtsson)
718 Transaction performance improvements (Barry Lind)
719 Array fixes (Greg Zoller)
720 Serialize addition 
721 Fix batch processing (Rene Pijlman)
722 ExecSQL method reorganization (Anders Bengtsson)
723 GetColumn() fixes (Jeroen van Vianen)
724 Fix isWriteable() function (Rene Pijlman)
725 Improved passage of JDBC2 conformance tests (Rene Pijlman)
726 Add bytea type capability (Barry Lind)
727 Add isNullable() (Rene Pijlman)
728 JDBC date/time test suite fixes (Liam Stewart)
729 Fix for SELECT 'id' AS xxx FROM table (Dave Cramer)
730 Fix DatabaseMetaData to show precision properly (Mark Lillywhite)
731 New getImported/getExported keys (Jason Davies)
732 MD5 password encryption support (Jeremy Wohl)
733 Fix to actually use type cache (Ned Wolpert)
734 </literallayout>
735    </sect3>
736
737    <sect3>
738     <title>ODBC</title>
739 <literallayout>
740 Remove query size limit (Hiroshi)
741 Remove text field size limit (Hiroshi)
742 Fix for SQLPrimaryKeys in multibyte mode (Hiroshi)
743 Allow ODBC procedure calls (Hiroshi)
744 Improve boolean handing (Aidan Mountford)
745 Most configuration options on setable via DSN (Hiroshi)
746 Multibyte, performance fixes (Hiroshi)
747 Allow driver to be used with iODBC or unixODBC (Peter E)
748 MD5 password encryption support (Bruce)
749 Add more compatibility functions to odbc.sql (Peter E)
750 </literallayout>
751    </sect3>
752
753    <sect3>
754     <title><application>ECPG</></title>
755 <literallayout>
756 EXECUTE ... INTO implemented (Christof Petig)
757 Multiple row descriptor support (e.g. CARDINALITY) (Christof Petig)
758 Fix for GRANT parameters (Lee Kindness)
759 Fix INITIALLY DEFERRED bug
760 Various bug fixes (Michael, Christof Petig)
761 Auto allocation for indicator variable arrays (int *ind_p=NULL)
762 Auto allocation for string arrays (char **foo_pp=NULL)
763 ECPGfree_auto_mem fixed
764 All function names with external linkage are now prefixed by ECPG
765 Fixes for arrays of structures (Michael)
766 </literallayout>
767    </sect3>
768
769    <sect3>
770     <title>Misc. Interfaces</title>
771 <literallayout>
772 Python fix fetchone() (Gerhard Haring)
773 Use UTF, Unicode in Tcl where appropriate (Vsevolod Lobko, Reinhard Max)
774 Add Tcl COPY TO/FROM (ljb)
775 Prevent output of default index op class in pg_dump (Tom)
776 Fix libpgeasy memory leak (Bruce)
777 </literallayout>
778    </sect3>
779
780    <sect3>
781     <title>Build and Install</title>
782 <literallayout>
783 Configure, dynamic loader, and shared library fixes (Peter E)
784 Fixes in QNX 4 port (Bernd Tegge)
785 Fixes in Cygwin and Win32 ports (Jason Tishler, Gerhard Haring, Dmitry Yurtaev, Darko Prenosil, Mikhail Terekhov)
786 Fix for Win32 socket communication failures (Magnus, Mikhail Terekhov)
787 Hurd compile fix (Oliver Elphick)
788 BeOS fixes (Cyril Velter)
789 Remove configure --enable-unicode-conversion, now enabled by multibyte (Tatsuo)
790 AIX fixes (Tatsuo, Andreas)
791 Fix parallel make (Peter E)
792 Install SQL language manual pages into OS-specific directories (Peter E)
793 Rename config.h to pg_config.h (Peter E)
794 Reorganize installation layout of header files (Peter E)
795 </literallayout>
796    </sect3>
797
798    <sect3>
799     <title>Source Code</title>
800 <literallayout>
801 Remove SEP_CHAR (Bruce)
802 New GUC hooks (Tom)
803 Merge GUC and command line handling (Marko Kreen)
804 Remove EXTEND INDEX (Martijn van Oosterhout, Tom)
805 New pgjindent utility to indent java code (Bruce)
806 Remove define of true/false when compiling under C++ (Leandro Fanzone, Tom)
807 pgindent fixes (Bruce, Tom)
808 Replace strcasecmp() with strcmp() where appropriate (Peter E)
809 Dynahash portability improvements (Tom)
810 Add 'volatile' usage in spinlock structures
811 Improve signal handling logic (Tom)
812 </literallayout>
813    </sect3>
814
815    <sect3>
816     <title>Contrib</title>
817 <literallayout>
818 New contrib/rtree_gist (Oleg Bartunov, Teodor Sigaev)
819 New contrib/tsearch full-text indexing (Oleg, Teodor Sigaev)
820 Add contrib/dblink for remote database access (Joe Conway)
821 contrib/ora2pg Oracle conversion utility (Gilles Darold)
822 contrib/xml XML conversion utility (John Gray)
823 contrib/fulltextindex fixes (Christopher Kings-Lynne)
824 New contrib/fuzzystrmatch with levenshtein and metaphone, soundex merged (Joe Conway)
825 Add contrib/intarray boolean queries, binary search, fixes (Oleg Bartunov)
826 New pg_upgrade utility (Bruce)
827 Add new pg_resetxlog options (Bruce, Tom)
828 </literallayout>
829    </sect3>
830   </sect2>
831  </sect1>
832
833
834   <sect1 id="release-7-1-3">
835    <title>Release 7.1.3</title>
836
837    <note>
838    <title>Release date</title>
839    <simpara>2001-08-15</simpara>
840    </note>
841
842    <sect2>
843     <title>Migration to version 7.1.3</title>
844
845     <para>
846      A dump/restore is <emphasis>not</emphasis> required for those running
847      7.1.X.
848     </para>
849    </sect2>
850
851    <sect2>
852     <title>Changes</title>
853
854     <para>
855      <programlisting>
856 Remove unused WAL segements of large transactions (Tom)
857 Multiaction rule fix (Tom)
858 PL/pgSQL memory allocation fix (Jan)
859 VACUUM buffer fix (Tom)
860 Regression test fixes (Tom)
861 pg_dump fixes for GRANT/REVOKE/comments on views, user-defined types (Tom)
862 Fix subselects with DISTINCT ON or LIMIT (Tom)
863 BeOS fix
864 Disable COPY TO/FROM a view (Tom)
865 Cygwin build (Jason Tishler)
866      </programlisting>
867     </para>
868    </sect2>
869   </sect1>
870
871
872   <sect1 id="release-7-1-2">
873    <title>Release 7.1.2</title>
874
875    <note>
876    <title>Release date</title>
877    <simpara>2001-05-11</simpara>
878    </note>
879
880    <para>
881     This has one fix from 7.1.1.
882    </para>
883
884
885    <sect2>
886     <title>Migration to version 7.1.2</title>
887
888     <para>
889      A dump/restore is <emphasis>not</emphasis> required for those running
890      7.1.X.
891     </para>
892    </sect2>
893
894    <sect2>
895     <title>Changes</title>
896
897     <para>
898      <programlisting>
899 Fix PL/pgSQL SELECTs when returning no rows
900 Fix for psql backslash core dump
901 Referential integrity permission fix
902 Optimizer fixes
903 pg_dump cleanups 
904      </programlisting>
905     </para>
906    </sect2>
907   </sect1>
908
909
910   <sect1 id="release-7-1-1">
911    <title>Release 7.1.1</title>
912
913    <note>
914    <title>Release date</title>
915    <simpara>2001-05-05</simpara>
916    </note>
917
918    <para>
919     This has a variety of fixes from 7.1.
920    </para>
921
922
923    <sect2>
924     <title>Migration to version 7.1.1</title>
925
926     <para>
927      A dump/restore is <emphasis>not</emphasis> required for those running
928      7.1.
929     </para>
930    </sect2>
931
932    <sect2>
933     <title>Changes</title>
934
935     <para>
936      <programlisting>
937 Fix for numeric MODULO operator (Tom)
938 pg_dump fixes (Philip)
939 pg_dump can dump 7.0 databases (Philip)
940 readline 4.2 fixes (Peter E)
941 JOIN fixes (Tom)
942 AIX, MSWIN, VAX, N32K fixes (Tom)
943 Multibytes fixes (Tom)
944 Unicode fixes (Tatsuo)
945 Optimizer improvements (Tom)
946 Fix for whole tuples in functions (Tom)
947 Fix for pg_ctl and option strings with spaces (Peter E)
948 ODBC fixes (Hiroshi)
949 EXTRACT can now take string argument (Thomas)
950 Python fixes (Darcy)
951      </programlisting>
952     </para>
953    </sect2>
954   </sect1>
955
956
957   <sect1 id="release-7-1">
958    <title>Release 7.1</title>
959
960    <note>
961    <title>Release date</title>
962    <simpara>2001-04-13</simpara>
963    </note>
964
965    <para>
966         This release focuses on removing limitations that have existed in the
967         PostgreSQL code for many years.
968    </para>
969
970    <para>
971     Major changes in this release:
972
973     <variablelist>
974      <varlistentry>
975       <term>
976         Write-ahead Log (WAL)
977       </term>
978       <listitem>
979        <para>
980 To maintain database consistency in case
981 of an operating system crash, previous releases of PostgreSQL have
982 forced all data modifications to disk before each transaction commit. 
983 With WAL, only one log file must be flushed to disk, greatly improving
984 performance.  If you have been using -F in previous releases to disable
985 disk flushes, you may want to consider discontinuing its use.
986        </para>
987       </listitem>
988      </varlistentry>
989
990      <varlistentry>
991       <term>
992         TOAST
993       </term>
994       <listitem>
995        <para>
996         TOAST - Previous releases had a compiled-in row length limit,
997 typically 8k - 32k. This limit made storage of long text fields
998 difficult.  With TOAST, long rows of any length can be stored with good
999 performance.
1000        </para>
1001       </listitem>
1002      </varlistentry>
1003
1004      <varlistentry>
1005       <term>
1006         Outer Joins
1007       </term>
1008       <listitem>
1009        <para>
1010 We now support outer joins.  The UNION/NOT IN
1011 workaround for outer joins is no longer required.  We use the SQL92
1012 outer join syntax.
1013        </para>
1014       </listitem>
1015      </varlistentry>
1016
1017      <varlistentry>
1018       <term>
1019         Function Manager
1020       </term>
1021       <listitem>
1022        <para>
1023 The previous C function manager did not
1024 handle null values properly, nor did it support 64-bit <acronym>CPU</acronym>'s (Alpha).  The new
1025 function manager does.  You can continue using your old custom
1026 functions, but you may want to rewrite them in the future to use the new
1027 function manager call interface.
1028        </para>
1029       </listitem>
1030      </varlistentry>
1031
1032      <varlistentry>
1033       <term>
1034         Complex Queries
1035       </term>
1036       <listitem>
1037        <para>
1038 A large number of complex queries that were
1039 unsupported in previous releases now work.  Many combinations of views,
1040 aggregates, UNION, LIMIT, cursors, subqueries, and inherited tables
1041 now work properly. Inherited tables are now accessed by default. 
1042 Subqueries in FROM are now supported.
1043        </para>
1044       </listitem>
1045      </varlistentry>
1046
1047     </variablelist>
1048    </para>
1049
1050    <sect2>
1051     <title>Migration to version 7.1</title>
1052
1053     <para>
1054         A dump/restore using pg_dump is required for those wishing to migrate
1055         data from any previous release.
1056     </para>
1057    </sect2>
1058
1059    <sect2>
1060     <title>Changes</title>
1061
1062     <para>
1063      <programlisting>
1064 Bug Fixes
1065 ---------
1066 Many multibyte/Unicode/locale fixes (Tatsuo and others)
1067 More reliable ALTER TABLE RENAME (Tom)
1068 Kerberos V fixes (David Wragg)
1069 Fix for INSERT INTO...SELECT where targetlist has subqueries (Tom)
1070 Prompt username/password on standard error (Bruce)
1071 Large objects inv_read/inv_write fixes (Tom)
1072 Fixes for to_char(), to_date(), to_ascii(), and to_timestamp() (Karel, 
1073     Daniel Baldoni)
1074 Prevent query expressions from leaking memory (Tom)
1075 Allow UPDATE of arrays elements (Tom)
1076 Wake up lock waiters during cancel (Hiroshi)
1077 Fix rare cursor crash when using hash join (Tom)
1078 Fix for DROP TABLE/INDEX in rolled-back transaction (Hiroshi)
1079 Fix psql crash from \l+ if MULTIBYTE enabled (Peter E)
1080 Fix truncation of rule names during CREATE VIEW (Ross Reedstrom)
1081 Fix PL/perl (Alex Kapranoff)
1082 Disallow LOCK on views (Mark Hollomon)
1083 Disallow INSERT/UPDATE/DELETE on views (Mark Hollomon)
1084 Disallow DROP RULE, CREATE INDEX, TRUNCATE on views (Mark Hollomon)
1085 Allow PL/pgSQL accept non-ASCII identifiers (Tatsuo)
1086 Allow views to proper handle GROUP BY, aggregates, DISTINCT (Tom)
1087 Fix rare failure with TRUNCATE command (Tom)
1088 Allow UNION/INTERSECT/EXCEPT to be used with ALL, subqueries, views, 
1089     DISTINCT, ORDER BY, SELECT...INTO (Tom)
1090 Fix parser failures during aborted transactions (Tom)
1091 Allow temporary relations to properly clean up indexes (Bruce)
1092 Fix VACUUM problem with moving rows in same page (Tom)
1093 Modify pg_dump to better handle user-defined items in template1 (Philip)
1094 Allow LIMIT in VIEW (Tom)
1095 Require cursor FETCH to honor LIMIT (Tom)
1096 Allow PRIMARY/FOREIGN Key definitions on inherited columns (Stephan)
1097 Allow ORDER BY, LIMIT in sub-selects (Tom)
1098 Allow UNION in CREATE RULE (Tom)
1099 Make ALTER/DROP TABLE rollback-able (Vadim, Tom)
1100 Store initdb collation in pg_control so collation cannot be changed (Tom)
1101 Fix INSERT...SELECT with rules (Tom)
1102 Fix FOR UPDATE inside views and subselects (Tom)
1103 Fix OVERLAPS operators conform to SQL92 spec regarding NULLs (Tom)
1104 Fix lpad() and rpad() to handle length less than input string (Tom)
1105 Fix use of NOTIFY in some rules (Tom)
1106 Overhaul btree code (Tom)
1107 Fix NOT NULL use in Pl/pgSQL variables (Tom)
1108 Overhaul GIST code (Oleg)
1109 Fix CLUSTER to preserve constraints and column default (Tom)
1110 Improved deadlock detection handling (Tom)
1111 Allow multiple SERIAL columns in a table (Tom)
1112 Prevent occasional index corruption (Vadim)
1113
1114 Enhancements
1115 ------------
1116 Add OUTER JOINs (Tom)
1117 Function manager overhaul (Tom)
1118 Allow ALTER TABLE RENAME on indexes (Tom)
1119 Improve CLUSTER (Tom)
1120 Improve ps status display for more platforms (Peter E, Marc)
1121 Improve CREATE FUNCTION failure message (Ross)
1122 JDBC improvements (Peter, Travis Bauer, Christopher Cain, William Webber,
1123     Gunnar)
1124 Grand Unified Configuration scheme/GUC.  Many options can now be set in 
1125     data/postgresql.conf, postmaster/postgres flags, or SET commands (Peter E)
1126 Improved handling of file descriptor cache (Tom)
1127 New warning code about auto-created table alias entries (Bruce)
1128 Overhaul initdb process (Tom, Peter E)
1129 Overhaul of inherited tables; inherited tables now accessed by default;
1130    new ONLY keyword prevents it (Chris Bitmead, Tom)
1131 ODBC cleanups/improvements (Nick Gorham, Stephan Szabo, Zoltan Kovacs, 
1132     Michael Fork)
1133 Allow renaming of temp tables (Tom)
1134 Overhaul memory manager contexts (Tom)
1135 pg_dumpall uses CREATE USER or CREATE GROUP rather using COPY (Peter E)
1136 Overhaul pg_dump (Philip Warner)
1137 Allow pg_hba.conf secondary password file to specify only username (Peter E)
1138 Allow TEMPORARY or TEMP keyword when creating temporary tables (Bruce)
1139 New memory leak checker (Karel)
1140 New SET SESSION CHARACTERISTICS (Thomas)
1141 Allow nested block comments (Thomas)
1142 Add WITHOUT TIME ZONE type qualifier (Thomas)
1143 New ALTER TABLE ADD CONSTRAINT (Stephan)
1144 Use NUMERIC accumulators for INTEGER aggregates (Tom)
1145 Overhaul aggregate code (Tom)
1146 New VARIANCE and STDDEV() aggregates
1147 Improve dependency ordering of pg_dump (Philip)
1148 New pg_restore command (Philip)
1149 New pg_dump tar output option (Philip)
1150 New pg_dump of large objects  (Philip)
1151 New ESCAPE option to LIKE (Thomas)
1152 New case-insensitive LIKE - ILIKE (Thomas)
1153 Allow functional indexes to use binary-compatible type (Tom)
1154 Allow SQL functions to be used in more contexts (Tom)
1155 New pg_config utility (Peter E)
1156 New PL/pgSQL EXECUTE command which allows dynamic SQL and utility statements
1157     (Jan)
1158 New PL/pgSQL GET DIAGNOSTICS statement for SPI value access (Jan)
1159 New quote_identifiers() and quote_literal() functions (Jan)
1160 New ALTER TABLE table OWNER TO user command (Mark Hollomon)
1161 Allow subselects in FROM, i.e. FROM (SELECT ...) [AS] alias (Tom)
1162 Update PyGreSQL to version 3.1 (D'Arcy)
1163 Store tables as files named by OID (Vadim)
1164 New SQL function setval(seq,val,bool) for use in pg_dump (Philip)
1165 Require DROP VIEW to remove views, no DROP TABLE (Mark)
1166 Allow DROP VIEW view1, view2 (Mark)
1167 Allow multiple objects in DROP INDEX, DROP RULE, and DROP TYPE (Tom)
1168 Allow automatic conversion to/from Unicode (Tatsuo, Eiji)
1169 New /contrib/pgcrypto hashing functions (Marko Kreen)
1170 New pg_dumpall --globals-only option (Peter E)
1171 New CHECKPOINT command for WAL which creates new WAL log file (Vadim)
1172 New AT TIME ZONE syntax (Thomas)
1173 Allow location of Unix domain socket to be configurable (David J. MacKenzie)
1174 Allow postmaster to listen on a specific IP address (David J. MacKenzie)
1175 Allow socket path name to be specified in hostname by using leading slash
1176     (David J. MacKenzie)
1177 Allow CREATE DATABASE to specify template database (Tom)
1178 New utility to convert MySQL schema dumps to SQL92 and PostgreSQL (Thomas)
1179 New /contrib/rserv replication toolkit (Vadim)
1180 New file format for COPY BINARY (Tom)
1181 New /contrib/oid2name to map numeric files to table names (B Palmer)
1182 New "idle in transaction" ps status message (Marc)
1183 Update to pgaccess 0.98.7 (Constantin Teodorescu)
1184 pg_ctl now defaults to -w (wait) on shutdown, new -l (log) option
1185 Add rudimentary dependency checking to pg_dump (Philip)
1186
1187 Types
1188 -----
1189 Fix INET/CIDR type ordering and add new functions (Tom)
1190 Make OID behave as an unsigned type (Tom)
1191 Allow BIGINT as synonym for INT8 (Peter E)
1192 New int2 and int8 comparison operators (Tom)
1193 New BIT and BIT VARYING types (Adriaan Joubert, Tom, Peter E)
1194 CHAR() no longer faster than VARCHAR() because of TOAST (Tom)
1195 New GIST seg/cube examples (Gene Selkov)
1196 Improved round(numeric) handling (Tom)
1197 Fix CIDR output formatting (Tom)
1198 New CIDR abbrev() function (Tom)
1199
1200 Performance
1201 -----------
1202 Write-Ahead Log (WAL) to provide crash recovery with less performance 
1203     overhead (Vadim)
1204 ANALYZE stage of VACUUM no longer exclusively locks table (Bruce)
1205 Reduced file seeks (Denis Perchine)
1206 Improve BTREE code for duplicate keys (Tom)
1207 Store all large objects in a single table (Denis Perchine, Tom)
1208 Improve memory allocation performance (Karel, Tom)
1209
1210 Source Code
1211 -----------
1212 New function manager call conventions (Tom)
1213 SGI portability fixes (David Kaelbling)
1214 New configure --enable-syslog option (Peter E)
1215 New BSDI README (Bruce)
1216 configure script moved to top level, not /src (Peter E)
1217 Makefile/configuration/compilation overhaul (Peter E)
1218 New configure --with-python option (Peter E)
1219 Solaris cleanups (Peter E)
1220 Overhaul /contrib Makefiles (Karel)
1221 New OpenSSL configuration option (Magnus, Peter E)
1222 AIX fixes (Andreas)
1223 QNX fixes (Maurizio)
1224 New heap_open(), heap_openr() API (Tom)
1225 Remove colon and semi-colon operators (Thomas)
1226 New pg_class.relkind value for views (Mark Hollomon)
1227 Rename ichar() to chr() (Karel)
1228 New documentation for btrim(), ascii(), chr(), repeat() (Karel)
1229 Fixes for NT/Cygwin (Pete Forman)
1230 AIX port fixes (Andreas)
1231 New BeOS port (David Reid, Cyril Velter)
1232 Add proofreader's changes to docs (Addison-Wesley, Bruce)
1233 New Alpha spinlock code (Adriaan Joubert, Compaq)
1234 UnixWare port overhaul (Peter E)
1235 New Darwin/MacOS X port (Peter Bierman, Bruce Hartzler)
1236 New FreeBSD Alpha port (Alfred)
1237 Overhaul shared memory segments (Tom)
1238 Add IBM S/390 support (Neale Ferguson)
1239 Moved macmanuf to /contrib (Larry Rosenman)
1240 Syslog improvements (Larry Rosenman)
1241 New template0 database that contains no user additions (Tom)
1242 New /contrib/cube and /contrib/seg GIST sample code (Gene Selkov)
1243 Allow NetBSD's libedit instead of readline (Peter)
1244 Improved assembly language source code format (Bruce)
1245 New contrib/pg_logger
1246 New --template option to createdb
1247 New contrib/pg_control utility (Oliver)
1248 New FreeBSD tools ipc_check, start-scripts/freebsd
1249      </programlisting>
1250     </para>
1251    </sect2>
1252   </sect1>
1253
1254
1255   <sect1 id="release-7-0-3">
1256    <title>Release 7.0.3</title>
1257
1258    <note>
1259    <title>Release date</title>
1260    <simpara>2000-11-11</simpara>
1261    </note>
1262
1263    <para>
1264     This has a variety of fixes from 7.0.2.
1265    </para>
1266
1267
1268    <sect2>
1269     <title>Migration to version 7.0.3</title>
1270
1271     <para>
1272      A dump/restore is <emphasis>not</emphasis> required for those running
1273      7.0.*.
1274     </para>
1275    </sect2>
1276
1277    <sect2>
1278     <title>Changes</title>
1279
1280     <para>
1281      <programlisting>
1282 Jdbc fixes (Peter)
1283 Large object fix (Tom)
1284 Fix lean in COPY WITH OIDS leak (Tom)
1285 Fix backwards-index-scan (Tom)
1286 Fix SELECT ... FOR UPDATE so it checks for duplicate keys (Hiroshi)
1287 Add --enable-syslog to configure (Marc)
1288 Fix abort transaction at backend exit in rare cases (Tom)
1289 Fix for psql \l+ when multibyte enabled (Tatsuo)
1290 Allow PL/pgSQL to accept non ascii identifiers (Tatsuo)
1291 Make vacuum always flush buffers (Tom)
1292 Fix to allow cancel while waiting for a lock (Hiroshi)
1293 Fix for memory aloocation problem in user authentication code (Tom)
1294 Remove bogus use of int4out() (Tom)
1295 Fixes for multiple subqueries in COALESCE or BETWEEN (Tom)
1296 Fix for failure of triggers on heap open in certain cases (Jeroen van
1297     Vianen)
1298 Fix for erroneous selectivity of not-equals (Tom)
1299 Fix for erroneous use of strcmp() (Tom)
1300 Fix for bug where storage manager accesses items beyond end of file
1301     (Tom)
1302 Fix to include kernel errno message in all smgr elog messages (Tom)
1303 Fix for '.' not in PATH at build time (SL Baur)
1304 Fix for out-of-file-descriptors error (Tom)
1305 Fix to make pg_dump dump 'iscachable' flag for functions (Tom)
1306 Fix for subselect in targetlist of Append node (Tom)
1307 Fix for mergejoin plans (Tom)
1308 Fix TRUNCATE failure on relations with indexes (Tom)
1309 Avoid database-wide restart on write error (Hiroshi)
1310 Fix nodeMaterial to honor chgParam by recomputing its output (Tom)
1311 Fix VACUUM problem with moving chain of update tuples when source and
1312     destination of a tuple lie on the same page (Tom)
1313 Fix user.c CommandCounterIncrement (Tom)
1314 Fix for AM/PM boundary problem in to_char() (Karel Zak)
1315 Fix TIME aggregate handling (Tom)
1316 Fix to_char() to avoid coredump on NULL input (Tom)
1317 Buffer fix (Tom)
1318 Fix for inserting/copying longer multibyte strings into char() data
1319     types (Tatsuo)
1320 Fix for crash of backend, on abort (Tom)
1321      </programlisting>
1322     </para>
1323    </sect2>
1324   </sect1>
1325
1326
1327   <sect1 id="release-7-0-2">
1328    <title>Release 7.0.2</title>
1329
1330    <note>
1331    <title>Release date</title>
1332    <simpara>2000-06-05</simpara>
1333    </note>
1334
1335    <para>
1336     This is a repackaging of 7.0.1 with added documentation.
1337    </para>
1338
1339
1340    <sect2>
1341     <title>Migration to version 7.0.2</title>
1342
1343     <para>
1344      A dump/restore is <emphasis>not</emphasis> required for those running
1345      7.*.
1346     </para>
1347    </sect2>
1348
1349    <sect2>
1350     <title>Changes</title>
1351
1352     <para>
1353      <programlisting>
1354 Added documentation to tarball.
1355      </programlisting>
1356     </para>
1357    </sect2>
1358   </sect1>
1359
1360
1361   <sect1 id="release-7-0-1">
1362    <title>Release 7.0.1</title>
1363
1364    <note>
1365    <title>Release date</title>
1366    <simpara>2000-06-01</simpara>
1367    </note>
1368
1369    <para>
1370     This is a cleanup release for 7.0.
1371    </para>
1372
1373    <sect2>
1374     <title>Migration to version 7.0.1</title>
1375
1376     <para>
1377      A dump/restore is <emphasis>not</emphasis> required for those running
1378      7.0.
1379     </para>
1380    </sect2>
1381
1382    <sect2>
1383     <title>Changes</title>
1384
1385     <para>
1386      <programlisting>
1387 Fix many CLUSTER failures (Tom)
1388 Allow ALTER TABLE RENAME works on indexes (Tom)
1389 Fix plpgsql to handle datetime->timestamp and timespan->interval (Bruce)
1390 New configure --with-setproctitle switch to use setproctitle() (Marc, Bruce)
1391 Fix the off by one errors in ResultSet from 6.5.3, and more.
1392 jdbc ResultSet fixes (Joseph Shraibman)
1393 optimizer tunings (Tom)
1394 Fix create user for pgaccess
1395 Fix for UNLISTEN failure
1396 IRIX fixes (David Kaelbling)
1397 QNX fixes (Andreas Kardos)
1398 Reduce COPY IN lock level (Tom)
1399 Change libpqeasy to use PQconnectdb() style parameters (Bruce)
1400 Fix pg_dump to handle OID indexes (Tom)
1401 Fix small memory leak (Tom)
1402 Solaris fix for createdb/dropdb (Tatsuo)
1403 Fix for non-blocking connections (Alfred Perlstein)
1404 Fix improper recovery after RENAME TABLE failures (Tom)
1405 Copy pg_ident.conf.sample into /lib directory in install (Bruce)
1406 Add SJIS UDC (NEC selection IBM kanji) support (Eiji Tokuya)
1407 Fix too long syslog message (Tatsuo)
1408 Fix problem with quoted indexes that are too long (Tom)
1409 JDBC ResultSet.getTimestamp() fix (Gregory Krasnow & Floyd Marinescu)
1410 ecpg changes (Michael)
1411      </programlisting>
1412     </para>
1413    </sect2>
1414   </sect1>
1415
1416   <sect1 id="release-7-0">
1417    <title>Release 7.0</title>
1418
1419    <note>
1420    <title>Release date</title>
1421    <simpara>2000-05-08</simpara>
1422    </note>
1423
1424    <para> 
1425     This release contains improvements in many areas, demonstrating
1426     the continued growth of <productname>PostgreSQL</productname>.
1427     There are more improvements and fixes in 7.0 than in any previous
1428     release. The developers have confidence that this is the best
1429     release yet; we do our best to put out only solid releases, and
1430     this one is no exception.
1431    </para>
1432
1433    <para>
1434     Major changes in this release:
1435
1436     <variablelist>
1437      <varlistentry>
1438       <term>
1439        Foreign Keys
1440       </term>
1441       <listitem>
1442        <para>
1443         Foreign keys are now implemented, with the exception of PARTIAL MATCH
1444         foreign keys. Many users have been asking for this feature, and we are
1445         pleased to offer it.
1446        </para>
1447       </listitem>
1448      </varlistentry>
1449
1450      <varlistentry>
1451       <term>
1452        Optimizer Overhaul
1453       </term>
1454       <listitem>
1455        <para>
1456         Continuing on work started a year ago, the optimizer has been
1457         improved, allowing better query plan selection and faster performance
1458         with less memory usage.
1459        </para>
1460       </listitem>
1461      </varlistentry>
1462
1463      <varlistentry>
1464       <term>
1465        Updated <application>psql</application>
1466       </term>
1467       <listitem>
1468        <para>
1469         <application>psql</application>, our interactive terminal monitor, has been
1470         updated with a variety of new features. See the <application>psql</application> manual page for details.
1471        </para>
1472       </listitem>
1473      </varlistentry>
1474
1475      <varlistentry>
1476       <term>
1477        Join Syntax
1478       </term>
1479       <listitem>
1480        <para>
1481         SQL92 join syntax is now supported, though only as
1482         <literal>INNER JOIN</> for this release. <literal>JOIN</>,
1483         <literal>NATURAL JOIN</>, <literal>JOIN</>/<literal>USING</>,
1484         and <literal>JOIN</>/<literal>ON</> are available, as are
1485         column correlation names.
1486        </para>
1487       </listitem>
1488      </varlistentry>
1489
1490 <!--
1491      <varlistentry>
1492       <term>
1493        Upcoming Features
1494       </term>
1495       <listitem>
1496        <para>
1497         In 7.1 or 7.2, we plan to have outer joins, storage for very long rows, and a
1498         write-ahead logging system.
1499        </para>
1500       </listitem>
1501      </varlistentry>
1502 -->
1503     </variablelist>
1504    </para>
1505
1506    <sect2>
1507     <title>Migration to version 7.0</title>
1508
1509     <para>
1510      A dump/restore using <application>pg_dump</application>
1511      is required for those wishing to migrate data from any
1512      previous release of <productname>PostgreSQL</productname>.
1513      For those upgrading from 6.5.*, you may instead use 
1514      <application>pg_upgrade</application> to upgrade to this
1515      release; however, a full dump/reload installation is always the
1516      most robust method for upgrades.
1517     </para>
1518
1519     <para>
1520      Interface and compatibility issues to consider for the new
1521      release include:
1522
1523      <itemizedlist>
1524       <listitem>
1525        <para>
1526         The date/time types <type>datetime</type> and
1527         <type>timespan</type> have been superseded by the
1528         SQL92-defined types <type>timestamp</type> and
1529         <type>interval</type>. Although there has been some effort to
1530         ease the transition by allowing
1531         <productname>PostgreSQL</productname> to recognize
1532         the deprecated type names and translate them to the new type
1533         names, this mechanism may not be completely transparent to
1534         your existing application.
1535        </para>
1536       </listitem>
1537
1538       <listitem>
1539        <para>
1540         The optimizer has been substantially improved in the area of
1541         query cost estimation. In some cases, this will result in
1542         decreased query times as the optimizer makes a better choice
1543         for the preferred plan. However, in a small number of cases,
1544         usually involving pathological distributions of data, your
1545         query times may go up. If you are dealing with large amounts
1546         of data, you may want to check your queries to verify
1547         performance.
1548        </para>
1549       </listitem>
1550
1551       <listitem>
1552        <para>
1553         The <acronym>JDBC</acronym> and <acronym>ODBC</acronym>
1554         interfaces have been upgraded and extended.
1555        </para>
1556       </listitem>
1557
1558       <listitem>
1559        <para>
1560         The string function <function>CHAR_LENGTH</function> is now a
1561         native function. Previous versions translated this into a call
1562         to <function>LENGTH</function>, which could result in
1563         ambiguity with other types implementing
1564         <function>LENGTH</function> such as the geometric types.
1565        </para>
1566       </listitem>
1567      </itemizedlist>
1568     </para>
1569
1570    </sect2>
1571
1572    <sect2>
1573     <title>Changes</title>
1574
1575     <para>
1576      <programlisting>
1577 Bug Fixes
1578 ---------
1579 Prevent function calls exceeding maximum number of arguments (Tom)
1580 Improve CASE construct (Tom)
1581 Fix SELECT coalesce(f1,0) FROM int4_tbl GROUP BY f1 (Tom)
1582 Fix SELECT sentence.words[0] FROM sentence GROUP BY sentence.words[0] (Tom)
1583 Fix GROUP BY scan bug (Tom)
1584 Improvements in SQL grammar processing (Tom)
1585 Fix for views involved in INSERT ... SELECT ... (Tom)
1586 Fix for SELECT a/2, a/2 FROM test_missing_target GROUP BY a/2 (Tom)
1587 Fix for subselects in INSERT ... SELECT (Tom)
1588 Prevent INSERT ... SELECT ... ORDER BY (Tom)
1589 Fixes for relations greater than 2GB, including vacuum
1590 Improve propagating system table changes to other backends (Tom)
1591 Improve propagating user table changes to other backends (Tom)
1592 Fix handling of temp tables in complex situations (Bruce, Tom)
1593 Allow table locking at table open, improving concurrent reliability (Tom)
1594 Properly quote sequence names in pg_dump (Ross J. Reedstrom)
1595 Prevent DROP DATABASE while others accessing
1596 Prevent any rows from being returned by GROUP BY if no rows processed (Tom)
1597 Fix SELECT COUNT(1) FROM table WHERE ...' if no rows matching WHERE (Tom)
1598 Fix pg_upgrade so it works for MVCC (Tom)
1599 Fix for SELECT ... WHERE x IN (SELECT ... HAVING SUM(x) &gt; 1) (Tom)
1600 Fix for "f1 datetime DEFAULT 'now'"  (Tom)
1601 Fix problems with CURRENT_DATE used in DEFAULT (Tom)
1602 Allow comment-only lines, and ;;; lines too. (Tom)
1603 Improve recovery after failed disk writes, disk full (Hiroshi)
1604 Fix cases where table is mentioned in FROM but not joined (Tom)
1605 Allow HAVING clause without aggregate functions (Tom)
1606 Fix for "--" comment and no trailing newline, as seen in perl interface
1607 Improve pg_dump failure error reports (Bruce)
1608 Allow sorts and hashes to exceed 2GB file sizes (Tom)
1609 Fix for pg_dump dumping of inherited rules (Tom)
1610 Fix for NULL handling comparisons (Tom)
1611 Fix inconsistent state caused by failed CREATE/DROP commands (Hiroshi)
1612 Fix for dbname with dash
1613 Prevent DROP INDEX from interfering with other backends (Tom)
1614 Fix file descriptor leak in verify_password()
1615 Fix for "Unable to identify an operator =$" problem
1616 Fix ODBC so no segfault if CommLog and Debug enabled (Dirk Niggemann)
1617 Fix for recursive exit call (Massimo)
1618 Fix for extra-long timezones (Jeroen van Vianen)
1619 Make pg_dump preserve primary key information (Peter E)
1620 Prevent databases with single quotes (Peter E)
1621 Prevent DROP DATABASE inside  transaction (Peter E)
1622 ecpg memory leak fixes (Stephen Birch)
1623 Fix for SELECT null::text, SELECT int4fac(null) and SELECT 2 + (null) (Tom)
1624 Y2K timestamp fix (Massimo)
1625 Fix for VACUUM 'HEAP_MOVED_IN was not expected' errors (Tom)
1626 Fix for views with tables/columns containing spaces  (Tom)
1627 Prevent permissions on indexes (Peter E)
1628 Fix for spinlock stuck problem when error is generated (Hiroshi)
1629 Fix ipcclean on Linux
1630 Fix handling of NULL constraint conditions (Tom)
1631 Fix memory leak in odbc driver (Nick Gorham)
1632 Fix for permission check on UNION tables (Tom)
1633 Fix to allow SELECT 'a' LIKE 'a' (Tom)
1634 Fix for SELECT 1 + NULL (Tom)
1635 Fixes to CHAR
1636 Fix log() on numeric type (Tom)
1637 Deprecate ':' and ';' operators
1638 Allow vacuum of temporary tables
1639 Disallow inherited columns with the same name as new columns
1640 Recover or force failure when disk space is exhausted (Hiroshi)
1641 Fix INSERT INTO ... SELECT with AS columns matching result columns
1642 Fix INSERT ... SELECT ... GROUP BY groups by target columns not source columns (Tom)
1643 Fix CREATE TABLE test (a char(5) DEFAULT text '', b int4) with INSERT (Tom)
1644 Fix UNION with LIMIT
1645 Fix CREATE TABLE x AS SELECT 1 UNION SELECT 2
1646 Fix CREATE TABLE test(col char(2) DEFAULT user)
1647 Fix mismatched types in CREATE TABLE ... DEFAULT
1648 Fix SELECT * FROM pg_class where oid in (0,-1)
1649 Fix SELECT COUNT('asdf') FROM pg_class WHERE oid=12
1650 Prevent user who can create databases can modifying pg_database table (Peter E)
1651 Fix btree to give a useful elog when key > 1/2 (page - overhead) (Tom)
1652 Fix INSERT of 0.0 into DECIMAL(4,4) field (Tom)
1653
1654 Enhancements
1655 ------------
1656 New CLI interface include file sqlcli.h, based on SQL3/SQL98
1657 Remove all limits on query length, row length limit still exists (Tom)
1658 Update jdbc protocol to 2.0 (Jens Glaser <email>jens@jens.de</email>)
1659 Add TRUNCATE command to quickly truncate relation (Mike Mascari)
1660 Fix to give super user and createdb user proper update catalog rights (Peter E)
1661 Allow ecpg bool variables to have NULL values (Christof)
1662 Issue ecpg error if NULL value for variable with no NULL indicator (Christof)
1663 Allow ^C to cancel COPY command (Massimo)
1664 Add SET FSYNC and SHOW PG_OPTIONS commands(Massimo)
1665 Function name overloading for dynamically-loaded C functions (Frankpitt)
1666 Add CmdTuples() to libpq++(Vince)
1667 New CREATE CONSTRAINT TRIGGER and SET CONSTRAINTS commands(Jan)
1668 Allow CREATE FUNCTION/WITH clause to be used for all language types
1669 configure --enable-debug adds -g (Peter E)
1670 configure --disable-debug removes -g (Peter E)
1671 Allow more complex default expressions (Tom)
1672 First real FOREIGN KEY constraint trigger functionality (Jan)
1673 Add FOREIGN KEY ... MATCH FULL ... ON DELETE CASCADE (Jan)
1674 Add FOREIGN KEY ... MATCH &lt;unspecified&gt; referential actions (Don Baccus)
1675 Allow WHERE restriction on ctid (physical heap location) (Hiroshi)
1676 Move pginterface from contrib to interface directory, rename to pgeasy (Bruce)
1677 Change pgeasy connectdb() parameter ordering (Bruce)
1678 Require SELECT DISTINCT target list to have all ORDER BY columns (Tom)
1679 Add Oracle's COMMENT ON command (Mike Mascari <email>mascarim@yahoo.com</email>)
1680 libpq's PQsetNoticeProcessor function now returns previous hook(Peter E)
1681 Prevent PQsetNoticeProcessor from being set to NULL (Peter E)
1682 Make USING in COPY optional (Bruce)
1683 Allow subselects in the target list (Tom)
1684 Allow subselects on the left side of comparison operators (Tom)
1685 New parallel regression test (Jan)
1686 Change backend-side COPY to write files with permissions 644 not 666 (Tom)
1687 Force permissions on PGDATA directory to be secure, even if it exists (Tom)
1688 Added psql LASTOID variable to return last inserted oid (Peter E)
1689 Allow concurrent vacuum and remove pg_vlock vacuum lock file (Tom)
1690 Add permissions check for vacuum (Peter E)
1691 New libpq functions to allow asynchronous connections: PQconnectStart(), 
1692    PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(), 
1693    PQsetenvPoll(), PQsetenvAbort (Ewan Mellor)
1694 New libpq PQsetenv() function (Ewan Mellor)
1695 create/alter user extension (Peter E)
1696 New postmaster.pid and postmaster.opts under $PGDATA (Tatsuo)
1697 New scripts for create/drop user/db (Peter E)
1698 Major psql overhaul (Peter E)
1699 Add const to libpq interface (Peter E)
1700 New libpq function PQoidValue (Peter E)
1701 Show specific non-aggregate causing problem with GROUP BY (Tom)
1702 Make changes to pg_shadow recreate pg_pwd file (Peter E)
1703 Add aggregate(DISTINCT ...) (Tom)
1704 Allow flag to control COPY input/output of NULLs (Peter E)
1705 Make postgres user have a password by default (Peter E)
1706 Add CREATE/ALTER/DROP GROUP (Peter E)
1707 All administration scripts now support --long options (Peter E, Karel)
1708 Vacuumdb script now supports --all option (Peter E)
1709 ecpg new portable FETCH syntax
1710 Add ecpg EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF 
1711         and EXEC SQL ENDIF directives
1712 Add pg_ctl script to control backend start-up (Tatsuo)
1713 Add postmaster.opts.default file to store start-up flags (Tatsuo)
1714 Allow --with-mb=SQL_ASCII
1715 Increase maximum number of index keys to 16 (Bruce)
1716 Increase maximum number of function arguments to 16 (Bruce)
1717 Allow configuration of maximum number of index keys and arguments (Bruce)
1718 Allow unprivileged users to change their passwords (Peter E)
1719 Password authentication enabled; required for new users (Peter E)
1720 Disallow dropping a user who owns a database (Peter E)
1721 Change initdb option --with-mb to --enable-multibyte
1722 Add option for initdb to prompts for superuser password (Peter E)
1723 Allow complex type casts like col::numeric(9,2) and col::int2::float8 (Tom)
1724 Updated user interfaces on initdb, initlocation, pg_dump, ipcclean (Peter E)
1725 New pg_char_to_encoding() and pg_encoding_to_char() functions (Tatsuo)
1726 Libpq non-blocking mode (Alfred Perlstein)
1727 Improve conversion of types in casts that don't specify a length
1728 New plperl internal programming language (Mark Hollomon)
1729 Allow COPY IN to read file that do not end with a newline (Tom)
1730 Indicate when long identifiers are truncated (Tom)
1731 Allow aggregates to use type equivalency (Peter E)
1732 Add Oracle's to_char(), to_date(), to_datetime(), to_timestamp(), to_number()
1733         conversion functions (Karel Zak &lt;zakkr@zf.jcu.cz&gt;)
1734 Add SELECT DISTINCT ON (expr [, expr ...]) targetlist ... (Tom)
1735 Check to be sure ORDER BY is compatible with the DISTINCT operation (Tom)
1736 Add NUMERIC and int8 types to ODBC
1737 Improve EXPLAIN results for Append, Group, Agg, Unique (Tom)
1738 Add ALTER TABLE ... ADD FOREIGN KEY (Stephan Szabo)
1739 Allow SELECT .. FOR UPDATE in PL/pgSQL (Hiroshi)
1740 Enable backward sequential scan even after reaching EOF (Hiroshi)
1741 Add btree indexing of boolean values, &gt;= and &lt;= (Don Baccus)
1742 Print current line number when COPY FROM fails (Massimo)
1743 Recognize POSIX time zone e.g. "PST+8" and "GMT-8" (Thomas)
1744 Add DEC as synonym for DECIMAL (Thomas)
1745 Add SESSION_USER as SQL92 keyword, same as CURRENT_USER (Thomas)
1746 Implement SQL92 column aliases (aka correlation names) (Thomas)
1747 Implement SQL92 join syntax (Thomas)
1748 Make INTERVAL reserved word allowed as a column identifier (Thomas)
1749 Implement REINDEX command (Hiroshi)
1750 Accept ALL in aggregate function SUM(ALL col) (Tom)
1751 Prevent GROUP BY from using column aliases (Tom)
1752 New psql \encoding option (Tatsuo)
1753 Allow PQrequestCancel() to terminate when in waiting-for-lock state (Hiroshi)
1754 Allow negation of a negative number in all cases
1755 Add ecpg descriptors (Christof, Michael)
1756 Allow CREATE VIEW v AS SELECT f1::char(8) FROM tbl
1757 Allow casts with length, like foo::char(8)
1758 New libpq functions PQsetClientEncoding(), PQclientEncoding() (Tatsuo)
1759 Add support for SJIS user defined characters (Tatsuo)
1760 Larger views/rules supported
1761 Make libpq's PQconndefaults() thread-safe (Tom)
1762 Disable // as comment to be ANSI conforming, should use -- (Tom)
1763 Allow column aliases on views CREATE VIEW name (collist)
1764 Fixes for views with subqueries (Tom)
1765 Allow UPDATE table SET fld = (SELECT ...) (Tom)
1766 SET command options no longer require quotes
1767 Update pgaccess to 0.98.6
1768 New SET SEED command
1769 New pg_options.sample file
1770 New SET FSYNC command (Massimo)
1771 Allow pg_descriptions when creating tables
1772 Allow pg_descriptions when creating types, columns, and functions
1773 Allow psql \copy to allow delimiters (Peter E)
1774 Allow psql to print nulls as distinct from "" [null] (Peter E)
1775
1776 Types
1777 -----
1778 Many array fixes (Tom)
1779 Allow bare column names to be subscripted as arrays (Tom)
1780 Improve type casting of int and float constants (Tom)
1781 Cleanups for int8 inputs, range checking, and type conversion (Tom)
1782 Fix for SELECT timespan('21:11:26'::time) (Tom)
1783 netmask('x.x.x.x/0') is 255.255.255.255 instead of 0.0.0.0 (Oleg Sharoiko)
1784 Add btree index on NUMERIC (Jan)
1785 Perl fix for large objects containing NUL characters (Douglas Thomson) 
1786 ODBC fix for for large objects (free)
1787 Fix indexing of cidr data type
1788 Fix for Ethernet MAC addresses (macaddr type) comparisons
1789 Fix for date/time types when overflows happened in computations (Tom)
1790 Allow array on int8 (Peter E)
1791 Fix for rounding/overflow of NUMERIC type, like NUMERIC(4,4) (Tom)
1792 Allow NUMERIC arrays
1793 Fix bugs in NUMERIC ceil() and floor() functions (Tom)
1794 Make char_length()/octet_length including trailing blanks (Tom)
1795 Made abstime/reltime use int4 instead of time_t (Peter E)
1796 New lztext data type for compressed text fields
1797 Revise code to handle coercion of int and float constants (Tom)
1798 Start at new code to implement a BIT and BIT VARYING type (Adriaan Joubert)
1799 NUMERIC now accepts scientific notation (Tom)
1800 NUMERIC to int4 rounds (Tom)
1801 Convert float4/8 to NUMERIC properly (Tom)
1802 Allow type conversion with NUMERIC (Thomas)
1803 Make ISO date style (2000-02-16 09:33) the default (Thomas)
1804 Add NATIONAL CHAR [ VARYING ] (Thomas)
1805 Allow NUMERIC round and trunc to accept negative scales (Tom)
1806 New TIME WITH TIME ZONE type (Thomas)
1807 Add MAX()/MIN() on time type (Thomas)
1808 Add abs(), mod(), fac() for int8 (Thomas)
1809 Rename functions to round(), sqrt(), cbrt(), pow() for float8 (Thomas)
1810 Add transcendental math functions (e.g. sin(), acos()) for float8 (Thomas)
1811 Add exp() and ln() for NUMERIC type
1812 Rename NUMERIC power() to pow() (Thomas)
1813 Improved TRANSLATE() function (Edwin Ramirez, Tom)
1814 Allow X=-Y operators  (Tom)
1815 Allow SELECT float8(COUNT(*))/(SELECT COUNT(*) FROM t) FROM t GROUP BY f1; (Tom)
1816 Allow LOCALE to use indexes in regular expression searches (Tom)
1817 Allow creation of functional indexes to use default types
1818
1819 Performance
1820 -----------
1821 Prevent exponential space consumption with many AND's and OR's (Tom)
1822 Collect attribute selectivity values for system columns (Tom)
1823 Reduce memory usage of aggregates (Tom)
1824 Fix for LIKE optimization to use indexes with multibyte encodings (Tom)
1825 Fix r-tree index optimizer selectivity (Thomas)
1826 Improve optimizer selectivity computations and functions (Tom)
1827 Optimize btree searching for cases where many equal keys exist (Tom)
1828 Enable fast LIKE index processing only if index present (Tom)
1829 Re-use free space on index pages with duplicates (Tom)
1830 Improve hash join processing (Tom)
1831 Prevent descending sort if result is already sorted(Hiroshi)
1832 Allow commuting of index scan query qualifications (Tom)
1833 Prefer index scans in cases where ORDER BY/GROUP BY is required (Tom)
1834 Allocate large memory requests in fix-sized chunks for performance (Tom)
1835 Fix vacuum's performance by reducing memory allocation requests (Tom)
1836 Implement constant-expression simplification (Bernard Frankpitt, Tom)
1837 Use secondary columns to be used to determine start of index scan (Hiroshi)
1838 Prevent quadruple use of disk space when doing internal sorting (Tom)
1839 Faster sorting by calling fewer functions (Tom)
1840 Create system indexes to match all system caches (Bruce, Hiroshi)
1841 Make system caches use system indexes (Bruce)
1842 Make all system indexes unique (Bruce)
1843 Improve pg_statistics management for VACUUM speed improvement (Tom)
1844 Flush backend cache less frequently (Tom, Hiroshi)
1845 COPY now reuses previous memory allocation, improving performance (Tom)
1846 Improve optimization cost estimation (Tom)
1847 Improve optimizer estimate of range queries x &gt; lowbound AND x &lt; highbound (Tom)
1848 Use DNF instead of CNF where appropriate (Tom, Taral)
1849 Further cleanup for OR-of-AND WHERE-clauses (Tom)
1850 Make use of index in OR clauses (x = 1 AND y = 2) OR (x = 2 AND y = 4) (Tom)
1851 Smarter optimizer computations for random index page access (Tom)
1852 New SET variable to control optimizer costs (Tom)
1853 Optimizer queries based on LIMIT, OFFSET, and EXISTS qualifications (Tom)
1854 Reduce optimizer internal housekeeping of join paths for speedup (Tom)
1855 Major subquery speedup (Tom)
1856 Fewer fsync writes when fsync is not disabled (Tom)
1857 Improved LIKE optimizer estimates (Tom)
1858 Prevent fsync in SELECT-only queries (Vadim)
1859 Make index creation use psort code, because it is now faster (Tom)
1860 Allow creation of sort temp tables > 1 Gig
1861
1862 Source Tree Changes
1863 -------------------
1864 Fix for linux PPC compile
1865 New generic expression-tree-walker subroutine (Tom)
1866 Change form() to varargform() to prevent portability problems
1867 Improved range checking for large integers on Alphas
1868 Clean up #include in /include directory (Bruce)
1869 Add scripts for checking includes (Bruce)
1870 Remove un-needed #include's from *.c files (Bruce)
1871 Change #include's to use &lt;&gt; and "" as appropriate (Bruce)
1872 Enable WIN32 compilation of libpq
1873 Alpha spinlock fix from Uncle George <email>gatgul@voicenet.com</email>
1874 Overhaul of optimizer data structures (Tom)
1875 Fix to cygipc library (Yutaka Tanida)
1876 Allow pgsql to work on newer Cygwin snapshots (Dan)
1877 New catalog version number (Tom)
1878 Add Linux ARM
1879 Rename heap_replace to heap_update
1880 Update for QNX (Dr. Andreas Kardos)
1881 New platform-specific regression handling (Tom)
1882 Rename oid8 -&gt; oidvector and int28 -&gt; int2vector (Bruce)
1883 Included all yacc and lex files into the distribution (Peter E.)
1884 Remove lextest, no longer needed (Peter E)
1885 Fix for libpq and psql on Win32 (Magnus)
1886 Internally change datetime and timespan into timestamp and interval (Thomas)
1887 Fix for plpgsql on BSD/OS
1888 Add SQL_ASCII test case to the regression test (Tatsuo)
1889 configure --with-mb now deprecated (Tatsuo)
1890 NT fixes
1891 NetBSD fixes (Johnny C. Lam <email>lamj@stat.cmu.edu</email>)
1892 Fixes for Alpha compiles
1893 New multibyte encodings
1894      </programlisting>
1895     </para>
1896    </sect2>
1897   </sect1>
1898
1899   <sect1 id="release-6-5-3">
1900    <title>Release 6.5.3</title>
1901
1902    <note>
1903    <title>Release date</title>
1904    <simpara>1999-10-13</simpara>
1905    </note>
1906
1907    <para>
1908     This is basically a cleanup release for 6.5.2.  We have added a new
1909     <application>PgAccess</> that was missing in 6.5.2, and installed an NT-specific fix.
1910    </para>
1911
1912
1913    <sect2>
1914     <title>Migration to version 6.5.3</title>
1915
1916     <para>
1917      A dump/restore is <emphasis>not</emphasis> required for those running
1918      6.5.*.
1919     </para>
1920    </sect2>
1921    <sect2>
1922     <title>Changes</title>
1923
1924     <para>
1925      <programlisting>
1926 Updated version of pgaccess 0.98
1927 NT-specific patch
1928 Fix dumping rules on inherited tables
1929      </programlisting>
1930     </para>
1931    </sect2>
1932   </sect1>
1933
1934
1935   <sect1 id="release-6-5-2">
1936    <title>Release 6.5.2</title>
1937
1938    <note>
1939    <title>Release date</title>
1940    <simpara>1999-09-15</simpara>
1941    </note>
1942
1943    <para>
1944     This is basically a cleanup release for 6.5.1.  We have fixed a variety of
1945     problems reported by 6.5.1 users.
1946    </para>
1947
1948
1949    <sect2>
1950     <title>Migration to version 6.5.2</title>
1951
1952     <para>
1953      A dump/restore is <emphasis>not</emphasis> required for those running
1954      6.5.*.
1955     </para>
1956    </sect2>
1957
1958    <sect2>
1959     <title>Changes</title>
1960
1961     <para>
1962      <programlisting>
1963 subselect+CASE fixes(Tom)
1964 Add SHLIB_LINK setting for solaris_i386 and solaris_sparc ports(Daren Sefcik)
1965 Fixes for CASE in WHERE join clauses(Tom)
1966 Fix BTScan abort(Tom)
1967 Repair the check for redundant UNIQUE and PRIMARY KEY indexes(Thomas)
1968 Improve it so that it checks for multicolumn constraints(Thomas)
1969 Fix for Win32 making problem with MB enabled(Hiroki Kataoka)
1970 Allow BSD yacc and bison to compile pl code(Bruce)
1971 Fix SET NAMES working
1972 int8 fixes(Thomas)
1973 Fix vacuum's memory consumption(Hiroshi,Tatsuo)
1974 Reduce the total memory consumption of vacuum(Tom)
1975 Fix for timestamp(datetime)
1976 Rule deparsing bugfixes(Tom)
1977 Fix quoting problems in mkMakefile.tcldefs.sh.in and mkMakefile.tkdefs.sh.in(Tom)
1978 This is to re-use space on index pages freed by vacuum(Vadim)
1979 document -x for pg_dump(Bruce)
1980 Fix for unary operators in rule deparser(Tom)
1981 Comment out FileUnlink of excess segments during mdtruncate()(Tom)
1982 IRIX linking fix from Yu Cao &gt;yucao@falcon.kla-tencor.com&lt;
1983 Repair logic error in LIKE: should not return LIKE_ABORT
1984    when reach end of pattern before end of text(Tom)
1985 Repair incorrect cleanup of heap memory allocation during transaction abort(Tom)
1986 Updated version of pgaccess 0.98
1987      </programlisting>
1988     </para>
1989    </sect2>
1990   </sect1>
1991
1992   <sect1 id="release-6-5-1">
1993    <title>Release 6.5.1</title>
1994
1995    <note>
1996    <title>Release date</title>
1997    <simpara>1999-07-15</simpara>
1998    </note>
1999
2000    <para>
2001     This is basically a cleanup release for 6.5.  We have fixed a variety of
2002     problems reported by 6.5 users.
2003    </para>
2004
2005    <sect2>
2006     <title>Migration to version 6.5.1</title>
2007
2008     <para>
2009      A dump/restore is <emphasis>not</emphasis> required for those running
2010      6.5.
2011     </para>
2012    </sect2>
2013
2014    <sect2>
2015     <title>Changes</title>
2016
2017     <para>
2018      <programlisting>
2019 Add NT README file
2020 Portability fixes for linux_ppc, IRIX, linux_alpha, OpenBSD, alpha
2021 Remove QUERY_LIMIT, use SELECT...LIMIT
2022 Fix for EXPLAIN on inheritance(Tom)
2023 Patch to allow vacuum on multisegment tables(Hiroshi)
2024 R-Tree optimizer selectivity fix(Tom)
2025 ACL file descriptor leak fix(Atsushi Ogawa)
2026 New expresssion subtree code(Tom)
2027 Avoid disk writes for read-only transactions(Vadim)
2028 Fix for removal of temp tables if last transaction was aborted(Bruce)
2029 Fix to prevent too large tuple from being created(Bruce)
2030 plpgsql fixes
2031 Allow port numbers 32k - 64k(Bruce)
2032 Add ^ precidence(Bruce)
2033 Rename sort files called pg_temp to pg_sorttemp(Bruce)
2034 Fix for microseconds in time values(Tom)
2035 Tutorial source cleanup
2036 New linux_m68k port
2037 Fix for sorting of NULL's in some cases(Tom)
2038 Shared library dependencies fixed (Tom)
2039 Fixed glitches affecting GROUP BY in subselects(Tom)
2040 Fix some compiler warnings (Tomoaki Nishiyama)
2041 Add Win1250 (Czech) support (Pavel Behal)
2042      </programlisting>
2043     </para>
2044    </sect2>
2045   </sect1>
2046
2047   <sect1 id="release-6-5">
2048    <title>Release 6.5</title>
2049
2050    <note>
2051    <title>Release date</title>
2052    <simpara>1999-06-09</simpara>
2053    </note>
2054
2055    <para>
2056     This release marks a major step in the development team's mastery of the source
2057     code we inherited from Berkeley.  You will see we are now easily adding
2058     major features, thanks to the increasing size and experience of our
2059     world-wide development team.
2060    </para>
2061
2062    <para>
2063     Here is a brief summary of the more notable changes:
2064
2065     <variablelist>
2066      <varlistentry>
2067       <term>
2068        Multiversion concurrency control(MVCC)
2069       </term>
2070       <listitem>
2071        <para>
2072         This removes our old
2073         table-level locking, and replaces it with a locking system that is
2074         superior to most commercial database systems.  In a traditional system,
2075         each row that is modified is locked until committed, preventing reads by
2076         other users.  MVCC uses the natural multiversion nature of PostgreSQL
2077         to allow readers to continue reading consistent data during writer
2078         activity.  Writers continue to use the compact pg_log transaction
2079         system.  This is all performed without having to allocate a lock for
2080         every row like traditional database systems.  So, basically, we no
2081         longer are restricted by simple table-level locking;
2082         we have something better than row-level locking.
2083        </para>
2084       </listitem>
2085      </varlistentry>
2086
2087      <varlistentry>
2088       <term>
2089        Hot backups from <application>pg_dump</application>
2090       </term>
2091       <listitem>
2092        <para>
2093         <application>pg_dump</application> takes advantage of the new
2094         MVCC features to give a consistent database dump/backup while
2095         the database stays online and available for queries.
2096        </para>
2097       </listitem>
2098      </varlistentry>
2099
2100      <varlistentry>
2101       <term>
2102        Numeric data type
2103       </term>
2104       <listitem>
2105        <para>
2106         We now have a true numeric data type, with
2107         user-specified precision.
2108        </para>
2109       </listitem>
2110      </varlistentry>
2111
2112      <varlistentry>
2113       <term>
2114        Temporary tables
2115       </term>
2116       <listitem>
2117        <para>
2118         Temporary tables are guaranteed to have unique names
2119         within a database session, and are destroyed on session exit.
2120        </para>
2121       </listitem>
2122      </varlistentry>
2123
2124      <varlistentry>
2125       <term>
2126        New SQL features
2127       </term>
2128       <listitem>
2129        <para>
2130         We now have CASE, INTERSECT, and EXCEPT statement
2131         support.  We have new LIMIT/OFFSET, SET TRANSACTION ISOLATION LEVEL,
2132         SELECT ... FOR UPDATE, and an improved LOCK TABLE command.
2133        </para>
2134       </listitem>
2135      </varlistentry>
2136
2137      <varlistentry>
2138       <term>
2139        Speedups
2140       </term>
2141       <listitem>
2142        <para>
2143         We continue to speed up PostgreSQL, thanks to the variety of
2144         talents within our team.  We have sped up memory allocation,
2145         optimization, table joins, and row transfer routines.
2146        </para>
2147       </listitem>
2148      </varlistentry>
2149
2150      <varlistentry>
2151       <term>
2152        Ports
2153       </term>
2154       <listitem>
2155        <para>
2156         We continue to expand our port list, this time including
2157         <systemitem class="osname">Windows NT</>/<systemitem>ix86</> and <systemitem class="osname">NetBSD</>/<systemitem>arm32</>.
2158        </para>
2159       </listitem>
2160      </varlistentry>
2161
2162      <varlistentry>
2163       <term>
2164        Interfaces
2165       </term>
2166       <listitem>
2167        <para>
2168         Most interfaces have new versions, and existing functionality
2169         has been improved.
2170        </para>
2171       </listitem>
2172      </varlistentry>
2173
2174      <varlistentry>
2175       <term>
2176        Documentation
2177       </term>
2178       <listitem>
2179        <para>
2180         New and updated material is present throughout the
2181         documentation. New <acronym>FAQ</acronym>s have been
2182         contributed for <systemitem class="osname">SGI</> and <systemitem class="osname">AIX</> platforms.
2183         The <citetitle>Tutorial</citetitle> has introductory information
2184         on <acronym>SQL</acronym> from Stefan Simkovics.
2185         For the <citetitle>User's Guide</citetitle>, there are
2186         reference pages covering the postmaster and more utility
2187         programs, and a new appendix
2188         contains details on date/time behavior.
2189         The <citetitle>Administrator's Guide</citetitle> has a new
2190         chapter on troubleshooting from Tom Lane.
2191         And the <citetitle>Programmer's Guide</citetitle> has a
2192         description of query processing, also from Stefan, and details 
2193         on obtaining the <productname>PostgreSQL</productname> source
2194         tree via anonymous <productname>CVS</productname> and
2195         <productname>CVSup</productname>. 
2196        </para>
2197       </listitem>
2198      </varlistentry>
2199     </variablelist>
2200    </para>
2201
2202    <sect2>
2203     <title>Migration to version 6.5</title>
2204
2205     <para>
2206      A dump/restore using <application>pg_dump</application>
2207      is required for those wishing to migrate data from any
2208      previous release of <productname>PostgreSQL</productname>.
2209      <application>pg_upgrade</application> can <emphasis>not</emphasis>
2210      be used to upgrade to this release because the on-disk structure
2211      of the tables has changed compared to previous releases.
2212     </para>
2213
2214     <para>
2215      The new Multiversion Concurrency Control (MVCC) features can
2216      give somewhat different behaviors in multiuser
2217      environments. <emphasis>Read and understand the following section 
2218       to ensure that your existing applications will give you the
2219       behavior you need.</emphasis>
2220     </para>
2221
2222     <sect3>
2223      <title>Multiversion Concurrency Control</title>
2224
2225      <para>
2226       Because readers in 6.5 don't lock data, regardless of transaction
2227       isolation level, data read by one transaction can be overwritten by
2228       another. In other words, if a row is returned by
2229       <command>SELECT</command> it doesn't mean that this row really exists
2230       at the time it is returned (i.e. sometime after the statement or
2231       transaction began) nor that the row is protected from being deleted or
2232       updated by concurrent transactions before the current transaction does
2233       a commit or rollback.
2234      </para>
2235
2236      <para>
2237       To ensure the actual existence of a row and protect it against
2238       concurrent updates one must use <command>SELECT FOR UPDATE</command> or
2239       an appropriate <command>LOCK TABLE</command> statement. This should be
2240       taken into account when porting applications from previous releases of
2241       <productname>PostgreSQL</productname> and other environments.
2242      </para>
2243
2244      <para>
2245       Keep the above in mind if you are using
2246       <filename>contrib/refint.*</filename> triggers for
2247       referential integrity. Additional techniques are required now. One way is
2248       to use <command>LOCK parent_table IN SHARE ROW EXCLUSIVE MODE</command>
2249       command if a transaction is going to update/delete a primary key and
2250       use <command>LOCK parent_table IN SHARE MODE</command> command if a
2251       transaction is going to update/insert a foreign key.
2252
2253       <note>
2254        <para>
2255         Note that if you run a transaction in SERIALIZABLE mode then you must
2256         execute the <command>LOCK</command> commands above before execution of any
2257         <acronym>DML</acronym> statement
2258         (<command>SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO</command>) in the
2259         transaction.
2260        </para>
2261       </note>
2262      </para>
2263
2264      <para>
2265       These inconveniences will disappear in the future
2266       when the ability to read dirty
2267       (uncommitted) data (regardless of isolation level) and true referential
2268       integrity will be implemented.
2269      </para>
2270     </sect3>
2271     </sect2>
2272
2273    <sect2>
2274     <title>Changes</title>
2275
2276     <para>
2277      <programlisting>
2278 Bug Fixes
2279 ---------
2280 Fix text<->float8 and text<->float4 conversion functions(Thomas)
2281 Fix for creating tables with mixed-case constraints(Billy)
2282 Change exp()/pow() behavior to generate error on underflow/overflow(Jan)
2283 Fix bug in pg_dump -z
2284 Memory overrun cleanups(Tatsuo)
2285 Fix for lo_import crash(Tatsuo)
2286 Adjust handling of data type names to suppress double quotes(Thomas)
2287 Use type coercion for matching columns and DEFAULT(Thomas)
2288 Fix deadlock so it only checks once after one second of sleep(Bruce)
2289 Fixes for aggregates and PL/pgsql(Hiroshi)
2290 Fix for subquery crash(Vadim)
2291 Fix for libpq function PQfnumber and case-insensitive names(Bahman Rafatjoo)
2292 Fix for large object write-in-middle, no extra block, memory consumption(Tatsuo)
2293 Fix for pg_dump -d or -D and  quote special characters in INSERT
2294 Repair serious problems with dynahash(Tom)
2295 Fix INET/CIDR portability problems
2296 Fix problem with selectivity error in ALTER TABLE ADD COLUMN(Bruce)
2297 Fix executor so mergejoin of different column types works(Tom)
2298 Fix for Alpha OR selectivity bug
2299 Fix OR index selectivity problem(Bruce)
2300 Fix so \d shows proper length for char()/varchar()(Ryan)
2301 Fix tutorial code(Clark)
2302 Improve destroyuser checking(Oliver)
2303 Fix for Kerberos(Rodney McDuff)
2304 Fix for dropping database while dirty buffers(Bruce)
2305 Fix so sequence nextval() can be case-sensitive(Bruce)
2306 Fix !!= operator
2307 Drop buffers before destroying database files(Bruce)
2308 Fix case where executor evaluates functions twice(Tatsuo)
2309 Allow sequence nextval actions to be case-sensitive(Bruce)
2310 Fix optimizer indexing not working for negative numbers(Bruce)
2311 Fix for memory leak in executor with fjIsNull
2312 Fix for aggregate memory leaks(Erik Riedel)
2313 Allow username containing a dash GRANT permissions
2314 Cleanup of NULL in inet types
2315 Clean up system table bugs(Tom)
2316 Fix problems of PAGER and \? command(Masaaki Sakaida)
2317 Reduce default multisegment file size limit to 1GB(Peter)
2318 Fix for dumping of CREATE OPERATOR(Tom)
2319 Fix for backward scanning of cursors(Hiroshi Inoue)
2320 Fix for COPY FROM STDIN when using \i(Tom)
2321 Fix for subselect is compared inside an expression(Jan)
2322 Fix handling of error reporting while returning rows(Tom)
2323 Fix problems with reference to array types(Tom,Jan)
2324 Prevent UPDATE SET oid(Jan)
2325 Fix pg_dump so -t option can handle case-sensitive tablenames
2326 Fixes for GROUP BY in special cases(Tom, Jan)
2327 Fix for memory leak in failed queries(Tom)
2328 DEFAULT now supports mixed-case identifiers(Tom)
2329 Fix for multisegment uses of DROP/RENAME table, indexes(Ole Gjerde)
2330 Disable use of pg_dump with both -o and -d options(Bruce)
2331 Allow pg_dump to properly dump GROUP permissions(Bruce)
2332 Fix GROUP BY in INSERT INTO table SELECT * FROM table2(Jan)
2333 Fix for computations in views(Jan)
2334 Fix for aggregates on array indexes(Tom)
2335 Fix for DEFAULT handles single quotes in value requiring too many quotes
2336 Fix security problem with non-super users importing/exporting large objects(Tom)
2337 Rollback of transaction that creates table cleaned up properly(Tom)
2338 Fix to allow long table and column names to generate proper serial names(Tom)
2339
2340 Enhancements
2341 ------------
2342 Add "vacuumdb" utility
2343 Speed up libpq by allocating memory better(Tom)
2344 EXPLAIN all indexes used(Tom)
2345 Implement CASE, COALESCE, NULLIF  expression(Thomas)
2346 New pg_dump table output format(Constantin)
2347 Add string min()/max() functions(Thomas)
2348 Extend new type coercion techniques to aggregates(Thomas)
2349 New moddatetime contrib(Terry)
2350 Update to pgaccess 0.96(Constantin)
2351 Add routines for single-byte "char" type(Thomas)
2352 Improved substr() function(Thomas)
2353 Improved multibyte handling(Tatsuo)
2354 Multiversion concurrency control/MVCC(Vadim)
2355 New Serialized mode(Vadim)
2356 Fix for tables over 2gigs(Peter)
2357 New SET TRANSACTION ISOLATION LEVEL(Vadim)
2358 New LOCK TABLE IN ... MODE(Vadim)
2359 Update ODBC driver(Byron)
2360 New NUMERIC data type(Jan)
2361 New SELECT FOR UPDATE(Vadim)
2362 Handle "NaN" and "Infinity" for input values(Jan)
2363 Improved date/year handling(Thomas)
2364 Improved handling of backend connections(Magnus)
2365 New options ELOG_TIMESTAMPS and USE_SYSLOG options for log files(Massimo)
2366 New TCL_ARRAYS option(Massimo)
2367 New INTERSECT and EXCEPT(Stefan)
2368 New pg_index.indisprimary for primary key tracking(D'Arcy)
2369 New pg_dump option to allow dropping of tables before creation(Brook)
2370 Speedup of row output routines(Tom)
2371 New READ COMMITTED isolation level(Vadim)
2372 New TEMP tables/indexes(Bruce)
2373 Prevent sorting if result is already sorted(Jan)
2374 New memory allocation optimization(Jan)
2375 Allow psql to do \p\g(Bruce)
2376 Allow multiple rule actions(Jan)
2377 Added LIMIT/OFFSET functionality(Jan)
2378 Improve optimizer when joining a large number of tables(Bruce)
2379 New intro to SQL from S. Simkovics' Master's Thesis (Stefan, Thomas)
2380 New intro to backend processing from S. Simkovics' Master's Thesis (Stefan)
2381 Improved int8 support(Ryan Bradetich, Thomas, Tom)
2382 New routines to convert between int8 and text/varchar types(Thomas)
2383 New bushy plans, where meta-tables are joined(Bruce)
2384 Enable right-hand queries by default(Bruce)
2385 Allow reliable maximum number of backends to be set at configure time
2386       (--with-maxbackends and postmaster switch (-N backends))(Tom)
2387 GEQO default now 10 tables because of optimizer speedups(Tom)
2388 Allow NULL=Var for MS-SQL portability(Michael, Bruce)
2389 Modify contrib check_primary_key() so either "automatic" or "dependent"(Anand)
2390 Allow psql \d on a view show query(Ryan)
2391 Speedup for LIKE(Bruce)
2392 Ecpg fixes/features, see src/interfaces/ecpg/ChangeLog file(Michael)
2393 JDBC fixes/features, see src/interfaces/jdbc/CHANGELOG(Peter)
2394 Make % operator have precedence like /(Bruce)
2395 Add new postgres -O option to allow system table structure changes(Bruce)
2396 Update contrib/pginterface/findoidjoins script(Tom)
2397 Major speedup in vacuum of deleted rows with indexes(Vadim) 
2398 Allow non-SQL functions to run different versions based on arguments(Tom)
2399 Add -E option that shows actual queries sent by \dt and friends(Masaaki Sakaida)
2400 Add version number in start-up banners for psql(Masaaki Sakaida)
2401 New contrib/vacuumlo removes large objects not referenced(Peter)
2402 New initialization for table sizes so non-vacuumed tables perform better(Tom)
2403 Improve error messages when a connection is rejected(Tom)
2404 Support for arrays of char() and varchar() fields(Massimo)
2405 Overhaul of hash code to increase reliability and performance(Tom)
2406 Update to PyGreSQL 2.4(D'Arcy)
2407 Changed debug options so -d4 and -d5 produce different node displays(Jan)
2408 New pg_options: pretty_plan, pretty_parse, pretty_rewritten(Jan)
2409 Better optimization statistics for system table access(Tom)
2410 Better handling of non-default block sizes(Massimo)
2411 Improve GEQO optimizer memory consumption(Tom)
2412 UNION now suppports ORDER BY of columns not in target list(Jan)
2413 Major libpq++ improvements(Vince Vielhaber)
2414 pg_dump now uses -z(ACL's) as default(Bruce)
2415 backend cache, memory speedups(Tom)
2416 have pg_dump do everything in one snapshot transaction(Vadim)
2417 fix for large object memory leakage, fix for pg_dumping(Tom)
2418 INET type now respects netmask for comparisons
2419 Make VACUUM ANALYZE only use a readlock(Vadim)
2420 Allow VIEWs on UNIONS(Jan)
2421 pg_dump now can generate consistent snapshots on active databases(Vadim)
2422
2423 Source Tree Changes
2424 -------------------
2425 Improve port matching(Tom)
2426 Portability fixes for SunOS
2427 Add NT/Win32 backend port and enable dynamic loading(Magnus and Daniel Horak)
2428 New port to Cobalt Qube(Mips) running Linux(Tatsuo)
2429 Port to NetBSD/m68k(Mr. Mutsuki Nakajima)
2430 Port to NetBSD/sun3(Mr. Mutsuki Nakajima)
2431 Port to NetBSD/macppc(Toshimi Aoki)
2432 Fix for tcl/tk configuration(Vince)
2433 Removed CURRENT keyword for rule queries(Jan)
2434 NT dynamic loading now works(Daniel Horak)
2435 Add ARM32 support(Andrew McMurry)
2436 Better support for HP-UX 11 and UnixWare
2437 Improve file handling to be more uniform, prevent file descriptor leak(Tom)
2438 New install commands for plpgsql(Jan)
2439      </programlisting>
2440     </para>
2441    </sect2>
2442   </sect1>
2443
2444
2445 <sect1 id="release-6-4-2">
2446 <title>Release 6.4.2</title>
2447
2448    <note>
2449    <title>Release date</title>
2450    <simpara>1998-12-20</simpara>
2451    </note>
2452
2453 <para>
2454 The 6.4.1 release was improperly packaged.  This also has one additional
2455 bug fix.
2456 </para>
2457
2458
2459 <sect2>
2460 <title>Migration to version 6.4.2</title>
2461
2462 <para>
2463 A dump/restore is <emphasis>not</emphasis> required for those running
2464 6.4.*.
2465 </para>
2466 </sect2>
2467 <sect2>
2468 <title>Changes</title>
2469
2470 <para>
2471 <programlisting>
2472 Fix for datetime constant problem on some platforms(Thomas)
2473 </programlisting>
2474 </para>
2475 </sect2>
2476 </sect1>
2477
2478
2479
2480 <sect1 id="release-6-4-1">
2481 <title>Release 6.4.1</title>
2482
2483    <note>
2484    <title>Release date</title>
2485    <simpara>1998-12-18</simpara>
2486    </note>
2487
2488 <para>
2489 This is basically a cleanup release for 6.4.  We have fixed a variety of
2490 problems reported by 6.4 users.
2491 </para>
2492
2493
2494 <sect2>
2495 <title>Migration to version 6.4.1</title>
2496
2497 <para>
2498 A dump/restore is <emphasis>not</emphasis> required for those running
2499 6.4.
2500 </para>
2501 </sect2>
2502 <sect2>
2503 <title>Changes</title>
2504
2505 <para>
2506 <programlisting>
2507 Add pg_dump -N flag to force double quotes around identifiers.  This is
2508         the default(Thomas)
2509 Fix for NOT in where clause causing crash(Bruce)
2510 EXPLAIN VERBOSE coredump fix(Vadim)
2511 Fix shared-library problems on Linux
2512 Fix test for table existance to allow mixed-case and whitespace in
2513         the table name(Thomas)
2514 Fix a couple of pg_dump bugs
2515 Configure matches template/.similar entries better(Tom)
2516 Change builtin function names from SPI_* to spi_*
2517 OR WHERE clause fix(Vadim)
2518 Fixes for mixed-case table names(Billy)
2519 contrib/linux/postgres.init.csh/sh fix(Thomas)
2520 libpq memory overrun fix
2521 SunOS fixes(Tom)
2522 Change exp() behavior to generate error on underflow(Thomas)
2523 pg_dump fixes for memory leak, inheritance constraints, layout change
2524 update pgaccess to 0.93
2525 Fix prototype for 64-bit platforms
2526 Multibyte fixes(Tatsuo)
2527 New ecpg man page
2528 Fix memory overruns(Tatsuo)
2529 Fix for lo_import() crash(Bruce)
2530 Better search for install program(Tom)
2531 Timezone fixes(Tom)
2532 HP-UX fixes(Tom)
2533 Use implicit type coercion for matching DEFAULT values(Thomas)
2534 Add routines to help with single-byte (internal) character type(Thomas)
2535 Compilation of libpq for Win32 fixes(Magnus)
2536 Upgrade to PyGreSQL 2.2(D'Arcy)
2537 </programlisting>
2538 </para>
2539 </sect2>
2540 </sect1>
2541
2542
2543
2544 <sect1 id="release-6-4">
2545 <title>Release 6.4</title>
2546
2547    <note>
2548    <title>Release date</title>
2549    <simpara>1998-10-30</simpara>
2550    </note>
2551
2552 <para>
2553 There are <emphasis>many</emphasis> new features and improvements in this release.
2554 Thanks to our developers and maintainers, nearly every aspect of the system
2555 has received some attention since the previous release.
2556 Here is a brief, incomplete summary:
2557
2558 <itemizedlist>
2559 <listitem>
2560 <para>
2561 Views and rules are now functional thanks to extensive new code in the 
2562 rewrite rules system from Jan Wieck. He also wrote a chapter on it
2563 for the <citetitle>Programmer's Guide</citetitle>.
2564 </para>
2565 </listitem>
2566 <listitem>
2567 <para>
2568 Jan also contributed a second procedural language, <application>PL/pgSQL</application>, to go with the
2569 original <application>PL/pgTCL</application> procedural language he contributed last release.
2570 </para>
2571 </listitem>
2572
2573 <listitem>
2574 <para>
2575 We have optional multiple-byte character set support from Tatsuo Ishii
2576 to complement our existing locale support.
2577 </para>
2578 </listitem>
2579
2580 <listitem>
2581 <para>
2582 Client/server communications has been cleaned up, with better support for
2583 asynchronous messages and interrupts thanks to Tom Lane.
2584 </para>
2585 </listitem>
2586
2587 <listitem>
2588 <para>
2589 The parser will now perform automatic type coercion to match arguments
2590 to available operators and functions, and to match columns and expressions
2591 with target columns. This uses a generic mechanism which supports
2592 the type extensibility features of <productname>PostgreSQL</productname>.
2593 There is a new chapter in the <citetitle>User's Guide</citetitle>
2594 which covers this topic.
2595 </para>
2596 </listitem>
2597
2598 <listitem>
2599 <para>
2600 Three new data types have been added. 
2601 Two types, <type>inet</type> and <type>cidr</type>, support various forms
2602 of IP network, subnet, and machine addressing. There is now an 8-byte integer
2603 type available on some platforms. See the chapter on data types
2604 in the <citetitle>User's Guide</citetitle> for details.
2605 A fourth type, <type>serial</type>, is now supported by the parser as an
2606 amalgam of the <type>int4</type> type, a sequence, and a unique index.
2607 </para>
2608 </listitem>
2609
2610 <listitem>
2611 <para>
2612 Several more <acronym>SQL92</acronym>-compatible syntax features have been
2613 added, including <command>INSERT DEFAULT VALUES</command>
2614 </para>
2615 </listitem>
2616
2617 <listitem>
2618 <para>
2619 The automatic configuration and installation system has received some
2620 attention, and should be more robust for more platforms than it has ever
2621 been.
2622 </para>
2623 </listitem>
2624
2625 </itemizedlist>
2626 </para>
2627
2628 <sect2>
2629 <title>Migration to version 6.4</title>
2630
2631 <para>
2632 A dump/restore using <application>pg_dump</application> 
2633 or <application>pg_dumpall</application>
2634 is required for those wishing to migrate data from any
2635 previous release of <productname>PostgreSQL</productname>.
2636 </para>
2637 </sect2>
2638
2639    <sect2>
2640 <title>Changes</title>
2641
2642     <para>
2643      <programlisting>
2644 Bug Fixes
2645 ---------
2646 Fix for a tiny memory leak in PQsetdb/PQfinish(Bryan)
2647 Remove char2-16 data types, use char/varchar(Darren)
2648 Pqfn not handles a NOTICE message(Anders)
2649 Reduced busywaiting overhead for spinlocks with many backends (dg)
2650 Stuck spinlock detection (dg)
2651 Fix up "ISO-style" timespan decoding and encoding(Thomas)
2652 Fix problem with table drop after rollback of transaction(Vadim)
2653 Change error message and remove non-functional update message(Vadim)
2654 Fix for COPY array checking
2655 Fix for SELECT 1 UNION SELECT NULL
2656 Fix for buffer leaks in large object calls(Pascal)
2657 Change owner from oid to int4 type(Bruce)
2658 Fix a bug in the oracle compatibility functions btrim() ltrim() and rtrim()
2659 Fix for shared invalidation cache overflow(Massimo)
2660 Prevent file descriptor leaks in failed COPY's(Bruce)
2661 Fix memory leak in libpgtcl's pg_select(Constantin)
2662 Fix problems with username/passwords over 8 characters(Tom)
2663 Fix problems with handling of asynchronous NOTIFY in backend(Tom)
2664 Fix of many bad system table entries(Tom)
2665
2666 Enhancements
2667 ------------
2668 Upgrade ecpg and ecpglib,see src/interfaces/ecpc/ChangeLog(Michael)
2669 Show the index used in an EXPLAIN(Zeugswetter)
2670 EXPLAIN  invokes  rule system and shows plan(s) for rewritten queries(Jan)
2671 Multibyte awareness of many data types and functions, via configure(Tatsuo)
2672 New configure --with-mb option(Tatsuo)
2673 New initdb --pgencoding option(Tatsuo)
2674 New createdb -E multibyte option(Tatsuo)
2675 Select version(); now returns PostgreSQL version(Jeroen)
2676 Libpq now allows asynchronous clients(Tom)
2677 Allow cancel from client of backend query(Tom)
2678 Psql now cancels query with Control-C(Tom)
2679 Libpq users need not issue dummy queries to get NOTIFY messages(Tom)
2680 NOTIFY now sends sender's PID, so you can tell whether it was your own(Tom)
2681 PGresult struct now includes associated error message, if any(Tom)
2682 Define "tz_hour" and "tz_minute" arguments to date_part()(Thomas)
2683 Add routines to convert between varchar and bpchar(Thomas)
2684 Add routines to allow sizing of varchar and bpchar into target columns(Thomas)
2685 Add bit flags to support timezonehour and minute in data retrieval(Thomas)
2686 Allow more variations on valid floating point numbers (e.g. ".1", "1e6")(Thomas)
2687 Fixes for unary minus parsing with leading spaces(Thomas)
2688 Implement TIMEZONE_HOUR, TIMEZONE_MINUTE per SQL92 specs(Thomas)
2689 Check for and properly ignore FOREIGN KEY column constraints(Thomas)
2690 Define USER as synonym for CURRENT_USER per SQL92 specs(Thomas)
2691 Enable HAVING clause but no fixes elsewhere yet.
2692 Make "char" type a synonym for "char(1)" (actually implemented as bpchar)(Thomas)
2693 Save string type if specified for DEFAULT clause handling(Thomas)
2694 Coerce operations involving different data types(Thomas)
2695 Allow some index use for columns of different types(Thomas)
2696 Add capabilities for automatic type conversion(Thomas)
2697 Cleanups for large objects, so file is truncated on open(Peter)
2698 Readline cleanups(Tom)
2699 Allow psql  \f \ to make spaces as delimiter(Bruce)
2700 Pass pg_attribute.atttypmod to the frontend for column field lengths(Tom,Bruce)
2701 Msql compatibility library in /contrib(Aldrin)
2702 Remove the requirement that ORDER/GROUP BY clause identifiers be 
2703 included in the target list(David)
2704 Convert columns to match columns in UNION clauses(Thomas)
2705 Remove fork()/exec() and only do fork()(Bruce)
2706 Jdbc cleanups(Peter)
2707 Show backend status on ps command line(only works on some platforms)(Bruce)
2708 Pg_hba.conf now has a sameuser option in the database field
2709 Make lo_unlink take oid param, not int4
2710 New DISABLE_COMPLEX_MACRO for compilers that can't handle our macros(Bruce)
2711 Libpgtcl now handles NOTIFY as a Tcl event, need not send dummy queries(Tom)
2712 libpgtcl cleanups(Tom)
2713 Add -error option to libpgtcl's pg_result command(Tom)
2714 New locale patch, see docs/README/locale(Oleg)
2715 Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb)
2716 New contrib/lo code for large object orphan removal(Peter)
2717 New psql command "SET CLIENT_ENCODING TO 'encoding'" for multibytes
2718 feature, see /doc/README.mb(Tatsuo)
2719 /contrib/noupdate code to revoke update permission on a column
2720 Libpq can now be compiled on win32(Magnus)
2721 Add PQsetdbLogin() in libpq
2722 New 8-byte integer type, checked by configure for OS support(Thomas)
2723 Better support for quoted table/column names(Thomas)
2724 Surround table and column names with double-quotes in pg_dump(Thomas)
2725 PQreset() now works with passwords(Tom)
2726 Handle case of GROUP BY target list column number out of range(David)
2727 Allow UNION in subselects
2728 Add auto-size to screen to \d? commands(Bruce)
2729 Use UNION to show all \d? results in one query(Bruce)
2730 Add \d? field search feature(Bruce)
2731 Pg_dump issues fewer \connect requests(Tom)
2732 Make pg_dump -z flag work better, document it in manual page(Tom)
2733 Add HAVING clause with full support for subselects and unions(Stephan)
2734 Full text indexing routines in contrib/fulltextindex(Maarten)
2735 Transaction ids now stored in shared memory(Vadim)
2736 New PGCLIENTENCODING when issuing COPY command(Tatsuo)
2737 Support for SQL92 syntax "SET NAMES"(Tatsuo)
2738 Support for LATIN2-5(Tatsuo)
2739 Add UNICODE regression test case(Tatsuo)
2740 Lock manager cleanup, new locking modes for LLL(Vadim)
2741 Allow index use with OR clauses(Bruce)
2742 Allows "SELECT NULL ORDER BY 1;"
2743 Explain VERBOSE prints the plan, and now pretty-prints the plan to
2744 the postmaster log file(Bruce)
2745 Add indexes display to \d command(Bruce)
2746 Allow GROUP BY on functions(David)
2747 New pg_class.relkind for large objects(Bruce)
2748 New way to send libpq NOTICE messages to a different location(Tom)
2749 New \w write command to psql(Bruce)
2750 New /contrib/findoidjoins scans oid columns to find join relationships(Bruce)
2751 Allow binary-compatible indexes to be considered when checking for valid
2752 Indexes for restriction clauses containing a constant(Thomas)
2753 New ISBN/ISSN code in /contrib/isbn_issn
2754 Allow NOT LIKE, IN, NOT IN, BETWEEN, and NOT BETWEEN constraint(Thomas)
2755 New rewrite system fixes many problems with rules and views(Jan)
2756         * Rules on relations work
2757         * Event qualifications on insert/update/delete work
2758         * New OLD variable to reference CURRENT, CURRENT will be remove in future
2759         * Update rules can reference NEW and OLD in rule qualifications/actions
2760         * Insert/update/delete rules on views work
2761         * Multiple rule actions are now supported, surrounded by parentheses
2762         * Regular users can create views/rules on tables they have RULE permits
2763         * Rules and views inherit the permissions on the creator
2764         * No rules at the column level
2765         * No UPDATE NEW/OLD rules
2766         * New pg_tables, pg_indexes, pg_rules and pg_views system views
2767         * Only a single action on SELECT rules
2768         * Total rewrite overhaul, perhaps for 6.5
2769         * handle subselects
2770         * handle aggregates on views
2771         * handle insert into select from view works
2772 System indexes are now multikey(Bruce)
2773 Oidint2, oidint4, and oidname types are removed(Bruce)
2774 Use system cache for more system table lookups(Bruce)
2775 New backend programming language PL/pgSQL in backend/pl(Jan)
2776 New SERIAL data type, auto-creates sequence/index(Thomas)
2777 Enable assert checking without a recompile(Massimo)
2778 User lock enhancements(Massimo)
2779 New setval() command to set sequence value(Massimo)
2780 Auto-remove unix socket file on start-up if no postmaster running(Massimo)
2781 Conditional trace package(Massimo)
2782 New UNLISTEN command(Massimo)
2783 Psql and libpq now compile under win32 using win32.mak(Magnus)
2784 Lo_read no longer stores trailing NULL(Bruce)
2785 Identifiers are now truncated to 31 characters internally(Bruce)
2786 Createuser options now availble on the command line
2787 Code for 64-bit integer supported added, configure tested, int8 type(Thomas)
2788 Prevent file descriptor leaf from failed COPY(Bruce)
2789 New pg_upgrade command(Bruce)
2790 Updated /contrib directories(Massimo)
2791 New CREATE TABLE DEFAULT VALUES statement available(Thomas)
2792 New INSERT INTO TABLE DEFAULT VALUES statement available(Thomas)
2793 New DECLARE and FETCH feature(Thomas)
2794 libpq's internal structures now not exported(Tom)
2795 Allow up to 8 key indexes(Bruce)
2796 Remove ARCHIVE keyword, that is no longer used(Thomas)
2797 pg_dump -n flag to supress quotes around indentifiers
2798 disable system columns for views(Jan)
2799 new INET and CIDR types for network addresses(TomH, Paul)
2800 no more double quotes in psql output
2801 pg_dump now dumps views(Terry)
2802 new SET QUERY_LIMIT(Tatsuo,Jan)
2803
2804 Source Tree Changes
2805 -------------------
2806 /contrib cleanup(Jun)
2807 Inline some small functions called for every row(Bruce)
2808 Alpha/linux fixes
2809 HP-UX cleanups(Tom)
2810 Multibyte regression tests(Soonmyung.)
2811 Remove --disabled options from configure
2812 Define PGDOC to use POSTGRESDIR by default
2813 Make regression optional
2814 Remove extra braces code to pgindent(Bruce)
2815 Add bsdi shared library support(Bruce)
2816 New --without-CXX support configure option(Brook)
2817 New FAQ_CVS
2818 Update backend flowchart in tools/backend(Bruce)
2819 Change atttypmod from int16 to int32(Bruce, Tom)
2820 Getrusage() fix for platforms that do not have it(Tom)
2821 Add PQconnectdb, PGUSER, PGPASSWORD to libpq man page
2822 NS32K platform fixes(Phil Nelson, John Buller)
2823 SCO 7/UnixWare 2.x fixes(Billy,others)
2824 Sparc/Solaris 2.5 fixes(Ryan)
2825 Pgbuiltin.3 is obsolete, move to doc files(Thomas)
2826 Even more documention(Thomas)
2827 Nextstep support(Jacek)
2828 Aix support(David)
2829 pginterface manual page(Bruce)
2830 shared libraries all have version numbers
2831 merged all OS-specific shared library defines into one file
2832 smarter TCL/TK configuration checking(Billy)
2833 smarter perl configuration(Brook)
2834 configure uses supplied install-sh if no install script found(Tom)
2835 new Makefile.shlib for shared library configuration(Tom)
2836 </programlisting>
2837 </para>
2838 </sect2>
2839 </sect1>
2840
2841 <sect1 id="release-6-3-2">
2842 <title>Release 6.3.2</title>
2843
2844    <note>
2845    <title>Release date</title>
2846    <simpara>1998-04-07</simpara>
2847    </note>
2848
2849 <para>
2850 This is a bug-fix release for 6.3.x.
2851 Refer to the release notes for version 6.3 for a more complete summary of new features.
2852 </para>
2853 <para>
2854 Summary:
2855
2856 <itemizedlist>
2857 <listitem>
2858 <para>
2859 Repairs automatic configuration support for some platforms, including Linux,
2860 from breakage inadvertently introduced in version 6.3.1.
2861 </para>
2862 </listitem>
2863
2864 <listitem>
2865 <para>
2866 Correctly handles function calls on the left side of BETWEEN and LIKE clauses.
2867 </para>
2868 </listitem>
2869
2870 </itemizedlist>
2871 </para>
2872 <para>
2873 A dump/restore is NOT required for those running 6.3 or 6.3.1.  A 
2874 <literal>make distclean</>, <literal>make</>, and <literal>make install</> is all that is required.
2875 This last step should be performed while the postmaster is not running.
2876 You should re-link any custom applications that use <productname>PostgreSQL</productname> libraries.
2877 </para>
2878 <para>
2879 For upgrades from pre-6.3 installations,
2880 refer to the installation and migration instructions for version 6.3.
2881 </para>
2882
2883    <sect2>
2884     <title>Changes</title>
2885
2886     <para>
2887      <programlisting>
2888 Configure detection improvements for tcl/tk(Brook Milligan, Alvin)
2889 Manual page improvements(Bruce)
2890 BETWEEN and LIKE fix(Thomas)
2891 fix for psql \connect used by pg_dump(Oliver Elphick)
2892 New odbc driver
2893 pgaccess, version 0.86
2894 qsort removed, now uses libc version, cleanups(Jeroen)
2895 fix for buffer over-runs detected(Maurice Gittens)
2896 fix for buffer overrun in libpgtcl(Randy Kunkee)
2897 fix for UNION with DISTINCT or ORDER BY(Bruce)
2898 gettimeofday configure check(Doug Winterburn)
2899 Fix "indexes not used" bug(Vadim)
2900 docs additions(Thomas)
2901 Fix for backend memory leak(Bruce)
2902 libreadline cleanup(Erwan MAS)
2903 Remove DISTDIR(Bruce)
2904 Makefile dependency cleanup(Jeroen van Vianen)
2905 ASSERT fixes(Bruce)
2906      </programlisting>
2907     </para>
2908    </sect2>
2909   </sect1>
2910
2911   <sect1 id="release-6-3-1">
2912    <title>Release 6.3.1</title>
2913
2914    <note>
2915    <title>Release date</title>
2916    <simpara>1998-03-23</simpara>
2917    </note>
2918
2919    <para>
2920     Summary:
2921
2922 <itemizedlist>
2923 <listitem>
2924 <para>
2925 Additional support for multibyte character sets.
2926 </para>
2927 </listitem>
2928
2929 <listitem>
2930 <para>
2931 Repair byte ordering for mixed-endian clients and servers.
2932 </para>
2933 </listitem>
2934
2935 <listitem>
2936 <para>
2937 Minor updates to allowed SQL syntax.
2938 </para>
2939 </listitem>
2940
2941 <listitem>
2942 <para>
2943 Improvements to the configuration autodetection for installation.
2944 </para>
2945 </listitem>
2946
2947 </itemizedlist>
2948 </para>
2949 <para>
2950 A dump/restore is NOT required for those running 6.3.  A 
2951 <literal>make distclean</>, <literal>make</>, and <literal>make install</> is all that is required.
2952 This last step should be performed while the postmaster is not running.
2953 You should re-link any custom applications that use <productname>PostgreSQL</productname> libraries.
2954 </para>
2955 <para>
2956 For upgrades from pre-6.3 installations,
2957 refer to the installation and migration instructions for version 6.3.
2958 </para>
2959
2960    <sect2>
2961     <title>Changes</title>
2962
2963     <para>
2964      <programlisting>
2965 ecpg cleanup/fixes, now version 1.1(Michael Meskes)
2966 pg_user cleanup(Bruce)
2967 large object fix for pg_dump and tclsh (alvin)
2968 LIKE fix for multiple adjacent underscores
2969 fix for redefining builtin functions(Thomas)
2970 ultrix4 cleanup
2971 upgrade to pg_access 0.83
2972 updated CLUSTER manual page
2973 multibyte character set support, see doc/README.mb(Tatsuo)
2974 configure --with-pgport fix
2975 pg_ident fix
2976 big-endian fix for backend communications(Kataoka)
2977 SUBSTR() and substring() fix(Jan)
2978 several jdbc fixes(Peter)
2979 libpgtcl improvements, see libptcl/README(Randy Kunkee)
2980 Fix for "Datasize = 0" error(Vadim)
2981 Prevent \do from wrapping(Bruce)
2982 Remove duplicate Russian character set entries
2983 Sunos4 cleanup
2984 Allow optional TABLE keyword in LOCK and SELECT INTO(Thomas)
2985 CREATE SEQUENCE options to allow a negative integer(Thomas)
2986 Add "PASSWORD" as an allowed column identifier(Thomas)
2987 Add checks for UNION target fields(Bruce)
2988 Fix Alpha port(Dwayne Bailey)
2989 Fix for text arrays containing quotes(Doug Gibson)
2990 Solaris compile fix(Albert Chin-A-Young)
2991 Better identify tcl and tk libs and includes(Bruce)
2992      </programlisting>
2993     </para>
2994    </sect2>
2995   </sect1>
2996
2997   <sect1 id="release-6-3">
2998    <title>Release 6.3</title>
2999
3000    <note>
3001    <title>Release date</title>
3002    <simpara>1998-03-01</simpara>
3003    </note>
3004
3005    <para>
3006     There are <emphasis>many</emphasis> new features and improvements in this release.
3007     Here is a brief, incomplete summary:
3008
3009     <itemizedlist>
3010      <listitem>
3011       <para>
3012        Many new SQL features, including
3013        full <acronym>SQL92</acronym> subselect capability
3014        (everything is here but target-list subselects).
3015       </para>
3016      </listitem>
3017
3018      <listitem>
3019       <para>
3020        Support for client-side environment variables to specify time zone and date style.
3021       </para>
3022      </listitem>
3023
3024      <listitem>
3025       <para>
3026        Socket interface for client/server connection. This is the default now
3027        so you may need to start <application>postmaster</application> with the
3028        <option>-i</option> flag.
3029       </para>
3030      </listitem>
3031
3032      <listitem>
3033       <para>
3034        Better password authorization mechanisms. Default table permissions have changed.
3035       </para>
3036      </listitem>
3037
3038      <listitem>
3039       <para>
3040        Old-style <firstterm>time travel</firstterm>
3041        has been removed. Performance has been improved.
3042       </para>
3043      </listitem>
3044     </itemizedlist>
3045    </para>
3046
3047    <note>
3048     <para>
3049      Bruce Momjian wrote the following notes to introduce the new release.
3050     </para>
3051    </note>
3052
3053    <para>
3054     There are some general 6.3 issues that I want to mention.  These are
3055     only the big items that can not be described in one sentence.  A review
3056     of the detailed changes list is still needed.
3057    </para>
3058    <para>
3059     First, we now have subselects.  Now that we have them, I would like to
3060     mention that without subselects, SQL is a very limited language.
3061     Subselects are a major feature, and you should review your code for
3062     places where subselects provide a better solution for your queries.  I
3063     think you will find that there are more uses for subselects than you may
3064     think.  Vadim has put us on the big SQL map with subselects, and fully
3065     functional ones too.  The only thing you can't do with subselects is to
3066     use them in the target list.
3067    </para>
3068    <para>
3069     Second, 6.3 uses Unix domain sockets rather than TCP/IP by default.  To
3070     enable connections from other machines, you have to use the new
3071     postmaster -i option, and of course edit <filename>pg_hba.conf</filename>.  Also, for this
3072     reason, the format of <filename>pg_hba.conf</filename> has changed.
3073    </para>
3074    <para>
3075     Third, <type>char()</type> fields will now allow faster access than <type>varchar()</type> or
3076     <type>text</type>. Specifically, the <type>text</> and <type>varchar()</type> have a penalty for access to
3077     any columns after the first column of this type.  <type>char()</type> used to also
3078     have this access penalty, but it no longer does.  This may suggest that
3079     you redesign some of your tables, especially if you have short character
3080     columns that you have defined as <type>varchar()</type> or <type>text</type>.  This and other
3081     changes make 6.3 even faster than earlier releases.
3082    </para>
3083    <para>
3084     We now have passwords definable independent of any Unix file.  There are
3085     new SQL USER commands.
3086     See the <citetitle>Administrator's Guide</citetitle> for more
3087     information.  There is a new table, pg_shadow, which is used to store
3088     user information and user passwords, and it by default only SELECT-able
3089     by the <systemitem>postgres</systemitem> super-user.  pg_user is now a view of pg_shadow, and is
3090     SELECT-able by PUBLIC.  You should keep using pg_user in your
3091     application without changes.
3092    </para>
3093    <para>
3094     User-created tables now no longer have SELECT permission to PUBLIC by
3095     default.  This was done because the ANSI standard requires it.  You can
3096     of course GRANT any permissions you want after the table is created. 
3097     System tables continue to be SELECT-able by PUBLIC.
3098    </para>
3099    <para>
3100     We also have real deadlock detection code.  No more sixty-second
3101     timeouts.  And the new locking code implements a <acronym>FIFO</acronym> better, so there
3102     should be less resource starvation during heavy use.
3103    </para>
3104    <para>
3105     Many complaints have been made about inadequate documentation in previous
3106     releases.  Thomas has put much effort into many new manuals for this
3107     release.  Check out the doc/ directory.
3108    </para>
3109    <para>
3110     For performance reasons, time travel is gone, but can be implemented
3111     using triggers (see <filename>pgsql/contrib/spi/README</filename>).  Please check out the new
3112     \d command for types, operators, etc.  Also, views have their own
3113     permissions now, not based on the underlying tables, so permissions on
3114     them have to be set separately.  Check <filename>/pgsql/interfaces</filename> for some new
3115     ways to talk to <productname>PostgreSQL</productname>.
3116    </para>
3117    <para>
3118     This is the first release that really required an explanation for
3119     existing users.  In many ways, this was necessary because the new
3120     release removes many limitations, and the work-arounds people were using
3121     are no longer needed.
3122    </para>
3123
3124    <sect2>
3125     <title>Migration to version 6.3</title>
3126
3127     <para>
3128      A dump/restore using <application>pg_dump</application> 
3129      or <application>pg_dumpall</application>
3130      is required for those wishing to migrate data from any
3131      previous release of <productname>PostgreSQL</productname>.
3132     </para>
3133    </sect2>
3134
3135    <sect2>
3136     <title>Changes</title>
3137
3138     <para>
3139      <programlisting>
3140 Bug Fixes
3141 ---------
3142 Fix binary cursors broken by MOVE implementation(Vadim)
3143 Fix for tcl library crash(Jan)
3144 Fix for array handling, from Gerhard Hintermayer
3145 Fix acl error, and remove duplicate pqtrace(Bruce)
3146 Fix psql \e for empty file(Bruce)
3147 Fix for textcat on varchar() fields(Bruce)
3148 Fix for DBT Sendproc (Zeugswetter Andres)
3149 Fix vacuum analyze syntax problem(Bruce)
3150 Fix for international identifiers(Tatsuo)
3151 Fix aggregates on inherited tables(Bruce)
3152 Fix substr() for out-of-bounds data
3153 Fix for select 1=1 or 2=2, select 1=1 and 2=2, and select sum(2+2)(Bruce)
3154 Fix notty output to show status result.  -q option still turns it off(Bruce)
3155 Fix for count(*), aggs with views and multiple tables and sum(3)(Bruce)
3156 Fix cluster(Bruce)
3157 Fix for PQtrace start/stop several times(Bruce)
3158 Fix a variety of locking problems like newer lock waiters getting
3159         lock before older waiters, and having readlock people not share
3160         locks if a writer is waiting for a lock, and waiting writers not
3161         getting priority over waiting readers(Bruce)
3162 Fix crashes in psql when executing queries from external files(James)
3163 Fix problem with multiple order by columns, with the first one having
3164         NULL values(Jeroen)
3165 Use correct hash table support functions for float8 and int4(Thomas)
3166 Re-enable JOIN= option in CREATE OPERATOR statement (Thomas)
3167 Change precedence for boolean operators to match expected behavior(Thomas)
3168 Generate elog(ERROR) on over-large integer(Bruce)
3169 Allow multiple-argument functions in constraint clauses(Thomas)
3170 Check boolean input literals for 'true','false','yes','no','1','0'
3171         and throw elog(ERROR) if unrecognized(Thomas)
3172 Major large objects fix
3173 Fix for GROUP BY showing duplicates(Vadim)
3174 Fix for index scans in MergeJion(Vadim)
3175
3176 Enhancements
3177 ------------
3178 Subselects with EXISTS, IN, ALL, ANY keywords (Vadim, Bruce, Thomas)
3179 New User Manual(Thomas, others)
3180 Speedup by inlining some frequently-called functions
3181 Real deadlock detection, no more timeouts(Bruce)
3182 Add SQL92 "constants" CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, 
3183         CURRENT_USER(Thomas)
3184 Modify constraint syntax to be SQL92-compliant(Thomas)
3185 Implement SQL92 PRIMARY KEY and UNIQUE clauses using indexes(Thomas)
3186 Recognize SQL92 syntax for FOREIGN KEY. Throw elog notice(Thomas)
3187 Allow NOT NULL UNIQUE constraint clause (each allowed separately before)(Thomas)
3188 Allow PostgreSQL-style casting ("::") of non-constants(Thomas)
3189 Add support for SQL3 TRUE and FALSE boolean constants(Thomas)
3190 Support SQL92 syntax for IS TRUE/IS FALSE/IS NOT TRUE/IS NOT FALSE(Thomas)
3191 Allow shorter strings for boolean literals (e.g. "t", "tr", "tru")(Thomas)
3192 Allow SQL92 delimited identifiers(Thomas)
3193 Implement SQL92 binary and hexadecimal string decoding (b'10' and x'1F')(Thomas)
3194 Support SQL92 syntax for type coercion of literal strings
3195         (e.g. "DATETIME 'now'")(Thomas)
3196 Add conversions for int2, int4, and OID types to and from text(Thomas)
3197 Use shared lock when building indexes(Vadim)
3198 Free memory allocated for an user query inside transaction block after
3199         this query is done, was turned off in <= 6.2.1(Vadim)
3200 New SQL statement CREATE PROCEDURAL LANGUAGE(Jan)
3201 New <productname>PostgreSQL</productname> Procedural Language (PL) backend interface(Jan)
3202 Rename pg_dump -H option to -h(Bruce)
3203 Add Java support for passwords, European dates(Peter)
3204 Use indexes for LIKE and ~, !~ operations(Bruce)
3205 Add hash functions for datetime and timespan(Thomas)
3206 Time Travel removed(Vadim, Bruce)
3207 Add paging for \d and \z, and fix \i(Bruce)
3208 Add Unix domain socket support to backend and to frontend library(Goran)
3209 Implement CREATE DATABASE/WITH LOCATION and initlocation utility(Thomas)
3210 Allow more SQL92 and/or <productname>PostgreSQL</productname> reserved words as column identifiers(Thomas)
3211 Augment support for SQL92 SET TIME ZONE...(Thomas)
3212 SET/SHOW/RESET TIME ZONE uses TZ backend environment variable(Thomas)
3213 Implement SET keyword = DEFAULT and SET TIME ZONE DEFAULT(Thomas)
3214 Enable SET TIME ZONE using TZ environment variable(Thomas)
3215 Add PGDATESTYLE environment variable to frontend and backend initialization(Thomas)
3216 Add PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO
3217         frontend library initialization environment variables(Thomas)
3218 Regression tests time zone automatically set with "setenv PGTZ PST8PDT"(Thomas)
3219 Add pg_description table for info on tables, columns, operators, types, and
3220         aggregates(Bruce)
3221 Increase 16 char limit on system table/index names to 32 characters(Bruce)
3222 Rename system indexes(Bruce)
3223 Add 'GERMAN' option to SET DATESTYLE(Thomas)
3224 Define an "ISO-style" timespan output format with "hh:mm:ss" fields(Thomas)
3225 Allow fractional values for delta times (e.g. '2.5 days')(Thomas)
3226 Validate numeric input more carefully for delta times(Thomas)
3227 Implement day of year as possible input to date_part()(Thomas)
3228 Define timespan_finite() and text_timespan() functions(Thomas)
3229 Remove archive stuff(Bruce)
3230 Allow for a pg_password authentication database that is separate from
3231         the system password file(Todd)
3232 Dump ACLs, GRANT, REVOKE permissions(Matt)
3233 Define text, varchar, and bpchar string length functions(Thomas)
3234 Fix Query handling for inheritance, and cost computations(Bruce)
3235 Implement CREATE TABLE/AS SELECT (alternative to SELECT/INTO)(Thomas)
3236 Allow NOT, IS NULL, IS NOT NULL in constraints(Thomas)
3237 Implement UNIONs for SELECT(Bruce)
3238 Add UNION, GROUP, DISTINCT to INSERT(Bruce)
3239 varchar() stores only necessary bytes on disk(Bruce)
3240 Fix for BLOBs(Peter)
3241 Mega-Patch for JDBC...see README_6.3 for list of changes(Peter)
3242 Remove unused "option" from PQconnectdb()
3243 New LOCK command and lock manual page describing deadlocks(Bruce)
3244 Add new psql \da, \dd, \df, \do, \dS, and \dT commands(Bruce)
3245 Enhance psql \z to show sequences(Bruce)
3246 Show NOT NULL and DEFAULT in psql \d table(Bruce)
3247 New psql .psqlrc file start-up(Andrew)
3248 Modify sample start-up script in contrib/linux to show syslog(Thomas)
3249 New types for IP and MAC addresses in contrib/ip_and_mac(TomH)
3250 Unix system time conversions with date/time types in contrib/unixdate(Thomas)
3251 Update of contrib stuff(Massimo)
3252 Add Unix socket support to DBD::Pg(Goran)
3253 New python interface (PyGreSQL 2.0)(D'Arcy)
3254 New frontend/backend protocol has a version number, network byte order(Phil)
3255 Security features in pg_hba.conf enhanced and documented, many cleanups(Phil)
3256 CHAR() now faster access than VARCHAR() or TEXT
3257 ecpg embedded SQL preprocessor
3258 Reduce system column overhead(Vadmin)
3259 Remove pg_time table(Vadim)
3260 Add pg_type attribute to identify types that need length (bpchar, varchar)
3261 Add report of offending line when COPY command fails
3262 Allow VIEW permissions to be set separately from the underlying tables. 
3263         For security, use GRANT/REVOKE on views as appropriate(Jan)
3264 Tables now have no default GRANT SELECT TO PUBLIC.  You must
3265         explicitly grant such permissions.
3266 Clean up tutorial examples(Darren)
3267
3268 Source Tree Changes
3269 -------------------
3270 Add new html development tools, and flow chart in /tools/backend
3271 Fix for SCO compiles
3272 Stratus computer port Robert Gillies
3273 Added support for shlib for BSD44_derived & i386_solaris
3274 Make configure more automated(Brook)
3275 Add script to check regression test results
3276 Break parser functions into smaller files, group together(Bruce)
3277 Rename heap_create to heap_create_and_catalog, rename heap_creatr
3278         to heap_create()(Bruce)
3279 Sparc/Linux patch for locking(TomS)
3280 Remove PORTNAME and reorganize port-specific stuff(Marc)
3281 Add optimizer README file(Bruce)
3282 Remove some recursion in optimizer and clean up some code there(Bruce)
3283 Fix for NetBSD locking(Henry)
3284 Fix for libptcl make(Tatsuo)
3285 AIX patch(Darren)
3286 Change IS TRUE, IS FALSE, ... to expressions using "=" rather than
3287         function calls to istrue() or isfalse() to allow optimization(Thomas)
3288 Various fixes NetBSD/Sparc related(TomH)
3289 Alpha linux locking(Travis,Ryan)
3290 Change elog(WARN) to elog(ERROR)(Bruce)
3291 FAQ for FreeBSD(Marc)
3292 Bring in the PostODBC source tree as part of our standard distribution(Marc)
3293 A minor patch for HP/UX 10 vs 9(Stan)
3294 New pg_attribute.atttypmod for type-specific info like varchar length(Bruce)
3295 UnixWare patches(Billy)
3296 New i386 'lock' for spin lock asm(Billy)
3297 Support for multiplexed backends is removed
3298 Start an OpenBSD port
3299 Start an AUX port
3300 Start a Cygnus port
3301 Add string functions to regression suite(Thomas)
3302 Expand a few function names formerly truncated to 16 characters(Thomas)
3303 Remove un-needed malloc() calls and replace with palloc()(Bruce)
3304 </programlisting>
3305 </para>
3306 </sect2>
3307 </sect1>
3308
3309 <sect1 id="release-6-2-1">
3310 <title>Release 6.2.1</title>
3311
3312    <note>
3313    <title>Release date</title>
3314    <simpara>1997-10-17</simpara>
3315    </note>
3316
3317 <para>
3318 6.2.1 is a bug-fix and usability release on 6.2.
3319 </para>
3320 <para>
3321 Summary:
3322
3323 <itemizedlist>
3324 <listitem>
3325 <para>
3326 Allow strings to span lines, per <acronym>SQL92</acronym>.
3327 </para>
3328 </listitem>
3329
3330 <listitem>
3331 <para>
3332 Include example trigger function for inserting user names on table updates.
3333 </para>
3334 </listitem>
3335
3336 </itemizedlist>
3337 </para>
3338 <para>
3339 This is a minor bug-fix release on 6.2. 
3340 For upgrades from pre-6.2 systems, a full dump/reload is required. 
3341 Refer to the 6.2 release notes for instructions.
3342 </para>
3343
3344 <sect2>
3345 <title>Migration from version 6.2 to version 6.2.1</title>
3346
3347 <para>
3348 This is a minor bug-fix release. A dump/reload is not required from version 6.2,
3349 but is required from any release prior to 6.2.
3350 </para>
3351 <para>
3352 In upgrading from version 6.2, if you choose to dump/reload you will find that
3353 avg(money) is now calculated correctly. All other bug fixes take effect
3354 upon updating the executables.
3355 </para>
3356 <para>
3357 Another way to avoid dump/reload is to use the following SQL command
3358 from <command>psql</command> to update the existing system table:
3359
3360 <programlisting>
3361   update pg_aggregate set aggfinalfn = 'cash_div_flt8'
3362    where aggname = 'avg' and aggbasetype = 790;
3363 </programlisting>
3364 </para>
3365 <para>
3366 This will need to be done to every existing database, including template1.
3367 </para>
3368 </sect2>
3369
3370    <sect2>
3371     <title>Changes</title>
3372
3373     <para>
3374      <programlisting>
3375 Allow TIME and TYPE column names(Thomas)
3376 Allow larger range of true/false as boolean values(Thomas)
3377 Support output of "now" and "current"(Thomas)
3378 Handle DEFAULT with INSERT of NULL properly(Vadim)
3379 Fix for relation reference counts problem in buffer manager(Vadim)
3380 Allow strings to span lines, like ANSI(Thomas)
3381 Fix for backward cursor with ORDER BY(Vadim)
3382 Fix avg(cash) computation(Thomas)
3383 Fix for specifying a column twice in ORDER/GROUP BY(Vadim)
3384 Documented new libpq function to return affected rows, PQcmdTuples(Bruce)
3385 Trigger function for inserting user names for INSERT/UPDATE(Brook Milligan)
3386      </programlisting>
3387     </para>
3388    </sect2>
3389   </sect1>
3390
3391 <sect1 id="release-6-2">
3392 <title>Release 6.2</title>
3393
3394    <note>
3395    <title>Release date</title>
3396    <simpara>1997-10-02</simpara>
3397    </note>
3398
3399 <para>
3400 A dump/restore is required for those wishing to migrate data from
3401 previous releases of <productname>PostgreSQL</productname>.
3402 </para>
3403
3404 <sect2>
3405 <title>Migration from version 6.1 to version 6.2</title>
3406
3407 <para>
3408 This migration requires a complete dump of the 6.1 database and a
3409 restore of the database in 6.2.
3410 </para>
3411 <para>
3412 Note that the <command>pg_dump</command> and <command>pg_dumpall</command> utility from 6.2 should be used
3413 to dump the 6.1 database.
3414 </para>
3415 </sect2>
3416
3417 <sect2>
3418 <title>Migration from version 1.<replaceable>x</> to version 6.2</title>
3419
3420 <para>
3421 Those migrating from earlier 1.* releases should first upgrade to 1.09
3422 because the COPY output format was improved from the 1.02 release.
3423 </para>
3424 </sect2>
3425
3426    <sect2>
3427     <title>Changes</title>
3428
3429     <para>
3430      <programlisting>
3431 Bug Fixes
3432 ---------
3433 Fix problems with pg_dump for inheritance, sequences, archive tables(Bruce)
3434 Fix compile errors on overflow due to shifts, unsigned, and bad prototypes
3435          from Solaris(Diab Jerius)
3436 Fix bugs in geometric line arithmetic (bad intersection calculations)(Thomas)
3437 Check for geometric intersections at endpoints to avoid rounding ugliness(Thomas)
3438 Catch non-functional delete attempts(Vadim)
3439 Change time function names to be more consistent(Michael Reifenberg)
3440 Check for zero divides(Michael Reifenberg)
3441 Fix very old bug which made tuples changed/inserted by a commnd
3442         visible to the command itself (so we had multiple update of 
3443         updated tuples, etc)(Vadim)
3444 Fix for SELECT null, 'fail' FROM pg_am (Patrick)
3445 SELECT NULL as EMPTY_FIELD now allowed(Patrick)
3446 Remove un-needed signal stuff from contrib/pginterface
3447 Fix OR (where x != 1 or x isnull didn't return tuples with x NULL) (Vadim)
3448 Fix time_cmp function (Vadim)
3449 Fix handling of functions with non-attribute first argument in 
3450         WHERE clauses (Vadim)
3451 Fix GROUP BY when order of entries is different from order
3452         in target list (Vadim)
3453 Fix pg_dump for aggregates without sfunc1 (Vadim)
3454
3455 Enhancements
3456 ------------
3457 Default genetic optimizer GEQO parameter is now 8(Bruce)
3458 Allow use parameters in target list having aggregates in functions(Vadim)
3459 Added JDBC driver as an interface(Adrian & Peter)
3460 pg_password utility
3461 Return number of tuples inserted/affected by INSERT/UPDATE/DELETE etc.(Vadim)
3462 Triggers implemented with CREATE TRIGGER (SQL3)(Vadim)
3463 SPI (Server Programming Interface) allows execution of queries inside 
3464         C-functions (Vadim)
3465 NOT NULL implemented (SQL92)(Robson Paniago de Miranda)
3466 Include reserved words for string handling, outer joins, and unions(Thomas)
3467 Implement extended comments ("/* ... */") using exclusive states(Thomas)
3468 Add "//" single-line comments(Bruce)
3469 Remove some restrictions on characters in operator names(Thomas)
3470 DEFAULT and CONSTRAINT for tables implemented (SQL92)(Vadim & Thomas)
3471 Add text concatenation operator and function (SQL92)(Thomas)
3472 Support WITH TIME ZONE syntax (SQL92)(Thomas)
3473 Support INTERVAL unit TO unit syntax (SQL92)(Thomas)
3474 Define types DOUBLE PRECISION, INTERVAL, CHARACTER,
3475         and CHARACTER VARYING (SQL92)(Thomas)
3476 Define type FLOAT(p) and rudimentary DECIMAL(p,s), NUMERIC(p,s) (SQL92)(Thomas)
3477 Define EXTRACT(), POSITION(), SUBSTRING(), and TRIM() (SQL92)(Thomas)
3478 Define CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP (SQL92)(Thomas)
3479 Add syntax and warnings for UNION, HAVING, INNER and OUTER JOIN (SQL92)(Thomas)
3480 Add more reserved words, mostly for SQL92 compliance(Thomas)
3481 Allow hh:mm:ss time entry for timespan/reltime types(Thomas)
3482 Add center() routines for lseg, path, polygon(Thomas)
3483 Add distance() routines for circle-polygon, polygon-polygon(Thomas)
3484 Check explicitly for points and polygons contained within polygons
3485         using an axis-crossing algorithm(Thomas)
3486 Add routine to convert circle-box(Thomas)
3487 Merge conflicting operators for different geometric data types(Thomas)
3488 Replace distance operator "<===>" with "<->"(Thomas)
3489 Replace "above" operator "!^" with ">^" and "below" operator "!|" with "<^"(Thomas)
3490 Add routines for text trimming on both ends, substring, and string position(Thomas)
3491 Added conversion routines circle(box) and poly(circle)(Thomas)
3492 Allow internal sorts to be stored in memory rather than in files(Bruce & Vadim)
3493 Allow functions and operators on internally-identical types to succeed(Bruce)
3494 Speed up backend start-up after profiling analysis(Bruce)
3495 Inline frequently called functions for performance(Bruce)
3496 Reduce open() calls(Bruce)
3497 psql:  Add PAGER for \h and \?,\C fix
3498 Fix for psql pager when no tty(Bruce)
3499 New entab utility(Bruce)
3500 General trigger functions for referential integrity (Vadim)
3501 General trigger functions for time travel (Vadim)
3502 General trigger functions for AUTOINCREMENT/IDENTITY feature (Vadim)
3503 MOVE implementation (Vadim)
3504
3505 Source Tree Changes
3506 -------------------
3507 HP-UX 10 patches (Vladimir Turin)
3508 Added SCO support, (Daniel Harris)
3509 MkLinux patches (Tatsuo Ishii)
3510 Change geometric box terminology from "length" to "width"(Thomas)
3511 Deprecate temporary unstored slope fields in geometric code(Thomas)
3512 Remove restart instructions from INSTALL(Bruce)
3513 Look in /usr/ucb first for install(Bruce)
3514 Fix c++ copy example code(Thomas)
3515 Add -o to psql manual page(Bruce)
3516 Prevent relname unallocated string length from being copied into database(Bruce)
3517 Cleanup for NAMEDATALEN use(Bruce)
3518 Fix pg_proc names over 15 chars in output(Bruce)
3519 Add strNcpy() function(Bruce)
3520 remove some (void) casts that are unnecessary(Bruce)
3521 new interfaces directory(Marc)
3522 Replace fopen() calls with calls to fd.c functions(Bruce)
3523 Make functions static where possible(Bruce)
3524 enclose unused functions in #ifdef NOT_USED(Bruce)
3525 Remove call to difftime() in timestamp support to fix SunOS(Bruce & Thomas)
3526 Changes for Digital Unix
3527 Portability fix for pg_dumpall(Bruce)
3528 Rename pg_attribute.attnvals to attdispersion(Bruce)
3529 "intro/unix" manual page now "pgintro"(Bruce)
3530 "built-in" manual page now "pgbuiltin"(Bruce)
3531 "drop" manual page now "drop_table"(Bruce)
3532 Add "create_trigger", "drop_trigger" manual pages(Thomas)
3533 Add constraints regression test(Vadim & Thomas)
3534 Add comments syntax regression test(Thomas)
3535 Add PGINDENT and support program(Bruce)
3536 Massive commit to run PGINDENT on all *.c and *.h files(Bruce)
3537 Files moved to /src/tools directory(Bruce)
3538 SPI and Trigger programming guides (Vadim & D'Arcy)
3539 </programlisting>
3540 </para>
3541 </sect2>
3542 </sect1>
3543
3544 <sect1 id="release-6-1-1">
3545 <title>Release 6.1.1</title>
3546
3547    <note>
3548    <title>Release date</title>
3549    <simpara>1997-07-22</simpara>
3550    </note>
3551
3552 <sect2>
3553 <title>Migration from version 6.1 to version 6.1.1</title>
3554
3555 <para>
3556 This is a minor bug-fix release. A dump/reload is not required from version 6.1,
3557 but is required from any release prior to 6.1.
3558 Refer to the release notes for 6.1 for more details.
3559 </para>
3560 </sect2>
3561
3562    <sect2>
3563     <title>Changes</title>
3564
3565     <para>
3566      <programlisting>
3567 fix for SET with options (Thomas)
3568 allow pg_dump/pg_dumpall to preserve ownership of all tables/objects(Bruce)
3569 new psql \connect option allows changing usernames without changing databases
3570 fix for initdb --debug option(Yoshihiko Ichikawa))
3571 lextest cleanup(Bruce)
3572 hash fixes(Vadim)
3573 fix date/time month boundary arithmetic(Thomas)
3574 fix timezone daylight handling for some ports(Thomas, Bruce, Tatsuo)
3575 timestamp overhauled to use standard functions(Thomas)
3576 other code cleanup in date/time routines(Thomas)
3577 psql's \d now case-insensitive(Bruce)
3578 psql's backslash commands can now have trailing semicolon(Bruce)
3579 fix memory leak in psql when using \g(Bruce)
3580 major fix for endian handling of communication to server(Thomas, Tatsuo)
3581 Fix for Solaris assembler and include files(Yoshihiko Ichikawa)
3582 allow underscores in usernames(Bruce)
3583 pg_dumpall now returns proper status, portability fix(Bruce)
3584      </programlisting>
3585     </para>
3586    </sect2>
3587   </sect1>
3588
3589 <sect1 id="release-6-1">
3590 <title>Release 6.1</title>
3591
3592    <note>
3593    <title>Release date</title>
3594    <simpara>1997-06-08</simpara>
3595    </note>
3596
3597 <para>
3598   The regression tests have been adapted and extensively modified for the
3599   6.1 release of <productname>PostgreSQL</productname>.
3600 </para>
3601
3602 <para>
3603   Three new data types (<type>datetime</type>, <type>timespan</type>, and <type>circle</type>) have been added to
3604   the native set of <productname>PostgreSQL</productname> types. Points, boxes, paths, and polygons
3605   have had their output formats made consistent across the data types.
3606   The polygon output in misc.out has only been spot-checked for correctness
3607   relative to the original regression output.
3608 </para>
3609
3610 <para>
3611   <productname>PostgreSQL</productname> 6.1 introduces a new, alternate
3612 optimizer which uses <firstterm>genetic</firstterm>
3613   algorithms. These algorithms introduce a random behavior in the ordering
3614   of query results when the query contains multiple qualifiers or multiple
3615   tables (giving the optimizer a choice on order of evaluation). Several
3616   regression tests have been modified to explicitly order the results, and
3617   hence are insensitive to optimizer choices. A few regression tests are
3618   for data types which are inherently unordered (e.g. points and time
3619   intervals) and tests involving those types are explicitly bracketed with
3620   <command>set geqo to 'off'</command> and <command>reset geqo</command>.
3621 </para>
3622
3623 <para>
3624   The interpretation of array specifiers (the curly braces around atomic
3625   values) appears to have changed sometime after the original regression
3626   tests were generated. The current <filename>./expected/*.out</filename> files reflect this
3627   new interpretation, which may not be correct!
3628 </para>
3629
3630 <para>
3631   The float8 regression test fails on at least some platforms. This is due
3632   to differences in implementations of <function>pow()</function> and <function>exp()</function> and the signaling
3633   mechanisms used for overflow and underflow conditions.
3634 </para>
3635
3636 <para>
3637   The <quote>random</> results in the random test should cause the
3638   <quote>random</quote> test to be <quote>failed</quote>, since the
3639   regression tests are evaluated using a simple diff. However,
3640   <quote>random</> does not seem to produce random results on my test
3641   machine (Linux/<application>gcc</>/i686).
3642 </para>
3643
3644 <sect2>
3645 <title>Migration to version 6.1</title>
3646
3647 <para>
3648 This migration requires a complete dump of the 6.0 database and a
3649 restore of the database in 6.1.
3650 </para>
3651 <para>
3652 Those migrating from earlier 1.* releases should first upgrade to 1.09
3653 because the COPY output format was improved from the 1.02 release.
3654 </para>
3655 </sect2>
3656
3657    <sect2>
3658     <title>Changes</title>
3659
3660     <para>
3661      <programlisting>
3662 Bug Fixes
3663 ---------
3664 packet length checking in library routines
3665 lock manager priority patch
3666 check for under/over flow of float8(Bruce)
3667 multitable join fix(Vadim)
3668 SIGPIPE crash fix(Darren)
3669 large object fixes(Sven)
3670 allow btree indexes to handle NULLs(Vadim)
3671 timezone fixes(D'Arcy)
3672 select SUM(x) can return NULL on no rows(Thomas)
3673 internal optimizer, executor bug fixes(Vadim)
3674 fix problem where inner loop in < or <= has no rows(Vadim)
3675 prevent re-commuting join index clauses(Vadim)
3676 fix join clauses for multiple tables(Vadim)
3677 fix hash, hashjoin for arrays(Vadim)
3678 fix btree for abstime type(Vadim)
3679 large object fixes(Raymond)
3680 fix buffer leak in hash indexes (Vadim)
3681 fix rtree for use in inner scan (Vadim)
3682 fix gist for use in inner scan, cleanups (Vadim, Andrea)
3683 avoid unnecessary local buffers allocation (Vadim, Massimo)
3684 fix local buffers leak in transaction aborts (Vadim)
3685 fix file manager memmory leaks, cleanups (Vadim, Massimo)
3686 fix storage manager memmory leaks (Vadim)
3687 fix btree duplicates handling (Vadim)
3688 fix deleted tuples re-incarnation caused by vacuum (Vadim)
3689 fix SELECT varchar()/char() INTO TABLE made zero-length fields(Bruce)
3690 many psql, pg_dump, and libpq memory leaks fixed using Purify (Igor)
3691
3692 Enhancements
3693 ------------
3694 attribute optimization statistics(Bruce)
3695 much faster new btree bulk load code(Paul)
3696 BTREE UNIQUE added to bulk load code(Vadim) 
3697 new lock debug code(Massimo)
3698 massive changes to libpg++(Leo)
3699 new GEQO optimizer speeds table multitable optimization(Martin)
3700 new WARN message for non-unique insert into unique key(Marc)
3701 update x=-3, no spaces, now valid(Bruce)
3702 remove case-sensitive identifier handling(Bruce,Thomas,Dan)
3703 debug backend now pretty-prints tree(Darren)
3704 new Oracle character functions(Edmund)
3705 new plaintext password functions(Dan)
3706 no such class or insufficient privilege changed to distinct messages(Dan)
3707 new ANSI timestamp function(Dan)
3708 new ANSI Time and Date types (Thomas)
3709 move large chunks of data in backend(Martin)
3710 multicolumn btree indexes(Vadim)
3711 new SET var TO value command(Martin)
3712 update transaction status on reads(Dan)
3713 new locale settings for character types(Oleg)
3714 new SEQUENCE serial number generator(Vadim)
3715 GROUP BY function now possible(Vadim)
3716 re-organize regression test(Thomas,Marc)
3717 new optimizer operation weights(Vadim)
3718 new psql \z grant/permit option(Marc)
3719 new MONEY data type(D'Arcy,Thomas)
3720 tcp socket communication speed improved(Vadim)
3721 new VACUUM option for attribute statistics, and for certain columns (Vadim)
3722 many geometric type improvements(Thomas,Keith)
3723 additional regression tests(Thomas)
3724 new datestyle variable(Thomas,Vadim,Martin)
3725 more comparison operators for sorting types(Thomas)
3726 new conversion functions(Thomas)
3727 new more compact btree format(Vadim)
3728 allow pg_dumpall to preserve database ownership(Bruce)
3729 new SET GEQO=# and R_PLANS variable(Vadim)
3730 old (!GEQO) optimizer can use right-sided plans (Vadim)
3731 typechecking improvement in SQL parser(Bruce)
3732 new SET, SHOW, RESET commands(Thomas,Vadim)
3733 new \connect database USER option
3734 new destroydb -i option (Igor)
3735 new \dt and \di psql commands (Darren)
3736 SELECT "\n" now escapes newline (A. Duursma)
3737 new geometry conversion functions from old format (Thomas)
3738
3739 Source tree changes
3740 -------------------
3741 new configuration script(Marc)
3742 readline configuration option added(Marc)
3743 OS-specific configuration options removed(Marc)
3744 new OS-specific template files(Marc)
3745 no more need to edit Makefile.global(Marc)
3746 re-arrange include files(Marc)
3747 nextstep patches (Gregor Hoffleit)
3748 removed WIN32-specific code(Bruce)
3749 removed postmaster -e option, now only postgres -e option (Bruce)
3750 merge duplicate library code in front/backends(Martin)
3751 now works with eBones, international Kerberos(Jun)
3752 more shared library support
3753 c++ include file cleanup(Bruce)
3754 warn about buggy flex(Bruce)
3755 DG/UX, Ultrix, IRIX, AIX portability fixes
3756 </programlisting>
3757 </para>
3758 </sect2>
3759 </sect1>
3760
3761 <sect1 id="release-6-0">
3762 <title>Release 6.0</title>
3763
3764    <note>
3765    <title>Release date</title>
3766    <simpara>1997-01-29</simpara>
3767    </note>
3768
3769 <para>
3770 A dump/restore is required for those wishing to migrate data from
3771 previous releases of <productname>PostgreSQL</productname>.
3772 </para>
3773
3774 <sect2>
3775 <title>Migration from version 1.09 to version 6.0</title>
3776
3777 <para>
3778 This migration requires a complete dump of the 1.09 database and a
3779 restore of the database in 6.0.
3780 </para>
3781 </sect2>
3782
3783 <sect2>
3784 <title>Migration from pre-1.09 to version 6.0</title>
3785
3786 <para>
3787 Those migrating from earlier 1.* releases should first upgrade to 1.09
3788 because the COPY output format was improved from the 1.02 release.
3789 </para>
3790 </sect2>
3791
3792    <sect2>
3793     <title>Changes</title>
3794
3795     <para>
3796      <programlisting>
3797 Bug Fixes
3798 ---------
3799 ALTER TABLE bug - running postgress process needs to re-read table definition
3800 Allow vacuum to be run on one table or entire database(Bruce)
3801 Array fixes
3802 Fix array over-runs of memory writes(Kurt)
3803 Fix elusive btree range/non-range bug(Dan)
3804 Fix for hash indexes on some types like time and date
3805 Fix for pg_log size explosion
3806 Fix permissions on lo_export()(Bruce)
3807 Fix unitialized reads of memory(Kurt)
3808 Fixed ALTER TABLE ... char(3) bug(Bruce)
3809 Fixed a few small memory leaks
3810 Fixed EXPLAIN handling of options and changed full_path option name
3811 Fixed output of group acl permissions
3812 Memory leaks (hunt and destroy with tools like Purify(Kurt)
3813 Minor improvements to rules system
3814 NOTIFY fixes
3815 New asserts for run-checking
3816 Overhauled parser/analyze code to properly report errors and increase speed
3817 Pg_dump -d now handles NULL's properly(Bruce)
3818 Prevent SELECT NULL from crashing server (Bruce)
3819 Properly report errors when INSERT ... SELECT columns did not match
3820 Properly report errors when insert column names were not correct
3821 Psql \g filename now works(Bruce)
3822 Psql fixed problem with multiple statements on one line with multiple outputs
3823 Removed duplicate system OIDs
3824 SELECT * INTO TABLE . GROUP/ORDER BY gives unlink error if table exists(Bruce)
3825 Several fixes for queries that crashed the backend
3826 Starting quote in insert string errors(Bruce)
3827 Submitting an empty query now returns empty status, not just " " query(Bruce)
3828
3829 Enhancements
3830 ------------
3831 Add EXPLAIN manual page(Bruce)
3832 Add UNIQUE index capability(Dan)
3833 Add hostname/user level access control rather than just hostname and user
3834 Add synonym of != for &lt;&gt;(Bruce)
3835 Allow "select oid,* from table"
3836 Allow BY,ORDER BY to specify columns by number, or by non-alias table.column(Bruce)
3837 Allow COPY from the frontend(Bryan)
3838 Allow GROUP BY to use alias column name(Bruce)
3839 Allow actual compression, not just reuse on the same page(Vadim)
3840 Allow installation-configuration option to auto-add all local users(Bryan)
3841 Allow libpq to distinguish between text value '' and null(Bruce)
3842 Allow non-postgres users with createdb privs to destroydb's
3843 Allow restriction on who can create C functions(Bryan)
3844 Allow restriction on who can do backend COPY(Bryan)
3845 Can shrink tables, pg_time and pg_log(Vadim & Erich)
3846 Change debug level 2 to print queries only, changed debug heading layout(Bruce)
3847 Change default decimal constant representation from float4 to float8(Bruce)
3848 European date format now set when postmaster is started
3849 Execute lowercase function names if not found with exact case
3850 Fixes for aggregate/GROUP processing, allow 'select sum(func(x),sum(x+y) from z'
3851 Gist now included in the distrubution(Marc)
3852 Idend authentication of local users(Bryan)
3853 Implement BETWEEN qualifier(Bruce)
3854 Implement IN qualifier(Bruce)
3855 Libpq has PQgetisnull()(Bruce)
3856 Libpq++ improvements
3857 New options to initdb(Bryan)
3858 Pg_dump allow dump of OIDs(Bruce)
3859 Pg_dump create indexes after tables are loaded for speed(Bruce)
3860 Pg_dumpall dumps all databases, and the user table
3861 Pginterface additions for NULL values(Bruce)
3862 Prevent postmaster from being run as root
3863 Psql \h and \? is now readable(Bruce)
3864 Psql allow backslashed, semicolons anywhere on the line(Bruce)
3865 Psql changed command prompt for lines in query or in quotes(Bruce)
3866 Psql char(3) now displays as (bp)char in \d output(Bruce)
3867 Psql return code now more accurate(Bryan?)
3868 Psql updated help syntax(Bruce)
3869 Re-visit and fix vacuum(Vadim)
3870 Reduce size of regression diffs, remove timezone name difference(Bruce)
3871 Remove compile-time parameters to enable binary distributions(Bryan)
3872 Reverse meaning of HBA masks(Bryan)
3873 Secure Authentication of local users(Bryan)
3874 Speed up vacuum(Vadim)
3875 Vacuum now had VERBOSE option(Bruce)
3876
3877 Source tree changes
3878 -------------------
3879 All functions now have prototypes that are compared against the calls
3880 Allow asserts to be disabled easly from Makefile.global(Bruce)
3881 Change oid constants used in code to #define names
3882 Decoupled sparc and solaris defines(Kurt)
3883 Gcc -Wall compiles cleanly with warnings only from unfixable constructs
3884 Major include file reorganization/reduction(Marc)
3885 Make now stops on compile failure(Bryan)
3886 Makefile restructuring(Bryan, Marc)
3887 Merge bsdi_2_1 to bsdi(Bruce)
3888 Monitor program removed
3889 Name change from Postgres95 to PostgreSQL
3890 New config.h file(Marc, Bryan)
3891 PG_VERSION now set to 6.0 and used by postmaster
3892 Portability additions, including Ultrix, DG/UX, AIX, and Solaris
3893 Reduced the number of #define's, centeralized #define's
3894 Remove duplicate OIDS in system tables(Dan)
3895 Remove duplicate system catalog info or report mismatches(Dan)
3896 Removed many os-specific #define's
3897 Restructured object file generation/location(Bryan, Marc)
3898 Restructured port-specific file locations(Bryan, Marc)
3899 Unused/uninialized variables corrected
3900 </programlisting>
3901 </para>
3902 </sect2>
3903 </sect1>
3904
3905 <sect1 id="release-1-09">
3906 <title>Release 1.09</title>
3907
3908    <note>
3909    <title>Release date</title>
3910    <simpara>1996-11-04</simpara>
3911    </note>
3912
3913 <para>
3914 Sorry, we didn't keep track of changes from 1.02 to 1.09.  Some of
3915 the changes listed in 6.0 were actually included in the 1.02.1 to 1.09
3916 releases.
3917 </para>
3918 </sect1>
3919
3920 <sect1 id="release-1-02">
3921 <title>Release 1.02</title>
3922
3923    <note>
3924    <title>Release date</title>
3925    <simpara>1996-08-01</simpara>
3926    </note>
3927
3928 <sect2>
3929 <title>Migration from version 1.02 to version 1.02.1</title>
3930
3931 <para>
3932 Here is a new migration file for 1.02.1.  It includes the 'copy' change
3933 and a script to convert old <acronym>ASCII</acronym> files.
3934 </para>
3935 <note>
3936 <para>
3937 The following notes are for the benefit of users who want to migrate
3938 databases from <productname>Postgres95</> 1.01 and 1.02 to <productname>Postgres95</> 1.02.1.
3939 </para>
3940 <para>
3941 If you are starting afresh with <productname>Postgres95</> 1.02.1 and do not need
3942 to migrate old databases, you do not need to read any further.
3943 </para>
3944 </note>
3945
3946 <para>
3947 In order to upgrade older <productname>Postgres95</> version 1.01 or 1.02 databases to
3948 version 1.02.1, the following steps are required:
3949 </para>
3950 <procedure>
3951 <step>
3952 <para>
3953 Start up a new 1.02.1 postmaster
3954 </para>
3955 </step>
3956 <step>
3957 <para>
3958 Add the new built-in functions and operators of 1.02.1 to 1.01 or 1.02
3959    databases.  This is done by running the new 1.02.1 server against
3960    your own 1.01 or 1.02 database and applying the queries attached at
3961    the end of the file.   This can be done easily through <command>psql</>.  If your
3962    1.01 or 1.02 database is named <literal>testdb</literal> and you have cut the commands
3963    from the end of this file and saved them in <filename>addfunc.sql</filename>:
3964 <programlisting>
3965         % psql testdb -f addfunc.sql
3966 </programlisting>
3967
3968 Those upgrading 1.02 databases will get a warning when executing the
3969 last two statements in the file because they are already present in 1.02.  This is
3970 not a cause for concern.
3971 </para>
3972 </step>
3973 </procedure>
3974 </sect2>
3975
3976 <sect2>
3977 <title>Dump/Reload Procedure</title>
3978
3979 <para>
3980 If you are trying to reload a pg_dump or text-mode, <literal>copy tablename to
3981 stdout</literal> generated with a previous version, you will need to run the
3982 attached <command>sed</command> script on the ASCII file before loading it into the
3983 database.  The old format used '.' as end-of-data, while '\.' is now the
3984 end-of-data marker.  Also, empty strings are now loaded in as '' rather
3985 than NULL. See the copy manual page for full details.
3986
3987 <programlisting>
3988         sed 's/^\.$/\\./g' &lt;in_file &gt;out_file
3989 </programlisting>
3990 </para>
3991 <para>
3992 If you are loading an older binary copy or non-<systemitem>stdout</> copy, there is no
3993 end-of-data character, and hence no conversion necessary.
3994
3995 <programlisting>
3996 -- following lines added by agc to reflect the case-insensitive
3997 -- regexp searching for varchar (in 1.02), and bpchar (in 1.02.1)
3998 create operator ~* (leftarg = bpchar, rightarg = text, procedure = texticregexeq);
3999 create operator !~* (leftarg = bpchar, rightarg = text, procedure = texticregexne);
4000 create operator ~* (leftarg = varchar, rightarg = text, procedure = texticregexeq);
4001 create operator !~* (leftarg = varchar, rightarg = text, procedure = texticregexne);
4002 </programlisting>
4003 </para>
4004 </sect2>
4005
4006 <sect2>
4007 <title>Changes</title>
4008
4009 <para>
4010 <programlisting>
4011 Source code maintenance and development
4012  * worldwide team of volunteers
4013  * the source tree now in CVS at ftp.ki.net
4014
4015 Enhancements
4016  * psql (and underlying libpq library) now has many more options for
4017    formatting output, including HTML
4018  * pg_dump now output the schema and/or the data, with many fixes to
4019    enhance completeness.
4020  * psql used in place of monitor in administration shell scripts.
4021    monitor to be depreciated in next release.
4022  * date/time functions enhanced
4023  * NULL insert/update/comparison fixed/enhanced
4024  * TCL/TK lib and shell fixed to work with both tck7.4/tk4.0 and tcl7.5/tk4.1
4025
4026 Bug Fixes (almost too numerous to mention)
4027  * indexes
4028  * storage management
4029  * check for NULL pointer before dereferencing
4030  * Makefile fixes
4031
4032 New Ports
4033  * added SolarisX86 port
4034  * added BSD/OS 2.1 port
4035  * added DG/UX port
4036 </programlisting>
4037 </para>
4038 <!--
4039 Contributors (appologies to any missed)
4040  * Kurt J. Lidl <lidl@va.pubnix.com> 
4041         (missed in first run, but no less important)
4042  * Erich Stamberger <eberger@gewi.kfunigraz.ac.at>
4043  * Jason Wright <jason@shiloh.vnet.net>
4044  * Cees de Groot <C.deGroot@inter.NL.net>
4045  * ernst.molitor@uni-bonn.de
4046  * michael.siebenborn@ae3.Hypo.DE (Michael Siebenborn (6929))
4047  * Brian E. Gallew <geek+@cmu.edu>
4048  * Vadim B. Mikheev <vadim@sable.krasnoyarsk.su>
4049  * Adam Sussman <myddryn@vidya.com>
4050  * Chris Dunlop <chris@onthe.net.au>
4051  * Marc G. Fournier <scrappy@ki.net>
4052  * Dan McGuirk <mcguirk@indirect.com>
4053  * Dr_George_D_Detlefsen <drgeorge@ilt.com>
4054  * Erich Stamberger <eberger@gewi.kfunigraz.ac.at>
4055  * Massimo Dal Zotto <dz@cs.unitn.it>
4056  * Randy Kunkee <kunkee@Starbase.NeoSoft.COM>
4057  * Rick Weldon <rick@wisetech.com>
4058  * Thomas van Reimersdahl <reimersd@dali.techinfo.rwth-aachen.de>
4059  * david bennett <dave@bensoft.com>
4060  * ernst.molitor@uni-bonn.de
4061  * Julian Assange <proff@suburbia.net>
4062  * Bruce Momjian <maillist@candle.pha.pa.us>
4063  * Paul "Shag" Walmsley <ccshag@cclabs.missouri.edu>
4064  * "Alistair G. Crooks" <azcb0@sde.uts.amdahl.com>
4065 -->
4066 </sect2>
4067 </sect1>
4068
4069 <sect1 id="release-1-01">
4070 <title>Release 1.01</title>
4071
4072    <note>
4073    <title>Release date</title>
4074    <simpara>1996-02-23</simpara>
4075    </note>
4076
4077
4078 <sect2>
4079 <title>Migration from version 1.0 to version 1.01</title>
4080
4081 <para>
4082 The following notes are for the benefit of users who want to migrate
4083 databases from <productname>Postgres95</> 1.0 to <productname>Postgres95</> 1.01.  
4084 </para>
4085 <para>
4086 If you are starting afresh with <productname>Postgres95</> 1.01 and do not need
4087 to migrate old databases, you do not need to read any further.
4088 </para>
4089 <para>
4090 In order to <productname>Postgres95</> version 1.01 with databases created with
4091 <productname>Postgres95</> version 1.0, the following steps are required:  
4092 </para>
4093 <procedure>
4094 <step>
4095 <para>
4096 Set the definition of <symbol>NAMEDATALEN</symbol> in <filename>src/Makefile.global</filename> to 16
4097    and <symbol>OIDNAMELEN</symbol> to 20.
4098 </para>
4099 </step>
4100 <step>
4101 <para>
4102 Decide whether you want to use Host based authentication.  
4103 </para>
4104 <substeps>
4105 <step>
4106 <para>
4107 If you do, you must create a file name <literal>pg_hba</literal> in your top-level data
4108    directory (typically the value of your <envar>$PGDATA</envar>).  <filename>src/libpq/pg_hba</filename>
4109    shows an example syntax.
4110 </para>
4111 </step>
4112 <step>
4113 <para>
4114 If you do not want host-based authentication, you can comment out
4115    the line
4116 <programlisting>
4117         HBA = 1
4118 </programlisting>
4119    in <filename>src/Makefile.global</filename>
4120 </para>
4121 <para>
4122    Note that host-based authentication is turned on by default, and if
4123    you do not take steps A or B above, the out-of-the-box 1.01 will
4124    not allow you to connect to 1.0 databases.
4125 </para>
4126 </step>
4127 </substeps>
4128 </step>
4129
4130 <step>
4131 <para>
4132 Compile and install 1.01, but DO NOT do the <command>initdb</command> step.
4133 </para>
4134 </step>
4135 <step>
4136 <para>
4137 Before doing anything else, terminate your 1.0 postmaster, and
4138    backup your existing <envar>$PGDATA</envar> directory.   
4139 </para>
4140 </step>
4141 <step>
4142 <para>
4143 Set your <envar>PGDATA</envar> environment variable to your 1.0 databases, but set up
4144    path up so that 1.01 binaries are being used.
4145 </para>
4146 </step>
4147 <step>
4148 <para>
4149 Modify the file <filename><envar>$PGDATA</envar>/PG_VERSION</filename> from 5.0 to 5.1
4150 </para>
4151 </step>
4152 <step>
4153 <para>
4154 Start up a new 1.01 postmaster
4155 </para>
4156 </step>
4157 <step>
4158 <para>
4159 Add the new built-in functions and operators of 1.01 to 1.0
4160    databases.  This is done by running the new 1.01 server against
4161    your own 1.0 database and applying the queries attached and saving 
4162    in the file 1.0_to_1.01.sql.   This can be done easily through <command>psql</command>.
4163    If your 1.0 database is name <literal>testdb</literal>:
4164
4165 <programlisting>
4166         % psql testdb -f 1.0_to_1.01.sql
4167 </programlisting>
4168
4169 and then execute the following commands (cut and paste from here):
4170
4171 <programlisting>
4172 -- add builtin functions that are new to 1.01
4173
4174 create function int4eqoid (int4, oid) returns bool as 'foo'
4175 language 'internal';
4176 create function oideqint4 (oid, int4) returns bool as 'foo'
4177 language 'internal';
4178 create function char2icregexeq (char2, text) returns bool as 'foo'
4179 language 'internal';
4180 create function char2icregexne (char2, text) returns bool as 'foo'
4181 language 'internal';
4182 create function char4icregexeq (char4, text) returns bool as 'foo'
4183 language 'internal';
4184 create function char4icregexne (char4, text) returns bool as 'foo'
4185 language 'internal';
4186 create function char8icregexeq (char8, text) returns bool as 'foo'
4187 language 'internal';
4188 create function char8icregexne (char8, text) returns bool as 'foo'
4189 language 'internal';
4190 create function char16icregexeq (char16, text) returns bool as 'foo'
4191 language 'internal';
4192 create function char16icregexne (char16, text) returns bool as 'foo'
4193 language 'internal';
4194 create function texticregexeq (text, text) returns bool as 'foo'
4195 language 'internal';
4196 create function texticregexne (text, text) returns bool as 'foo'
4197 language 'internal';
4198
4199 -- add builtin functions that are new to 1.01
4200
4201 create operator = (leftarg = int4, rightarg = oid, procedure = int4eqoid);
4202 create operator = (leftarg = oid, rightarg = int4, procedure = oideqint4);
4203 create operator ~* (leftarg = char2, rightarg = text, procedure = char2icregexeq);
4204 create operator !~* (leftarg = char2, rightarg = text, procedure = char2icregexne);
4205 create operator ~* (leftarg = char4, rightarg = text, procedure = char4icregexeq);
4206 create operator !~* (leftarg = char4, rightarg = text, procedure = char4icregexne);
4207 create operator ~* (leftarg = char8, rightarg = text, procedure = char8icregexeq);
4208 create operator !~* (leftarg = char8, rightarg = text, procedure = char8icregexne);
4209 create operator ~* (leftarg = char16, rightarg = text, procedure = char16icregexeq);
4210 create operator !~* (leftarg = char16, rightarg = text, procedure = char16icregexne);
4211 create operator ~* (leftarg = text, rightarg = text, procedure = texticregexeq);
4212 create operator !~* (leftarg = text, rightarg = text, procedure = texticregexne);
4213 </programlisting>
4214 </para>
4215 </step>
4216 </procedure>
4217 </sect2>
4218
4219 <sect2>
4220 <title>Changes</title>
4221
4222 <para>
4223 <programlisting>
4224 Incompatibilities:
4225  * 1.01 is backwards compatible with 1.0 database provided the user
4226    follow the steps outlined in the MIGRATION_from_1.0_to_1.01 file.
4227    If those steps are not taken, 1.01 is not compatible with 1.0 database.
4228
4229 Enhancements:
4230  * added PQdisplayTuples() to libpq and changed monitor and psql to use it
4231  * added NeXT port (requires SysVIPC implementation)
4232  * added CAST .. AS ... syntax
4233  * added ASC and DESC keywords
4234  * added 'internal' as a possible language for CREATE FUNCTION
4235    internal functions are C functions which have been statically linked
4236    into the postgres backend.
4237  * a new type "name" has been added for system identifiers (table names,
4238    attribute names, etc.)  This replaces the old char16 type.   The
4239    of name is set by the NAMEDATALEN #define in src/Makefile.global
4240  * a readable reference manual that describes the query language.
4241  * added host-based access control.  A configuration file ($PGDATA/pg_hba)
4242    is used to hold the configuration data.  If host-based access control
4243    is not desired, comment out HBA=1 in src/Makefile.global.
4244  * changed regex handling to be uniform use of Henry Spencer's regex code
4245    regardless of platform.  The regex code is included in the distribution
4246  * added functions and operators for case-insensitive regular expressions. 
4247    The operators are ~* and !~*.
4248  * pg_dump uses COPY instead of SELECT loop for better performance
4249
4250 Bug fixes:
4251  * fixed an optimizer bug that was causing core dumps when 
4252    functions calls were used in comparisons in the WHERE clause
4253  * changed all uses of getuid to geteuid so that effective uids are used
4254  * psql now returns non-zero status on errors when using -c
4255  * applied public patches 1-14
4256 </programlisting>
4257 </para>
4258 </sect2>
4259 </sect1>
4260
4261 <sect1 id="release-1-0">
4262 <title>Release 1.0</title>
4263
4264    <note>
4265    <title>Release date</title>
4266    <simpara>1995-09-05</simpara>
4267    </note>
4268
4269 <sect2>
4270 <title>Changes</title>
4271
4272 <para>
4273 <programlisting>
4274 Copyright change:
4275  * The copyright of <productname>Postgres</productname> 1.0 has been loosened to be freely modifiable
4276    and modifiable for any purpose.  Please read the COPYRIGHT file.
4277    Thanks to Professor Michael Stonebraker for making this possible.
4278
4279 Incompatibilities:
4280  *  date formats have to be MM-DD-YYYY (or DD-MM-YYYY if you're using
4281    EUROPEAN STYLE).  This follows SQL-92 specs.
4282  *  "delimiters" is now a keyword
4283
4284 Enhancements:
4285  *  sql LIKE syntax has been added
4286  *  copy command now takes an optional USING DELIMITER specification.
4287    delimiters can be any single-character string. 
4288  *  IRIX 5.3 port has been added.
4289    Thanks to Paul Walmsley and others.
4290  *  updated pg_dump to work with new libpq
4291  *  \d has been added psql 
4292    Thanks to Keith Parks
4293  *  regexp performance for architectures that use POSIX regex has been
4294    improved due to caching of precompiled patterns.
4295    Thanks to Alistair Crooks
4296  *  a new version of libpq++
4297    Thanks to William Wanders
4298
4299 Bug fixes:
4300  *  arbitrary userids can be specified in the createuser script
4301  *  \c to connect to other databases in psql now works.
4302  *  bad pg_proc entry for float4inc() is fixed
4303  *  users with usecreatedb field set can now create databases without
4304    having to be usesuper
4305  *  remove access control entries when the entry no longer has any
4306    permissions
4307  *  fixed non-portable datetimes implementation
4308  *  added kerberos flags to the src/backend/Makefile
4309  *  libpq now works with kerberos
4310  *  typographic errors in the user manual have been corrected.
4311  *  btrees with multiple index never worked, now we tell you they don't
4312    work when you try to use them
4313 </programlisting>
4314 </para>
4315 </sect2>
4316 </sect1>
4317
4318 <sect1 id="release-0-03">
4319 <title><productname>Postgres95</productname> Release 0.03</title>
4320
4321    <note>
4322    <title>Release date</title>
4323    <simpara>1995-07-21</simpara>
4324    </note>
4325
4326 <sect2>
4327 <title>Changes</title>
4328 <para>
4329 <programlisting>
4330 Incompatible changes:
4331  * BETA-0.3 IS INCOMPATIBLE WITH DATABASES CREATED WITH PREVIOUS VERSIONS
4332    (due to system catalog changes and indexing structure changes).
4333  * double-quote (") is deprecated as a quoting character for string literals;
4334    you need to convert them to single quotes ('). <!-- " -->
4335  * name of aggregates (eg. int4sum) are renamed in accordance with the
4336    SQL standard (eg. sum).
4337  * CHANGE ACL syntax is replaced by GRANT/REVOKE syntax.
4338  * float literals (eg. 3.14) are now of type float4 (instead of float8 in
4339    previous releases); you might have to do typecasting if you depend on it
4340    being of type float8.  If you neglect to do the typecasting and you assign
4341    a float literal to a field of type float8, you may get incorrect values
4342    stored!
4343  * LIBPQ has been totally revamped so that frontend applications
4344    can connect to multiple backends
4345  * the usesysid field in pg_user has been changed from int2 to int4 to
4346    allow wider range of Unix user ids.
4347  * the netbsd/freebsd/bsd o/s ports have been consolidated into a
4348    single BSD44_derived port.  (thanks to Alistair Crooks)
4349
4350 SQL standard-compliance (the following details changes that makes postgres95
4351 more compliant to the SQL-92 standard):
4352  * the following SQL types are now built-in: smallint, int(eger), float, real,
4353    char(N), varchar(N), date and time.
4354
4355    The following are aliases to existing postgres types:
4356                 smallint -> int2
4357                 integer, int -> int4
4358                 float, real  -> float4
4359    char(N) and varchar(N) are implemented as truncated text types. In
4360    addition, char(N) does blank-padding. 
4361  * single-quote (') is used for quoting string literals; '' (in addition to
4362    \') is supported as means of inserting a single quote in a string
4363  * SQL standard aggregate names (MAX, MIN, AVG, SUM, COUNT) are used
4364    (Also, aggregates can now be overloaded, i.e. you can define your
4365    own MAX aggregate to take in a user-defined type.)
4366  * CHANGE ACL removed. GRANT/REVOKE syntax added.  
4367    - Privileges can be given to a group using the "GROUP" keyword.
4368         For example:
4369                 GRANT SELECT ON foobar TO GROUP my_group;
4370         The keyword 'PUBLIC' is also supported to mean all users.       
4371
4372         Privileges can only be granted or revoked to one user or group
4373         at a time.  
4374
4375         "WITH GRANT OPTION" is not supported.  Only class owners can change
4376         access control
4377    - The default access control is to to grant users readonly access.
4378      You must explicitly grant insert/update access to users.  To change
4379      this, modify the line in 
4380                 src/backend/utils/acl.h 
4381      that defines ACL_WORLD_DEFAULT 
4382
4383 Bug fixes:
4384  * the bug where aggregates of empty tables were not run has been fixed. Now,
4385    aggregates run on empty tables will return the initial conditions of the
4386    aggregates. Thus, COUNT of an empty  table will now properly return 0.
4387    MAX/MIN of an empty table will return a tuple of value NULL. 
4388  * allow the use of \; inside the monitor
4389  * the LISTEN/NOTIFY asynchronous notification mechanism now work
4390  * NOTIFY in rule action bodies now work
4391  * hash indexes work, and access methods in general should perform better.
4392    creation of large btree indexes should be much faster.  (thanks to Paul
4393    Aoki)
4394
4395 Other changes and enhancements:
4396  * addition of an EXPLAIN statement used for explaining the query execution
4397    plan (eg. "EXPLAIN SELECT * FROM EMP" prints out the execution plan for
4398    the query).
4399  * WARN and NOTICE messages no longer have timestamps on them. To turn on
4400    timestamps of error messages, uncomment the line in
4401    src/backend/utils/elog.h:
4402         /* define ELOG_TIMESTAMPS */ 
4403  * On an access control violation, the message
4404         "Either no such class or insufficient privilege"
4405    will be given.  This is the same message that is returned when
4406    a class is not found.  This dissuades non-privileged users from
4407    guessing the existence of privileged classes.
4408  * some additional system catalog changes have been made that are not
4409    visible to the user.
4410
4411 libpgtcl changes:
4412  * The -oid option has been added to the "pg_result" tcl command.
4413    pg_result -oid returns oid of the last tuple inserted.   If the
4414    last command was not an INSERT, then pg_result -oid returns "".
4415  * the large object interface is available as pg_lo* tcl commands:
4416    pg_lo_open, pg_lo_close, pg_lo_creat, etc.
4417
4418 Portability enhancements and New Ports:
4419  * flex/lex problems have been cleared up.  Now, you should be able to use
4420    flex instead of lex on any platforms.  We no longer make assumptions of
4421    what lexer you use based on the platform you use. 
4422  * The Linux-ELF port is now supported.  Various configuration have been 
4423    tested:  The following configuration is known to work:
4424         kernel 1.2.10, gcc 2.6.3, libc 4.7.2, flex 2.5.2, bison 1.24
4425    with everything in ELF format,
4426
4427 New utilities:
4428  * ipcclean added to the distribution
4429    ipcclean usually does not need to be run, but if your backend crashes
4430    and leaves shared memory segments hanging around, ipcclean will
4431    clean them up for you.
4432
4433 New documentation:
4434  * the user manual has been revised and libpq documentation added.
4435 </programlisting>
4436 </para>
4437 </sect2>
4438 </sect1>
4439
4440 <sect1 id="release-0-02">
4441 <title><productname>Postgres95</productname> Release 0.02</title>
4442
4443    <note>
4444    <title>Release date</title>
4445    <simpara>1995-05-25</simpara>
4446    </note>
4447
4448 <sect2>
4449 <title>Changes</title>
4450
4451 <para>
4452 <programlisting>
4453 Incompatible changes:
4454  * The SQL statement for creating a database is 'CREATE DATABASE' instead
4455    of 'CREATEDB'. Similarly, dropping a database is 'DROP DATABASE' instead
4456    of 'DESTROYDB'. However, the names of the executables 'createdb' and 
4457    'destroydb' remain the same.
4458  
4459 New tools:
4460  * pgperl - a Perl (4.036) interface to Postgres95
4461  * pg_dump - a utility for dumping out a postgres database into a
4462         script file containing query commands. The script files are in a ASCII
4463         format and can be used to reconstruct the database, even on other
4464         machines and other architectures. (Also good for converting
4465         a Postgres 4.2 database to Postgres95 database.)
4466
4467 The following ports have been incorporated into postgres95-beta-0.02:
4468  * the NetBSD port by Alistair Crooks
4469  * the AIX port by Mike Tung
4470  * the Windows NT port by Jon Forrest (more stuff but not done yet)
4471  * the Linux ELF port by Brian Gallew
4472
4473 The following bugs have been fixed in postgres95-beta-0.02:
4474  * new lines not escaped in COPY OUT and problem with COPY OUT when first
4475    attribute is a '.' 
4476  * cannot type return to use the default user id in createuser
4477  * SELECT DISTINCT on big tables crashes
4478  * Linux installation problems
4479  * monitor doesn't allow use of 'localhost' as PGHOST
4480  * psql core dumps when doing \c or \l
4481  * the "pgtclsh" target missing from src/bin/pgtclsh/Makefile
4482  * libpgtcl has a hard-wired default port number
4483  * SELECT DISTINCT INTO TABLE hangs
4484  * CREATE TYPE doesn't accept 'variable' as the internallength
4485  * wrong result using more than 1 aggregate in a SELECT
4486 </programlisting>
4487 </para>
4488 </sect2>
4489 </sect1>
4490
4491 <sect1 id="release-0-01">
4492 <title><productname>Postgres95</productname> Release 0.01</title>
4493
4494    <note>
4495    <title>Release date</title>
4496    <simpara>1995-05-01</simpara>
4497    </note>
4498
4499 <para>
4500 Initial release.
4501 </para>
4502 </sect1>
4503
4504 <![IGNORE[
4505   <sect1 id="timing-results">
4506    <title>Timing Results</title>
4507
4508    <para>
4509     These timing results are from running the regression test with the commands
4510
4511     <programlisting>
4512 % cd src/test/regress
4513 % make all
4514 % time make runtest
4515     </programlisting>
4516    </para>
4517    <para>
4518     Timing under Linux 2.0.27 seems to have a roughly 5% variation from run
4519     to run, presumably due to the scheduling vagaries of multitasking systems.
4520    </para>
4521
4522    <sect2>
4523     <title>Version 6.5</title>
4524
4525     <para>
4526      As has been the case for previous releases, timing between
4527      releases is not directly comparable since new regression tests
4528      have been added. In general, 6.5 is faster than previous
4529      releases.
4530     </para>
4531
4532     <para>
4533      Timing with <function>fsync()</function> disabled:
4534
4535      <programlisting>
4536   Time   System
4537   02:00  Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486
4538   04:38  Sparc Ultra 1 143MHz, 64MB, Solaris 2.6
4539      </programlisting>
4540     </para>
4541
4542     <para>
4543      Timing with <function>fsync()</function> enabled:
4544
4545      <programlisting>
4546   Time   System
4547   04:21  Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486
4548      </programlisting>
4549
4550      For the <systemitem class="osname">Linux</systemitem> system above, using <acronym>UW-SCSI</acronym> disks rather than (older) <acronym>IDE</acronym>
4551      disks leads to a 50% improvement in speed on the regression test.
4552     </para>
4553    </sect2>
4554
4555 <sect2>
4556 <title>Version 6.4beta</title>
4557
4558 <para>
4559 The times for this release are not directly comparable to those for previous releases
4560 since some additional regression tests have been included.
4561 In general, however, 6.4 should be slightly faster than the previous release (thanks, Bruce!).
4562 </para>
4563 <para>
4564 <programlisting>
4565   Time   System
4566   02:26  Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
4567 </programlisting>
4568 </para>
4569 </sect2>
4570
4571 <sect2>
4572 <title>Version 6.3</title>
4573
4574 <para>
4575 The times for this release are not directly comparable to those for previous releases
4576 since some additional regression tests have been included and some obsolete tests involving
4577 time travel have been removed.
4578 In general, however, 6.3 is substantially faster than previous releases (thanks, Bruce!).
4579 </para>
4580 <para>
4581 <programlisting>
4582   Time   System
4583   02:30  Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
4584   04:12  Dual Pentium Pro 180, 96MB, EIDE, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
4585 </programlisting>
4586 </para>
4587 </sect2>
4588
4589 <sect2>
4590 <title>Version 6.1</title>
4591
4592 <para>
4593 <programlisting>
4594   Time   System
4595   06:12  Pentium Pro 180, 32MB, EIDE, Linux 2.0.30, gcc 2.7.2 -O2 -m486
4596   12:06  P-100, 48MB, Linux 2.0.29, gcc
4597   39:58  Sparc IPC 32MB, Solaris 2.5, gcc 2.7.2.1 -O -g
4598 </programlisting>
4599 </para>
4600 </sect2>
4601 </sect1>
4602 ]]>
4603 </appendix>
4604
4605 <!-- Keep this comment at the end of the file
4606 Local variables:
4607 mode:sgml
4608 sgml-omittag:nil
4609 sgml-shorttag:t
4610 sgml-minimize-attributes:nil
4611 sgml-always-quote-attributes:t
4612 sgml-indent-step:1
4613 sgml-indent-data:t
4614 sgml-parent-document:nil
4615 sgml-default-dtd-file:"./reference.ced"
4616 sgml-exposed-tags:nil
4617 sgml-local-catalogs:("/usr/lib/sgml/catalog")
4618 sgml-local-ecat-files:nil
4619 End:
4620 -->