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