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