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