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