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