2 <!-- See header comment in release.sgml about typical markup -->
4 <sect1 id=
"release-8-0-21">
5 <title>Release
8.0.21</title>
8 <title>Release date
</title>
9 <simpara>2009-
03-
16</simpara>
13 This release contains a variety of fixes from
8.0.20.
14 For information about new features in the
8.0 major release, see
15 <xref linkend=
"release-8-0">.
19 <title>Migration to Version
8.0.21</title>
22 A dump/restore is not required for those running
8.0.X.
23 However, if you are upgrading from a version earlier than
8.0.6,
24 see the release notes for
8.0.6.
30 <title>Changes
</title>
36 Prevent error recursion crashes when encoding conversion fails (Tom)
40 This change extends fixes made in the last two minor releases for
41 related failure scenarios. The previous fixes were narrowly tailored
42 for the original problem reports, but we have now recognized that
43 <emphasis>any<
/> error thrown by an encoding conversion function could
44 potentially lead to infinite recursion while trying to report the
45 error. The solution therefore is to disable translation and encoding
46 conversion and report the plain-ASCII form of any error message,
47 if we find we have gotten into a recursive error reporting situation.
54 Disallow
<command>CREATE CONVERSION<
/> with the wrong encodings
55 for the specified conversion function (Heikki)
59 This prevents one possible scenario for encoding conversion failure.
60 The previous change is a backstop to guard against other kinds of
61 failures in the same area.
67 Fix core dump when
<function>to_char()<
/> is given format codes that
68 are inappropriate for the type of the data argument (Tom)
74 Add
<literal>MUST<
/> (Mauritius Island Summer Time) to the default list
75 of known timezone abbreviations (Xavier Bugaud)
84 <sect1 id=
"release-8-0-20">
85 <title>Release
8.0.20</title>
88 <title>Release date
</title>
89 <simpara>2009-
02-
02</simpara>
93 This release contains a variety of fixes from
8.0.19.
94 For information about new features in the
8.0 major release, see
95 <xref linkend=
"release-8-0">.
99 <title>Migration to Version
8.0.20</title>
102 A dump/restore is not required for those running
8.0.X.
103 However, if you are upgrading from a version earlier than
8.0.6,
104 see the release notes for
8.0.6.
110 <title>Changes
</title>
116 Improve handling of URLs in
<function>headline()<
/> function (Teodor)
122 Improve handling of overlength headlines in
<function>headline()<
/>
129 Prevent possible Assert failure or misconversion if an encoding
130 conversion is created with the wrong conversion function for the
131 specified pair of encodings (Tom, Heikki)
137 Avoid unnecessary locking of small tables in
<command>VACUUM<
/>
144 Fix uninitialized variables in
<filename>contrib/tsearch2<
/>'s
145 <function>get_covers()<
/> function (Teodor)
151 Make all documentation reference
<literal>pgsql-bugs<
/> and/or
152 <literal>pgsql-hackers<
/> as appropriate, instead of the
153 now-decommissioned
<literal>pgsql-ports<
/> and
<literal>pgsql-patches<
/>
160 Update time zone data files to
<application>tzdata<
/> release
2009a (for
161 Kathmandu and historical DST corrections in Switzerland, Cuba)
170 <sect1 id=
"release-8-0-19">
171 <title>Release
8.0.19</title>
174 <title>Release date
</title>
175 <simpara>2008-
11-
03</simpara>
179 This release contains a variety of fixes from
8.0.18.
180 For information about new features in the
8.0 major release, see
181 <xref linkend=
"release-8-0">.
185 <title>Migration to Version
8.0.19</title>
188 A dump/restore is not required for those running
8.0.X.
189 However, if you are upgrading from a version earlier than
8.0.6,
190 see the release notes for
8.0.6.
196 <title>Changes
</title>
202 Fix backend crash when the client encoding cannot represent a localized
207 We have addressed similar issues before, but it would still fail if
208 the
<quote>character has no equivalent<
/> message itself couldn't
209 be converted. The fix is to disable localization and send the plain
210 ASCII error message when we detect such a situation.
216 Fix possible crash when deeply nested functions are invoked from
223 Ensure an error is reported when a newly-defined PL/pgSQL trigger
224 function is invoked as a normal function (Tom)
230 Fix incorrect tsearch2 headline generation when single query
231 item matches first word of text (Sushant Sinha)
237 Fix improper display of fractional seconds in interval values when
238 using a non-ISO datestyle in an
<option>--enable-integer-datetimes<
/>
245 Ensure
<function>SPI_getvalue<
/> and
<function>SPI_getbinval<
/>
246 behave correctly when the passed tuple and tuple descriptor have
247 different numbers of columns (Tom)
251 This situation is normal when a table has had columns added or removed,
252 but these two functions didn't handle it properly.
253 The only likely consequence is an incorrect error indication.
259 Fix
<application>ecpg<
/>'s parsing of
<command>CREATE USER<
/> (Michael)
265 Fix recent breakage of
<literal>pg_ctl restart<
/> (Tom)
271 Update time zone data files to
<application>tzdata<
/> release
2008i (for
272 DST law changes in Argentina, Brazil, Mauritius, Syria)
281 <sect1 id=
"release-8-0-18">
282 <title>Release
8.0.18</title>
285 <title>Release date
</title>
286 <simpara>2008-
09-
22</simpara>
290 This release contains a variety of fixes from
8.0.17.
291 For information about new features in the
8.0 major release, see
292 <xref linkend=
"release-8-0">.
296 <title>Migration to Version
8.0.18</title>
299 A dump/restore is not required for those running
8.0.X.
300 However, if you are upgrading from a version earlier than
8.0.6,
301 see the release notes for
8.0.6.
307 <title>Changes
</title>
313 Widen local lock counters from
32 to
64 bits (Tom)
317 This responds to reports that the counters could overflow in
318 sufficiently long transactions, leading to unexpected
<quote>lock is
319 already held<
/> errors.
325 Add checks in executor startup to ensure that the tuples produced by an
326 <command>INSERT<
/> or
<command>UPDATE<
/> will match the target table's
327 current rowtype (Tom)
331 <command>ALTER COLUMN TYPE<
/>, followed by re-use of a previously
332 cached plan, could produce this type of situation. The check protects
333 against data corruption and/or crashes that could ensue.
339 Fix datetime input functions to correctly detect integer overflow when
340 running on a
64-bit platform (Tom)
346 Improve performance of writing very long log messages to syslog (Tom)
352 Fix bug in backwards scanning of a cursor on a
<literal>SELECT DISTINCT
359 Fix planner to estimate that
<literal>GROUP BY<
/> expressions yielding
360 boolean results always result in two groups, regardless of the
361 expressions' contents (Tom)
365 This is very substantially more accurate than the regular
<literal>GROUP
366 BY<
/> estimate for certain boolean tests like
<replaceable>col<
/>
373 Fix PL/Tcl to behave correctly with Tcl
8.5, and to be more careful
374 about the encoding of data sent to or from Tcl (Tom)
380 Fix PL/Python to work with Python
2.5
384 This is a back-port of fixes made during the
8.2 development cycle.
390 Improve
<application>pg_dump<
/> and
<application>pg_restore<
/>'s
391 error reporting after failure to send a SQL command (Tom)
397 Fix
<application>pg_ctl<
/> to properly preserve postmaster
398 command-line arguments across a
<literal>restart<
/> (Bruce)
404 Update time zone data files to
<application>tzdata<
/> release
2008f (for
405 DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco,
406 Pakistan, Palestine, and Paraguay)
415 <sect1 id=
"release-8-0-17">
416 <title>Release
8.0.17</title>
419 <title>Release date
</title>
420 <simpara>2008-
06-
12</simpara>
424 This release contains one serious bug fix over
8.0.16.
425 For information about new features in the
8.0 major release, see
426 <xref linkend=
"release-8-0">.
430 <title>Migration to Version
8.0.17</title>
433 A dump/restore is not required for those running
8.0.X.
434 However, if you are upgrading from a version earlier than
8.0.6,
435 see the release notes for
8.0.6.
441 <title>Changes
</title>
447 Make
<function>pg_get_ruledef()<
/> parenthesize negative constants (Tom)
451 Before this fix, a negative constant in a view or rule might be dumped
452 as, say,
<literal>-
42::integer<
/>, which is subtly incorrect: it should
453 be
<literal>(-
42)::integer<
/> due to operator precedence rules.
454 Usually this would make little difference, but it could interact with
455 another recent patch to cause
456 <productname>PostgreSQL<
/> to reject what had been a valid
457 <command>SELECT DISTINCT<
/> view query. Since this could result in
458 <application>pg_dump<
/> output failing to reload, it is being treated
459 as a high-priority fix. The only released versions in which dump
460 output is actually incorrect are
8.3.1 and
8.2.7.
469 <sect1 id=
"release-8-0-16">
470 <title>Release
8.0.16</title>
473 <title>Release date
</title>
474 <simpara>never released
</simpara>
478 This release contains a variety of fixes from
8.0.15.
479 For information about new features in the
8.0 major release, see
480 <xref linkend=
"release-8-0">.
484 <title>Migration to Version
8.0.16</title>
487 A dump/restore is not required for those running
8.0.X.
488 However, if you are upgrading from a version earlier than
8.0.6,
489 see the release notes for
8.0.6.
495 <title>Changes
</title>
501 Fix
<command>ALTER TABLE ADD COLUMN ... PRIMARY KEY<
/> so that the new
502 column is correctly checked to see if it's been initialized to all
503 non-nulls (Brendan Jurd)
507 Previous versions neglected to check this requirement at all.
513 Fix possible
<command>CREATE TABLE<
/> failure when inheriting the
514 <quote>same<
/> constraint from multiple parent relations that
515 inherited that constraint from a common ancestor (Tom)
521 Fix conversions between ISO-
8859-
5 and other encodings to handle
522 Cyrillic
<quote>Yo<
/> characters (
<literal>e<
/> and
<literal>E<
/> with
523 two dots) (Sergey Burladyan)
529 Fix a few datatype input functions
530 that were allowing unused bytes in their results to contain
531 uninitialized, unpredictable values (Tom)
535 This could lead to failures in which two apparently identical literal
536 values were not seen as equal, resulting in the parser complaining
537 about unmatched
<literal>ORDER BY<
/> and
<literal>DISTINCT<
/>
544 Fix a corner case in regular-expression substring matching
545 (
<literal>substring(
<replaceable>string<
/> from
546 <replaceable>pattern<
/>)
</literal>) (Tom)
550 The problem occurs when there is a match to the pattern overall but
551 the user has specified a parenthesized subexpression and that
552 subexpression hasn't got a match. An example is
553 <literal>substring('foo' from 'foo(bar)?')<
/>.
554 This should return NULL, since
<literal>(bar)<
/> isn't matched, but
555 it was mistakenly returning the whole-pattern match instead (ie,
562 Update time zone data files to
<application>tzdata<
/> release
2008c (for
563 DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba,
564 Argentina/San_Luis, and Chile)
570 Fix incorrect result from
<application>ecpg<
/>'s
571 <function>PGTYPEStimestamp_sub()<
/> function (Michael)
577 Fix core dump in
<filename>contrib/xml2<
/>'s
578 <function>xpath_table()<
/> function when the input query returns a
585 Fix
<filename>contrib/xml2<
/>'s makefile to not override
586 <literal>CFLAGS<
/> (Tom)
592 Fix
<literal>DatumGetBool<
/> macro to not fail with
<application>gcc<
/>
597 This problem affects
<quote>old style<
/> (V0) C functions that
598 return boolean. The fix is already in
8.3, but the need to
599 back-patch it was not realized at the time.
605 Fix longstanding
<command>LISTEN<
/>/
<command>NOTIFY<
/>
610 In rare cases a session that had just executed a
611 <command>LISTEN<
/> might not get a notification, even though
612 one would be expected because the concurrent transaction executing
613 <command>NOTIFY<
/> was observed to commit later.
617 A side effect of the fix is that a transaction that has executed
618 a not-yet-committed
<command>LISTEN<
/> command will not see any
619 row in
<structname>pg_listener<
/> for the
<command>LISTEN<
/>,
620 should it choose to look; formerly it would have. This behavior
621 was never documented one way or the other, but it is possible that
622 some applications depend on the old behavior.
628 Fix rare crash when an error occurs during a query using a hash index
635 Fix input of datetime values for February
29 in years BC (Tom)
639 The former coding was mistaken about which years were leap years.
645 Fix
<quote>unrecognized node type<
/> error in some variants of
646 <command>ALTER OWNER<
/> (Tom)
652 Fix
<application>pg_ctl<
/> to correctly extract the postmaster's port
653 number from command-line options (Itagaki Takahiro, Tom)
657 Previously,
<literal>pg_ctl start -w<
/> could try to contact the
658 postmaster on the wrong port, leading to bogus reports of startup
665 Use
<option>-fwrapv<
/> to defend against possible misoptimization
666 in recent
<application>gcc<
/> versions (Tom)
670 This is known to be necessary when building
<productname>PostgreSQL<
/>
671 with
<application>gcc<
/> 4.3 or later.
677 Fix display of constant expressions in
<literal>ORDER BY<
/>
678 and
<literal>GROUP BY<
/> (Tom)
682 An explictly casted constant would be shown incorrectly. This could
683 for example lead to corruption of a view definition during
690 Fix
<application>libpq<
/> to handle NOTICE messages correctly
691 during COPY OUT (Tom)
695 This failure has only been observed to occur when a user-defined
696 datatype's output routine issues a NOTICE, but there is no
697 guarantee it couldn't happen due to other causes.
706 <sect1 id=
"release-8-0-15">
707 <title>Release
8.0.15</title>
710 <title>Release date
</title>
711 <simpara>2008-
01-
07</simpara>
715 This release contains a variety of fixes from
8.0.14,
716 including fixes for significant security issues.
717 For information about new features in the
8.0 major release, see
718 <xref linkend=
"release-8-0">.
722 This is the last
8.0.X release for which the
<productname>PostgreSQL<
/>
723 community will produce binary packages for
<productname>Windows<
/>.
724 Windows users are encouraged to move to
8.2.X or later,
725 since there are Windows-specific fixes in
8.2.X that
726 are impractical to back-port.
8.0.X will continue to
727 be supported on other platforms.
731 <title>Migration to Version
8.0.15</title>
734 A dump/restore is not required for those running
8.0.X. However,
735 if you are upgrading from a version earlier than
8.0.6, see the release
742 <title>Changes
</title>
748 Prevent functions in indexes from executing with the privileges of
749 the user running
<command>VACUUM<
/>,
<command>ANALYZE<
/>, etc (Tom)
753 Functions used in index expressions and partial-index
754 predicates are evaluated whenever a new table entry is made. It has
755 long been understood that this poses a risk of trojan-horse code
756 execution if one modifies a table owned by an untrustworthy user.
757 (Note that triggers, defaults, check constraints, etc. pose the
758 same type of risk.) But functions in indexes pose extra danger
759 because they will be executed by routine maintenance operations
760 such as
<command>VACUUM FULL<
/>, which are commonly performed
761 automatically under a superuser account. For example, a nefarious user
762 can execute code with superuser privileges by setting up a
763 trojan-horse index definition and waiting for the next routine vacuum.
764 The fix arranges for standard maintenance operations
765 (including
<command>VACUUM<
/>,
<command>ANALYZE<
/>,
<command>REINDEX<
/>,
766 and
<command>CLUSTER<
/>) to execute as the table owner rather than
767 the calling user, using the same privilege-switching mechanism already
768 used for
<literal>SECURITY DEFINER<
/> functions. To prevent bypassing
769 this security measure, execution of
<command>SET SESSION
770 AUTHORIZATION<
/> and
<command>SET ROLE<
/> is now forbidden within a
771 <literal>SECURITY DEFINER<
/> context. (CVE-
2007-
6600)
777 Repair assorted bugs in the regular-expression package (Tom, Will Drewry)
781 Suitably crafted regular-expression patterns could cause crashes,
782 infinite or near-infinite looping, and/or massive memory consumption,
783 all of which pose denial-of-service hazards for applications that
784 accept regex search patterns from untrustworthy sources.
785 (CVE-
2007-
4769, CVE-
2007-
4772, CVE-
2007-
6067)
791 Require non-superusers who use
<filename>/contrib/dblink<
/> to use only
792 password authentication, as a security measure (Joe)
796 The fix that appeared for this in
8.0.14 was incomplete, as it plugged
797 the hole for only some
<filename>dblink<
/> functions. (CVE-
2007-
6601,
804 Update time zone data files to
<application>tzdata<
/> release
2007k
805 (in particular, recent Argentina changes) (Tom)
811 Fix planner failure in some cases of
<literal>WHERE false AND var IN
812 (SELECT ...)<
/> (Tom)
818 Preserve the tablespace of indexes that are
819 rebuilt by
<command>ALTER TABLE ... ALTER COLUMN TYPE<
/> (Tom)
825 Make archive recovery always start a new WAL timeline, rather than only
826 when a recovery stop time was used (Simon)
830 This avoids a corner-case risk of trying to overwrite an existing
831 archived copy of the last WAL segment, and seems simpler and cleaner
832 than the original definition.
838 Make
<command>VACUUM<
/> not use all of
<varname>maintenance_work_mem<
/>
839 when the table is too small for it to be useful (Alvaro)
845 Fix potential crash in
<function>translate()<
/> when using a multibyte
846 database encoding (Tom)
852 Fix PL/Perl to cope when platform's Perl defines type
<literal>bool<
/>
853 as
<literal>int<
/> rather than
<literal>char<
/> (Tom)
857 While this could theoretically happen anywhere, no standard build of
858 Perl did things this way ... until
<productname>Mac OS X<
/> 10.5.
864 Fix PL/Python to not crash on long exception messages (Alvaro)
870 Fix
<application>pg_dump<
/> to correctly handle inheritance child tables
871 that have default expressions different from their parent's (Tom)
877 <application>ecpg<
/> parser fixes (Michael)
883 Make
<filename>contrib/tablefunc<
/>'s
<function>crosstab()<
/> handle
884 NULL rowid as a category in its own right, rather than crashing (Joe)
890 Fix
<type>tsvector<
/> and
<type>tsquery<
/> output routines to
891 escape backslashes correctly (Teodor, Bruce)
897 Fix crash of
<function>to_tsvector()<
/> on huge input strings (Teodor)
903 Require a specific version of
<productname>Autoconf<
/> to be used
904 when re-generating the
<command>configure<
/> script (Peter)
908 This affects developers and packagers only. The change was made
909 to prevent accidental use of untested combinations of
910 <productname>Autoconf<
/> and
<productname>PostgreSQL<
/> versions.
911 You can remove the version check if you really want to use a
912 different
<productname>Autoconf<
/> version, but it's
913 your responsibility whether the result works or not.
922 <sect1 id=
"release-8-0-14">
923 <title>Release
8.0.14</title>
926 <title>Release date
</title>
927 <simpara>2007-
09-
17</simpara>
931 This release contains a variety of fixes from
8.0.13.
932 For information about new features in the
8.0 major release, see
933 <xref linkend=
"release-8-0">.
937 <title>Migration to Version
8.0.14</title>
940 A dump/restore is not required for those running
8.0.X. However,
941 if you are upgrading from a version earlier than
8.0.6, see the release
948 <title>Changes
</title>
954 Prevent index corruption when a transaction inserts rows and
955 then aborts close to the end of a concurrent
<command>VACUUM<
/>
956 on the same table (Tom)
962 Make
<command>CREATE DOMAIN ... DEFAULT NULL<
/> work properly (Tom)
968 Fix excessive logging of
<acronym>SSL<
/> error messages (Tom)
974 Fix logging so that log messages are never interleaved when using
975 the syslogger process (Andrew)
981 Fix crash when
<varname>log_min_error_statement<
/> logging runs out
988 Fix incorrect handling of some foreign-key corner cases (Tom)
994 Prevent
<command>CLUSTER<
/> from failing
995 due to attempting to process temporary tables of other sessions (Alvaro)
1001 Update the time zone database rules, particularly New Zealand's upcoming changes (Tom)
1007 Windows socket improvements (Magnus)
1013 Suppress timezone name (
<literal>%Z<
/>) in log timestamps on Windows
1014 because of possible encoding mismatches (Tom)
1020 Require non-superusers who use
<filename>/contrib/dblink<
/> to use only
1021 password authentication, as a security measure (Joe)
1030 <sect1 id=
"release-8-0-13">
1031 <title>Release
8.0.13</title>
1034 <title>Release date
</title>
1035 <simpara>2007-
04-
23</simpara>
1039 This release contains a variety of fixes from
8.0.12,
1040 including a security fix.
1041 For information about new features in the
8.0 major release, see
1042 <xref linkend=
"release-8-0">.
1046 <title>Migration to Version
8.0.13</title>
1049 A dump/restore is not required for those running
8.0.X. However,
1050 if you are upgrading from a version earlier than
8.0.6, see the release
1057 <title>Changes
</title>
1063 Support explicit placement of the temporary-table schema within
1064 <varname>search_path<
/>, and disable searching it for functions
1068 This is needed to allow a security-definer function to set a
1069 truly secure value of
<varname>search_path<
/>. Without it,
1070 an unprivileged SQL user can use temporary objects to execute code
1071 with the privileges of the security-definer function (CVE-
2007-
2138).
1072 See
<command>CREATE FUNCTION<
/> for more information.
1078 <filename>/contrib/tsearch2<
/> crash fixes (Teodor)
1084 Fix potential-data-corruption bug in how
<command>VACUUM FULL<
/> handles
1085 <command>UPDATE<
/> chains (Tom, Pavan Deolasee)
1091 Fix PANIC during enlargement of a hash index (bug introduced in
8.0.10)
1098 Fix POSIX-style timezone specs to follow new USA DST rules (Tom)
1107 <sect1 id=
"release-8-0-12">
1108 <title>Release
8.0.12</title>
1111 <title>Release date
</title>
1112 <simpara>2007-
02-
07</simpara>
1116 This release contains one fix from
8.0.11.
1117 For information about new features in the
8.0 major release, see
1118 <xref linkend=
"release-8-0">.
1122 <title>Migration to Version
8.0.12</title>
1125 A dump/restore is not required for those running
8.0.X. However,
1126 if you are upgrading from a version earlier than
8.0.6, see the release
1133 <title>Changes
</title>
1139 Remove overly-restrictive check for type length in constraints and
1140 functional indexes(Tom)
1149 <sect1 id=
"release-8-0-11">
1150 <title>Release
8.0.11</title>
1153 <title>Release date
</title>
1154 <simpara>2007-
02-
05</simpara>
1158 This release contains a variety of fixes from
8.0.10, including
1160 For information about new features in the
8.0 major release, see
1161 <xref linkend=
"release-8-0">.
1165 <title>Migration to Version
8.0.11</title>
1168 A dump/restore is not required for those running
8.0.X. However,
1169 if you are upgrading from a version earlier than
8.0.6, see the release
1176 <title>Changes
</title>
1182 Remove security vulnerabilities that allowed connected users
1183 to read backend memory (Tom)
1186 The vulnerabilities involve suppressing the normal check that a SQL
1187 function returns the data type it's declared to, and changing the
1188 data type of a table column (CVE-
2007-
0555, CVE-
2007-
0556). These
1189 errors can easily be exploited to cause a backend crash, and in
1190 principle might be used to read database content that the user
1191 should not be able to access.
1197 Fix rare bug wherein btree index page splits could fail
1198 due to choosing an infeasible split point (Heikki Linnakangas)
1204 Fix for rare Assert() crash triggered by
<literal>UNION<
/> (Tom)
1210 Tighten security of multi-byte character processing for UTF8 sequences
1211 over three bytes long (Tom)
1220 <sect1 id=
"release-8-0-10">
1221 <title>Release
8.0.10</title>
1224 <title>Release date
</title>
1225 <simpara>2007-
01-
08</simpara>
1229 This release contains a variety of fixes from
8.0.9.
1230 For information about new features in the
8.0 major release, see
1231 <xref linkend=
"release-8-0">.
1235 <title>Migration to Version
8.0.10</title>
1238 A dump/restore is not required for those running
8.0.X. However,
1239 if you are upgrading from a version earlier than
8.0.6, see the release
1246 <title>Changes
</title>
1252 Improve handling of
<function>getaddrinfo()<
/> on AIX (Tom)
1256 This fixes a problem with starting the statistics collector,
1263 Fix
<quote>failed to re-find parent key<
/> errors in
1264 <command>VACUUM<
/> (Tom)
1270 Fix race condition for truncation of a large relation across a
1271 gigabyte boundary by
<command>VACUUM<
/> (Tom)
1277 Fix bugs affecting multi-gigabyte hash indexes (Tom)
1283 Fix possible deadlock in Windows signal handling (Teodor)
1289 Fix error when constructing an
<literal>ARRAY[]<
/> made up of multiple
1290 empty elements (Tom)
1296 Fix ecpg memory leak during connection (Michael)
1302 <function>to_number()<
/> and
<function>to_char(numeric)<
/>
1303 are now
<literal>STABLE<
/>, not
<literal>IMMUTABLE<
/>, for
1304 new
<application>initdb<
/> installs (Tom)
1308 This is because
<varname>lc_numeric<
/> can potentially
1309 change the output of these functions.
1315 Improve index usage of regular expressions that use parentheses (Tom)
1319 This improves
<application>psql<
/> <literal>\d<
/> performance also.
1325 Update timezone database
1329 This affects Australian and Canadian daylight-savings rules in
1339 <sect1 id=
"release-8-0-9">
1340 <title>Release
8.0.9</title>
1343 <title>Release date
</title>
1344 <simpara>2006-
10-
16</simpara>
1348 This release contains a variety of fixes from
8.0.8.
1349 For information about new features in the
8.0 major release, see
1350 <xref linkend=
"release-8-0">.
1354 <title>Migration to Version
8.0.9</title>
1357 A dump/restore is not required for those running
8.0.X. However,
1358 if you are upgrading from a version earlier than
8.0.6, see the release
1365 <title>Changes
</title>
1368 <listitem><para>Fix crash when referencing
<literal>NEW<
/> row
1369 values in rule WHERE expressions (Tom)
</para></listitem>
1370 <listitem><para>Fix core dump when an untyped literal is taken as
1371 ANYARRAY
</para></listitem>
1372 <listitem><para>Fix mishandling of AFTER triggers when query contains a SQL
1373 function returning multiple rows (Tom)
</para></listitem>
1374 <listitem><para>Fix
<command>ALTER TABLE ... TYPE<
/> to recheck
1375 <literal>NOT NULL<
/> for
<literal>USING<
/> clause (Tom)
</para></listitem>
1376 <listitem><para>Fix
<function>string_to_array()<
/> to handle overlapping
1377 matches for the separator string
</para>
1378 <para>For example,
<literal>string_to_array('
123xx456xxx789', 'xx')<
/>.
1380 <listitem><para>Fix corner cases in pattern matching for
1381 <application>psql<
/>'s
<literal>\d<
/> commands
</para></listitem>
1382 <listitem><para>Fix index-corrupting bugs in /contrib/ltree
1383 (Teodor)
</para></listitem>
1384 <listitem><para>Numerous robustness fixes in
<application>ecpg<
/> (Joachim
1385 Wieland)
</para></listitem>
1386 <listitem><para>Fix backslash escaping in /contrib/dbmirror
</para></listitem>
1387 <listitem><para>Fix instability of statistics collection on Win32 (Tom, Andrew)
</para></listitem>
1388 <listitem><para>Fixes for
<systemitem class=
"osname">AIX<
/> and
1389 <productname>Intel<
/> compilers (Tom)
</para></listitem>
1395 <sect1 id=
"release-8-0-8">
1396 <title>Release
8.0.8</title>
1399 <title>Release date
</title>
1400 <simpara>2006-
05-
23</simpara>
1404 This release contains a variety of fixes from
8.0.7,
1405 including patches for extremely serious security issues.
1406 For information about new features in the
8.0 major release, see
1407 <xref linkend=
"release-8-0">.
1411 <title>Migration to Version
8.0.8</title>
1414 A dump/restore is not required for those running
8.0.X. However,
1415 if you are upgrading from a version earlier than
8.0.6, see the release
1420 Full security against the SQL-injection attacks described in
1421 CVE-
2006-
2313 and CVE-
2006-
2314 might require changes in application
1422 code. If you have applications that embed untrustworthy strings
1423 into SQL commands, you should examine them as soon as possible to
1424 ensure that they are using recommended escaping techniques. In
1425 most cases, applications should be using subroutines provided by
1426 libraries or drivers (such as
<application>libpq<
/>'s
1427 <function>PQescapeStringConn()<
/>) to perform string escaping,
1428 rather than relying on
<foreignphrase>ad hoc<
/> code to do it.
1433 <title>Changes
</title>
1436 <listitem><para>Change the server to reject invalidly-encoded multibyte
1437 characters in all cases (Tatsuo, Tom)
</para>
1438 <para>While
<productname>PostgreSQL<
/> has been moving in this direction for
1439 some time, the checks are now applied uniformly to all encodings and all
1440 textual input, and are now always errors not merely warnings. This change
1441 defends against SQL-injection attacks of the type described in CVE-
2006-
2313.
1444 <listitem><para>Reject unsafe uses of
<literal>\'<
/> in string literals
</para>
1445 <para>As a server-side defense against SQL-injection attacks of the type
1446 described in CVE-
2006-
2314, the server now only accepts
<literal>''<
/> and not
1447 <literal>\'<
/> as a representation of ASCII single quote in SQL string
1448 literals. By default,
<literal>\'<
/> is rejected only when
1449 <varname>client_encoding<
/> is set to a client-only encoding (SJIS, BIG5, GBK,
1450 GB18030, or UHC), which is the scenario in which SQL injection is possible.
1451 A new configuration parameter
<varname>backslash_quote<
/> is available to
1452 adjust this behavior when needed. Note that full security against
1453 CVE-
2006-
2314 might require client-side changes; the purpose of
1454 <varname>backslash_quote<
/> is in part to make it obvious that insecure
1455 clients are insecure.
1458 <listitem><para>Modify
<application>libpq<
/>'s string-escaping routines to be
1459 aware of encoding considerations and
1460 <varname>standard_conforming_strings<
/></para>
1461 <para>This fixes
<application>libpq<
/>-using applications for the security
1462 issues described in CVE-
2006-
2313 and CVE-
2006-
2314, and also future-proofs
1463 them against the planned changeover to SQL-standard string literal syntax.
1464 Applications that use multiple
<productname>PostgreSQL<
/> connections
1465 concurrently should migrate to
<function>PQescapeStringConn()<
/> and
1466 <function>PQescapeByteaConn()<
/> to ensure that escaping is done correctly
1467 for the settings in use in each database connection. Applications that
1468 do string escaping
<quote>by hand<
/> should be modified to rely on library
1472 <listitem><para>Fix some incorrect encoding conversion functions
</para>
1473 <para><function>win1251_to_iso<
/>,
<function>alt_to_iso<
/>,
1474 <function>euc_tw_to_big5<
/>,
<function>euc_tw_to_mic<
/>,
1475 <function>mic_to_euc_tw<
/> were all broken to varying
1479 <listitem><para>Clean up stray remaining uses of
<literal>\'<
/> in strings
1480 (Bruce, Jan)
</para></listitem>
1482 <listitem><para>Fix bug that sometimes caused OR'd index scans to
1483 miss rows they should have returned
</para></listitem>
1485 <listitem><para>Fix WAL replay for case where a btree index has been
1486 truncated
</para></listitem>
1488 <listitem><para>Fix
<literal>SIMILAR TO<
/> for patterns involving
1489 <literal>|<
/> (Tom)
</para></listitem>
1491 <listitem><para>Fix
<command>SELECT INTO<
/> and
<command>CREATE TABLE AS<
/> to
1492 create tables in the default tablespace, not the base directory (Kris
1493 Jurka)
</para></listitem>
1495 <listitem><para>Fix server to use custom DH SSL parameters correctly (Michael
1496 Fuhr)
</para></listitem>
1498 <listitem><para>Fix for Bonjour on Intel Macs (Ashley Clark)
</para></listitem>
1500 <listitem><para>Fix various minor memory leaks
</para></listitem>
1502 <listitem><para>Fix problem with password prompting on some Win32 systems
1503 (Robert Kinberg)
</para></listitem>
1509 <sect1 id=
"release-8-0-7">
1510 <title>Release
8.0.7</title>
1513 <title>Release date
</title>
1514 <simpara>2006-
02-
14</simpara>
1518 This release contains a variety of fixes from
8.0.6.
1519 For information about new features in the
8.0 major release, see
1520 <xref linkend=
"release-8-0">.
1524 <title>Migration to Version
8.0.7</title>
1527 A dump/restore is not required for those running
8.0.X. However,
1528 if you are upgrading from a version earlier than
8.0.6, see the release
1534 <title>Changes
</title>
1538 <listitem><para>Fix potential crash in
<command>SET
1539 SESSION AUTHORIZATION<
/> (CVE-
2006-
0553)
</para>
1540 <para>An unprivileged user could crash the server process, resulting in
1541 momentary denial of service to other users, if the server has been compiled
1542 with Asserts enabled (which is not the default).
1543 Thanks to Akio Ishida for reporting this problem.
1546 <listitem><para>Fix bug with row visibility logic in self-inserted
1548 <para>Under rare circumstances a row inserted by the current command
1549 could be seen as already valid, when it should not be. Repairs bug
1550 created in
8.0.4,
7.4.9, and
7.3.11 releases.
1553 <listitem><para>Fix race condition that could lead to
<quote>file already
1554 exists<
/> errors during pg_clog and pg_subtrans file creation
1555 (Tom)
</para></listitem>
1557 <listitem><para>Fix cases that could lead to crashes if a cache-invalidation
1558 message arrives at just the wrong time (Tom)
</para></listitem>
1560 <listitem><para>Properly check
<literal>DOMAIN<
/> constraints for
1561 <literal>UNKNOWN<
/> parameters in prepared statements
1562 (Neil)
</para></listitem>
1564 <listitem><para>Ensure
<command>ALTER COLUMN TYPE<
/> will process
1565 <literal>FOREIGN KEY<
/>,
<literal>UNIQUE<
/>, and
<literal>PRIMARY KEY<
/>
1566 constraints in the proper order (Nakano Yoshihisa)
</para></listitem>
1568 <listitem><para>Fixes to allow restoring dumps that have cross-schema
1569 references to custom operators or operator classes (Tom)
</para></listitem>
1571 <listitem><para>Allow
<application>pg_restore<
/> to continue properly after a
1572 <command>COPY<
/> failure; formerly it tried to treat the remaining
1573 <command>COPY<
/> data as SQL commands (Stephen Frost)
</para></listitem>
1575 <listitem><para>Fix
<application>pg_ctl<
/> <literal>unregister<
/> crash
1576 when the data directory is not specified (Magnus)
</para></listitem>
1578 <listitem><para>Fix
<application>ecpg<
/> crash on AMD64 and PPC
1579 (Neil)
</para></listitem>
1581 <listitem><para>Recover properly if error occurs during argument passing
1582 in
<application>PL/python<
/> (Neil)
</para></listitem>
1584 <listitem><para>Fix
<application>PL/perl<
/>'s handling of locales on
1585 Win32 to match the backend (Andrew)
</para></listitem>
1587 <listitem><para>Fix crash when
<literal>log_min_messages<
/> is set to
1588 <literal>DEBUG3<
/> or above in
<filename>postgresql.conf<
/> on Win32
1589 (Bruce)
</para></listitem>
1591 <listitem><para>Fix
<application>pgxs<
/> <literal>-L<
/> library path
1592 specification for Win32, Cygwin, OS X, AIX (Bruce)
</para></listitem>
1594 <listitem><para>Check that SID is enabled while checking for Win32 admin
1595 privileges (Magnus)
</para></listitem>
1597 <listitem><para>Properly reject out-of-range date inputs (Kris
1598 Jurka)
</para></listitem>
1600 <listitem><para>Portability fix for testing presence of
<function>finite<
/>
1601 and
<function>isinf<
/> during configure (Tom)
</para></listitem>
1608 <sect1 id=
"release-8-0-6">
1609 <title>Release
8.0.6</title>
1612 <title>Release date
</title>
1613 <simpara>2006-
01-
09</simpara>
1617 This release contains a variety of fixes from
8.0.5.
1618 For information about new features in the
8.0 major release, see
1619 <xref linkend=
"release-8-0">.
1623 <title>Migration to Version
8.0.6</title>
1626 A dump/restore is not required for those running
8.0.X. However,
1627 if you are upgrading from a version earlier than
8.0.3, see the release
1629 Also, you might need to
<command>REINDEX<
/> indexes on textual
1630 columns after updating, if you are affected by the locale or
1631 <application>plperl<
/> issues described below.
1636 <title>Changes
</title>
1640 <listitem><para>Fix Windows code so that postmaster will continue rather
1641 than exit if there is no more room in ShmemBackendArray (Magnus)
</para>
1642 <para>The previous behavior could lead to a denial-of-service situation if too
1643 many connection requests arrive close together. This applies
1644 <emphasis>only<
/> to the Windows port.
</para></listitem>
1646 <listitem><para>Fix bug introduced in
8.0 that could allow ReadBuffer
1647 to return an already-used page as new, potentially causing loss of
1648 recently-committed data (Tom)
</para></listitem>
1650 <listitem><para>Fix for protocol-level Describe messages issued
1651 outside a transaction or in a failed transaction (Tom)
</para></listitem>
1653 <listitem><para>Fix character string comparison for locales that consider
1654 different character combinations as equal, such as Hungarian (Tom)
</para>
1655 <para>This might require
<command>REINDEX<
/> to fix existing indexes on
1656 textual columns.
</para></listitem>
1658 <listitem><para>Set locale environment variables during postmaster startup
1659 to ensure that
<application>plperl<
/> won't change the locale later
</para>
1660 <para>This fixes a problem that occurred if the
<application>postmaster<
/> was
1661 started with environment variables specifying a different locale than what
1662 <application>initdb<
/> had been told. Under these conditions, any use of
1663 <application>plperl<
/> was likely to lead to corrupt indexes. You might need
1664 <command>REINDEX<
/> to fix existing indexes on
1665 textual columns if this has happened to you.
</para></listitem>
1667 <listitem><para>Allow more flexible relocation of installation
1668 directories (Tom)
</para>
1669 <para>Previous releases supported relocation only if all installation
1670 directory paths were the same except for the last component.
</para></listitem>
1672 <listitem><para>Fix longstanding bug in strpos() and regular expression
1673 handling in certain rarely used Asian multi-byte character sets (Tatsuo)
1676 <listitem><para>Various fixes for functions returning
<literal>RECORD<
/>s
1677 (Tom)
</para></listitem>
1679 <listitem><para>Fix bug in
<filename>/contrib/pgcrypto<
/> gen_salt,
1680 which caused it not to use all available salt space for MD5 and
1681 XDES algorithms (Marko Kreen, Solar Designer)
</para>
1682 <para>Salts for Blowfish and standard DES are unaffected.
</para></listitem>
1684 <listitem><para>Fix
<filename>/contrib/dblink<
/> to throw an error,
1685 rather than crashing, when the number of columns specified is different from
1686 what's actually returned by the query (Joe)
</para></listitem>
1693 <sect1 id=
"release-8-0-5">
1694 <title>Release
8.0.5</title>
1697 <title>Release date
</title>
1698 <simpara>2005-
12-
12</simpara>
1702 This release contains a variety of fixes from
8.0.4.
1703 For information about new features in the
8.0 major release, see
1704 <xref linkend=
"release-8-0">.
1708 <title>Migration to Version
8.0.5</title>
1711 A dump/restore is not required for those running
8.0.X. However,
1712 if you are upgrading from a version earlier than
8.0.3, see the release
1718 <title>Changes
</title>
1722 <listitem><para>Fix race condition in transaction log management
</para>
1723 <para>There was a narrow window in which an I/O operation could be initiated
1724 for the wrong page, leading to an Assert failure or data
1728 <listitem><para>Fix bgwriter problems after recovering from errors
1731 The background writer was found to leak buffer pins after write errors.
1732 While not fatal in itself, this might lead to mysterious blockages of
1733 later VACUUM commands.
1737 <listitem><para>Prevent failure if client sends Bind protocol message
1738 when current transaction is already aborted
</para></listitem>
1740 <listitem><para><filename>/contrib/ltree<
/> fixes (Teodor)
</para></listitem>
1742 <listitem><para>AIX and HPUX compile fixes (Tom)
</para></listitem>
1744 <listitem><para>Retry file reads and writes after Windows
1745 NO_SYSTEM_RESOURCES error (Qingqing Zhou)
</para></listitem>
1747 <listitem><para>Fix intermittent failure when
<varname>log_line_prefix<
/>
1748 includes
<literal>%i<
/></para></listitem>
1750 <listitem><para>Fix
<application>psql<
/> performance issue with long scripts
1751 on Windows (Merlin Moncure)
</para></listitem>
1753 <listitem><para>Fix missing updates of
<filename>pg_group<
/> flat
1754 file
</para></listitem>
1756 <listitem><para>Fix longstanding planning error for outer joins
</para>
1757 <para>This bug sometimes caused a bogus error
<quote>RIGHT JOIN is
1758 only supported with merge-joinable join conditions<
/>.
</para></listitem>
1760 <listitem><para>Postpone timezone initialization until after
1761 <filename>postmaster.pid<
/> is created
</para>
1762 <para>This avoids confusing startup scripts that expect the pid file to appear
1763 quickly.
</para></listitem>
1765 <listitem><para>Prevent core dump in
<application>pg_autovacuum<
/> when a
1766 table has been dropped
</para></listitem>
1768 <listitem><para>Fix problems with whole-row references (
<literal>foo.*<
/>)
1769 to subquery results
</para></listitem>
1775 <sect1 id=
"release-8-0-4">
1776 <title>Release
8.0.4</title>
1779 <title>Release date
</title>
1780 <simpara>2005-
10-
04</simpara>
1784 This release contains a variety of fixes from
8.0.3.
1785 For information about new features in the
8.0 major release, see
1786 <xref linkend=
"release-8-0">.
1790 <title>Migration to Version
8.0.4</title>
1793 A dump/restore is not required for those running
8.0.X. However,
1794 if you are upgrading from a version earlier than
8.0.3, see the release
1800 <title>Changes
</title>
1803 <listitem><para>Fix error that allowed
<command>VACUUM<
/> to remove
1804 <literal>ctid<
/> chains too soon, and add more checking in code that follows
1805 <literal>ctid<
/> links
</para>
1806 <para>This fixes a long-standing problem that could cause crashes in very rare
1807 circumstances.
</para></listitem>
1808 <listitem><para>Fix
<type>CHAR()<
/> to properly pad spaces to the specified
1809 length when using a multiple-byte character set (Yoshiyuki Asaba)
</para>
1810 <para>In prior releases, the padding of
<type>CHAR()<
/> was incorrect
1811 because it only padded to the specified number of bytes without
1812 considering how many characters were stored.
</para></listitem>
1813 <listitem><para>Force a checkpoint before committing
<command>CREATE
1815 <para>This should fix recent reports of
<quote>index is not a btree<
/>
1816 failures when a crash occurs shortly after
<command>CREATE
1817 DATABASE<
/>.
</para></listitem>
1818 <listitem><para>Fix the sense of the test for read-only transaction
1819 in
<command>COPY<
/></para>
1820 <para>The code formerly prohibited
<command>COPY TO<
/>, where it should
1821 prohibit
<command>COPY FROM<
/>.
1823 <listitem><para>Handle consecutive embedded newlines in
<command>COPY<
/>
1824 CSV-mode input
</para></listitem>
1825 <listitem><para>Fix
<function>date_trunc(week)<
/> for dates near year
1826 end
</para></listitem>
1827 <listitem><para>Fix planning problem with outer-join ON clauses that reference
1828 only the inner-side relation
</para></listitem>
1829 <listitem><para>Further fixes for
<literal>x FULL JOIN y ON true<
/> corner
1830 cases
</para></listitem>
1831 <listitem><para>Fix overenthusiastic optimization of
<literal>x IN (SELECT
1832 DISTINCT ...)<
/> and related cases
</para></listitem>
1833 <listitem><para>Fix mis-planning of queries with small
<literal>LIMIT<
/>
1834 values due to poorly thought out
<quote>fuzzy<
/> cost
1835 comparison
</para></listitem>
1836 <listitem><para>Make
<function>array_in<
/> and
<function>array_recv<
/> more
1837 paranoid about validating their OID parameter
</para></listitem>
1838 <listitem><para>Fix missing rows in queries like
<literal>UPDATE a=... WHERE
1839 a...<
/> with GiST index on column
<literal>a<
/></para></listitem>
1840 <listitem><para>Improve robustness of datetime parsing
</para></listitem>
1841 <listitem><para>Improve checking for partially-written WAL
1842 pages
</para></listitem>
1843 <listitem><para>Improve robustness of signal handling when SSL is
1844 enabled
</para></listitem>
1845 <listitem><para>Improve MIPS and M68K spinlock code
</para></listitem>
1846 <listitem><para>Don't try to open more than
<literal>max_files_per_process<
/>
1847 files during postmaster startup
</para></listitem>
1848 <listitem><para>Various memory leakage fixes
</para></listitem>
1849 <listitem><para>Various portability improvements
</para></listitem>
1850 <listitem><para>Update timezone data files
</para></listitem>
1851 <listitem><para>Improve handling of DLL load failures on Windows
</para></listitem>
1852 <listitem><para>Improve random-number generation on Windows
</para></listitem>
1853 <listitem><para>Make
<literal>psql -f filename<
/> return a nonzero exit code
1854 when opening the file fails
</para></listitem>
1855 <listitem><para>Change
<application>pg_dump<
/> to handle inherited check
1856 constraints more reliably
</para></listitem>
1857 <listitem><para>Fix password prompting in
<application>pg_restore<
/> on
1858 Windows
</para></listitem>
1859 <listitem><para>Fix PL/PgSQL to handle
<literal>var := var<
/> correctly when
1860 the variable is of pass-by-reference type
</para></listitem>
1861 <listitem><para>Fix PL/Perl
<literal>%_SHARED<
/> so it's actually
1862 shared
</para></listitem>
1863 <listitem><para>Fix
<filename>contrib/pg_autovacuum<
/> to allow sleep
1864 intervals over
2000 sec
</para></listitem>
1865 <listitem><para>Update
<filename>contrib/tsearch2<
/> to use current Snowball
1866 code
</para></listitem>
1872 <sect1 id=
"release-8-0-3">
1873 <title>Release
8.0.3</title>
1876 <title>Release date
</title>
1877 <simpara>2005-
05-
09</simpara>
1881 This release contains a variety of fixes from
8.0.2, including several
1882 security-related issues.
1883 For information about new features in the
8.0 major release, see
1884 <xref linkend=
"release-8-0">.
1888 <title>Migration to Version
8.0.3</title>
1891 A dump/restore is not required for those running
8.0.X. However,
1892 it is one possible way of handling two significant security problems
1893 that have been found in the initial contents of
8.0.X system
1894 catalogs. A dump/initdb/reload sequence using
8.0.3's initdb will
1895 automatically correct these problems.
1899 The larger security problem is that the built-in character set encoding
1900 conversion functions can be invoked from SQL commands by unprivileged
1901 users, but the functions were not designed for such use and are not
1902 secure against malicious choices of arguments. The fix involves changing
1903 the declared parameter list of these functions so that they can no longer
1904 be invoked from SQL commands. (This does not affect their normal use
1905 by the encoding conversion machinery.)
1909 The lesser problem is that the
<filename>contrib/tsearch2<
/> module
1910 creates several functions that are improperly declared to return
1911 <type>internal<
/> when they do not accept
<type>internal<
/> arguments.
1912 This breaks type safety for all functions using
<type>internal<
/>
1917 It is strongly recommended that all installations repair these errors,
1918 either by initdb or by following the manual repair procedure given
1919 below. The errors at least allow unprivileged database users to crash
1920 their server process, and might allow unprivileged users to gain the
1921 privileges of a database superuser.
1925 If you wish not to do an initdb, perform the same manual repair
1926 procedures shown in the
<link linkend=
"release-7-4-8">7.4.8 release
1932 <title>Changes
</title>
1935 <listitem><para>Change encoding function signature to prevent
1936 misuse
</para></listitem>
1937 <listitem><para>Change
<filename>contrib/tsearch2<
/> to avoid unsafe use of
1938 <type>INTERNAL<
/> function results
</para></listitem>
1939 <listitem><para>Guard against incorrect second parameter to
1940 <function>record_out<
/></para></listitem>
1941 <listitem><para>Repair ancient race condition that allowed a transaction to be
1942 seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
1943 than for other purposes
</para>
1944 <para>This is an extremely serious bug since it could lead to apparent
1945 data inconsistencies being briefly visible to applications.
</para></listitem>
1946 <listitem><para>Repair race condition between relation extension and
1948 <para>This could theoretically have caused loss of a page's worth of
1949 freshly-inserted data, although the scenario seems of very low probability.
1950 There are no known cases of it having caused more than an Assert failure.
1952 <listitem><para>Fix comparisons of
<type>TIME WITH TIME ZONE<
/> values
</para>
1954 The comparison code was wrong in the case where the
1955 <literal>--enable-integer-datetimes<
/> configuration switch had been used.
1956 NOTE: if you have an index on a
<type>TIME WITH TIME ZONE<
/> column,
1957 it will need to be
<command>REINDEX<
/>ed after installing this update, because
1958 the fix corrects the sort order of column values.
1960 <listitem><para>Fix
<function>EXTRACT(EPOCH)<
/> for
1961 <type>TIME WITH TIME ZONE<
/> values
</para></listitem>
1962 <listitem><para>Fix mis-display of negative fractional seconds in
1963 <type>INTERVAL<
/> values
</para>
1965 This error only occurred when the
1966 <literal>--enable-integer-datetimes<
/> configuration switch had been used.
1968 <listitem><para>Fix pg_dump to dump trigger names containing
<literal>%<
/>
1969 correctly (Neil)
</para></listitem>
1970 <listitem><para>Still more
64-bit fixes for
1971 <filename>contrib/intagg<
/></para></listitem>
1972 <listitem><para>Prevent incorrect optimization of functions returning
1973 <type>RECORD<
/></para></listitem>
1974 <listitem><para>Prevent crash on
<literal>COALESCE(NULL,NULL)<
/></para></listitem>
1975 <listitem><para>Fix Borland makefile for libpq
</para></listitem>
1976 <listitem><para>Fix
<filename>contrib/btree_gist<
/> for
<type>timetz<
/> type
1977 (Teodor)
</para></listitem>
1978 <listitem><para>Make
<command>pg_ctl<
/> check the PID found in
1979 <filename>postmaster.pid<
/> to see if it is still a live
1980 process
</para></listitem>
1981 <listitem><para>Fix
<command>pg_dump<
/>/
<command>pg_restore<
/> problems caused
1982 by addition of dump timestamps
</para></listitem>
1983 <listitem><para>Fix interaction between materializing holdable cursors and
1984 firing deferred triggers during transaction commit
</para></listitem>
1985 <listitem><para>Fix memory leak in SQL functions returning pass-by-reference
1986 data types
</para></listitem>
1992 <sect1 id=
"release-8-0-2">
1993 <title>Release
8.0.2</title>
1996 <title>Release date
</title>
1997 <simpara>2005-
04-
07</simpara>
2001 This release contains a variety of fixes from
8.0.1.
2002 For information about new features in the
8.0 major release, see
2003 <xref linkend=
"release-8-0">.
2007 <title>Migration to Version
8.0.2</title>
2010 A dump/restore is not required for those running
8.0.*.
2011 This release updates the major version number of the
2012 <productname>PostgreSQL
</productname> libraries, so it might be
2013 necessary to re-link some user applications if they cannot
2014 find the properly-numbered shared library.
2019 <title>Changes
</title>
2022 <listitem><para>Increment the major version number of all interface
2023 libraries (Bruce)
</para>
2025 This should have been done in
8.0.0. It is required so
7.4.X versions
2026 of PostgreSQL client applications, like
<application>psql<
/>,
2027 can be used on the same machine as
8.0.X applications. This might require
2028 re-linking user applications that use these libraries.
2030 <listitem><para>Add Windows-only
<varname>wal_sync_method<
/> setting of
2031 <option>fsync_writethrough<
/> (Magnus, Bruce)
</para>
2033 This setting causes
<productname>PostgreSQL
</productname> to write through
2034 any disk-drive write cache when writing to WAL.
2035 This behavior was formerly called
<option>fsync<
/>, but was
2036 renamed because it acts quite differently from
<option>fsync<
/> on other
2040 <listitem><para>Enable the
<varname>wal_sync_method<
/> setting of
2041 <option>open_datasync<
/> on Windows, and make it the default for that
2042 platform (Magnus, Bruce)
</para>
2044 Because the default is no longer
<option>fsync_writethrough<
/>,
2045 data loss is possible during a power failure if the disk drive has
2046 write caching enabled. To turn off the write cache on Windows,
2047 from the
<application>Device Manager<
/>, choose the drive properties,
2048 then
<literal>Policies<
/>.
2051 <listitem><para>New cache management algorithm
<acronym>2Q<
/> replaces
2052 <acronym>ARC<
/> (Tom)
</para>
2054 This was done to avoid a pending US patent on
<acronym>ARC<
/>. The
2055 <acronym>2Q<
/> code might be a few percentage points slower than
2056 <acronym>ARC<
/> for some work loads. A better cache management algorithm
2059 <listitem><para>Planner adjustments to improve behavior on freshly-created
2060 tables (Tom)
</para></listitem>
2061 <listitem><para>Allow plpgsql to assign to an element of an array that is
2062 initially
<literal>NULL<
/> (Tom)
</para>
2064 Formerly the array would remain
<literal>NULL<
/>, but now it becomes a
2065 single-element array. The main SQL engine was changed to handle
2066 <command>UPDATE<
/> of a null array value this way in
8.0, but the similar
2067 case in plpgsql was overlooked.
2070 <listitem><para>Convert
<literal>\r\n<
/> and
<literal>\r<
/> to
<literal>\n<
/>
2071 in plpython function bodies (Michael Fuhr)
</para>
2073 This prevents syntax errors when plpython code is written on a Windows or
2077 <listitem><para>Allow SPI cursors to handle utility commands that return rows,
2078 such as
<command>EXPLAIN<
/> (Tom)
</para></listitem>
2079 <listitem><para>Fix
<command>CLUSTER<
/> failure after
<command>ALTER TABLE
2080 SET WITHOUT OIDS<
/> (Tom)
</para></listitem>
2081 <listitem><para>Reduce memory usage of
<command>ALTER TABLE ADD COLUMN<
/>
2082 (Neil)
</para></listitem>
2083 <listitem><para>Fix
<command>ALTER LANGUAGE RENAME<
/> (Tom)
</para></listitem>
2084 <listitem><para>Document the Windows-only
<literal>register<
/> and
2085 <literal>unregister<
/> options of
<application>pg_ctl<
/> (Magnus)
</para></listitem>
2086 <listitem><para>Ensure operations done during backend shutdown are counted by
2087 statistics collector
</para>
2089 This is expected to resolve reports of
<application>pg_autovacuum<
/>
2090 not vacuuming the system catalogs often enough
— it was not being
2091 told about catalog deletions caused by temporary table removal during
2094 <listitem><para>Change the Windows default for configuration parameter
2095 <varname>log_destination<
/> to
<option>eventlog<
/> (Magnus)
</para>
2097 By default, a server running on Windows will now send log output to the
2098 Windows event logger rather than standard error.
2100 <listitem><para>Make Kerberos authentication work on Windows (Magnus)
</para></listitem>
2101 <listitem><para>Allow
<command>ALTER DATABASE RENAME<
/> by superusers
2102 who aren't flagged as having CREATEDB privilege (Tom)
</para></listitem>
2103 <listitem><para>Modify WAL log entries for
<command>CREATE<
/> and
2104 <command>DROP DATABASE<
/> to not specify absolute paths (Tom)
</para>
2105 <para>This allows point-in-time recovery on a different machine with possibly
2106 different database location. Note that
<command>CREATE TABLESPACE<
/> still
2107 poses a hazard in such situations.
2109 <listitem><para>Fix crash from a backend exiting with an open transaction
2110 that created a table and opened a cursor on it (Tom)
</para></listitem>
2111 <listitem><para>Fix
<function>array_map()<
/> so it can call PL functions
2112 (Tom)
</para></listitem>
2113 <listitem><para>Several
<filename>contrib/tsearch2<
/> and
2114 <filename>contrib/btree_gist<
/> fixes (Teodor)
2116 <listitem><para>Fix crash of some
<filename>contrib/pgcrypto<
/>
2117 functions on some platforms (Marko Kreen)
</para></listitem>
2118 <listitem><para>Fix
<filename>contrib/intagg<
/> for
64-bit platforms
2119 (Tom)
</para></listitem>
2120 <listitem><para>Fix ecpg bugs in parsing of
<command>CREATE<
/> statement
2121 (Michael)
</para></listitem>
2122 <listitem><para>Work around gcc bug on powerpc and amd64 causing problems in
2123 ecpg (Christof Petig)
</para></listitem>
2124 <listitem><para>Do not use locale-aware versions of
<function>upper()<
/>,
2125 <function>lower()<
/>, and
<function>initcap()<
/> when the locale is
2126 <literal>C<
/> (Bruce)
</para>
2128 This allows these functions to work on platforms that generate errors
2129 for non-
7-bit data when the locale is
<literal>C<
/>.
2131 <listitem><para>Fix
<function>quote_ident()<
/> to quote names that match keywords (Tom)
</para></listitem>
2132 <listitem><para>Fix
<function>to_date()<
/> to behave reasonably when
2133 <literal>CC<
/> and
<literal>YY<
/> fields are both used (Karel)
</para></listitem>
2134 <listitem><para>Prevent
<function>to_char(interval)<
/> from failing
2135 when given a zero-month interval (Tom)
</para></listitem>
2136 <listitem><para>Fix wrong week returned by
<function>date_trunc('week')<
/>
2139 <function>date_trunc('week')<
/>
2140 returned the wrong year for the first few days of January in some years.
2142 <listitem><para>Use the correct default mask length for class
<literal>D<
/>
2143 addresses in
<type>INET<
/> data types (Tom)
</para></listitem>
2149 <sect1 id=
"release-8-0-1">
2150 <title>Release
8.0.1</title>
2153 <title>Release date
</title>
2154 <simpara>2005-
01-
31</simpara>
2158 This release contains a variety of fixes from
8.0.0, including several
2159 security-related issues.
2160 For information about new features in the
8.0 major release, see
2161 <xref linkend=
"release-8-0">.
2165 <title>Migration to Version
8.0.1</title>
2168 A dump/restore is not required for those running
8.0.0.
2173 <title>Changes
</title>
2176 <listitem><para>Disallow
<command>LOAD<
/> to non-superusers
</para>
2178 On platforms that will automatically execute initialization functions of a
2179 shared library (this includes at least Windows and ELF-based Unixen),
2180 <command>LOAD<
/> can be used to make the server execute arbitrary code.
2181 Thanks to NGS Software for reporting this.
</para></listitem>
2182 <listitem><para>Check that creator of an aggregate function has the right to
2183 execute the specified transition functions
</para>
2185 This oversight made it possible to bypass denial of EXECUTE
2186 permission on a function.
</para></listitem>
2187 <listitem><para>Fix security and
64-bit issues in
2188 contrib/intagg
</para></listitem>
2189 <listitem><para>Add needed STRICT marking to some contrib functions (Kris
2190 Jurka)
</para></listitem>
2191 <listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
2192 many parameters (Neil)
</para></listitem>
2193 <listitem><para>Make
<command>ALTER TABLE ADD COLUMN<
/> enforce domain
2194 constraints in all cases
</para></listitem>
2195 <listitem><para>Fix planning error for FULL and RIGHT outer joins
</para>
2197 The result of the join was mistakenly supposed to be sorted the same as the
2198 left input. This could not only deliver mis-sorted output to the user, but
2199 in case of nested merge joins could give outright wrong answers.
2201 <listitem><para>Improve planning of grouped aggregate queries
</para></listitem>
2202 <listitem><para><command>ROLLBACK TO
<replaceable>savepoint<
/></command>
2203 closes cursors created since the savepoint
</para></listitem>
2204 <listitem><para>Fix inadequate backend stack size on Windows
</para></listitem>
2205 <listitem><para>Avoid SHGetSpecialFolderPath() on Windows
2206 (Magnus)
</para></listitem>
2207 <listitem><para>Fix some problems in running pg_autovacuum as a Windows
2208 service (Dave Page)
</para></listitem>
2209 <listitem><para>Multiple minor bug fixes in
2210 pg_dump/pg_restore
</para></listitem>
2211 <listitem><para>Fix ecpg segfault with named structs used in
2212 typedefs (Michael)
</para></listitem>
2218 <sect1 id=
"release-8-0">
2219 <title>Release
8.0</title>
2222 <title>Release date
</title>
2223 <simpara>2005-
01-
19</simpara>
2227 <title>Overview
</title>
2230 Major changes in this release:
2236 Microsoft Windows Native Server
2241 This is the first
<productname>PostgreSQL
</productname> release
2242 to run natively on
<trademark class=
"registered">Microsoft Windows<
/> as
2243 a server. It can run as a
<productname>Windows<
/> service. This
2244 release supports NT-based Windows releases like
2245 <productname>Windows
2000 SP4<
/>,
<productname>Windows XP<
/>, and
2246 <productname>Windows
2003<
/>. Older releases like
2247 <productname>Windows
95<
/>,
<productname>Windows
98<
/>, and
2248 <productname>Windows ME<
/> are not supported because these operating
2249 systems do not have the infrastructure to support
2250 <productname>PostgreSQL
</productname>. A separate installer
2251 project has been created to ease installation on
2252 <productname>Windows<
/> — see
<ulink
2253 url=
"http://www.postgresql.org/ftp/win32/"></ulink>.
2257 Although tested throughout our release cycle, the Windows port
2258 does not have the benefit of years of use in production
2259 environments that
<productname>PostgreSQL
</productname> has on
2260 Unix platforms. Therefore it should be treated with the same
2261 level of caution as you would a new product.
2265 Previous releases required the Unix emulation toolkit
2266 <productname>Cygwin<
/> in order to run the server on Windows
2267 operating systems.
<productname>PostgreSQL
</productname> has
2268 supported native clients on Windows for many years.
2280 Savepoints allow specific parts of a transaction to be aborted
2281 without affecting the remainder of the transaction. Prior
2282 releases had no such capability; there was no way to recover
2283 from a statement failure within a transaction except by
2284 aborting the whole transaction. This feature is valuable for
2285 application writers who require error recovery within a
2286 complex transaction.
2293 Point-In-Time Recovery
2298 In previous releases there was no way to recover from disk
2299 drive failure except to restore from a previous backup or use
2300 a standby replication server. Point-in-time recovery allows
2301 continuous backup of the server. You can recover either to
2302 the point of failure or to some transaction in the past.
2314 Tablespaces allow administrators to select different file systems
2315 for storage of individual tables, indexes, and databases.
2316 This improves performance and control over disk space
2317 usage. Prior releases used
<application>initlocation<
/> and
2318 manual symlink management for such tasks.
2325 Improved Buffer Management,
<command>CHECKPOINT
</command>,
2326 <command>VACUUM
</command>
2331 This release has a more intelligent buffer replacement strategy,
2332 which will make better use of available shared buffers and
2333 improve performance. The performance impact of vacuum and
2334 checkpoints is also lessened.
2346 A column's data type can now be changed with
<command>ALTER
2354 New Perl Server-Side Language
2359 A new version of the
<application>plperl<
/> server-side language now
2360 supports a persistent shared storage area, triggers, returning records
2361 and arrays of records, and SPI calls to access the database.
2368 Comma-separated-value (CSV) support in
<command>COPY
</command>
2373 <command>COPY
</command> can now read and write
2374 comma-separated-value files. It has the flexibility to
2375 interpret nonstandard quoting and separation characters too.
2384 <title>Migration to Version
8.0</title>
2387 A dump/restore using
<application>pg_dump
</application> is
2388 required for those wishing to migrate data from any previous
2393 Observe the following incompatibilities:
2400 In
<option>READ COMMITTED<
/> serialization mode, volatile functions
2401 now see the results of concurrent transactions committed up to the
2402 beginning of each statement within the function, rather than up to the
2403 beginning of the interactive command that called the function.
2409 Functions declared
<option>STABLE<
/> or
<option>IMMUTABLE<
/> always
2410 use the snapshot of the calling query, and therefore do not see the
2411 effects of actions taken after the calling query starts, whether in
2412 their own transaction or other transactions. Such a function must be
2413 read-only, too, meaning that it cannot use any SQL commands other than
2420 Nondeferred
<option>AFTER<
/> triggers are now fired immediately
2421 after completion of the triggering query, rather than upon
2422 finishing the current interactive command. This makes a
2423 difference when the triggering query occurred within a function:
2424 the trigger is invoked before the function proceeds to its next
2431 Server configuration parameters
<varname>virtual_host<
/> and
2432 <varname>tcpip_socket<
/> have been replaced with a more general
2433 parameter
<varname>listen_addresses<
/>. Also, the server now listens on
2434 <literal>localhost<
/> by default, which eliminates the need for the
2435 <literal>-i<
/> postmaster switch in many scenarios.
2441 Server configuration parameters
<varname>SortMem<
/> and
2442 <varname>VacuumMem<
/> have been renamed to
<varname>work_mem<
/>
2443 and
<varname>maintenance_work_mem<
/> to better reflect their
2444 use. The original names are still supported in
2445 <command>SET
</command> and
<command>SHOW
</command>.
2451 Server configuration parameters
<varname>log_pid<
/>,
2452 <varname>log_timestamp<
/>, and
<varname>log_source_port<
/> have been
2453 replaced with a more general parameter
<varname>log_line_prefix<
/>.
2459 Server configuration parameter
<varname>syslog<
/> has been
2460 replaced with a more logical
<varname>log_destination<
/> variable to
2461 control the log output destination.
2467 Server configuration parameter
<varname>log_statement<
/> has been
2468 changed so it can selectively log just database modification or
2469 data definition statements. Server configuration parameter
2470 <varname>log_duration<
/> now prints only when
<varname>log_statement<
/>
2477 Server configuration parameter
<varname>max_expr_depth<
/> parameter has
2478 been replaced with
<varname>max_stack_depth<
/> which measures the
2479 physical stack size rather than the expression nesting depth. This
2480 helps prevent session termination due to stack overflow caused by
2481 recursive functions.
2487 The
<function>length()<
/> function no longer counts trailing spaces in
2488 <type>CHAR(n)<
/> values.
2494 Casting an integer to
<type>BIT(N)<
/> selects the rightmost N bits of the
2495 integer, not the leftmost N bits as before.
2501 Updating an element or slice of a NULL array value now produces
2502 a nonnull array result, namely an array containing
2503 just the assigned-to positions.
2509 Syntax checking of array input values has been tightened up
2510 considerably. Junk that was previously allowed in odd places with
2511 odd results now causes an error. Empty-string element values
2512 must now be written as
<literal>""<
/>, rather than writing nothing.
2513 Also changed behavior with respect to whitespace surrounding
2514 array elements: trailing whitespace is now ignored, for symmetry
2515 with leading whitespace (which has always been ignored).
2521 Overflow in integer arithmetic operations is now detected and
2522 reported as an error.
2528 The arithmetic operators associated with the single-byte
2529 <type>"char"<
/> data type have been removed.
2535 The
<function>extract()<
/> function (also called
2536 <function>date_part<
/>) now returns the proper year for BC dates.
2537 It previously returned one less than the correct year. The
2538 function now also returns the proper values for millennium and
2545 <type>CIDR<
/> values now must have their nonmasked bits be zero.
2546 For example, we no longer allow
2547 <literal>204.248.199.1/
31</literal> as a
<type>CIDR<
/> value. Such
2548 values should never have been accepted by
2549 <productname>PostgreSQL
</productname> and will now be rejected.
2555 <command>EXECUTE
</command> now returns a completion tag that
2556 matches the executed statement.
2562 <application>psql<
/>'s
<command>\copy<
/> command now reads or
2563 writes to the query's
<literal>stdin/stdout<
/>, rather than
2564 <application>psql<
/>'s
<literal>stdin/stdout<
/>. The previous
2565 behavior can be accessed via new
2566 <option>pstdin<
/>/
<option>pstdout<
/> parameters.
2572 The JDBC client interface has been removed from the core
2573 distribution, and is now hosted at
<ulink url=
2574 "http://jdbc.postgresql.org"></ulink>.
2580 The Tcl client interface has also been removed. There are several
2581 Tcl interfaces now hosted at
<ulink url=
2582 "http://gborg.postgresql.org"></ulink>.
2588 The server now uses its own time zone database, rather than the
2589 one supplied by the operating system. This will provide consistent
2590 behavior across all platforms. In most cases, there should be
2591 little noticeable difference in time zone behavior, except that
2592 the time zone names used by
<command>SET<
/>/
<command>SHOW<
/>
2593 <varname>TimeZone<
/> might be different from what your platform provides.
2599 <application>Configure<
/>'s threading option no longer requires
2600 users to run tests or edit configuration files; threading options
2601 are now detected automatically.
2607 Now that tablespaces have been implemented,
2608 <application>initlocation<
/> has been removed.
2614 The API for user-defined GiST indexes has been changed. The
2615 Union and PickSplit methods are now passed a pointer to a
2616 special
<structname>GistEntryVector
</structname> structure,
2617 rather than a
<type>bytea
</type>.
2625 <title>Deprecated Features
</title>
2628 Some aspects of
<productname>PostgreSQL
</productname>'s behavior
2629 have been determined to be suboptimal. For the sake of backward
2630 compatibility these have not been removed in
8.0, but they are
2631 considered deprecated and will be removed in the next major
2638 The
8.1 release will remove the
<function>to_char()<
/> function
2645 The server now warns of empty strings passed to
2646 <type>oid
</type>/
<type>float4
</type>/
<type>float8
</type> data
2647 types, but continues to interpret them as zeroes as before.
2648 In the next major release, empty strings will be considered
2649 invalid input for these data types.
2655 By default, tables in
<productname>PostgreSQL
</productname> 8.0
2656 and earlier are created with
<type>OID<
/>s. In the next release,
2657 this will
<emphasis>not
</emphasis> be the case: to create a table
2658 that contains
<type>OID<
/>s, the
<option>WITH OIDS<
/> clause must
2659 be specified or the
<varname>default_with_oids
</varname>
2660 configuration parameter must be set. Users are encouraged to
2661 explicitly specify
<option>WITH OIDS<
/> if their tables
2662 require OIDs for compatibility with future releases of
2663 <productname>PostgreSQL
</productname>.
2671 <title>Changes
</title>
2674 Below you will find a detailed account of the changes between
2675 release
8.0 and the previous major release.
2679 <title>Performance Improvements
</title>
2684 Support cross-data-type index usage (Tom)
2687 Before this change, many queries would not use an index if the data
2688 types did not match exactly. This improvement makes index usage more
2689 intuitive and consistent.
2695 New buffer replacement strategy that improves caching (Jan)
2698 Prior releases used a least-recently-used (LRU) cache to keep
2699 recently referenced pages in memory. The LRU algorithm
2700 did not consider the number of times a specific cache entry was
2701 accessed, so large table scans could force out useful cache pages.
2702 The new cache algorithm uses four separate lists to track most
2703 recently used and most frequently used cache pages and dynamically
2704 optimize their replacement based on the work load. This should
2705 lead to much more efficient use of the shared buffer cache.
2706 Administrators who have tested shared buffer sizes in the past
2707 should retest with this new cache replacement policy.
2713 Add subprocess to write dirty buffers periodically to reduce
2714 checkpoint writes (Jan)
2717 In previous releases, the checkpoint process, which runs every few
2718 minutes, would write all dirty buffers to the operating system's
2719 buffer cache then flush all dirty operating system buffers to
2720 disk. This resulted in a periodic spike in disk usage that often
2721 hurt performance. The new code uses a background writer to trickle
2722 disk writes at a steady pace so checkpoints have far fewer dirty
2723 pages to write to disk. Also, the new code does not issue a global
2724 <function>sync()<
/> call, but instead
<function>fsync()<
/>s just
2725 the files written since the last checkpoint. This should improve
2726 performance and minimize degradation during checkpoints.
2732 Add ability to prolong vacuum to reduce performance impact (Jan)
2735 On busy systems,
<command>VACUUM
</command> performs many I/O
2736 requests which can hurt performance for other users. This
2737 release allows you to slow down
<command>VACUUM
</command> to
2738 reduce its impact on other users, though this increases the
2739 total duration of
<command>VACUUM
</command>.
2745 Improve B-tree index performance for duplicate keys (Dmitry Tkach, Tom)
2748 This improves the way indexes are scanned when many duplicate
2749 values exist in the index.
2755 Use dynamically-generated table size estimates while planning (Tom)
2758 Formerly the planner estimated table sizes using the values seen
2759 by the last
<command>VACUUM
</command> or
<command>ANALYZE
</command>,
2760 both as to physical table size (number of pages) and number of rows.
2761 Now, the current physical table size is obtained from the kernel,
2762 and the number of rows is estimated by multiplying the table size
2763 by the row density (rows per page) seen by the last
2764 <command>VACUUM
</command> or
<command>ANALYZE
</command>. This should
2765 produce more reliable estimates in cases where the table size has
2766 changed significantly since the last housekeeping command.
2772 Improved index usage with
<literal>OR<
/> clauses (Tom)
2775 This allows the optimizer to use indexes in statements with many OR
2776 clauses that would not have been indexed in the past. It can also use
2777 multi-column indexes where the first column is specified and the second
2778 column is part of an
<literal>OR<
/> clause.
2784 Improve matching of partial index clauses (Tom)
2787 The server is now smarter about using partial indexes in queries
2788 involving complex
<option>WHERE<
/> clauses.
2794 Improve performance of the GEQO optimizer (Tom)
2797 The GEQO optimizer is used to plan queries involving many tables (by
2798 default, twelve or more). This release speeds up the way queries are
2799 analyzed to decrease time spent in optimization.
2805 Miscellaneous optimizer improvements
2808 There is not room here to list all the minor improvements made, but
2809 numerous special cases work better than in prior releases.
2815 Improve lookup speed for C functions (Tom)
2818 This release uses a hash table to lookup information for dynamically
2819 loaded C functions. This improves their speed so they perform nearly as
2820 quickly as functions that are built into the server executable.
2826 Add type-specific
<command>ANALYZE
</command> statistics
2827 capability (Mark Cave-Ayland)
2830 This feature allows more flexibility in generating statistics
2831 for nonstandard data types.
2837 <command>ANALYZE
</command> now collects statistics for
2838 expression indexes (Tom)
2841 Expression indexes (also called functional indexes) allow users to
2842 index not just columns but the results of expressions and function
2843 calls. With this release, the optimizer can gather and use statistics
2844 about the contents of expression indexes. This will greatly improve
2845 the quality of planning for queries in which an expression index is
2852 New two-stage sampling method for
<command>ANALYZE
</command>
2856 This gives better statistics when the density of valid rows is very
2857 different in different regions of a table.
2863 Speed up
<command>TRUNCATE
</command> (Tom)
2866 This buys back some of the performance loss observed in
7.4, while still
2867 keeping
<command>TRUNCATE
</command> transaction-safe.
2876 <title>Server Changes
</title>
2881 Add WAL file archiving and point-in-time recovery (Simon Riggs)
2887 Add tablespaces so admins can control disk layout (Gavin)
2893 Add a built-in log rotation program (Andreas Pflug)
2896 It is now possible to log server messages conveniently without
2897 relying on either
<application>syslog<
/> or an external log
2904 Add new read-only server configuration parameters to show server
2905 compile-time settings:
<varname>block_size<
/>,
2906 <varname>integer_datetimes<
/>,
<varname>max_function_args<
/>,
2907 <varname>max_identifier_length<
/>,
<varname>max_index_keys<
/> (Joe)
2913 Make quoting of
<literal>sameuser<
/>,
<literal>samegroup<
/>, and
2914 <literal>all<
/> remove special meaning of these terms in
2915 <filename>pg_hba.conf<
/> (Andrew)
2921 Use clearer IPv6 name
<literal>::
1/
128<
/> for
2922 <literal>localhost<
/> in default
<filename>pg_hba.conf<
/> (Andrew)
2928 Use CIDR format in
<filename>pg_hba.conf<
/> examples (Andrew)
2934 Rename server configuration parameters
<varname>SortMem<
/> and
2935 <varname>VacuumMem<
/> to
<varname>work_mem<
/> and
2936 <varname>maintenance_work_mem<
/> (Old names still supported) (Tom)
2939 This change was made to clarify that bulk operations such as index and
2940 foreign key creation use
<varname>maintenance_work_mem<
/>, while
2941 <varname>work_mem<
/> is for workspaces used during query execution.
2947 Allow logging of session disconnections using server configuration
2948 <varname>log_disconnections<
/> (Andrew)
2954 Add new server configuration parameter
<varname>log_line_prefix<
/> to
2955 allow control of information emitted in each log line (Andrew)
2958 Available information includes user name, database name, remote IP
2959 address, and session start time.
2965 Remove server configuration parameters
<varname>log_pid<
/>,
2966 <varname>log_timestamp<
/>,
<varname>log_source_port<
/>; functionality
2967 superseded by
<varname>log_line_prefix<
/> (Andrew)
2973 Replace the
<varname>virtual_host<
/> and
<varname>tcpip_socket<
/>
2974 parameters with a unified
<varname>listen_addresses<
/> parameter
2978 <varname>virtual_host<
/> could only specify a single IP address to
2979 listen on.
<varname>listen_addresses<
/> allows multiple addresses
2986 Listen on localhost by default, which eliminates the need for the
2987 <option>-i<
/> postmaster switch in many scenarios (Andrew)
2990 Listening on localhost (
<literal>127.0.0.1<
/>) opens no new
2991 security holes but allows configurations like Windows and JDBC,
2992 which do not support local sockets, to work without special
2999 Remove
<varname>syslog<
/> server configuration parameter, and add more
3000 logical
<varname>log_destination<
/> variable to control log output
3007 Change server configuration parameter
<varname>log_statement<
/> to take
3008 values
<varname>all<
/>,
<varname>mod<
/>,
<varname>ddl<
/>, or
3009 <varname>none<
/> to select which queries are logged (Bruce)
3012 This allows administrators to log only data definition changes or
3013 only data modification statements.
3019 Some logging-related configuration parameters could formerly be adjusted
3020 by ordinary users, but only in the
<quote>more verbose<
/> direction.
3021 They are now treated more strictly: only superusers can set them.
3022 However, a superuser can use
<command>ALTER USER<
/> to provide per-user
3023 settings of these values for non-superusers. Also, it is now possible
3024 for superusers to set values of superuser-only configuration parameters
3025 via
<literal>PGOPTIONS<
/>.
3031 Allow configuration files to be placed outside the data directory (mlw)
3034 By default, configuration files are kept in the cluster's top directory.
3035 With this addition, configuration files can be placed outside the
3036 data directory, easing administration.
3042 Plan prepared queries only when first executed so constants can be
3043 used for statistics (Oliver Jowett)
3046 Prepared statements plan queries once and execute them many
3047 times. While prepared queries avoid the overhead of re-planning
3048 on each use, the quality of the plan suffers from not knowing the exact
3049 parameters to be used in the query. In this release, planning of
3050 unnamed prepared statements is delayed until the first execution,
3051 and the actual parameter values of that execution are used as
3052 optimization hints. This allows use of out-of-line parameter passing
3053 without incurring a performance penalty.
3059 Allow
<command>DECLARE CURSOR
</command> to take parameters
3063 It is now useful to issue
<command>DECLARE CURSOR
</command> in a
3064 <function>Parse<
/> message with parameters. The parameter values
3065 sent at
<function>Bind<
/> time will be substituted into the
3066 execution of the cursor's query.
3072 Fix hash joins and aggregates of
<type>inet
</type> and
3073 <type>cidr
</type> data types (Tom)
3076 Release
7.4 handled hashing of mixed
<type>inet
</type> and
3077 <type>cidr
</type> values incorrectly. (This bug did not exist
3078 in prior releases because they wouldn't try to hash either
3085 Make
<varname>log_duration<
/> print only when
<varname>log_statement<
/>
3086 prints the query (Ed L.)
3095 <title>Query Changes
</title>
3100 Add savepoints (nested transactions) (Alvaro)
3106 Unsupported isolation levels are now accepted and promoted to the
3107 nearest supported level (Peter)
3110 The SQL specification states that if a database doesn't support a
3111 specific isolation level, it should use the next more restrictive level.
3112 This change complies with that recommendation.
3118 Allow
<command>BEGIN WORK
</command> to specify transaction
3119 isolation levels like
<command>START TRANSACTION
</command> does
3126 Fix table permission checking for cases in which rules generate
3127 a query type different from the originally submitted query (Tom)
3133 Implement dollar quoting to simplify single-quote usage (Andrew, Tom,
3137 In previous releases, because single quotes had to be used to
3138 quote a function's body, the use of single quotes inside the
3139 function text required use of two single quotes or other error-prone
3140 notations. With this release we add the ability to use
"dollar
3141 quoting" to quote a block of text. The ability to use different
3142 quoting delimiters at different nesting levels greatly simplifies
3143 the task of quoting correctly, especially in complex functions.
3144 Dollar quoting can be used anywhere quoted text is needed.
3150 Make
<literal>CASE val WHEN compval1 THEN ...<
/> evaluate
<literal>val<
/> only once (Tom)
3153 <option>CASE<
/> no longer evaluates the tested expression multiple
3154 times. This has benefits when the expression is complex or is
3161 Test
<option>HAVING<
/> before computing target list of an
3162 aggregate query (Tom)
3165 Fixes improper failure of cases such as
<literal>SELECT SUM(win)/SUM(lose)
3166 ... GROUP BY ... HAVING SUM(lose)
> 0<
/>. This should work but formerly
3167 could fail with divide-by-zero.
3173 Replace
<varname>max_expr_depth<
/> parameter with
3174 <varname>max_stack_depth<
/> parameter, measured in kilobytes of stack
3178 This gives us a fairly bulletproof defense against crashing due to
3179 runaway recursive functions. Instead of measuring the depth of expression
3180 nesting, we now directly measure the size of the execution stack.
3186 Allow arbitrary row expressions (Tom)
3189 This release allows SQL expressions to contain arbitrary composite
3190 types, that is, row values. It also allows functions to more easily
3191 take rows as arguments and return row values.
3197 Allow
<option>LIKE<
/>/
<option>ILIKE<
/> to be used as the operator
3198 in row and subselect comparisons (Fabien Coelho)
3204 Avoid locale-specific case conversion of basic ASCII letters in
3205 identifiers and keywords (Tom)
3208 This solves the
<quote>Turkish problem<
/> with mangling of words
3209 containing
<literal>I<
/> and
<literal>i<
/>. Folding of characters
3210 outside the
7-bit-ASCII set is still locale-aware.
3216 Improve syntax error reporting (Fabien, Tom)
3219 Syntax error reports are more useful than before.
3225 Change
<command>EXECUTE
</command> to return a completion tag
3226 matching the executed statement (Kris Jurka)
3229 Previous releases return an
<command>EXECUTE
</command> tag for
3230 any
<command>EXECUTE
</command> call. In this release, the tag
3231 returned will reflect the command executed.
3237 Avoid emitting
<option>NATURAL CROSS JOIN<
/> in rule listings (Tom)
3240 Such a clause makes no logical sense, but in some cases the rule
3241 decompiler formerly produced this syntax.
3250 <title>Object Manipulation Changes
</title>
3255 Add
<command>COMMENT ON<
/> for casts, conversions, languages,
3256 operator classes, and large objects (Christopher)
3262 Add new server configuration parameter
<varname>default_with_oids<
/> to
3263 control whether tables are created with
<type>OID<
/>s by default (Neil)
3266 This allows administrators to control whether
<command>CREATE
3267 TABLE
</command> commands create tables with or without
<type>OID<
/>
3268 columns by default. (Note: the current factory default setting for
3269 <varname>default_with_oids<
/> is
<literal>TRUE<
/>, but the default
3270 will become
<literal>FALSE<
/> in future releases.)
3276 Add
<option>WITH<
/> /
<option>WITHOUT OIDS<
/> clause to
3277 <command>CREATE TABLE AS
</command> (Neil)
3283 Allow
<command>ALTER TABLE DROP COLUMN<
/> to drop an
<type>OID<
/>
3284 column (
<command>ALTER TABLE SET WITHOUT OIDS<
/> still works)
3291 Allow composite types as table columns (Tom)
3297 Allow
<command>ALTER ... ADD COLUMN<
/> with defaults and
3298 <option>NOT NULL<
/> constraints; works per SQL spec (Rod)
3301 It is now possible for
<option>ADD COLUMN<
/> to create a column
3302 that is not initially filled with NULLs, but with a specified
3309 Add
<command>ALTER COLUMN TYPE<
/> to change column's type (Rod)
3312 It is now possible to alter a column's data type without dropping
3313 and re-adding the column.
3319 Allow multiple
<command>ALTER<
/> actions in a single
<command>ALTER
3320 TABLE
</command> command (Rod)
3323 This is particularly useful for
<command>ALTER<
/> commands that
3324 rewrite the table (which include
<option>ALTER COLUMN TYPE<
/> and
3325 <option>ADD COLUMN<
/> with a default). By grouping
3326 <command>ALTER<
/> commands together, the table need be rewritten
3333 Allow
<command>ALTER TABLE
</command> to add
<type>SERIAL
</type>
3337 This falls out from the new capability of specifying defaults for new
3344 Allow changing the owners of aggregates, conversions, databases,
3345 functions, operators, operator classes, schemas, types, and tablespaces
3346 (Christopher, Euler Taveira de Oliveira)
3349 Previously this required modifying the system tables directly.
3355 Allow temporary object creation to be limited to
<option>SECURITY
3356 DEFINER<
/> functions (Sean Chittenden)
3362 Add
<option>ALTER TABLE ... SET WITHOUT CLUSTER<
/> (Christopher)
3365 Prior to this release, there was no way to clear an auto-cluster
3366 specification except to modify the system tables.
3372 Constraint/Index/
<type>SERIAL<
/> names are now
3373 <replaceable>table_column_type<
/>
3374 with numbers appended to guarantee uniqueness within the schema
3378 The SQL specification states that such names should be unique
3385 Add
<function>pg_get_serial_sequence()<
/> to return a
3386 <type>SERIAL<
/> column's sequence name (Christopher)
3389 This allows automated scripts to reliably find the
<type>SERIAL<
/>
3396 Warn when primary/foreign key data type mismatch requires costly lookup
3402 New
<command>ALTER INDEX<
/> command to allow moving of indexes
3403 between tablespaces (Gavin)
3409 Make
<command>ALTER TABLE OWNER<
/> change dependent sequence
3410 ownership too (Alvaro)
3420 <title>Utility Command Changes
</title>
3425 Allow
<command>CREATE SCHEMA
</command> to create triggers,
3426 indexes, and sequences (Neil)
3432 Add
<option>ALSO<
/> keyword to
<command>CREATE RULE
</command> (Fabien
3436 This allows
<option>ALSO<
/> to be added to rule creation to contrast it with
3437 <option>INSTEAD<
/> rules.
3443 Add
<option>NOWAIT<
/> option to
<command>LOCK
</command> (Tatsuo)
3446 This allows the
<command>LOCK
</command> command to fail if it
3447 would have to wait for the requested lock.
3453 Allow
<command>COPY
</command> to read and write
3454 comma-separated-value (CSV) files (Andrew, Bruce)
3460 Generate error if the
<command>COPY
</command> delimiter and NULL
3461 string conflict (Bruce)
3467 <command>GRANT
</command>/
<command>REVOKE
</command> behavior
3468 follows the SQL spec more closely
3474 Avoid locking conflict between
<command>CREATE INDEX
</command>
3475 and
<command>CHECKPOINT
</command> (Tom)
3478 In
7.3 and
7.4, a long-running B-tree index build could block concurrent
3479 <command>CHECKPOINT<
/>s from completing, thereby causing WAL bloat because the
3480 WAL log could not be recycled.
3486 Database-wide
<command>ANALYZE
</command> does not hold locks
3490 This reduces the potential for deadlocks against other backends
3491 that want exclusive locks on tables. To get the benefit of this
3492 change, do not execute database-wide
<command>ANALYZE
</command>
3493 inside a transaction block (
<command>BEGIN
</command> block); it
3494 must be able to commit and start a new transaction for each
3501 <command>REINDEX
</command> does not exclusively lock the index's
3502 parent table anymore
3505 The index itself is still exclusively locked, but readers of the
3506 table can continue if they are not using the particular index
3513 Erase MD5 user passwords when a user is renamed (Bruce)
3516 <productname>PostgreSQL
</productname> uses the user name as salt
3517 when encrypting passwords via MD5. When a user's name is changed,
3518 the salt will no longer match the stored MD5 password, so the
3519 stored password becomes useless. In this release a notice is
3520 generated and the password is cleared. A new password must then
3521 be assigned if the user is to be able to log in with a password.
3527 New
<application>pg_ctl<
/> <option>kill<
/> option for Windows (Andrew)
3530 Windows does not have a
<literal>kill<
/> command to send signals to
3531 backends so this capability was added to
<application>pg_ctl<
/>.
3537 Information schema improvements
3543 Add
<option>--pwfile<
/> option to
3544 <application>initdb
</application> so the initial password can be
3545 set by GUI tools (Magnus)
3551 Detect locale/encoding mismatch in
3552 <application>initdb
</application> (Peter)
3558 Add
<option>register<
/> command to
<application>pg_ctl<
/> to
3559 register Windows operating system service (Dave Page)
3568 <title>Data Type and Function Changes
</title>
3573 More complete support for composite types (row types) (Tom)
3576 Composite values can be used in many places where only scalar values
3583 Reject nonrectangular array values as erroneous (Joe)
3586 Formerly,
<function>array_in<
/> would silently build a
3593 Overflow in integer arithmetic operations is now detected (Tom)
3599 The arithmetic operators associated with the single-byte
3600 <type>"char"<
/> data type have been removed.
3603 Formerly, the parser would select these operators in many situations
3604 where an
<quote>unable to select an operator<
/> error would be more
3605 appropriate, such as
<literal>null * null<
/>. If you actually want
3606 to do arithmetic on a
<type>"char"<
/> column, you can cast it to
3613 Syntax checking of array input values considerably tightened up (Joe)
3616 Junk that was previously allowed in odd places with odd results
3617 now causes an
<literal>ERROR<
/>, for example, non-whitespace
3618 after the closing right brace.
3624 Empty-string array element values must now be written as
3625 <literal>""<
/>, rather than writing nothing (Joe)
3628 Formerly, both ways of writing an empty-string element value were
3629 allowed, but now a quoted empty string is required. The case where
3630 nothing at all appears will probably be considered to be a NULL
3631 element value in some future release.
3637 Array element trailing whitespace is now ignored (Joe)
3640 Formerly leading whitespace was ignored, but trailing whitespace
3641 between an element value and the delimiter or right brace was
3642 significant. Now trailing whitespace is also ignored.
3648 Emit array values with explicit array bounds when lower bound is not one
3655 Accept
<literal>YYYY-monthname-DD<
/> as a date string (Tom)
3661 Make
<function>netmask<
/> and
<function>hostmask<
/> functions
3662 return maximum-length mask length (Tom)
3668 Change factorial function to return
<type>numeric
</type> (Gavin)
3671 Returning
<type>numeric
</type> allows the factorial function to
3672 work for a wider range of input values.
3678 <function>to_char<
/>/
<function>to_date()<
/> date conversion
3679 improvements (Kurt Roeckx, Fabien Coelho)
3685 Make
<function>length()<
/> disregard trailing spaces in
3686 <type>CHAR(n)<
/> (Gavin)
3689 This change was made to improve consistency: trailing spaces are
3690 semantically insignificant in
<type>CHAR(n)<
/> data, so they
3691 should not be counted by
<function>length()<
/>.
3697 Warn about empty string being passed to
3698 <type>OID<
/>/
<type>float4<
/>/
<type>float8<
/> data types (Neil)
3701 8.1 will throw an error instead.
3707 Allow leading or trailing whitespace in
3708 <type>int2<
/>/
<type>int4<
/>/
<type>int8<
/>/
<type>float4<
/>/
<type>float8<
/>
3716 Better support for IEEE
<literal>Infinity<
/> and
<literal>NaN<
/>
3717 values in
<type>float4
</type>/
<type>float8
</type> (Neil)
3720 These should now work on all platforms that support IEEE-compliant
3721 floating point arithmetic.
3727 Add
<option>week<
/> option to
<function>date_trunc()<
/> (Robert Creager)
3733 Fix
<function>to_char
</function> for
<literal>1 BC<
/>
3734 (previously it returned
<literal>1 AD<
/>) (Bruce)
3740 Fix
<function>date_part(year)<
/> for BC dates (previously it
3741 returned one less than the correct year) (Bruce)
3747 Fix
<function>date_part()<
/> to return the proper millennium and
3748 century (Fabien Coelho)
3751 In previous versions, the century and millennium results had a wrong
3752 number and started in the wrong year, as compared to standard
3753 reckoning of such things.
3759 Add
<function>ceiling()<
/> as an alias for
<function>ceil()<
/>,
3760 and
<function>power()<
/> as an alias for
<function>pow()<
/> for
3761 standards compliance (Neil)
3767 Change
<function>ln()<
/>,
<function>log()<
/>,
3768 <function>power()<
/>, and
<function>sqrt()<
/> to emit the correct
3769 <literal>SQLSTATE<
/> error codes for certain error conditions, as
3770 specified by SQL:
2003 (Neil)
3776 Add
<function>width_bucket()<
/> function as defined by SQL:
2003 (Neil)
3782 Add
<function>generate_series()<
/> functions to simplify working
3783 with numeric sets (Joe)
3789 Fix
<function>upper/lower/initcap()<
/> functions to work with
3790 multibyte encodings (Tom)
3796 Add boolean and bitwise integer
<option>AND<
/>/
<option>OR<
/>
3797 aggregates (Fabien Coelho)
3803 New session information functions to return network addresses for client
3804 and server (Sean Chittenden)
3810 Add function to determine the area of a closed path (Sean Chittenden)
3816 Add function to send cancel request to other backends (Magnus)
3822 Add
<type>interval<
/> plus
<type>datetime<
/> operators (Tom)
3825 The reverse ordering,
<type>datetime<
/> plus
<type>interval<
/>,
3826 was already supported, but both are required by the SQL standard.
3832 Casting an integer to
<type>BIT(N)<
/> selects the rightmost N bits
3837 In prior releases, the leftmost N bits were selected, but this was
3838 deemed unhelpful, not to mention inconsistent with casting from bit
3845 Require
<type>CIDR<
/> values to have all nonmasked bits be zero
3855 <title>Server-Side Language Changes
</title>
3860 In
<literal>READ COMMITTED<
/> serialization mode, volatile functions
3861 now see the results of concurrent transactions committed up to the
3862 beginning of each statement within the function, rather than up to the
3863 beginning of the interactive command that called the function.
3869 Functions declared
<literal>STABLE<
/> or
<literal>IMMUTABLE<
/> always
3870 use the snapshot of the calling query, and therefore do not see the
3871 effects of actions taken after the calling query starts, whether in
3872 their own transaction or other transactions. Such a function must be
3873 read-only, too, meaning that it cannot use any SQL commands other than
3874 <command>SELECT<
/>. There is a considerable performance gain from
3875 declaring a function
<literal>STABLE<
/> or
<literal>IMMUTABLE<
/>
3876 rather than
<literal>VOLATILE<
/>.
3882 Nondeferred
<option>AFTER<
/> triggers are now fired immediately
3883 after completion of the triggering query, rather than upon
3884 finishing the current interactive command. This makes a difference
3885 when the triggering query occurred within a function: the trigger
3886 is invoked before the function proceeds to its next operation. For
3887 example, if a function inserts a new row into a table, any
3888 nondeferred foreign key checks occur before proceeding with the
3895 Allow function parameters to be declared with names (Dennis Bj
örklund)
3898 This allows better documentation of functions. Whether the names
3899 actually do anything depends on the specific function language
3906 Allow PL/pgSQL parameter names to be referenced in the function (Dennis Bj
örklund)
3909 This basically creates an automatic alias for each named parameter.
3915 Do minimal syntax checking of PL/pgSQL functions at creation time (Tom)
3918 This allows us to catch simple syntax errors sooner.
3924 More support for composite types (row and record variables) in PL/pgSQL
3927 For example, it now works to pass a rowtype variable to another function
3928 as a single variable.
3934 Default values for PL/pgSQL variables can now reference previously
3941 Improve parsing of PL/pgSQL FOR loops (Tom)
3944 Parsing is now driven by presence of
<literal>".."<
/> rather than
3945 data type of
<option>FOR<
/> variable. This makes no difference for
3946 correct functions, but should result in more understandable error
3947 messages when a mistake is made.
3953 Major overhaul of PL/Perl server-side language (Command Prompt, Andrew Dunstan)
3959 In PL/Tcl, SPI commands are now run in subtransactions. If an error
3960 occurs, the subtransaction is cleaned up and the error is reported
3961 as an ordinary Tcl error, which can be trapped with
<literal>catch<
/>.
3962 Formerly, it was not possible to catch such errors.
3968 Accept
<command>ELSEIF<
/> in PL/pgSQL (Neil)
3971 Previously PL/pgSQL only allowed
<command>ELSIF<
/>, but many people
3972 are accustomed to spelling this keyword
<command>ELSEIF<
/>.
3981 <title><application>psql<
/> Changes
</title>
3986 Improve
<application>psql<
/> information display about database
3987 objects (Christopher)
3993 Allow
<application>psql<
/> to display group membership in
3994 <command>\du<
/> and
<command>\dg<
/> (Markus Bertheau)
4000 Prevent
<application>psql<
/> <command>\dn
</command> from showing
4001 temporary schemas (Bruce)
4007 Allow
<application>psql<
/> to handle tilde user expansion for file
4014 Allow
<application>psql<
/> to display fancy prompts, including
4015 color, via
<application>readline<
/> (Reece Hart, Chet Ramey)
4021 Make
<application>psql<
/> <command>\copy<
/> match
<command>COPY
</command> command syntax
4028 Show the location of syntax errors (Fabien Coelho, Tom)
4034 Add
<command>CLUSTER
</command> information to
<application>psql<
/>
4035 <command>\d<
/> display
4042 Change
<application>psql<
/> <command>\copy stdin/stdout<
/> to read
4043 from command input/output (Bruce)
4049 Add
<option>pstdin<
/>/
<option>pstdout<
/> to read from
4050 <application>psql<
/>'s
<literal>stdin<
/>/
<literal>stdout<
/> (Mark
4057 Add global
<application>psql<
/> configuration file,
<filename>psqlrc.sample
</filename>
4061 This allows a central file where global
<application>psql<
/> startup commands can
4068 Have
<application>psql<
/> <command>\d+<
/> indicate if the table
4069 has an
<type>OID<
/> column (Neil)
4075 On Windows, use binary mode in
<application>psql<
/> when reading files so control-Z
4076 is not seen as end-of-file
4082 Have
<command>\dn+<
/> show permissions and description for schemas (Dennis
4089 Improve tab completion support (Stefan Kaltenbrunn, Greg Sabino Mullane)
4095 Allow boolean settings to be set using upper or lower case (Michael Paesold)
4104 <title><application>pg_dump<
/> Changes
</title>
4109 Use dependency information to improve the reliability of
4110 <application>pg_dump<
/> (Tom)
4113 This should solve the longstanding problems with related objects
4114 sometimes being dumped in the wrong order.
4120 Have
<application>pg_dump<
/> output objects in alphabetical order if possible (Tom)
4123 This should make it easier to identify changes between
4130 Allow
<application>pg_restore<
/> to ignore some SQL errors (Fabien Coelho)
4133 This makes
<application>pg_restore<
/>'s behavior similar to the
4134 results of feeding a
<application>pg_dump<
/> output script to
4135 <application>psql<
/>. In most cases, ignoring errors and plowing
4136 ahead is the most useful thing to do. Also added was a pg_restore
4137 option to give the old behavior of exiting on an error.
4143 <application>pg_restore<
/> <option>-l<
/> display now includes
4144 objects' schema names
4150 New begin/end markers in
<application>pg_dump<
/> text output (Bruce)
4156 Add start/stop times for
4157 <application>pg_dump<
/>/
<application>pg_dumpall<
/> in verbose mode
4164 Allow most
<application>pg_dump<
/> options in
4165 <application>pg_dumpall<
/> (Christopher)
4171 Have
<application>pg_dump<
/> use
<command>ALTER OWNER<
/> rather
4172 than
<command>SET SESSION AUTHORIZATION<
/> by default
4182 <title>libpq Changes
</title>
4187 Make libpq's
<option>SIGPIPE<
/> handling thread-safe (Bruce)
4193 Add
<function>PQmbdsplen()<
/> which returns the display length
4194 of a character (Tatsuo)
4200 Add thread locking to
<application>SSL<
/> and
4201 <application>Kerberos<
/> connections (Manfred Spraul)
4207 Allow
<function>PQoidValue()<
/>,
<function>PQcmdTuples()<
/>, and
4208 <function>PQoidStatus()<
/> to work on
<command>EXECUTE
</command>
4215 Add
<function>PQserverVersion()<
/> to provide more convenient
4216 access to the server version number (Greg Sabino Mullane)
4222 Add
<function>PQprepare/PQsendPrepared()<
/> functions to support
4223 preparing statements without necessarily specifying the data types
4224 of their parameters (Abhijit Menon-Sen)
4230 Many ECPG improvements, including
<command>SET DESCRIPTOR<
/> (Michael)
4239 <title>Source Code Changes
</title>
4244 Allow the database server to run natively on Windows (Claudio, Magnus, Andrew)
4250 Shell script commands converted to C versions for Windows support (Andrew)
4256 Create an extension makefile framework (Fabien Coelho, Peter)
4259 This simplifies the task of building extensions outside the original
4266 Support relocatable installations (Bruce)
4269 Directory paths for installed files (such as the
4270 <filename>/share<
/> directory) are now computed relative to the
4271 actual location of the executables, so that an installation tree
4272 can be moved to another place without reconfiguring and
4279 Use
<option>--with-docdir<
/> to choose installation location of documentation; also
4280 allow
<option>--infodir<
/> (Peter)
4286 Add
<option>--without-docdir<
/> to prevent installation of documentation (Peter)
4292 Upgrade to
<application>DocBook<
/> V4.2 SGML (Peter)
4298 New
<literal>PostgreSQL<
/> <application>CVS<
/> tag (Marc)
4301 This was done to make it easier for organizations to manage their
4302 own copies of the
<productname>PostgreSQL
</productname>
4303 <application>CVS<
/> repository. File version stamps from the master
4304 repository will not get munged by checking into or out of a copied
4311 Clarify locking code (Manfred Koizar)
4317 Buffer manager cleanup (Neil)
4323 Decouple platform tests from CPU spinlock code (Bruce, Tom)
4329 Add inlined test-and-set code on PA-RISC for
<application>gcc<
/>
4336 Improve i386 spinlock code (Manfred Spraul)
4342 Clean up spinlock assembly code to avoid warnings from newer
4343 <application>gcc<
/> releases (Tom)
4349 Remove JDBC from source tree; now a separate project
4355 Remove the libpgtcl client interface; now a separate project
4361 More accurately estimate memory and file descriptor usage (Tom)
4367 Improvements to the Mac OS X startup scripts (Ray A.)
4373 New
<function>fsync()<
/> test program (Bruce)
4379 Major documentation improvements (Neil, Peter)
4385 Remove
<application>pg_encoding
</application>; not needed
4392 Remove
<application>pg_id
</application>; not needed anymore
4398 Remove
<application>initlocation
</application>; not needed
4405 Auto-detect thread flags (no more manual testing) (Bruce)
4411 Use Olson's public domain
<application>timezone<
/> library (Magnus)
4417 With threading enabled, use thread flags on Unixware for
4418 backend executables too (Bruce)
4421 Unixware cannot mix threaded and nonthreaded object files in the
4422 same executable, so everything must be compiled as threaded.
4428 <application>psql<
/> now uses a
<application>flex<
/>-generated
4429 lexical analyzer to process command strings
4435 Reimplement the linked list data structure used throughout the
4439 This improves performance by allowing list append and length
4440 operations to be more efficient.
4446 Allow dynamically loaded modules to create their own server configuration
4447 parameters (Thomas Hallgren)
4453 New Brazilian version of FAQ (Euler Taveira de Oliveira)
4459 Add French FAQ (Guillaume Lelarge)
4465 New
<application>pgevent<
/> for Windows logging
4471 Make libpq and ECPG build as proper shared libraries on OS X (Tom)
4480 <title>Contrib Changes
</title>
4485 Overhaul of
<filename>contrib/dblink<
/> (Joe)
4491 <filename>contrib/dbmirror<
/> improvements (Steven Singer)
4497 New
<filename>contrib/xml2<
/> (John Gray, Torchbox)
4503 Updated
<filename>contrib/mysql
</filename>
4509 New version of
<filename>contrib/btree_gist<
/> (Teodor)
4515 New
<filename>contrib/trgm<
/>, trigram matching for
4516 <productname>PostgreSQL
</productname> (Teodor)
4522 Many
<filename>contrib/tsearch2<
/> improvements (Teodor)
4528 Add double metaphone to
<filename>contrib/fuzzystrmatch<
/> (Andrew)
4534 Allow
<filename>contrib/pg_autovacuum<
/> to run as a Windows service (Dave Page)
4540 Add functions to
<filename>contrib/dbsize<
/> (Andreas Pflug)
4546 Removed
<filename>contrib/pg_logger<
/>: obsoleted by integrated logging
4553 Removed
<filename>contrib/rserv<
/>: obsoleted by various separate projects