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