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