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