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