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