1 <!-- $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.514 2007/10/04 22:55:49 tgl Exp $ -->
7 [A-Z][A-Z ]+[A-Z] <command>
8 [A-Za-z_][A-Za-z0-9_]+() <function>
9 [A-Za-z_]/[A-Za-z_]+ <filename>
10 PostgreSQL <productname>
11 pg_[A-Za-z0-9_] <application>
12 [A-Z][A-Z] <type>, <envar>, <literal>
14 non-ASCII characters convert to HTML4 entity (&) escapes
16 official: http://www.w3.org/TR/html4/sgml/entities.html
17 one page: http://www.zipcon.net/~swhite/docs/computers/browsers/entities_page.html
18 other lists: http://www.zipcon.net/~swhite/docs/computers/browsers/entities.html
19 http://www.zipcon.net/~swhite/docs/computers/browsers/entities_page.html
20 http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references
22 we cannot use UTF8 because SGML Docbook
24 http://www.pemberley.com/janeinfo/latin1.html#latexta
28 For new features, add links to the documentation sections. Use </link>
29 so that perl can remove it so HISTORY.html can be created with no
30 links to the main documentation. This was added only in 8.2, so don't
31 do it for earlier branch release files.
35 <appendix id="release">
36 <title>Release Notes</title>
38 <sect1 id="release-8-3">
39 <title>Release 8.3</title>
42 <title>Release date</title>
43 <simpara>2007-??-??</simpara>
44 <para>CURRENT AS OF 2007-10-03</>
48 <title>Overview</title>
51 This release adds many improvements that were requested by users,
58 Full text search is now a built-in feature
64 Support for the SQL/XML standard, including a new <type>xml</type> builtin
77 UUID data type, similar to that defined by RFC 4122
83 Arrays of composite types
89 <literal>ORDER BY ... NULLS FIRST/LAST</>
96 (<literal>UPDATE/DELETE WHERE CURRENT OF</>
97 <replaceable>cursor_name</>)
103 Per-function parameter settings
109 User-defined types can now have type modifiers (parameters)
113 Declarations such as <type>varchar(42)</type> are no longer
114 restricted to use by built-in data types.
120 Automatic plan invalidation when table definitions change
124 This will particularly ease usage of temporary tables in
131 Numerous improvements in logging and statistics collection
132 capabilities, including the ability to emit postmaster log messages
133 in CSV format that can be directly loaded into a database table
140 SSPI/GSSAPI authentication support
146 Multiple autovacuum worker processes, and other autovacuum improvements
150 Autovacuum is now considered mature enough to be enabled by default.
156 The entire <productname>PostgreSQL</productname> system can
157 now be compiled with Microsoft Visual C++
161 This will improve the ability of Windows-based developers to
162 contribute to the project. Windows executables made with Visual C++
163 may also have better stability and performance than those made with
170 Major performance improvements in this release include:
176 Asynchronous commit option to allow transactions to be reported
177 committed before they have actually been flushed to disk
181 This would not, of course, be acceptable if the client takes some
182 critical external action on the assumption that the transaction
183 will be remembered; but for certain applications, it is an acceptable
184 risk for some or all transactions to use this mode. Unlike existing
185 options such as <varname>fsync</varname>, asynchronous commit does
186 not risk database corruption; the worst case is that after a crash,
187 the last few reportedly-committed transactions will not have
194 <quote>Distributed</> checkpoints to spread out the I/O load of a
201 Heap-Only Tuples (HOT) to reduce overhead of updates
207 Just-in-time background writer strategy to improve disk write
214 Reduction of on-disk data size through reducing both per-tuple
215 and per-field overheads
221 Efficiency improvements for large sequential scans, including
222 prevention of cache flushing and <quote>piggybacking</quote> to let
223 concurrent scans read the table only once
235 Lazy XID assignment to reduce the cost of read-only transactions
239 For applications in which there are a large number of read-only
240 transactions, this helps not only by reducing overhead for the
241 transactions themselves, but by reducing overhead that's driven
242 by the rate of XID consumption; notably, reducing contention for
243 transaction log buffers and reducing the frequency of
244 anti-wraparound vacuuming.
255 <title>Migration to version 8.3</title>
258 A dump/restore using <application>pg_dump</application> is
259 required for those wishing to migrate data from any previous
264 Observe the following incompatibilities:
271 <filename>contrib/tsearch2</> features have been absorbed into
272 the core, with some syntax changes
276 XXX we need to provide a migration guide, at the very least
282 Casts to <type>text</type> that formerly occurred implicitly may now
283 need to be written explicitly
287 Data types other than <type>char</> and <type>varchar</> are no
288 longer implicitly castable to <type>text</>, except in the limited
289 case of a <literal>||</> (concatenation) operator whose other
290 input is textual. While this will require explicit casts in a
291 few queries that didn't need them before, the elimination of
292 surprising interpretations justifies it.
298 Numerous changes in administrator-only configuration parameters
302 <varname>bgwriter_lru_percent</>,
303 <varname>bgwriter_all_percent</>,
304 <varname>bgwriter_all_maxpages</>,
305 <varname>stats_start_collector</>, and
306 <varname>stats_reset_on_server_start</> are removed.
307 <varname>redirect_stderr</> is renamed to
308 <varname>logging_collector</>.
309 <varname>stats_command_string</> is renamed to
310 <varname>track_activities</>.
311 <varname>stats_block_level</> and <varname>stats_row_level</>
312 are merged into <varname>track_counts</>.
313 <varname>archive_command</> changed meaning slightly: you must now set
314 <varname>archive_mode</> to <literal>on</> as well to enable archiving.
315 The default autovacuum-related settings changed.
321 Commenting out a parameter in <filename>postgresql.conf</> now
322 causes it to revert to its default value
328 <literal>ARRAY(SELECT ...)</literal> now returns an empty array,
329 rather than a NULL, when the sub-select returns zero rows
335 <literal>ORDER BY ... USING</> <replaceable>operator</>
336 will now be rejected if the <replaceable>operator</> is not a
337 less-than or greater-than member of some btree operator class
341 This prevents less-than-sane behavior that formerly ensued if an
342 operator that doesn't actually define a proper sort ordering was
349 The array type associated with a type named <quote>foo</quote>
350 is not necessarily named <quote>_foo</quote> anymore
354 The old naming convention is still honored when possible, but
355 client code should migrate away from depending on it.
361 By default, non-superuser database owners can now instantiate trusted
362 procedural languages in their databases
366 While this is reasonably safe, some administrators may wish to
367 revoke the privilege.
373 The effects of <command>SET LOCAL</command> now persist until
374 the end of the current top transaction, unless rolled back
378 In 8.0 through 8.2, <command>SET LOCAL</command>'s
379 effects disappeared at subtransaction commit, leading to behavior
380 that made little sense at the SQL level (one would not normally
381 expect <command>RELEASE</> to do such a thing).
387 Commands that are disallowed in transaction blocks are now disallowed
388 in multiple-statement query strings, too
392 For example, <literal>BEGIN; DROP DATABASE; COMMIT</> will now be
393 rejected even if submitted as a single Query message. This was always
394 quite unsafe, but the <function>PreventTransactionChain</function>
395 test failed to detect it.
401 Additional checks for invalidly-encoded multibyte strings
405 Some cases that might formerly have allowed invalid data to
406 enter the database will now be rejected. In particular, the
407 <function>chr()</function> function changed behavior.
413 <function>convert()</function> family of functions changed behavior
417 Strings that are not in the database's native encoding are now
418 represented as type <type>bytea</> rather than type <type>text</>.
424 Minor security restrictions added to database-size inquiry functions
425 and some contrib functions
431 C code that manipulates variable-length datums will need changes
435 The new <function>SET_VARSIZE()</> macro <emphasis>must</> be used
436 to set the length word of a generated datum. Also, it may be
437 necessary to <quote>detoast</quote> input varlena datums in cases
438 where no toasting could have happened before.
446 <title>Changes</title>
449 Below you will find a detailed account of the
450 changes between <productname>PostgreSQL</productname> 8.3 and
451 the previous major release.
455 <title>Performance Improvements</title>
460 Implement an optional asynchronous commit mode (Simon)
464 When <varname>synchronous_commit</varname> is off, we don't flush
465 WAL before reporting a transaction committed. Data consistency is
466 still guaranteed (unlike turning <varname>fsync</varname> off), but
467 a crash may lose the effects of the last few transactions. In many
468 applications this is an acceptable tradeoff for improved
475 Implement <quote>distributed</> checkpoints (Itagaki Takahiro and
480 The I/O needed for a checkpoint is now spread over a fairly long
481 period of time, rather than being spat out in a burst. (This happens
482 only for background checkpoints carried out by the bgwriter; other
483 cases, such as a shutdown checkpoint, are still done at full speed.)
484 This reduces the impact of checkpoints on query processing.
490 Heap-Only Tuples (Pavan Deolasee, with ideas from many others)
494 When we update a tuple without changing any of its indexed columns,
495 and the new version can be stored on the same heap page, we no longer
496 generate extra index entries for the new version. Instead, index
497 searches follow the HOT-chain links to ensure they find the correct
498 tuple version. In addition, this patch introduces the ability to
499 <quote>prune</quote> dead tuples on a per-page basis, without having
500 to do a complete <command>VACUUM</command> pass to recover space.
501 <command>VACUUM</command> is still needed to clean up dead index
508 Just-in-time background writing strategy (Greg Smith, Itagaki
513 This patch avoids re-scanning buffers that cannot possibly need to
514 be cleaned, and estimates how many buffers it should try to clean
515 based on moving averages of recent allocation requests and density
522 Support varlena fields with single-byte headers and unaligned
527 This significantly reduces the on-disk size of short
528 character-string fields.
534 Combine cmin and cmax fields of HeapTupleHeaders into a single field
539 We do this by keeping private state in each backend that has
540 inserted and deleted the same tuple during its current top-level
541 transaction. This is sufficient since there is no need to be able
542 to determine the cmin/cmax from any other transaction. This gets us
543 back down to 23-byte tuple headers, removing a space penalty paid in
544 8.0 to support subtransactions.
550 Lazy XID allocation (Florian Pflug)
554 Formerly, every transaction obtained a transaction ID (XID). Now,
555 transactions that do not modify any database rows will typically
556 never obtain an XID at all. We already did things this way for
557 subtransactions, but this patch extends the concept to top-level
558 transactions. In applications where there are lots of short
559 read-only transactions, this should improve performance noticeably;
560 not so much from removal of the actual XID-assignments, as from
561 reduction of overhead that's driven by the rate of XID consumption.
562 We add a concept of a <quote>virtual transaction ID</> so that active
563 transactions can be uniquely identified even if they don't have a
564 regular XID. This is a much lighter-weight concept: uniqueness of
565 VXIDs is only guaranteed over the short term, and no on-disk record
572 Reduce contention for the ProcArrayLock (Florian Pflug, Heikki)
578 Improve interlocking between checkpoint start and transaction commit
583 The new method both speeds up commit (less for it to do) and
584 prevents the problem of checkpoint being delayed indefinitely when
585 there's a constant flow of commits.
591 Create a dedicated <quote>wal writer</quote> process to offload
592 WAL-writing work from backends (Simon)
596 This process is also responsible for guaranteeing a maximum delay
597 before asynchronously-committed transactions will be flushed to
604 Skip writing WAL in <command>CLUSTER</command> and
605 <command>COPY</command> in cases where it's not needed (Simon)
609 If WAL archiving is not enabled, it's possible to ensure
610 transactional safety by fsync'ing the destination table before
611 commit, rather than emitting WAL records for all inserted tuples.
617 Avoid rewriting <filename>pg_control</filename> at every WAL segment
624 Reduce WAL output size for page splits in btree indexes (Heikki)
630 Avoid unnecessary disk reads during WAL recovery (Heikki)
634 Aside from speeding up recovery, this change eliminates a potential
635 data loss risk when restoring a WAL log that was written with
636 full_page_writes off.
642 Make large sequential scans and <command>VACUUM</command>s work in a
643 limited-size <quote>ring</quote> of buffers (Simon, Heikki, Tom)
647 Aside from avoiding cache spoliation, this fixes the problem that
648 <command>VACUUM</command> formerly tended to cause a WAL flush for
649 every page it modified, because we had it hacked to use only a
650 single buffer. Those flushes will now occur only once per ring-ful.
656 Synchronize sequential scans (Jeff Davis)
660 Large sequential scans now synchronize with each other, so that when
661 multiple backends are scanning the same relation concurrently, each
662 page is (ideally) read only once. Note that a backend joining such
663 a scan starts in the middle of the relation and <quote>wraps
664 around</quote> to cover all blocks; this may affect the order in which
671 Suppress useless searches for unused line pointers in PageAddItem
672 (Heikki, improving on an idea from Hiroki Kataoka)
678 Put a rate limit on messages sent by backends to the stats collector
683 This reduces the overhead for short transactions by combining
684 reports for successive short transactions.
690 Implement <quote>top N</quote> sorting in <literal>ORDER BY
691 ... LIMIT</literal> queries (Greg Stark)
695 We keep a heap of the current best N tuples and sift-up new tuples
696 into it as we scan the input. For M input tuples this means only
697 about M*log(N) comparisons instead of M*log(M), not to mention a lot
698 less workspace when N is small — avoiding spill-to-disk for large
699 M is actually the most attractive thing about it.
705 Improve hash join performance for cases with many input NULLs (Tom)
711 Improve performance of mergejoin with a large sort operation as
712 inner input (Greg Stark)
716 This change uses a Materialize node between the mergejoin and the
717 sort to prevent the sort from having to <quote>back up</>, which
718 allows a more efficient sort. The Materialize node keeps a circular
719 buffer of only the prior tuples that the mergejoin may actually
720 need again, so it usually won't need to spill to disk, resulting
727 Avoid computing X^2 at each row in <function>avg(bigint)</function>
728 and <function>avg(numeric)</function> (Mark Kirkwood)
737 <title>Server Changes</title>
742 Autovacuum is now enabled by default (Alvaro)
746 Considerable work was done to make autovacuum less intrusive,
747 allowing this to become a reasonable default.
753 Support multiple concurrent autovacuum processes (Alvaro, Itagaki
760 Set the default autovacuum <varname>vacuum_cost_delay</varname>
761 value to 20ms, and reduce the default autovacuum vacuum and analyze
762 threshold values to 50 tuples (Alvaro)
768 Make autovacuum report the start time of its current activity in
769 <literal>pg_stat_activity</literal> (Tom)
775 Make configuration parameters fall back to their default values when
776 they are removed from the configuration file (Joachim Wieland)
780 This fixes an ancient gotcha that returning a configuration file
781 line to its original commented-out state did not undo the change.
787 Invalidate and rebuild cached plans whenever there is a schema
788 change or statistics update to referenced relations (Tom)
792 Aside from improving performance (for example, by being able to make
793 use of newly-added indexes), this finally fixes the problem that you
794 couldn't drop and recreate a temp table that's used by a PL/PgSQL
795 function, unless you used <literal>EXECUTE</literal> for all
796 references to it. A statement that depends on a temp table will now
797 be replanned automatically if the temp table has been recreated.
803 Add support for GSSAPI authentication (Henry Hotz, Magnus)
809 Support SSPI authentication on Windows (Magnus)
815 Support a global SSL configuration file (Victor Wagner)
821 Add <varname>ssl_ciphers</> parameter to control allowed ciphers
828 Add new encodings EUC_JIS_2004 and SHIFT_JIS_2004, along with new
829 conversions among EUC_JIS_2004, SHIFT_JIS_2004 and UTF-8 (Tatsuo)
835 Make JOHAB encoding client-only (Tatsuo)
839 It was found that JOHAB does not meet the assumptions needed to be
840 used safely as a server-side encoding.
846 Provide for logfiles in machine readable CSV format (Arul Shaji,
847 Greg Smith, Andrew Dunstan)
853 Add <varname>log_autovacuum_min_duration</varname> parameter to
854 support configurable logging of autovacuum actions (Simon, Alvaro)
860 Add <varname>log_lock_waits</varname> parameter to log long wait
867 Add <varname>log_temp_files</varname> parameter to log usage of
868 temporary files (Bill Moran)
874 Add <varname>log_checkpoints</varname> parameter to improve logging
875 of checkpoints (Greg Smith, Heikki)
881 <literal>%s</literal> and <literal>%c</literal> escapes in
882 <varname>log_line_prefix</varname> can now be used in all processes
889 Use our own timezone support for formatting timestamps displayed in
894 This avoids Windows-specific problems with localized time zone names
895 that are in the wrong encoding. There is a new
896 <varname>log_timezone</> parameter that controls the timezone used
897 in log messages, separately from the client-visible
898 <varname>timezone</> parameter.
904 Change the timestamps recorded in transaction commit/abort xlog
905 records from time_t to TimestampTz representation (Tom)
909 This provides full gettimeofday() resolution for the timestamps,
910 which might be useful when attempting to do point-in-time recovery
911 — previously it was not possible to specify the stop point with
912 sub-second resolution.
918 Split the <varname>archive_command</> parameter into separate
919 <varname>archive_mode</> and <varname>archive_command</> parameters
924 This avoids some problems that occur if the user wishes to stop
925 archiving temporarily.
931 Add a <literal>%r</> option in <filename>recovery.conf</filename> to
932 provide last restartpoint to <varname>restore_command</varname>
939 Add <varname>log_restartpoints</varname> recovery option to emit a
940 log message at each restartpoint (Simon)
946 Last transaction end time is now logged at end of recovery and at
947 each logged restartpoint (Simon)
953 Create a <varname>temp_tablespaces</varname> parameter to allow
954 selection of one or more tablespaces in which to store temp tables
955 and temporary files (Jaime Casanova, Albert Cervera, Bernd Helmle)
959 This is a list to allow spreading the load across multiple
960 tablespaces; a random list element is chosen each time a temp object
961 is to be created. Temp files are not stored in per-database
962 <filename>pgsql_tmp/</filename> directories anymore, but in
963 per-tablespace directories.
969 New system view <literal>pg_stat_bgwriter</literal> displays
970 statistics about the background writer process's performance
977 Add new columns for database-wide tuple statistics to
978 <literal>pg_stat_database</literal> (Magnus)
984 Add an <literal>xact_start</literal> column to
985 <literal>pg_stat_activity</literal> (Neil)
989 This makes it easier to identify long-running transactions.
995 Add <literal>n_live_tuples</> and <literal>n_dead_tuples</> columns
996 to <literal>pg_stat_all_tables</literal> and related views (Glen
1003 Remove <varname>stats_start_collector</varname> parameter (Tom)
1007 We now always start the collector process, unless prevented by a
1008 problem with setting up the stats UDP socket.
1014 Remove <varname>stats_reset_on_server_start</varname> parameter (Tom)
1018 This seemed useless in view of the availability of
1019 <function>pg_stat_reset()</function>.
1025 Merge <varname>stats_block_level</> and <varname>stats_row_level</>
1026 parameters into a single parameter <varname>track_counts</>,
1027 which controls all reports sent to the collector process (Tom)
1033 Rename <varname>stats_command_string</varname> parameter to
1034 <varname>track_activities</varname> (Tom)
1040 Limit the amount of information reported when a user is dropped
1045 Previously, dropping (or attempting to drop) a user who owned many
1046 objects could result in extremely large <literal>NOTICE</literal> or
1047 <literal>ERROR</literal> messages listing all these objects; this
1048 caused problems for some client applications. The length of the
1049 list is now limited, although a full list is still sent to the
1056 Arrange to put TOAST tables belonging to temporary tables into
1057 special schemas named
1058 <literal>pg_toast_temp_<replaceable>nnn</></literal> (Tom)
1062 This allows low-level code such as the relcache to recognize that
1063 these tables are indeed temporary, which enables various
1064 optimizations such as not WAL-logging changes and using local rather
1065 than shared buffers for access. Aside from obvious performance
1066 benefits, this provides a solution to bug #3483, in which other
1067 backends unexpectedly held open file references to temporary tables.
1073 Fix problem that a constant flow of new connection requests could
1074 indefinitely delay the postmaster from completing a shutdown or
1081 Allow <command>CREATE INDEX CONCURRENTLY</command> to disregard
1082 transactions in other databases (Simon)
1091 <title>Query Changes</title>
1096 Text search capability is now in core Postgres (Teodor, Oleg)
1100 The features previously provided by <filename>contrib/tsearch2</>
1101 have been improved and moved into the standard server.
1107 Support <literal>ORDER BY ... NULLS FIRST/LAST</literal> (Teodor, Tom)
1111 Users can now control whether nulls sort before or after
1118 Add ASC/DESC and NULLS FIRST/NULLS LAST per-column options for btree
1119 indexes (Teodor, Tom)
1123 This is primarily useful for customizing multicolumn indexes to match
1124 the ordering needed by a specific query.
1130 Support <literal>UPDATE/DELETE WHERE CURRENT OF</>
1131 <replaceable>cursor_name</>
1138 Allow <literal>FOR UPDATE</literal> in cursors (Arul Shaji, Tom)
1144 Downgrade implicit casts to text to be assignment-only, except for
1145 the ones from the other string-category types (Peter, Tom)
1149 This change eliminates a lot of surprising interpretations that the
1150 parser could formerly make in cases when there was no directly
1151 applicable operator. The <literal>||</> (concatenation) operator
1152 has been generalized so that it will still accept non-textual
1153 inputs, thus preserving the main useful case for implicit text
1154 coercion. In other cases, if you want something to be treated
1155 as text you'll need to say so.
1161 Create a general mechanism that supports casts to and from the
1162 standard string types (<type>text</type>, <type>varchar</type>,
1163 <type>bpchar</type>) for <emphasis>every</emphasis> datatype, by
1164 invoking the datatype's I/O functions (Tom)
1168 These new casts are assignment-only in the to-string direction,
1169 explicit-only in the other, and therefore should create no
1170 surprising behavior. Remove a bunch of thereby-obsoleted
1171 datatype-specific casting functions.
1177 Make <literal>ARRAY(SELECT ...)</literal> return an empty array,
1178 rather than a NULL, when the sub-select returns zero rows (Tom)
1184 Make 'col IS NULL' clauses be btree-indexable conditions (Teodor)
1190 Add support for cross-type hashing (Tom)
1194 This allows hash joins, hash indexes, hashed subplans, and hash
1195 aggregation to be used in situations involving cross-data-type
1196 comparisons, if the data types have compatible hash functions. That
1197 is currently the case for
1198 <type>smallint</type>/<type>integer</type>/<type>bigint</type>, and
1199 also for <type>float4</type>/<type>float8</type>.
1205 Improve handling of <quote>equivalence classes</quote> of variables
1206 that are constrained to be equal within a query's <literal>WHERE</>
1211 Among other things, this change allows mergejoins to work with
1212 descending sort orders, and improves recognition of redundant sort
1219 Improve performance for planning large inheritance trees that are
1220 mostly excluded by constraints (Tom)
1226 Fix problems with selectivity estimation for partial indexes (Tom)
1232 Fix cost estimates for <literal>EXISTS</literal> subqueries that are
1233 evaluated as initPlans (Tom)
1239 Fix some issues with user tables and views that are named similarly
1240 to system catalogs (Tom)
1246 Remove the undocumented <literal>!!=</> (not in) operator (Tom)
1250 This operator was obsoleted long ago by <literal>IN (SELECT
1251 ...)</literal> queries.
1260 <title>Object Manipulation Changes</title>
1265 Support arrays of composite types, including the rowtypes of regular
1266 tables and views (but not system catalogs, nor sequences or toast
1267 tables) (David Fetter, Andrew, Tom)
1271 This change also removes the hardwired convention that a type's
1272 array type is named exactly <quote>_type</quote>, instead using a
1273 new column <literal>pg_type.typarray</literal> to provide the
1274 linkage. (It still will be named <quote>_type</quote>, though,
1275 except in odd corner cases such as maximum-length type names or
1276 collisions with a pre-existing type named with a leading
1283 Support per-function GUC parameter settings (Tom)
1287 This provides a simple solution for functions that need local
1288 settings for parameters; in particular, security definer functions
1289 that must set <varname>search_path</varname> to avoid security
1296 Add <literal>COST</literal> and <literal>ROWS</literal> options to
1297 <command>CREATE/ALTER FUNCTION</command> (Tom)
1301 This change allows simple user adjustment of the estimated cost of a
1302 function call, as well as control of the estimated number of rows
1303 returned by a set-returning function. We might eventually wish to
1304 extend this to allow function-specific estimation routines, but
1305 there seems to be consensus that we should try a simple constant
1312 Allow triggers and rules to be defined with different, per session
1313 controllable, behaviors for replication purposes (Jan)
1317 This will allow replication systems to control the firing mechanism
1318 of triggers and rewrite rules without modifying the system catalogs
1319 directly. The behavior is controlled by a new superuser-only
1320 parameter <varname>session_replication_role</varname>.
1324 <application>psql</application>'s <literal>\d</literal> command as
1325 well as <application>pg_dump</application> are extended in a
1326 backward compatible fashion.
1332 Support type modifiers for user-defined types (Teodor, Tom)
1336 User-defined types can now use parameters, similar to the maximum
1337 length and precision parameters used by some built-in types. Any
1338 simple constant (numeric or string) or identifier can be used as a
1339 parameter value. A type-specific function must be provided to
1340 validate this information and pack it into a 32-bit <quote>typmod</>
1347 Invent <quote>operator families</quote> to allow improved handling
1348 of cross-data-type operators (Tom)
1352 This change allows significantly better planning of queries
1353 involving cross-data-type comparisons.
1359 Clean up semantic assumptions for foreign keys (Tom)
1363 There is now a sound semantic basis for the equality checks applied
1364 by foreign-key constraints; formerly the system tended to assume
1365 that any operator named <literal>=</> was the right thing. The equality
1366 operators will now be selected from the opfamily of the unique index
1367 that the FK constraint depends on to enforce uniqueness of the
1368 referenced columns; therefore they are certain to be consistent with
1369 that index's notion of equality. Among other things this should fix
1370 the problem noted awhile back that pg_dump may fail for foreign-key
1371 constraints on user-defined types when the required operators aren't
1372 in the search path. This also means that the former warning
1373 condition about <quote>foreign key constraint will require costly
1374 sequential scans</quote> is gone: if the comparison condition isn't
1375 indexable then we'll reject the constraint entirely.
1384 <title>Utility Command Changes</title>
1389 Allow non-superuser database owners to create procedural languages
1394 A database owner is now allowed to create a language in his database
1395 if it's marked <structfield>tmpldbacreate</> in
1396 <structname>pg_pltemplate</>. The factory default is that this is set
1397 for all standard trusted languages, but of course a superuser may
1398 adjust the settings. In service of this, add the long-foreseen owner
1399 column to <structname>pg_language</>; renaming, dropping, and altering
1400 owner of a PL now follow normal ownership rules instead of being
1407 Arrange for <command>SET LOCAL</command>'s effects to persist until
1408 the end of the current top transaction, unless rolled back or
1409 overridden by a SET clause for the same variable attached to a
1410 surrounding function call (Tom)
1414 This is an incompatible change: in 8.0 through 8.2, <command>SET
1415 LOCAL</command>'s effects disappeared at subtransaction commit
1416 (leading to behavior that made little sense at the SQL level).
1422 Support <literal>SET ... FROM CURRENT</literal> in
1423 <command>CREATE/ALTER FUNCTION</command>, <command>ALTER DATABASE</command>,
1424 <command>ALTER ROLE</command> (Tom)
1428 This provides a convenient way of applying a session's current
1429 parameter setting as the default for future sessions or function
1436 Implement new commands <command>DISCARD ALL</command>,
1437 <command>DISCARD PLANS</command>, <command>DISCARD TEMP</command>,
1438 <command>CLOSE ALL</command>, and <command>DEALLOCATE ALL</command>
1443 These commands simplify resetting a database session to its initial
1444 state, and are particularly handy for connection-pooling software.
1450 Add <command>ALTER VIEW ... RENAME TO</command> and <command>ALTER
1451 SEQUENCE ... RENAME TO</command> (David Fetter, Neil)
1455 While it has long been possible to perform these operations using
1456 <command>ALTER TABLE</command>, users were often surprised that they
1457 couldn't say <command>ALTER VIEW</command> or <command>ALTER
1458 SEQUENCE</command> as appropriate.
1464 Implement <command>CREATE TABLE LIKE ... INCLUDING
1465 INDEXES</command> (Trevor Hardcastle, Nikhil S, Neil)
1471 Make <command>CLUSTER</command> MVCC-safe (Heikki Linnakangas)
1475 Formerly, a <command>CLUSTER</command> command would discard all
1476 tuples that were committed dead, even if there were still
1477 transactions that should be able to see them under the MVCC snapshot
1484 Support new syntax for <command>CLUSTER</command>: <literal>CLUSTER
1485 <replaceable>table</> USING <replaceable>index</></literal>
1490 The old <command>CLUSTER</command> syntax is still supported, but
1491 the new form is considered more logical.
1497 Make <command>CLUSTER</command> freeze tuples where possible
1502 This is nearly free and may avoid the need for a subsequent
1503 <command>VACUUM</command> of the table.
1509 Make <command>CLUSTER</command> and <command>TRUNCATE</command>
1510 advance the table's <literal>relfrozenxid</literal> to
1511 <literal>RecentXmin</literal> (Alvaro)
1515 This may avoid the need for a subsequent <command>VACUUM</command>
1516 of the table. The table-rewriting variants of <command>ALTER
1517 TABLE</command> do it too.
1523 Fix <command>EXPLAIN</command> so it can always print the correct
1524 referent of an upper plan level expression (Tom)
1528 This fix banishes the old hack of showing
1529 <literal>?column<replaceable>N</>?</literal>
1530 when things got too complicated.
1536 Make PreventTransactionChain reject commands submitted as part of a
1537 multi-statement simple-Query message (Tom)
1541 For example, <literal>BEGIN; DROP DATABASE; COMMIT</> will now be
1542 rejected even if submitted as a single Query message. This is a
1543 potential incompatibility since some clients expected such strings to
1544 work; but it was always unsafe.
1550 Make CREATE/DROP/RENAME DATABASE wait a little bit to see if other
1551 backends will exit before failing because of conflicting DB usage
1556 This helps mask the fact that backend exit takes nonzero time.
1563 <command>NOTIFY</command>/<command>LISTEN</command>/<command>UNLISTEN</command>
1564 only accept identifiers without a schema qualifier (Bruce)
1568 Formerly, these commands accepted <quote>schema.relation</> but then
1569 ignored the schema part, leading to confusion.
1578 <title>Data Type and Function Changes</title>
1583 SQL/XML support (Nikolay Samokhvalov, Peter)
1587 There is now an <type>xml</> data type and standard operations
1588 on it; see <xref linkend="datatype-xml">.
1594 Support enum data types (see <xref linkend="datatype-enum">)
1601 Add a <type>uuid</type> data type similar to that defined in RFC
1602 4122 (see <xref linkend="datatype-uuid">) (Gevik Babakhani, Neil)
1608 Widen the <type>money</type> data type to 64 bits (D'Arcy Cain)
1614 Add new regexp functions <function>regexp_matches()</function>,
1615 <function>regexp_split_to_array()</function>, and
1616 <function>regexp_split_to_table()</function> (Jeremy Drake, Neil)
1620 These functions provide access to the capture groups resulting from
1621 a POSIX regular expression match, and provide the ability to split a
1622 string on a POSIX regular expression.
1628 Add <function>lo_truncate()</function> function for large object
1629 truncation (Kris Jurka)
1635 Implement <function>width_bucket()</function> for the float8 data
1642 Add a function <function>pg_stat_clear_snapshot()</function> that
1643 discards any statistics snapshot already collected in the current
1648 This allows PL/PgSQL functions to watch for stats updates even
1649 though they are confined to a single transaction.
1655 Add <literal>isodow</> option to <function>EXTRACT()</> and
1656 <function>date_part()</> (Bruce)
1660 This is day of the week, with Sunday = 7.
1666 Add ID (ISO day of week) and IDDD (ISO day of year) format types for
1667 to_char(), to_date() and to_timestamp() (Brendan Jurd)
1673 Check for overflow when converting far-future date values to
1680 Make <function>to_timestamp()</> and <function>to_date()</> assume
1681 <quote>TM</quote> for potentially variable-width fields (Bruce)
1685 This matches Oracle behavior.
1691 Fix off-by-one conversion in to_date()/to_timestamp() 'D' fields
1698 Fix <type>float4</type>/<type>float8</type> to handle Infinity and
1699 Nan consistently (Bruce)
1703 The code formerly was not consistent about distinguishing Infinity
1704 symbols from overflow conditions.
1710 Make <function>setseed()</function> return void, rather than a
1711 useless integer value (Neil)
1717 Add a hash function for <type>numeric</type> (Neil)
1721 This allows hash indexes and hash-based plans to be used with
1722 the <type>numeric</type> datatype.
1728 Improve efficiency of
1729 <literal>LIKE</literal>/<literal>ILIKE</literal> code, especially
1730 for multi-byte charsets, and most especially for UTF8 (Andrew,
1737 Allow leading and trailing whitespace in the input to the
1738 <type>boolean</type> type (Neil)
1744 Add additional checks for invalidly-encoded data (Andrew)
1748 This change plugs some holes that formerly existed in SQL literal
1749 backslash escape processing and <command>COPY</command> escape
1750 processing: the de-escaped string is rechecked if it might have
1751 resulted in creating invalid multi-byte characters.
1757 Ensure that <function>chr()</function> cannot create invalidly
1758 encoded text (Andrew)
1762 In UTF8-encoded databases the argument is treated as a Unicode code
1763 point. In other multi-byte encodings the argument must designate a
1764 7-bit ASCII character, or an error is raised, as is also the case if
1769 <function>ascii()</function> has been adjusted so that it remains
1770 the inverse of <function>chr()</function>.
1776 Adjust <function>convert()</function> behavior to ensure encoding
1781 The two argument form of <function>convert()</function> is gone, and
1782 the three argument form now takes a <type>bytea</type> first
1783 argument and returns a <type>bytea</type>. To cover this loss three
1784 new functions are introduced:
1790 <function>convert_from(bytea, name)</function> returning
1791 <type>text</> — converts the first argument from the named
1792 encoding to the database encoding.
1798 <function>convert_to(text, name)</function> returning <type>bytea</>
1799 — converts the first argument from the database encoding to
1806 <function>length(bytea, name)</function> returning <type>int</>
1807 — gives the length of the first argument in characters in the
1816 Remove <literal>CONVERT(argument USING conversion_name)</literal>
1821 Although this syntax is required by the SQL standard, it's not clear
1822 what the standard expects it to do, except that it's most likely not
1823 what we were doing. The former behavior was an encoding security
1830 Put some security restrictions on the dbsize functions (Tom)
1834 Restrict <function>pg_database_size()</function> to users who can
1835 connect to the target database (note that <literal>CONNECT</literal>
1836 privilege is granted by default, so this does not change the default
1837 behavior). Restrict <function>pg_tablespace_size()</function> to
1838 users who have <literal>CREATE</literal> privilege on the tablespace
1839 (which is <emphasis>not</emphasis> granted by default), except when
1840 the tablespace is the default tablespace for the current database
1841 (since we treat that as implicitly allowing use of the tablespace).
1847 Make <function>currtid()</function> functions require
1848 <literal>SELECT</literal> privileges on the target table (Tom)
1857 <title>PL/PgSQL Server-Side Language Changes</title>
1862 Support scrollable cursors (ie, add a direction clause in
1863 <command>FETCH</command>) in PL/PgSQL (Pavel Stehule)
1869 Add support for <literal>IN</literal> as alternative to
1870 <literal>FROM</literal> in PL/PgSQL's <command>FETCH</command>
1871 statement, for consistency with the backend's
1872 <command>FETCH</command> command (Pavel Stehule)
1878 Support <command>MOVE</command> in PL/PgSQL (Magnus, Pavel Stehule,
1885 Implement <command>RETURN QUERY</command> for PL/PgSQL (Pavel Stehule, Neil)
1889 This provides some convenient syntax sugar for PL/PgSQL
1890 set-returning functions that want to return the result of evaluating
1891 a query; it should also be more efficient than repeated
1892 <command>RETURN NEXT</command> statements.
1898 Allow PL/PgSQL function parameter names to be qualified with the
1899 function's name (Tom)
1905 Reject zero or negative <literal>BY</literal> step in plpgsql
1906 integer <literal>FOR</literal>-loops, and behave sanely if the loop
1907 value overflows <type>int32</type> on the way to the end value (Tom)
1913 Improve accuracy of error locations in PL/PgSQL syntax errors (Tom)
1922 <title>PL/Perl Server-Side Language Changes</title>
1927 Allow type-name arguments to <function>spi_prepare()</function> to
1928 be standard type aliases as well as the names given in
1929 <literal>pg_type</literal> (Andrew)
1938 <title>PL/Python Server-Side Language Changes</title>
1943 Enable PL/PythonU to compile on Python 2.5 (Marko Kreen)
1949 Allow type-name arguments to <function>plpy.prepare()</function> to
1950 be standard type aliases as well as the names given in
1951 <literal>pg_type</literal> (Andrew)
1957 Support true boolean type in Python versions that have it, i.e.,
1958 version 2.3 and later (Marko Kreen)
1967 <title>PL/Tcl Server-Side Language Changes</title>
1972 Allow type-name arguments to <function>spi_prepare</> to be standard
1973 type aliases as well as the names given in <literal>pg_type</>
1980 Fix problems with thread-enabled libtcl spawning multiple threads
1981 within the backend (Steve Marshall, Paul Bayer, Doug Knight)
1985 This caused all sorts of unpleasantness.
1994 <title><link linkend="APP-PSQL"><application>psql</></link> Changes</title>
1999 List disabled triggers separately in <literal>\d</literal> output
2006 Identify schema of inherited table in <literal>\d</literal> output
2013 Show aggregate return types in <literal>\da</literal> output
2014 (Greg Sabino Mullane)
2020 Add the function's volatility to the output of
2021 <literal>\df+</literal> (Neil)
2027 In <literal>\d</literal> patterns, always match <literal>$</literal>
2028 literally, whether quoted or not (Tom)
2032 Since we allow <literal>$</literal> as a character within
2033 identifiers, this behavior is useful, whereas the previous behavior
2034 of treating it as the regexp ending anchor was nearly useless given
2035 that the pattern is automatically anchored anyway.
2041 Add <literal>\prompt</literal> command (Chad Wagner)
2045 This lets a <application>psql</application> script prompt the user for input.
2051 Allow <literal>\pset</literal>, <literal>\t</literal> and
2052 <literal>\x</literal> to use boolean constants on/off, rather than
2053 always toggling (Chad Wagner)
2059 Add <literal>\sleep</> command to allow delays in
2060 <application>psql</application> scripts (Jan)
2066 Enable <literal>\timing</> output for <literal>\copy</> commands
2073 Allow <literal>\timing</literal> to have better resolution than
2074 ~15ms on Windows (Itagaki Takahiro)
2080 Flush the <literal>\o</> file, if any, after each backslash command
2090 <title><link linkend="APP-PGDUMP"><application>pg_dump</></link> Changes</title>
2095 Add --tablespaces-only and --roles-only options to
2096 <application>pg_dumpall</application> (Dave Page)
2102 Add output-file option for <application>pg_dumpall</application>
2107 This is primarily useful on Windows, where output redirection of
2108 child <application>pg_dump</application> processes doesn't work.
2114 Allow pg_dumpall to accept an initial-connection database name
2115 rather than the default <literal>template1</literal> (Dave Page)
2121 In -n and -t switches, always match <literal>$</literal> literally,
2122 whether quoted or not (Tom)
2126 Since we allow <literal>$</literal> as a character within
2127 identifiers, this behavior is useful, whereas the previous behavior
2128 of treating it as the regexp ending anchor was nearly useless given
2129 that the pattern is automatically anchored anyway.
2135 Replace linear searches with binary searches in pg_dump's code to
2136 lookup objects by OID (Tom)
2140 This can improve speed materially in databases with thousands of
2141 objects of the same kind (for instances, thousands of functions).
2150 <title>Other Client Application Changes</title>
2155 Allow a nondefault <filename>pg_xlog</filename> directory location
2156 to be specified to initdb (Euler Taveira de Oliveira)
2162 Call setrlimit if possible in pg_regress to allow core file
2163 generation, and provide a switch for similar behavior in pg_ctl
2170 Add cancel handlers so it's possible to Ctrl-C clusterdb, reindexdb
2171 and vacuumdb (Itagaki Takahiro, Magnus)
2177 Remove gratuitous response messages from utility programs (Peter)
2181 The --quiet option is now obsolete and without effect in createdb,
2182 createuser, dropdb, dropuser; kept for compatibility but marked for
2185 Progress messages when acting on all databases now go to stdout
2186 instead of stderr, since they are not in fact errors.
2195 <title><link linkend="libpq"><application>libpq</></link> Changes</title>
2200 Interpret the dbName parameter of PQsetdbLogin as a conninfo string
2201 if it contains an = sign (Andrew)
2205 This allows use of all the options of conninfo strings through
2206 client programs that still use PQsetdbLogin.
2212 Support a global SSL configuration file (Victor Wagner)
2218 Add libpq environment variable PGSSLKEY to control SSL hardware keys
2225 Add <function>lo_truncate()</function> function for large object
2226 truncation (Kris Jurka)
2232 Provide <function>PQconnectionUsedPassword()</function> function
2233 that returns true if the server demanded a password during
2234 authentication (Joe Conway)
2238 If this is true after a failed connection, and the user did not give
2239 a password, clients may choose to prompt for a password and retry.
2248 <title><link linkend="ecpg"><application>ecpg</></link> Changes</title>
2253 Major rewrite to use V3 frontend/backend protocol (Michael)
2257 Among other things, prepared statements can now be prepared on the
2264 Use native threads, instead of pthreads, on Windows (Magnus)
2270 Improve thread-safety of ecpglib (Itagaki Takahiro)
2276 Prevent ecpg libraries from exporting any symbols other than
2277 their intended API (Michael)
2286 <title><application>Windows</> Port</title>
2291 Support building the entire Postgres system with Visual C++ (Magnus
2298 Remove old-style client-only Visual C++ build infrastructure for
2299 everything except libpq (Magnus)
2305 Allow regression tests to be started by an admin user (Magnus)
2309 This uses the same privilege-dropping method that's used by pg_ctl
2316 Native shared memory implementation for Windows (Magnus)
2320 Same underlying tech as before, but removes the useless SysV
2330 <title>Source Code Changes</title>
2335 Replace direct assignments to VARATT_SIZEP(x) with SET_VARSIZE(x,
2336 len) (Greg Stark, Tom)
2340 Third-party C code that manipulates varlena datums <emphasis>must</emphasis> convert to
2341 this convention, since the varvarlena patch changes the
2342 representation of length words on some architectures. Also, it
2343 may be necessary to <quote>detoast</quote> input varlena datums in cases where
2344 no toasting could have happened before.
2350 Rename DLLIMPORT macro to PGDLLIMPORT to avoid conflict with third
2351 party includes (like tcl) that define DLLIMPORT (Magnus)
2357 Remove the prohibition on executing cursor commands through
2358 <function>SPI_execute</function> (Tom)
2362 The macro definition of SPI_ERROR_CURSOR still exists, so as not to
2363 needlessly break any SPI callers that are checking for it, but that
2364 code will never actually be returned anymore.
2370 Clean up SPI's API a little bit by declaring SPI plan pointers as
2371 <literal>SPIPlanPtr</> instead of <literal>void *</> (Tom)
2375 This does not break any existing code, but switching is recommended
2376 to help catch simple programming mistakes.
2382 Expose more cursor-related functionality in SPI (Pavel Stehule)
2386 Allow access to the planner's cursor-related planning options, and
2387 provide new FETCH/MOVE routines that allow access to the full power
2394 Add configure --enable-profiling switch to enable code profiling
2395 (works with gcc only, for now) (Korry Douglas and Nikhil S)
2401 Add configure option --with-system-tzdata to use operating system
2402 time zone database (Peter)
2408 Support <literal>gmake draft</literal> in doc/src/sgml/Makefile (Bruce)
2414 Allow GIN's extractQuery method to signal that nothing can satisfy
2419 This changes prototype of extractQuery method to use int32* instead
2420 of uint32* for nentries argument. A -1 result means that no search
2427 Move NAMEDATALEN definition from postgres_ext.h to
2428 pg_config_manual.h (Peter)
2432 It used to be part of libpq's exported interface many releases ago,
2433 but now it's no longer necessary to make it accessible to clients.
2434 We may eventually make it configurable via a configure switch, but
2435 we should first flush out any client-side code that thinks it needs
2442 Get rid of client-code dependencies on the exact text of the
2443 no-password error message, by using
2444 <function>PQconnectionUsedPassword()</function> instead (Tom)
2450 Rename MaxTupleSize to MaxHeapTupleSize to clarify that it's not
2451 meant to describe the maximum size of index tuples (Tom)
2457 Remove the xlog-centric <quote>database system is ready</quote>
2458 message and replace it with <quote>database system is ready to
2459 accept connections</quote>
2465 Provide <function>strlcpy()</function> and
2466 <function>strlcat()</function> on all platforms, and replace
2467 error-prone uses of <function>strncpy()</function>,
2468 <function>strncat()</function>, etc (Peter)
2474 Improve smgr/md API (Tom)
2478 This improves error detection and reporting, both for external
2479 problems and for coding errors inside the backend. Notably,
2480 disallow <function>mdread()</function> beyond EOF, and enforce that
2481 <function>mdwrite()</function> is to be used for rewriting existing
2482 blocks while <function>mdextend()</function> is to be used for
2483 extending the relation EOF.
2489 Restructure planner-to-executor API (Tom)
2493 Notably, the executor no longer sees the Query structure at all, but
2494 gets a new node type called PlannedStmt that is more suitable as
2495 executor input. This allows us to stop storing mostly-redundant
2496 Query trees in prepared statements, portals, etc. Also, the
2497 rangetable used by the executor is now a flat list with no
2498 unnecessary substructure — this simplifies many things.
2504 Preserve typmod information in Const, Param, ArrayRef, ArrayExpr,
2505 and EXPR and ARRAY SubLink nodes (Tom)
2509 This seems like a good idea in view of the expected increase in
2510 typmod usage from Teodor's work to allow user-defined types to have
2517 Remove advertising clause from Berkeley BSD-licensed files, per
2518 instructions from Berkeley (Bruce)
2524 Replace 4-clause licensed blf.[ch] in contrib/pgcrypto with blowfish
2525 implementation from PuTTY which is under minimal BSD/MIT license
2532 Decouple the values of TOAST_TUPLE_THRESHOLD and
2533 TOAST_MAX_CHUNK_SIZE, and adjust them to avoid wasting two bytes per
2538 This forces initdb because the value of TOAST_MAX_CHUNK_SIZE
2539 determines the content of toast tables. Add TOAST_MAX_CHUNK_SIZE to
2540 the values checked in pg_control, since it can't be changed without
2541 invalidating toast table content.
2546 While TOAST_TUPLE_THRESHOLD can now be changed without initdb, some
2547 thought still needs to be given to needs_toast_table() in
2548 toasting.c before unleashing random changes.
2555 Fix pgstats counting of live and dead tuples to recognize that
2556 committed and aborted transactions have different effects (Tom)
2560 This should result in noticeably more accurate tracking of
2561 n_live_tuples and n_dead_tuples.
2567 Add a flag bit to WAL records that shows whether it is safe to
2568 remove full-page images (Koichi Suzuki)
2572 This supports implementation of external WAL-compression filters
2573 that remove such images.
2579 Create hooks to let a loadable plugin monitor (or even replace) the
2580 planner and/or create plans for hypothetical situations (Gurjeet
2587 Create a function variable <literal>join_search_hook</> to let plugins
2588 override the join search order portion of the planner (Julius
2595 Add tas() support for Renesas' M32R processor (Kazuhiro Inaoka)
2601 Downgrade some boring startup messages to <literal>DEBUG1</literal>
2608 Fix several hash functions that were taking chintzy shortcuts
2609 instead of delivering a well-randomized hash value (Tom)
2615 Redefine IsTransactionState() to only return true for
2616 TRANS_INPROGRESS state (Tom)
2622 Arrange for <function>quote_identifier()</function> and
2623 <application>pg_dump</application> to not quote keywords that are
2624 unreserved according to the grammar (Tom)
2628 Should this be flagged as a potential incompatibility?
2634 Fix PGXS conventions so that extensions can be built against
2635 Postgres installations whose pg_config program does not appear first
2642 Adjust the output of <function>MemoryContextStats()</function> so
2643 that the line for a child memory context is indented two spaces to
2644 the right of its parent context (Neil)
2650 Change the on-disk representation of the <type>numeric</type>
2651 datatype so that the sign_dscale word comes before the weight
2652 instead of after (Tom)
2658 Use SYSV semaphores rather than POSIX on Darwin >= 6.0, i.e., OS X
2659 10.2 and up (Chris Marcellino)
2668 <title>Contrib Changes</title>
2673 Add <filename>/contrib/pageinspect</filename> module for low-level
2674 page inspection (Simon, Heikki)
2680 Add <filename>/contrib/pg_standby</filename> module for warm standby
2687 Add <filename>/contrib/uuid-ossp</filename> module for generating
2688 UUID values using the OSSP UUID library (Peter)
2692 Use configure option <literal>--with-ossp-uuid</literal> to
2693 activate. This takes advantage of the new <type>uuid</type> builtin
2700 Add pgbench option to set fillfactor (Pavan Deolasee)
2706 Enhance pgbench -l option to add timestamp (Greg Smith)
2712 Add usage count statistics to the information available from
2713 <filename>contrib/pgbuffercache</filename> (Greg Smith)
2719 Add GIN support for hstore (Teodor)
2725 Add GIN support for pg_trgm (Guillaume Smet, Teodor)
2731 Update <filename>/contrib/start-scripts</filename> OS/X startup
2732 files, and move to a separate OS/X directory (Mark Cotner, David
2739 Restrict <function>pgrowlocks()</function> and
2740 <function>dblink_get_pkey()</function> to users who have
2741 <literal>SELECT</literal> privilege on the target table (Tom)
2747 Restrict <filename>contrib/pgstattuple</filename> functions to
2754 <filename>contrib/xml2</filename> is deprecated and planned for
2755 removal in 8.4 (Peter)
2759 The new XML support in core Postgres supersedes this module.
2769 <sect1 id="release-8-2-5">
2770 <title>Release 8.2.5</title>
2773 <title>Release date</title>
2774 <simpara>2007-09-17</simpara>
2778 This release contains a variety of fixes from 8.2.4.
2782 <title>Migration to version 8.2.5</title>
2785 A dump/restore is not required for those running 8.2.X.
2791 <title>Changes</title>
2797 Prevent index corruption when a transaction inserts rows and
2798 then aborts close to the end of a concurrent <command>VACUUM</>
2799 on the same table (Tom)
2805 Fix <literal>ALTER DOMAIN ADD CONSTRAINT</> for cases involving
2806 domains over domains (Tom)
2812 Make <command>CREATE DOMAIN ... DEFAULT NULL</> work properly (Tom)
2818 Fix some planner problems with outer joins, notably poor
2819 size estimation for <literal>t1 LEFT JOIN t2 WHERE t2.col IS NULL</>
2826 Allow the <type>interval</> data type to accept input consisting only of
2827 milliseconds or microseconds (Neil)
2833 Allow timezone name to appear before the year in <type>timestamp</> input (Tom)
2839 Fixes for <acronym>GIN</> indexes used by <filename>/contrib/tsearch2</> (Teodor)
2845 Speed up rtree index insertion (Teodor)
2851 Fix excessive logging of <acronym>SSL</> error messages (Tom)
2857 Fix logging so that log messages are never interleaved when using
2858 the syslogger process (Andrew)
2864 Fix crash when <varname>log_min_error_statement</> logging runs out
2871 Fix incorrect handling of some foreign-key corner cases (Tom)
2877 Fix <function>stddev_pop(numeric)</> and <function>var_pop(numeric)</> (Tom)
2883 Prevent <command>REINDEX</> and <command>CLUSTER</> from failing
2884 due to attempting to process temporary tables of other sessions (Alvaro)
2890 Update the time zone database rules, particularly New Zealand's upcoming changes (Tom)
2896 Windows socket and semaphore improvements (Magnus)
2902 Make <command>pg_ctl -w</> work properly in Windows service mode (Dave Page)
2908 Fix memory allocation bug when using <application>MIT Kerberos</> on Windows (Magnus)
2914 Suppress timezone name (<literal>%Z</>) in log timestamps on Windows
2915 because of possible encoding mismatches (Tom)
2921 Require non-superusers who use <filename>/contrib/dblink</> to use only
2922 password authentication, as a security measure (Joe)
2928 Restrict <filename>/contrib/pgstattuple</> functions to superusers, for security reasons (Tom)
2934 Do not let <filename>/contrib/intarray</> try to make its GIN opclass
2935 the default (this caused problems at dump/restore) (Tom)
2944 <sect1 id="release-8-2-4">
2945 <title>Release 8.2.4</title>
2948 <title>Release date</title>
2949 <simpara>2007-04-23</simpara>
2953 This release contains a variety of fixes from 8.2.3,
2954 including a security fix.
2958 <title>Migration to version 8.2.4</title>
2961 A dump/restore is not required for those running 8.2.X.
2967 <title>Changes</title>
2973 Support explicit placement of the temporary-table schema within
2974 <varname>search_path</>, and disable searching it for functions
2978 This is needed to allow a security-definer function to set a
2979 truly secure value of <varname>search_path</>. Without it,
2980 an unprivileged SQL user can use temporary objects to execute code
2981 with the privileges of the security-definer function (CVE-2007-2138).
2982 See <command>CREATE FUNCTION</> for more information.
2988 Fix <varname>shared_preload_libraries</> for Windows
2989 by forcing reload in each backend (Korry Douglas)
2995 Fix <function>to_char()</> so it properly upper/lower cases localized day or month
2996 names (Pavel Stehule)
3002 <filename>/contrib/tsearch2</> crash fixes (Teodor)
3008 Require <command>COMMIT PREPARED</> to be executed in the same
3009 database as the transaction was prepared in (Heikki)
3015 Allow <command>pg_dump</> to do binary backups larger than two gigabytes
3022 New traditional (Taiwan) Chinese <acronym>FAQ</> (Zhou Daojing)
3028 Prevent the statistics collector from writing to disk too frequently (Tom)
3034 Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles
3035 <command>UPDATE</> chains (Tom, Pavan Deolasee)
3041 Fix bug in domains that use array types (Tom)
3047 Fix <command>pg_dump</> so it can dump a serial column's sequence
3048 using <option>-t</> when not also dumping the owning table
3055 Planner fixes, including improving outer join and bitmap scan
3056 selection logic (Tom)
3062 Fix possible wrong answers or crash when a PL/pgSQL function tries
3063 to <literal>RETURN</> from within an <literal>EXCEPTION</> block
3070 Fix PANIC during enlargement of a hash index (Tom)
3076 Fix POSIX-style timezone specs to follow new USA DST rules (Tom)
3085 <sect1 id="release-8-2-3">
3086 <title>Release 8.2.3</title>
3089 <title>Release date</title>
3090 <simpara>2007-02-07</simpara>
3094 This release contains two fixes from 8.2.2.
3098 <title>Migration to version 8.2.3</title>
3101 A dump/restore is not required for those running 8.2.X.
3107 <title>Changes</title>
3113 Remove overly-restrictive check for type length in constraints and
3114 functional indexes(Tom)
3120 Fix optimization so MIN/MAX in subqueries can again use indexes (Tom)
3129 <sect1 id="release-8-2-2">
3130 <title>Release 8.2.2</title>
3133 <title>Release date</title>
3134 <simpara>2007-02-05</simpara>
3138 This release contains a variety of fixes from 8.2.1, including
3143 <title>Migration to version 8.2.2</title>
3146 A dump/restore is not required for those running 8.2.X.
3152 <title>Changes</title>
3158 Remove security vulnerabilities that allowed connected users
3159 to read backend memory (Tom)
3162 The vulnerabilities involve suppressing the normal check that a SQL
3163 function returns the data type it's declared to, and changing the
3164 data type of a table column (CVE-2007-0555, CVE-2007-0556). These
3165 errors can easily be exploited to cause a backend crash, and in
3166 principle might be used to read database content that the user
3167 should not be able to access.
3173 Fix not-so-rare-anymore bug wherein btree index page splits could fail
3174 due to choosing an infeasible split point (Heikki Linnakangas)
3180 Fix Borland C compile scripts (L Bayuk)
3186 Properly handle <function>to_char('CC')</> for years ending in
3187 <literal>00</> (Tom)
3190 Year 2000 is in the twentieth century, not the twenty-first.
3196 <filename>/contrib/tsearch2</> localization improvements (Tatsuo, Teodor)
3202 Fix incorrect permission check in
3203 <literal>information_schema.key_column_usage</> view (Tom)
3206 The symptom is <quote>relation with OID nnnnn does not exist</> errors.
3207 To get this fix without using <command>initdb</>, use <command>CREATE OR
3208 REPLACE VIEW</> to install the corrected definition found in
3209 <filename>share/information_schema.sql</>. Note you will need to do
3210 this in each database.
3216 Improve <command>VACUUM</> performance for databases with many tables (Tom)
3222 Fix for rare Assert() crash triggered by <literal>UNION</> (Tom)
3228 Fix potentially incorrect results from index searches using
3229 <literal>ROW</> inequality conditions (Tom)
3235 Tighten security of multi-byte character processing for UTF8 sequences
3236 over three bytes long (Tom)
3242 Fix bogus <quote>permission denied</> failures occurring on Windows
3243 due to attempts to fsync already-deleted files (Magnus, Tom)
3249 Fix bug that could cause the statistics collector
3250 to hang on Windows (Magnus)
3254 This would in turn lead to autovacuum not working.
3260 Fix possible crashes when an already-in-use PL/pgSQL function is
3267 Improve PL/pgSQL handling of domain types (Sergiy Vyshnevetskiy, Tom)
3273 Fix possible errors in processing PL/pgSQL exception blocks (Tom)
3282 <sect1 id="release-8-2-1">
3283 <title>Release 8.2.1</title>
3286 <title>Release date</title>
3287 <simpara>2007-01-08</simpara>
3291 This release contains a variety of fixes from 8.2.
3295 <title>Migration to version 8.2.1</title>
3298 A dump/restore is not required for those running 8.2.
3304 <title>Changes</title>
3310 Fix crash with <literal>SELECT</> ... <literal>LIMIT ALL</> (also
3311 <literal>LIMIT NULL</>) (Tom)
3317 <filename>Several /contrib/tsearch2</> fixes (Teodor)
3323 On Windows, make log messages coming from the operating system use
3324 <acronym>ASCII</> encoding (Hiroshi Saito)
3328 This fixes a conversion problem when there is a mismatch between
3329 the encoding of the operating system and database server.
3335 Fix Windows linking of <application>pg_dump</> using
3336 <filename>win32.mak</>
3343 Fix planner mistakes for outer join queries (Tom)
3349 Fix several problems in queries involving sub-SELECTs (Tom)
3355 Fix potential crash in SPI during subtransaction abort (Tom)
3359 This affects all PL functions since they all use SPI.
3365 Improve build speed of <acronym>PDF</> documentation (Peter)
3371 Re-add <acronym>JST</> (Japan) timezone abbreviation (Tom)
3377 Improve optimization decisions related to index scans (Tom)
3383 Have <application>psql</> print multi-byte combining characters as
3384 before, rather than output as <literal>\u</> (Tom)
3390 Improve index usage of regular expressions that use parentheses (Tom)
3394 This improves <application>psql</> <literal>\d</> performance also.
3400 Make <application>pg_dumpall</> assume that databases have public
3401 <literal>CONNECT</> privilege, when dumping from a pre-8.2 server (Tom)
3405 This preserves the previous behavior that anyone can connect to a
3406 database if allowed by <filename>pg_hba.conf</>.
3415 <sect1 id="release-8-2">
3416 <title>Release 8.2</title>
3419 <title>Release date</title>
3420 <simpara>2006-12-05</simpara>
3424 <title>Overview</title>
3427 This release adds many functionality and performance improvements that
3428 were requested by users, including:
3434 Query language enhancements including <command>INSERT/UPDATE/DELETE
3435 RETURNING</command>, multirow <literal>VALUES</literal> lists, and
3436 optional target-table alias in
3437 <command>UPDATE</>/<command>DELETE</command>
3443 Index creation without blocking concurrent
3444 <command>INSERT</>/<command>UPDATE</>/<command>DELETE</>
3451 Many query optimization improvements, including support for
3452 reordering outer joins
3458 Improved sorting performance with lower memory usage
3464 More efficient locking with better concurrency
3470 More efficient vacuuming
3476 Easier administration of warm standby servers
3482 New <literal>FILLFACTOR</literal> support for tables and indexes
3488 Monitoring, logging, and performance tuning additions
3494 More control over creating and dropping objects
3500 Table inheritance relationships can be defined
3501 for and removed from pre-existing tables
3507 <command>COPY TO</command> can copy the output of an arbitrary
3508 <command>SELECT</command> statement
3514 Array improvements, including nulls in arrays
3520 Aggregate-function improvements, including multiple-input
3521 aggregates and SQL:2003 statistical functions
3527 Many <filename>contrib/</filename> improvements
3538 <title>Migration to version 8.2</title>
3541 A dump/restore using <application>pg_dump</application> is
3542 required for those wishing to migrate data from any previous
3547 Observe the following incompatibilities:
3555 linkend="guc-escape-string-warning"><varname>escape_string_warning</></link>
3556 to <literal>on</> by default (Bruce)
3560 This issues a warning if backslash escapes are used in
3561 <link linkend="sql-syntax-strings">non-escape (non-<literal>E''</>)
3568 Change the <link linkend="sql-syntax-row-constructors">row
3569 constructor syntax</link> (<literal>ROW(...)</>) so that
3570 list elements <literal>foo.*</> will be expanded to a list
3571 of their member fields, rather than creating a nested
3572 row type field as formerly (Tom)
3576 The new behavior is substantially more useful since it
3577 allows, for example, triggers to check for data changes
3578 with <literal>IF row(new.*) IS DISTINCT FROM row(old.*)</>.
3579 The old behavior is still available by omitting <literal>.*</>.
3585 Make <link linkend="row-wise-comparison">row comparisons</link>
3586 follow <acronym>SQL</> standard semantics and allow them
3587 to be used in index scans (Tom)
3591 Previously, row = and <> comparisons followed the
3592 standard but < <= > >= did not. A row comparison
3593 can now be used as an index constraint for a multicolumn
3594 index matching the row value.
3600 Make <link linkend="functions-comparison">row <literal>IS <optional>NOT</> NULL</literal></link>
3601 tests follow <acronym>SQL</> standard semantics (Tom)
3605 The former behavior conformed to the standard for simple cases
3606 with <literal>IS NULL</>, but <literal>IS NOT NULL</> would return
3607 true if any row field was non-null, whereas the standard says it
3608 should return true only when all fields are non-null.
3614 Make <link linkend="SQL-SET-CONSTRAINTS"><command>SET
3615 CONSTRAINT</></link> affect only one constraint (Kris Jurka)
3619 In previous releases, <command>SET CONSTRAINT</> modified
3620 all constraints with a matching name. In this release,
3621 the schema search path is used to modify only the first
3622 matching constraint. A schema specification is also
3623 supported. This more nearly conforms to the SQL standard.
3629 Remove <literal>RULE</> permission for tables, for security reasons
3634 As of this release, only a table's owner can create or modify
3635 rules for the table. For backwards compatibility,
3636 <command>GRANT</>/<command>REVOKE RULE</> is still accepted,
3637 but it does nothing.
3643 Array comparison improvements (Tom)
3647 Now array dimensions are also compared.
3653 Change <link linkend="functions-array">array concatenation</link>
3654 to match documented behavior (Tom)
3658 This changes the previous behavior where concatenation
3659 would modify the array lower bound.
3665 Make command-line options of <application>postmaster</>
3666 and <link linkend="app-postgres"><application>postgres</></link>
3671 This allows the postmaster to pass arguments to each backend
3672 without using <literal>-o</>. Note that some options are now
3673 only available as long-form options, because there were conflicting
3674 single-letter options.
3680 Deprecate use of <application>postmaster</> symbolic link (Peter)
3684 <application>postmaster</> and <application>postgres</>
3685 commands now act identically, with the behavior determined
3686 by command-line options. The <application>postmaster</> symbolic link is
3687 kept for compatibility, but is not really needed.
3694 linkend="guc-log-duration"><varname>log_duration</></link>
3695 to output even if the query is not output (Tom)
3699 In prior releases, <varname>log_duration</> only printed if
3700 the query appeared earlier in the log.
3707 linkend="functions-formatting"><function>to_char(time)</></link>
3709 linkend="functions-formatting"><function>to_char(interval)</></link>
3710 treat <literal>HH</> and <literal>HH12</> as 12-hour
3715 Most applications should use <literal>HH24</> unless they
3716 want a 12-hour display.
3722 Zero unmasked bits in conversion from <link
3723 linkend="datatype-inet"><type>INET</></link> to <link
3724 linkend="datatype-inet"><type>CIDR</></link> (Tom)
3728 This ensures that the converted value is actually valid for
3735 Remove <varname>australian_timezones</> configuration variable
3740 This variable has been superseded by a more general facility
3741 for configuring timezone abbreviations.
3747 Improve cost estimation for nested-loop index scans (Tom)
3751 This might eliminate the need to set unrealistically small
3753 linkend="guc-random-page-cost"><varname>random_page_cost</></link>.
3754 If you have been using a very small <varname>random_page_cost</>,
3755 please recheck your test cases.
3761 Change behavior of <command>pg_dump</> <literal>-n</> and
3762 <literal>-t</> options. (Greg Sabino Mullane)
3765 See the <command>pg_dump</> manual page for details.
3771 Change <link linkend="libpq"><application>libpq</></link>
3772 <function>PQdsplen()</> to return a useful value (Martijn
3779 Declare <link linkend="libpq"><application>libpq</></link>
3780 <function>PQgetssl()</> as returning <literal>void *</>,
3781 rather than <literal>SSL *</> (Martijn van Oosterhout)
3785 This allows applications to use the function without including
3786 the OpenSSL headers.
3792 C-language loadable modules must now include a
3793 <link linkend="xfunc-c-dynload"><literal>PG_MODULE_MAGIC</></link>
3794 macro call for version compatibility checking
3795 (Martijn van Oosterhout)
3801 For security's sake, modules used by a PL/PerlU function are no
3802 longer available to PL/Perl functions (Andrew)
3806 This also implies that data can no longer be shared between a PL/Perl
3807 function and a PL/PerlU function.
3808 Some Perl installations have not been compiled with the correct flags
3809 to allow multiple interpreters to exist within a single process.
3810 In this situation PL/Perl and PL/PerlU cannot both be used in a
3811 single backend. The solution is to get a Perl installation which
3812 supports multiple interpreters.
3819 In <filename>contrib/xml2/</>, rename <function>xml_valid()</> to
3820 <function>xml_is_well_formed()</> (Tom)
3824 <function>xml_valid()</> will remain for backward compatibility,
3825 but its behavior will change to do schema checking in a future
3832 Remove <filename>contrib/ora2pg/</>, now at <ulink
3833 url="http://www.samse.fr/GPL/ora2pg"></ulink>
3839 Remove contrib modules that have been migrated to PgFoundry:
3840 <filename>adddepend</>, <filename>dbase</>, <filename>dbmirror</>,
3841 <filename>fulltextindex</>, <filename>mac</>, <filename>userlock</>
3847 Remove abandoned contrib modules:
3848 <filename>mSQL-interface</>, <filename>tips</>
3854 Remove <acronym>QNX</> and <acronym>BEOS</> ports (Bruce)
3858 These ports no longer had active maintainers.
3866 <title>Changes</title>
3869 Below you will find a detailed account of the
3870 changes between <productname>PostgreSQL</productname> 8.2 and
3871 the previous major release.
3875 <title>Performance Improvements</title>
3880 Allow the planner to reorder <link linkend="queries-join">outer
3881 joins</link> in some circumstances (Tom)
3885 In previous releases, outer joins would always be evaluated in
3886 the order written in the query. This change allows the
3887 query optimizer to consider reordering outer joins, in cases where
3888 it can determine that the join order can be changed without
3889 altering the meaning of the query. This can make a
3890 considerable performance difference for queries involving
3891 multiple outer joins or mixed inner and outer joins.
3897 Improve efficiency of <link
3898 linkend="functions-comparisons"><literal>IN</>
3899 (list-of-expressions)</link> clauses (Tom)
3905 Improve sorting speed and reduce memory usage (Simon, Tom)
3911 Improve subtransaction performance (Alvaro, Itagaki Takahiro,
3918 Add <literal>FILLFACTOR</> to <link
3919 linkend="SQL-CREATETABLE">table</link> and <link
3920 linkend="SQL-CREATEINDEX">index</link> creation (ITAGAKI
3925 This leaves extra free space in each table or index page,
3926 allowing improved performance as the database grows. This
3927 is particularly valuable to maintain clustering.
3933 Increase default values for <link
3934 linkend="guc-shared-buffers"><varname>shared_buffers</></link>
3936 linkend="guc-max-fsm-pages"><varname>max_fsm_pages</></link>
3943 Improve locking performance by breaking the lock manager tables into
3949 This allows locking to be more fine-grained, reducing
3956 Reduce locking requirements of sequential scans (Qingqing
3963 Reduce locking required for database creation and destruction
3970 Improve the optimizer's selectivity estimates for <link
3971 linkend="functions-like"><literal>LIKE</></link>, <link
3972 linkend="functions-like"><literal>ILIKE</></link>, and
3973 <link linkend="functions-posix-regexp">regular expression</link>
3980 Improve planning of joins to <link linkend="ddl-inherit">inherited
3981 tables</link> and <link linkend="queries-union"><literal>UNION
3982 ALL</></link> views (Tom)
3988 Allow <link linkend="guc-constraint-exclusion">constraint
3989 exclusion</link> to be applied to <link
3990 linkend="ddl-inherit">inherited</link> <command>UPDATE</> and
3991 <command>DELETE</> queries (Tom)
3995 <command>SELECT</> already honored constraint exclusion.
4001 Improve planning of constant <literal>WHERE</> clauses, such as
4002 a condition that depends only on variables inherited from an
4003 outer query level (Tom)
4009 Protocol-level unnamed prepared statements are re-planned
4010 for each set of <literal>BIND</> values (Tom)
4014 This improves performance because the exact parameter values
4015 can be used in the plan.
4021 Speed up vacuuming of B-Tree indexes (Heikki Linnakangas,
4028 Avoid extra scan of tables without indexes during <link
4029 linkend="SQL-VACUUM"><command>VACUUM</></link> (Greg Stark)
4035 Improve multicolumn <link linkend="GiST"><acronym>GiST</></link>
4036 indexing (Oleg, Teodor)
4042 Remove dead index entries before B-Tree page split (Junji
4052 <title>Server Changes</title>
4057 Allow a forced switch to a new transaction log file (Simon, Tom)
4061 This is valuable for keeping warm standby slave servers
4062 in sync with the master. Transaction log file switching now also happens
4063 automatically during <link
4064 linkend="functions-admin"><function>pg_stop_backup()</></link>.
4065 This ensures that all
4066 transaction log files needed for recovery can be archived immediately.
4072 Add <acronym>WAL</> informational functions (Simon)
4076 Add functions for interrogating the current transaction log insertion
4077 point and determining <acronym>WAL</> filenames from the
4078 hex <acronym>WAL</> locations displayed by <link
4079 linkend="functions-admin"><function>pg_stop_backup()</></link>
4080 and related functions.
4086 Improve recovery from a crash during <acronym>WAL</> replay (Simon)
4090 The server now does periodic checkpoints during <acronym>WAL</>
4091 recovery, so if there is a crash, future <acronym>WAL</>
4092 recovery is shortened. This also eliminates the need for
4093 warm standby servers to replay the entire log since the
4094 base backup if they crash.
4100 Improve reliability of long-term <acronym>WAL</> replay
4101 (Heikki, Simon, Tom)
4105 Formerly, trying to roll forward through more than 2 billion
4106 transactions would not work due to XID wraparound. This meant
4107 warm standby servers had to be reloaded
4108 from fresh base backups periodically.
4115 linkend="guc-archive-timeout"><varname>archive_timeout</></link>
4116 to force transaction log file switches at a given interval (Simon)
4120 This enforces a maximum replication delay for warm standby servers.
4126 Add native <link linkend="auth-ldap"><acronym>LDAP</></link>
4127 authentication (Magnus Hagander)
4131 This is particularly useful for platforms that do not
4132 support <acronym>PAM</>, such as Windows.
4138 Add <link linkend="sql-grant-description-objects"><literal>GRANT
4139 CONNECT ON DATABASE</></link> (Gevik Babakhani)
4143 This gives SQL-level control over database access. It works as
4144 an additional filter on top of the existing
4145 <link linkend="auth-pg-hba-conf"><filename>pg_hba.conf</></link>
4152 Add support for <link linkend="ssl-tcp"><acronym>SSL</>
4153 Certificate Revocation List</link> (<acronym>CRL</>) files
4154 (Libor Hohoš)
4158 The server and <application>libpq</> both recognize <acronym>CRL</>
4165 <link linkend="GiST"><acronym>GiST</></link> indexes are
4166 now clusterable (Teodor)
4172 Remove routine autovacuum server log entries (Bruce)
4177 linkend="monitoring-stats-views-table"><literal>pg_stat_activity</></link>
4178 now shows autovacuum activity.
4184 Track maximum XID age within individual tables, instead of whole databases (Alvaro)
4188 This reduces the overhead involved in preventing transaction
4189 ID wraparound, by avoiding unnecessary VACUUMs.
4195 Add last vacuum and analyze timestamp columns to the stats
4196 collector (Larry Rosenman)
4200 These values now appear in the <link
4201 linkend="monitoring-stats-views-table"><literal>pg_stat_*_tables</></link>
4208 Improve performance of statistics monitoring, especially
4209 <varname>stats_command_string</>
4214 This release enables <varname>stats_command_string</> by
4215 default, now that its overhead is minimal. This means
4217 linkend="monitoring-stats-views-table"><literal>pg_stat_activity</></link>
4218 will now show all active queries by default.
4224 Add a <literal>waiting</> column to <link
4225 linkend="monitoring-stats-views-table"><literal>pg_stat_activity</></link>
4230 This allows <structname>pg_stat_activity</> to show all the
4231 information included in the <application>ps</> display.
4237 Add configuration parameter <link
4238 linkend="guc-update-process-title"><varname>update_process_title</></link>
4239 to control whether the <application>ps</> display is updated
4240 for every command (Bruce)
4244 On platforms where it is expensive to update the <application>ps</>
4245 display, it might be worthwhile to turn this off and rely solely on
4246 <structname>pg_stat_activity</> for status information.
4252 Allow units to be specified in configuration settings
4257 For example, you can now set <link
4258 linkend="guc-shared-buffers"><varname>shared_buffers</></link>
4259 to <literal>32MB</> rather than mentally converting sizes.
4265 Add support for <link linkend="config-setting">include
4266 directives</link> in <filename>postgresql.conf</> (Joachim
4273 Improve logging of protocol-level prepare/bind/execute
4274 messages (Bruce, Tom)
4278 Such logging now shows statement names, bind parameter
4279 values, and the text of the query being executed. Also,
4280 the query text is properly included in logged error messages
4281 when enabled by <varname>log_min_error_statement</>.
4288 linkend="guc-max-stack-depth"><varname>max_stack_depth</></link>
4289 from being set to unsafe values
4293 On platforms where we can determine the actual kernel stack depth
4294 limit (which is most), make sure that the initial default value of
4295 <varname>max_stack_depth</> is safe, and reject attempts to set it
4296 to unsafely large values.
4302 Enable highlighting of error location in query in more
4307 The server is now able to report a specific error location for
4308 some semantic errors (such as unrecognized column name), rather
4309 than just for basic syntax errors as before.
4315 Fix <quote>failed to re-find parent key</> errors in
4316 <command>VACUUM</> (Tom)
4322 Clean out <filename>pg_internal.init</> cache files during server
4327 This avoids a hazard that the cache files might contain stale
4328 data after PITR recovery.
4334 Fix race condition for truncation of a large relation across a
4335 gigabyte boundary by <command>VACUUM</> (Tom)
4341 Fix bug causing needless deadlock errors on row-level locks (Tom)
4347 Fix bugs affecting multi-gigabyte hash indexes (Tom)
4353 Each backend process is now its own process group leader (Tom)
4357 This allows query cancel to abort subprocesses invoked from a
4358 backend or archive/recovery process.
4367 <title>Query Changes</title>
4372 Add <link linkend="SQL-INSERT"><command>INSERT</></link>/<link
4373 linkend="SQL-UPDATE"><command>UPDATE</></link>/<link
4374 linkend="SQL-DELETE"><command>DELETE</></link>
4375 <literal>RETURNING</> (Jonah Harris, Tom)
4379 This allows these commands to return values, such as the
4380 computed serial key for a new row. In the <command>UPDATE</>
4381 case, values from the updated version of the row are returned.
4387 Add support for multiple-row <link
4388 linkend="queries-values"><literal>VALUES</></link> clauses,
4389 per SQL standard (Joe, Tom)
4393 This allows <command>INSERT</> to insert multiple rows of
4394 constants, or queries to generate result sets using constants.
4395 For example, <literal>INSERT ... VALUES (...), (...),
4396 ....</>, and <literal>SELECT * FROM (VALUES (...), (...),
4397 ....) AS alias(f1, ...)</>.
4403 Allow <link linkend="SQL-UPDATE"><command>UPDATE</></link>
4404 and <link linkend="SQL-DELETE"><command>DELETE</></link>
4405 to use an alias for the target table (Atsushi Ogawa)
4409 The SQL standard does not permit an alias in these commands, but
4410 many database systems allow one anyway for notational convenience.
4416 Allow <link linkend="SQL-UPDATE"><command>UPDATE</></link>
4417 to set multiple columns with a list of values (Susanne
4422 This is basically a short-hand for assigning the columns
4423 and values in pairs. The syntax is <literal>UPDATE tab
4424 SET (<replaceable>column</>, ...) = (<replaceable>val</>, ...)</>.
4430 Make row comparisons work per standard (Tom)
4434 The forms <, <=, >, >= now compare rows lexicographically,
4435 that is, compare the first elements, if equal compare the second
4436 elements, and so on. Formerly they expanded to an AND condition
4437 across all the elements, which was neither standard nor very useful.
4443 Add <link linkend="SQL-TRUNCATE"><literal>CASCADE</></link>
4444 option to <command>TRUNCATE</> (Joachim Wieland)
4448 This causes <command>TRUNCATE</> to automatically include all tables
4449 that reference the specified table(s) via foreign keys. While
4450 convenient, this is a dangerous tool — use with caution!
4456 Support <literal>FOR UPDATE</> and <literal>FOR SHARE</>
4457 in the same <link linkend="SQL-INSERT"><literal>SELECT</></link>
4464 Add <link linkend="functions-comparisons"><literal>IS NOT
4465 DISTINCT FROM</></link> (Pavel Stehule)
4469 This operator is similar to equality (<literal>=</>), but
4470 evaluates to true when both left and right operands are
4471 <literal>NULL</>, and to false when just one is, rather than
4472 yielding <literal>NULL</> in these cases.
4478 Improve the length output used by <link
4479 linkend="queries-union"><literal>UNION</></link>/<literal>INTERSECT</>/<literal>EXCEPT</>
4484 When all corresponding columns are of the same defined length, that
4485 length is used for the result, rather than a generic length.
4491 Allow <link linkend="functions-like"><literal>ILIKE</></link>
4492 to work for multi-byte encodings (Tom)
4496 Internally, <literal>ILIKE</> now calls <function>lower()</>
4497 and then uses <literal>LIKE</>. Locale-specific regular
4498 expression patterns still do not work in these encodings.
4505 linkend="guc-standard-conforming-strings"><varname>standard_conforming_strings</></link>
4506 to be turned <literal>on</> (Kevin Grittner)
4510 This allows backslash escaping in strings to be disabled,
4511 making <productname>PostgreSQL</> more
4512 standards-compliant. The default is <literal>off</> for backwards
4513 compatibility, but future releases will default this to <literal>on</>.
4519 Do not flatten subqueries that contain <literal>volatile</>
4520 functions in their target lists (Jaime Casanova)
4524 This prevents surprising behavior due to multiple evaluation
4525 of a <literal>volatile</> function (such as <function>random()</>
4526 or <function>nextval()</>). It might cause performance
4527 degradation in the presence of functions that are unnecessarily
4528 marked as <literal>volatile</>.
4534 Add system views <link
4535 linkend="view-pg-prepared-statements"><literal>pg_prepared_statements</></link>
4537 linkend="view-pg-cursors"><literal>pg_cursors</></link>
4538 to show prepared statements and open cursors (Joachim Wieland, Neil)
4542 These are very useful in pooled connection setups.
4548 Support portal parameters in <link
4549 linkend="SQL-EXPLAIN"><command>EXPLAIN</></link> and <link
4550 linkend="SQL-EXECUTE"><command>EXECUTE</></link> (Tom)
4554 This allows, for example, <acronym>JDBC</> <literal>?</> parameters to
4555 work in these commands.
4561 If <acronym>SQL</>-level <link
4562 linkend="SQL-PREPARE"><command>PREPARE</></link> parameters
4563 are unspecified, infer their types from the content of the
4568 Protocol-level <command>PREPARE</> already did this.
4574 Allow <literal>LIMIT</> and <literal>OFFSET</> to exceed
4575 two billion (Dhanaraj M)
4584 <title>Object Manipulation Changes</title>
4589 Add <literal>TABLESPACE</> clause to <link
4590 linkend="SQL-CREATETABLEAS"><command>CREATE TABLE AS</></link>
4595 This allows a tablespace to be specified for the new table.
4601 Add <literal>ON COMMIT</> clause to <link
4602 linkend="SQL-CREATETABLEAS"><command>CREATE TABLE AS</></link>
4607 This allows temporary tables to be truncated or dropped on
4608 transaction commit. The default behavior is for the table
4609 to remain until the session ends.
4615 Add <literal>INCLUDING CONSTRAINTS</> to <link
4616 linkend="SQL-CREATETABLE"><command>CREATE TABLE LIKE</></link>
4621 This allows easy copying of <literal>CHECK</> constraints to a new
4628 Allow the creation of placeholder (shell) <link
4629 linkend="SQL-CREATETYPE">types</link> (Martijn van Oosterhout)
4633 A shell type declaration creates a type name, without specifying
4634 any of the details of the type. Making a shell type is useful
4635 because it allows cleaner declaration of the type's input/output
4636 functions, which must exist before the type can be defined <quote>for
4637 real</>. The syntax is <command>CREATE TYPE <replaceable
4638 class="parameter">typename</replaceable></>.
4644 <link linkend="SQL-CREATEAGGREGATE">Aggregate functions</link>
4645 now support multiple input parameters (Sergey Koposov, Tom)
4651 Add new aggregate creation <link
4652 linkend="SQL-CREATEAGGREGATE">syntax</link> (Tom)
4656 The new syntax is <command>CREATE AGGREGATE
4657 <replaceable>aggname</> (<replaceable>input_type</>)
4658 (<replaceable>parameter_list</>)</command>. This more
4659 naturally supports the new multi-parameter aggregate
4660 functionality. The previous syntax is still supported.
4667 linkend="SQL-ALTERROLE"><command>ALTER ROLE PASSWORD NULL</></link>
4668 to remove a previously set role password (Peter)
4674 Add <command>DROP</> object <literal>IF EXISTS</> for many
4675 object types (Andrew)
4679 This allows <command>DROP</> operations on non-existent
4680 objects without generating an error.
4686 Add <link linkend="SQL-DROP-OWNED"><literal>DROP OWNED</></link>
4687 to drop all objects owned by a role (Alvaro)
4693 Add <link linkend="SQL-REASSIGN-OWNED"><literal>REASSIGN
4694 OWNED</></link> to reassign ownership of all objects owned
4699 This, and <literal>DROP OWNED</> above, facilitate dropping
4706 Add <link linkend="SQL-GRANT"><command>GRANT ON SEQUENCE</></link>
4711 This was added for setting sequence-specific permissions.
4712 <literal>GRANT ON TABLE</> for sequences is still supported
4713 for backward compatibility.
4719 Add <link linkend="SQL-GRANT"><literal>USAGE</></link>
4720 permission for sequences that allows only <function>currval()</>
4721 and <function>nextval()</>, not <function>setval()</>
4726 <literal>USAGE</> permission allows more fine-grained
4727 control over sequence access. Granting <literal>USAGE</>
4728 allows users to increment
4729 a sequence, but prevents them from setting the sequence to
4730 an arbitrary value using <function>setval()</>.
4736 Add <link linkend="SQL-ALTERTABLE"><literal>ALTER TABLE
4737 [ NO ] INHERIT</></link> (Greg Stark)
4741 This allows inheritance to be adjusted dynamically, rather than
4742 just at table creation and destruction. This is very valuable
4743 when using inheritance to implement table partitioning.
4749 Allow <link linkend="SQL-COMMENT">comments</link> on global
4750 objects to be stored globally (Kris Jurka)
4754 Previously, comments attached to databases were stored in individual
4755 databases, making them ineffective, and there was no provision
4756 at all for comments on roles or tablespaces. This change adds a new
4757 shared catalog <link
4758 linkend="catalog-pg-shdescription"><structname>pg_shdescription</structname></link>
4759 and stores comments on databases, roles, and tablespaces therein.
4768 <title>Utility Command Changes</title>
4773 Add option to allow indexes to be created without blocking
4774 concurrent writes to the table (Greg Stark, Tom)
4778 The new syntax is <link linkend="SQL-CREATEINDEX"><command>CREATE
4779 INDEX CONCURRENTLY</></link>. The default behavior is
4780 still to block table modification while a index is being
4787 Provide <link linkend="functions-advisory-locks">advisory
4788 locking</link> functionality (Abhijit Menon-Sen, Tom)
4792 This is a new locking API designed to replace what used to be
4793 in /contrib/userlock. The userlock code is now on pgfoundry.
4799 Allow <link linkend="SQL-COPY"><command>COPY</></link> to
4800 dump a <command>SELECT</> query (Zoltan Boszormenyi, Karel
4805 This allows <command>COPY</> to dump arbitrary <acronym>SQL</>
4806 queries. The syntax is <literal>COPY (SELECT ...) TO</>.
4812 Make the <link linkend="SQL-COPY"><command>COPY</></link>
4813 command return a command tag that includes the number of
4814 rows copied (Volkan YAZICI)
4820 Allow <link linkend="SQL-VACUUM"><command>VACUUM</></link>
4821 to expire rows without being affected by other concurrent
4822 <command>VACUUM</> operations (Hannu Krossing, Alvaro, Tom)
4828 Make <link linkend="APP-INITDB"><application>initdb</></link>
4829 detect the operating system locale and set the default
4830 <varname>DateStyle</> accordingly (Peter)
4834 This makes it more likely that the installed
4835 <filename>postgresql.conf</> <varname>DateStyle</> value will
4842 Reduce number of progress messages displayed by <application>initdb</> (Tom)
4851 <title>Date/Time Changes</title>
4856 Allow full timezone names in <link
4857 linkend="datatype-datetime"><type>timestamp</></link> input values
4862 For example, <literal>'2006-05-24 21:11
4863 America/New_York'::timestamptz</>.
4869 Support configurable timezone abbreviations (Joachim Wieland)
4873 A desired set of timezone abbreviations can be chosen via the
4874 configuration parameter <link
4875 linkend="guc-timezone-abbreviations"><varname>timezone_abbreviations</></link>.
4882 linkend="view-pg-timezone-abbrevs"><varname>pg_timezone_abbrevs</></link>
4884 linkend="view-pg-timezone-names"><varname>pg_timezone_names</></link>
4885 views to show supported timezones (Magnus Hagander)
4892 linkend="functions-datetime-table"><function>clock_timestamp()</></link>,
4894 linkend="functions-datetime-table"><function>statement_timestamp()</></link>,
4896 linkend="functions-datetime-table"><function>transaction_timestamp()</></link>
4901 <function>clock_timestamp()</> is the current wall-clock time,
4902 <function>statement_timestamp()</> is the time the current
4903 statement arrived at the server, and
4904 <function>transaction_timestamp()</> is an alias for
4912 linkend="functions-formatting"><function>to_char()</></link>
4913 to print localized month and day names (Euler Taveira de
4921 linkend="functions-formatting"><function>to_char(time)</></link>
4923 linkend="functions-formatting"><function>to_char(interval)</></link>
4924 to output <acronym>AM</>/<acronym>PM</> specifications
4929 Intervals and times are treated as 24-hour periods, e.g.
4930 <literal>25 hours</> is considered <acronym>AM</>.
4936 Add new function <link
4937 linkend="functions-datetime-table"><function>justify_interval()</></link>
4938 to adjust interval units (Mark Dilger)
4944 Allow timezone offsets up to 14:59 away from GMT
4948 Kiribati uses GMT+14, so we'd better accept that.
4954 Interval computation improvements (Michael Glaesemann, Bruce)
4963 <title>Other Data Type and Function Changes</title>
4968 Allow arrays to contain <literal>NULL</> elements (Tom)
4974 Allow assignment to array elements not contiguous with the existing
4979 The intervening array positions will be filled with nulls.
4980 This is per SQL standard.
4986 New built-in <link linkend="functions-array">operators</link>
4987 for array-subset comparisons (<literal>@></>,
4988 <literal><@</>, <literal>&&</>) (Teodor, Tom)
4992 These operators can be indexed for many data types using
4993 <acronym>GiST</> or <acronym>GIN</> indexes.
4999 Add convenient arithmetic <link
5000 linkend="cidr-inet-operators-table">operations</link> on
5001 <type>INET</>/<type>CIDR</> values (Stephen R. van den
5006 The new operators are <literal>&</> (and), <literal>|</>
5007 (or), <literal>~</> (not), <type>inet</> <literal>+</> <type>int8</>,
5008 <type>inet</> <literal>-</> <type>int8</>, and
5009 <type>inet</> <literal>-</> <type>inet</>.
5016 linkend="functions-aggregate-statistics-table">aggregate functions</link>
5017 from SQL:2003 (Neil)
5021 The new functions are <function>var_pop()</>,
5022 <function>var_samp()</>, <function>stddev_pop()</>, and
5023 <function>stddev_samp()</>. <function>var_samp()</> and
5024 <function>stddev_samp()</> are merely renamings of the
5025 existing aggregates <function>variance()</> and
5026 <function>stddev()</>. The latter names remain available
5027 for backward compatibility.
5033 Add SQL:2003 statistical <link
5034 linkend="functions-aggregate-statistics-table">aggregates</link>
5039 New functions: <function>regr_intercept()</>,
5040 <function>regr_slope()</>, <function>regr_r2()</>,
5041 <function>corr()</>, <function>covar_samp()</>,
5042 <function>covar_pop()</>, <function>regr_avgx()</>,
5043 <function>regr_avgy()</>, <function>regr_sxy()</>,
5044 <function>regr_sxx()</>, <function>regr_syy()</>,
5045 <function>regr_count()</>.
5051 Allow <link linkend="SQL-CREATEDOMAIN">domains</link> to be
5052 based on other domains (Tom)
5058 Properly enforce domain <link
5059 linkend="ddl-constraints"><literal>CHECK</></link> constraints
5060 everywhere (Neil, Tom)
5064 For example, the result of a user-defined function that is
5065 declared to return a domain type is now checked against the
5066 domain's constraints. This closes a significant hole in the domain
5073 Fix problems with dumping renamed <link
5074 linkend="datatype-serial"><type>SERIAL</></link> columns
5079 The fix is to dump a <type>SERIAL</> column by explicitly
5080 specifying its <literal>DEFAULT</> and sequence elements,
5081 and reconstructing the <type>SERIAL</> column on reload
5082 using a new <link linkend="SQL-ALTERSEQUENCE"><command>ALTER
5083 SEQUENCE OWNED BY</></link> command. This also allows
5084 dropping a <type>SERIAL</> column specification.
5090 Add a server-side sleep function <link
5091 linkend="functions-datetime-delay"><function>pg_sleep()</></link>
5098 Add all comparison operators for the <link
5099 linkend="datatype-oid"><type>tid</></link> (tuple id) data
5100 type (Mark Kirkwood, Greg Stark, Tom)
5109 <title>PL/PgSQL Server-Side Language Changes</title>
5114 Add <literal>TG_table_name</> and <literal>TG_table_schema</> to
5115 trigger parameters (Andrew)
5119 <literal>TG_relname</> is now deprecated. Comparable
5120 changes have been made in the trigger parameters for the other
5127 Allow <literal>FOR</> statements to return values to scalars
5128 as well as records and row types (Pavel Stehule)
5134 Add a <literal>BY</> clause to the <literal>FOR</> loop,
5135 to control the iteration increment (Jaime Casanova)
5141 Add <literal>STRICT</> to <link
5142 linkend="plpgsql-statements-sql-onerow"><command>SELECT
5143 INTO</></link> (Matt Miller)
5147 <literal>STRICT</> mode throws an exception if more or less
5148 than one row is returned by the <command>SELECT</>, for
5149 <productname>Oracle PL/SQL</> compatibility.
5158 <title>PL/Perl Server-Side Language Changes</title>
5163 Add <literal>table_name</> and <literal>table_schema</> to
5164 trigger parameters (Adam Sjøgren)
5170 Add prepared queries (Dmitry Karasik)
5176 Make <literal>$_TD</> trigger data a global variable (Andrew)
5180 Previously, it was lexical, which caused unexpected sharing
5187 Run PL/Perl and PL/PerlU in separate interpreters, for security
5191 In consequence, they can no longer share data nor loaded modules.
5192 Also, if Perl has not been compiled with the requisite flags to
5193 allow multiple interpreters, only one of these languages can be used
5194 in any given backend process.
5203 <title>PL/Python Server-Side Language Changes</title>
5208 Named parameters are passed as ordinary variables, as well as in the
5209 <literal>args[]</> array (Sven Suursoho)
5215 Add <literal>table_name</> and <literal>table_schema</> to
5216 trigger parameters (Andrew)
5222 Allow returning of composite types and result sets (Sven Suursoho)
5228 Return result-set as <literal>list</>, <literal>iterator</>,
5229 or <literal>generator </>(Sven Suursoho)
5235 Allow functions to return <literal>void</> (Neil)
5241 Python 2.5 is now supported (Tom)
5250 <title><link linkend="APP-PSQL"><application>psql</></link> Changes</title>
5255 Add new command <literal>\password</> for changing role
5256 password with client-side password encryption (Peter)
5262 Allow <literal>\c</> to connect to a new host and port
5263 number (David, Volkan YAZICI)
5269 Add tablespace display to <literal>\l+</> (Philip Yarra)
5275 Improve <literal>\df</> slash command to include the argument
5276 names and modes (<literal>OUT</> or <literal>INOUT</>) of
5277 the function (David Fetter)
5283 Support binary <command>COPY</> (Andreas Pflug)
5289 Add option to run the entire session in a single transaction
5294 Use option <literal>-1</> or <literal>--single-transaction</>.
5300 Support for automatically retrieving <command>SELECT</>
5301 results in batches using a cursor (Chris Mair)
5305 This is enabled using <command>\set FETCH_COUNT
5306 <replaceable>n</></command>. This
5307 feature allows large result sets to be retrieved in
5308 <application>psql</> without attempting to buffer the entire
5309 result set in memory.
5315 Make multi-line values align in the proper column
5316 (Martijn van Oosterhout)
5320 Field values containing newlines are now displayed in a more
5327 Save multi-line statements as a single entry, rather than
5328 one line at a time (Sergey E. Koposov)
5332 This makes up-arrow recall of queries easier. (This is
5333 not available on Windows, because that platform uses the native
5334 command-line editing present in the operating system.)
5340 Make the line counter 64-bit so it can handle files with more
5341 than two billion lines (David Fetter)
5347 Report both the returned data and the command status tag
5348 for <command>INSERT</>/<command>UPDATE</>/<command>DELETE
5358 <title><link linkend="APP-PGDUMP"><application>pg_dump</></link> Changes</title>
5363 Allow complex selection of objects to be included or excluded
5364 by <application>pg_dump</> (Greg Sabino Mullane)
5368 <application>pg_dump</> now supports multiple <literal>-n</>
5369 (schema) and <literal>-t</> (table) options, and adds
5370 <literal>-N</> and <literal>-T</> options to exclude objects.
5371 Also, the arguments of these switches can now be wild-card expressions
5372 rather than single object names, for example
5373 <literal>-t 'foo*'</>, and a schema can be part of
5374 a <literal>-t</> or <literal>-T</> switch, for example
5375 <literal>-t schema1.table1</>.
5381 Add <link linkend="APP-PGRESTORE"><application>pg_restore</></link>
5382 <literal>--no-data-for-failed-tables</> option to suppress
5383 loading data if table creation failed (i.e., the table already
5384 exists) (Martin Pitt)
5390 Add <link linkend="APP-PGRESTORE"><application>pg_restore</></link>
5391 option to run the entire session in a single transaction
5396 Use option <literal>-1</> or <literal>--single-transaction</>.
5405 <title><link linkend="libpq"><application>libpq</></link> Changes</title>
5411 linkend="libpq-misc"><function>PQencryptPassword()</></link>
5412 to encrypt passwords (Tom)
5416 This allows passwords to be sent pre-encrypted for commands
5417 like <link linkend="SQL-ALTERROLE"><command>ALTER ROLE ...
5425 linkend="libpq-threading"><function>PQisthreadsafe()</></link>
5430 This allows applications to query the thread-safety status
5438 linkend="libpq-exec-main"><function>PQdescribePrepared()</></link>,
5440 linkend="libpq-exec-main"><function>PQdescribePortal()</></link>,
5441 and related functions to return information about previously
5442 prepared statements and open cursors (Volkan YAZICI)
5448 Allow <link linkend="libpq-ldap"><acronym>LDAP</></link> lookups
5450 linkend="libpq-pgservice"><filename>pg_service.conf</></link>
5457 Allow a hostname in <link
5458 linkend="libpq-pgpass"><filename>~/.pgpass</></link>
5459 to match the default socket directory (Bruce)
5463 A blank hostname continues to match any Unix-socket connection,
5464 but this addition allows entries that are specific to one of
5465 several postmasters on the machine.
5474 <title><link linkend="ecpg"><application>ecpg</></link> Changes</title>
5479 Allow <link linkend="SQL-SHOW"><command>SHOW</></link> to
5480 put its result into a variable (Joachim Wieland)
5486 Add <link linkend="SQL-COPY"><command>COPY TO STDOUT</></link>
5493 Add regression tests (Joachim Wieland, Michael)
5499 Major source code cleanups (Joachim Wieland, Michael)
5508 <title><application>Windows</> Port</title>
5513 Allow <acronym>MSVC</> to compile the <productname>PostgreSQL</>
5514 server (Magnus, Hiroshi Saito)
5520 Add <acronym>MSVC</> support for utility commands and <link
5521 linkend="APP-PGDUMP"><application>pg_dump</></link> (Hiroshi
5528 Add support for Windows code pages <literal>1253</>,
5529 <literal>1254</>, <literal>1255</>, and <literal>1257</>
5536 Drop privileges on startup, so that the server can be started from
5537 an administrative account (Magnus)
5543 Stability fixes (Qingqing Zhou, Magnus)
5549 Add native semaphore implementation (Qingqing Zhou)
5553 The previous code mimicked SysV semaphores.
5562 <title>Source Code Changes</title>
5567 Add <link linkend="GIN"><acronym>GIN</></link> (Generalized
5568 Inverted iNdex) index access method (Teodor, Oleg)
5574 Remove R-tree indexing (Tom)
5578 Rtree has been re-implemented using <link
5579 linkend="GiST"><acronym>GiST</></link>. Among other
5580 differences, this means that rtree indexes now have support
5581 for crash recovery via write-ahead logging (WAL).
5587 Reduce libraries needlessly linked into the backend (Martijn
5588 van Oosterhout, Tom)
5594 Add a configure flag to allow libedit to be preferred over
5595 <acronym>GNU</> readline (Bruce)
5600 linkend="configure"><literal>--with-libedit-preferred</></link>.
5606 Allow installation into directories containing spaces
5613 Improve ability to relocate installation directories (Tom)
5619 Add support for <productname>Solaris x86_64</> using the
5620 <productname>Solaris</> compiler (Pierre Girard, Theo
5621 Schlossnagle, Bruce)
5627 Add <application>DTrace</> support (Robert Lor)
5633 Add <literal>PG_VERSION_NUM</> for use by third-party
5634 applications wanting to test the backend version in C using >
5635 and < comparisons (Bruce)
5641 Add <literal>XLOG_BLCKSZ</> as independent from <literal>BLCKSZ</>
5648 Add <literal>LWLOCK_STATS</> define to report locking
5655 Emit warnings for unknown <application>configure</> options
5656 (Martijn van Oosterhout)
5662 Add server support for <quote>plugin</> libraries
5663 that can be used for add-on tasks such as debugging and performance
5664 measurement (Korry Douglas)
5668 This consists of two features: a table of <quote>rendezvous
5669 variables</> that allows separately-loaded shared libraries to
5670 communicate, and a new configuration parameter <link
5671 linkend="guc-local-preload-libraries"><varname>local_preload_libraries</></link>
5672 that allows libraries to be loaded into specific sessions without
5673 explicit cooperation from the client application. This allows
5674 external add-ons to implement features such as a PL/PgSQL debugger.
5680 Rename existing configuration parameter
5681 <varname>preload_libraries</> to <link
5682 linkend="guc-shared-preload-libraries"><varname>shared_preload_libraries</></link>
5687 This was done for clarity in comparison to
5688 <varname>local_preload_libraries</>.
5694 Add new configuration parameter <link
5695 linkend="guc-server-version-num"><varname>server_version_num</></link>
5696 (Greg Sabino Mullane)
5700 This is like <varname>server_version</varname>, but is an
5701 integer, e.g. <literal>80200</>. This allows applications to
5702 make version checks more easily.
5708 Add a configuration parameter <link
5709 linkend="guc-seq-page-cost"><varname>seq_page_cost</></link>
5716 Re-implement the <link linkend="regress">regression test</link> script as a C program
5723 Allow loadable modules to allocate shared memory and
5724 lightweight locks (Marc Munro)
5730 Add automatic initialization and finalization of dynamically
5731 loaded libraries (Ralf Engelschall, Tom)
5735 New <link linkend="xfunc-c-dynload">functions</link>
5736 <function>_PG_init()</> and <function>_PG_fini()</> are
5737 called if the library defines such symbols. Hence we no
5738 longer need to specify an initialization function in
5739 <varname>shared_preload_libraries</>; we can assume that
5740 the library used the <function>_PG_init()</> convention
5748 linkend="xfunc-c-dynload"><literal>PG_MODULE_MAGIC</></link>
5749 header block to all shared object files (Martijn van
5754 The magic block prevents version mismatches between loadable object
5761 Add shared library support for AIX (Laurenz Albe)
5767 New <link linkend="datatype-xml"><acronym>XML</></link>
5768 documentation section (Bruce)
5777 <title>Contrib Changes</title>
5782 Major tsearch2 improvements (Oleg, Teodor)
5789 multibyte encoding support, including <acronym>UTF8</>
5794 query rewriting support
5799 improved ranking functions
5804 thesaurus dictionary support
5809 Ispell dictionaries now recognize <application>MySpell</>
5810 format, used by <application>OpenOffice</>
5815 <acronym>GIN</> support
5825 Add adminpack module containing <application>Pgadmin</> administration
5830 These functions provide additional file system access
5831 routines not present in the default <productname>PostgreSQL</>
5838 Add sslinfo module (Victor Wagner)
5842 Reports information about the current connection's <acronym>SSL</>
5849 Add pgrowlocks module (Tatsuo)
5853 This shows row locking information for a specified table.
5859 Add hstore module (Oleg, Teodor)
5865 Add isn module, replacing isbn_issn (Jeremy Kronuz)
5869 This new implementation supports <acronym>EAN13</>, <acronym>UPC</>,
5870 <acronym>ISBN</> (books), <acronym>ISMN</> (music), and
5871 <acronym>ISSN</> (serials).
5877 Add index information functions to pgstattuple (ITAGAKI Takahiro,
5884 Add pg_freespacemap module to display free space map information
5891 pgcrypto now has all planned functionality (Marko Kreen)
5896 Include iMath library in pgcrypto to have the public-key encryption
5897 functions always available.
5902 Add SHA224 algorithm that was missing in OpenBSD code.
5907 Activate builtin code for SHA224/256/384/512 hashes on older
5908 OpenSSL to have those algorithms always available.
5913 New function gen_random_bytes() that returns cryptographically strong
5914 randomness. Useful for generating encryption keys.
5919 Remove digest_exists(), hmac_exists() and cipher_exists() functions.
5927 Improvements to cube module (Joshua Reich)
5931 New functions are <function>cube(float[])</>,
5932 <function>cube(float[], float[])</>, and
5933 <function>cube_subset(cube, int4[])</>.
5939 Add async query capability to dblink (Kai Londenberg,
5946 New operators for array-subset comparisons (<literal>@></>,
5947 <literal><@</>, <literal>&&</>) (Tom)
5951 Various contrib packages already had these operators for their
5952 datatypes, but the naming wasn't consistent. We have now added
5953 consistently named array-subset comparison operators to the core code
5954 and all the contrib packages that have such functionality.
5955 (The old names remain available, but are deprecated.)
5961 Add uninstall scripts for all contrib packages that have install
5962 scripts (David, Josh Drake)
5973 <sect1 id="release-8-1-10">
5974 <title>Release 8.1.10</title>
5977 <title>Release date</title>
5978 <simpara>2007-09-17</simpara>
5982 This release contains a variety of fixes from 8.1.9.
5986 <title>Migration to version 8.1.10</title>
5989 A dump/restore is not required for those running 8.1.X.
5990 However, if you are upgrading from a version earlier than 8.1.2,
5991 see the release notes for 8.1.2.
5997 <title>Changes</title>
6003 Prevent index corruption when a transaction inserts rows and
6004 then aborts close to the end of a concurrent <command>VACUUM</>
6005 on the same table (Tom)
6011 Make <command>CREATE DOMAIN ... DEFAULT NULL</> work properly (Tom)
6017 Allow the <type>interval</> data type to accept input consisting only of
6018 milliseconds or microseconds (Neil)
6024 Speed up rtree index insertion (Teodor)
6030 Fix excessive logging of <acronym>SSL</> error messages (Tom)
6036 Fix logging so that log messages are never interleaved when using
6037 the syslogger process (Andrew)
6043 Fix crash when <varname>log_min_error_statement</> logging runs out
6050 Fix incorrect handling of some foreign-key corner cases (Tom)
6056 Prevent <command>REINDEX</> and <command>CLUSTER</> from failing
6057 due to attempting to process temporary tables of other sessions (Alvaro)
6063 Update the time zone database rules, particularly New Zealand's upcoming changes (Tom)
6069 Windows socket improvements (Magnus)
6075 Suppress timezone name (<literal>%Z</>) in log timestamps on Windows
6076 because of possible encoding mismatches (Tom)
6082 Require non-superusers who use <filename>/contrib/dblink</> to use only
6083 password authentication, as a security measure (Joe)
6092 <sect1 id="release-8-1-9">
6093 <title>Release 8.1.9</title>
6096 <title>Release date</title>
6097 <simpara>2007-04-23</simpara>
6101 This release contains a variety of fixes from 8.1.8,
6102 including a security fix.
6106 <title>Migration to version 8.1.9</title>
6109 A dump/restore is not required for those running 8.1.X.
6110 However, if you are upgrading from a version earlier than 8.1.2,
6111 see the release notes for 8.1.2.
6117 <title>Changes</title>
6123 Support explicit placement of the temporary-table schema within
6124 <varname>search_path</>, and disable searching it for functions
6128 This is needed to allow a security-definer function to set a
6129 truly secure value of <varname>search_path</>. Without it,
6130 an unprivileged SQL user can use temporary objects to execute code
6131 with the privileges of the security-definer function (CVE-2007-2138).
6132 See <command>CREATE FUNCTION</> for more information.
6138 <filename>/contrib/tsearch2</> crash fixes (Teodor)
6144 Require <command>COMMIT PREPARED</> to be executed in the same
6145 database as the transaction was prepared in (Heikki)
6151 Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles
6152 <command>UPDATE</> chains (Tom, Pavan Deolasee)
6158 Planner fixes, including improving outer join and bitmap scan
6159 selection logic (Tom)
6165 Fix PANIC during enlargement of a hash index (bug introduced in 8.1.6)
6172 Fix POSIX-style timezone specs to follow new USA DST rules (Tom)
6181 <sect1 id="release-8-1-8">
6182 <title>Release 8.1.8</title>
6185 <title>Release date</title>
6186 <simpara>2007-02-07</simpara>
6190 This release contains one fix from 8.1.7.
6194 <title>Migration to version 8.1.8</title>
6197 A dump/restore is not required for those running 8.1.X.
6198 However, if you are upgrading from a version earlier than 8.1.2,
6199 see the release notes for 8.1.2.
6205 <title>Changes</title>
6211 Remove overly-restrictive check for type length in constraints and
6212 functional indexes(Tom)
6221 <sect1 id="release-8-1-7">
6222 <title>Release 8.1.7</title>
6225 <title>Release date</title>
6226 <simpara>2007-02-05</simpara>
6230 This release contains a variety of fixes from 8.1.6, including
6235 <title>Migration to version 8.1.7</title>
6238 A dump/restore is not required for those running 8.1.X.
6239 However, if you are upgrading from a version earlier than 8.1.2,
6240 see the release notes for 8.1.2.
6246 <title>Changes</title>
6252 Remove security vulnerabilities that allowed connected users
6253 to read backend memory (Tom)
6256 The vulnerabilities involve suppressing the normal check that a SQL
6257 function returns the data type it's declared to, and changing the
6258 data type of a table column (CVE-2007-0555, CVE-2007-0556). These
6259 errors can easily be exploited to cause a backend crash, and in
6260 principle might be used to read database content that the user
6261 should not be able to access.
6267 Fix rare bug wherein btree index page splits could fail
6268 due to choosing an infeasible split point (Heikki Linnakangas)
6274 Improve <command>VACUUM</> performance for databases with many tables (Tom)
6280 Fix autovacuum to avoid leaving non-permanent transaction IDs in
6281 non-connectable databases (Alvaro)
6285 This bug affects the 8.1 branch only.
6291 Fix for rare Assert() crash triggered by <literal>UNION</> (Tom)
6297 Tighten security of multi-byte character processing for UTF8 sequences
6298 over three bytes long (Tom)
6304 Fix bogus <quote>permission denied</> failures occurring on Windows
6305 due to attempts to fsync already-deleted files (Magnus, Tom)
6311 Fix possible crashes when an already-in-use PL/pgSQL function is
6321 <sect1 id="release-8-1-6">
6322 <title>Release 8.1.6</title>
6325 <title>Release date</title>
6326 <simpara>2007-01-08</simpara>
6330 This release contains a variety of fixes from 8.1.5.
6334 <title>Migration to version 8.1.6</title>
6337 A dump/restore is not required for those running 8.1.X.
6338 However, if you are upgrading from a version earlier than 8.1.2,
6339 see the release notes for 8.1.2.
6345 <title>Changes</title>
6351 Improve handling of <function>getaddrinfo()</> on AIX (Tom)
6355 This fixes a problem with starting the statistics collector,
6362 Fix <application>pg_restore</> to handle a tar-format backup
6363 that contains large objects (blobs) with comments (Tom)
6369 Fix <quote>failed to re-find parent key</> errors in
6370 <command>VACUUM</> (Tom)
6376 Clean out <filename>pg_internal.init</> cache files during server
6381 This avoids a hazard that the cache files might contain stale
6382 data after PITR recovery.
6388 Fix race condition for truncation of a large relation across a
6389 gigabyte boundary by <command>VACUUM</> (Tom)
6395 Fix bug causing needless deadlock errors on row-level locks (Tom)
6401 Fix bugs affecting multi-gigabyte hash indexes (Tom)
6407 Fix possible deadlock in Windows signal handling (Teodor)
6413 Fix error when constructing an <literal>ARRAY[]</> made up of multiple
6414 empty elements (Tom)
6420 Fix ecpg memory leak during connection (Michael)
6426 Fix for Darwin (OS X) compilation (Tom)
6432 <function>to_number()</> and <function>to_char(numeric)</>
6433 are now <literal>STABLE</>, not <literal>IMMUTABLE</>, for
6434 new <application>initdb</> installs (Tom)
6438 This is because <varname>lc_numeric</> can potentially
6439 change the output of these functions.
6445 Improve index usage of regular expressions that use parentheses (Tom)
6449 This improves <application>psql</> <literal>\d</> performance also.
6455 Update timezone database
6459 This affects Australian and Canadian daylight-savings rules in
6469 <sect1 id="release-8-1-5">
6470 <title>Release 8.1.5</title>
6473 <title>Release date</title>
6474 <simpara>2006-10-16</simpara>
6478 This release contains a variety of fixes from 8.1.4.
6482 <title>Migration to version 8.1.5</title>
6485 A dump/restore is not required for those running 8.1.X.
6486 However, if you are upgrading from a version earlier than 8.1.2,
6487 see the release notes for 8.1.2.
6493 <title>Changes</title>
6496 <listitem><para>Disallow aggregate functions in <command>UPDATE</>
6497 commands, except within sub-SELECTs (Tom)</para>
6498 <para>The behavior of such an aggregate was unpredictable, and in 8.1.X
6499 could cause a crash, so it has been disabled. The SQL standard does not allow
6500 this either.</para></listitem>
6501 <listitem><para>Fix core dump when an untyped literal is taken as
6502 ANYARRAY</para></listitem>
6503 <listitem><para>Fix core dump in duration logging for extended query protocol
6504 when a <command>COMMIT</> or <command>ROLLBACK</> is
6505 executed</para></listitem>
6506 <listitem><para>Fix mishandling of AFTER triggers when query contains a SQL
6507 function returning multiple rows (Tom)</para></listitem>
6508 <listitem><para>Fix <command>ALTER TABLE ... TYPE</> to recheck
6509 <literal>NOT NULL</> for <literal>USING</> clause (Tom)</para></listitem>
6510 <listitem><para>Fix <function>string_to_array()</> to handle overlapping
6511 matches for the separator string</para>
6512 <para>For example, <literal>string_to_array('123xx456xxx789', 'xx')</>.
6514 <listitem><para>Fix <function>to_timestamp()</> for
6515 <literal>AM</>/<literal>PM</> formats (Bruce)</para></listitem>
6516 <listitem><para>Fix autovacuum's calculation that decides whether
6517 <command>ANALYZE</> is needed (Alvaro)</para></listitem>
6518 <listitem><para>Fix corner cases in pattern matching for
6519 <application>psql</>'s <literal>\d</> commands</para></listitem>
6520 <listitem><para>Fix index-corrupting bugs in /contrib/ltree
6521 (Teodor)</para></listitem>
6522 <listitem><para>Numerous robustness fixes in <application>ecpg</> (Joachim
6523 Wieland)</para></listitem>
6524 <listitem><para>Fix backslash escaping in /contrib/dbmirror</para></listitem>
6525 <listitem><para>Minor fixes in /contrib/dblink and /contrib/tsearch2</para>
6527 <listitem><para>Efficiency improvements in hash tables and bitmap index scans
6528 (Tom)</para></listitem>
6529 <listitem><para>Fix instability of statistics collection on Windows (Tom, Andrew)</para></listitem>
6530 <listitem><para>Fix <varname>statement_timeout</> to use the proper
6531 units on Win32 (Bruce)</para>
6532 <para>In previous Win32 8.1.X versions, the delay was off by a factor of
6533 100.</para></listitem>
6534 <listitem><para>Fixes for <acronym>MSVC</> and <productname>Borland C++</>
6535 compilers (Hiroshi Saito)</para></listitem>
6536 <listitem><para>Fixes for <systemitem class="osname">AIX</> and
6537 <productname>Intel</> compilers (Tom)</para></listitem>
6538 <listitem><para>Fix rare bug in continuous archiving (Tom)</para></listitem>
6544 <sect1 id="release-8-1-4">
6545 <title>Release 8.1.4</title>
6548 <title>Release date</title>
6549 <simpara>2006-05-23</simpara>
6553 This release contains a variety of fixes from 8.1.3,
6554 including patches for extremely serious security issues.
6558 <title>Migration to version 8.1.4</title>
6561 A dump/restore is not required for those running 8.1.X.
6562 However, if you are upgrading from a version earlier than 8.1.2,
6563 see the release notes for 8.1.2.
6567 Full security against the SQL-injection attacks described in
6568 CVE-2006-2313 and CVE-2006-2314 might require changes in application
6569 code. If you have applications that embed untrustworthy strings
6570 into SQL commands, you should examine them as soon as possible to
6571 ensure that they are using recommended escaping techniques. In
6572 most cases, applications should be using subroutines provided by
6573 libraries or drivers (such as <application>libpq</>'s
6574 <function>PQescapeStringConn()</>) to perform string escaping,
6575 rather than relying on <foreignphrase>ad hoc</> code to do it.
6580 <title>Changes</title>
6583 <listitem><para>Change the server to reject invalidly-encoded multibyte
6584 characters in all cases (Tatsuo, Tom)</para>
6585 <para>While <productname>PostgreSQL</> has been moving in this direction for
6586 some time, the checks are now applied uniformly to all encodings and all
6587 textual input, and are now always errors not merely warnings. This change
6588 defends against SQL-injection attacks of the type described in CVE-2006-2313.
6591 <listitem><para>Reject unsafe uses of <literal>\'</> in string literals</para>
6592 <para>As a server-side defense against SQL-injection attacks of the type
6593 described in CVE-2006-2314, the server now only accepts <literal>''</> and not
6594 <literal>\'</> as a representation of ASCII single quote in SQL string
6595 literals. By default, <literal>\'</> is rejected only when
6596 <varname>client_encoding</> is set to a client-only encoding (SJIS, BIG5, GBK,
6597 GB18030, or UHC), which is the scenario in which SQL injection is possible.
6598 A new configuration parameter <varname>backslash_quote</> is available to
6599 adjust this behavior when needed. Note that full security against
6600 CVE-2006-2314 might require client-side changes; the purpose of
6601 <varname>backslash_quote</> is in part to make it obvious that insecure
6602 clients are insecure.
6605 <listitem><para>Modify <application>libpq</>'s string-escaping routines to be
6606 aware of encoding considerations and
6607 <varname>standard_conforming_strings</></para>
6608 <para>This fixes <application>libpq</>-using applications for the security
6609 issues described in CVE-2006-2313 and CVE-2006-2314, and also future-proofs
6610 them against the planned changeover to SQL-standard string literal syntax.
6611 Applications that use multiple <productname>PostgreSQL</> connections
6612 concurrently should migrate to <function>PQescapeStringConn()</> and
6613 <function>PQescapeByteaConn()</> to ensure that escaping is done correctly
6614 for the settings in use in each database connection. Applications that
6615 do string escaping <quote>by hand</> should be modified to rely on library
6619 <listitem><para>Fix weak key selection in pgcrypto (Marko Kreen)</para>
6620 <para>Errors in fortuna PRNG reseeding logic could cause a predictable
6621 session key to be selected by <function>pgp_sym_encrypt()</> in some cases.
6622 This only affects non-OpenSSL-using builds.
6625 <listitem><para>Fix some incorrect encoding conversion functions</para>
6626 <para><function>win1251_to_iso</>, <function>win866_to_iso</>,
6627 <function>euc_tw_to_big5</>, <function>euc_tw_to_mic</>,
6628 <function>mic_to_euc_tw</> were all broken to varying
6632 <listitem><para>Clean up stray remaining uses of <literal>\'</> in strings
6633 (Bruce, Jan)</para></listitem>
6635 <listitem><para>Make autovacuum visible in <structname>pg_stat_activity</>
6636 (Alvaro)</para></listitem>
6638 <listitem><para>Disable <literal>full_page_writes</> (Tom)</para>
6639 <para>In certain cases, having <literal>full_page_writes</> off would cause
6640 crash recovery to fail. A proper fix will appear in 8.2; for now it's just
6644 <listitem><para>Various planner fixes, particularly for bitmap index scans and
6645 MIN/MAX optimization (Tom)</para></listitem>
6647 <listitem><para>Fix incorrect optimization in merge join (Tom)</para>
6648 <para>Outer joins could sometimes emit multiple copies of unmatched rows.
6651 <listitem><para>Fix crash from using and modifying a plpgsql function in the
6652 same transaction</para></listitem>
6654 <listitem><para>Fix WAL replay for case where a B-Tree index has been
6655 truncated</para></listitem>
6657 <listitem><para>Fix <literal>SIMILAR TO</> for patterns involving
6658 <literal>|</> (Tom)</para></listitem>
6660 <listitem><para>Fix <command>SELECT INTO</> and <command>CREATE TABLE AS</> to
6661 create tables in the default tablespace, not the base directory (Kris
6662 Jurka)</para></listitem>
6664 <listitem><para>Fix server to use custom DH SSL parameters correctly (Michael
6665 Fuhr)</para></listitem>
6667 <listitem><para>Improve qsort performance (Dann Corbit)</para>
6668 <para>Currently this code is only used on Solaris.
6671 <listitem><para>Fix for OS/X Bonjour on x86 systems (Ashley Clark)</para></listitem>
6673 <listitem><para>Fix various minor memory leaks</para></listitem>
6675 <listitem><para>Fix problem with password prompting on some Win32 systems
6676 (Robert Kinberg)</para></listitem>
6678 <listitem><para>Improve <application>pg_dump</>'s handling of default values
6679 for domains</para></listitem>
6681 <listitem><para>Fix <application>pg_dumpall</> to handle identically-named
6682 users and groups reasonably (only possible when dumping from a pre-8.1 server)
6684 <para>The user and group will be merged into a single role with
6685 <literal>LOGIN</> permission. Formerly the merged role wouldn't have
6686 <literal>LOGIN</> permission, making it unusable as a user.
6689 <listitem><para>Fix <application>pg_restore</> <literal>-n</> to work as
6690 documented (Tom)</para></listitem>
6696 <sect1 id="release-8-1-3">
6697 <title>Release 8.1.3</title>
6700 <title>Release date</title>
6701 <simpara>2006-02-14</simpara>
6705 This release contains a variety of fixes from 8.1.2,
6706 including one very serious security issue.
6710 <title>Migration to version 8.1.3</title>
6713 A dump/restore is not required for those running 8.1.X.
6714 However, if you are upgrading from a version earlier than 8.1.2,
6715 see the release notes for 8.1.2.
6720 <title>Changes</title>
6724 <listitem><para>Fix bug that allowed any logged-in user to <command>SET
6725 ROLE</> to any other database user id (CVE-2006-0553)</para>
6726 <para>Due to inadequate validity checking, a user could exploit the special
6727 case that <command>SET ROLE</> normally uses to restore the previous role
6728 setting after an error. This allowed ordinary users to acquire superuser
6729 status, for example.
6730 The escalation-of-privilege risk exists only in 8.1.0-8.1.2.
6731 However, in all releases back to 7.3 there is a related bug in <command>SET
6732 SESSION AUTHORIZATION</> that allows unprivileged users to crash the server,
6733 if it has been compiled with Asserts enabled (which is not the default).
6734 Thanks to Akio Ishida for reporting this problem.
6737 <listitem><para>Fix bug with row visibility logic in self-inserted
6739 <para>Under rare circumstances a row inserted by the current command
6740 could be seen as already valid, when it should not be. Repairs bug
6741 created in 8.0.4, 7.4.9, and 7.3.11 releases.
6744 <listitem><para>Fix race condition that could lead to <quote>file already
6745 exists</> errors during pg_clog and pg_subtrans file creation
6746 (Tom)</para></listitem>
6748 <listitem><para>Fix cases that could lead to crashes if a cache-invalidation
6749 message arrives at just the wrong time (Tom)</para></listitem>
6751 <listitem><para>Properly check <literal>DOMAIN</> constraints for
6752 <literal>UNKNOWN</> parameters in prepared statements
6753 (Neil)</para></listitem>
6755 <listitem><para>Ensure <command>ALTER COLUMN TYPE</> will process
6756 <literal>FOREIGN KEY</>, <literal>UNIQUE</>, and <literal>PRIMARY KEY</>
6757 constraints in the proper order (Nakano Yoshihisa)</para></listitem>
6759 <listitem><para>Fixes to allow restoring dumps that have cross-schema
6760 references to custom operators or operator classes (Tom)</para></listitem>
6762 <listitem><para>Allow <application>pg_restore</> to continue properly after a
6763 <command>COPY</> failure; formerly it tried to treat the remaining
6764 <command>COPY</> data as SQL commands (Stephen Frost)</para></listitem>
6766 <listitem><para>Fix <application>pg_ctl</> <literal>unregister</> crash
6767 when the data directory is not specified (Magnus)</para></listitem>
6769 <listitem><para>Fix <application>libpq</> <function>PQprint</> HTML tags
6770 (Christoph Zwerschke)</para></listitem>
6772 <listitem><para>Fix <application>ecpg</> crash on AMD64 and PPC
6773 (Neil)</para></listitem>
6775 <listitem><para>Allow <literal>SETOF</> and <literal>%TYPE</> to be used
6776 together in function result type declarations</para></listitem>
6778 <listitem><para>Recover properly if error occurs during argument passing
6779 in <application>PL/python</> (Neil)</para></listitem>
6781 <listitem><para>Fix memory leak in <function>plperl_return_next</>
6782 (Neil)</para></listitem>
6784 <listitem><para>Fix <application>PL/perl</>'s handling of locales on
6785 Win32 to match the backend (Andrew)</para></listitem>
6787 <listitem><para>Various optimizer fixes (Tom)</para></listitem>
6789 <listitem><para>Fix crash when <literal>log_min_messages</> is set to
6790 <literal>DEBUG3</> or above in <filename>postgresql.conf</> on Win32
6791 (Bruce)</para></listitem>
6793 <listitem><para>Fix <application>pgxs</> <literal>-L</> library path
6794 specification for Win32, Cygwin, OS X, AIX (Bruce)</para></listitem>
6796 <listitem><para>Check that SID is enabled while checking for Win32 admin
6797 privileges (Magnus)</para></listitem>
6799 <listitem><para>Properly reject out-of-range date inputs (Kris
6800 Jurka)</para></listitem>
6802 <listitem><para>Portability fix for testing presence of <function>finite</>
6803 and <function>isinf</> during configure (Tom)</para></listitem>
6805 <listitem><para>Improve speed of <command>COPY IN</> via libpq, by
6806 avoiding a kernel call per data line (Alon Goldshuv)</para></listitem>
6808 <listitem><para>Improve speed of <filename>/contrib/tsearch2</> index
6809 creation (Tom)</para></listitem>
6816 <sect1 id="release-8-1-2">
6817 <title>Release 8.1.2</title>
6820 <title>Release date</title>
6821 <simpara>2006-01-09</simpara>
6825 This release contains a variety of fixes from 8.1.1.
6829 <title>Migration to version 8.1.2</title>
6832 A dump/restore is not required for those running 8.1.X.
6833 However, you might need to <command>REINDEX</> indexes on textual
6834 columns after updating, if you are affected by the locale or
6835 <application>plperl</> issues described below.
6840 <title>Changes</title>
6844 <listitem><para>Fix Windows code so that postmaster will continue rather
6845 than exit if there is no more room in ShmemBackendArray (Magnus)</para>
6846 <para>The previous behavior could lead to a denial-of-service situation if too
6847 many connection requests arrive close together. This applies
6848 <emphasis>only</> to the Windows port.</para></listitem>
6850 <listitem><para>Fix bug introduced in 8.0 that could allow ReadBuffer
6851 to return an already-used page as new, potentially causing loss of
6852 recently-committed data (Tom)</para></listitem>
6854 <listitem><para>Fix for protocol-level Describe messages issued
6855 outside a transaction or in a failed transaction (Tom)</para></listitem>
6857 <listitem><para>Fix character string comparison for locales that consider
6858 different character combinations as equal, such as Hungarian (Tom)</para>
6859 <para>This might require <command>REINDEX</> to fix existing indexes on
6860 textual columns.</para></listitem>
6862 <listitem><para>Set locale environment variables during postmaster startup
6863 to ensure that <application>plperl</> won't change the locale later</para>
6864 <para>This fixes a problem that occurred if the <application>postmaster</> was
6865 started with environment variables specifying a different locale than what
6866 <application>initdb</> had been told. Under these conditions, any use of
6867 <application>plperl</> was likely to lead to corrupt indexes. You might need
6868 <command>REINDEX</> to fix existing indexes on
6869 textual columns if this has happened to you.</para></listitem>
6871 <listitem><para>Allow more flexible relocation of installation
6872 directories (Tom)</para>
6873 <para>Previous releases supported relocation only if all installation
6874 directory paths were the same except for the last component.</para></listitem>
6876 <listitem><para>Prevent crashes caused by the use of
6877 <literal>ISO-8859-5</> and <literal>ISO-8859-9</> encodings
6878 (Tatsuo)</para></listitem>
6880 <listitem><para>Fix longstanding bug in strpos() and regular expression
6881 handling in certain rarely used Asian multi-byte character sets (Tatsuo)
6884 <listitem><para>Fix bug where COPY CSV mode considered any
6885 <literal>\.</> to terminate the copy data</para> <para>The new code
6886 requires <literal>\.</> to appear alone on a line, as per
6887 documentation.</para></listitem>
6889 <listitem><para>Make COPY CSV mode quote a literal data value of
6890 <literal>\.</> to ensure it cannot be interpreted as the
6891 end-of-data marker (Bruce)</para></listitem>
6893 <listitem><para>Various fixes for functions returning <literal>RECORD</>s
6894 (Tom) </para></listitem>
6896 <listitem><para>Fix processing of <filename>postgresql.conf</> so a
6897 final line with no newline is processed properly (Tom)
6900 <listitem><para>Fix bug in <filename>/contrib/pgcrypto</> gen_salt,
6901 which caused it not to use all available salt space for MD5 and
6902 XDES algorithms (Marko Kreen, Solar Designer)</para>
6903 <para>Salts for Blowfish and standard DES are unaffected.</para></listitem>
6905 <listitem><para>Fix autovacuum crash when processing expression indexes
6908 <listitem><para>Fix <filename>/contrib/dblink</> to throw an error,
6909 rather than crashing, when the number of columns specified is different from
6910 what's actually returned by the query (Joe)</para></listitem>
6917 <sect1 id="release-8-1-1">
6918 <title>Release 8.1.1</title>
6921 <title>Release date</title>
6922 <simpara>2005-12-12</simpara>
6926 This release contains a variety of fixes from 8.1.0.
6930 <title>Migration to version 8.1.1</title>
6933 A dump/restore is not required for those running 8.1.X.
6938 <title>Changes</title>
6941 <listitem><para>Fix incorrect optimizations of outer-join conditions
6942 (Tom)</para></listitem>
6944 <listitem><para>Fix problems with wrong reported column names in cases
6945 involving sub-selects flattened by the optimizer (Tom)</para></listitem>
6947 <listitem><para>Fix update failures in scenarios involving CHECK constraints,
6948 toasted columns, <emphasis>and</> indexes (Tom)</para></listitem>
6950 <listitem><para>Fix bgwriter problems after recovering from errors
6953 The background writer was found to leak buffer pins after write errors.
6954 While not fatal in itself, this might lead to mysterious blockages of
6955 later VACUUM commands.
6959 <listitem><para>Prevent failure if client sends Bind protocol message
6960 when current transaction is already aborted</para></listitem>
6962 <listitem><para><filename>/contrib/tsearch2</> and <filename>/contrib/ltree</>
6963 fixes (Teodor)</para></listitem>
6965 <listitem><para>Fix problems with translated error messages in
6966 languages that require word reordering, such as Turkish; also problems with
6967 unexpected truncation of output strings and wrong display of the smallest
6968 possible bigint value (Andrew, Tom)</para>
6970 These problems only appeared on platforms that were using our
6971 <filename>port/snprintf.c</> code, which includes BSD variants if
6972 <literal>--enable-nls</> was given, and perhaps others. In addition,
6973 a different form of the translated-error-message problem could appear
6974 on Windows depending on which version of <filename>libintl</> was used.
6977 <listitem><para>Re-allow <literal>AM</>/<literal>PM</>, <literal>HH</>,
6978 <literal>HH12</>, and <literal>D</> format specifiers for
6979 <function>to_char(time)</> and <function>to_char(interval)</>.
6980 (<function>to_char(interval)</> should probably use
6981 <literal>HH24</>.) (Bruce)</para></listitem>
6983 <listitem><para>AIX, HPUX, and MSVC compile fixes (Tom, Hiroshi
6984 Saito)</para></listitem>
6986 <listitem><para>Optimizer improvements (Tom)</para></listitem>
6988 <listitem><para>Retry file reads and writes after Windows
6989 NO_SYSTEM_RESOURCES error (Qingqing Zhou)</para></listitem>
6991 <listitem><para>Prevent <application>autovacuum</> from crashing during
6992 ANALYZE of expression index (Alvaro)</para></listitem>
6994 <listitem><para>Fix problems with ON COMMIT DELETE ROWS temp
6995 tables</para></listitem>
6997 <listitem><para>Fix problems when a trigger alters the output of a SELECT
6998 DISTINCT query</para></listitem>
7000 <listitem><para>Add 8.1.0 release note item on how to migrate invalid
7001 <literal>UTF-8</> byte sequences (Paul Lindner)</para></listitem>
7007 <sect1 id="release-8-1">
7008 <title>Release 8.1</title>
7011 <title>Release date</title>
7012 <simpara>2005-11-08</simpara>
7016 <title>Overview</title>
7019 Major changes in this release:
7026 Improve concurrent access to the shared buffer cache (Tom)
7031 Access to the shared buffer cache was identified as a
7032 significant scalability problem, particularly on multi-CPU
7033 systems. In this release, the way that locking is done in the
7034 buffer manager has been overhauled to reduce lock contention
7035 and improve scalability. The buffer manager has also been
7036 changed to use a <quote>clock sweep</quote> replacement
7044 Allow index scans to use an intermediate in-memory bitmap (Tom)
7049 In previous releases, only a single index could be used to do
7050 lookups on a table. With this feature, if a query has
7051 <command>WHERE tab.col1 = 4 and tab.col2 = 9</>, and there is
7052 no multicolumn index on <literal>col1</> and <literal>col2</>,
7053 but there is an index on <literal>col1</> and another on
7054 <literal>col2</>, it is possible to search both indexes and
7055 combine the results in memory, then do heap fetches for only
7056 the rows matching both the <literal>col1</> and
7057 <literal>col2</> restrictions. This is very useful in
7058 environments that have a lot of unstructured queries where it
7059 is impossible to create indexes that match all possible access
7060 conditions. Bitmap scans are useful even with a single index,
7061 as they reduce the amount of random access needed; a bitmap
7062 index scan is efficient for retrieving fairly large fractions
7063 of the complete table, whereas plain index scans are not.
7070 Add two-phase commit (Heikki Linnakangas, Alvaro, Tom)
7075 Two-phase commit allows transactions to be "prepared" on several
7076 computers, and once all computers have successfully prepared
7077 their transactions (none failed), all transactions can be
7078 committed. Even if a machine crashes after a prepare, the
7079 prepared transaction can be committed after the machine is
7080 restarted. New syntax includes <command>PREPARE TRANSACTION</> and
7081 <command>COMMIT/ROLLBACK PREPARED</>. A new system view
7082 <literal>pg_prepared_xacts</> has also been added.
7089 Create a new role system that replaces users and groups
7095 Roles are a combination of users and groups. Like users, they
7096 can have login capability, and like groups, a role can have
7097 other roles as members. Roles basically remove the distinction
7098 between users and groups. For example, a role can:
7105 Have login capability (optionally)
7117 Hold access permissions for database objects
7123 Inherit permissions from other roles it is a member of
7129 Once a user logs into a role, she obtains capabilities of
7130 the login role plus any inherited roles, and can use
7131 <command>SET ROLE</> to switch to other roles she is a member of.
7132 This feature is a generalization of the SQL standard's concept of
7134 This change also replaces <structname>pg_shadow</> and
7135 <structname>pg_group</> by new role-capable catalogs
7136 <structname>pg_authid</> and <structname>pg_auth_members</>. The old
7137 tables are redefined as read-only views on the new role tables.
7144 Automatically use indexes for <function>MIN()</> and
7145 <function>MAX()</> (Tom)
7150 In previous releases, the only way to use an index for
7151 <function>MIN()</> or <function>MAX()</> was to rewrite the
7152 query as <command>SELECT col FROM tab ORDER BY col LIMIT 1</>.
7153 Index usage now happens automatically.
7160 Move <filename>/contrib/pg_autovacuum</> into the main server
7166 Integrating autovacuum into the server allows it to be
7167 automatically started and stopped in sync with the database
7168 server, and allows autovacuum to be configured from
7169 <filename>postgresql.conf</>.
7176 Add shared row level locks using <command>SELECT ... FOR SHARE</>
7182 While <productname>PostgreSQL</productname>'s MVCC locking
7183 allows <command>SELECT</> to never be blocked by writers and
7184 therefore does not need shared row locks for typical operations,
7185 shared locks are useful for applications that require shared row
7186 locking. In particular this reduces the locking requirements
7187 imposed by referential integrity checks.
7194 Add dependencies on shared objects, specifically roles
7200 This extension of the dependency mechanism prevents roles from
7201 being dropped while there are still database objects they own.
7202 Formerly it was possible to accidentally <quote>orphan</> objects by
7203 deleting their owner. While this could be recovered from, it
7204 was messy and unpleasant.
7211 Improve performance for partitioned tables (Simon)
7216 The new <varname>constraint_exclusion</varname> configuration
7217 parameter avoids lookups on child tables where constraints indicate
7218 that no matching rows exist in the child table.
7221 This allows for a basic type of table partitioning. If child tables
7222 store separate key ranges and this is enforced using appropriate
7223 <command>CHECK</> constraints, the optimizer will skip child
7224 table accesses when the constraint guarantees no matching rows
7225 exist in the child table.
7234 <title>Migration to version 8.1</title>
7237 A dump/restore using <application>pg_dump</application> is required
7238 for those wishing to migrate data from any previous release.
7242 The 8.0 release announced that the <function>to_char()</> function
7243 for intervals would be removed in 8.1. However, since no better API
7244 has been suggested, <function>to_char(interval)</> has been enhanced in
7245 8.1 and will remain in the server.
7249 Observe the following incompatibilities:
7256 <varname>add_missing_from</> is now false by default (Neil)
7259 By default, we now generate an error if a table is used in a query
7260 without a <literal>FROM</> reference. The old behavior is still
7261 available, but the parameter must be set to 'true' to obtain it.
7265 It might be necessary to set <varname>add_missing_from</> to true
7266 in order to load an existing dump file, if the dump contains any
7267 views or rules created using the implicit-<literal>FROM</> syntax.
7268 This should be a one-time annoyance, because
7269 <productname>PostgreSQL</productname> 8.1 will convert
7270 such views and rules to standard explicit-<literal>FROM</> syntax.
7271 Subsequent dumps will therefore not have the problem.
7277 Cause input of a zero-length string (<literal>''</literal>) for
7278 <type>float4</type>/<type>float8</type>/<type>oid</type>
7279 to throw an error, rather than treating it as a zero (Neil)
7282 This change is consistent with the current handling of
7283 zero-length strings for integers. The schedule for this change
7284 was announced in 8.0.
7290 <varname>default_with_oids</> is now false by default (Neil)
7293 With this option set to false, user-created tables no longer
7294 have an OID column unless <command>WITH OIDS</> is specified in
7295 <command>CREATE TABLE</>. Though OIDs have existed in all
7296 releases of <productname>PostgreSQL</>, their use is limited
7297 because they are only four bytes long and the counter is shared
7298 across all installed databases. The preferred way of uniquely
7299 identifying rows is via sequences and the <type>SERIAL</> type,
7300 which have been supported since <productname>PostgreSQL</> 6.4.
7306 Add <literal>E''</> syntax so eventually ordinary strings can
7307 treat backslashes literally (Bruce)
7310 Currently <productname>PostgreSQL</productname> processes a
7311 backslash in a string literal as introducing a special escape sequence,
7312 e.g. <literal>\n</> or <literal>\010</>.
7313 While this allows easy entry of special values, it is
7314 nonstandard and makes porting of applications from other
7315 databases more difficult. For this reason, the
7316 <productname>PostgreSQL</productname> project is planning to
7317 remove the special meaning of backslashes in strings. For
7318 backward compatibility and for users who want special backslash
7319 processing, a new string syntax has been created. This new string
7320 syntax is formed by writing an <literal>E</> immediately preceding the
7321 single quote that starts the string, e.g. <literal>E'hi\n'</>. While
7322 this release does not change the handling of backslashes in strings, it
7323 does add new configuration parameters to help users migrate applications
7324 for future releases:
7330 <varname>standard_conforming_strings</> — does this release
7331 treat backslashes literally in ordinary strings?
7337 <varname>escape_string_warning</> — warn about backslashes in
7338 ordinary (non-E) strings
7345 The <varname>standard_conforming_strings</> value is read-only.
7346 Applications can retrieve the value to know how backslashes are
7347 processed. (Presence of the parameter can also be taken as an
7348 indication that <literal>E''</> string syntax is supported.)
7349 In a future release, <varname>standard_conforming_strings</>
7350 will be true, meaning backslashes will be treated literally in
7351 non-E strings. To prepare for this change, use <literal>E''</>
7352 strings in places that need special backslash processing, and
7353 turn on <varname>escape_string_warning</> to find additional
7354 strings that need to be converted to use <literal>E''</>.
7355 Also, use two single-quotes (<literal>''</>) to embed a literal
7356 single-quote in a string, rather than the
7357 <productname>PostgreSQL</productname>-supported syntax of
7358 backslash single-quote (<literal>\'</>). The former is
7359 standards-conforming and does not require the use of the
7360 <literal>E''</> string syntax. You can also use the
7361 <literal>$$</> string syntax, which does not treat backslashes
7368 Make <command>REINDEX DATABASE</> reindex all indexes in the
7372 Formerly, <command>REINDEX DATABASE</> reindexed only
7373 system tables. This new behavior seems more intuitive. A new
7374 command <command>REINDEX SYSTEM</> provides the old functionality
7375 of reindexing just the system tables.
7381 Read-only large object descriptors now obey MVCC snapshot semantics
7384 When a large object is opened with <literal>INV_READ</> (and not
7385 <literal>INV_WRITE</>), the data read from the descriptor will now
7386 reflect a <quote>snapshot</> of the large object's state at the
7387 time of the transaction snapshot in use by the query that called
7388 <function>lo_open()</>. To obtain the old behavior of always
7389 returning the latest committed data, include <literal>INV_WRITE</>
7390 in the mode flags for <function>lo_open()</>.
7396 Add proper dependencies for arguments of sequence functions (Tom)
7399 In previous releases, sequence names passed to <function>nextval()</>,
7400 <function>currval()</>, and <function>setval()</> were stored as
7401 simple text strings, meaning that renaming or dropping a
7402 sequence used in a <literal>DEFAULT</> clause made the clause
7403 invalid. This release stores all newly-created sequence function
7404 arguments as internal OIDs, allowing them to track sequence
7405 renaming, and adding dependency information that prevents
7406 improper sequence removal. It also makes such <literal>DEFAULT</>
7407 clauses immune to schema renaming and search path changes.
7410 Some applications might rely on the old behavior of
7411 run-time lookup for sequence names. This can still be done by
7412 explicitly casting the argument to <type>text</>, for example
7413 <literal>nextval('myseq'::text)</>.
7416 Pre-8.1 database dumps loaded into 8.1 will use the old text-based
7417 representation and therefore will not have the features of
7418 OID-stored arguments. However, it is possible to update a
7419 database containing text-based <literal>DEFAULT</> clauses.
7420 First, save this query into a file, such as <filename>fixseq.sql</>:
7422 SELECT 'ALTER TABLE ' ||
7423 pg_catalog.quote_ident(n.nspname) || '.' ||
7424 pg_catalog.quote_ident(c.relname) ||
7425 ' ALTER COLUMN ' || pg_catalog.quote_ident(a.attname) ||
7427 regexp_replace(d.adsrc,
7428 $$val\(\(('[^']*')::text\)::regclass$$,
7432 FROM pg_namespace n, pg_class c, pg_attribute a, pg_attrdef d
7433 WHERE n.oid = c.relnamespace AND
7434 c.oid = a.attrelid AND
7435 a.attrelid = d.adrelid AND
7436 a.attnum = d.adnum AND
7437 d.adsrc ~ $$val\(\('[^']*'::text\)::regclass$$;
7439 Next, run the query against a database to find what
7440 adjustments are required, like this for database <literal>db1</>:
7442 psql -t -f fixseq.sql db1
7444 This will show the <command>ALTER TABLE</> commands needed to
7445 convert the database to the newer OID-based representation.
7446 If the commands look reasonable, run this to update the database:
7448 psql -t -f fixseq.sql db1 | psql -e db1
7450 This process must be repeated in each database to be updated.
7456 In <application>psql</application>, treat unquoted
7457 <literal>\{digit}+</> sequences as octal (Bruce)
7460 In previous releases, <literal>\{digit}+</> sequences were
7461 treated as decimal, and only <literal>\0{digit}+</> were treated
7462 as octal. This change was made for consistency.
7468 Remove grammar productions for prefix and postfix <literal>%</>
7469 and <literal>^</> operators
7473 These have never been documented and complicated the use of the
7474 modulus operator (<literal>%</>) with negative numbers.
7480 Make <literal>&<</> and <literal>&></> for polygons
7481 consistent with the box "over" operators (Tom)
7487 <command>CREATE LANGUAGE</> can ignore the provided arguments
7488 in favor of information from <structname>pg_pltemplate</>
7492 A new system catalog <structname>pg_pltemplate</> has been defined
7493 to carry information about the preferred definitions of procedural
7494 languages (such as whether they have validator functions). When
7495 an entry exists in this catalog for the language being created,
7496 <command>CREATE LANGUAGE</> will ignore all its parameters except the
7497 language name and instead use the catalog information. This measure
7498 was taken because of increasing problems with obsolete language
7499 definitions being loaded by old dump files. As of 8.1,
7500 <application>pg_dump</> will dump procedural language definitions as
7501 just <command>CREATE LANGUAGE <replaceable>name</></command>, relying
7502 on a template entry to exist at load time. We expect this will be a
7503 more future-proof representation.
7509 Make <function>pg_cancel_backend(int)</function> return a
7510 <type>boolean</type> rather than an <type>integer</type> (Neil)
7516 Some users are having problems loading UTF-8 data into 8.1.X.
7517 This is because previous versions allowed invalid UTF-8 byte
7518 sequences to be entered into the database, and this release
7519 properly accepts only valid UTF-8 sequences. One way to correct a
7520 dumpfile is to run the command <command>iconv -c -f UTF-8 -t
7521 UTF-8 -o cleanfile.sql dumpfile.sql</>. The <literal>-c</> option
7522 removes invalid character sequences. A diff of the two files will
7523 show the sequences that are invalid. <command>iconv</> reads the
7524 entire input file into memory so it might be necessary to use
7525 <application>split</> to break up the dump into multiple smaller
7526 files for processing.
7534 <title>Additional Changes</title>
7537 Below you will find a detailed account of the additional changes
7538 between <productname>PostgreSQL</productname> 8.1 and the
7539 previous major release.
7543 <title>Performance Improvements</title>
7548 Improve GiST and R-tree index performance (Neil)
7554 Improve the optimizer, including auto-resizing of hash joins
7561 Overhaul internal API in several areas
7567 Change WAL record CRCs from 64-bit to 32-bit (Tom)
7570 We determined that the extra cost of computing 64-bit CRCs was
7571 significant, and the gain in reliability too marginal to justify it.
7577 Prevent writing large empty gaps in WAL pages (Tom)
7583 Improve spinlock behavior on SMP machines, particularly Opterons (Tom)
7589 Allow nonconsecutive index columns to be used in a multicolumn
7593 For example, this allows an index on columns a,b,c to be used in
7594 a query with <command>WHERE a = 4 and c = 10</>.
7600 Skip WAL logging for <command>CREATE TABLE AS</> /
7601 <command>SELECT INTO</> (Simon)
7604 Since a crash during <command>CREATE TABLE AS</> would cause the
7605 table to be dropped during recovery, there is no reason to WAL
7606 log as the table is loaded. (Logging still happens if WAL
7607 archiving is enabled, however.)
7613 Allow concurrent GiST index access (Teodor, Oleg)
7619 Add configuration parameter <varname>full_page_writes</> to
7620 control writing full pages to WAL (Bruce)
7623 To prevent partial disk writes from corrupting the database,
7624 <productname>PostgreSQL</productname> writes a complete copy of
7625 each database disk page to WAL the first time it is modified
7626 after a checkpoint. This option turns off that functionality for more
7627 speed. This is safe to use with battery-backed disk caches where
7628 partial page writes cannot happen.
7634 Use <literal>O_DIRECT</> if available when using
7635 <literal>O_SYNC</> for <varname>wal_sync_method</varname>
7639 <literal>O_DIRECT</> causes disk writes to bypass the kernel
7640 cache, and for WAL writes, this improves performance.
7646 Improve <command>COPY FROM</> performance (Alon Goldshuv)
7649 This was accomplished by reading <command>COPY</> input in
7650 larger chunks, rather than character by character.
7656 Improve the performance of <function>COUNT()</function>,
7657 <function>SUM</function>, <function>AVG()</function>,
7658 <function>STDDEV()</function>, and
7659 <function>VARIANCE()</function> (Neil, Tom)
7666 <title>Server Changes</title>
7671 Prevent problems due to transaction ID (XID) wraparound (Tom)
7674 The server will now warn when the transaction counter approaches
7675 the wraparound point. If the counter becomes too close to wraparound,
7676 the server will stop accepting queries. This ensures that data is
7677 not lost before needed vacuuming is performed.
7683 Fix problems with object IDs (OIDs) conflicting with existing system
7684 objects after the OID counter has wrapped around (Tom)
7690 Add warning about the need to increase
7691 <varname>max_fsm_relations</> and <varname>max_fsm_pages</>
7692 during <command>VACUUM</> (Ron Mayer)
7698 Add <varname>temp_buffers</> configuration parameter to allow
7699 users to determine the size of the local buffer area for
7700 temporary table access (Tom)
7706 Add session start time and client IP address to
7707 <literal>pg_stat_activity</> (Magnus)
7713 Adjust <literal>pg_stat</> views for bitmap scans (Tom)
7716 The meanings of some of the fields have changed slightly.
7722 Enhance <literal>pg_locks</> view (Tom)
7728 Log queries for client-side <command>PREPARE</> and
7729 <command>EXECUTE</> (Simon)
7735 Allow Kerberos name and user name case sensitivity to be
7736 specified in <filename>postgresql.conf</> (Magnus)
7742 Add configuration parameter <varname>krb_server_hostname</> so
7743 that the server host name can be specified as part of service
7744 principal (Todd Kover)
7747 If not set, any service principal matching an entry in the
7748 keytab can be used. This is new Kerberos matching behavior in
7755 Add <varname>log_line_prefix</> options for millisecond
7756 timestamps (<literal>%m</>) and remote host (<literal>%h</>) (Ed
7763 Add WAL logging for GiST indexes (Teodor, Oleg)
7766 GiST indexes are now safe for crash and point-in-time recovery.
7772 Remove old <filename>*.backup</> files when we do
7773 <function>pg_stop_backup()</> (Bruce)
7776 This prevents a large number of <filename>*.backup</> files from
7777 existing in <filename>pg_xlog/</>.
7783 Add configuration parameters to control TCP/IP keep-alive
7784 times for idle, interval, and count (Oliver Jowett)
7788 These values can be changed to allow more rapid detection of
7789 lost client connections.
7795 Add per-user and per-database connection limits (Petr Jelinek)
7798 Using <command>ALTER USER</> and <command>ALTER DATABASE</>,
7799 limits can now be enforced on the maximum number of sessions that
7800 can concurrently connect as a specific user or to a specific database.
7801 Setting the limit to zero disables user or database connections.
7807 Allow more than two gigabytes of shared memory and per-backend
7808 work memory on 64-bit machines (Koichi Suzuki)
7814 New system catalog <structname>pg_pltemplate</> allows overriding
7815 obsolete procedural-language definitions in dump files (Tom)
7824 <title>Query Changes</title>
7829 Add temporary views (Koju Iijima, Neil)
7835 Fix <command>HAVING</> without any aggregate functions or
7836 <command>GROUP BY</> so that the query returns a single group (Tom)
7839 Previously, such a case would treat the <command>HAVING</>
7840 clause the same as a <command>WHERE</> clause. This was not per spec.
7846 Add <command>USING</> clause to allow additional tables to be
7847 specified to <command>DELETE</> (Euler Taveira de Oliveira, Neil)
7850 In prior releases, there was no clear method for specifying
7851 additional tables to be used for joins in a <command>DELETE</>
7852 statement. <command>UPDATE</> already has a <literal>FROM</>
7853 clause for this purpose.
7859 Add support for <literal>\x</> hex escapes in backend and ecpg
7863 This is just like the standard C <literal>\x</> escape syntax.
7864 Octal escapes were already supported.
7870 Add <command>BETWEEN SYMMETRIC</> query syntax (Pavel Stehule)
7873 This feature allows <command>BETWEEN</> comparisons without
7874 requiring the first value to be less than the second. For
7875 example, <command>2 BETWEEN [ASYMMETRIC] 3 AND 1</> returns
7876 false, while <command>2 BETWEEN SYMMETRIC 3 AND 1</> returns
7877 true. <command>BETWEEN ASYMMETRIC</> was already supported.
7883 Add <command>NOWAIT</> option to <command>SELECT ... FOR
7884 UPDATE/SHARE</> (Hans-Juergen Schoenig)
7887 While the <varname>statement_timeout</> configuration
7888 parameter allows a query taking more than a certain amount of
7889 time to be cancelled, the <command>NOWAIT</> option allows a
7890 query to be canceled as soon as a <command>SELECT ... FOR
7891 UPDATE/SHARE</> command cannot immediately acquire a row lock.
7899 <title>Object Manipulation Changes</title>
7904 Track dependencies of shared objects (Alvaro)
7907 <productname>PostgreSQL</productname> allows global tables
7908 (users, databases, tablespaces) to reference information in
7909 multiple databases. This addition adds dependency information
7910 for global tables, so, for example, user ownership can be
7911 tracked across databases, so a user who owns something in any
7912 database can no longer be removed. Dependency tracking already
7913 existed for database-local objects.
7919 Allow limited <command>ALTER OWNER</> commands to be performed
7920 by the object owner (Stephen Frost)
7923 Prior releases allowed only superusers to change object owners.
7924 Now, ownership can be transferred if the user executing the command
7925 owns the object and would be able to create it as the new owner
7926 (that is, the user is a member of the new owning role and that role
7927 has the CREATE permission that would be needed to create the object
7934 Add <command>ALTER</> object <command>SET SCHEMA</> capability
7935 for some object types (tables, functions, types) (Bernd Helmle)
7938 This allows objects to be moved to different schemas.
7944 Add <command>ALTER TABLE ENABLE/DISABLE TRIGGER</command> to
7945 disable triggers (Satoshi Nagayasu)
7954 <title>Utility Command Changes</title>
7959 Allow <command>TRUNCATE</> to truncate multiple tables in a
7960 single command (Alvaro)
7963 Because of referential integrity checks, it is not allowed to
7964 truncate a table that is part of a referential integrity
7965 constraint. Using this new functionality, <command>TRUNCATE</>
7966 can be used to truncate such tables, if both tables involved in
7967 a referential integrity constraint are truncated in a single
7968 <command>TRUNCATE</> command.
7974 Properly process carriage returns and line feeds in
7975 <command>COPY CSV</> mode (Andrew)
7978 In release 8.0, carriage returns and line feeds in <command>CSV
7979 COPY TO</> were processed in an inconsistent manner. (This was
7980 documented on the TODO list.)
7986 Add <command>COPY WITH CSV HEADER</> to allow a header line as
7987 the first line in <command>COPY</> (Andrew)
7990 This allows handling of the common <command>CSV</> usage of
7991 placing the column names on the first line of the data file. For
7992 <command>COPY TO</>, the first line contains the column names,
7993 and for <command>COPY FROM</>, the first line is ignored.
7999 On Windows, display better sub-second precision in
8000 <command>EXPLAIN ANALYZE</> (Magnus)
8006 Add trigger duration display to <command>EXPLAIN ANALYZE</>
8010 Prior releases included trigger execution time as part of the
8011 total execution time, but did not show it separately. It is now
8012 possible to see how much time is spent in each trigger.
8018 Add support for <literal>\x</> hex escapes in <command>COPY</>
8022 Previous releases only supported octal escapes.
8028 Make <command>SHOW ALL</> include variable descriptions
8032 <command>SHOW</> varname still only displays the variable's
8033 value and does not include the description.
8039 Make <application>initdb</application> create a new standard
8040 database called <literal>postgres</>, and convert utilities to
8041 use <literal>postgres</> rather than <literal>template1</> for
8042 standard lookups (Dave)
8045 In prior releases, <literal>template1</> was used both as a
8046 default connection for utilities like
8047 <application>createuser</application>, and as a template for
8048 new databases. This caused <command>CREATE DATABASE</> to
8049 sometimes fail, because a new database cannot be created if
8050 anyone else is in the template database. With this change, the
8051 default connection database is now <literal>postgres</>,
8052 meaning it is much less likely someone will be using
8053 <literal>template1</> during <command>CREATE DATABASE</>.
8059 Create new <application>reindexdb</application> command-line
8060 utility by moving <filename>/contrib/reindexdb</> into the
8061 server (Euler Taveira de Oliveira)
8070 <title>Data Type and Function Changes</title>
8075 Add <function>MAX()</> and <function>MIN()</> aggregates for
8076 array types (Koju Iijima)
8082 Fix <function>to_date()</> and <function>to_timestamp()</> to
8083 behave reasonably when <literal>CC</> and <literal>YY</> fields
8084 are both used (Karel Zak)
8087 If the format specification contains <literal>CC</> and a year
8088 specification is <literal>YYY</> or longer, ignore the
8089 <literal>CC</>. If the year specification is <literal>YY</> or
8090 shorter, interpret <literal>CC</> as the previous century.
8096 Add <function>md5(bytea)</> (Abhijit Menon-Sen)
8099 <function>md5(text)</> already existed.
8105 Add support for <command>numeric ^ numeric</> based on
8106 <function>power(numeric, numeric)</>
8109 The function already existed, but there was no operator assigned
8116 Fix <type>NUMERIC</> modulus by properly truncating the quotient
8117 during computation (Bruce)
8120 In previous releases, modulus for large values sometimes
8121 returned negative results due to rounding of the quotient.
8127 Add a function <function>lastval()</> (Dennis Björklund)
8130 <function>lastval()</> is a simplified version of
8131 <function>currval()</>. It automatically determines the proper
8132 sequence name based on the most recent <function>nextval()</> or
8133 <function>setval()</> call performed by the current session.
8139 Add <function>to_timestamp(DOUBLE PRECISION) (Michael Glaesemann)</>
8142 Converts Unix seconds since 1970 to a <type>TIMESTAMP WITH
8149 Add <function>pg_postmaster_start_time()</> function (Euler
8150 Taveira de Oliveira, Matthias Schmidt)
8156 Allow the full use of time zone names in <command>AT TIME
8157 ZONE</>, not just the short list previously available (Magnus)
8160 Previously, only a predefined list of time zone names were
8161 supported by <command>AT TIME ZONE</>. Now any supported time
8162 zone name can be used, e.g.:
8164 SELECT CURRENT_TIMESTAMP AT TIME ZONE 'Europe/London';
8166 In the above query, the time zone used is adjusted based on the
8167 daylight saving time rules that were in effect on the supplied
8174 Add <function>GREATEST()</> and <function>LEAST()</> variadic
8175 functions (Pavel Stehule)
8178 These functions take a variable number of arguments and return
8179 the greatest or least value among the arguments.
8185 Add <function>pg_column_size()</> (Mark Kirkwood)
8188 This returns storage size of a column, which might be compressed.
8194 Add <function>regexp_replace()</> (Atsushi Ogawa)
8197 This allows regular expression replacement, like sed. An optional
8198 flag argument allows selection of global (replace all) and
8199 case-insensitive modes.
8205 Fix interval division and multiplication (Bruce)
8208 Previous versions sometimes returned unjustified results, like
8209 <command>'4 months'::interval / 5</> returning <command>'1 mon
8216 Fix roundoff behavior in timestamp, time, and interval output (Tom)
8219 This fixes some cases in which the seconds field would be shown as
8220 <literal>60</> instead of incrementing the higher-order fields.
8226 Add a separate day field to type <type>interval</> so a one day
8227 interval can be distinguished from a 24 hour interval (Michael
8231 Days that contain a daylight saving time adjustment are not 24
8232 hours long, but typically 23 or 25 hours. This change creates a
8233 conceptual distinction between intervals of <quote>so many days</>
8234 and intervals of <quote>so many hours</>. Adding
8235 <literal>1 day</> to a timestamp now gives the same local time on
8236 the next day even if a daylight saving time adjustment occurs
8237 between, whereas adding <literal>24 hours</> will give a different
8238 local time when this happens. For example, under US DST rules:
8240 '2005-04-03 00:00:00-05' + '1 day' = '2005-04-04 00:00:00-04'
8241 '2005-04-03 00:00:00-05' + '24 hours' = '2005-04-04 01:00:00-04'
8248 Add <function>justify_days()</> and <function>justify_hours()</>
8249 (Michael Glaesemann)
8252 These functions, respectively, adjust days to an appropriate
8253 number of full months and days, and adjust hours to an
8254 appropriate number of full days and hours.
8260 Move <filename>/contrib/dbsize</> into the backend, and rename
8261 some of the functions (Dave Page, Andreas Pflug)
8268 <function>pg_tablespace_size()</>
8274 <function>pg_database_size()</>
8280 <function>pg_relation_size()</>
8286 <function>pg_total_relation_size()</>
8292 <function>pg_size_pretty()</>
8299 <function>pg_total_relation_size()</> includes indexes and TOAST
8306 Add functions for read-only file access to the cluster directory
8307 (Dave Page, Andreas Pflug)
8314 <function>pg_stat_file()</>
8320 <function>pg_read_file()</>
8326 <function>pg_ls_dir()</>
8336 Add <function>pg_reload_conf()</> to force reloading of the
8337 configuration files (Dave Page, Andreas Pflug)
8343 Add <function>pg_rotate_logfile()</> to force rotation of the
8344 server log file (Dave Page, Andreas Pflug)
8350 Change <literal>pg_stat_*</> views to include TOAST tables (Tom)
8359 <title>Encoding and Locale Changes</title>
8364 Rename some encodings to be more consistent and to follow
8365 international standards (Bruce)
8372 <literal>UNICODE</> is now <literal>UTF8</>
8378 <literal>ALT</> is now <literal>WIN866</>
8384 <literal>WIN</> is now <literal>WIN1251</>
8390 <literal>TCVN</> is now <literal>WIN1258</>
8398 The original names still work.
8404 Add support for <literal>WIN1252</> encoding (Roland Volkmann)
8410 Add support for four-byte <literal>UTF8</> characters (John
8414 Previously only one, two, and three-byte <literal>UTF8</> characters
8415 were supported. This is particularly important for support for
8416 some Chinese character sets.
8422 Allow direct conversion between <literal>EUC_JP</> and
8423 <literal>SJIS</> to improve performance (Atsushi Ogawa)
8429 Allow the UTF8 encoding to work on Windows (Magnus)
8432 This is done by mapping UTF8 to the Windows-native UTF16
8442 <title>General Server-Side Language Changes</title>
8447 Fix <command>ALTER LANGUAGE RENAME</> (Sergey Yatskevich)
8453 Allow function characteristics, like strictness and volatility,
8454 to be modified via <command>ALTER FUNCTION</> (Neil)
8460 Increase the maximum number of function arguments to 100 (Tom)
8466 Allow SQL and PL/PgSQL functions to use <command>OUT</> and
8467 <command>INOUT</> parameters (Tom)
8470 <command>OUT</> is an alternate way for a function to return
8471 values. Instead of using <command>RETURN</>, values can be
8472 returned by assigning to parameters declared as <command>OUT</> or
8473 <command>INOUT</>. This is notationally simpler in some cases,
8474 particularly so when multiple values need to be returned.
8475 While returning multiple values from a function
8476 was possible in previous releases, this greatly simplifies the
8477 process. (The feature will be extended to other server-side
8478 languages in future releases.)
8484 Move language handler functions into the <literal>pg_catalog</> schema
8487 This makes it easier to drop the public schema if desired.
8493 Add <function>SPI_getnspname()</function> to SPI (Neil)
8501 <title>PL/PgSQL Server-Side Language Changes</title>
8506 Overhaul the memory management of PL/PgSQL functions (Neil)
8509 The parsetree of each function is now stored in a separate
8510 memory context. This allows this memory to be easily reclaimed
8511 when it is no longer needed.
8517 Check function syntax at <command>CREATE FUNCTION</> time,
8518 rather than at runtime (Neil)
8521 Previously, most syntax errors were reported only when the
8522 function was executed.
8528 Allow <command>OPEN</> to open non-<command>SELECT</> queries
8529 like <command>EXPLAIN</> and <command>SHOW</> (Tom)
8535 No longer require functions to issue a <command>RETURN</>
8539 This is a byproduct of the newly added <command>OUT</> and
8540 <command>INOUT</> functionality. <command>RETURN</> can
8541 be omitted when it is not needed to provide the function's
8548 Add support for an optional <command>INTO</> clause to
8549 PL/PgSQL's <command>EXECUTE</> statement (Pavel Stehule, Neil)
8555 Make <command>CREATE TABLE AS</> set <command>ROW_COUNT</> (Tom)
8561 Define <literal>SQLSTATE</> and <literal>SQLERRM</> to return
8562 the <literal>SQLSTATE</> and error message of the current
8563 exception (Pavel Stehule, Neil)
8566 These variables are only defined inside exception blocks.
8572 Allow the parameters to the <command>RAISE</> statement to be
8573 expressions (Pavel Stehule, Neil)
8579 Add a loop <command>CONTINUE</> statement (Pavel Stehule, Neil)
8585 Allow block and loop labels (Pavel Stehule)
8594 <title>PL/Perl Server-Side Language Changes</title>
8599 Allow large result sets to be returned efficiently (Abhijit
8603 This allows functions to use <function>return_next()</> to avoid
8604 building the entire result set in memory.
8610 Allow one-row-at-a-time retrieval of query results (Abhijit Menon-Sen)
8613 This allows functions to use <function>spi_query()</> and
8614 <function>spi_fetchrow()</> to avoid accumulating the entire
8615 result set in memory.
8621 Force PL/Perl to handle strings as <literal>UTF8</> if the
8622 server encoding is <literal>UTF8</> (David Kamholz)
8628 Add a validator function for PL/Perl (Andrew)
8631 This allows syntax errors to be reported at definition time,
8632 rather than execution time.
8638 Allow PL/Perl to return a Perl array when the function returns
8639 an array type (Andrew)
8642 This basically maps <productname>PostgreSQL</productname> arrays
8649 Allow Perl nonfatal warnings to generate <command>NOTICE</>
8656 Allow Perl's <literal>strict</> mode to be enabled (Andrew)
8665 <title><application>psql</> Changes</title>
8670 Add <command>\set ON_ERROR_ROLLBACK</> to allow statements in
8671 a transaction to error without affecting the rest of the
8672 transaction (Greg Sabino Mullane)
8675 This is basically implemented by wrapping every statement in a
8682 Add support for <literal>\x</> hex strings in
8683 <application>psql</> variables (Bruce)
8686 Octal escapes were already supported.
8692 Add support for <command>troff -ms</> output format (Roger
8699 Allow the history file location to be controlled by
8700 <envar>HISTFILE</> (Andreas Seltenreich)
8703 This allows configuration of per-database history storage.
8709 Prevent <command>\x</> (expanded mode) from affecting
8710 the output of <command>\d tablename</> (Neil)
8716 Add <option>-L</> option to <application>psql</application> to
8717 log sessions (Lorne Sunley)
8720 This option was added because some operating systems do not have
8721 simple command-line activity logging functionality.
8727 Make <command>\d</> show the tablespaces of indexes (Qingqing
8734 Allow <application>psql</application> help (<command>\h</>) to
8735 make a best guess on the proper help information (Greg Sabino
8739 This allows the user to just add <command>\h</> to the front of
8740 the syntax error query and get help on the supported syntax.
8741 Previously any additional query text beyond the command name
8742 had to be removed to use <command>\h</>.
8748 Add <command>\pset numericlocale</> to allow numbers to be
8749 output in a locale-aware format (Eugen Nedelcu)
8752 For example, using <literal>C</> locale <literal>100000</> would
8753 be output as <literal>100,000.0</> while a European locale might
8754 output this value as <literal>100.000,0</>.
8760 Make startup banner show both server version number and
8761 <application>psql</>'s version number, when they are different (Bruce)
8764 Also, a warning will be shown if the server and <application>psql</>
8765 are from different major releases.
8774 <title><application>pg_dump</> Changes</title>
8779 Add <option>-n</> / <option>--schema</> switch to
8780 <application>pg_restore</> (Richard van den Berg)
8783 This allows just the objects in a specified schema to be restored.
8789 Allow <application>pg_dump</> to dump large objects even in
8793 With this change, large objects are now always dumped; the former
8794 <option>-b</> switch is a no-op.
8800 Allow <application>pg_dump</> to dump a consistent snapshot of
8807 Dump comments for large objects (Tom)
8813 Add <option>--encoding</> to <application>pg_dump</>
8817 This allows a database to be dumped in an encoding that is
8818 different from the server's encoding. This is valuable when
8819 transferring the dump to a machine with a different encoding.
8825 Rely on <structname>pg_pltemplate</> for procedural languages (Tom)
8828 If the call handler for a procedural language is in the
8829 <literal>pg_catalog</> schema, <application>pg_dump</> does not
8830 dump the handler. Instead, it dumps the language using just
8831 <command>CREATE LANGUAGE <replaceable>name</></command>,
8832 relying on the <structname>pg_pltemplate</> catalog to provide
8833 the language's creation parameters at load time.
8842 <title><application>libpq</application> Changes</title>
8847 Add a <envar>PGPASSFILE</> environment variable to specify the
8848 password file's filename (Andrew)
8854 Add <function>lo_create()</>, that is similar to
8855 <function>lo_creat()</> but allows the OID of the large object
8856 to be specified (Tom)
8862 Make <application>libpq</application> consistently return an error
8863 to the client application on <function>malloc()</function>
8872 <title>Source Code Changes</title>
8877 Fix <application>pgxs</> to support building against a relocated
8884 Add spinlock support for the Itanium processor using Intel
8885 compiler (Vikram Kalsi)
8891 Add Kerberos 5 support for Windows (Magnus)
8897 Add Chinese FAQ (laser@pgsqldb.com)
8903 Rename Rendezvous to Bonjour to match OS/X feature renaming
8910 Add support for <literal>fsync_writethrough</literal> on
8911 Darwin (Chris Campbell)
8917 Streamline the passing of information within the server, the
8918 optimizer, and the lock system (Tom)
8924 Allow <application>pg_config</> to be compiled using MSVC (Andrew)
8927 This is required to build DBD::Pg using <application>MSVC</>.
8933 Remove support for Kerberos V4 (Magnus)
8936 Kerberos 4 had security vulnerabilities and is no longer
8943 Code cleanups (Coverity static analysis performed by
8950 Modify <filename>postgresql.conf</> to use documentation defaults
8951 <literal>on</>/<literal>off</> rather than
8952 <literal>true</>/<literal>false</> (Bruce)
8958 Enhance <application>pg_config</> to be able to report more
8959 build-time values (Tom)
8965 Allow <application>libpq</application> to be built thread-safe
8966 on Windows (Dave Page)
8972 Allow IPv6 connections to be used on Windows (Andrew)
8978 Add Server Administration documentation about I/O subsystem
8985 Move private declarations from <filename>gist.h</filename> to
8986 <filename>gist_private.h</filename> (Neil)
8990 In previous releases, <filename>gist.h</> contained both the
8991 public GiST API (intended for use by authors of GiST index
8992 implementations) as well as some private declarations used by
8993 the implementation of GiST itself. The latter have been moved
8994 to a separate file, <filename>gist_private.h</>. Most GiST
8995 index implementations should be unaffected.
9001 Overhaul GiST memory management (Neil)
9005 GiST methods are now always invoked in a short-lived memory
9006 context. Therefore, memory allocated via <function>palloc()</>
9007 will be reclaimed automatically, so GiST index implementations
9008 do not need to manually release allocated memory via
9009 <function>pfree()</>.
9017 <title>Contrib Changes</title>
9022 Add <filename>/contrib/pg_buffercache</> contrib module (Mark
9026 This displays the contents of the buffer cache, for debugging and
9027 performance tuning purposes.
9033 Remove <filename>/contrib/array</> because it is obsolete (Tom)
9039 Clean up the <filename>/contrib/lo</> module (Tom)
9045 Move <filename>/contrib/findoidjoins</> to
9046 <filename>/src/tools</> (Tom)
9052 Remove the <literal><<</>, <literal>>></>,
9053 <literal>&<</>, and <literal>&></> operators from
9054 <filename>/contrib/cube</>
9057 These operators were not useful.
9063 Improve <filename>/contrib/btree_gist</> (Janko Richter)
9069 Improve <filename>/contrib/pgbench</> (Tomoaki Sato, Tatsuo)
9072 There is now a facility for testing with SQL command scripts given
9073 by the user, instead of only a hard-wired command sequence.
9079 Improve <filename>/contrib/pgcrypto</> (Marko Kreen)
9086 Implementation of OpenPGP symmetric-key and public-key encryption
9089 Both RSA and Elgamal public-key algorithms are supported.
9095 Stand alone build: include SHA256/384/512 hashes, Fortuna PRNG
9101 OpenSSL build: support 3DES, use internal AES with OpenSSL < 0.9.7
9107 Take build parameters (OpenSSL, zlib) from <filename>configure</> result
9110 There is no need to edit the <filename>Makefile</> anymore.
9116 Remove support for <filename>libmhash</> and <filename>libmcrypt</>
9129 <sect1 id="release-8-0-14">
9130 <title>Release 8.0.14</title>
9133 <title>Release date</title>
9134 <simpara>2007-09-17</simpara>
9138 This release contains a variety of fixes from 8.0.13.
9142 <title>Migration to version 8.0.14</title>
9145 A dump/restore is not required for those running 8.0.X. However,
9146 if you are upgrading from a version earlier than 8.0.6, see the release
9153 <title>Changes</title>
9159 Prevent index corruption when a transaction inserts rows and
9160 then aborts close to the end of a concurrent <command>VACUUM</>
9161 on the same table (Tom)
9167 Make <command>CREATE DOMAIN ... DEFAULT NULL</> work properly (Tom)
9173 Fix excessive logging of <acronym>SSL</> error messages (Tom)
9179 Fix logging so that log messages are never interleaved when using
9180 the syslogger process (Andrew)
9186 Fix crash when <varname>log_min_error_statement</> logging runs out
9193 Fix incorrect handling of some foreign-key corner cases (Tom)
9199 Prevent <command>CLUSTER</> from failing
9200 due to attempting to process temporary tables of other sessions (Alvaro)
9206 Update the time zone database rules, particularly New Zealand's upcoming changes (Tom)
9212 Windows socket improvements (Magnus)
9218 Suppress timezone name (<literal>%Z</>) in log timestamps on Windows
9219 because of possible encoding mismatches (Tom)
9225 Require non-superusers who use <filename>/contrib/dblink</> to use only
9226 password authentication, as a security measure (Joe)
9235 <sect1 id="release-8-0-13">
9236 <title>Release 8.0.13</title>
9239 <title>Release date</title>
9240 <simpara>2007-04-23</simpara>
9244 This release contains a variety of fixes from 8.0.12,
9245 including a security fix.
9249 <title>Migration to version 8.0.13</title>
9252 A dump/restore is not required for those running 8.0.X. However,
9253 if you are upgrading from a version earlier than 8.0.6, see the release
9260 <title>Changes</title>
9266 Support explicit placement of the temporary-table schema within
9267 <varname>search_path</>, and disable searching it for functions
9271 This is needed to allow a security-definer function to set a
9272 truly secure value of <varname>search_path</>. Without it,
9273 an unprivileged SQL user can use temporary objects to execute code
9274 with the privileges of the security-definer function (CVE-2007-2138).
9275 See <command>CREATE FUNCTION</> for more information.
9281 <filename>/contrib/tsearch2</> crash fixes (Teodor)
9287 Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles
9288 <command>UPDATE</> chains (Tom, Pavan Deolasee)
9294 Fix PANIC during enlargement of a hash index (bug introduced in 8.0.10)
9301 Fix POSIX-style timezone specs to follow new USA DST rules (Tom)
9310 <sect1 id="release-8-0-12">
9311 <title>Release 8.0.12</title>
9314 <title>Release date</title>
9315 <simpara>2007-02-07</simpara>
9319 This release contains one fix from 8.0.11.
9323 <title>Migration to version 8.0.12</title>
9326 A dump/restore is not required for those running 8.0.X. However,
9327 if you are upgrading from a version earlier than 8.0.6, see the release
9334 <title>Changes</title>
9340 Remove overly-restrictive check for type length in constraints and
9341 functional indexes(Tom)
9350 <sect1 id="release-8-0-11">
9351 <title>Release 8.0.11</title>
9354 <title>Release date</title>
9355 <simpara>2007-02-05</simpara>
9359 This release contains a variety of fixes from 8.0.10, including
9364 <title>Migration to version 8.0.11</title>
9367 A dump/restore is not required for those running 8.0.X. However,
9368 if you are upgrading from a version earlier than 8.0.6, see the release
9375 <title>Changes</title>
9381 Remove security vulnerabilities that allowed connected users
9382 to read backend memory (Tom)
9385 The vulnerabilities involve suppressing the normal check that a SQL
9386 function returns the data type it's declared to, and changing the
9387 data type of a table column (CVE-2007-0555, CVE-2007-0556). These
9388 errors can easily be exploited to cause a backend crash, and in
9389 principle might be used to read database content that the user
9390 should not be able to access.
9396 Fix rare bug wherein btree index page splits could fail
9397 due to choosing an infeasible split point (Heikki Linnakangas)
9403 Fix for rare Assert() crash triggered by <literal>UNION</> (Tom)
9409 Tighten security of multi-byte character processing for UTF8 sequences
9410 over three bytes long (Tom)
9419 <sect1 id="release-8-0-10">
9420 <title>Release 8.0.10</title>
9423 <title>Release date</title>
9424 <simpara>2007-01-08</simpara>
9428 This release contains a variety of fixes from 8.0.9.
9432 <title>Migration to version 8.0.10</title>
9435 A dump/restore is not required for those running 8.0.X. However,
9436 if you are upgrading from a version earlier than 8.0.6, see the release
9443 <title>Changes</title>
9449 Improve handling of <function>getaddrinfo()</> on AIX (Tom)
9453 This fixes a problem with starting the statistics collector,
9460 Fix <quote>failed to re-find parent key</> errors in
9461 <command>VACUUM</> (Tom)
9467 Fix race condition for truncation of a large relation across a
9468 gigabyte boundary by <command>VACUUM</> (Tom)
9474 Fix bugs affecting multi-gigabyte hash indexes (Tom)
9480 Fix possible deadlock in Windows signal handling (Teodor)
9486 Fix error when constructing an <literal>ARRAY[]</> made up of multiple
9487 empty elements (Tom)
9493 Fix ecpg memory leak during connection (Michael)
9499 <function>to_number()</> and <function>to_char(numeric)</>
9500 are now <literal>STABLE</>, not <literal>IMMUTABLE</>, for
9501 new <application>initdb</> installs (Tom)
9505 This is because <varname>lc_numeric</> can potentially
9506 change the output of these functions.
9512 Improve index usage of regular expressions that use parentheses (Tom)
9516 This improves <application>psql</> <literal>\d</> performance also.
9522 Update timezone database
9526 This affects Australian and Canadian daylight-savings rules in
9536 <sect1 id="release-8-0-9">
9537 <title>Release 8.0.9</title>
9540 <title>Release date</title>
9541 <simpara>2006-10-16</simpara>
9545 This release contains a variety of fixes from 8.0.8.
9549 <title>Migration to version 8.0.9</title>
9552 A dump/restore is not required for those running 8.0.X. However,
9553 if you are upgrading from a version earlier than 8.0.6, see the release
9560 <title>Changes</title>
9563 <listitem><para>Fix crash when referencing <literal>NEW</> row
9564 values in rule WHERE expressions (Tom)</para></listitem>
9565 <listitem><para>Fix core dump when an untyped literal is taken as
9566 ANYARRAY</para></listitem>
9567 <listitem><para>Fix mishandling of AFTER triggers when query contains a SQL
9568 function returning multiple rows (Tom)</para></listitem>
9569 <listitem><para>Fix <command>ALTER TABLE ... TYPE</> to recheck
9570 <literal>NOT NULL</> for <literal>USING</> clause (Tom)</para></listitem>
9571 <listitem><para>Fix <function>string_to_array()</> to handle overlapping
9572 matches for the separator string</para>
9573 <para>For example, <literal>string_to_array('123xx456xxx789', 'xx')</>.
9575 <listitem><para>Fix corner cases in pattern matching for
9576 <application>psql</>'s <literal>\d</> commands</para></listitem>
9577 <listitem><para>Fix index-corrupting bugs in /contrib/ltree
9578 (Teodor)</para></listitem>
9579 <listitem><para>Numerous robustness fixes in <application>ecpg</> (Joachim
9580 Wieland)</para></listitem>
9581 <listitem><para>Fix backslash escaping in /contrib/dbmirror</para></listitem>
9582 <listitem><para>Fix instability of statistics collection on Win32 (Tom, Andrew)</para></listitem>
9583 <listitem><para>Fixes for <systemitem class="osname">AIX</> and
9584 <productname>Intel</> compilers (Tom)</para></listitem>
9590 <sect1 id="release-8-0-8">
9591 <title>Release 8.0.8</title>
9594 <title>Release date</title>
9595 <simpara>2006-05-23</simpara>
9599 This release contains a variety of fixes from 8.0.7,
9600 including patches for extremely serious security issues.
9604 <title>Migration to version 8.0.8</title>
9607 A dump/restore is not required for those running 8.0.X. However,
9608 if you are upgrading from a version earlier than 8.0.6, see the release
9613 Full security against the SQL-injection attacks described in
9614 CVE-2006-2313 and CVE-2006-2314 might require changes in application
9615 code. If you have applications that embed untrustworthy strings
9616 into SQL commands, you should examine them as soon as possible to
9617 ensure that they are using recommended escaping techniques. In
9618 most cases, applications should be using subroutines provided by
9619 libraries or drivers (such as <application>libpq</>'s
9620 <function>PQescapeStringConn()</>) to perform string escaping,
9621 rather than relying on <foreignphrase>ad hoc</> code to do it.
9626 <title>Changes</title>
9629 <listitem><para>Change the server to reject invalidly-encoded multibyte
9630 characters in all cases (Tatsuo, Tom)</para>
9631 <para>While <productname>PostgreSQL</> has been moving in this direction for
9632 some time, the checks are now applied uniformly to all encodings and all
9633 textual input, and are now always errors not merely warnings. This change
9634 defends against SQL-injection attacks of the type described in CVE-2006-2313.
9637 <listitem><para>Reject unsafe uses of <literal>\'</> in string literals</para>
9638 <para>As a server-side defense against SQL-injection attacks of the type
9639 described in CVE-2006-2314, the server now only accepts <literal>''</> and not
9640 <literal>\'</> as a representation of ASCII single quote in SQL string
9641 literals. By default, <literal>\'</> is rejected only when
9642 <varname>client_encoding</> is set to a client-only encoding (SJIS, BIG5, GBK,
9643 GB18030, or UHC), which is the scenario in which SQL injection is possible.
9644 A new configuration parameter <varname>backslash_quote</> is available to
9645 adjust this behavior when needed. Note that full security against
9646 CVE-2006-2314 might require client-side changes; the purpose of
9647 <varname>backslash_quote</> is in part to make it obvious that insecure
9648 clients are insecure.
9651 <listitem><para>Modify <application>libpq</>'s string-escaping routines to be
9652 aware of encoding considerations and
9653 <varname>standard_conforming_strings</></para>
9654 <para>This fixes <application>libpq</>-using applications for the security
9655 issues described in CVE-2006-2313 and CVE-2006-2314, and also future-proofs
9656 them against the planned changeover to SQL-standard string literal syntax.
9657 Applications that use multiple <productname>PostgreSQL</> connections
9658 concurrently should migrate to <function>PQescapeStringConn()</> and
9659 <function>PQescapeByteaConn()</> to ensure that escaping is done correctly
9660 for the settings in use in each database connection. Applications that
9661 do string escaping <quote>by hand</> should be modified to rely on library
9665 <listitem><para>Fix some incorrect encoding conversion functions</para>
9666 <para><function>win1251_to_iso</>, <function>alt_to_iso</>,
9667 <function>euc_tw_to_big5</>, <function>euc_tw_to_mic</>,
9668 <function>mic_to_euc_tw</> were all broken to varying
9672 <listitem><para>Clean up stray remaining uses of <literal>\'</> in strings
9673 (Bruce, Jan)</para></listitem>
9675 <listitem><para>Fix bug that sometimes caused OR'd index scans to
9676 miss rows they should have returned</para></listitem>
9678 <listitem><para>Fix WAL replay for case where a btree index has been
9679 truncated</para></listitem>
9681 <listitem><para>Fix <literal>SIMILAR TO</> for patterns involving
9682 <literal>|</> (Tom)</para></listitem>
9684 <listitem><para>Fix <command>SELECT INTO</> and <command>CREATE TABLE AS</> to
9685 create tables in the default tablespace, not the base directory (Kris
9686 Jurka)</para></listitem>
9688 <listitem><para>Fix server to use custom DH SSL parameters correctly (Michael
9689 Fuhr)</para></listitem>
9691 <listitem><para>Fix for Bonjour on Intel Macs (Ashley Clark)</para></listitem>
9693 <listitem><para>Fix various minor memory leaks</para></listitem>
9695 <listitem><para>Fix problem with password prompting on some Win32 systems
9696 (Robert Kinberg)</para></listitem>
9702 <sect1 id="release-8-0-7">
9703 <title>Release 8.0.7</title>
9706 <title>Release date</title>
9707 <simpara>2006-02-14</simpara>
9711 This release contains a variety of fixes from 8.0.6.
9715 <title>Migration to version 8.0.7</title>
9718 A dump/restore is not required for those running 8.0.X. However,
9719 if you are upgrading from a version earlier than 8.0.6, see the release
9725 <title>Changes</title>
9729 <listitem><para>Fix potential crash in <command>SET
9730 SESSION AUTHORIZATION</> (CVE-2006-0553)</para>
9731 <para>An unprivileged user could crash the server process, resulting in
9732 momentary denial of service to other users, if the server has been compiled
9733 with Asserts enabled (which is not the default).
9734 Thanks to Akio Ishida for reporting this problem.
9737 <listitem><para>Fix bug with row visibility logic in self-inserted
9739 <para>Under rare circumstances a row inserted by the current command
9740 could be seen as already valid, when it should not be. Repairs bug
9741 created in 8.0.4, 7.4.9, and 7.3.11 releases.
9744 <listitem><para>Fix race condition that could lead to <quote>file already
9745 exists</> errors during pg_clog and pg_subtrans file creation
9746 (Tom)</para></listitem>
9748 <listitem><para>Fix cases that could lead to crashes if a cache-invalidation
9749 message arrives at just the wrong time (Tom)</para></listitem>
9751 <listitem><para>Properly check <literal>DOMAIN</> constraints for
9752 <literal>UNKNOWN</> parameters in prepared statements
9753 (Neil)</para></listitem>
9755 <listitem><para>Ensure <command>ALTER COLUMN TYPE</> will process
9756 <literal>FOREIGN KEY</>, <literal>UNIQUE</>, and <literal>PRIMARY KEY</>
9757 constraints in the proper order (Nakano Yoshihisa)</para></listitem>
9759 <listitem><para>Fixes to allow restoring dumps that have cross-schema
9760 references to custom operators or operator classes (Tom)</para></listitem>
9762 <listitem><para>Allow <application>pg_restore</> to continue properly after a
9763 <command>COPY</> failure; formerly it tried to treat the remaining
9764 <command>COPY</> data as SQL commands (Stephen Frost)</para></listitem>
9766 <listitem><para>Fix <application>pg_ctl</> <literal>unregister</> crash
9767 when the data directory is not specified (Magnus)</para></listitem>
9769 <listitem><para>Fix <application>ecpg</> crash on AMD64 and PPC
9770 (Neil)</para></listitem>
9772 <listitem><para>Recover properly if error occurs during argument passing
9773 in <application>PL/python</> (Neil)</para></listitem>
9775 <listitem><para>Fix <application>PL/perl</>'s handling of locales on
9776 Win32 to match the backend (Andrew)</para></listitem>
9778 <listitem><para>Fix crash when <literal>log_min_messages</> is set to
9779 <literal>DEBUG3</> or above in <filename>postgresql.conf</> on Win32
9780 (Bruce)</para></listitem>
9782 <listitem><para>Fix <application>pgxs</> <literal>-L</> library path
9783 specification for Win32, Cygwin, OS X, AIX (Bruce)</para></listitem>
9785 <listitem><para>Check that SID is enabled while checking for Win32 admin
9786 privileges (Magnus)</para></listitem>
9788 <listitem><para>Properly reject out-of-range date inputs (Kris
9789 Jurka)</para></listitem>
9791 <listitem><para>Portability fix for testing presence of <function>finite</>
9792 and <function>isinf</> during configure (Tom)</para></listitem>
9799 <sect1 id="release-8-0-6">
9800 <title>Release 8.0.6</title>
9803 <title>Release date</title>
9804 <simpara>2006-01-09</simpara>
9808 This release contains a variety of fixes from 8.0.5.
9812 <title>Migration to version 8.0.6</title>
9815 A dump/restore is not required for those running 8.0.X. However,
9816 if you are upgrading from a version earlier than 8.0.3, see the release
9818 Also, you might need to <command>REINDEX</> indexes on textual
9819 columns after updating, if you are affected by the locale or
9820 <application>plperl</> issues described below.
9825 <title>Changes</title>
9829 <listitem><para>Fix Windows code so that postmaster will continue rather
9830 than exit if there is no more room in ShmemBackendArray (Magnus)</para>
9831 <para>The previous behavior could lead to a denial-of-service situation if too
9832 many connection requests arrive close together. This applies
9833 <emphasis>only</> to the Windows port.</para></listitem>
9835 <listitem><para>Fix bug introduced in 8.0 that could allow ReadBuffer
9836 to return an already-used page as new, potentially causing loss of
9837 recently-committed data (Tom)</para></listitem>
9839 <listitem><para>Fix for protocol-level Describe messages issued
9840 outside a transaction or in a failed transaction (Tom)</para></listitem>
9842 <listitem><para>Fix character string comparison for locales that consider
9843 different character combinations as equal, such as Hungarian (Tom)</para>
9844 <para>This might require <command>REINDEX</> to fix existing indexes on
9845 textual columns.</para></listitem>
9847 <listitem><para>Set locale environment variables during postmaster startup
9848 to ensure that <application>plperl</> won't change the locale later</para>
9849 <para>This fixes a problem that occurred if the <application>postmaster</> was
9850 started with environment variables specifying a different locale than what
9851 <application>initdb</> had been told. Under these conditions, any use of
9852 <application>plperl</> was likely to lead to corrupt indexes. You might need
9853 <command>REINDEX</> to fix existing indexes on
9854 textual columns if this has happened to you.</para></listitem>
9856 <listitem><para>Allow more flexible relocation of installation
9857 directories (Tom)</para>
9858 <para>Previous releases supported relocation only if all installation
9859 directory paths were the same except for the last component.</para></listitem>
9861 <listitem><para>Fix longstanding bug in strpos() and regular expression
9862 handling in certain rarely used Asian multi-byte character sets (Tatsuo)
9865 <listitem><para>Various fixes for functions returning <literal>RECORD</>s
9866 (Tom) </para></listitem>
9868 <listitem><para>Fix bug in <filename>/contrib/pgcrypto</> gen_salt,
9869 which caused it not to use all available salt space for MD5 and
9870 XDES algorithms (Marko Kreen, Solar Designer)</para>
9871 <para>Salts for Blowfish and standard DES are unaffected.</para></listitem>
9873 <listitem><para>Fix <filename>/contrib/dblink</> to throw an error,
9874 rather than crashing, when the number of columns specified is different from
9875 what's actually returned by the query (Joe)</para></listitem>
9882 <sect1 id="release-8-0-5">
9883 <title>Release 8.0.5</title>
9886 <title>Release date</title>
9887 <simpara>2005-12-12</simpara>
9891 This release contains a variety of fixes from 8.0.4.
9895 <title>Migration to version 8.0.5</title>
9898 A dump/restore is not required for those running 8.0.X. However,
9899 if you are upgrading from a version earlier than 8.0.3, see the release
9905 <title>Changes</title>
9909 <listitem><para>Fix race condition in transaction log management</para>
9910 <para>There was a narrow window in which an I/O operation could be initiated
9911 for the wrong page, leading to an Assert failure or data
9915 <listitem><para>Fix bgwriter problems after recovering from errors
9918 The background writer was found to leak buffer pins after write errors.
9919 While not fatal in itself, this might lead to mysterious blockages of
9920 later VACUUM commands.
9924 <listitem><para>Prevent failure if client sends Bind protocol message
9925 when current transaction is already aborted</para></listitem>
9927 <listitem><para><filename>/contrib/ltree</> fixes (Teodor)</para></listitem>
9929 <listitem><para>AIX and HPUX compile fixes (Tom)</para></listitem>
9931 <listitem><para>Retry file reads and writes after Windows
9932 NO_SYSTEM_RESOURCES error (Qingqing Zhou)</para></listitem>
9934 <listitem><para>Fix intermittent failure when <varname>log_line_prefix</>
9935 includes <literal>%i</></para></listitem>
9937 <listitem><para>Fix <application>psql</> performance issue with long scripts
9938 on Windows (Merlin Moncure)</para></listitem>
9940 <listitem><para>Fix missing updates of <filename>pg_group</> flat
9941 file</para></listitem>
9943 <listitem><para>Fix longstanding planning error for outer joins</para>
9944 <para>This bug sometimes caused a bogus error <quote>RIGHT JOIN is
9945 only supported with merge-joinable join conditions</>.</para></listitem>
9947 <listitem><para>Postpone timezone initialization until after
9948 <filename>postmaster.pid</> is created</para>
9949 <para>This avoids confusing startup scripts that expect the pid file to appear
9950 quickly.</para></listitem>
9952 <listitem><para>Prevent core dump in <application>pg_autovacuum</> when a
9953 table has been dropped</para></listitem>
9955 <listitem><para>Fix problems with whole-row references (<literal>foo.*</>)
9956 to subquery results</para></listitem>
9962 <sect1 id="release-8-0-4">
9963 <title>Release 8.0.4</title>
9966 <title>Release date</title>
9967 <simpara>2005-10-04</simpara>
9971 This release contains a variety of fixes from 8.0.3.
9975 <title>Migration to version 8.0.4</title>
9978 A dump/restore is not required for those running 8.0.X. However,
9979 if you are upgrading from a version earlier than 8.0.3, see the release
9985 <title>Changes</title>
9988 <listitem><para>Fix error that allowed <command>VACUUM</> to remove
9989 <literal>ctid</> chains too soon, and add more checking in code that follows
9990 <literal>ctid</> links</para>
9991 <para>This fixes a long-standing problem that could cause crashes in very rare
9992 circumstances.</para></listitem>
9993 <listitem><para>Fix <type>CHAR()</> to properly pad spaces to the specified
9994 length when using a multiple-byte character set (Yoshiyuki Asaba)</para>
9995 <para>In prior releases, the padding of <type>CHAR()</> was incorrect
9996 because it only padded to the specified number of bytes without
9997 considering how many characters were stored.</para></listitem>
9998 <listitem><para>Force a checkpoint before committing <command>CREATE
10000 <para>This should fix recent reports of <quote>index is not a btree</>
10001 failures when a crash occurs shortly after <command>CREATE
10002 DATABASE</>.</para></listitem>
10003 <listitem><para>Fix the sense of the test for read-only transaction
10004 in <command>COPY</></para>
10005 <para>The code formerly prohibited <command>COPY TO</>, where it should
10006 prohibit <command>COPY FROM</>.
10008 <listitem><para>Handle consecutive embedded newlines in <command>COPY</>
10009 CSV-mode input</para></listitem>
10010 <listitem><para>Fix <function>date_trunc(week)</> for dates near year
10011 end</para></listitem>
10012 <listitem><para>Fix planning problem with outer-join ON clauses that reference
10013 only the inner-side relation</para></listitem>
10014 <listitem><para>Further fixes for <literal>x FULL JOIN y ON true</> corner
10015 cases</para></listitem>
10016 <listitem><para>Fix overenthusiastic optimization of <literal>x IN (SELECT
10017 DISTINCT ...)</> and related cases</para></listitem>
10018 <listitem><para>Fix mis-planning of queries with small <literal>LIMIT</>
10019 values due to poorly thought out <quote>fuzzy</> cost
10020 comparison</para></listitem>
10021 <listitem><para>Make <function>array_in</> and <function>array_recv</> more
10022 paranoid about validating their OID parameter</para></listitem>
10023 <listitem><para>Fix missing rows in queries like <literal>UPDATE a=... WHERE
10024 a...</> with GiST index on column <literal>a</></para></listitem>
10025 <listitem><para>Improve robustness of datetime parsing</para></listitem>
10026 <listitem><para>Improve checking for partially-written WAL
10027 pages</para></listitem>
10028 <listitem><para>Improve robustness of signal handling when SSL is
10029 enabled</para></listitem>
10030 <listitem><para>Improve MIPS and M68K spinlock code</para></listitem>
10031 <listitem><para>Don't try to open more than <literal>max_files_per_process</>
10032 files during postmaster startup</para></listitem>
10033 <listitem><para>Various memory leakage fixes</para></listitem>
10034 <listitem><para>Various portability improvements</para></listitem>
10035 <listitem><para>Update timezone data files</para></listitem>
10036 <listitem><para>Improve handling of DLL load failures on Windows</para></listitem>
10037 <listitem><para>Improve random-number generation on Windows</para></listitem>
10038 <listitem><para>Make <literal>psql -f filename</> return a nonzero exit code
10039 when opening the file fails</para></listitem>
10040 <listitem><para>Change <application>pg_dump</> to handle inherited check
10041 constraints more reliably</para></listitem>
10042 <listitem><para>Fix password prompting in <application>pg_restore</> on
10043 Windows</para></listitem>
10044 <listitem><para>Fix PL/PgSQL to handle <literal>var := var</> correctly when
10045 the variable is of pass-by-reference type</para></listitem>
10046 <listitem><para>Fix PL/Perl <literal>%_SHARED</> so it's actually
10047 shared</para></listitem>
10048 <listitem><para>Fix <filename>contrib/pg_autovacuum</> to allow sleep
10049 intervals over 2000 sec</para></listitem>
10050 <listitem><para>Update <filename>contrib/tsearch2</> to use current Snowball
10051 code</para></listitem>
10057 <sect1 id="release-8-0-3">
10058 <title>Release 8.0.3</title>
10061 <title>Release date</title>
10062 <simpara>2005-05-09</simpara>
10066 This release contains a variety of fixes from 8.0.2, including several
10067 security-related issues.
10071 <title>Migration to version 8.0.3</title>
10074 A dump/restore is not required for those running 8.0.X. However,
10075 it is one possible way of handling two significant security problems
10076 that have been found in the initial contents of 8.0.X system
10077 catalogs. A dump/initdb/reload sequence using 8.0.3's initdb will
10078 automatically correct these problems.
10082 The larger security problem is that the built-in character set encoding
10083 conversion functions can be invoked from SQL commands by unprivileged
10084 users, but the functions were not designed for such use and are not
10085 secure against malicious choices of arguments. The fix involves changing
10086 the declared parameter list of these functions so that they can no longer
10087 be invoked from SQL commands. (This does not affect their normal use
10088 by the encoding conversion machinery.)
10092 The lesser problem is that the <filename>contrib/tsearch2</> module
10093 creates several functions that are improperly declared to return
10094 <type>internal</> when they do not accept <type>internal</> arguments.
10095 This breaks type safety for all functions using <type>internal</>
10100 It is strongly recommended that all installations repair these errors,
10101 either by initdb or by following the manual repair procedure given
10102 below. The errors at least allow unprivileged database users to crash
10103 their server process, and might allow unprivileged users to gain the
10104 privileges of a database superuser.
10108 If you wish not to do an initdb, perform the same manual repair
10109 procedures shown in the <link linkend="release-7-4-8">7.4.8 release
10115 <title>Changes</title>
10118 <listitem><para>Change encoding function signature to prevent
10119 misuse</para></listitem>
10120 <listitem><para>Change <filename>contrib/tsearch2</> to avoid unsafe use of
10121 <type>INTERNAL</> function results</para></listitem>
10122 <listitem><para>Guard against incorrect second parameter to
10123 <function>record_out</></para></listitem>
10124 <listitem><para>Repair ancient race condition that allowed a transaction to be
10125 seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
10126 than for other purposes</para>
10127 <para>This is an extremely serious bug since it could lead to apparent
10128 data inconsistencies being briefly visible to applications.</para></listitem>
10129 <listitem><para>Repair race condition between relation extension and
10131 <para>This could theoretically have caused loss of a page's worth of
10132 freshly-inserted data, although the scenario seems of very low probability.
10133 There are no known cases of it having caused more than an Assert failure.
10135 <listitem><para>Fix comparisons of <type>TIME WITH TIME ZONE</> values</para>
10137 The comparison code was wrong in the case where the
10138 <literal>--enable-integer-datetimes</> configuration switch had been used.
10139 NOTE: if you have an index on a <type>TIME WITH TIME ZONE</> column,
10140 it will need to be <command>REINDEX</>ed after installing this update, because
10141 the fix corrects the sort order of column values.
10143 <listitem><para>Fix <function>EXTRACT(EPOCH)</> for
10144 <type>TIME WITH TIME ZONE</> values</para></listitem>
10145 <listitem><para>Fix mis-display of negative fractional seconds in
10146 <type>INTERVAL</> values</para>
10148 This error only occurred when the
10149 <literal>--enable-integer-datetimes</> configuration switch had been used.
10151 <listitem><para>Fix pg_dump to dump trigger names containing <literal>%</>
10152 correctly (Neil)</para></listitem>
10153 <listitem><para>Still more 64-bit fixes for
10154 <filename>contrib/intagg</></para></listitem>
10155 <listitem><para>Prevent incorrect optimization of functions returning
10156 <type>RECORD</></para></listitem>
10157 <listitem><para>Prevent crash on <literal>COALESCE(NULL,NULL)</></para></listitem>
10158 <listitem><para>Fix Borland makefile for libpq</para></listitem>
10159 <listitem><para>Fix <filename>contrib/btree_gist</> for <type>timetz</> type
10160 (Teodor)</para></listitem>
10161 <listitem><para>Make <command>pg_ctl</> check the PID found in
10162 <filename>postmaster.pid</> to see if it is still a live
10163 process</para></listitem>
10164 <listitem><para>Fix <command>pg_dump</>/<command>pg_restore</> problems caused
10165 by addition of dump timestamps</para></listitem>
10166 <listitem><para>Fix interaction between materializing holdable cursors and
10167 firing deferred triggers during transaction commit</para></listitem>
10168 <listitem><para>Fix memory leak in SQL functions returning pass-by-reference
10169 data types</para></listitem>
10175 <sect1 id="release-8-0-2">
10176 <title>Release 8.0.2</title>
10179 <title>Release date</title>
10180 <simpara>2005-04-07</simpara>
10184 This release contains a variety of fixes from 8.0.1.
10188 <title>Migration to version 8.0.2</title>
10191 A dump/restore is not required for those running 8.0.*.
10192 This release updates the major version number of the
10193 <productname>PostgreSQL</productname> libraries, so it might be
10194 necessary to re-link some user applications if they cannot
10195 find the properly-numbered shared library.
10200 <title>Changes</title>
10203 <listitem><para>Increment the major version number of all interface
10204 libraries (Bruce)</para>
10206 This should have been done in 8.0.0. It is required so 7.4.X versions
10207 of PostgreSQL client applications, like <application>psql</>,
10208 can be used on the same machine as 8.0.X applications. This might require
10209 re-linking user applications that use these libraries.
10211 <listitem><para>Add Windows-only <varname>wal_sync_method</> setting of
10212 <option>fsync_writethrough</> (Magnus, Bruce)</para>
10214 This setting causes <productname>PostgreSQL</productname> to write through
10215 any disk-drive write cache when writing to WAL.
10216 This behavior was formerly called <option>fsync</>, but was
10217 renamed because it acts quite differently from <option>fsync</> on other
10221 <listitem><para>Enable the <varname>wal_sync_method</> setting of
10222 <option>open_datasync</> on Windows, and make it the default for that
10223 platform (Magnus, Bruce)</para>
10225 Because the default is no longer <option>fsync_writethrough</>,
10226 data loss is possible during a power failure if the disk drive has
10227 write caching enabled. To turn off the write cache on Windows,
10228 from the <application>Device Manager</>, choose the drive properties,
10229 then <literal>Policies</>.
10232 <listitem><para>New cache management algorithm <acronym>2Q</> replaces
10233 <acronym>ARC</> (Tom)</para>
10235 This was done to avoid a pending US patent on <acronym>ARC</>. The
10236 <acronym>2Q</> code might be a few percentage points slower than
10237 <acronym>ARC</> for some work loads. A better cache management algorithm
10238 will appear in 8.1.
10240 <listitem><para>Planner adjustments to improve behavior on freshly-created
10241 tables (Tom)</para></listitem>
10242 <listitem><para>Allow plpgsql to assign to an element of an array that is
10243 initially <literal>NULL</> (Tom)</para>
10245 Formerly the array would remain <literal>NULL</>, but now it becomes a
10246 single-element array. The main SQL engine was changed to handle
10247 <command>UPDATE</> of a null array value this way in 8.0, but the similar
10248 case in plpgsql was overlooked.
10251 <listitem><para>Convert <literal>\r\n</> and <literal>\r</> to <literal>\n</>
10252 in plpython function bodies (Michael Fuhr)</para>
10254 This prevents syntax errors when plpython code is written on a Windows or
10258 <listitem><para>Allow SPI cursors to handle utility commands that return rows,
10259 such as <command>EXPLAIN</> (Tom)</para></listitem>
10260 <listitem><para>Fix <command>CLUSTER</> failure after <command>ALTER TABLE
10261 SET WITHOUT OIDS</> (Tom)</para></listitem>
10262 <listitem><para>Reduce memory usage of <command>ALTER TABLE ADD COLUMN</>
10263 (Neil)</para></listitem>
10264 <listitem><para>Fix <command>ALTER LANGUAGE RENAME</> (Tom)</para></listitem>
10265 <listitem><para>Document the Windows-only <literal>register</> and
10266 <literal>unregister</> options of <application>pg_ctl</> (Magnus)</para></listitem>
10267 <listitem><para>Ensure operations done during backend shutdown are counted by
10268 statistics collector</para>
10270 This is expected to resolve reports of <application>pg_autovacuum</>
10271 not vacuuming the system catalogs often enough — it was not being
10272 told about catalog deletions caused by temporary table removal during
10275 <listitem><para>Change the Windows default for configuration parameter
10276 <varname>log_destination</> to <option>eventlog</> (Magnus)</para>
10278 By default, a server running on Windows will now send log output to the
10279 Windows event logger rather than standard error.
10281 <listitem><para>Make Kerberos authentication work on Windows (Magnus)</para></listitem>
10282 <listitem><para>Allow <command>ALTER DATABASE RENAME</> by superusers
10283 who aren't flagged as having CREATEDB privilege (Tom)</para></listitem>
10284 <listitem><para>Modify WAL log entries for <command>CREATE</> and
10285 <command>DROP DATABASE</> to not specify absolute paths (Tom)</para>
10286 <para>This allows point-in-time recovery on a different machine with possibly
10287 different database location. Note that <command>CREATE TABLESPACE</> still
10288 poses a hazard in such situations.
10290 <listitem><para>Fix crash from a backend exiting with an open transaction
10291 that created a table and opened a cursor on it (Tom)</para></listitem>
10292 <listitem><para>Fix <function>array_map()</> so it can call PL functions
10293 (Tom)</para></listitem>
10294 <listitem><para>Several <filename>contrib/tsearch2</> and
10295 <filename>contrib/btree_gist</> fixes (Teodor)
10297 <listitem><para>Fix crash of some <filename>contrib/pgcrypto</>
10298 functions on some platforms (Marko Kreen)</para></listitem>
10299 <listitem><para>Fix <filename>contrib/intagg</> for 64-bit platforms
10300 (Tom)</para></listitem>
10301 <listitem><para>Fix ecpg bugs in parsing of <command>CREATE</> statement
10302 (Michael)</para></listitem>
10303 <listitem><para>Work around gcc bug on powerpc and amd64 causing problems in
10304 ecpg (Christof Petig)</para></listitem>
10305 <listitem><para>Do not use locale-aware versions of <function>upper()</>,
10306 <function>lower()</>, and <function>initcap()</> when the locale is
10307 <literal>C</> (Bruce)</para>
10309 This allows these functions to work on platforms that generate errors
10310 for non-7-bit data when the locale is <literal>C</>.
10312 <listitem><para>Fix <function>quote_ident()</> to quote names that match keywords (Tom)</para></listitem>
10313 <listitem><para>Fix <function>to_date()</> to behave reasonably when
10314 <literal>CC</> and <literal>YY</> fields are both used (Karel)</para></listitem>
10315 <listitem><para>Prevent <function>to_char(interval)</> from failing
10316 when given a zero-month interval (Tom)</para></listitem>
10317 <listitem><para>Fix wrong week returned by <function>date_trunc('week')</>
10320 <function>date_trunc('week')</>
10321 returned the wrong year for the first few days of January in some years.
10323 <listitem><para>Use the correct default mask length for class <literal>D</>
10324 addresses in <type>INET</> data types (Tom)</para></listitem>
10330 <sect1 id="release-8-0-1">
10331 <title>Release 8.0.1</title>
10334 <title>Release date</title>
10335 <simpara>2005-01-31</simpara>
10339 This release contains a variety of fixes from 8.0.0, including several
10340 security-related issues.
10344 <title>Migration to version 8.0.1</title>
10347 A dump/restore is not required for those running 8.0.0.
10352 <title>Changes</title>
10355 <listitem><para>Disallow <command>LOAD</> to non-superusers</para>
10357 On platforms that will automatically execute initialization functions of a
10358 shared library (this includes at least Windows and ELF-based Unixen),
10359 <command>LOAD</> can be used to make the server execute arbitrary code.
10360 Thanks to NGS Software for reporting this.</para></listitem>
10361 <listitem><para>Check that creator of an aggregate function has the right to
10362 execute the specified transition functions</para>
10364 This oversight made it possible to bypass denial of EXECUTE
10365 permission on a function.</para></listitem>
10366 <listitem><para>Fix security and 64-bit issues in
10367 contrib/intagg</para></listitem>
10368 <listitem><para>Add needed STRICT marking to some contrib functions (Kris
10369 Jurka)</para></listitem>
10370 <listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
10371 many parameters (Neil)</para></listitem>
10372 <listitem><para>Make <command>ALTER TABLE ADD COLUMN</> enforce domain
10373 constraints in all cases</para></listitem>
10374 <listitem><para>Fix planning error for FULL and RIGHT outer joins</para>
10376 The result of the join was mistakenly supposed to be sorted the same as the
10377 left input. This could not only deliver mis-sorted output to the user, but
10378 in case of nested merge joins could give outright wrong answers.
10380 <listitem><para>Improve planning of grouped aggregate queries</para></listitem>
10381 <listitem><para><command>ROLLBACK TO <replaceable>savepoint</></command>
10382 closes cursors created since the savepoint</para></listitem>
10383 <listitem><para>Fix inadequate backend stack size on Windows</para></listitem>
10384 <listitem><para>Avoid SHGetSpecialFolderPath() on Windows
10385 (Magnus)</para></listitem>
10386 <listitem><para>Fix some problems in running pg_autovacuum as a Windows
10387 service (Dave Page)</para></listitem>
10388 <listitem><para>Multiple minor bug fixes in
10389 pg_dump/pg_restore</para></listitem>
10390 <listitem><para>Fix ecpg segfault with named structs used in
10391 typedefs (Michael)</para></listitem>
10397 <sect1 id="release-8-0">
10398 <title>Release 8.0</title>
10401 <title>Release date</title>
10402 <simpara>2005-01-19</simpara>
10406 <title>Overview</title>
10409 Major changes in this release:
10415 Microsoft Windows Native Server
10420 This is the first <productname>PostgreSQL</productname> release
10421 to run natively on <trademark class=registered>Microsoft Windows</> as
10422 a server. It can run as a <productname>Windows</> service. This
10423 release supports NT-based Windows releases like
10424 <productname>Windows 2000 SP4</>, <productname>Windows XP</>, and
10425 <productname>Windows 2003</>. Older releases like
10426 <productname>Windows 95</>, <productname>Windows 98</>, and
10427 <productname>Windows ME</> are not supported because these operating
10428 systems do not have the infrastructure to support
10429 <productname>PostgreSQL</productname>. A separate installer
10430 project has been created to ease installation on
10431 <productname>Windows</> — see <ulink
10432 url="http://www.postgresql.org/ftp/win32/"></ulink>.
10436 Although tested throughout our release cycle, the Windows port
10437 does not have the benefit of years of use in production
10438 environments that <productname>PostgreSQL</productname> has on
10439 Unix platforms. Therefore it should be treated with the same
10440 level of caution as you would a new product.
10444 Previous releases required the Unix emulation toolkit
10445 <productname>Cygwin</> in order to run the server on Windows
10446 operating systems. <productname>PostgreSQL</productname> has
10447 supported native clients on Windows for many years.
10459 Savepoints allow specific parts of a transaction to be aborted
10460 without affecting the remainder of the transaction. Prior
10461 releases had no such capability; there was no way to recover
10462 from a statement failure within a transaction except by
10463 aborting the whole transaction. This feature is valuable for
10464 application writers who require error recovery within a
10465 complex transaction.
10472 Point-In-Time Recovery
10477 In previous releases there was no way to recover from disk
10478 drive failure except to restore from a previous backup or use
10479 a standby replication server. Point-in-time recovery allows
10480 continuous backup of the server. You can recover either to
10481 the point of failure or to some transaction in the past.
10493 Tablespaces allow administrators to select different file systems
10494 for storage of individual tables, indexes, and databases.
10495 This improves performance and control over disk space
10496 usage. Prior releases used <application>initlocation</> and
10497 manual symlink management for such tasks.
10504 Improved Buffer Management, <command>CHECKPOINT</command>,
10505 <command>VACUUM</command>
10510 This release has a more intelligent buffer replacement strategy,
10511 which will make better use of available shared buffers and
10512 improve performance. The performance impact of vacuum and
10513 checkpoints is also lessened.
10520 Change Column Types
10525 A column's data type can now be changed with <command>ALTER
10533 New Perl Server-Side Language
10538 A new version of the <application>plperl</> server-side language now
10539 supports a persistent shared storage area, triggers, returning records
10540 and arrays of records, and SPI calls to access the database.
10547 Comma-separated-value (CSV) support in <command>COPY</command>
10552 <command>COPY</command> can now read and write
10553 comma-separated-value files. It has the flexibility to
10554 interpret nonstandard quoting and separation characters too.
10563 <title>Migration to version 8.0</title>
10566 A dump/restore using <application>pg_dump</application> is
10567 required for those wishing to migrate data from any previous
10572 Observe the following incompatibilities:
10579 In <option>READ COMMITTED</> serialization mode, volatile functions
10580 now see the results of concurrent transactions committed up to the
10581 beginning of each statement within the function, rather than up to the
10582 beginning of the interactive command that called the function.
10588 Functions declared <option>STABLE</> or <option>IMMUTABLE</> always
10589 use the snapshot of the calling query, and therefore do not see the
10590 effects of actions taken after the calling query starts, whether in
10591 their own transaction or other transactions. Such a function must be
10592 read-only, too, meaning that it cannot use any SQL commands other than
10593 <command>SELECT</>.
10599 Nondeferred <option>AFTER</> triggers are now fired immediately
10600 after completion of the triggering query, rather than upon
10601 finishing the current interactive command. This makes a
10602 difference when the triggering query occurred within a function:
10603 the trigger is invoked before the function proceeds to its next
10610 Server configuration parameters <varname>virtual_host</> and
10611 <varname>tcpip_socket</> have been replaced with a more general
10612 parameter <varname>listen_addresses</>. Also, the server now listens on
10613 <literal>localhost</> by default, which eliminates the need for the
10614 <literal>-i</> postmaster switch in many scenarios.
10620 Server configuration parameters <varname>SortMem</> and
10621 <varname>VacuumMem</> have been renamed to <varname>work_mem</>
10622 and <varname>maintenance_work_mem</> to better reflect their
10623 use. The original names are still supported in
10624 <command>SET</command> and <command>SHOW</command>.
10630 Server configuration parameters <varname>log_pid</>,
10631 <varname>log_timestamp</>, and <varname>log_source_port</> have been
10632 replaced with a more general parameter <varname>log_line_prefix</>.
10638 Server configuration parameter <varname>syslog</> has been
10639 replaced with a more logical <varname>log_destination</> variable to
10640 control the log output destination.
10646 Server configuration parameter <varname>log_statement</> has been
10647 changed so it can selectively log just database modification or
10648 data definition statements. Server configuration parameter
10649 <varname>log_duration</> now prints only when <varname>log_statement</>
10656 Server configuration parameter <varname>max_expr_depth</> parameter has
10657 been replaced with <varname>max_stack_depth</> which measures the
10658 physical stack size rather than the expression nesting depth. This
10659 helps prevent session termination due to stack overflow caused by
10660 recursive functions.
10666 The <function>length()</> function no longer counts trailing spaces in
10667 <type>CHAR(n)</> values.
10673 Casting an integer to <type>BIT(N)</> selects the rightmost N bits of the
10674 integer, not the leftmost N bits as before.
10680 Updating an element or slice of a NULL array value now produces
10681 a nonnull array result, namely an array containing
10682 just the assigned-to positions.
10688 Syntax checking of array input values has been tightened up
10689 considerably. Junk that was previously allowed in odd places with
10690 odd results now causes an error. Empty-string element values
10691 must now be written as <literal>""</>, rather than writing nothing.
10692 Also changed behavior with respect to whitespace surrounding
10693 array elements: trailing whitespace is now ignored, for symmetry
10694 with leading whitespace (which has always been ignored).
10700 Overflow in integer arithmetic operations is now detected and
10701 reported as an error.
10707 The arithmetic operators associated with the single-byte
10708 <type>"char"</> data type have been removed.
10714 The <function>extract()</> function (also called
10715 <function>date_part</>) now returns the proper year for BC dates.
10716 It previously returned one less than the correct year. The
10717 function now also returns the proper values for millennium and
10724 <type>CIDR</> values now must have their nonmasked bits be zero.
10725 For example, we no longer allow
10726 <literal>204.248.199.1/31</literal> as a <type>CIDR</> value. Such
10727 values should never have been accepted by
10728 <productname>PostgreSQL</productname> and will now be rejected.
10734 <command>EXECUTE</command> now returns a completion tag that
10735 matches the executed statement.
10741 <application>psql</>'s <command>\copy</> command now reads or
10742 writes to the query's <literal>stdin/stdout</>, rather than
10743 <application>psql</>'s <literal>stdin/stdout</>. The previous
10744 behavior can be accessed via new
10745 <option>pstdin</>/<option>pstdout</> parameters.
10751 The JDBC client interface has been removed from the core
10752 distribution, and is now hosted at <ulink url=
10753 "http://jdbc.postgresql.org"></ulink>.
10759 The Tcl client interface has also been removed. There are several
10760 Tcl interfaces now hosted at <ulink url=
10761 "http://gborg.postgresql.org"></ulink>.
10767 The server now uses its own time zone database, rather than the
10768 one supplied by the operating system. This will provide consistent
10769 behavior across all platforms. In most cases, there should be
10770 little noticeable difference in time zone behavior, except that
10771 the time zone names used by <command>SET</>/<command>SHOW</>
10772 <varname>TimeZone</> might be different from what your platform provides.
10778 <application>Configure</>'s threading option no longer requires
10779 users to run tests or edit configuration files; threading options
10780 are now detected automatically.
10786 Now that tablespaces have been implemented,
10787 <application>initlocation</> has been removed.
10793 The API for user-defined GiST indexes has been changed. The
10794 Union and PickSplit methods are now passed a pointer to a
10795 special <structname>GistEntryVector</structname> structure,
10796 rather than a <type>bytea</type>.
10804 <title>Deprecated Features</title>
10807 Some aspects of <productname>PostgreSQL</productname>'s behavior
10808 have been determined to be suboptimal. For the sake of backward
10809 compatibility these have not been removed in 8.0, but they are
10810 considered deprecated and will be removed in the next major
10817 The 8.1 release will remove the <function>to_char()</> function
10824 The server now warns of empty strings passed to
10825 <type>oid</type>/<type>float4</type>/<type>float8</type> data
10826 types, but continues to interpret them as zeroes as before.
10827 In the next major release, empty strings will be considered
10828 invalid input for these data types.
10834 By default, tables in <productname>PostgreSQL</productname> 8.0
10835 and earlier are created with <type>OID</>s. In the next release,
10836 this will <emphasis>not</emphasis> be the case: to create a table
10837 that contains <type>OID</>s, the <option>WITH OIDS</> clause must
10838 be specified or the <varname>default_with_oids</varname>
10839 configuration parameter must be set. Users are encouraged to
10840 explicitly specify <option>WITH OIDS</> if their tables
10841 require OIDs for compatibility with future releases of
10842 <productname>PostgreSQL</productname>.
10850 <title>Changes</title>
10853 Below you will find a detailed account of the changes between
10854 release 8.0 and the previous major release.
10858 <title>Performance Improvements</title>
10863 Support cross-data-type index usage (Tom)
10866 Before this change, many queries would not use an index if the data
10867 types did not match exactly. This improvement makes index usage more
10868 intuitive and consistent.
10874 New buffer replacement strategy that improves caching (Jan)
10877 Prior releases used a least-recently-used (LRU) cache to keep
10878 recently referenced pages in memory. The LRU algorithm
10879 did not consider the number of times a specific cache entry was
10880 accessed, so large table scans could force out useful cache pages.
10881 The new cache algorithm uses four separate lists to track most
10882 recently used and most frequently used cache pages and dynamically
10883 optimize their replacement based on the work load. This should
10884 lead to much more efficient use of the shared buffer cache.
10885 Administrators who have tested shared buffer sizes in the past
10886 should retest with this new cache replacement policy.
10892 Add subprocess to write dirty buffers periodically to reduce
10893 checkpoint writes (Jan)
10896 In previous releases, the checkpoint process, which runs every few
10897 minutes, would write all dirty buffers to the operating system's
10898 buffer cache then flush all dirty operating system buffers to
10899 disk. This resulted in a periodic spike in disk usage that often
10900 hurt performance. The new code uses a background writer to trickle
10901 disk writes at a steady pace so checkpoints have far fewer dirty
10902 pages to write to disk. Also, the new code does not issue a global
10903 <function>sync()</> call, but instead <function>fsync()</>s just
10904 the files written since the last checkpoint. This should improve
10905 performance and minimize degradation during checkpoints.
10911 Add ability to prolong vacuum to reduce performance impact (Jan)
10914 On busy systems, <command>VACUUM</command> performs many I/O
10915 requests which can hurt performance for other users. This
10916 release allows you to slow down <command>VACUUM</command> to
10917 reduce its impact on other users, though this increases the
10918 total duration of <command>VACUUM</command>.
10924 Improve B-tree index performance for duplicate keys (Dmitry Tkach, Tom)
10927 This improves the way indexes are scanned when many duplicate
10928 values exist in the index.
10934 Use dynamically-generated table size estimates while planning (Tom)
10937 Formerly the planner estimated table sizes using the values seen
10938 by the last <command>VACUUM</command> or <command>ANALYZE</command>,
10939 both as to physical table size (number of pages) and number of rows.
10940 Now, the current physical table size is obtained from the kernel,
10941 and the number of rows is estimated by multiplying the table size
10942 by the row density (rows per page) seen by the last
10943 <command>VACUUM</command> or <command>ANALYZE</command>. This should
10944 produce more reliable estimates in cases where the table size has
10945 changed significantly since the last housekeeping command.
10951 Improved index usage with <literal>OR</> clauses (Tom)
10954 This allows the optimizer to use indexes in statements with many OR
10955 clauses that would not have been indexed in the past. It can also use
10956 multi-column indexes where the first column is specified and the second
10957 column is part of an <literal>OR</> clause.
10963 Improve matching of partial index clauses (Tom)
10966 The server is now smarter about using partial indexes in queries
10967 involving complex <option>WHERE</> clauses.
10973 Improve performance of the GEQO optimizer (Tom)
10976 The GEQO optimizer is used to plan queries involving many tables (by
10977 default, twelve or more). This release speeds up the way queries are
10978 analyzed to decrease time spent in optimization.
10984 Miscellaneous optimizer improvements
10987 There is not room here to list all the minor improvements made, but
10988 numerous special cases work better than in prior releases.
10994 Improve lookup speed for C functions (Tom)
10997 This release uses a hash table to lookup information for dynamically
10998 loaded C functions. This improves their speed so they perform nearly as
10999 quickly as functions that are built into the server executable.
11005 Add type-specific <command>ANALYZE</command> statistics
11006 capability (Mark Cave-Ayland)
11009 This feature allows more flexibility in generating statistics
11010 for nonstandard data types.
11016 <command>ANALYZE</command> now collects statistics for
11017 expression indexes (Tom)
11020 Expression indexes (also called functional indexes) allow users to
11021 index not just columns but the results of expressions and function
11022 calls. With this release, the optimizer can gather and use statistics
11023 about the contents of expression indexes. This will greatly improve
11024 the quality of planning for queries in which an expression index is
11031 New two-stage sampling method for <command>ANALYZE</command>
11035 This gives better statistics when the density of valid rows is very
11036 different in different regions of a table.
11042 Speed up <command>TRUNCATE</command> (Tom)
11045 This buys back some of the performance loss observed in 7.4, while still
11046 keeping <command>TRUNCATE</command> transaction-safe.
11055 <title>Server Changes</title>
11060 Add WAL file archiving and point-in-time recovery (Simon Riggs)
11066 Add tablespaces so admins can control disk layout (Gavin)
11072 Add a built-in log rotation program (Andreas Pflug)
11075 It is now possible to log server messages conveniently without
11076 relying on either <application>syslog</> or an external log
11083 Add new read-only server configuration parameters to show server
11084 compile-time settings: <varname>block_size</>,
11085 <varname>integer_datetimes</>, <varname>max_function_args</>,
11086 <varname>max_identifier_length</>, <varname>max_index_keys</> (Joe)
11092 Make quoting of <literal>sameuser</>, <literal>samegroup</>, and
11093 <literal>all</> remove special meaning of these terms in
11094 <filename>pg_hba.conf</> (Andrew)
11100 Use clearer IPv6 name <literal>::1/128</> for
11101 <literal>localhost</> in default <filename>pg_hba.conf</> (Andrew)
11107 Use CIDR format in <filename>pg_hba.conf</> examples (Andrew)
11113 Rename server configuration parameters <varname>SortMem</> and
11114 <varname>VacuumMem</> to <varname>work_mem</> and
11115 <varname>maintenance_work_mem</> (Old names still supported) (Tom)
11118 This change was made to clarify that bulk operations such as index and
11119 foreign key creation use <varname>maintenance_work_mem</>, while
11120 <varname>work_mem</> is for workspaces used during query execution.
11126 Allow logging of session disconnections using server configuration
11127 <varname>log_disconnections</> (Andrew)
11133 Add new server configuration parameter <varname>log_line_prefix</> to
11134 allow control of information emitted in each log line (Andrew)
11137 Available information includes user name, database name, remote IP
11138 address, and session start time.
11144 Remove server configuration parameters <varname>log_pid</>,
11145 <varname>log_timestamp</>, <varname>log_source_port</>; functionality
11146 superseded by <varname>log_line_prefix</> (Andrew)
11152 Replace the <varname>virtual_host</> and <varname>tcpip_socket</>
11153 parameters with a unified <varname>listen_addresses</> parameter
11157 <varname>virtual_host</> could only specify a single IP address to
11158 listen on. <varname>listen_addresses</> allows multiple addresses
11165 Listen on localhost by default, which eliminates the need for the
11166 <option>-i</> postmaster switch in many scenarios (Andrew)
11169 Listening on localhost (<literal>127.0.0.1</>) opens no new
11170 security holes but allows configurations like Windows and JDBC,
11171 which do not support local sockets, to work without special
11178 Remove <varname>syslog</> server configuration parameter, and add more
11179 logical <varname>log_destination</> variable to control log output
11186 Change server configuration parameter <varname>log_statement</> to take
11187 values <varname>all</>, <varname>mod</>, <varname>ddl</>, or
11188 <varname>none</> to select which queries are logged (Bruce)
11191 This allows administrators to log only data definition changes or
11192 only data modification statements.
11198 Some logging-related configuration parameters could formerly be adjusted
11199 by ordinary users, but only in the <quote>more verbose</> direction.
11200 They are now treated more strictly: only superusers can set them.
11201 However, a superuser can use <command>ALTER USER</> to provide per-user
11202 settings of these values for non-superusers. Also, it is now possible
11203 for superusers to set values of superuser-only configuration parameters
11204 via <literal>PGOPTIONS</>.
11210 Allow configuration files to be placed outside the data directory (mlw)
11213 By default, configuration files are kept in the cluster's top directory.
11214 With this addition, configuration files can be placed outside the
11215 data directory, easing administration.
11221 Plan prepared queries only when first executed so constants can be
11222 used for statistics (Oliver Jowett)
11225 Prepared statements plan queries once and execute them many
11226 times. While prepared queries avoid the overhead of re-planning
11227 on each use, the quality of the plan suffers from not knowing the exact
11228 parameters to be used in the query. In this release, planning of
11229 unnamed prepared statements is delayed until the first execution,
11230 and the actual parameter values of that execution are used as
11231 optimization hints. This allows use of out-of-line parameter passing
11232 without incurring a performance penalty.
11238 Allow <command>DECLARE CURSOR</command> to take parameters
11242 It is now useful to issue <command>DECLARE CURSOR</command> in a
11243 <function>Parse</> message with parameters. The parameter values
11244 sent at <function>Bind</> time will be substituted into the
11245 execution of the cursor's query.
11251 Fix hash joins and aggregates of <type>inet</type> and
11252 <type>cidr</type> data types (Tom)
11255 Release 7.4 handled hashing of mixed <type>inet</type> and
11256 <type>cidr</type> values incorrectly. (This bug did not exist
11257 in prior releases because they wouldn't try to hash either
11264 Make <varname>log_duration</> print only when <varname>log_statement</>
11265 prints the query (Ed L.)
11274 <title>Query Changes</title>
11279 Add savepoints (nested transactions) (Alvaro)
11285 Unsupported isolation levels are now accepted and promoted to the
11286 nearest supported level (Peter)
11289 The SQL specification states that if a database doesn't support a
11290 specific isolation level, it should use the next more restrictive level.
11291 This change complies with that recommendation.
11297 Allow <command>BEGIN WORK</command> to specify transaction
11298 isolation levels like <command>START TRANSACTION</command> does
11305 Fix table permission checking for cases in which rules generate
11306 a query type different from the originally submitted query (Tom)
11312 Implement dollar quoting to simplify single-quote usage (Andrew, Tom,
11316 In previous releases, because single quotes had to be used to
11317 quote a function's body, the use of single quotes inside the
11318 function text required use of two single quotes or other error-prone
11319 notations. With this release we add the ability to use "dollar
11320 quoting" to quote a block of text. The ability to use different
11321 quoting delimiters at different nesting levels greatly simplifies
11322 the task of quoting correctly, especially in complex functions.
11323 Dollar quoting can be used anywhere quoted text is needed.
11329 Make <literal>CASE val WHEN compval1 THEN ...</> evaluate <literal>val</> only once (Tom)
11332 <option>CASE</> no longer evaluates the tested expression multiple
11333 times. This has benefits when the expression is complex or is
11340 Test <option>HAVING</> before computing target list of an
11341 aggregate query (Tom)
11344 Fixes improper failure of cases such as <literal>SELECT SUM(win)/SUM(lose)
11345 ... GROUP BY ... HAVING SUM(lose) > 0</>. This should work but formerly
11346 could fail with divide-by-zero.
11352 Replace <varname>max_expr_depth</> parameter with
11353 <varname>max_stack_depth</> parameter, measured in kilobytes of stack
11357 This gives us a fairly bulletproof defense against crashing due to
11358 runaway recursive functions. Instead of measuring the depth of expression
11359 nesting, we now directly measure the size of the execution stack.
11365 Allow arbitrary row expressions (Tom)
11368 This release allows SQL expressions to contain arbitrary composite
11369 types, that is, row values. It also allows functions to more easily
11370 take rows as arguments and return row values.
11376 Allow <option>LIKE</>/<option>ILIKE</> to be used as the operator
11377 in row and subselect comparisons (Fabien Coelho)
11383 Avoid locale-specific case conversion of basic ASCII letters in
11384 identifiers and keywords (Tom)
11387 This solves the <quote>Turkish problem</> with mangling of words
11388 containing <literal>I</> and <literal>i</>. Folding of characters
11389 outside the 7-bit-ASCII set is still locale-aware.
11395 Improve syntax error reporting (Fabien, Tom)
11398 Syntax error reports are more useful than before.
11404 Change <command>EXECUTE</command> to return a completion tag
11405 matching the executed statement (Kris Jurka)
11408 Previous releases return an <command>EXECUTE</command> tag for
11409 any <command>EXECUTE</command> call. In this release, the tag
11410 returned will reflect the command executed.
11416 Avoid emitting <option>NATURAL CROSS JOIN</> in rule listings (Tom)
11419 Such a clause makes no logical sense, but in some cases the rule
11420 decompiler formerly produced this syntax.
11429 <title>Object Manipulation Changes</title>
11434 Add <command>COMMENT ON</> for casts, conversions, languages,
11435 operator classes, and large objects (Christopher)
11441 Add new server configuration parameter <varname>default_with_oids</> to
11442 control whether tables are created with <type>OID</>s by default (Neil)
11445 This allows administrators to control whether <command>CREATE
11446 TABLE</command> commands create tables with or without <type>OID</>
11447 columns by default. (Note: the current factory default setting for
11448 <varname>default_with_oids</> is <literal>TRUE</>, but the default
11449 will become <literal>FALSE</> in future releases.)
11455 Add <option>WITH</> / <option>WITHOUT OIDS</> clause to
11456 <command>CREATE TABLE AS</command> (Neil)
11462 Allow <command>ALTER TABLE DROP COLUMN</> to drop an <type>OID</>
11463 column (<command>ALTER TABLE SET WITHOUT OIDS</> still works)
11470 Allow composite types as table columns (Tom)
11476 Allow <command>ALTER ... ADD COLUMN</> with defaults and
11477 <option>NOT NULL</> constraints; works per SQL spec (Rod)
11480 It is now possible for <option>ADD COLUMN</> to create a column
11481 that is not initially filled with NULLs, but with a specified
11488 Add <command>ALTER COLUMN TYPE</> to change column's type (Rod)
11491 It is now possible to alter a column's data type without dropping
11492 and re-adding the column.
11498 Allow multiple <command>ALTER</> actions in a single <command>ALTER
11499 TABLE</command> command (Rod)
11502 This is particularly useful for <command>ALTER</> commands that
11503 rewrite the table (which include <option>ALTER COLUMN TYPE</> and
11504 <option>ADD COLUMN</> with a default). By grouping
11505 <command>ALTER</> commands together, the table need be rewritten
11512 Allow <command>ALTER TABLE</command> to add <type>SERIAL</type>
11516 This falls out from the new capability of specifying defaults for new
11523 Allow changing the owners of aggregates, conversions, databases,
11524 functions, operators, operator classes, schemas, types, and tablespaces
11525 (Christopher, Euler Taveira de Oliveira)
11528 Previously this required modifying the system tables directly.
11534 Allow temporary object creation to be limited to <option>SECURITY
11535 DEFINER</> functions (Sean Chittenden)
11541 Add <option>ALTER TABLE ... SET WITHOUT CLUSTER</> (Christopher)
11544 Prior to this release, there was no way to clear an auto-cluster
11545 specification except to modify the system tables.
11551 Constraint/Index/<type>SERIAL</> names are now
11552 <replaceable>table_column_type</>
11553 with numbers appended to guarantee uniqueness within the schema
11557 The SQL specification states that such names should be unique
11564 Add <function>pg_get_serial_sequence()</> to return a
11565 <type>SERIAL</> column's sequence name (Christopher)
11568 This allows automated scripts to reliably find the <type>SERIAL</>
11575 Warn when primary/foreign key data type mismatch requires costly lookup
11581 New <command>ALTER INDEX</> command to allow moving of indexes
11582 between tablespaces (Gavin)
11588 Make <command>ALTER TABLE OWNER</> change dependent sequence
11589 ownership too (Alvaro)
11599 <title>Utility Command Changes</title>
11604 Allow <command>CREATE SCHEMA</command> to create triggers,
11605 indexes, and sequences (Neil)
11611 Add <option>ALSO</> keyword to <command>CREATE RULE</command> (Fabien
11615 This allows <option>ALSO</> to be added to rule creation to contrast it with
11616 <option>INSTEAD</> rules.
11622 Add <option>NOWAIT</> option to <command>LOCK</command> (Tatsuo)
11625 This allows the <command>LOCK</command> command to fail if it
11626 would have to wait for the requested lock.
11632 Allow <command>COPY</command> to read and write
11633 comma-separated-value (CSV) files (Andrew, Bruce)
11639 Generate error if the <command>COPY</command> delimiter and NULL
11640 string conflict (Bruce)
11646 <command>GRANT</command>/<command>REVOKE</command> behavior
11647 follows the SQL spec more closely
11653 Avoid locking conflict between <command>CREATE INDEX</command>
11654 and <command>CHECKPOINT</command> (Tom)
11657 In 7.3 and 7.4, a long-running B-tree index build could block concurrent
11658 <command>CHECKPOINT</>s from completing, thereby causing WAL bloat because the
11659 WAL log could not be recycled.
11665 Database-wide <command>ANALYZE</command> does not hold locks
11666 across tables (Tom)
11669 This reduces the potential for deadlocks against other backends
11670 that want exclusive locks on tables. To get the benefit of this
11671 change, do not execute database-wide <command>ANALYZE</command>
11672 inside a transaction block (<command>BEGIN</command> block); it
11673 must be able to commit and start a new transaction for each
11680 <command>REINDEX</command> does not exclusively lock the index's
11681 parent table anymore
11684 The index itself is still exclusively locked, but readers of the
11685 table can continue if they are not using the particular index
11692 Erase MD5 user passwords when a user is renamed (Bruce)
11695 <productname>PostgreSQL</productname> uses the user name as salt
11696 when encrypting passwords via MD5. When a user's name is changed,
11697 the salt will no longer match the stored MD5 password, so the
11698 stored password becomes useless. In this release a notice is
11699 generated and the password is cleared. A new password must then
11700 be assigned if the user is to be able to log in with a password.
11706 New <application>pg_ctl</> <option>kill</> option for Windows (Andrew)
11709 Windows does not have a <literal>kill</> command to send signals to
11710 backends so this capability was added to <application>pg_ctl</>.
11716 Information schema improvements
11722 Add <option>--pwfile</> option to
11723 <application>initdb</application> so the initial password can be
11724 set by GUI tools (Magnus)
11730 Detect locale/encoding mismatch in
11731 <application>initdb</application> (Peter)
11737 Add <option>register</> command to <application>pg_ctl</> to
11738 register Windows operating system service (Dave Page)
11747 <title>Data Type and Function Changes</title>
11752 More complete support for composite types (row types) (Tom)
11755 Composite values can be used in many places where only scalar values
11762 Reject nonrectangular array values as erroneous (Joe)
11765 Formerly, <function>array_in</> would silently build a
11772 Overflow in integer arithmetic operations is now detected (Tom)
11778 The arithmetic operators associated with the single-byte
11779 <type>"char"</> data type have been removed.
11782 Formerly, the parser would select these operators in many situations
11783 where an <quote>unable to select an operator</> error would be more
11784 appropriate, such as <literal>null * null</>. If you actually want
11785 to do arithmetic on a <type>"char"</> column, you can cast it to
11786 integer explicitly.
11792 Syntax checking of array input values considerably tightened up (Joe)
11795 Junk that was previously allowed in odd places with odd results
11796 now causes an <literal>ERROR</>, for example, non-whitespace
11797 after the closing right brace.
11803 Empty-string array element values must now be written as
11804 <literal>""</>, rather than writing nothing (Joe)
11807 Formerly, both ways of writing an empty-string element value were
11808 allowed, but now a quoted empty string is required. The case where
11809 nothing at all appears will probably be considered to be a NULL
11810 element value in some future release.
11816 Array element trailing whitespace is now ignored (Joe)
11819 Formerly leading whitespace was ignored, but trailing whitespace
11820 between an element value and the delimiter or right brace was
11821 significant. Now trailing whitespace is also ignored.
11827 Emit array values with explicit array bounds when lower bound is not one
11834 Accept <literal>YYYY-monthname-DD</> as a date string (Tom)
11840 Make <function>netmask</> and <function>hostmask</> functions
11841 return maximum-length mask length (Tom)
11847 Change factorial function to return <type>numeric</type> (Gavin)
11850 Returning <type>numeric</type> allows the factorial function to
11851 work for a wider range of input values.
11857 <function>to_char</>/<function>to_date()</> date conversion
11858 improvements (Kurt Roeckx, Fabien Coelho)
11864 Make <function>length()</> disregard trailing spaces in
11865 <type>CHAR(n)</> (Gavin)
11868 This change was made to improve consistency: trailing spaces are
11869 semantically insignificant in <type>CHAR(n)</> data, so they
11870 should not be counted by <function>length()</>.
11876 Warn about empty string being passed to
11877 <type>OID</>/<type>float4</>/<type>float8</> data types (Neil)
11880 8.1 will throw an error instead.
11886 Allow leading or trailing whitespace in
11887 <type>int2</>/<type>int4</>/<type>int8</>/<type>float4</>/<type>float8</>
11895 Better support for IEEE <literal>Infinity</> and <literal>NaN</>
11896 values in <type>float4</type>/<type>float8</type> (Neil)
11899 These should now work on all platforms that support IEEE-compliant
11900 floating point arithmetic.
11906 Add <option>week</> option to <function>date_trunc()</> (Robert Creager)
11912 Fix <function>to_char</function> for <literal>1 BC</>
11913 (previously it returned <literal>1 AD</>) (Bruce)
11919 Fix <function>date_part(year)</> for BC dates (previously it
11920 returned one less than the correct year) (Bruce)
11926 Fix <function>date_part()</> to return the proper millennium and
11927 century (Fabien Coelho)
11930 In previous versions, the century and millennium results had a wrong
11931 number and started in the wrong year, as compared to standard
11932 reckoning of such things.
11938 Add <function>ceiling()</> as an alias for <function>ceil()</>,
11939 and <function>power()</> as an alias for <function>pow()</> for
11940 standards compliance (Neil)
11946 Change <function>ln()</>, <function>log()</>,
11947 <function>power()</>, and <function>sqrt()</> to emit the correct
11948 <literal>SQLSTATE</> error codes for certain error conditions, as
11949 specified by SQL:2003 (Neil)
11955 Add <function>width_bucket()</> function as defined by SQL:2003 (Neil)
11961 Add <function>generate_series()</> functions to simplify working
11962 with numeric sets (Joe)
11968 Fix <function>upper/lower/initcap()</> functions to work with
11969 multibyte encodings (Tom)
11975 Add boolean and bitwise integer <option>AND</>/<option>OR</>
11976 aggregates (Fabien Coelho)
11982 New session information functions to return network addresses for client
11983 and server (Sean Chittenden)
11989 Add function to determine the area of a closed path (Sean Chittenden)
11995 Add function to send cancel request to other backends (Magnus)
12001 Add <type>interval</> plus <type>datetime</> operators (Tom)
12004 The reverse ordering, <type>datetime</> plus <type>interval</>,
12005 was already supported, but both are required by the SQL standard.
12011 Casting an integer to <type>BIT(N)</> selects the rightmost N bits
12016 In prior releases, the leftmost N bits were selected, but this was
12017 deemed unhelpful, not to mention inconsistent with casting from bit
12024 Require <type>CIDR</> values to have all nonmasked bits be zero
12034 <title>Server-Side Language Changes</title>
12039 In <literal>READ COMMITTED</> serialization mode, volatile functions
12040 now see the results of concurrent transactions committed up to the
12041 beginning of each statement within the function, rather than up to the
12042 beginning of the interactive command that called the function.
12048 Functions declared <literal>STABLE</> or <literal>IMMUTABLE</> always
12049 use the snapshot of the calling query, and therefore do not see the
12050 effects of actions taken after the calling query starts, whether in
12051 their own transaction or other transactions. Such a function must be
12052 read-only, too, meaning that it cannot use any SQL commands other than
12053 <command>SELECT</>. There is a considerable performance gain from
12054 declaring a function <literal>STABLE</> or <literal>IMMUTABLE</>
12055 rather than <literal>VOLATILE</>.
12061 Nondeferred <option>AFTER</> triggers are now fired immediately
12062 after completion of the triggering query, rather than upon
12063 finishing the current interactive command. This makes a difference
12064 when the triggering query occurred within a function: the trigger
12065 is invoked before the function proceeds to its next operation. For
12066 example, if a function inserts a new row into a table, any
12067 nondeferred foreign key checks occur before proceeding with the
12074 Allow function parameters to be declared with names (Dennis Björklund)
12077 This allows better documentation of functions. Whether the names
12078 actually do anything depends on the specific function language
12085 Allow PL/pgSQL parameter names to be referenced in the function (Dennis Björklund)
12088 This basically creates an automatic alias for each named parameter.
12094 Do minimal syntax checking of PL/pgSQL functions at creation time (Tom)
12097 This allows us to catch simple syntax errors sooner.
12103 More support for composite types (row and record variables) in PL/pgSQL
12106 For example, it now works to pass a rowtype variable to another function
12107 as a single variable.
12113 Default values for PL/pgSQL variables can now reference previously
12120 Improve parsing of PL/pgSQL FOR loops (Tom)
12123 Parsing is now driven by presence of <literal>".."</> rather than
12124 data type of <option>FOR</> variable. This makes no difference for
12125 correct functions, but should result in more understandable error
12126 messages when a mistake is made.
12132 Major overhaul of PL/Perl server-side language (Command Prompt, Andrew Dunstan)
12138 In PL/Tcl, SPI commands are now run in subtransactions. If an error
12139 occurs, the subtransaction is cleaned up and the error is reported
12140 as an ordinary Tcl error, which can be trapped with <literal>catch</>.
12141 Formerly, it was not possible to catch such errors.
12147 Accept <command>ELSEIF</> in PL/pgSQL (Neil)
12150 Previously PL/pgSQL only allowed <command>ELSIF</>, but many people
12151 are accustomed to spelling this keyword <command>ELSEIF</>.
12160 <title><application>psql</> Changes</title>
12165 Improve <application>psql</> information display about database
12166 objects (Christopher)
12172 Allow <application>psql</> to display group membership in
12173 <command>\du</> and <command>\dg</> (Markus Bertheau)
12179 Prevent <application>psql</> <command>\dn</command> from showing
12180 temporary schemas (Bruce)
12186 Allow <application>psql</> to handle tilde user expansion for file
12193 Allow <application>psql</> to display fancy prompts, including
12194 color, via <application>readline</> (Reece Hart, Chet Ramey)
12200 Make <application>psql</> <command>\copy</> match <command>COPY</command> command syntax
12207 Show the location of syntax errors (Fabien Coelho, Tom)
12213 Add <command>CLUSTER</command> information to <application>psql</>
12214 <command>\d</> display
12221 Change <application>psql</> <command>\copy stdin/stdout</> to read
12222 from command input/output (Bruce)
12228 Add <option>pstdin</>/<option>pstdout</> to read from
12229 <application>psql</>'s <literal>stdin</>/<literal>stdout</> (Mark
12236 Add global <application>psql</> configuration file, <filename>psqlrc.sample</filename>
12240 This allows a central file where global <application>psql</> startup commands can
12247 Have <application>psql</> <command>\d+</> indicate if the table
12248 has an <type>OID</> column (Neil)
12254 On Windows, use binary mode in <application>psql</> when reading files so control-Z
12255 is not seen as end-of-file
12261 Have <command>\dn+</> show permissions and description for schemas (Dennis
12268 Improve tab completion support (Stefan Kaltenbrunn, Greg Sabino Mullane)
12274 Allow boolean settings to be set using upper or lower case (Michael Paesold)
12283 <title><application>pg_dump</> Changes</title>
12288 Use dependency information to improve the reliability of
12289 <application>pg_dump</> (Tom)
12292 This should solve the longstanding problems with related objects
12293 sometimes being dumped in the wrong order.
12299 Have <application>pg_dump</> output objects in alphabetical order if possible (Tom)
12302 This should make it easier to identify changes between
12309 Allow <application>pg_restore</> to ignore some SQL errors (Fabien Coelho)
12312 This makes <application>pg_restore</>'s behavior similar to the
12313 results of feeding a <application>pg_dump</> output script to
12314 <application>psql</>. In most cases, ignoring errors and plowing
12315 ahead is the most useful thing to do. Also added was a pg_restore
12316 option to give the old behavior of exiting on an error.
12322 <application>pg_restore</> <option>-l</> display now includes
12323 objects' schema names
12329 New begin/end markers in <application>pg_dump</> text output (Bruce)
12335 Add start/stop times for
12336 <application>pg_dump</>/<application>pg_dumpall</> in verbose mode
12343 Allow most <application>pg_dump</> options in
12344 <application>pg_dumpall</> (Christopher)
12350 Have <application>pg_dump</> use <command>ALTER OWNER</> rather
12351 than <command>SET SESSION AUTHORIZATION</> by default
12361 <title>libpq Changes</title>
12366 Make libpq's <option>SIGPIPE</> handling thread-safe (Bruce)
12372 Add <function>PQmbdsplen()</> which returns the display length
12373 of a character (Tatsuo)
12379 Add thread locking to <application>SSL</> and
12380 <application>Kerberos</> connections (Manfred Spraul)
12386 Allow <function>PQoidValue()</>, <function>PQcmdTuples()</>, and
12387 <function>PQoidStatus()</> to work on <command>EXECUTE</command>
12394 Add <function>PQserverVersion()</> to provide more convenient
12395 access to the server version number (Greg Sabino Mullane)
12401 Add <function>PQprepare/PQsendPrepared()</> functions to support
12402 preparing statements without necessarily specifying the data types
12403 of their parameters (Abhijit Menon-Sen)
12409 Many ECPG improvements, including <command>SET DESCRIPTOR</> (Michael)
12418 <title>Source Code Changes</title>
12423 Allow the database server to run natively on Windows (Claudio, Magnus, Andrew)
12429 Shell script commands converted to C versions for Windows support (Andrew)
12435 Create an extension makefile framework (Fabien Coelho, Peter)
12438 This simplifies the task of building extensions outside the original
12445 Support relocatable installations (Bruce)
12448 Directory paths for installed files (such as the
12449 <filename>/share</> directory) are now computed relative to the
12450 actual location of the executables, so that an installation tree
12451 can be moved to another place without reconfiguring and
12458 Use <option>--with-docdir</> to choose installation location of documentation; also
12459 allow <option>--infodir</> (Peter)
12465 Add <option>--without-docdir</> to prevent installation of documentation (Peter)
12471 Upgrade to <application>DocBook</> V4.2 SGML (Peter)
12477 New <literal>PostgreSQL</> <application>CVS</> tag (Marc)
12480 This was done to make it easier for organizations to manage their
12481 own copies of the <productname>PostgreSQL</productname>
12482 <application>CVS</> repository. File version stamps from the master
12483 repository will not get munged by checking into or out of a copied
12490 Clarify locking code (Manfred Koizar)
12496 Buffer manager cleanup (Neil)
12502 Decouple platform tests from CPU spinlock code (Bruce, Tom)
12508 Add inlined test-and-set code on PA-RISC for <application>gcc</>
12515 Improve i386 spinlock code (Manfred Spraul)
12521 Clean up spinlock assembly code to avoid warnings from newer
12522 <application>gcc</> releases (Tom)
12528 Remove JDBC from source tree; now a separate project
12534 Remove the libpgtcl client interface; now a separate project
12540 More accurately estimate memory and file descriptor usage (Tom)
12546 Improvements to the Mac OS X startup scripts (Ray A.)
12552 New <function>fsync()</> test program (Bruce)
12558 Major documentation improvements (Neil, Peter)
12564 Remove <application>pg_encoding</application>; not needed
12571 Remove <application>pg_id</application>; not needed anymore
12577 Remove <application>initlocation</application>; not needed
12584 Auto-detect thread flags (no more manual testing) (Bruce)
12590 Use Olson's public domain <application>timezone</> library (Magnus)
12596 With threading enabled, use thread flags on Unixware for
12597 backend executables too (Bruce)
12600 Unixware cannot mix threaded and nonthreaded object files in the
12601 same executable, so everything must be compiled as threaded.
12607 <application>psql</> now uses a <application>flex</>-generated
12608 lexical analyzer to process command strings
12614 Reimplement the linked list data structure used throughout the
12618 This improves performance by allowing list append and length
12619 operations to be more efficient.
12625 Allow dynamically loaded modules to create their own server configuration
12626 parameters (Thomas Hallgren)
12632 New Brazilian version of FAQ (Euler Taveira de Oliveira)
12638 Add French FAQ (Guillaume Lelarge)
12644 New <application>pgevent</> for Windows logging
12650 Make libpq and ECPG build as proper shared libraries on OS X (Tom)
12659 <title>Contrib Changes</title>
12664 Overhaul of <filename>contrib/dblink</> (Joe)
12670 <filename>contrib/dbmirror</> improvements (Steven Singer)
12676 New <filename>contrib/xml2</> (John Gray, Torchbox)
12682 Updated <filename>contrib/mysql</filename>
12688 New version of <filename>contrib/btree_gist</> (Teodor)
12694 New <filename>contrib/trgm</>, trigram matching for
12695 <productname>PostgreSQL</productname> (Teodor)
12701 Many <filename>contrib/tsearch2</> improvements (Teodor)
12707 Add double metaphone to <filename>contrib/fuzzystrmatch</> (Andrew)
12713 Allow <filename>contrib/pg_autovacuum</> to run as a Windows service (Dave Page)
12719 Add functions to <filename>contrib/dbsize</> (Andreas Pflug)
12725 Removed <filename>contrib/pg_logger</>: obsoleted by integrated logging
12732 Removed <filename>contrib/rserv</>: obsoleted by various separate projects
12742 <sect1 id="release-7-4-18">
12743 <title>Release 7.4.18</title>
12746 <title>Release date</title>
12747 <simpara>2007-09-17</simpara>
12751 This release contains fixes from 7.4.17.
12755 <title>Migration to version 7.4.18</title>
12758 A dump/restore is not required for those running 7.4.X. However,
12759 if you are upgrading from a version earlier than 7.4.11, see the release
12766 <title>Changes</title>
12772 Prevent index corruption when a transaction inserts rows and
12773 then aborts close to the end of a concurrent <command>VACUUM</>
12774 on the same table (Tom)
12780 Make <command>CREATE DOMAIN ... DEFAULT NULL</> work properly (Tom)
12786 Fix excessive logging of <acronym>SSL</> error messages (Tom)
12792 Fix crash when <varname>log_min_error_statement</> logging runs out
12799 Prevent <command>CLUSTER</> from failing
12800 due to attempting to process temporary tables of other sessions (Alvaro)
12806 Require non-superusers who use <filename>/contrib/dblink</> to use only
12807 password authentication, as a security measure (Joe)
12816 <sect1 id="release-7-4-17">
12817 <title>Release 7.4.17</title>
12820 <title>Release date</title>
12821 <simpara>2007-04-23</simpara>
12825 This release contains fixes from 7.4.16,
12826 including a security fix.
12830 <title>Migration to version 7.4.17</title>
12833 A dump/restore is not required for those running 7.4.X. However,
12834 if you are upgrading from a version earlier than 7.4.11, see the release
12841 <title>Changes</title>
12847 Support explicit placement of the temporary-table schema within
12848 <varname>search_path</>, and disable searching it for functions
12849 and operators (Tom)
12852 This is needed to allow a security-definer function to set a
12853 truly secure value of <varname>search_path</>. Without it,
12854 an unprivileged SQL user can use temporary objects to execute code
12855 with the privileges of the security-definer function (CVE-2007-2138).
12856 See <command>CREATE FUNCTION</> for more information.
12862 <filename>/contrib/tsearch2</> crash fixes (Teodor)
12868 Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles
12869 <command>UPDATE</> chains (Tom, Pavan Deolasee)
12875 Fix PANIC during enlargement of a hash index (bug introduced in 7.4.15)
12885 <sect1 id="release-7-4-16">
12886 <title>Release 7.4.16</title>
12889 <title>Release date</title>
12890 <simpara>2007-02-05</simpara>
12894 This release contains a variety of fixes from 7.4.15, including
12899 <title>Migration to version 7.4.16</title>
12902 A dump/restore is not required for those running 7.4.X. However,
12903 if you are upgrading from a version earlier than 7.4.11, see the release
12910 <title>Changes</title>
12916 Remove security vulnerability that allowed connected users
12917 to read backend memory (Tom)
12920 The vulnerability involves suppressing the normal check that a SQL
12921 function returns the data type it's declared to, or changing the
12922 data type of a table column used in a SQL function (CVE-2007-0555).
12923 This error can easily be exploited to cause a backend crash, and in
12924 principle might be used to read database content that the user
12925 should not be able to access.
12931 Fix rare bug wherein btree index page splits could fail
12932 due to choosing an infeasible split point (Heikki Linnakangas)
12938 Fix for rare Assert() crash triggered by <literal>UNION</> (Tom)
12944 Tighten security of multi-byte character processing for UTF8 sequences
12945 over three bytes long (Tom)
12954 <sect1 id="release-7-4-15">
12955 <title>Release 7.4.15</title>
12958 <title>Release date</title>
12959 <simpara>2007-01-08</simpara>
12963 This release contains a variety of fixes from 7.4.14.
12967 <title>Migration to version 7.4.15</title>
12970 A dump/restore is not required for those running 7.4.X. However,
12971 if you are upgrading from a version earlier than 7.4.11, see the release
12978 <title>Changes</title>
12984 Improve handling of <function>getaddrinfo()</> on AIX (Tom)
12988 This fixes a problem with starting the statistics collector,
12989 among other things.
12995 Fix <quote>failed to re-find parent key</> errors in
12996 <command>VACUUM</> (Tom)
13002 Fix bugs affecting multi-gigabyte hash indexes (Tom)
13008 Fix error when constructing an <literal>ARRAY[]</> made up of multiple
13009 empty elements (Tom)
13015 <function>to_number()</> and <function>to_char(numeric)</>
13016 are now <literal>STABLE</>, not <literal>IMMUTABLE</>, for
13017 new <application>initdb</> installs (Tom)
13021 This is because <varname>lc_numeric</> can potentially
13022 change the output of these functions.
13028 Improve index usage of regular expressions that use parentheses (Tom)
13032 This improves <application>psql</> <literal>\d</> performance also.
13041 <sect1 id="release-7-4-14">
13042 <title>Release 7.4.14</title>
13045 <title>Release date</title>
13046 <simpara>2006-10-16</simpara>
13050 This release contains a variety of fixes from 7.4.13.
13054 <title>Migration to version 7.4.14</title>
13057 A dump/restore is not required for those running 7.4.X. However,
13058 if you are upgrading from a version earlier than 7.4.11, see the release
13065 <title>Changes</title>
13068 <listitem><para>Fix core dump when an untyped literal is taken as
13069 ANYARRAY</para></listitem>
13070 <listitem><para>Fix <function>string_to_array()</> to handle overlapping
13071 matches for the separator string</para>
13072 <para>For example, <literal>string_to_array('123xx456xxx789', 'xx')</>.
13074 <listitem><para>Fix corner cases in pattern matching for
13075 <application>psql</>'s <literal>\d</> commands</para></listitem>
13076 <listitem><para>Fix index-corrupting bugs in /contrib/ltree
13077 (Teodor)</para></listitem>
13078 <listitem><para>Fix backslash escaping in /contrib/dbmirror</para></listitem>
13079 <listitem><para>Adjust regression tests for recent changes in US DST laws
13080 </para> </listitem>
13086 <sect1 id="release-7-4-13">
13087 <title>Release 7.4.13</title>
13090 <title>Release date</title>
13091 <simpara>2006-05-23</simpara>
13095 This release contains a variety of fixes from 7.4.12,
13096 including patches for extremely serious security issues.
13100 <title>Migration to version 7.4.13</title>
13103 A dump/restore is not required for those running 7.4.X. However,
13104 if you are upgrading from a version earlier than 7.4.11, see the release
13109 Full security against the SQL-injection attacks described in
13110 CVE-2006-2313 and CVE-2006-2314 might require changes in application
13111 code. If you have applications that embed untrustworthy strings
13112 into SQL commands, you should examine them as soon as possible to
13113 ensure that they are using recommended escaping techniques. In
13114 most cases, applications should be using subroutines provided by
13115 libraries or drivers (such as <application>libpq</>'s
13116 <function>PQescapeStringConn()</>) to perform string escaping,
13117 rather than relying on <foreignphrase>ad hoc</> code to do it.
13122 <title>Changes</title>
13125 <listitem><para>Change the server to reject invalidly-encoded multibyte
13126 characters in all cases (Tatsuo, Tom)</para>
13127 <para>While <productname>PostgreSQL</> has been moving in this direction for
13128 some time, the checks are now applied uniformly to all encodings and all
13129 textual input, and are now always errors not merely warnings. This change
13130 defends against SQL-injection attacks of the type described in CVE-2006-2313.
13133 <listitem><para>Reject unsafe uses of <literal>\'</> in string literals</para>
13134 <para>As a server-side defense against SQL-injection attacks of the type
13135 described in CVE-2006-2314, the server now only accepts <literal>''</> and not
13136 <literal>\'</> as a representation of ASCII single quote in SQL string
13137 literals. By default, <literal>\'</> is rejected only when
13138 <varname>client_encoding</> is set to a client-only encoding (SJIS, BIG5, GBK,
13139 GB18030, or UHC), which is the scenario in which SQL injection is possible.
13140 A new configuration parameter <varname>backslash_quote</> is available to
13141 adjust this behavior when needed. Note that full security against
13142 CVE-2006-2314 might require client-side changes; the purpose of
13143 <varname>backslash_quote</> is in part to make it obvious that insecure
13144 clients are insecure.
13147 <listitem><para>Modify <application>libpq</>'s string-escaping routines to be
13148 aware of encoding considerations and
13149 <varname>standard_conforming_strings</></para>
13150 <para>This fixes <application>libpq</>-using applications for the security
13151 issues described in CVE-2006-2313 and CVE-2006-2314, and also future-proofs
13152 them against the planned changeover to SQL-standard string literal syntax.
13153 Applications that use multiple <productname>PostgreSQL</> connections
13154 concurrently should migrate to <function>PQescapeStringConn()</> and
13155 <function>PQescapeByteaConn()</> to ensure that escaping is done correctly
13156 for the settings in use in each database connection. Applications that
13157 do string escaping <quote>by hand</> should be modified to rely on library
13161 <listitem><para>Fix some incorrect encoding conversion functions</para>
13162 <para><function>win1251_to_iso</>, <function>alt_to_iso</>,
13163 <function>euc_tw_to_big5</>, <function>euc_tw_to_mic</>,
13164 <function>mic_to_euc_tw</> were all broken to varying
13168 <listitem><para>Clean up stray remaining uses of <literal>\'</> in strings
13169 (Bruce, Jan)</para></listitem>
13171 <listitem><para>Fix bug that sometimes caused OR'd index scans to
13172 miss rows they should have returned</para></listitem>
13174 <listitem><para>Fix WAL replay for case where a btree index has been
13175 truncated</para></listitem>
13177 <listitem><para>Fix <literal>SIMILAR TO</> for patterns involving
13178 <literal>|</> (Tom)</para></listitem>
13180 <listitem><para>Fix server to use custom DH SSL parameters correctly (Michael
13181 Fuhr)</para></listitem>
13183 <listitem><para>Fix for Bonjour on Intel Macs (Ashley Clark)</para></listitem>
13185 <listitem><para>Fix various minor memory leaks</para></listitem>
13191 <sect1 id="release-7-4-12">
13192 <title>Release 7.4.12</title>
13195 <title>Release date</title>
13196 <simpara>2006-02-14</simpara>
13200 This release contains a variety of fixes from 7.4.11.
13204 <title>Migration to version 7.4.12</title>
13207 A dump/restore is not required for those running 7.4.X. However,
13208 if you are upgrading from a version earlier than 7.4.11, see the release
13214 <title>Changes</title>
13218 <listitem><para>Fix potential crash in <command>SET
13219 SESSION AUTHORIZATION</> (CVE-2006-0553)</para>
13220 <para>An unprivileged user could crash the server process, resulting in
13221 momentary denial of service to other users, if the server has been compiled
13222 with Asserts enabled (which is not the default).
13223 Thanks to Akio Ishida for reporting this problem.
13226 <listitem><para>Fix bug with row visibility logic in self-inserted
13228 <para>Under rare circumstances a row inserted by the current command
13229 could be seen as already valid, when it should not be. Repairs bug
13230 created in 7.4.9 and 7.3.11 releases.
13233 <listitem><para>Fix race condition that could lead to <quote>file already
13234 exists</> errors during pg_clog file creation
13235 (Tom)</para></listitem>
13237 <listitem><para>Properly check <literal>DOMAIN</> constraints for
13238 <literal>UNKNOWN</> parameters in prepared statements
13239 (Neil)</para></listitem>
13241 <listitem><para>Fix to allow restoring dumps that have cross-schema
13242 references to custom operators (Tom)</para></listitem>
13244 <listitem><para>Portability fix for testing presence of <function>finite</>
13245 and <function>isinf</> during configure (Tom)</para></listitem>
13252 <sect1 id="release-7-4-11">
13253 <title>Release 7.4.11</title>
13256 <title>Release date</title>
13257 <simpara>2006-01-09</simpara>
13261 This release contains a variety of fixes from 7.4.10.
13265 <title>Migration to version 7.4.11</title>
13268 A dump/restore is not required for those running 7.4.X. However,
13269 if you are upgrading from a version earlier than 7.4.8, see the release
13271 Also, you might need to <command>REINDEX</> indexes on textual
13272 columns after updating, if you are affected by the locale or
13273 <application>plperl</> issues described below.
13278 <title>Changes</title>
13282 <listitem><para>Fix for protocol-level Describe messages issued
13283 outside a transaction or in a failed transaction (Tom)</para></listitem>
13285 <listitem><para>Fix character string comparison for locales that consider
13286 different character combinations as equal, such as Hungarian (Tom)</para>
13287 <para>This might require <command>REINDEX</> to fix existing indexes on
13288 textual columns.</para></listitem>
13290 <listitem><para>Set locale environment variables during postmaster startup
13291 to ensure that <application>plperl</> won't change the locale later</para>
13292 <para>This fixes a problem that occurred if the <application>postmaster</> was
13293 started with environment variables specifying a different locale than what
13294 <application>initdb</> had been told. Under these conditions, any use of
13295 <application>plperl</> was likely to lead to corrupt indexes. You might need
13296 <command>REINDEX</> to fix existing indexes on
13297 textual columns if this has happened to you.</para></listitem>
13299 <listitem><para>Fix longstanding bug in strpos() and regular expression
13300 handling in certain rarely used Asian multi-byte character sets (Tatsuo)
13303 <listitem><para>Fix bug in <filename>/contrib/pgcrypto</> gen_salt,
13304 which caused it not to use all available salt space for MD5 and
13305 XDES algorithms (Marko Kreen, Solar Designer)</para>
13306 <para>Salts for Blowfish and standard DES are unaffected.</para></listitem>
13308 <listitem><para>Fix <filename>/contrib/dblink</> to throw an error,
13309 rather than crashing, when the number of columns specified is different from
13310 what's actually returned by the query (Joe)</para></listitem>
13317 <sect1 id="release-7-4-10">
13318 <title>Release 7.4.10</title>
13321 <title>Release date</title>
13322 <simpara>2005-12-12</simpara>
13326 This release contains a variety of fixes from 7.4.9.
13330 <title>Migration to version 7.4.10</title>
13333 A dump/restore is not required for those running 7.4.X. However,
13334 if you are upgrading from a version earlier than 7.4.8, see the release
13340 <title>Changes</title>
13344 <listitem><para>Fix race condition in transaction log management</para>
13345 <para>There was a narrow window in which an I/O operation could be initiated
13346 for the wrong page, leading to an Assert failure or data
13350 <listitem><para>Prevent failure if client sends Bind protocol message
13351 when current transaction is already aborted</para></listitem>
13353 <listitem><para><filename>/contrib/ltree</> fixes (Teodor)</para></listitem>
13355 <listitem><para>AIX and HPUX compile fixes (Tom)</para></listitem>
13357 <listitem><para>Fix longstanding planning error for outer joins</para>
13358 <para>This bug sometimes caused a bogus error <quote>RIGHT JOIN is
13359 only supported with merge-joinable join conditions</>.</para></listitem>
13361 <listitem><para>Prevent core dump in <application>pg_autovacuum</> when a
13362 table has been dropped</para></listitem>
13368 <sect1 id="release-7-4-9">
13369 <title>Release 7.4.9</title>
13372 <title>Release date</title>
13373 <simpara>2005-10-04</simpara>
13377 This release contains a variety of fixes from 7.4.8.
13381 <title>Migration to version 7.4.9</title>
13384 A dump/restore is not required for those running 7.4.X. However,
13385 if you are upgrading from a version earlier than 7.4.8, see the release
13391 <title>Changes</title>
13394 <listitem><para>Fix error that allowed <command>VACUUM</> to remove
13395 <literal>ctid</> chains too soon, and add more checking in code that follows
13396 <literal>ctid</> links</para>
13397 <para>This fixes a long-standing problem that could cause crashes in very rare
13398 circumstances.</para></listitem>
13399 <listitem><para>Fix <type>CHAR()</> to properly pad spaces to the specified
13400 length when using a multiple-byte character set (Yoshiyuki Asaba)</para>
13401 <para>In prior releases, the padding of <type>CHAR()</> was incorrect
13402 because it only padded to the specified number of bytes without
13403 considering how many characters were stored.</para></listitem>
13404 <listitem><para>Fix the sense of the test for read-only transaction
13405 in <command>COPY</></para>
13406 <para>The code formerly prohibited <command>COPY TO</>, where it should
13407 prohibit <command>COPY FROM</>.
13409 <listitem><para>Fix planning problem with outer-join ON clauses that reference
13410 only the inner-side relation</para></listitem>
13411 <listitem><para>Further fixes for <literal>x FULL JOIN y ON true</> corner
13412 cases</para></listitem>
13413 <listitem><para>Make <function>array_in</> and <function>array_recv</> more
13414 paranoid about validating their OID parameter</para></listitem>
13415 <listitem><para>Fix missing rows in queries like <literal>UPDATE a=... WHERE
13416 a...</> with GiST index on column <literal>a</></para></listitem>
13417 <listitem><para>Improve robustness of datetime parsing</para></listitem>
13418 <listitem><para>Improve checking for partially-written WAL
13419 pages</para></listitem>
13420 <listitem><para>Improve robustness of signal handling when SSL is
13421 enabled</para></listitem>
13422 <listitem><para>Don't try to open more than <literal>max_files_per_process</>
13423 files during postmaster startup</para></listitem>
13424 <listitem><para>Various memory leakage fixes</para></listitem>
13425 <listitem><para>Various portability improvements</para></listitem>
13426 <listitem><para>Fix PL/PgSQL to handle <literal>var := var</> correctly when
13427 the variable is of pass-by-reference type</para></listitem>
13428 <listitem><para>Update <filename>contrib/tsearch2</> to use current Snowball
13429 code</para></listitem>
13435 <sect1 id="release-7-4-8">
13436 <title>Release 7.4.8</title>
13439 <title>Release date</title>
13440 <simpara>2005-05-09</simpara>
13444 This release contains a variety of fixes from 7.4.7, including several
13445 security-related issues.
13449 <title>Migration to version 7.4.8</title>
13452 A dump/restore is not required for those running 7.4.X. However,
13453 it is one possible way of handling two significant security problems
13454 that have been found in the initial contents of 7.4.X system
13455 catalogs. A dump/initdb/reload sequence using 7.4.8's initdb will
13456 automatically correct these problems.
13460 The larger security problem is that the built-in character set encoding
13461 conversion functions can be invoked from SQL commands by unprivileged
13462 users, but the functions were not designed for such use and are not
13463 secure against malicious choices of arguments. The fix involves changing
13464 the declared parameter list of these functions so that they can no longer
13465 be invoked from SQL commands. (This does not affect their normal use
13466 by the encoding conversion machinery.)
13470 The lesser problem is that the <filename>contrib/tsearch2</> module
13471 creates several functions that are misdeclared to return
13472 <type>internal</> when they do not accept <type>internal</> arguments.
13473 This breaks type safety for all functions using <type>internal</>
13478 It is strongly recommended that all installations repair these errors,
13479 either by initdb or by following the manual repair procedures given
13480 below. The errors at least allow unprivileged database users to crash
13481 their server process, and might allow unprivileged users to gain the
13482 privileges of a database superuser.
13486 If you wish not to do an initdb, perform the following procedures instead.
13487 As the database superuser, do:
13491 UPDATE pg_proc SET proargtypes[3] = 'internal'::regtype
13492 WHERE pronamespace = 11 AND pronargs = 5
13493 AND proargtypes[2] = 'cstring'::regtype;
13494 -- The command should report having updated 90 rows;
13495 -- if not, rollback and investigate instead of committing!
13499 Next, if you have installed <filename>contrib/tsearch2</>, do:
13503 UPDATE pg_proc SET proargtypes[0] = 'internal'::regtype
13505 'dex_init(text)'::regprocedure,
13506 'snb_en_init(text)'::regprocedure,
13507 'snb_ru_init(text)'::regprocedure,
13508 'spell_init(text)'::regprocedure,
13509 'syn_init(text)'::regprocedure
13511 -- The command should report having updated 5 rows;
13512 -- if not, rollback and investigate instead of committing!
13516 If this command fails with a message like <quote>function
13517 "dex_init(text)" does not exist</>, then either <filename>tsearch2</>
13518 is not installed in this database, or you already did the update.
13522 The above procedures must be carried out in <emphasis>each</> database
13523 of an installation, including <literal>template1</>, and ideally
13524 including <literal>template0</> as well. If you do not fix the
13525 template databases then any subsequently created databases will contain
13526 the same errors. <literal>template1</> can be fixed in the same way
13527 as any other database, but fixing <literal>template0</> requires
13528 additional steps. First, from any database issue:
13530 UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
13532 Next connect to <literal>template0</> and perform the above repair
13533 procedures. Finally, do:
13535 -- re-freeze template0:
13537 -- and protect it against future alterations:
13538 UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
13544 <title>Changes</title>
13547 <listitem><para>Change encoding function signature to prevent
13548 misuse</para></listitem>
13549 <listitem><para>Change <filename>contrib/tsearch2</> to avoid unsafe use of
13550 <type>INTERNAL</> function results</para></listitem>
13551 <listitem><para>Repair ancient race condition that allowed a transaction to be
13552 seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
13553 than for other purposes</para>
13554 <para>This is an extremely serious bug since it could lead to apparent
13555 data inconsistencies being briefly visible to applications.</para></listitem>
13556 <listitem><para>Repair race condition between relation extension and
13558 <para>This could theoretically have caused loss of a page's worth of
13559 freshly-inserted data, although the scenario seems of very low probability.
13560 There are no known cases of it having caused more than an Assert failure.
13562 <listitem><para>Fix comparisons of <type>TIME WITH TIME ZONE</> values</para>
13564 The comparison code was wrong in the case where the
13565 <literal>--enable-integer-datetimes</> configuration switch had been used.
13566 NOTE: if you have an index on a <type>TIME WITH TIME ZONE</> column,
13567 it will need to be <command>REINDEX</>ed after installing this update, because
13568 the fix corrects the sort order of column values.
13570 <listitem><para>Fix <function>EXTRACT(EPOCH)</> for
13571 <type>TIME WITH TIME ZONE</> values</para></listitem>
13572 <listitem><para>Fix mis-display of negative fractional seconds in
13573 <type>INTERVAL</> values</para>
13575 This error only occurred when the
13576 <literal>--enable-integer-datetimes</> configuration switch had been used.
13578 <listitem><para>Ensure operations done during backend shutdown are counted by
13579 statistics collector</para>
13581 This is expected to resolve reports of <application>pg_autovacuum</>
13582 not vacuuming the system catalogs often enough — it was not being
13583 told about catalog deletions caused by temporary table removal during
13586 <listitem><para>Additional buffer overrun checks in plpgsql
13587 (Neil)</para></listitem>
13588 <listitem><para>Fix pg_dump to dump trigger names containing <literal>%</>
13589 correctly (Neil)</para></listitem>
13590 <listitem><para>Fix <filename>contrib/pgcrypto</> for newer OpenSSL builds
13591 (Marko Kreen)</para></listitem>
13592 <listitem><para>Still more 64-bit fixes for
13593 <filename>contrib/intagg</></para></listitem>
13594 <listitem><para>Prevent incorrect optimization of functions returning
13595 <type>RECORD</></para></listitem>
13596 <listitem><para>Prevent <function>to_char(interval)</> from dumping core for
13597 month-related formats</para></listitem>
13598 <listitem><para>Prevent crash on <literal>COALESCE(NULL,NULL)</></para></listitem>
13599 <listitem><para>Fix <function>array_map</> to call PL functions correctly</para></listitem>
13600 <listitem><para>Fix permission checking in <command>ALTER DATABASE RENAME</></para></listitem>
13601 <listitem><para>Fix <command>ALTER LANGUAGE RENAME</></para></listitem>
13602 <listitem><para>Make <function>RemoveFromWaitQueue</> clean up after itself</para>
13604 This fixes a lock management error that would only be visible if a transaction
13605 was kicked out of a wait for a lock (typically by query cancel) and then the
13606 holder of the lock released it within a very narrow window.
13608 <listitem><para>Fix problem with untyped parameter appearing in
13609 <command>INSERT ... SELECT</></para></listitem>
13610 <listitem><para>Fix <command>CLUSTER</> failure after
13611 <command>ALTER TABLE SET WITHOUT OIDS</></para></listitem>
13617 <sect1 id="release-7-4-7">
13618 <title>Release 7.4.7</title>
13621 <title>Release date</title>
13622 <simpara>2005-01-31</simpara>
13626 This release contains a variety of fixes from 7.4.6, including several
13627 security-related issues.
13631 <title>Migration to version 7.4.7</title>
13634 A dump/restore is not required for those running 7.4.X.
13639 <title>Changes</title>
13642 <listitem><para>Disallow <command>LOAD</> to non-superusers</para>
13644 On platforms that will automatically execute initialization functions of a
13645 shared library (this includes at least Windows and ELF-based Unixen),
13646 <command>LOAD</> can be used to make the server execute arbitrary code.
13647 Thanks to NGS Software for reporting this.</para></listitem>
13648 <listitem><para>Check that creator of an aggregate function has the right to
13649 execute the specified transition functions</para>
13651 This oversight made it possible to bypass denial of EXECUTE
13652 permission on a function.</para></listitem>
13653 <listitem><para>Fix security and 64-bit issues in
13654 contrib/intagg</para></listitem>
13655 <listitem><para>Add needed STRICT marking to some contrib functions (Kris
13656 Jurka)</para></listitem>
13657 <listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
13658 many parameters (Neil)</para></listitem>
13659 <listitem><para>Fix planning error for FULL and RIGHT outer joins</para>
13661 The result of the join was mistakenly supposed to be sorted the same as the
13662 left input. This could not only deliver mis-sorted output to the user, but
13663 in case of nested merge joins could give outright wrong answers.
13665 <listitem><para>Fix plperl for quote marks in tuple fields</para></listitem>
13666 <listitem><para>Fix display of negative intervals in SQL and GERMAN
13667 datestyles</para></listitem>
13668 <listitem><para>Make age(timestamptz) do calculation in local timezone not
13669 GMT</para></listitem>
13675 <sect1 id="release-7-4-6">
13676 <title>Release 7.4.6</title>
13679 <title>Release date</title>
13680 <simpara>2004-10-22</simpara>
13684 This release contains a variety of fixes from 7.4.5.
13689 <title>Migration to version 7.4.6</title>
13692 A dump/restore is not required for those running 7.4.X.
13697 <title>Changes</title>
13700 <listitem><para>Repair possible failure to update hint bits on disk</para>
13702 Under rare circumstances this oversight could lead to
13703 <quote>could not access transaction status</> failures, which qualifies
13704 it as a potential-data-loss bug.
13706 <listitem><para>Ensure that hashed outer join does not miss tuples</para>
13708 Very large left joins using a hash join plan could fail to output unmatched
13709 left-side rows given just the right data distribution.
13711 <listitem><para>Disallow running <application>pg_ctl</> as root</para>
13713 This is to guard against any possible security issues.
13715 <listitem><para>Avoid using temp files in <filename>/tmp</> in <command>make_oidjoins_check</command></para>
13717 This has been reported as a security issue, though it's hardly worthy of
13718 concern since there is no reason for non-developers to use this script anyway.
13720 <listitem><para>Prevent forced backend shutdown from re-emitting prior command
13723 In rare cases, a client might think that its last command had succeeded when
13724 it really had been aborted by forced database shutdown.
13726 <listitem><para>Repair bug in <function>pg_stat_get_backend_idset</function></para>
13728 This could lead to misbehavior in some of the system-statistics views.
13730 <listitem><para>Fix small memory leak in postmaster</para></listitem>
13731 <listitem><para>Fix <quote>expected both swapped tables to have TOAST
13732 tables</> bug</para>
13734 This could arise in cases such as CLUSTER after ALTER TABLE DROP COLUMN.
13736 <listitem><para>Prevent <literal>pg_ctl restart</> from adding <literal>-D</> multiple times</para></listitem>
13737 <listitem><para>Fix problem with NULL values in GiST indexes</para></listitem>
13738 <listitem><para><literal>::</> is no longer interpreted as a variable in an
13739 ECPG prepare statement</para></listitem>
13745 <sect1 id="release-7-4-5">
13746 <title>Release 7.4.5</title>
13749 <title>Release date</title>
13750 <simpara>2004-08-18</simpara>
13754 This release contains one serious bug fix over 7.4.4.
13759 <title>Migration to version 7.4.5</title>
13762 A dump/restore is not required for those running 7.4.X.
13767 <title>Changes</title>
13770 <listitem><para>Repair possible crash during concurrent B-tree index insertions</para>
13772 This patch fixes a rare case in which concurrent insertions into a B-tree index
13773 could result in a server panic. No permanent damage would result, but it's
13774 still worth a re-release. The bug does not exist in pre-7.4 releases.
13781 <sect1 id="release-7-4-4">
13782 <title>Release 7.4.4</title>
13785 <title>Release date</title>
13786 <simpara>2004-08-16</simpara>
13790 This release contains a variety of fixes from 7.4.3.
13795 <title>Migration to version 7.4.4</title>
13798 A dump/restore is not required for those running 7.4.X.
13803 <title>Changes</title>
13806 <listitem><para>Prevent possible loss of committed transactions during crash</para>
13808 Due to insufficient interlocking between transaction commit and checkpointing,
13809 it was possible for transactions committed just before the most recent
13810 checkpoint to be lost, in whole or in part, following a database crash and
13811 restart. This is a serious bug that has existed
13812 since <productname>PostgreSQL</productname> 7.1.
13814 <listitem><para>Check HAVING restriction before evaluating result list of an
13815 aggregate plan</para></listitem>
13816 <listitem><para>Avoid crash when session's current user ID is deleted</para></listitem>
13817 <listitem><para>Fix hashed crosstab for zero-rows case (Joe)</para></listitem>
13818 <listitem><para>Force cache update after renaming a column in a foreign key</para></listitem>
13819 <listitem><para>Pretty-print UNION queries correctly</para></listitem>
13820 <listitem><para>Make psql handle <literal>\r\n</> newlines properly in COPY IN</para></listitem>
13821 <listitem><para><application>pg_dump</> handled ACLs with grant options incorrectly</para></listitem>
13822 <listitem><para>Fix thread support for OS X and Solaris</para></listitem>
13823 <listitem><para>Updated JDBC driver (build 215) with various fixes</para></listitem>
13824 <listitem><para>ECPG fixes</para></listitem>
13825 <listitem><para>Translation updates (various contributors)</para></listitem>
13831 <sect1 id="release-7-4-3">
13832 <title>Release 7.4.3</title>
13835 <title>Release date</title>
13836 <simpara>2004-06-14</simpara>
13840 This release contains a variety of fixes from 7.4.2.
13845 <title>Migration to version 7.4.3</title>
13848 A dump/restore is not required for those running 7.4.X.
13853 <title>Changes</title>
13856 <listitem><para>Fix temporary memory leak when using non-hashed aggregates (Tom)</para></listitem>
13857 <listitem><para>ECPG fixes, including some for Informix compatibility (Michael)</para></listitem>
13858 <listitem><para>Fixes for compiling with thread-safety, particularly Solaris (Bruce)</para></listitem>
13859 <listitem><para>Fix error in COPY IN termination when using the old network protocol (ljb)</para></listitem>
13860 <listitem><para>Several important fixes in pg_autovacuum, including fixes for
13861 large tables, unsigned oids, stability, temp tables, and debug mode
13862 (Matthew T. O'Connor)</para></listitem>
13863 <listitem><para>Fix problem with reading tar-format dumps on NetBSD and BSD/OS (Bruce)</para></listitem>
13864 <listitem><para>Several JDBC fixes</para></listitem>
13865 <listitem><para>Fix ALTER SEQUENCE RESTART where last_value equals the restart value (Tom)</para></listitem>
13866 <listitem><para>Repair failure to recalculate nested sub-selects (Tom)</para></listitem>
13867 <listitem><para>Fix problems with non-constant expressions in LIMIT/OFFSET</para></listitem>
13868 <listitem><para>Support FULL JOIN with no join clause, such as X FULL JOIN Y ON TRUE (Tom)</para></listitem>
13869 <listitem><para>Fix another zero-column table bug (Tom)</para></listitem>
13870 <listitem><para>Improve handling of non-qualified identifiers in GROUP BY clauses in sub-selects (Tom)</para>
13872 Select-list aliases within the sub-select will now take precedence over
13873 names from outer query levels.
13875 <listitem><para>Do not generate <quote>NATURAL CROSS JOIN</> when decompiling rules (Tom)</para></listitem>
13876 <listitem><para>Add checks for invalid field length in binary COPY (Tom)</para>
13878 This fixes a difficult-to-exploit security hole.
13880 <listitem><para>Avoid locking conflict between <command>ANALYZE</command> and <command>LISTEN</command>/<command>NOTIFY</command></para></listitem>
13881 <listitem><para>Numerous translation updates (various contributors)</para></listitem>
13887 <sect1 id="release-7-4-2">
13888 <title>Release 7.4.2</title>
13891 <title>Release date</title>
13892 <simpara>2004-03-08</simpara>
13896 This release contains a variety of fixes from 7.4.1.
13901 <title>Migration to version 7.4.2</title>
13904 A dump/restore is not required for those running 7.4.X. However,
13905 it might be advisable as the easiest method of incorporating fixes for
13906 two errors that have been found in the initial contents of 7.4.X system
13907 catalogs. A dump/initdb/reload sequence using 7.4.2's initdb will
13908 automatically correct these problems.
13912 The more severe of the two errors is that data type <type>anyarray</>
13913 has the wrong alignment label; this is a problem because the
13914 <structname>pg_statistic</> system catalog uses <type>anyarray</>
13915 columns. The mislabeling can cause planner misestimations and even
13916 crashes when planning queries that involve <literal>WHERE</> clauses on
13917 double-aligned columns (such as <type>float8</> and <type>timestamp</>).
13918 It is strongly recommended that all installations repair this error,
13919 either by initdb or by following the manual repair procedure given
13924 The lesser error is that the system view <structname>pg_settings</>
13925 ought to be marked as having public update access, to allow
13926 <literal>UPDATE pg_settings</> to be used as a substitute for
13927 <command>SET</>. This can also be fixed either by initdb or manually,
13928 but it is not necessary to fix unless you want to use <literal>UPDATE
13933 If you wish not to do an initdb, the following procedure will work
13934 for fixing <structname>pg_statistic</>. As the database superuser,
13938 -- clear out old data in pg_statistic:
13939 DELETE FROM pg_statistic;
13940 VACUUM pg_statistic;
13941 -- this should update 1 row:
13942 UPDATE pg_type SET typalign = 'd' WHERE oid = 2277;
13943 -- this should update 6 rows:
13944 UPDATE pg_attribute SET attalign = 'd' WHERE atttypid = 2277;
13946 -- At this point you MUST start a fresh backend to avoid a crash!
13948 -- repopulate pg_statistic:
13952 This can be done in a live database, but beware that all backends
13953 running in the altered database must be restarted before it is safe to
13954 repopulate <structname>pg_statistic</>.
13958 To repair the <structname>pg_settings</> error, simply do:
13960 GRANT SELECT, UPDATE ON pg_settings TO PUBLIC;
13965 The above procedures must be carried out in <emphasis>each</> database
13966 of an installation, including <literal>template1</>, and ideally
13967 including <literal>template0</> as well. If you do not fix the
13968 template databases then any subsequently created databases will contain
13969 the same errors. <literal>template1</> can be fixed in the same way
13970 as any other database, but fixing <literal>template0</> requires
13971 additional steps. First, from any database issue:
13973 UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
13975 Next connect to <literal>template0</> and perform the above repair
13976 procedures. Finally, do:
13978 -- re-freeze template0:
13980 -- and protect it against future alterations:
13981 UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
13987 <title>Changes</title>
13990 Release 7.4.2 incorporates all the fixes included in release 7.3.6,
13991 plus the following fixes:
13995 <listitem><para>Fix <structname>pg_statistics</> alignment bug that could crash optimizer</para>
13996 <para>See above for details about this problem.</para></listitem>
13997 <listitem><para>Allow non-super users to update <structname>pg_settings</></para></listitem>
13998 <listitem><para>Fix several optimizer bugs, most of which led to
13999 <quote>variable not found in subplan target lists</> errors</para></listitem>
14000 <listitem><para>Avoid out-of-memory failure during startup of large multiple
14001 index scan</para></listitem>
14002 <listitem><para>Fix multibyte problem that could lead to <quote>out of
14003 memory</> error during <command>COPY IN</></para></listitem>
14004 <listitem><para>Fix problems with <command>SELECT INTO</> / <command>CREATE
14005 TABLE AS</> from tables without OIDs</para></listitem>
14006 <listitem><para>Fix problems with <filename>alter_table</> regression test
14007 during parallel testing</para></listitem>
14008 <listitem><para>Fix problems with hitting open file limit, especially on OS X (Tom)</para></listitem>
14009 <listitem><para>Partial fix for Turkish-locale issues</para>
14010 <para>initdb will succeed now in Turkish locale, but there are still some
14011 inconveniences associated with the <literal>i/I</> problem.</para></listitem>
14012 <listitem><para>Make pg_dump set client encoding on restore</para></listitem>
14013 <listitem><para>Other minor pg_dump fixes</para></listitem>
14014 <listitem><para>Allow ecpg to again use C keywords as column names (Michael)</para></listitem>
14015 <listitem><para>Added ecpg <literal>WHENEVER NOT_FOUND</> to
14016 <literal>SELECT/INSERT/UPDATE/DELETE</> (Michael)</para></listitem>
14017 <listitem><para>Fix ecpg crash for queries calling set-returning functions (Michael)</para></listitem>
14018 <listitem><para>Various other ecpg fixes (Michael)</para></listitem>
14019 <listitem><para>Fixes for Borland compiler</para></listitem>
14020 <listitem><para>Thread build improvements (Bruce)</para></listitem>
14021 <listitem><para>Various other build fixes</para></listitem>
14022 <listitem><para>Various JDBC fixes</para></listitem>
14028 <sect1 id="release-7-4-1">
14029 <title>Release 7.4.1</title>
14032 <title>Release date</title>
14033 <simpara>2003-12-22</simpara>
14037 This release contains a variety of fixes from 7.4.
14042 <title>Migration to version 7.4.1</title>
14045 A dump/restore is <emphasis>not</emphasis> required for those
14050 If you want to install the fixes in the information schema
14051 you need to reload it into the database.
14052 This is either accomplished by initializing a new cluster
14053 by running <command>initdb</command>, or by running the following
14054 sequence of SQL commands in each database (ideally including
14055 <literal>template1</literal>) as a superuser in
14056 <application>psql</application>, after installing the new release:
14058 DROP SCHEMA information_schema CASCADE;
14059 \i /usr/local/pgsql/share/information_schema.sql
14061 Substitute your installation path in the second command.
14067 <title>Changes</title>
14070 <listitem><para>Fixed bug in <command>CREATE SCHEMA</command> parsing in ECPG (Michael)</para></listitem>
14071 <listitem><para>Fix compile error when <option>--enable-thread-safety</option> and <option>--with-perl</option> are used together (Peter)</para></listitem>
14072 <listitem><para>Fix for subqueries that used hash joins (Tom)</para>
14074 Certain subqueries that used hash joins would crash because of
14075 improperly shared structures.
14077 <listitem><para>Fix free space map compaction bug (Tom)</para>
14079 This fixes a bug where compaction of the free space map could lead
14080 to a database server shutdown.
14083 <listitem><para>Fix for Borland compiler build of libpq (Bruce)</para></listitem>
14084 <listitem><para>Fix <function>netmask()</function> and <function>hostmask()</function> to return the maximum-length masklen (Tom)</para>
14086 Fix these functions to return values consistent with pre-7.4
14090 <listitem><para>Several <filename>contrib/pg_autovacuum</filename> fixes</para>
14092 Fixes include improper variable initialization, missing vacuum after
14093 <command>TRUNCATE</command>, and duration computation overflow for long vacuums.
14096 <listitem><para>Allow compile of <filename>contrib/cube</filename> under Cygwin (Jason Tishler)</para></listitem>
14097 <listitem><para>Fix Solaris use of password file when no passwords are defined (Tom)</para>
14099 Fix crash on Solaris caused by use of any type of password
14100 authentication when no passwords were defined.
14103 <listitem><para>JDBC fix for thread problems, other fixes</para></listitem>
14104 <listitem><para>Fix for <type>bytea</type> index lookups (Joe)</para></listitem>
14105 <listitem><para>Fix information schema for bit data types (Peter)</para></listitem>
14106 <listitem><para>Force zero_damaged_pages to be on during recovery from WAL</para></listitem>
14107 <listitem><para>Prevent some obscure cases of <quote>variable not in subplan target lists</quote></para></listitem>
14108 <listitem><para>Make <function>PQescapeBytea</function> and <function>byteaout</function> consistent with each other (Joe)</para></listitem>
14109 <listitem><para>Escape <type>bytea</type> output for bytes > 0x7e(Joe)</para>
14111 If different client encodings are used for <type>bytea</type> output and input, it
14112 is possible for <type>bytea</type> values to be corrupted by the differing
14113 encodings. This fix escapes all bytes that might be affected.
14116 <listitem><para>Added missing <function>SPI_finish()</function> calls to dblink's <function>get_tuple_of_interest()</function> (Joe)</para></listitem>
14117 <listitem><para>New Czech FAQ</para></listitem>
14118 <listitem><para>Fix information schema view <literal>constraint_column_usage</literal> for foreign keys (Peter)</para></listitem>
14119 <listitem><para>ECPG fixes (Michael)</para></listitem>
14120 <listitem><para>Fix bug with multiple <literal>IN</literal> subqueries and joins in the subqueries (Tom)</para></listitem>
14121 <listitem><para>Allow <literal>COUNT('x')</literal> to work (Tom)</para></listitem>
14122 <listitem><para>Install ECPG include files for Informix compatibility into separate directory (Peter)</para>
14124 Some names of ECPG include files for Informix compatibility conflicted with operating system include files.
14125 By installing them in their own directory, name conflicts have been reduced.
14128 <listitem><para>Fix SSL memory leak (Neil)</para>
14130 This release fixes a bug in 7.4 where SSL didn't free all memory it allocated.
14133 <listitem><para>Prevent <filename>pg_service.conf</filename> from using service name as default dbname (Bruce)</para></listitem>
14134 <listitem><para>Fix local ident authentication on FreeBSD (Tom)</para></listitem>
14140 <sect1 id="release-7-4">
14141 <title>Release 7.4</title>
14144 <title>Release date</title>
14145 <simpara>2003-11-17</simpara>
14149 <title>Overview</title>
14152 Major changes in this release:
14158 <literal>IN</literal> / <literal>NOT IN</literal> subqueries are
14159 now much more efficient
14164 In previous releases, <literal>IN</literal>/<literal>NOT
14165 IN</literal> subqueries were joined to the upper query by
14166 sequentially scanning the subquery looking for a match. The
14167 7.4 code uses the same sophisticated techniques used by
14168 ordinary joins and so is much faster. An
14169 <literal>IN</literal> will now usually be as fast as or faster
14170 than an equivalent <literal>EXISTS</literal> subquery; this
14171 reverses the conventional wisdom that applied to previous
14179 Improved <literal>GROUP BY</literal> processing by using hash buckets
14184 In previous releases, rows to be grouped had to be sorted
14185 first. The 7.4 code can do <literal>GROUP BY</literal>
14186 without sorting, by accumulating results into a hash table
14187 with one entry per group. It will still use the sort
14188 technique, however, if the hash table is estimated to be too
14189 large to fit in <varname>sort_mem</>.
14196 New multikey hash join capability
14201 In previous releases, hash joins could only occur on single
14202 keys. This release allows multicolumn hash joins.
14209 Queries using the explicit <literal>JOIN</literal> syntax are
14210 now better optimized
14215 Prior releases evaluated queries using the explicit
14216 <literal>JOIN</literal> syntax only in the order implied by
14217 the syntax. 7.4 allows full optimization of these queries,
14218 meaning the optimizer considers all possible join orderings
14219 and chooses the most efficient. Outer joins, however, must
14220 still follow the declared ordering.
14227 Faster and more powerful regular expression code
14232 The entire regular expression module has been replaced with a
14233 new version by Henry Spencer, originally written for Tcl. The
14234 code greatly improves performance and supports several flavors
14235 of regular expressions.
14242 Function-inlining for simple SQL functions
14247 Simple SQL functions can now be inlined by including their SQL
14248 in the main query. This improves performance by eliminating
14249 per-call overhead. That means simple SQL functions now
14250 behave like macros.
14257 Full support for IPv6 connections and IPv6 address data types
14262 Previous releases allowed only IPv4 connections, and the IP
14263 data types only supported IPv4 addresses. This release adds
14264 full IPv6 support in both of these areas.
14271 Major improvements in SSL performance and reliability
14276 Several people very familiar with the SSL API have overhauled
14277 our SSL code to improve SSL key negotiation and error
14285 Make free space map efficiently reuse empty index pages,
14286 and other free space management improvements
14291 In previous releases, B-tree index pages that were left empty
14292 because of deleted rows could only be reused by rows with
14293 index values similar to the rows originally indexed on that
14294 page. In 7.4, <command>VACUUM</command> records empty index
14295 pages and allows them to be reused for any future index rows.
14302 SQL-standard information schema
14307 The information schema provides a standardized and stable way
14308 to access information about the schema objects defined in a
14316 Cursors conform more closely to the SQL standard
14321 The commands <command>FETCH</command> and
14322 <command>MOVE</command> have been overhauled to conform more
14323 closely to the SQL standard.
14330 Cursors can exist outside transactions
14335 These cursors are also called holdable cursors.
14342 New client-to-server protocol
14347 The new protocol adds error codes, more status information,
14348 faster startup, better support for binary data transmission,
14349 parameter values separated from SQL commands, prepared
14350 statements available at the protocol level, and cleaner
14351 recovery from <command>COPY</command> failures. The older
14352 protocol is still supported by both server and clients.
14359 <application>libpq</application> and
14360 <application>ECPG</application> applications are now fully
14366 While previous <application>libpq</application> releases
14367 already supported threads, this release improves thread safety
14368 by fixing some non-thread-safe code that was used during
14369 database connection startup. The <command>configure</command>
14370 option <option>--enable-thread-safety</option> must be used to
14371 enable this feature.
14378 New version of full-text indexing
14383 A new full-text indexing suite is available in
14384 <filename>contrib/tsearch2</filename>.
14391 New autovacuum tool
14396 The new autovacuum tool in
14397 <filename>contrib/autovacuum</filename> monitors the database
14398 statistics tables for
14399 <command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command>
14400 activity and automatically vacuums tables when needed.
14407 Array handling has been improved and moved into the server core
14412 Many array limitations have been removed, and arrays behave
14413 more like fully-supported data types.
14422 <title>Migration to version 7.4</title>
14425 A dump/restore using <application>pg_dump</application> is
14426 required for those wishing to migrate data from any previous
14431 Observe the following incompatibilities:
14437 The server-side autocommit setting was removed and
14438 reimplemented in client applications and languages.
14439 Server-side autocommit was causing too many problems with
14440 languages and applications that wanted to control their own
14441 autocommit behavior, so autocommit was removed from the server
14442 and added to individual client APIs as appropriate.
14448 Error message wording has changed substantially in this
14449 release. Significant effort was invested to make the messages
14450 more consistent and user-oriented. If your applications try to
14451 detect different error conditions by parsing the error message,
14452 you are strongly encouraged to use the new error code facility instead.
14458 Inner joins using the explicit <literal>JOIN</literal> syntax
14459 might behave differently because they are now better
14466 A number of server configuration parameters have been renamed
14467 for clarity, primarily those related to
14474 <literal>FETCH 0</literal> or <literal>MOVE 0</literal> now
14475 does nothing. In prior releases, <literal>FETCH 0</literal>
14476 would fetch all remaining rows, and <literal>MOVE 0</literal>
14477 would move to the end of the cursor.
14483 <command>FETCH</command> and <command>MOVE</command> now return
14484 the actual number of rows fetched/moved, or zero if at the
14485 beginning/end of the cursor. Prior releases would return the
14486 row count passed to the command, not the number of rows
14487 actually fetched or moved.
14493 <command>COPY</command> now can process files that use
14494 carriage-return or carriage-return/line-feed end-of-line
14495 sequences. Literal carriage-returns and line-feeds are no
14496 longer accepted in data values; use <literal>\r</literal> and
14497 <literal>\n</literal> instead.
14503 Trailing spaces are now trimmed when converting from type
14504 <type>char(<replaceable>n</>)</type> to
14505 <type>varchar(<replaceable>n</>)</type> or <type>text</type>.
14506 This is what most people always expected to happen anyway.
14512 The data type <type>float(<replaceable>p</>)</type> now
14513 measures <replaceable>p</> in binary digits, not decimal
14514 digits. The new behavior follows the SQL standard.
14520 Ambiguous date values now must match the ordering specified by
14521 the <varname>datestyle</varname> setting. In prior releases, a
14522 date specification of <literal>10/20/03</> was interpreted as a
14523 date in October even if <varname>datestyle</> specified that
14524 the day should be first. 7.4 will throw an error if a date
14525 specification is invalid for the current setting of
14526 <varname>datestyle</>.
14532 The functions <function>oidrand</function>,
14533 <function>oidsrand</function>, and
14534 <function>userfntest</function> have been removed. These
14535 functions were determined to be no longer useful.
14541 String literals specifying time-varying date/time values, such
14542 as <literal>'now'</literal> or <literal>'today'</literal> will
14543 no longer work as expected in column default expressions; they
14544 now cause the time of the table creation to be the default, not
14545 the time of the insertion. Functions such as
14546 <function>now()</>, <function>current_timestamp</>, or
14547 <function>current_date</function> should be used instead.
14551 In previous releases, there was special code so that strings
14552 such as <literal>'now'</literal> were interpreted at
14553 <command>INSERT</> time and not at table creation time, but
14554 this work around didn't cover all cases. Release 7.4 now
14555 requires that defaults be defined properly using functions such
14556 as <function>now()</> or <function>current_timestamp</>. These
14557 will work in all situations.
14563 The dollar sign (<literal>$</>) is no longer allowed in
14564 operator names. It can instead be a non-first character in
14565 identifiers. This was done to improve compatibility with other
14566 database systems, and to avoid syntax problems when parameter
14567 placeholders (<literal>$<replaceable>n</></>) are written
14568 adjacent to operators.
14576 <title>Changes</title>
14579 Below you will find a detailed account of the changes between
14580 release 7.4 and the previous major release.
14584 <title>Server Operation Changes</title>
14589 Allow IPv6 server connections (Nigel Kukard, Johan Jordaan,
14590 Bruce, Tom, Kurt Roeckx, Andrew Dunstan)
14596 Fix SSL to handle errors cleanly (Nathan Mueller)
14599 In prior releases, certain SSL API error reports were not
14600 handled correctly. This release fixes those problems.
14606 SSL protocol security and performance improvements (Sean Chittenden)
14609 SSL key renegotiation was happening too frequently, causing poor
14610 SSL performance. Also, initial key handling was improved.
14616 Print lock information when a deadlock is detected (Tom)
14619 This allows easier debugging of deadlock situations.
14625 Update <filename>/tmp</filename> socket modification times
14626 regularly to avoid their removal (Tom)
14629 This should help prevent <filename>/tmp</filename> directory
14630 cleaner administration scripts from removing server socket
14635 <listitem><para>Enable PAM for Mac OS X (Aaron Hillegass)</para></listitem>
14638 <para>Make B-tree indexes fully WAL-safe (Tom)</para>
14640 In prior releases, under certain rare cases, a server crash
14641 could cause B-tree indexes to become corrupt. This release
14642 removes those last few rare cases.
14646 <listitem><para>Allow B-tree index compaction and empty page reuse (Tom)</para></listitem>
14650 Fix inconsistent index lookups during split of first root page (Tom)
14653 In prior releases, when a single-page index split into two
14654 pages, there was a brief period when another database session
14655 could miss seeing an index entry. This release fixes that rare
14660 <listitem><para>Improve free space map allocation logic (Tom)</para></listitem>
14663 <para>Preserve free space information between server restarts (Tom)</para>
14665 In prior releases, the free space map was not saved when the
14666 postmaster was stopped, so newly started servers had no free
14667 space information. This release saves the free space map, and
14668 reloads it when the server is restarted.
14672 <listitem><para>Add start time to <literal>pg_stat_activity</literal> (Neil)</para></listitem>
14673 <listitem><para>New code to detect corrupt disk pages; erase with <varname>zero_damaged_pages</varname> (Tom)</para></listitem>
14674 <listitem><para>New client/server protocol: faster, no username length limit, allow clean exit from <command>COPY</command> (Tom)</para></listitem>
14675 <listitem><para>Add transaction status, table ID, column ID to client/server protocol (Tom)</para></listitem>
14676 <listitem><para>Add binary I/O to client/server protocol (Tom)</para></listitem>
14677 <listitem><para>Remove autocommit server setting; move to client applications (Tom)</para></listitem>
14678 <listitem><para>New error message wording, error codes, and three levels of error detail (Tom, Joe, Peter)</para></listitem>
14683 <title>Performance Improvements</title>
14686 <listitem><para>Add hashing for <literal>GROUP BY</literal> aggregates (Tom)</para></listitem>
14687 <listitem><para>Make nested-loop joins be smarter about multicolumn indexes (Tom)</para></listitem>
14688 <listitem><para>Allow multikey hash joins (Tom)</para></listitem>
14689 <listitem><para>Improve constant folding (Tom)</para></listitem>
14690 <listitem><para>Add ability to inline simple SQL functions (Tom)</para></listitem>
14693 <para>Reduce memory usage for queries using complex functions (Tom)</para>
14695 In prior releases, functions returning allocated memory would
14696 not free it until the query completed. This release allows the
14697 freeing of function-allocated memory when the function call
14698 completes, reducing the total memory used by functions.
14703 <para>Improve GEQO optimizer performance (Tom)</para>
14705 This release fixes several inefficiencies in the way the GEQO optimizer
14706 manages potential query paths.
14712 Allow <literal>IN</>/<literal>NOT IN</> to be handled via hash
14719 Improve <literal>NOT IN (<replaceable>subquery</>)</literal>
14726 Allow most <literal>IN</literal> subqueries to be processed as
14733 Pattern matching operations can use indexes regardless of
14737 There is no way for non-ASCII locales to use the standard
14738 indexes for <literal>LIKE</literal> comparisons. This release
14739 adds a way to create a special index for
14740 <literal>LIKE</literal>.
14745 <para>Allow the postmaster to preload libraries using <varname>preload_libraries</varname> (Joe)</para>
14747 For shared libraries that require a long time to load, this
14748 option is available so the library can be preloaded in the
14749 postmaster and inherited by all database sessions.
14755 Improve optimizer cost computations, particularly for subqueries (Tom)
14761 Avoid sort when subquery <literal>ORDER BY</literal> matches upper query (Tom)
14767 Deduce that <literal>WHERE a.x = b.y AND b.y = 42</literal> also
14768 means <literal>a.x = 42</literal> (Tom)
14774 Allow hash/merge joins on complex joins (Tom)
14780 Allow hash joins for more data types (Tom)
14786 Allow join optimization of explicit inner joins, disable with
14787 <varname>join_collapse_limit</varname> (Tom)
14793 Add parameter <varname>from_collapse_limit</varname> to control
14794 conversion of subqueries to joins (Tom)
14800 Use faster and more powerful regular expression code from Tcl
14801 (Henry Spencer, Tom)
14807 Use bit-mapped relation sets in the optimizer (Tom)
14812 <para>Improve connection startup time (Tom)</para>
14814 The new client/server protocol requires fewer network packets to
14815 start a database session.
14821 Improve trigger/constraint performance (Stephan)
14827 Improve speed of <literal>col IN (const, const, const, ...)</literal> (Tom)
14833 Fix hash indexes which were broken in rare cases (Tom)
14837 <listitem><para>Improve hash index concurrency and speed (Tom)</para>
14839 Prior releases suffered from poor hash index performance,
14840 particularly for high concurrency situations. This release fixes
14841 that, and the development group is interested in reports
14842 comparing B-tree and hash index performance.
14847 <para>Align shared buffers on 32-byte boundary for copy speed improvement (Manfred Spraul)</para>
14849 Certain CPU's perform faster data copies when addresses are
14855 <para>Data type <type>numeric</type> reimplemented for better performance (Tom)</para>
14857 <type>numeric</type> used to be stored in base 100. The new code
14858 uses base 10000, for significantly better performance.
14865 <title>Server Configuration Changes</title>
14869 <para>Rename server parameter <varname>server_min_messages</> to <varname>log_min_messages</> (Bruce)</para>
14871 This was done so most parameters that control the server logs
14872 begin with <literal>log_</>.
14876 <listitem><para>Rename <varname>show_*_stats</> to <varname>log_*_stats</> (Bruce)</para></listitem>
14877 <listitem><para>Rename <varname>show_source_port</> to <varname>log_source_port</> (Bruce)</para></listitem>
14878 <listitem><para>Rename <varname>hostname_lookup</> to <varname>log_hostname</> (Bruce)</para></listitem>
14881 <para>Add <varname>checkpoint_warning</> to warn of excessive checkpointing (Bruce)</para>
14883 In prior releases, it was difficult to determine if checkpoint
14884 was happening too frequently. This feature adds a warning to the
14885 server logs when excessive checkpointing happens.
14889 <listitem><para>New read-only server parameters for localization (Tom)</para></listitem>
14893 Change debug server log messages to output as <literal>DEBUG</>
14894 rather than <literal>LOG</> (Bruce)
14899 <para>Prevent server log variables from being turned off by non-superusers (Bruce)</para>
14901 This is a security feature so non-superusers cannot disable
14902 logging that was enabled by the administrator.
14908 <varname>log_min_messages</>/<varname>client_min_messages</> now
14909 controls <varname>debug_*</> output (Bruce)
14912 This centralizes client debug information so all debug output
14913 can be sent to either the client or server logs.
14918 <para>Add Mac OS X Rendezvous server support (Chris Campbell)</para>
14920 This allows Mac OS X hosts to query the network for available
14921 <productname>PostgreSQL</productname> servers.
14927 Add ability to print only slow statements using
14928 <varname>log_min_duration_statement</varname>
14932 This is an often requested debugging feature that allows
14933 administrators to see only slow queries in their server logs.
14938 <para>Allow <filename>pg_hba.conf</filename> to accept netmasks in CIDR format (Andrew Dunstan)</para>
14940 This allows administrators to merge the host IP address and
14941 netmask fields into a single CIDR field in <filename>pg_hba.conf</filename>.
14945 <listitem><para>New read-only parameter <varname>is_superuser</varname> (Tom)</para></listitem>
14948 <para>New parameter <varname>log_error_verbosity</varname> to control error detail (Tom)</para>
14950 This works with the new error reporting feature to supply
14951 additional error information like hints, file names and line
14957 <para><literal>postgres --describe-config</literal> now dumps server config variables (Aizaz Ahmed, Peter)</para>
14959 This option is useful for administration tools that need to know
14960 the configuration variable names and their minimums, maximums,
14961 defaults, and descriptions.
14967 Add new columns in <literal>pg_settings</literal>:
14968 <literal>context</>, <literal>type</>, <literal>source</>,
14969 <literal>min_val</>, <literal>max_val</> (Joe)
14975 Make default <varname>shared_buffers</> 1000 and
14976 <varname>max_connections</> 100, if possible (Tom)
14979 Prior versions defaulted to 64 shared buffers so <productname>PostgreSQL</productname>
14980 would start on even very old systems. This release tests the
14981 amount of shared memory allowed by the platform and selects more
14982 reasonable default values if possible. Of course, users are
14983 still encouraged to evaluate their resource load and size
14984 <varname>shared_buffers</varname> accordingly.
14990 New <filename>pg_hba.conf</filename> record type
14991 <literal>hostnossl</> to prevent SSL connections (Jon
14995 In prior releases, there was no way to prevent SSL connections
14996 if both the client and server supported SSL. This option allows
15003 Remove parameter <varname>geqo_random_seed</varname>
15010 Add server parameter <varname>regex_flavor</varname> to control regular expression processing (Tom)
15016 Make <command>pg_ctl</command> better handle nonstandard ports (Greg)
15023 <title>Query Changes</title>
15026 <listitem><para>New SQL-standard information schema (Peter)</para></listitem>
15027 <listitem><para>Add read-only transactions (Peter)</para></listitem>
15028 <listitem><para>Print key name and value in foreign-key violation messages (Dmitry Tkach)</para></listitem>
15031 <para>Allow users to see their own queries in <literal>pg_stat_activity</literal> (Kevin Brown)</para>
15033 In prior releases, only the superuser could see query strings
15034 using <literal>pg_stat_activity</literal>. Now ordinary users
15035 can see their own query strings.
15040 <para>Fix aggregates in subqueries to match SQL standard (Tom)</para>
15042 The SQL standard says that an aggregate function appearing
15043 within a nested subquery belongs to the outer query if its
15044 argument contains only outer-query variables. Prior
15045 <productname>PostgreSQL</productname> releases did not handle
15046 this fine point correctly.
15051 <para>Add option to prevent auto-addition of tables referenced in query (Nigel J. Andrews)</para>
15053 By default, tables mentioned in the query are automatically
15054 added to the <literal>FROM</> clause if they are not already
15055 there. This is compatible with historic
15056 <productname>POSTGRES</productname> behavior but is contrary to
15057 the SQL standard. This option allows selecting
15058 standard-compatible behavior.
15063 <para>Allow <literal>UPDATE ... SET col = DEFAULT</literal> (Rod)</para>
15065 This allows <command>UPDATE</command> to set a column to its
15066 declared default value.
15071 <para>Allow expressions to be used in <literal>LIMIT</>/<literal>OFFSET</> (Tom)</para>
15073 In prior releases, <literal>LIMIT</>/<literal>OFFSET</> could
15074 only use constants, not expressions.
15079 <para>Implement <literal>CREATE TABLE AS EXECUTE</literal> (Neil, Peter)</para>
15085 <title>Object Manipulation Changes</title>
15089 <para>Make <command>CREATE SEQUENCE</command> grammar more conforming to SQL:2003 (Neil)</para>
15093 <para>Add statement-level triggers (Neil)</para>
15095 While this allows a trigger to fire at the end of a statement,
15096 it does not allow the trigger to access all rows modified by the
15097 statement. This capability is planned for a future release.
15102 <para>Add check constraints for domains (Rod)</para>
15104 This greatly increases the usefulness of domains by allowing
15105 them to use check constraints.
15110 <para>Add <command>ALTER DOMAIN</command> (Rod)</para>
15112 This allows manipulation of existing domains.
15117 <para>Fix several zero-column table bugs (Tom)</para>
15119 <productname>PostgreSQL</productname> supports zero-column tables. This fixes various bugs
15120 that occur when using such tables.
15125 <para>Have <literal>ALTER TABLE ... ADD PRIMARY KEY</literal> add not-null constraint (Rod)</para>
15127 In prior releases, <literal>ALTER TABLE ... ADD
15128 PRIMARY</literal> would add a unique index, but not a not-null
15129 constraint. That is fixed in this release.
15133 <listitem><para>Add <literal>ALTER TABLE ... WITHOUT OIDS</literal> (Rod)</para>
15135 This allows control over whether new and updated rows will have
15136 an OID column. This is most useful for saving storage space.
15142 Add <literal>ALTER SEQUENCE</literal> to modify minimum, maximum,
15143 increment, cache, cycle values (Rod)
15148 <para>Add <literal>ALTER TABLE ... CLUSTER ON</literal> (Alvaro Herrera)</para>
15150 This command is used by <command>pg_dump</command> to record the
15151 cluster column for each table previously clustered. This
15152 information is used by database-wide cluster to cluster all
15153 previously clustered tables.
15157 <listitem><para>Improve automatic type casting for domains (Rod, Tom)</para></listitem>
15158 <listitem><para>Allow dollar signs in identifiers, except as first character (Tom)</para></listitem>
15159 <listitem><para>Disallow dollar signs in operator names, so <literal>x=$1</> works (Tom)</para></listitem>
15163 Allow copying table schema using <literal>LIKE
15164 <replaceable>subtable</replaceable></literal>, also SQL:2003
15165 feature <literal>INCLUDING DEFAULTS</literal> (Rod)
15171 Add <literal>WITH GRANT OPTION</literal> clause to
15172 <command>GRANT</command> (Peter)
15175 This enabled <command>GRANT</command> to give other users the
15176 ability to grant privileges on a object.
15183 <title>Utility Command Changes</title>
15187 <para>Add <literal>ON COMMIT</literal> clause to <command>CREATE TABLE</command> for temporary tables (Gavin)</para>
15189 This adds the ability for a table to be dropped or all rows
15190 deleted on transaction commit.
15195 <para>Allow cursors outside transactions using <literal>WITH HOLD</literal> (Neil)</para>
15197 In previous releases, cursors were removed at the end of the
15198 transaction that created them. Cursors can now be created with
15199 the <literal>WITH HOLD</literal> option, which allows them to
15200 continue to be accessed after the creating transaction has
15206 <para><literal>FETCH 0</literal> and <literal>MOVE 0 </literal> now do nothing (Bruce)</para>
15208 In previous releases, <literal>FETCH 0</literal> fetched all
15209 remaining rows, and <literal>MOVE 0</literal> moved to the end
15216 Cause <command>FETCH</command> and <command>MOVE</command> to
15217 return the number of rows fetched/moved, or zero if at the
15218 beginning/end of cursor, per SQL standard (Bruce)
15221 In prior releases, the row count returned by
15222 <command>FETCH</command> and <command>MOVE</command> did not
15223 accurately reflect the number of rows processed.
15228 <para>Properly handle <literal>SCROLL</literal> with cursors, or
15229 report an error (Neil)</para>
15231 Allowing random access (both forward and backward scrolling) to
15232 some kinds of queries cannot be done without some additional
15233 work. If <literal>SCROLL</literal> is specified when the cursor
15234 is created, this additional work will be performed. Furthermore,
15235 if the cursor has been created with <literal>NO SCROLL</literal>,
15236 no random access is allowed.
15242 Implement SQL-compatible options <literal>FIRST</>,
15243 <literal>LAST</>, <literal>ABSOLUTE <replaceable>n</></>,
15244 <literal>RELATIVE <replaceable>n</></> for
15245 <command>FETCH</command> and <command>MOVE</command> (Tom)
15250 <para>Allow <command>EXPLAIN</command> on <command>DECLARE CURSOR</command> (Tom)</para>
15254 <para>Allow <command>CLUSTER</command> to use index marked as pre-clustered by default (Alvaro Herrera)</para>
15258 <para>Allow <command>CLUSTER</command> to cluster all tables (Alvaro Herrera)</para>
15260 This allows all previously clustered tables in a database to be
15261 reclustered with a single command.
15265 <listitem><para>Prevent <command>CLUSTER</command> on partial indexes (Tom)</para></listitem>
15267 <listitem><para>Allow DOS and Mac line-endings in <command>COPY</> files (Bruce)</para></listitem>
15271 Disallow literal carriage return as a data value,
15272 backslash-carriage-return and <literal>\r</> are still allowed
15278 <para><command>COPY</> changes (binary, <literal>\.</>) (Tom)</para>
15282 <para>Recover from <command>COPY</command> failure cleanly (Tom)</para>
15286 <para>Prevent possible memory leaks in <command>COPY</command> (Tom)</para>
15290 <para>Make <command>TRUNCATE</command> transaction-safe (Rod)</para>
15292 <command>TRUNCATE</command> can now be used inside a
15293 transaction. If the transaction aborts, the changes made by the
15294 <command>TRUNCATE</command> are automatically rolled back.
15300 Allow prepare/bind of utility commands like
15301 <command>FETCH</command> and <command>EXPLAIN</command> (Tom)
15306 <para>Add <command>EXPLAIN EXECUTE</command> (Neil)</para>
15310 <para>Improve <command>VACUUM</command> performance on indexes by reducing WAL traffic (Tom)</para>
15314 <para>Functional indexes have been generalized into indexes on expressions (Tom)</para>
15316 In prior releases, functional indexes only supported a simple
15317 function applied to one or more column names. This release
15318 allows any type of scalar expression.
15324 Have <command>SHOW TRANSACTION ISOLATION</command> match input
15325 to <command>SET TRANSACTION ISOLATION</command>
15332 Have <command>COMMENT ON DATABASE</command> on nonlocal
15333 database generate a warning, rather than an error (Rod)
15337 Database comments are stored in database-local tables so
15338 comments on a database have to be stored in each database.
15344 Improve reliability of <command>LISTEN</>/<command>NOTIFY</> (Tom)
15349 <para>Allow <command>REINDEX</command> to reliably reindex nonshared system catalog indexes (Tom)</para>
15351 This allows system tables to be reindexed without the
15352 requirement of a standalone session, which was necessary in
15353 previous releases. The only tables that now require a standalone
15354 session for reindexing are the global system tables
15355 <literal>pg_database</>, <literal>pg_shadow</>, and
15356 <literal>pg_group</>.
15363 <title>Data Type and Function Changes</title>
15368 New server parameter <varname>extra_float_digits</varname> to
15369 control precision display of floating-point numbers (Pedro
15373 This controls output precision which was causing regression
15378 <listitem><para>Allow <literal>+1300</literal> as a numeric time-zone specifier, for FJST (Tom)</para></listitem>
15382 Remove rarely used functions <function>oidrand</>,
15383 <function>oidsrand</>, and <function>userfntest</> functions
15389 <para>Add <function>md5()</> function to main server, already in <filename>contrib/pgcrypto</filename> (Joe)</para>
15391 An MD5 function was frequently requested. For more complex
15392 encryption capabilities, use
15393 <filename>contrib/pgcrypto</filename>.
15397 <listitem><para>Increase date range of <type>timestamp</type> (John Cochran)</para></listitem>
15401 Change <literal>EXTRACT(EPOCH FROM timestamp)</literal> so
15402 <type>timestamp without time zone</type> is assumed to be in
15403 local time, not GMT (Tom)
15407 <listitem><para>Trap division by zero in case the operating system doesn't prevent it (Tom)</para></listitem>
15408 <listitem><para>Change the <type>numeric</type> data type internally to base 10000 (Tom)</para></listitem>
15409 <listitem><para>New <function>hostmask()</function> function (Greg Wickham)</para></listitem>
15410 <listitem><para>Fixes for <function>to_char()</function> and <function>to_timestamp()</function> (Karel)</para></listitem>
15414 Allow functions that can take any argument data type and return
15415 any data type, using <type>anyelement</type> and
15416 <type>anyarray</type> (Joe)
15419 This allows the creation of functions that can work with any
15426 Arrays can now be specified as <literal>ARRAY[1,2,3]</literal>,
15427 <literal>ARRAY[['a','b'],['c','d']]</literal>, or
15428 <literal>ARRAY[ARRAY[ARRAY[2]]]</literal> (Joe)
15434 Allow proper comparisons for arrays, including <literal>ORDER
15435 BY</literal> and <literal>DISTINCT</literal> support
15440 <listitem><para>Allow indexes on array columns (Joe)</para></listitem>
15441 <listitem><para>Allow array concatenation with <literal>||</literal> (Joe)</para></listitem>
15445 Allow <literal>WHERE</literal> qualification
15446 <literal><replaceable>expr</> <replaceable>op</> ANY/SOME/ALL
15447 (<replaceable>array_expr</>)</literal> (Joe)
15450 This allows arrays to behave like a list of values, for purposes
15451 like <literal>SELECT * FROM tab WHERE col IN
15452 (array_val)</literal>.
15458 New array functions <function>array_append</>,
15459 <function>array_cat</>, <function>array_lower</>,
15460 <function>array_prepend</>, <function>array_to_string</>,
15461 <function>array_upper</>, <function>string_to_array</> (Joe)
15465 <listitem><para>Allow user defined aggregates to use polymorphic functions (Joe)</para></listitem>
15466 <listitem><para>Allow assignments to empty arrays (Joe)</para></listitem>
15470 Allow 60 in seconds fields of <type>time</type>,
15471 <type>timestamp</type>, and <type>interval</type> input values
15475 Sixty-second values are needed for leap seconds.
15479 <listitem><para>Allow <type>cidr</type> data type to be cast to <type>text</type> (Tom)</para></listitem>
15481 <listitem><para>Disallow invalid time zone names in SET TIMEZONE</para></listitem>
15485 Trim trailing spaces when <type>char</type> is cast to
15486 <type>varchar</> or <type>text</> (Tom)
15492 Make <type>float(<replaceable>p</>)</> measure the precision
15493 <replaceable>p</> in binary digits, not decimal digits
15499 <para>Add IPv6 support to the <type>inet</type> and <type>cidr</type> data types (Michael Graff)</para>
15503 <para>Add <function>family()</function> function to report whether address is IPv4 or IPv6 (Michael Graff)</para>
15508 Have <literal>SHOW datestyle</literal> generate output similar
15509 to that used by <literal>SET datestyle</literal> (Tom)
15515 Make <literal>EXTRACT(TIMEZONE)</literal> and <literal>SET/SHOW
15516 TIME ZONE</literal> follow the SQL convention for the sign of
15517 time zone offsets, i.e., positive is east from UTC (Tom)
15522 <para>Fix <literal>date_trunc('quarter', ...)</literal> (Böjthe Zoltán)</para>
15524 Prior releases returned an incorrect value for this function call.
15529 <para>Make <function>initcap()</function> more compatible with Oracle (Mike Nolan)</para>
15531 <function>initcap()</function> now uppercases a letter appearing
15532 after any non-alphanumeric character, rather than only after
15538 <para>Allow only <varname>datestyle</varname> field order for date values not in ISO-8601 format (Greg)</para>
15543 Add new <varname>datestyle</varname> values <literal>MDY</>,
15544 <literal>DMY</>, and <literal>YMD</> to set input field order;
15545 honor <literal>US</> and <literal>European</> for backward
15546 compatibility (Tom)
15552 String literals like <literal>'now'</literal> or
15553 <literal>'today'</literal> will no longer work as a column
15554 default. Use functions such as <function>now()</function>,
15555 <function>current_timestamp</function> instead. (change
15556 required for prepared statements) (Tom)
15561 <para>Treat NaN as larger than any other value in <function>min()</>/<function>max()</> (Tom)</para>
15563 NaN was already sorted after ordinary numeric values for most
15564 purposes, but <function>min()</> and <function>max()</> didn't
15570 <para>Prevent interval from suppressing <literal>:00</literal>
15571 seconds display</para>
15576 New functions <function>pg_get_triggerdef(prettyprint)</function>
15577 and <function>pg_conversion_is_visible()</function> (Christopher)
15582 <para>Allow time to be specified as <literal>040506</> or <literal>0405</> (Tom)</para>
15587 Input date order must now be <literal>YYYY-MM-DD</literal> (with 4-digit year) or
15588 match <varname>datestyle</varname>
15594 Make <function>pg_get_constraintdef</function> support
15595 unique, primary-key, and check constraints (Christopher)
15602 <title>Server-Side Language Changes</title>
15607 Prevent PL/pgSQL crash when <literal>RETURN NEXT</literal> is
15608 used on a zero-row record variable (Tom)
15614 Make PL/Python's <function>spi_execute</function> interface
15615 handle null values properly (Andrew Bosma)
15620 <para>Allow PL/pgSQL to declare variables of composite types without <literal>%ROWTYPE</literal> (Tom)</para>
15624 <para>Fix PL/Python's <function>_quote()</function> function to handle big integers</para>
15628 <para>Make PL/Python an untrusted language, now called <literal>plpythonu</literal> (Kevin Jacobs, Tom)</para>
15630 The Python language no longer supports a restricted execution
15631 environment, so the trusted version of PL/Python was removed. If
15632 this situation changes, a version of PL/Python that can be used
15633 by non-superusers will be readded.
15638 <para>Allow polymorphic PL/pgSQL functions (Joe, Tom)</para>
15642 <para>Allow polymorphic SQL functions (Joe)</para>
15647 Improved compiled function caching mechanism in PL/pgSQL with
15648 full support for polymorphism (Joe)
15654 Add new parameter <literal>$0</> in PL/pgSQL representing the
15655 function's actual return type (Joe)
15661 Allow PL/Tcl and PL/Python to use the same trigger on multiple tables (Tom)
15667 Fixed PL/Tcl's <function>spi_prepare</function> to accept fully
15668 qualified type names in the parameter type list
15676 <title>psql Changes</title>
15680 <para>Add <literal>\pset pager always</literal> to always use pager (Greg)</para>
15682 This forces the pager to be used even if the number of rows is
15683 less than the screen height. This is valuable for rows that
15684 wrap across several screen rows.
15688 <listitem><para>Improve tab completion (Rod, Ross Reedstrom, Ian Barwick)</para></listitem>
15689 <listitem><para>Reorder <literal>\?</> help into groupings (Harald Armin Massa, Bruce)</para></listitem>
15690 <listitem><para>Add backslash commands for listing schemas, casts, and conversions (Christopher)</para></listitem>
15694 <command>\encoding</> now changes based on the server parameter
15695 <varname>client_encoding</varname> (Tom)
15698 In previous versions, <command>\encoding</command> was not aware
15699 of encoding changes made using <literal>SET
15700 client_encoding</literal>.
15705 <para>Save editor buffer into readline history (Ross)</para>
15707 When <command>\e</> is used to edit a query, the result is saved
15708 in the readline history for retrieval using the up arrow.
15712 <listitem><para>Improve <command>\d</command> display (Christopher)</para></listitem>
15713 <listitem><para>Enhance HTML mode to be more standards-conforming (Greg)</para></listitem>
15716 <para>New <command>\set AUTOCOMMIT off</command> capability (Tom)</para>
15718 This takes the place of the removed server parameter <varname>autocommit</varname>.
15723 <para>New <command>\set VERBOSITY</command> to control error detail (Tom)</para>
15725 This controls the new error reporting details.
15729 <listitem><para>New prompt escape sequence <literal>%x</literal> to show transaction status (Tom)</para></listitem>
15730 <listitem><para>Long options for <application>psql</application> are now available on all platforms</para></listitem>
15735 <title>pg_dump Changes</title>
15738 <listitem><para>Multiple pg_dump fixes, including tar format and large objects</para></listitem>
15739 <listitem><para>Allow pg_dump to dump specific schemas (Neil)</para></listitem>
15742 <para>Make pg_dump preserve column storage characteristics (Christopher)</para>
15744 This preserves <literal>ALTER TABLE ... SET STORAGE</literal> information.
15748 <listitem><para>Make pg_dump preserve <command>CLUSTER</command> characteristics (Christopher)</para></listitem>
15752 Have pg_dumpall use <command>GRANT</>/<command>REVOKE</> to dump database-level privileges (Tom)
15758 Allow pg_dumpall to support the options <option>-a</>,
15759 <option>-s</>, <option>-x</> of pg_dump (Tom)
15763 <listitem><para>Prevent pg_dump from lowercasing identifiers specified on the command line (Tom)</para></listitem>
15767 pg_dump options <option>--use-set-session-authorization</option>
15768 and <option>--no-reconnect</option> now do nothing, all dumps
15769 use <command>SET SESSION AUTHORIZATION</command>
15772 pg_dump no longer reconnects to switch users, but instead always
15773 uses <command>SET SESSION AUTHORIZATION</command>. This will
15774 reduce password prompting during restores.
15779 <para>Long options for <application>pg_dump</application> are now available on all platforms</para>
15781 <productname>PostgreSQL</productname> now includes its own
15782 long-option processing routines.
15789 <title>libpq Changes</title>
15794 Add function <function>PQfreemem</function> for freeing memory on
15795 Windows, suggested for <command>NOTIFY</command> (Bruce)
15798 Windows requires that memory allocated in a library be freed by
15799 a function in the same library, hence
15800 <function>free()</function> doesn't work for freeing memory
15801 allocated by libpq. <function>PQfreemem</function> is the proper
15802 way to free libpq memory, especially on Windows, and is
15803 recommended for other platforms as well.
15808 <para>Document service capability, and add sample file (Bruce)</para>
15810 This allows clients to look up connection information in a
15811 central file on the client machine.
15817 Make <function>PQsetdbLogin</function> have the same defaults as
15818 <function>PQconnectdb</function> (Tom)
15822 <listitem><para>Allow libpq to cleanly fail when result sets are too large (Tom)</para></listitem>
15826 Improve performance of function <function>PQunescapeBytea</function> (Ben Lamb)
15832 Allow thread-safe libpq with <filename>configure</filename>
15833 option <option>--enable-thread-safety</option> (Lee Kindness,
15840 Allow function <function>pqInternalNotice</function> to accept a
15841 format string and arguments instead of just a preformatted
15842 message (Tom, Sean Chittenden)
15848 Control SSL negotiation with <literal>sslmode</literal> values
15849 <literal>disable</literal>, <literal>allow</literal>,
15850 <literal>prefer</literal>, and <literal>require</literal> (Jon
15856 <para>Allow new error codes and levels of text (Tom)</para>
15860 <para>Allow access to the underlying table and column of a query result (Tom)</para>
15862 This is helpful for query-builder applications that want to know
15863 the underlying table and column names associated with a specific
15868 <listitem><para>Allow access to the current transaction status (Tom)</para></listitem>
15869 <listitem><para>Add ability to pass binary data directly to the server (Tom)</para></listitem>
15873 Add function <function>PQexecPrepared</function> and
15874 <function>PQsendQueryPrepared</function> functions which perform
15875 bind/execute of previously prepared statements (Tom)
15882 <title>JDBC Changes</title>
15885 <listitem><para>Allow <function>setNull</function> on updateable result sets</para></listitem>
15886 <listitem><para>Allow <function>executeBatch</function> on a prepared statement (Barry)</para></listitem>
15887 <listitem><para>Support SSL connections (Barry)</para></listitem>
15888 <listitem><para>Handle schema names in result sets (Paul Sorenson)</para></listitem>
15889 <listitem><para>Add refcursor support (Nic Ferrier)</para></listitem>
15894 <title>Miscellaneous Interface Changes</title>
15898 <para>Prevent possible memory leak or core dump during libpgtcl shutdown (Tom)</para>
15901 <para>Add Informix compatibility to ECPG (Michael)</para>
15903 This allows ECPG to process embedded C programs that were
15904 written using certain Informix extensions.
15909 <para>Add type <type>decimal</type> to ECPG that is fixed length, for Informix (Michael)</para>
15914 Allow thread-safe embedded SQL programs with
15915 <filename>configure</filename> option
15916 <option>--enable-thread-safety</option> (Lee Kindness, Bruce)
15919 This allows multiple threads to access the database at the same
15925 <para>Moved Python client PyGreSQL to <ulink url="http://www.pygresql.org"></ulink> (Marc)</para>
15931 <title>Source Code Changes</title>
15934 <listitem><para>Prevent need for separate platform geometry regression result files (Tom)</para></listitem>
15935 <listitem><para>Improved PPC locking primitive (Reinhard Max)</para></listitem>
15936 <listitem><para>New function <function>palloc0</function> to allocate and clear memory (Bruce)</para></listitem>
15937 <listitem><para>Fix locking code for s390x CPU (64-bit) (Tom)</para></listitem>
15938 <listitem><para>Allow OpenBSD to use local ident credentials (William Ahern)</para></listitem>
15939 <listitem><para>Make query plan trees read-only to executor (Tom)</para></listitem>
15940 <listitem><para>Add Darwin startup scripts (David Wheeler)</para></listitem>
15941 <listitem><para>Allow libpq to compile with Borland C++ compiler (Lester Godwin, Karl Waclawek)</para></listitem>
15942 <listitem><para>Use our own version of <function>getopt_long()</function> if needed (Peter)</para></listitem>
15943 <listitem><para>Convert administration scripts to C (Peter)</para></listitem>
15944 <listitem><para> Bison >= 1.85 is now required to build the <productname>PostgreSQL</> grammar, if building from CVS</para></listitem>
15945 <listitem><para>Merge documentation into one book (Peter)</para></listitem>
15946 <listitem><para>Add Windows compatibility functions (Bruce)</para></listitem>
15947 <listitem><para>Allow client interfaces to compile under MinGW (Bruce)</para></listitem>
15948 <listitem><para>New <function>ereport()</function> function for error reporting (Tom)</para></listitem>
15949 <listitem><para>Support Intel compiler on Linux (Peter)</para></listitem>
15950 <listitem><para>Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil)</para></listitem>
15951 <listitem><para>Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce)</para></listitem>
15953 <para>Remove <option>--enable-recode</option> option from <command>configure</command></para>
15955 This was no longer needed now that we have <command>CREATE CONVERSION</command>.
15959 <para>Generate a compile error if spinlock code is not found (Bruce)</para>
15961 Platforms without spinlock code will now fail to compile, rather
15962 than silently using semaphores. This failure can be disabled
15963 with a new <command>configure</command> option.
15970 <title>Contrib Changes</title>
15973 <listitem><para>Change dbmirror license to BSD</para></listitem>
15974 <listitem><para>Improve earthdistance (Bruno Wolff III)</para></listitem>
15975 <listitem><para>Portability improvements to pgcrypto (Marko Kreen)</para></listitem>
15976 <listitem><para>Prevent crash in xml (John Gray, Michael Richards)</para></listitem>
15977 <listitem><para>Update oracle</para></listitem>
15978 <listitem><para>Update mysql</para></listitem>
15979 <listitem><para>Update cube (Bruno Wolff III)</para></listitem>
15980 <listitem><para>Update earthdistance to use cube (Bruno Wolff III)</para></listitem>
15981 <listitem><para>Update btree_gist (Oleg)</para></listitem>
15982 <listitem><para>New tsearch2 full-text search module (Oleg, Teodor)</para></listitem>
15983 <listitem><para>Add hash-based crosstab function to tablefuncs (Joe)</para></listitem>
15984 <listitem><para>Add serial column to order <function>connectby()</> siblings in tablefuncs (Nabil Sayegh,Joe)</para></listitem>
15985 <listitem><para>Add named persistent connections to dblink (Shridhar Daithanka)</para></listitem>
15986 <listitem><para>New pg_autovacuum allows automatic <command>VACUUM</command> (Matthew T. O'Connor)</para></listitem>
15987 <listitem><para>Make pgbench honor environment variables <envar>PGHOST</>, <envar>PGPORT</>, <envar>PGUSER</> (Tatsuo)</para></listitem>
15988 <listitem><para>Improve intarray (Teodor Sigaev)</para></listitem>
15989 <listitem><para>Improve pgstattuple (Rod)</para></listitem>
15990 <listitem><para>Fix bug in <function>metaphone()</function> in fuzzystrmatch</para></listitem>
15991 <listitem><para>Improve adddepend (Rod)</para></listitem>
15992 <listitem><para>Update spi/timetravel (Böjthe Zoltán)</para></listitem>
15993 <listitem><para>Fix dbase <option>-s</> option and improve non-ASCII handling (Thomas Behr, Márcio Smiderle)</para></listitem>
15994 <listitem><para>Remove array module because features now included by default (Joe)</para></listitem>
16000 <sect1 id="release-7-3-20">
16001 <title>Release 7.3.20</title>
16004 <title>Release date</title>
16005 <simpara>2007-09-17</simpara>
16009 This release contains fixes from 7.3.19.
16013 <title>Migration to version 7.3.20</title>
16016 A dump/restore is not required for those running 7.3.X. However,
16017 if you are upgrading from a version earlier than 7.3.13, see the release
16024 <title>Changes</title>
16030 Prevent index corruption when a transaction inserts rows and
16031 then aborts close to the end of a concurrent <command>VACUUM</>
16032 on the same table (Tom)
16038 Make <command>CREATE DOMAIN ... DEFAULT NULL</> work properly (Tom)
16044 Fix crash when <varname>log_min_error_statement</> logging runs out
16051 Require non-superusers who use <filename>/contrib/dblink</> to use only
16052 password authentication, as a security measure (Joe)
16061 <sect1 id="release-7-3-19">
16062 <title>Release 7.3.19</title>
16065 <title>Release date</title>
16066 <simpara>2007-04-23</simpara>
16070 This release contains fixes from 7.3.18,
16071 including a security fix.
16075 <title>Migration to version 7.3.19</title>
16078 A dump/restore is not required for those running 7.3.X. However,
16079 if you are upgrading from a version earlier than 7.3.13, see the release
16086 <title>Changes</title>
16092 Support explicit placement of the temporary-table schema within
16093 <varname>search_path</>, and disable searching it for functions
16094 and operators (Tom)
16097 This is needed to allow a security-definer function to set a
16098 truly secure value of <varname>search_path</>. Without it,
16099 an unprivileged SQL user can use temporary objects to execute code
16100 with the privileges of the security-definer function (CVE-2007-2138).
16101 See <command>CREATE FUNCTION</> for more information.
16107 Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles
16108 <command>UPDATE</> chains (Tom, Pavan Deolasee)
16117 <sect1 id="release-7-3-18">
16118 <title>Release 7.3.18</title>
16121 <title>Release date</title>
16122 <simpara>2007-02-05</simpara>
16126 This release contains a variety of fixes from 7.3.17, including
16131 <title>Migration to version 7.3.18</title>
16134 A dump/restore is not required for those running 7.3.X. However,
16135 if you are upgrading from a version earlier than 7.3.13, see the release
16142 <title>Changes</title>
16148 Remove security vulnerability that allowed connected users
16149 to read backend memory (Tom)
16152 The vulnerability involves changing the
16153 data type of a table column used in a SQL function (CVE-2007-0555).
16154 This error can easily be exploited to cause a backend crash, and in
16155 principle might be used to read database content that the user
16156 should not be able to access.
16162 Fix rare bug wherein btree index page splits could fail
16163 due to choosing an infeasible split point (Heikki Linnakangas)
16169 Tighten security of multi-byte character processing for UTF8 sequences
16170 over three bytes long (Tom)
16179 <sect1 id="release-7-3-17">
16180 <title>Release 7.3.17</title>
16183 <title>Release date</title>
16184 <simpara>2007-01-08</simpara>
16188 This release contains a variety of fixes from 7.3.16.
16192 <title>Migration to version 7.3.17</title>
16195 A dump/restore is not required for those running 7.3.X. However,
16196 if you are upgrading from a version earlier than 7.3.13, see the release
16203 <title>Changes</title>
16209 <function>to_number()</> and <function>to_char(numeric)</>
16210 are now <literal>STABLE</>, not <literal>IMMUTABLE</>, for
16211 new <application>initdb</> installs (Tom)
16215 This is because <varname>lc_numeric</> can potentially
16216 change the output of these functions.
16222 Improve index usage of regular expressions that use parentheses (Tom)
16226 This improves <application>psql</> <literal>\d</> performance also.
16235 <sect1 id="release-7-3-16">
16236 <title>Release 7.3.16</title>
16239 <title>Release date</title>
16240 <simpara>2006-10-16</simpara>
16244 This release contains a variety of fixes from 7.3.15.
16248 <title>Migration to version 7.3.16</title>
16251 A dump/restore is not required for those running 7.3.X. However,
16252 if you are upgrading from a version earlier than 7.3.13, see the release
16259 <title>Changes</title>
16262 <listitem><para>Fix corner cases in pattern matching for
16263 <application>psql</>'s <literal>\d</> commands</para></listitem>
16264 <listitem><para>Fix index-corrupting bugs in /contrib/ltree
16265 (Teodor)</para></listitem>
16266 <listitem><para>Back-port 7.4 spinlock code to improve performance and support
16267 64-bit architectures better</para> </listitem>
16268 <listitem><para>Fix SSL-related memory leak in libpq</para> </listitem>
16269 <listitem><para>Fix backslash escaping in /contrib/dbmirror</para></listitem>
16270 <listitem><para>Adjust regression tests for recent changes in US DST laws
16271 </para> </listitem>
16277 <sect1 id="release-7-3-15">
16278 <title>Release 7.3.15</title>
16281 <title>Release date</title>
16282 <simpara>2006-05-23</simpara>
16286 This release contains a variety of fixes from 7.3.14,
16287 including patches for extremely serious security issues.
16291 <title>Migration to version 7.3.15</title>
16294 A dump/restore is not required for those running 7.3.X. However,
16295 if you are upgrading from a version earlier than 7.3.13, see the release
16300 Full security against the SQL-injection attacks described in
16301 CVE-2006-2313 and CVE-2006-2314 might require changes in application
16302 code. If you have applications that embed untrustworthy strings
16303 into SQL commands, you should examine them as soon as possible to
16304 ensure that they are using recommended escaping techniques. In
16305 most cases, applications should be using subroutines provided by
16306 libraries or drivers (such as <application>libpq</>'s
16307 <function>PQescapeStringConn()</>) to perform string escaping,
16308 rather than relying on <foreignphrase>ad hoc</> code to do it.
16313 <title>Changes</title>
16316 <listitem><para>Change the server to reject invalidly-encoded multibyte
16317 characters in all cases (Tatsuo, Tom)</para>
16318 <para>While <productname>PostgreSQL</> has been moving in this direction for
16319 some time, the checks are now applied uniformly to all encodings and all
16320 textual input, and are now always errors not merely warnings. This change
16321 defends against SQL-injection attacks of the type described in CVE-2006-2313.
16324 <listitem><para>Reject unsafe uses of <literal>\'</> in string literals</para>
16325 <para>As a server-side defense against SQL-injection attacks of the type
16326 described in CVE-2006-2314, the server now only accepts <literal>''</> and not
16327 <literal>\'</> as a representation of ASCII single quote in SQL string
16328 literals. By default, <literal>\'</> is rejected only when
16329 <varname>client_encoding</> is set to a client-only encoding (SJIS, BIG5, GBK,
16330 GB18030, or UHC), which is the scenario in which SQL injection is possible.
16331 A new configuration parameter <varname>backslash_quote</> is available to
16332 adjust this behavior when needed. Note that full security against
16333 CVE-2006-2314 might require client-side changes; the purpose of
16334 <varname>backslash_quote</> is in part to make it obvious that insecure
16335 clients are insecure.
16338 <listitem><para>Modify <application>libpq</>'s string-escaping routines to be
16339 aware of encoding considerations</para>
16340 <para>This fixes <application>libpq</>-using applications for the security
16341 issues described in CVE-2006-2313 and CVE-2006-2314.
16342 Applications that use multiple <productname>PostgreSQL</> connections
16343 concurrently should migrate to <function>PQescapeStringConn()</> and
16344 <function>PQescapeByteaConn()</> to ensure that escaping is done correctly
16345 for the settings in use in each database connection. Applications that
16346 do string escaping <quote>by hand</> should be modified to rely on library
16350 <listitem><para>Fix some incorrect encoding conversion functions</para>
16351 <para><function>win1251_to_iso</>, <function>alt_to_iso</>,
16352 <function>euc_tw_to_big5</>, <function>euc_tw_to_mic</>,
16353 <function>mic_to_euc_tw</> were all broken to varying
16357 <listitem><para>Clean up stray remaining uses of <literal>\'</> in strings
16358 (Bruce, Jan)</para></listitem>
16360 <listitem><para>Fix server to use custom DH SSL parameters correctly (Michael
16361 Fuhr)</para></listitem>
16363 <listitem><para>Fix various minor memory leaks</para></listitem>
16369 <sect1 id="release-7-3-14">
16370 <title>Release 7.3.14</title>
16373 <title>Release date</title>
16374 <simpara>2006-02-14</simpara>
16378 This release contains a variety of fixes from 7.3.13.
16382 <title>Migration to version 7.3.14</title>
16385 A dump/restore is not required for those running 7.3.X. However,
16386 if you are upgrading from a version earlier than 7.3.13, see the release
16392 <title>Changes</title>
16396 <listitem><para>Fix potential crash in <command>SET
16397 SESSION AUTHORIZATION</> (CVE-2006-0553)</para>
16398 <para>An unprivileged user could crash the server process, resulting in
16399 momentary denial of service to other users, if the server has been compiled
16400 with Asserts enabled (which is not the default).
16401 Thanks to Akio Ishida for reporting this problem.
16404 <listitem><para>Fix bug with row visibility logic in self-inserted
16406 <para>Under rare circumstances a row inserted by the current command
16407 could be seen as already valid, when it should not be. Repairs bug
16408 created in 7.3.11 release.
16411 <listitem><para>Fix race condition that could lead to <quote>file already
16412 exists</> errors during pg_clog file creation
16413 (Tom)</para></listitem>
16415 <listitem><para>Fix to allow restoring dumps that have cross-schema
16416 references to custom operators (Tom)</para></listitem>
16418 <listitem><para>Portability fix for testing presence of <function>finite</>
16419 and <function>isinf</> during configure (Tom)</para></listitem>
16426 <sect1 id="release-7-3-13">
16427 <title>Release 7.3.13</title>
16430 <title>Release date</title>
16431 <simpara>2006-01-09</simpara>
16435 This release contains a variety of fixes from 7.3.12.
16439 <title>Migration to version 7.3.13</title>
16442 A dump/restore is not required for those running 7.3.X. However,
16443 if you are upgrading from a version earlier than 7.3.10, see the release
16445 Also, you might need to <command>REINDEX</> indexes on textual
16446 columns after updating, if you are affected by the locale or
16447 <application>plperl</> issues described below.
16452 <title>Changes</title>
16456 <listitem><para>Fix character string comparison for locales that consider
16457 different character combinations as equal, such as Hungarian (Tom)</para>
16458 <para>This might require <command>REINDEX</> to fix existing indexes on
16459 textual columns.</para></listitem>
16461 <listitem><para>Set locale environment variables during postmaster startup
16462 to ensure that <application>plperl</> won't change the locale later</para>
16463 <para>This fixes a problem that occurred if the <application>postmaster</> was
16464 started with environment variables specifying a different locale than what
16465 <application>initdb</> had been told. Under these conditions, any use of
16466 <application>plperl</> was likely to lead to corrupt indexes. You might need
16467 <command>REINDEX</> to fix existing indexes on
16468 textual columns if this has happened to you.</para></listitem>
16470 <listitem><para>Fix longstanding bug in strpos() and regular expression
16471 handling in certain rarely used Asian multi-byte character sets (Tatsuo)
16474 <listitem><para>Fix bug in <filename>/contrib/pgcrypto</> gen_salt,
16475 which caused it not to use all available salt space for MD5 and
16476 XDES algorithms (Marko Kreen, Solar Designer)</para>
16477 <para>Salts for Blowfish and standard DES are unaffected.</para></listitem>
16479 <listitem><para>Fix <filename>/contrib/dblink</> to throw an error,
16480 rather than crashing, when the number of columns specified is different from
16481 what's actually returned by the query (Joe)</para></listitem>
16488 <sect1 id="release-7-3-12">
16489 <title>Release 7.3.12</title>
16492 <title>Release date</title>
16493 <simpara>2005-12-12</simpara>
16497 This release contains a variety of fixes from 7.3.11.
16501 <title>Migration to version 7.3.12</title>
16504 A dump/restore is not required for those running 7.3.X. However,
16505 if you are upgrading from a version earlier than 7.3.10, see the release
16511 <title>Changes</title>
16515 <listitem><para>Fix race condition in transaction log management</para>
16516 <para>There was a narrow window in which an I/O operation could be initiated
16517 for the wrong page, leading to an Assert failure or data
16521 <listitem><para><filename>/contrib/ltree</> fixes (Teodor)</para></listitem>
16523 <listitem><para>Fix longstanding planning error for outer joins</para>
16524 <para>This bug sometimes caused a bogus error <quote>RIGHT JOIN is
16525 only supported with merge-joinable join conditions</>.</para></listitem>
16527 <listitem><para>Prevent core dump in <application>pg_autovacuum</> when a
16528 table has been dropped</para></listitem>
16535 <sect1 id="release-7-3-11">
16536 <title>Release 7.3.11</title>
16539 <title>Release date</title>
16540 <simpara>2005-10-04</simpara>
16544 This release contains a variety of fixes from 7.3.10.
16548 <title>Migration to version 7.3.11</title>
16551 A dump/restore is not required for those running 7.3.X. However,
16552 if you are upgrading from a version earlier than 7.3.10, see the release
16558 <title>Changes</title>
16561 <listitem><para>Fix error that allowed <command>VACUUM</> to remove
16562 <literal>ctid</> chains too soon, and add more checking in code that follows
16563 <literal>ctid</> links</para>
16564 <para>This fixes a long-standing problem that could cause crashes in very rare
16565 circumstances.</para></listitem>
16566 <listitem><para>Fix <type>CHAR()</> to properly pad spaces to the specified
16567 length when using a multiple-byte character set (Yoshiyuki Asaba)</para>
16568 <para>In prior releases, the padding of <type>CHAR()</> was incorrect
16569 because it only padded to the specified number of bytes without
16570 considering how many characters were stored.</para></listitem>
16571 <listitem><para>Fix missing rows in queries like <literal>UPDATE a=... WHERE
16572 a...</> with GiST index on column <literal>a</></para></listitem>
16573 <listitem><para>Improve checking for partially-written WAL
16574 pages</para></listitem>
16575 <listitem><para>Improve robustness of signal handling when SSL is
16576 enabled</para></listitem>
16577 <listitem><para>Various memory leakage fixes</para></listitem>
16578 <listitem><para>Various portability improvements</para></listitem>
16579 <listitem><para>Fix PL/PgSQL to handle <literal>var := var</> correctly when
16580 the variable is of pass-by-reference type</para></listitem>
16586 <sect1 id="release-7-3-10">
16587 <title>Release 7.3.10</title>
16590 <title>Release date</title>
16591 <simpara>2005-05-09</simpara>
16595 This release contains a variety of fixes from 7.3.9, including several
16596 security-related issues.
16600 <title>Migration to version 7.3.10</title>
16603 A dump/restore is not required for those running 7.3.X. However,
16604 it is one possible way of handling a significant security problem
16605 that has been found in the initial contents of 7.3.X system
16606 catalogs. A dump/initdb/reload sequence using 7.3.10's initdb will
16607 automatically correct this problem.
16611 The security problem is that the built-in character set encoding
16612 conversion functions can be invoked from SQL commands by unprivileged
16613 users, but the functions were not designed for such use and are not
16614 secure against malicious choices of arguments. The fix involves changing
16615 the declared parameter list of these functions so that they can no longer
16616 be invoked from SQL commands. (This does not affect their normal use
16617 by the encoding conversion machinery.)
16618 It is strongly recommended that all installations repair this error,
16619 either by initdb or by following the manual repair procedure given
16620 below. The error at least allows unprivileged database users to crash
16621 their server process, and might allow unprivileged users to gain the
16622 privileges of a database superuser.
16626 If you wish not to do an initdb, perform the following procedure instead.
16627 As the database superuser, do:
16631 UPDATE pg_proc SET proargtypes[3] = 'internal'::regtype
16632 WHERE pronamespace = 11 AND pronargs = 5
16633 AND proargtypes[2] = 'cstring'::regtype;
16634 -- The command should report having updated 90 rows;
16635 -- if not, rollback and investigate instead of committing!
16641 The above procedure must be carried out in <emphasis>each</> database
16642 of an installation, including <literal>template1</>, and ideally
16643 including <literal>template0</> as well. If you do not fix the
16644 template databases then any subsequently created databases will contain
16645 the same error. <literal>template1</> can be fixed in the same way
16646 as any other database, but fixing <literal>template0</> requires
16647 additional steps. First, from any database issue:
16649 UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
16651 Next connect to <literal>template0</> and perform the above repair
16652 procedure. Finally, do:
16654 -- re-freeze template0:
16656 -- and protect it against future alterations:
16657 UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
16663 <title>Changes</title>
16666 <listitem><para>Change encoding function signature to prevent
16667 misuse</para></listitem>
16668 <listitem><para>Repair ancient race condition that allowed a transaction to be
16669 seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
16670 than for other purposes</para>
16671 <para>This is an extremely serious bug since it could lead to apparent
16672 data inconsistencies being briefly visible to applications.</para></listitem>
16673 <listitem><para>Repair race condition between relation extension and
16675 <para>This could theoretically have caused loss of a page's worth of
16676 freshly-inserted data, although the scenario seems of very low probability.
16677 There are no known cases of it having caused more than an Assert failure.
16679 <listitem><para>Fix comparisons of <type>TIME WITH TIME ZONE</> values</para>
16681 The comparison code was wrong in the case where the
16682 <literal>--enable-integer-datetimes</> configuration switch had been used.
16683 NOTE: if you have an index on a <type>TIME WITH TIME ZONE</> column,
16684 it will need to be <command>REINDEX</>ed after installing this update, because
16685 the fix corrects the sort order of column values.
16687 <listitem><para>Fix <function>EXTRACT(EPOCH)</> for
16688 <type>TIME WITH TIME ZONE</> values</para></listitem>
16689 <listitem><para>Fix mis-display of negative fractional seconds in
16690 <type>INTERVAL</> values</para>
16692 This error only occurred when the
16693 <literal>--enable-integer-datetimes</> configuration switch had been used.
16695 <listitem><para>Additional buffer overrun checks in plpgsql
16696 (Neil)</para></listitem>
16697 <listitem><para>Fix pg_dump to dump trigger names containing <literal>%</>
16698 correctly (Neil)</para></listitem>
16699 <listitem><para>Prevent <function>to_char(interval)</> from dumping core for
16700 month-related formats</para></listitem>
16701 <listitem><para>Fix <filename>contrib/pgcrypto</> for newer OpenSSL builds
16702 (Marko Kreen)</para></listitem>
16703 <listitem><para>Still more 64-bit fixes for
16704 <filename>contrib/intagg</></para></listitem>
16705 <listitem><para>Prevent incorrect optimization of functions returning
16706 <type>RECORD</></para></listitem>
16712 <sect1 id="release-7-3-9">
16713 <title>Release 7.3.9</title>
16716 <title>Release date</title>
16717 <simpara>2005-01-31</simpara>
16721 This release contains a variety of fixes from 7.3.8, including several
16722 security-related issues.
16726 <title>Migration to version 7.3.9</title>
16729 A dump/restore is not required for those running 7.3.X.
16734 <title>Changes</title>
16737 <listitem><para>Disallow <command>LOAD</> to non-superusers</para>
16739 On platforms that will automatically execute initialization functions of a
16740 shared library (this includes at least Windows and ELF-based Unixen),
16741 <command>LOAD</> can be used to make the server execute arbitrary code.
16742 Thanks to NGS Software for reporting this.</para></listitem>
16743 <listitem><para>Check that creator of an aggregate function has the right to
16744 execute the specified transition functions</para>
16746 This oversight made it possible to bypass denial of EXECUTE
16747 permission on a function.</para></listitem>
16748 <listitem><para>Fix security and 64-bit issues in
16749 contrib/intagg</para></listitem>
16750 <listitem><para>Add needed STRICT marking to some contrib functions (Kris
16751 Jurka)</para></listitem>
16752 <listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
16753 many parameters (Neil)</para></listitem>
16754 <listitem><para>Fix planning error for FULL and RIGHT outer joins</para>
16756 The result of the join was mistakenly supposed to be sorted the same as the
16757 left input. This could not only deliver mis-sorted output to the user, but
16758 in case of nested merge joins could give outright wrong answers.
16760 <listitem><para>Fix plperl for quote marks in tuple fields</para></listitem>
16761 <listitem><para>Fix display of negative intervals in SQL and GERMAN
16762 datestyles</para></listitem>
16768 <sect1 id="release-7-3-8">
16769 <title>Release 7.3.8</title>
16772 <title>Release date</title>
16773 <simpara>2004-10-22</simpara>
16777 This release contains a variety of fixes from 7.3.7.
16782 <title>Migration to version 7.3.8</title>
16785 A dump/restore is not required for those running 7.3.X.
16790 <title>Changes</title>
16793 <listitem><para>Repair possible failure to update hint bits on disk</para>
16795 Under rare circumstances this oversight could lead to
16796 <quote>could not access transaction status</> failures, which qualifies
16797 it as a potential-data-loss bug.
16799 <listitem><para>Ensure that hashed outer join does not miss tuples</para>
16801 Very large left joins using a hash join plan could fail to output unmatched
16802 left-side rows given just the right data distribution.
16804 <listitem><para>Disallow running pg_ctl as root</para>
16806 This is to guard against any possible security issues.
16808 <listitem><para>Avoid using temp files in /tmp in make_oidjoins_check</para>
16810 This has been reported as a security issue, though it's hardly worthy of
16811 concern since there is no reason for non-developers to use this script anyway.
16818 <sect1 id="release-7-3-7">
16819 <title>Release 7.3.7</title>
16822 <title>Release date</title>
16823 <simpara>2004-08-16</simpara>
16827 This release contains one critical fix over 7.3.6, and some minor items.
16832 <title>Migration to version 7.3.7</title>
16835 A dump/restore is not required for those running 7.3.X.
16840 <title>Changes</title>
16843 <listitem><para>Prevent possible loss of committed transactions during crash</para>
16845 Due to insufficient interlocking between transaction commit and checkpointing,
16846 it was possible for transactions committed just before the most recent
16847 checkpoint to be lost, in whole or in part, following a database crash and
16848 restart. This is a serious bug that has existed
16849 since <productname>PostgreSQL</productname> 7.1.
16851 <listitem><para>Remove asymmetrical word processing in tsearch (Teodor)</para></listitem>
16852 <listitem><para>Properly schema-qualify function names when pg_dump'ing a CAST</para></listitem>
16858 <sect1 id="release-7-3-6">
16859 <title>Release 7.3.6</title>
16862 <title>Release date</title>
16863 <simpara>2004-03-02</simpara>
16867 This release contains a variety of fixes from 7.3.5.
16872 <title>Migration to version 7.3.6</title>
16875 A dump/restore is <emphasis>not</emphasis> required for those
16882 <title>Changes</title>
16885 <listitem><para>Revert erroneous changes in rule permissions checking</para>
16886 <para>A patch applied in 7.3.3 to fix a corner case in rule permissions checks
16887 turns out to have disabled rule-related permissions checks in many
16888 not-so-corner cases. This would for example allow users to insert into views
16889 they weren't supposed to have permission to insert into. We have therefore
16890 reverted the 7.3.3 patch. The original bug will be fixed in 8.0.
16892 <listitem><para>Repair incorrect order of operations in
16893 GetNewTransactionId()</para>
16895 This bug could result in failure under out-of-disk-space conditions, including
16896 inability to restart even after disk space is freed.
16898 <listitem><para>Ensure configure selects -fno-strict-aliasing even when
16899 an external value for CFLAGS is supplied</para>
16901 On some platforms, building with -fstrict-aliasing causes bugs.
16903 <listitem><para>Make pg_restore handle 64-bit off_t correctly</para>
16905 This bug prevented proper restoration from archive files exceeding 4 GB.
16907 <listitem><para>Make contrib/dblink not assume that local and remote type OIDs
16908 match (Joe)</para></listitem>
16909 <listitem><para>Quote connectby()'s start_with argument properly (Joe)</para></listitem>
16910 <listitem><para>Don't crash when a rowtype argument to a plpgsql function is
16911 NULL</para></listitem>
16912 <listitem><para>Avoid generating invalid character encoding sequences in
16913 corner cases when planning LIKE operations</para></listitem>
16914 <listitem><para>Ensure text_position() cannot scan past end of source string
16915 in multibyte cases (Korea PostgreSQL Users' Group)</para></listitem>
16916 <listitem><para>Fix index optimization and selectivity estimates for LIKE
16917 operations on bytea columns (Joe)</para></listitem>
16923 <sect1 id="release-7-3-5">
16924 <title>Release 7.3.5</title>
16927 <title>Release date</title>
16928 <simpara>2003-12-03</simpara>
16932 This has a variety of fixes from 7.3.4.
16937 <title>Migration to version 7.3.5</title>
16940 A dump/restore is <emphasis>not</emphasis> required for those
16946 <title>Changes</title>
16949 <listitem><para>Force zero_damaged_pages to be on during recovery from WAL</para></listitem>
16950 <listitem><para>Prevent some obscure cases of <quote>variable not in subplan target lists</quote></para></listitem>
16951 <listitem><para>Force stats processes to detach from shared memory, ensuring cleaner shutdown</para></listitem>
16952 <listitem><para>Make PQescapeBytea and byteaout consistent with each other (Joe)</para></listitem>
16953 <listitem><para>Added missing SPI_finish() calls to dblink's get_tuple_of_interest() (Joe)</para></listitem>
16954 <listitem><para>Fix for possible foreign key violation when rule rewrites INSERT (Jan)</para></listitem>
16955 <listitem><para>Support qualified type names in PL/Tcl's spi_prepare command (Jan)</para></listitem>
16956 <listitem><para>Make pg_dump handle a procedural language handler located in pg_catalog</para></listitem>
16957 <listitem><para>Make pg_dump handle cases where a custom opclass is in another schema</para></listitem>
16958 <listitem><para>Make pg_dump dump binary-compatible casts correctly (Jan)</para></listitem>
16959 <listitem><para>Fix insertion of expressions containing subqueries into rule bodies</para></listitem>
16960 <listitem><para>Fix incorrect argument processing in clusterdb script (Anand Ranganathan)</para></listitem>
16961 <listitem><para>Fix problems with dropped columns in plpython triggers</para></listitem>
16962 <listitem><para>Repair problems with to_char() reading past end of its input string (Karel)</para></listitem>
16963 <listitem><para>Fix GB18030 mapping errors (Tatsuo)</para></listitem>
16964 <listitem><para>Fix several problems with SSL error handling and asynchronous SSL I/O</para></listitem>
16965 <listitem><para>Remove ability to bind a list of values to a single parameter in JDBC
16966 (prevents possible SQL-injection attacks)</para></listitem>
16967 <listitem><para>Fix some errors in HAVE_INT64_TIMESTAMP code paths</para></listitem>
16968 <listitem><para>Fix corner case for btree search in parallel with first root page split</para></listitem>
16974 <sect1 id="release-7-3-4">
16975 <title>Release 7.3.4</title>
16978 <title>Release date</title>
16979 <simpara>2003-07-24</simpara>
16983 This has a variety of fixes from 7.3.3.
16988 <title>Migration to version 7.3.4</title>
16991 A dump/restore is <emphasis>not</emphasis> required for those
16997 <title>Changes</title>
17000 <listitem><para>Repair breakage in timestamp-to-date conversion for dates before 2000</para></listitem>
17001 <listitem><para>Prevent rare possibility of server startup failure (Tom)</para></listitem>
17002 <listitem><para>Fix bugs in interval-to-time conversion (Tom)</para></listitem>
17003 <listitem><para>Add constraint names in a few places in pg_dump (Rod)</para></listitem>
17004 <listitem><para>Improve performance of functions with many parameters (Tom)</para></listitem>
17005 <listitem><para>Fix to_ascii() buffer overruns (Tom)</para></listitem>
17006 <listitem><para>Prevent restore of database comments from throwing an error (Tom)</para></listitem>
17007 <listitem><para>Work around buggy strxfrm() present in some Solaris releases (Tom)</para></listitem>
17008 <listitem><para>Properly escape jdbc setObject() strings to improve security (Barry)</para></listitem>
17014 <sect1 id="release-7-3-3">
17015 <title>Release 7.3.3</title>
17018 <title>Release date</title>
17019 <simpara>2003-05-22</simpara>
17023 This release contains a variety of fixes for version 7.3.2.
17027 <title>Migration to version 7.3.3</title>
17030 A dump/restore is <emphasis>not</emphasis> required for those
17031 running version 7.3.*.
17036 <title>Changes</title>
17039 <listitem><para>Repair sometimes-incorrect computation of StartUpID after a crash</para></listitem>
17040 <listitem><para>Avoid slowness with lots of deferred triggers in one transaction (Stephan)</para></listitem>
17041 <listitem><para>Don't lock referenced row when <command>UPDATE</command> doesn't change foreign key's value (Jan)</para></listitem>
17042 <listitem><para>Use <command>-fPIC</command> not <command>-fpic</command> on Sparc (Tom Callaway)</para></listitem>
17043 <listitem><para>Repair lack of schema-awareness in contrib/reindexdb</para></listitem>
17044 <listitem><para>Fix contrib/intarray error for zero-element result array (Teodor)</para></listitem>
17045 <listitem><para>Ensure createuser script will exit on control-C (Oliver)</para></listitem>
17046 <listitem><para>Fix errors when the type of a dropped column has itself been dropped</para></listitem>
17047 <listitem><para><command>CHECKPOINT</command> does not cause database panic on failure in noncritical steps</para></listitem>
17048 <listitem><para>Accept 60 in seconds fields of timestamp, time, interval input values</para></listitem>
17049 <listitem><para>Issue notice, not error, if <type>TIMESTAMP</type>,
17050 <type> TIME</type>, or <type>INTERVAL</type> precision too large</para></listitem>
17051 <listitem><para>Fix <function>abstime-to-time</function> cast function (fix is
17052 not applied unless you <application>initdb</application>)</para></listitem>
17053 <listitem><para>Fix <application>pg_proc</application> entry for
17054 <type>timestampt_izone</type> (fix is not applied unless you
17055 <application>initdb</application>)</para></listitem>
17056 <listitem><para>Make <function>EXTRACT(EPOCH FROM timestamp without time zone)</function> treat input as local time</para></listitem>
17057 <listitem><para><command>'now'::timestamptz</command> gave wrong answer if timezone changed earlier in transaction</para></listitem>
17058 <listitem><para><envar>HAVE_INT64_TIMESTAMP</envar> code for time with timezone overwrote its input</para></listitem>
17059 <listitem><para>Accept <command>GLOBAL TEMP/TEMPORARY</command> as a
17060 synonym for <command>TEMPORARY</command></para></listitem>
17061 <listitem><para>Avoid improper schema-privilege-check failure in foreign-key triggers</para></listitem>
17062 <listitem><para>Fix bugs in foreign-key triggers for <command>SET DEFAULT</command> action</para></listitem>
17063 <listitem><para>Fix incorrect time-qual check in row fetch for
17064 <command>UPDATE</command> and <command>DELETE</command> triggers</para></listitem>
17065 <listitem><para>Foreign-key clauses were parsed but ignored in
17066 <command>ALTER TABLE ADD COLUMN</command></para></listitem>
17067 <listitem><para>Fix createlang script breakage for case where handler function already exists</para></listitem>
17068 <listitem><para>Fix misbehavior on zero-column tables in <application>pg_dump</application>, COPY, ANALYZE, other places</para></listitem>
17069 <listitem><para>Fix misbehavior of <function>func_error()</function> on type names containing '%'</para></listitem>
17070 <listitem><para>Fix misbehavior of <function>replace()</function> on strings containing '%'</para></listitem>
17071 <listitem><para>Regular-expression patterns containing certain multibyte characters failed</para></listitem>
17072 <listitem><para>Account correctly for <command>NULL</command>s in more cases in join size estimation</para></listitem>
17073 <listitem><para>Avoid conflict with system definition of <function>isblank()</function> function or macro</para></listitem>
17074 <listitem><para>Fix failure to convert large code point values in EUC_TW conversions (Tatsuo)</para></listitem>
17075 <listitem><para>Fix error recovery for <function>SSL_read</function>/<function>SSL_write</function> calls</para></listitem>
17076 <listitem><para>Don't do early constant-folding of type coercion expressions</para></listitem>
17077 <listitem><para>Validate page header fields immediately after reading in any page</para></listitem>
17078 <listitem><para>Repair incorrect check for ungrouped variables in unnamed joins</para></listitem>
17079 <listitem><para>Fix buffer overrun in <function>to_ascii</function> (Guido Notari)</para></listitem>
17080 <listitem><para>contrib/ltree fixes (Teodor)</para></listitem>
17081 <listitem><para>Fix core dump in deadlock detection on machines where char is unsigned</para></listitem>
17082 <listitem><para>Avoid running out of buffers in many-way indexscan (bug introduced in 7.3)</para></listitem>
17083 <listitem><para>Fix planner's selectivity estimation functions to handle domains properly</para></listitem>
17084 <listitem><para>Fix <application>dbmirror</application> memory-allocation bug (Steven Singer)</para></listitem>
17085 <listitem><para>Prevent infinite loop in <function>ln(numeric)</function> due to roundoff error</para></listitem>
17086 <listitem><para><command>GROUP BY</command> got confused if there were multiple equal GROUP BY items</para></listitem>
17087 <listitem><para>Fix bad plan when inherited <command>UPDATE</command>/<command>DELETE</command> references another inherited table</para></listitem>
17088 <listitem><para>Prevent clustering on incomplete (partial or non-NULL-storing) indexes</para></listitem>
17089 <listitem><para>Service shutdown request at proper time if it arrives while still starting up</para></listitem>
17090 <listitem><para>Fix left-links in temporary indexes (could make backwards scans miss entries)</para></listitem>
17091 <listitem><para>Fix incorrect handling of client_encoding setting in postgresql.conf (Tatsuo)</para></listitem>
17092 <listitem><para>Fix failure to respond to <command>pg_ctl stop -m fast</command> after Async_NotifyHandler runs</para></listitem>
17093 <listitem><para>Fix SPI for case where rule contains multiple statements of the same type</para></listitem>
17094 <listitem><para>Fix problem with checking for wrong type of access privilege in rule query</para></listitem>
17095 <listitem><para>Fix problem with <command>EXCEPT</command> in <command>CREATE RULE</command></para></listitem>
17096 <listitem><para>Prevent problem with dropping temp tables having serial columns</para></listitem>
17097 <listitem><para>Fix replace_vars_with_subplan_refs failure in complex views</para></listitem>
17098 <listitem><para>Fix regexp slowness in single-byte encodings (Tatsuo)</para></listitem>
17099 <listitem><para>Allow qualified type names in <command>CREATE CAST</command>
17100 and <command> DROP CAST</command></para></listitem>
17101 <listitem><para>Accept <function>SETOF type[]</function>, which formerly had to
17102 be written <function>SETOF _type</function></para></listitem>
17103 <listitem><para>Fix <application>pg_dump</application> core dump in some cases with procedural languages</para></listitem>
17104 <listitem><para>Force ISO datestyle in <application>pg_dump</application> output, for portability (Oliver)</para></listitem>
17105 <listitem><para><application>pg_dump</application> failed to handle error return
17106 from <function>lo_read</function> (Oleg Drokin)</para></listitem>
17107 <listitem><para><application>pg_dumpall</application> failed with groups having no members (Nick Eskelinen)</para></listitem>
17108 <listitem><para><application>pg_dumpall</application> failed to recognize --globals-only switch</para></listitem>
17109 <listitem><para>pg_restore failed to restore blobs if -X disable-triggers is specified</para></listitem>
17110 <listitem><para>Repair intrafunction memory leak in plpgsql</para></listitem>
17111 <listitem><para>pltcl's <command>elog</command> command dumped core if given wrong parameters (Ian Harding)</para></listitem>
17112 <listitem><para>plpython used wrong value of <envar>atttypmod</envar> (Brad McLean)</para></listitem>
17113 <listitem><para>Fix improper quoting of boolean values in Python interface (D'Arcy)</para></listitem>
17114 <listitem><para>Added <function>addDataType()</function> method to PGConnection interface for JDBC</para></listitem>
17115 <listitem><para>Fixed various problems with updateable ResultSets for JDBC (Shawn Green)</para></listitem>
17116 <listitem><para>Fixed various problems with DatabaseMetaData for JDBC (Kris Jurka, Peter Royal)</para></listitem>
17117 <listitem><para>Fixed problem with parsing table ACLs in JDBC</para></listitem>
17118 <listitem><para>Better error message for character set conversion problems in JDBC</para></listitem>
17124 <sect1 id="release-7-3-2">
17125 <title>Release 7.3.2</title>
17128 <title>Release date</title>
17129 <simpara>2003-02-04</simpara>
17133 This release contains a variety of fixes for version 7.3.1.
17138 <title>Migration to version 7.3.2</title>
17141 A dump/restore is <emphasis>not</emphasis> required for those
17142 running version 7.3.*.
17147 <title>Changes</title>
17150 <listitem><para>Restore creation of OID column in CREATE TABLE AS / SELECT INTO</para></listitem>
17151 <listitem><para>Fix <application>pg_dump</> core dump when dumping views having comments</para></listitem>
17152 <listitem><para>Dump DEFERRABLE/INITIALLY DEFERRED constraints properly</para></listitem>
17153 <listitem><para>Fix UPDATE when child table's column numbering differs from parent</para></listitem>
17154 <listitem><para>Increase default value of max_fsm_relations</para></listitem>
17155 <listitem><para>Fix problem when fetching backwards in a cursor for a single-row query</para></listitem>
17156 <listitem><para>Make backward fetch work properly with cursor on SELECT DISTINCT query</para></listitem>
17157 <listitem><para>Fix problems with loading <application>pg_dump</> files containing contrib/lo usage</para></listitem>
17158 <listitem><para>Fix problem with all-numeric user names</para></listitem>
17159 <listitem><para>Fix possible memory leak and core dump during disconnect in libpgtcl</para></listitem>
17160 <listitem><para>Make plpython's spi_execute command handle nulls properly (Andrew Bosma)</para></listitem>
17161 <listitem><para>Adjust plpython error reporting so that its regression test passes again</para></listitem>
17162 <listitem><para>Work with bison 1.875</para></listitem>
17163 <listitem><para>Handle mixed-case names properly in plpgsql's %type (Neil)</para></listitem>
17164 <listitem><para>Fix core dump in pltcl when executing a query rewritten by a rule</para></listitem>
17165 <listitem><para>Repair array subscript overruns (per report from Yichen Xie)</para></listitem>
17166 <listitem><para>Reduce MAX_TIME_PRECISION from 13 to 10 in floating-point case</para></listitem>
17167 <listitem><para>Correctly case-fold variable names in per-database and per-user settings</para></listitem>
17168 <listitem><para>Fix coredump in plpgsql's RETURN NEXT when SELECT into record returns no rows</para></listitem>
17169 <listitem><para>Fix outdated use of pg_type.typprtlen in python client interface</para></listitem>
17170 <listitem><para>Correctly handle fractional seconds in timestamps in JDBC driver</para></listitem>
17171 <listitem><para>Improve performance of getImportedKeys() in JDBC</para></listitem>
17172 <listitem><para>Make shared-library symlinks work standardly on HPUX (Giles)</para></listitem>
17173 <listitem><para>Repair inconsistent rounding behavior for timestamp, time, interval</para></listitem>
17174 <listitem><para>SSL negotiation fixes (Nathan Mueller)</para></listitem>
17175 <listitem><para>Make libpq's ~/.pgpass feature work when connecting with PQconnectDB</para></listitem>
17176 <listitem><para>Update my2pg, ora2pg</para></listitem>
17177 <listitem><para>Translation updates</para></listitem>
17178 <listitem><para>Add casts between types lo and oid in contrib/lo</para></listitem>
17179 <listitem><para>fastpath code now checks for privilege to call function</para></listitem>
17185 <sect1 id="release-7-3-1">
17186 <title>Release 7.3.1</title>
17189 <title>Release date</title>
17190 <simpara>2002-12-18</simpara>
17194 This release contains a variety of fixes for version 7.3.
17199 <title>Migration to version 7.3.1</title>
17202 A dump/restore is <emphasis>not</emphasis> required for those
17203 running version 7.3. However, it should be noted that the main
17204 <productname>PostgreSQL</productname> interface library, libpq,
17205 has a new major version number for this release, which might require
17206 recompilation of client code in certain cases.
17211 <title>Changes</title>
17214 <listitem><para>Fix a core dump of COPY TO when client/server encodings don't match (Tom)</para></listitem>
17215 <listitem><para>Allow <application>pg_dump</> to work with pre-7.2 servers (Philip)</para></listitem>
17216 <listitem><para>contrib/adddepend fixes (Tom)</para></listitem>
17217 <listitem><para>Fix problem with deletion of per-user/per-database config settings (Tom)</para></listitem>
17218 <listitem><para>contrib/vacuumlo fix (Tom)</para></listitem>
17219 <listitem><para>Allow 'password' encryption even when pg_shadow contains MD5 passwords (Bruce)</para></listitem>
17220 <listitem><para>contrib/dbmirror fix (Steven Singer)</para></listitem>
17221 <listitem><para>Optimizer fixes (Tom)</para></listitem>
17222 <listitem><para>contrib/tsearch fixes (Teodor Sigaev, Magnus)</para></listitem>
17223 <listitem><para>Allow locale names to be mixed case (Nicolai Tufar)</para></listitem>
17224 <listitem><para>Increment libpq library's major version number (Bruce)</para></listitem>
17225 <listitem><para>pg_hba.conf error reporting fixes (Bruce, Neil)</para></listitem>
17226 <listitem><para>Add SCO Openserver 5.0.4 as a supported platform (Bruce)</para></listitem>
17227 <listitem><para>Prevent EXPLAIN from crashing server (Tom)</para></listitem>
17228 <listitem><para>SSL fixes (Nathan Mueller)</para></listitem>
17229 <listitem><para>Prevent composite column creation via ALTER TABLE (Tom)</para></listitem>
17235 <sect1 id="release-7-3">
17236 <title>Release 7.3</title>
17239 <title>Release date</title>
17240 <simpara>2002-11-27</simpara>
17244 <title>Overview</title>
17247 Major changes in this release:
17252 <term>Schemas</term>
17255 Schemas allow users to create objects in separate namespaces,
17256 so two people or applications can have tables with the same
17257 name. There is also a public schema for shared tables.
17258 Table/index creation can be restricted by removing privileges
17259 on the public schema.
17265 <term>Drop Column</term>
17268 <productname>PostgreSQL</productname> now supports the
17269 <literal>ALTER TABLE ... DROP COLUMN</literal> functionality.
17275 <term>Table Functions</term>
17278 Functions returning multiple rows and/or multiple columns are
17279 now much easier to use than before. You can call such a
17280 <quote>table function</quote> in the <literal>SELECT</literal>
17281 <literal>FROM</literal> clause, treating its output like a
17282 table. Also, <application>PL/pgSQL</application> functions can
17289 <term>Prepared Queries</term>
17292 <productname>PostgreSQL</productname> now supports prepared
17293 queries, for improved performance.
17299 <term>Dependency Tracking</term>
17302 <productname>PostgreSQL</productname> now records object
17303 dependencies, which allows improvements in many areas.
17304 <command>DROP</command> statements now take either
17305 <literal>CASCADE</> or <literal>RESTRICT</> to control whether
17306 dependent objects are also dropped.
17312 <term>Privileges</term>
17315 Functions and procedural languages now have privileges, and
17316 functions can be defined to run with the privileges of their
17323 <term>Internationalization</term>
17326 Both multibyte and locale support are now always enabled.
17332 <term>Logging</term>
17335 A variety of logging options have been enhanced.
17341 <term>Interfaces</term>
17344 A large number of interfaces have been moved to <ulink
17345 url="http://gborg.postgresql.org">http://gborg.postgresql.org</>
17346 where they can be developed and released independently.
17352 <term>Functions/Identifiers</term>
17355 By default, functions can now take up to 32 parameters, and
17356 identifiers can be up to 63 bytes long. Also, <literal>OPAQUE</>
17357 is now deprecated: there are specific <quote>pseudo-datatypes</>
17358 to represent each of the former meanings of <literal>OPAQUE</>
17359 in function argument and result types.
17368 <title>Migration to version 7.3</title>
17371 A dump/restore using <application>pg_dump</> is required for those
17372 wishing to migrate data from any previous release. If your
17373 application examines the system catalogs, additional changes will
17374 be required due to the introduction of schemas in 7.3; for more
17375 information, see: <ulink
17376 url="http://developer.postgresql.org/~momjian/upgrade_tips_7.3"></>.
17380 Observe the following incompatibilities:
17386 Pre-6.3 clients are no longer supported.
17392 <filename>pg_hba.conf</filename> now has a column for the user
17393 name and additional features. Existing files need to be
17400 Several <filename>postgresql.conf</filename> logging parameters
17407 <literal>LIMIT #,#</literal> has been disabled; use
17408 <literal>LIMIT # OFFSET #</literal>.
17414 <command>INSERT</command> statements with column lists must
17415 specify a value for each specified column. For example,
17416 <literal>INSERT INTO tab (col1, col2) VALUES ('val1')</literal>
17417 is now invalid. It's still allowed to supply fewer columns than
17418 expected if the <command>INSERT</command> does not have a column list.
17424 <type>serial</type> columns are no longer automatically
17425 <literal>UNIQUE</>; thus, an index will not automatically be
17432 A <command>SET</command> command inside an aborted transaction
17433 is now rolled back.
17439 <command>COPY</command> no longer considers missing trailing
17440 columns to be null. All columns need to be specified.
17441 (However, one can achieve a similar effect by specifying a
17442 column list in the <command>COPY</command> command.)
17448 The data type <type>timestamp</type> is now equivalent to
17449 <type>timestamp without time zone</type>, instead of
17450 <type>timestamp with time zone</type>.
17456 Pre-7.3 databases loaded into 7.3 will not have the new object
17457 dependencies for <type>serial</type> columns, unique
17458 constraints, and foreign keys. See the directory
17459 <filename>contrib/adddepend/</filename> for a detailed
17460 description and a script that will add such dependencies.
17466 An empty string (<literal>''</literal>) is no longer allowed as
17467 the input into an integer field. Formerly, it was silently
17476 <title>Changes</title>
17479 <title>Server Operation</title>
17481 <listitem><para>Add pg_locks view to show locks (Neil)</para></listitem>
17482 <listitem><para>Security fixes for password negotiation memory allocation (Neil)</para></listitem>
17483 <listitem><para>Remove support for version 0 FE/BE protocol (<productname>PostgreSQL</productname> 6.2 and earlier) (Tom)</para></listitem>
17484 <listitem><para>Reserve the last few backend slots for superusers, add parameter superuser_reserved_connections to control this (Nigel J. Andrews)</para></listitem>
17489 <title>Performance</title>
17491 <listitem><para>Improve startup by calling localtime() only once (Tom)</para></listitem>
17492 <listitem><para>Cache system catalog information in flat files for faster startup (Tom)</para></listitem>
17493 <listitem><para>Improve caching of index information (Tom)</para></listitem>
17494 <listitem><para>Optimizer improvements (Tom, Fernando Nasser)</para></listitem>
17495 <listitem><para>Catalog caches now store failed lookups (Tom)</para></listitem>
17496 <listitem><para>Hash function improvements (Neil)</para></listitem>
17497 <listitem><para>Improve performance of query tokenization and network handling (Peter)</para></listitem>
17498 <listitem><para>Speed improvement for large object restore (Mario Weilguni)</para></listitem>
17499 <listitem><para>Mark expired index entries on first lookup, saving later heap fetches (Tom)</para></listitem>
17500 <listitem><para>Avoid excessive NULL bitmap padding (Manfred Koizar)</para></listitem>
17501 <listitem><para>Add BSD-licensed qsort() for Solaris, for performance (Bruce)</para></listitem>
17502 <listitem><para>Reduce per-row overhead by four bytes (Manfred Koizar)</para></listitem>
17503 <listitem><para>Fix GEQO optimizer bug (Neil Conway)</para></listitem>
17504 <listitem><para>Make WITHOUT OID actually save four bytes per row (Manfred Koizar)</para></listitem>
17505 <listitem><para>Add default_statistics_target variable to specify ANALYZE buckets (Neil)</para></listitem>
17506 <listitem><para>Use local buffer cache for temporary tables so no WAL overhead (Tom)</para></listitem>
17507 <listitem><para>Improve free space map performance on large tables (Stephen Marshall, Tom)</para></listitem>
17508 <listitem><para>Improved WAL write concurrency (Tom)</para></listitem>
17513 <title>Privileges</title>
17515 <listitem><para>Add privileges on functions and procedural languages (Peter)</para></listitem>
17516 <listitem><para>Add OWNER to CREATE DATABASE so superusers can create databases on behalf of unprivileged users (Gavin Sherry, Tom)</para></listitem>
17517 <listitem><para>Add new object privilege bits EXECUTE and USAGE (Tom)</para></listitem>
17518 <listitem><para>Add SET SESSION AUTHORIZATION DEFAULT and RESET SESSION AUTHORIZATION (Tom)</para></listitem>
17519 <listitem><para>Allow functions to be executed with the privilege of the function owner (Peter)</para></listitem>
17524 <title>Server Configuration</title>
17526 <listitem><para>Server log messages now tagged with LOG, not DEBUG (Bruce)</para></listitem>
17527 <listitem><para>Add user column to pg_hba.conf (Bruce)</para></listitem>
17528 <listitem><para>Have log_connections output two lines in log file (Tom)</para></listitem>
17529 <listitem><para>Remove debug_level from postgresql.conf, now server_min_messages (Bruce)</para></listitem>
17530 <listitem><para>New ALTER DATABASE/USER ... SET command for per-user/database initialization (Peter)</para></listitem>
17531 <listitem><para>New parameters server_min_messages and client_min_messages to control which messages are sent to the server logs or client applications (Bruce)</para></listitem>
17532 <listitem><para>Allow pg_hba.conf to specify lists of users/databases separated by commas, group names prepended with +, and file names prepended with @ (Bruce)</para></listitem>
17533 <listitem><para>Remove secondary password file capability and pg_password utility (Bruce)</para></listitem>
17534 <listitem><para>Add variable db_user_namespace for database-local user names (Bruce)</para></listitem>
17535 <listitem><para>SSL improvements (Bear Giles)</para></listitem>
17536 <listitem><para>Make encryption of stored passwords the default (Bruce)</para></listitem>
17537 <listitem><para>Allow pg_statistics to be reset by calling pg_stat_reset() (Christopher)</para></listitem>
17538 <listitem><para>Add log_duration parameter (Bruce)</para></listitem>
17539 <listitem><para>Rename debug_print_query to log_statement (Bruce)</para></listitem>
17540 <listitem><para>Rename show_query_stats to show_statement_stats (Bruce)</para></listitem>
17541 <listitem><para>Add param log_min_error_statement to print commands to logs on error (Gavin)</para></listitem>
17546 <title>Queries</title>
17548 <listitem><para>Make cursors insensitive, meaning their contents do not change (Tom)</para></listitem>
17549 <listitem><para>Disable LIMIT #,# syntax; now only LIMIT # OFFSET # supported (Bruce)</para></listitem>
17550 <listitem><para>Increase identifier length to 63 (Neil, Bruce)</para></listitem>
17551 <listitem><para>UNION fixes for merging >= 3 columns of different lengths (Tom)</para></listitem>
17552 <listitem><para>Add DEFAULT key word to INSERT, e.g., INSERT ... (..., DEFAULT, ...) (Rod)</para></listitem>
17553 <listitem><para>Allow views to have default values using ALTER COLUMN ... SET DEFAULT (Neil)</para></listitem>
17554 <listitem><para>Fail on INSERTs with column lists that don't supply all column values, e.g., INSERT INTO tab (col1, col2) VALUES ('val1'); (Rod)</para></listitem>
17555 <listitem><para>Fix for join aliases (Tom)</para></listitem>
17556 <listitem><para>Fix for FULL OUTER JOINs (Tom)</para></listitem>
17557 <listitem><para>Improve reporting of invalid identifier and location (Tom, Gavin)</para></listitem>
17558 <listitem><para>Fix OPEN cursor(args) (Tom)</para></listitem>
17559 <listitem><para>Allow 'ctid' to be used in a view and currtid(viewname) (Hiroshi)</para></listitem>
17560 <listitem><para>Fix for CREATE TABLE AS with UNION (Tom)</para></listitem>
17561 <listitem><para>SQL99 syntax improvements (Thomas)</para></listitem>
17562 <listitem><para>Add statement_timeout variable to cancel queries (Bruce)</para></listitem>
17563 <listitem><para>Allow prepared queries with PREPARE/EXECUTE (Neil)</para></listitem>
17564 <listitem><para>Allow FOR UPDATE to appear after LIMIT/OFFSET (Bruce)</para></listitem>
17565 <listitem><para>Add variable autocommit (Tom, David Van Wie)</para></listitem>
17570 <title>Object Manipulation</title>
17572 <listitem><para>Make equals signs optional in CREATE DATABASE (Gavin Sherry)</para></listitem>
17573 <listitem><para>Make ALTER TABLE OWNER change index ownership too (Neil)</para></listitem>
17574 <listitem><para>New ALTER TABLE tabname ALTER COLUMN colname SET STORAGE controls TOAST storage, compression (John Gray)</para></listitem>
17575 <listitem><para>Add schema support, CREATE/DROP SCHEMA (Tom)</para></listitem>
17576 <listitem><para>Create schema for temporary tables (Tom)</para></listitem>
17577 <listitem><para>Add variable search_path for schema search (Tom)</para></listitem>
17578 <listitem><para>Add ALTER TABLE SET/DROP NOT NULL (Christopher)</para></listitem>
17579 <listitem><para>New CREATE FUNCTION volatility levels (Tom)</para></listitem>
17580 <listitem><para>Make rule names unique only per table (Tom)</para></listitem>
17581 <listitem><para>Add 'ON tablename' clause to DROP RULE and COMMENT ON RULE (Tom)</para></listitem>
17582 <listitem><para>Add ALTER TRIGGER RENAME (Joe)</para></listitem>
17583 <listitem><para>New current_schema() and current_schemas() inquiry functions (Tom)</para></listitem>
17584 <listitem><para>Allow functions to return multiple rows (table functions) (Joe)</para></listitem>
17585 <listitem><para>Make WITH optional in CREATE DATABASE, for consistency (Bruce)</para></listitem>
17586 <listitem><para>Add object dependency tracking (Rod, Tom)</para></listitem>
17587 <listitem><para>Add RESTRICT/CASCADE to DROP commands (Rod)</para></listitem>
17588 <listitem><para>Add ALTER TABLE DROP for non-CHECK CONSTRAINT (Rod)</para></listitem>
17589 <listitem><para>Autodestroy sequence on DROP of table with SERIAL (Rod)</para></listitem>
17590 <listitem><para>Prevent column dropping if column is used by foreign key (Rod)</para></listitem>
17591 <listitem><para>Automatically drop constraints/functions when object is dropped (Rod)</para></listitem>
17592 <listitem><para>Add CREATE/DROP OPERATOR CLASS (Bill Studenmund, Tom)</para></listitem>
17593 <listitem><para>Add ALTER TABLE DROP COLUMN (Christopher, Tom, Hiroshi)</para></listitem>
17594 <listitem><para>Prevent inherited columns from being removed or renamed (Alvaro Herrera)</para></listitem>
17595 <listitem><para>Fix foreign key constraints to not error on intermediate database states (Stephan)</para></listitem>
17596 <listitem><para>Propagate column or table renaming to foreign key constraints</para></listitem>
17597 <listitem><para>Add CREATE OR REPLACE VIEW (Gavin, Neil, Tom)</para></listitem>
17598 <listitem><para>Add CREATE OR REPLACE RULE (Gavin, Neil, Tom)</para></listitem>
17599 <listitem><para>Have rules execute alphabetically, returning more predictable values (Tom)</para></listitem>
17600 <listitem><para>Triggers are now fired in alphabetical order (Tom)</para></listitem>
17601 <listitem><para>Add /contrib/adddepend to handle pre-7.3 object dependencies (Rod)</para></listitem>
17602 <listitem><para>Allow better casting when inserting/updating values (Tom)</para></listitem>
17607 <title>Utility Commands</title>
17609 <listitem><para>Have COPY TO output embedded carriage returns and newlines as \r and \n (Tom)</para></listitem>
17610 <listitem><para>Allow DELIMITER in COPY FROM to be 8-bit clean (Tatsuo)</para></listitem>
17611 <listitem><para>Make <application>pg_dump</> use ALTER TABLE ADD PRIMARY KEY, for performance (Neil)</para></listitem>
17612 <listitem><para>Disable brackets in multistatement rules (Bruce)</para></listitem>
17613 <listitem><para>Disable VACUUM from being called inside a function (Bruce)</para></listitem>
17614 <listitem><para>Allow dropdb and other scripts to use identifiers with spaces (Bruce)</para></listitem>
17615 <listitem><para>Restrict database comment changes to the current database</para></listitem>
17616 <listitem><para>Allow comments on operators, independent of the underlying function (Rod)</para></listitem>
17617 <listitem><para>Rollback SET commands in aborted transactions (Tom)</para></listitem>
17618 <listitem><para>EXPLAIN now outputs as a query (Tom)</para></listitem>
17619 <listitem><para>Display condition expressions and sort keys in EXPLAIN (Tom)</para></listitem>
17620 <listitem><para>Add 'SET LOCAL var = value' to set configuration variables for a single transaction (Tom)</para></listitem>
17621 <listitem><para>Allow ANALYZE to run in a transaction (Bruce)</para></listitem>
17622 <listitem><para>Improve COPY syntax using new WITH clauses, keep backward compatibility (Bruce)</para></listitem>
17623 <listitem><para>Fix <application>pg_dump</> to consistently output tags in non-ASCII dumps (Bruce)</para></listitem>
17624 <listitem><para>Make foreign key constraints clearer in dump file (Rod)</para></listitem>
17625 <listitem><para>Add COMMENT ON CONSTRAINT (Rod)</para></listitem>
17626 <listitem><para>Allow COPY TO/FROM to specify column names (Brent Verner)</para></listitem>
17627 <listitem><para>Dump UNIQUE and PRIMARY KEY constraints as ALTER TABLE (Rod)</para></listitem>
17628 <listitem><para>Have SHOW output a query result (Joe)</para></listitem>
17629 <listitem><para>Generate failure on short COPY lines rather than pad NULLs (Neil)</para></listitem>
17630 <listitem><para>Fix CLUSTER to preserve all table attributes (Alvaro Herrera)</para></listitem>
17631 <listitem><para>New pg_settings table to view/modify GUC settings (Joe)</para></listitem>
17632 <listitem><para>Add smart quoting, portability improvements to <application>pg_dump</> output (Peter)</para></listitem>
17633 <listitem><para>Dump serial columns out as SERIAL (Tom)</para></listitem>
17634 <listitem><para>Enable large file support, >2G for <application>pg_dump</> (Peter, Philip Warner, Bruce)</para></listitem>
17635 <listitem><para>Disallow TRUNCATE on tables that are involved in referential constraints (Rod)</para></listitem>
17636 <listitem><para>Have TRUNCATE also auto-truncate the toast table of the relation (Tom)</para></listitem>
17637 <listitem><para>Add clusterdb utility that will auto-cluster an entire database based on previous CLUSTER operations (Alvaro Herrera)</para></listitem>
17638 <listitem><para>Overhaul pg_dumpall (Peter)</para></listitem>
17639 <listitem><para>Allow REINDEX of TOAST tables (Tom)</para></listitem>
17640 <listitem><para>Implemented START TRANSACTION, per SQL99 (Neil)</para></listitem>
17641 <listitem><para>Fix rare index corruption when a page split affects bulk delete (Tom)</para></listitem>
17642 <listitem><para>Fix ALTER TABLE ... ADD COLUMN for inheritance (Alvaro Herrera)</para></listitem>
17647 <title>Data Types and Functions</title>
17649 <listitem><para>Fix factorial(0) to return 1 (Bruce)</para></listitem>
17650 <listitem><para>Date/time/timezone improvements (Thomas)</para></listitem>
17651 <listitem><para>Fix for array slice extraction (Tom)</para></listitem>
17652 <listitem><para>Fix extract/date_part to report proper microseconds for timestamp (Tatsuo)</para></listitem>
17653 <listitem><para>Allow text_substr() and bytea_substr() to read TOAST values more efficiently (John Gray)</para></listitem>
17654 <listitem><para>Add domain support (Rod)</para></listitem>
17655 <listitem><para>Make WITHOUT TIME ZONE the default for TIMESTAMP and TIME data types (Thomas)</para></listitem>
17656 <listitem><para>Allow alternate storage scheme of 64-bit integers for date/time types using --enable-integer-datetimes in configure (Thomas)</para></listitem>
17657 <listitem><para>Make timezone(timestamptz) return timestamp rather than a string (Thomas)</para></listitem>
17658 <listitem><para>Allow fractional seconds in date/time types for dates prior to 1BC (Thomas)</para></listitem>
17659 <listitem><para>Limit timestamp data types to 6 decimal places of precision (Thomas)</para></listitem>
17660 <listitem><para>Change timezone conversion functions from timetz() to timezone() (Thomas)</para></listitem>
17661 <listitem><para>Add configuration variables datestyle and timezone (Tom)</para></listitem>
17662 <listitem><para>Add OVERLAY(), which allows substitution of a substring in a string (Thomas)</para></listitem>
17663 <listitem><para>Add SIMILAR TO (Thomas, Tom)</para></listitem>
17664 <listitem><para>Add regular expression SUBSTRING(string FROM pat FOR escape) (Thomas)</para></listitem>
17665 <listitem><para>Add LOCALTIME and LOCALTIMESTAMP functions (Thomas)</para></listitem>
17666 <listitem><para>Add named composite types using CREATE TYPE typename AS (column) (Joe)</para></listitem>
17667 <listitem><para>Allow composite type definition in the table alias clause (Joe)</para></listitem>
17668 <listitem><para>Add new API to simplify creation of C language table functions (Joe)</para></listitem>
17669 <listitem><para>Remove ODBC-compatible empty parentheses from calls to SQL99 functions for which these parentheses do not match the standard (Thomas)</para></listitem>
17670 <listitem><para>Allow macaddr data type to accept 12 hex digits with no separators (Mike Wyer)</para></listitem>
17671 <listitem><para>Add CREATE/DROP CAST (Peter)</para></listitem>
17672 <listitem><para>Add IS DISTINCT FROM operator (Thomas)</para></listitem>
17673 <listitem><para>Add SQL99 TREAT() function, synonym for CAST() (Thomas)</para></listitem>
17674 <listitem><para>Add pg_backend_pid() to output backend pid (Bruce)</para></listitem>
17675 <listitem><para>Add IS OF / IS NOT OF type predicate (Thomas)</para></listitem>
17676 <listitem><para>Allow bit string constants without fully-specified length (Thomas)</para></listitem>
17677 <listitem><para>Allow conversion between 8-byte integers and bit strings (Thomas)</para></listitem>
17678 <listitem><para>Implement hex literal conversion to bit string literal (Thomas)</para></listitem>
17679 <listitem><para>Allow table functions to appear in the FROM clause (Joe)</para></listitem>
17680 <listitem><para>Increase maximum number of function parameters to 32 (Bruce)</para></listitem>
17681 <listitem><para>No longer automatically create index for SERIAL column (Tom)</para></listitem>
17682 <listitem><para>Add current_database() (Rod)</para></listitem>
17683 <listitem><para>Fix cash_words() to not overflow buffer (Tom)</para></listitem>
17684 <listitem><para>Add functions replace(), split_part(), to_hex() (Joe)</para></listitem>
17685 <listitem><para>Fix LIKE for bytea as a right-hand argument (Joe)</para></listitem>
17686 <listitem><para>Prevent crashes caused by SELECT cash_out(2) (Tom)</para></listitem>
17687 <listitem><para>Fix to_char(1,'FM999.99') to return a period (Karel)</para></listitem>
17688 <listitem><para>Fix trigger/type/language functions returning OPAQUE to return proper type (Tom)</para></listitem>
17693 <title>Internationalization</title>
17695 <listitem><para>Add additional encodings: Korean (JOHAB), Thai (WIN874), Vietnamese (TCVN), Arabic (WIN1256), Simplified Chinese (GBK), Korean (UHC) (Eiji Tokuya)</para></listitem>
17696 <listitem><para>Enable locale support by default (Peter)</para></listitem>
17697 <listitem><para>Add locale variables (Peter)</para></listitem>
17698 <listitem><para>Escape byes >= 0x7f for multibyte in PQescapeBytea/PQunescapeBytea (Tatsuo)</para></listitem>
17699 <listitem><para>Add locale awareness to regular expression character classes</para></listitem>
17700 <listitem><para>Enable multibyte support by default (Tatsuo)</para></listitem>
17701 <listitem><para>Add GB18030 multibyte support (Bill Huang)</para></listitem>
17702 <listitem><para>Add CREATE/DROP CONVERSION, allowing loadable encodings (Tatsuo, Kaori)</para></listitem>
17703 <listitem><para>Add pg_conversion table (Tatsuo)</para></listitem>
17704 <listitem><para>Add SQL99 CONVERT() function (Tatsuo)</para></listitem>
17705 <listitem><para>pg_dumpall, pg_controldata, and pg_resetxlog now national-language aware (Peter)</para></listitem>
17706 <listitem><para>New and updated translations</para></listitem>
17711 <title>Server-side Languages</title>
17713 <listitem><para>Allow recursive SQL function (Peter)</para></listitem>
17714 <listitem><para>Change PL/Tcl build to use configured compiler and Makefile.shlib (Peter)</para></listitem>
17715 <listitem><para>Overhaul the PL/pgSQL FOUND variable to be more Oracle-compatible (Neil, Tom)</para></listitem>
17716 <listitem><para>Allow PL/pgSQL to handle quoted identifiers (Tom)</para></listitem>
17717 <listitem><para>Allow set-returning PL/pgSQL functions (Neil)</para></listitem>
17718 <listitem><para>Make PL/pgSQL schema-aware (Joe)</para></listitem>
17719 <listitem><para>Remove some memory leaks (Nigel J. Andrews, Tom)</para></listitem>
17724 <title>psql</title>
17726 <listitem><para>Don't lowercase psql \connect database name for 7.2.0 compatibility (Tom)</para></listitem>
17727 <listitem><para>Add psql \timing to time user queries (Greg Sabino Mullane)</para></listitem>
17728 <listitem><para>Have psql \d show index information (Greg Sabino Mullane)</para></listitem>
17729 <listitem><para>New psql \dD shows domains (Jonathan Eisler)</para></listitem>
17730 <listitem><para>Allow psql to show rules on views (Paul ?)</para></listitem>
17731 <listitem><para>Fix for psql variable substitution (Tom)</para></listitem>
17732 <listitem><para>Allow psql \d to show temporary table structure (Tom)</para></listitem>
17733 <listitem><para>Allow psql \d to show foreign keys (Rod)</para></listitem>
17734 <listitem><para>Fix \? to honor \pset pager (Bruce)</para></listitem>
17735 <listitem><para>Have psql reports its version number on startup (Tom)</para></listitem>
17736 <listitem><para>Allow \copy to specify column names (Tom)</para></listitem>
17741 <title>libpq</title>
17743 <listitem><para>Add ~/.pgpass to store host/user password combinations (Alvaro Herrera)</para></listitem>
17744 <listitem><para>Add PQunescapeBytea() function to libpq (Patrick Welche)</para></listitem>
17745 <listitem><para>Fix for sending large queries over non-blocking connections (Bernhard Herzog)</para></listitem>
17746 <listitem><para>Fix for libpq using timers on Win9X (David Ford)</para></listitem>
17747 <listitem><para>Allow libpq notify to handle servers with different-length identifiers (Tom)</para></listitem>
17748 <listitem><para>Add libpq PQescapeString() and PQescapeBytea() to Windows (Bruce)</para></listitem>
17749 <listitem><para>Fix for SSL with non-blocking connections (Jack Bates)</para></listitem>
17750 <listitem><para>Add libpq connection timeout parameter (Denis A Ustimenko)</para></listitem>
17755 <title>JDBC</title>
17757 <listitem><para>Allow JDBC to compile with JDK 1.4 (Dave)</para></listitem>
17758 <listitem><para>Add JDBC 3 support (Barry)</para></listitem>
17759 <listitem><para>Allows JDBC to set loglevel by adding ?loglevel=X to the connection URL (Barry)</para></listitem>
17760 <listitem><para>Add Driver.info() message that prints out the version number (Barry)</para></listitem>
17761 <listitem><para>Add updateable result sets (Raghu Nidagal, Dave)</para></listitem>
17762 <listitem><para>Add support for callable statements (Paul Bethe)</para></listitem>
17763 <listitem><para>Add query cancel capability</para></listitem>
17764 <listitem><para>Add refresh row (Dave)</para></listitem>
17765 <listitem><para>Fix MD5 encryption handling for multibyte servers (Jun Kawai)</para></listitem>
17766 <listitem><para>Add support for prepared statements (Barry)</para></listitem>
17771 <title>Miscellaneous Interfaces</title>
17773 <listitem><para>Fixed ECPG bug concerning octal numbers in single quotes (Michael)</para></listitem>
17774 <listitem><para>Move src/interfaces/libpgeasy to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
17775 <listitem><para>Improve Python interface (Elliot Lee, Andrew Johnson, Greg Copeland)</para></listitem>
17776 <listitem><para>Add libpgtcl connection close event (Gerhard Hintermayer)</para></listitem>
17777 <listitem><para>Move src/interfaces/libpq++ to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
17778 <listitem><para>Move src/interfaces/odbc to http://gborg.postgresql.org (Marc)</para></listitem>
17779 <listitem><para>Move src/interfaces/libpgeasy to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
17780 <listitem><para>Move src/interfaces/perl5 to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
17781 <listitem><para>Remove src/bin/pgaccess from main tree, now at http://www.pgaccess.org (Bruce)</para></listitem>
17782 <listitem><para>Add pg_on_connection_loss command to libpgtcl (Gerhard Hintermayer, Tom)</para></listitem>
17787 <title>Source Code</title>
17789 <listitem><para>Fix for parallel make (Peter)</para></listitem>
17790 <listitem><para>AIX fixes for linking Tcl (Andreas Zeugswetter)</para></listitem>
17791 <listitem><para>Allow PL/Perl to build under Cygwin (Jason Tishler)</para></listitem>
17792 <listitem><para>Improve MIPS compiles (Peter, Oliver Elphick)</para></listitem>
17793 <listitem><para>Require Autoconf version 2.53 (Peter)</para></listitem>
17794 <listitem><para>Require readline and zlib by default in configure (Peter)</para></listitem>
17795 <listitem><para>Allow Solaris to use Intimate Shared Memory (ISM), for performance (Scott Brunza, P.J. Josh Rovero)</para></listitem>
17796 <listitem><para>Always enable syslog in compile, remove --enable-syslog option (Tatsuo)</para></listitem>
17797 <listitem><para>Always enable multibyte in compile, remove --enable-multibyte option (Tatsuo)</para></listitem>
17798 <listitem><para>Always enable locale in compile, remove --enable-locale option (Peter)</para></listitem>
17799 <listitem><para>Fix for Win9x DLL creation (Magnus Naeslund)</para></listitem>
17800 <listitem><para>Fix for link() usage by WAL code on Windows, BeOS (Jason Tishler)</para></listitem>
17801 <listitem><para>Add sys/types.h to c.h, remove from main files (Peter, Bruce)</para></listitem>
17802 <listitem><para>Fix AIX hang on SMP machines (Tomoyuki Niijima)</para></listitem>
17803 <listitem><para>AIX SMP hang fix (Tomoyuki Niijima)</para></listitem>
17804 <listitem><para>Fix pre-1970 date handling on newer glibc libraries (Tom)</para></listitem>
17805 <listitem><para>Fix PowerPC SMP locking (Tom)</para></listitem>
17806 <listitem><para>Prevent gcc -ffast-math from being used (Peter, Tom)</para></listitem>
17807 <listitem><para>Bison >= 1.50 now required for developer builds</para></listitem>
17808 <listitem><para>Kerberos 5 support now builds with Heimdal (Peter)</para></listitem>
17809 <listitem><para>Add appendix in the User's Guide which lists SQL features (Thomas)</para></listitem>
17810 <listitem><para>Improve loadable module linking to use RTLD_NOW (Tom)</para></listitem>
17811 <listitem><para>New error levels WARNING, INFO, LOG, DEBUG[1-5] (Bruce)</para></listitem>
17812 <listitem><para>New src/port directory holds replaced libc functions (Peter, Bruce)</para></listitem>
17813 <listitem><para>New pg_namespace system catalog for schemas (Tom)</para></listitem>
17814 <listitem><para>Add pg_class.relnamespace for schemas (Tom)</para></listitem>
17815 <listitem><para>Add pg_type.typnamespace for schemas (Tom)</para></listitem>
17816 <listitem><para>Add pg_proc.pronamespace for schemas (Tom)</para></listitem>
17817 <listitem><para>Restructure aggregates to have pg_proc entries (Tom)</para></listitem>
17818 <listitem><para>System relations now have their own namespace, pg_* test not required (Fernando Nasser)</para></listitem>
17819 <listitem><para>Rename TOAST index names to be *_index rather than *_idx (Neil)</para></listitem>
17820 <listitem><para>Add namespaces for operators, opclasses (Tom)</para></listitem>
17821 <listitem><para>Add additional checks to server control file (Thomas)</para></listitem>
17822 <listitem><para>New Polish FAQ (Marcin Mazurek)</para></listitem>
17823 <listitem><para>Add Posix semaphore support (Tom)</para></listitem>
17824 <listitem><para>Document need for reindex (Bruce)</para></listitem>
17825 <listitem><para>Rename some internal identifiers to simplify Windows compile (Jan, Katherine Ward)</para></listitem>
17826 <listitem><para>Add documentation on computing disk space (Bruce)</para></listitem>
17827 <listitem><para>Remove KSQO from GUC (Bruce)</para></listitem>
17828 <listitem><para>Fix memory leak in rtree (Kenneth Been)</para></listitem>
17829 <listitem><para>Modify a few error messages for consistency (Bruce)</para></listitem>
17830 <listitem><para>Remove unused system table columns (Peter)</para></listitem>
17831 <listitem><para>Make system columns NOT NULL where appropriate (Tom)</para></listitem>
17832 <listitem><para>Clean up use of sprintf in favor of snprintf() (Neil, Jukka Holappa)</para></listitem>
17833 <listitem><para>Remove OPAQUE and create specific subtypes (Tom)</para></listitem>
17834 <listitem><para>Cleanups in array internal handling (Joe, Tom)</para></listitem>
17835 <listitem><para>Disallow pg_atoi('') (Bruce)</para></listitem>
17836 <listitem><para>Remove parameter wal_files because WAL files are now recycled (Bruce)</para></listitem>
17837 <listitem><para>Add version numbers to heap pages (Tom)</para></listitem>
17842 <title>Contrib</title>
17844 <listitem><para>Allow inet arrays in /contrib/array (Neil)</para></listitem>
17845 <listitem><para>GiST fixes (Teodor Sigaev, Neil)</para></listitem>
17846 <listitem><para>Upgrade /contrib/mysql</para></listitem>
17847 <listitem><para>Add /contrib/dbsize which shows table sizes without vacuum (Peter)</para></listitem>
17848 <listitem><para>Add /contrib/intagg, integer aggregator routines (mlw)</para></listitem>
17849 <listitem><para>Improve /contrib/oid2name (Neil, Bruce)</para></listitem>
17850 <listitem><para>Improve /contrib/tsearch (Oleg, Teodor Sigaev)</para></listitem>
17851 <listitem><para>Cleanups of /contrib/rserver (Alexey V. Borzov)</para></listitem>
17852 <listitem><para>Update /contrib/oracle conversion utility (Gilles Darold)</para></listitem>
17853 <listitem><para>Update /contrib/dblink (Joe)</para></listitem>
17854 <listitem><para>Improve options supported by /contrib/vacuumlo (Mario Weilguni)</para></listitem>
17855 <listitem><para>Improvements to /contrib/intarray (Oleg, Teodor Sigaev, Andrey Oktyabrski)</para></listitem>
17856 <listitem><para>Add /contrib/reindexdb utility (Shaun Thomas)</para></listitem>
17857 <listitem><para>Add indexing to /contrib/isbn_issn (Dan Weston)</para></listitem>
17858 <listitem><para>Add /contrib/dbmirror (Steven Singer)</para></listitem>
17859 <listitem><para>Improve /contrib/pgbench (Neil)</para></listitem>
17860 <listitem><para>Add /contrib/tablefunc table function examples (Joe)</para></listitem>
17861 <listitem><para>Add /contrib/ltree data type for tree structures (Teodor Sigaev, Oleg Bartunov)</para></listitem>
17862 <listitem><para>Move /contrib/pg_controldata, pg_resetxlog into main tree (Bruce)</para></listitem>
17863 <listitem><para>Fixes to /contrib/cube (Bruno Wolff)</para></listitem>
17864 <listitem><para>Improve /contrib/fulltextindex (Christopher)</para></listitem>
17871 <sect1 id="release-7-2-8">
17872 <title>Release 7.2.8</title>
17875 <title>Release date</title>
17876 <simpara>2005-05-09</simpara>
17880 This release contains a variety of fixes from 7.2.7, including one
17881 security-related issue.
17885 <title>Migration to version 7.2.8</title>
17888 A dump/restore is not required for those running 7.2.X.
17893 <title>Changes</title>
17896 <listitem><para>Repair ancient race condition that allowed a transaction to be
17897 seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
17898 than for other purposes</para>
17899 <para>This is an extremely serious bug since it could lead to apparent
17900 data inconsistencies being briefly visible to applications.</para></listitem>
17901 <listitem><para>Repair race condition between relation extension and
17903 <para>This could theoretically have caused loss of a page's worth of
17904 freshly-inserted data, although the scenario seems of very low probability.
17905 There are no known cases of it having caused more than an Assert failure.
17907 <listitem><para>Fix <function>EXTRACT(EPOCH)</> for
17908 <type>TIME WITH TIME ZONE</> values</para></listitem>
17909 <listitem><para>Additional buffer overrun checks in plpgsql
17910 (Neil)</para></listitem>
17911 <listitem><para>Fix pg_dump to dump index names and trigger names containing
17912 <literal>%</> correctly (Neil)</para></listitem>
17913 <listitem><para>Prevent <function>to_char(interval)</> from dumping core for
17914 month-related formats</para></listitem>
17915 <listitem><para>Fix <filename>contrib/pgcrypto</> for newer OpenSSL builds
17916 (Marko Kreen)</para></listitem>
17922 <sect1 id="release-7-2-7">
17923 <title>Release 7.2.7</title>
17926 <title>Release date</title>
17927 <simpara>2005-01-31</simpara>
17931 This release contains a variety of fixes from 7.2.6, including several
17932 security-related issues.
17936 <title>Migration to version 7.2.7</title>
17939 A dump/restore is not required for those running 7.2.X.
17944 <title>Changes</title>
17947 <listitem><para>Disallow <command>LOAD</> to non-superusers</para>
17949 On platforms that will automatically execute initialization functions of a
17950 shared library (this includes at least Windows and ELF-based Unixen),
17951 <command>LOAD</> can be used to make the server execute arbitrary code.
17952 Thanks to NGS Software for reporting this.</para></listitem>
17953 <listitem><para>Add needed STRICT marking to some contrib functions (Kris
17954 Jurka)</para></listitem>
17955 <listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
17956 many parameters (Neil)</para></listitem>
17957 <listitem><para>Fix planning error for FULL and RIGHT outer joins</para>
17959 The result of the join was mistakenly supposed to be sorted the same as the
17960 left input. This could not only deliver mis-sorted output to the user, but
17961 in case of nested merge joins could give outright wrong answers.
17963 <listitem><para>Fix display of negative intervals in SQL and GERMAN
17964 datestyles</para></listitem>
17970 <sect1 id="release-7-2-6">
17971 <title>Release 7.2.6</title>
17974 <title>Release date</title>
17975 <simpara>2004-10-22</simpara>
17979 This release contains a variety of fixes from 7.2.5.
17984 <title>Migration to version 7.2.6</title>
17987 A dump/restore is not required for those running 7.2.X.
17992 <title>Changes</title>
17995 <listitem><para>Repair possible failure to update hint bits on disk</para>
17997 Under rare circumstances this oversight could lead to
17998 <quote>could not access transaction status</> failures, which qualifies
17999 it as a potential-data-loss bug.
18001 <listitem><para>Ensure that hashed outer join does not miss tuples</para>
18003 Very large left joins using a hash join plan could fail to output unmatched
18004 left-side rows given just the right data distribution.
18006 <listitem><para>Disallow running pg_ctl as root</para>
18008 This is to guard against any possible security issues.
18010 <listitem><para>Avoid using temp files in /tmp in make_oidjoins_check</para>
18012 This has been reported as a security issue, though it's hardly worthy of
18013 concern since there is no reason for non-developers to use this script anyway.
18015 <listitem><para>Update to newer versions of Bison</para></listitem>
18021 <sect1 id="release-7-2-5">
18022 <title>Release 7.2.5</title>
18025 <title>Release date</title>
18026 <simpara>2004-08-16</simpara>
18030 This release contains a variety of fixes from 7.2.4.
18035 <title>Migration to version 7.2.5</title>
18038 A dump/restore is not required for those running 7.2.X.
18043 <title>Changes</title>
18046 <listitem><para>Prevent possible loss of committed transactions during crash</para>
18048 Due to insufficient interlocking between transaction commit and checkpointing,
18049 it was possible for transactions committed just before the most recent
18050 checkpoint to be lost, in whole or in part, following a database crash and
18051 restart. This is a serious bug that has existed
18052 since <productname>PostgreSQL</productname> 7.1.
18054 <listitem><para>Fix corner case for btree search in parallel with first root page split</para></listitem>
18055 <listitem><para>Fix buffer overrun in <function>to_ascii</function> (Guido Notari)</para></listitem>
18056 <listitem><para>Fix core dump in deadlock detection on machines where char is unsigned</para></listitem>
18057 <listitem><para>Fix failure to respond to <command>pg_ctl stop -m fast</command> after Async_NotifyHandler runs</para></listitem>
18058 <listitem><para>Repair memory leaks in pg_dump</para></listitem>
18059 <listitem><para>Avoid conflict with system definition of <function>isblank()</function> function or macro</para></listitem>
18064 <sect1 id="release-7-2-4">
18065 <title>Release 7.2.4</title>
18068 <title>Release date</title>
18069 <simpara>2003-01-30</simpara>
18073 This release contains a variety of fixes for version 7.2.3,
18074 including fixes to prevent possible data loss.
18078 <title>Migration to version 7.2.4</title>
18081 A dump/restore is <emphasis>not</emphasis> required for those
18082 running version 7.2.*.
18087 <title>Changes</title>
18090 <listitem><para>Fix some additional cases of VACUUM "No one parent tuple was found" error</para></listitem>
18091 <listitem><para>Prevent VACUUM from being called inside a function (Bruce)</para></listitem>
18092 <listitem><para>Ensure pg_clog updates are sync'd to disk before marking checkpoint complete</para></listitem>
18093 <listitem><para>Avoid integer overflow during large hash joins</para></listitem>
18094 <listitem><para>Make GROUP commands work when pg_group.grolist is large enough to be toasted</para></listitem>
18095 <listitem><para>Fix errors in datetime tables; some timezone names weren't being recognized</para></listitem>
18096 <listitem><para>Fix integer overflows in circle_poly(), path_encode(), path_add() (Neil)</para></listitem>
18097 <listitem><para>Repair long-standing logic errors in lseg_eq(), lseg_ne(), lseg_center()</para></listitem>
18103 <sect1 id="release-7-2-3">
18104 <title>Release 7.2.3</title>
18107 <title>Release date</title>
18108 <simpara>2002-10-01</simpara>
18112 This release contains a variety of fixes for version 7.2.2,
18113 including fixes to prevent possible data loss.
18117 <title>Migration to version 7.2.3</title>
18120 A dump/restore is <emphasis>not</emphasis> required for those
18121 running version 7.2.*.
18126 <title>Changes</title>
18129 <listitem><para>Prevent possible compressed transaction log loss (Tom)</para></listitem>
18130 <listitem><para>Prevent non-superuser from increasing most recent vacuum info (Tom)</para></listitem>
18131 <listitem><para>Handle pre-1970 date values in newer versions of glibc (Tom)</para></listitem>
18132 <listitem><para>Fix possible hang during server shutdown</para></listitem>
18133 <listitem><para>Prevent spinlock hangs on SMP PPC machines (Tomoyuki Niijima)</para></listitem>
18134 <listitem><para>Fix <application>pg_dump</> to properly dump FULL JOIN USING (Tom)</para></listitem>
18140 <sect1 id="release-7-2-2">
18141 <title>Release 7.2.2</title>
18144 <title>Release date</title>
18145 <simpara>2002-08-23</simpara>
18149 This release contains a variety of fixes for version 7.2.1.
18153 <title>Migration to version 7.2.2</title>
18156 A dump/restore is <emphasis>not</emphasis> required for those
18157 running version 7.2.*.
18162 <title>Changes</title>
18165 <listitem><para>Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom)</para></listitem>
18166 <listitem><para>Fix for compressed transaction log id wraparound (Tom)</para></listitem>
18167 <listitem><para>Fix PQescapeBytea/PQunescapeBytea so that they handle bytes > 0x7f (Tatsuo)</para></listitem>
18168 <listitem><para>Fix for psql and <application>pg_dump</> crashing when invoked with non-existent long options (Tatsuo)</para></listitem>
18169 <listitem><para>Fix crash when invoking geometric operators (Tom)</para></listitem>
18170 <listitem><para>Allow OPEN cursor(args) (Tom)</para></listitem>
18171 <listitem><para>Fix for rtree_gist index build (Teodor)</para></listitem>
18172 <listitem><para>Fix for dumping user-defined aggregates (Tom)</para></listitem>
18173 <listitem><para>contrib/intarray fixes (Oleg)</para></listitem>
18174 <listitem><para>Fix for complex UNION/EXCEPT/INTERSECT queries using parens (Tom)</para></listitem>
18175 <listitem><para>Fix to pg_convert (Tatsuo)</para></listitem>
18176 <listitem><para>Fix for crash with long DATA strings (Thomas, Neil)</para></listitem>
18177 <listitem><para>Fix for repeat(), lpad(), rpad() and long strings (Neil)</para></listitem>
18183 <sect1 id="release-7-2-1">
18184 <title>Release 7.2.1</title>
18187 <title>Release date</title>
18188 <simpara>2002-03-21</simpara>
18192 This release contains a variety of fixes for version 7.2.
18196 <title>Migration to version 7.2.1</title>
18199 A dump/restore is <emphasis>not</emphasis> required for those
18200 running version 7.2.
18205 <title>Changes</title>
18208 <listitem><para>Ensure that sequence counters do not go backwards after a crash (Tom)</para></listitem>
18209 <listitem><para>Fix pgaccess kanji-conversion key binding (Tatsuo)</para></listitem>
18210 <listitem><para>Optimizer improvements (Tom)</para></listitem>
18211 <listitem><para>Cash I/O improvements (Tom)</para></listitem>
18212 <listitem><para>New Russian FAQ</para></listitem>
18213 <listitem><para>Compile fix for missing AuthBlockSig (Heiko)</para></listitem>
18214 <listitem><para>Additional time zones and time zone fixes (Thomas)</para></listitem>
18215 <listitem><para>Allow psql \connect to handle mixed case database and user names (Tom)</para></listitem>
18216 <listitem><para>Return proper OID on command completion even with ON INSERT rules (Tom)</para></listitem>
18217 <listitem><para>Allow COPY FROM to use 8-bit DELIMITERS (Tatsuo)</para></listitem>
18218 <listitem><para>Fix bug in extract/date_part for milliseconds/microseconds (Tatsuo)</para></listitem>
18219 <listitem><para>Improve handling of multiple UNIONs with different lengths (Tom)</para></listitem>
18220 <listitem><para>contrib/btree_gist improvements (Teodor Sigaev)</para></listitem>
18221 <listitem><para>contrib/tsearch dictionary improvements, see README.tsearch for an additional installation step (Thomas T. Thai, Teodor Sigaev)</para></listitem>
18222 <listitem><para>Fix for array subscripts handling (Tom)</para></listitem>
18223 <listitem><para>Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom)</para></listitem>
18229 <sect1 id="release-7-2">
18230 <title>Release 7.2</title>
18233 <title>Release date</title>
18234 <simpara>2002-02-04</simpara>
18238 <title>Overview</title>
18241 This release improves <productname>PostgreSQL</> for use in
18242 high-volume applications.
18246 Major changes in this release:
18251 <term>VACUUM</term>
18254 Vacuuming no longer locks tables, thus allowing normal user
18255 access during the vacuum. A new <command>VACUUM FULL</>
18256 command does old-style vacuum by locking the table and
18257 shrinking the on-disk copy of the table.
18263 <term>Transactions</term>
18266 There is no longer a problem with installations that exceed
18267 four billion transactions.
18276 OIDs are now optional. Users can now create tables without
18277 OIDs for cases where OID usage is excessive.
18283 <term>Optimizer</term>
18286 The system now computes histogram column statistics during
18287 <command>ANALYZE</>, allowing much better optimizer choices.
18293 <term>Security</term>
18296 A new MD5 encryption option allows more secure storage and
18297 transfer of passwords. A new Unix-domain socket
18298 authentication option is available on Linux and BSD systems.
18304 <term>Statistics</term>
18307 Administrators can use the new table access statistics module
18308 to get fine-grained information about table and index usage.
18314 <term>Internationalization</term>
18317 Program and library messages can now be displayed in several
18327 <title>Migration to version 7.2</title>
18330 A dump/restore using <command>pg_dump</command> is required for
18331 those wishing to migrate data from any previous release.
18335 Observe the following incompatibilities:
18341 The semantics of the <command>VACUUM</command> command have
18342 changed in this release. You might wish to update your
18343 maintenance procedures accordingly.
18349 In this release, comparisons using <literal>= NULL</literal>
18350 will always return false (or NULL, more precisely). Previous
18351 releases automatically transformed this syntax to <literal>IS
18352 NULL</literal>. The old behavior can be re-enabled using a
18353 <filename>postgresql.conf</filename> parameter.
18359 The <filename>pg_hba.conf</> and <filename>pg_ident.conf</>
18360 configuration is now only reloaded after receiving a
18361 <systemitem>SIGHUP</> signal, not with each connection.
18367 The function <filename>octet_length()</> now returns the uncompressed data length.
18373 The date/time value <literal>'current'</literal> is no longer
18374 available. You will need to rewrite your applications.
18380 The <literal>timestamp()</literal>, <literal>time()</literal>,
18381 and <literal>interval()</literal> functions are no longer
18382 available. Instead of <literal>timestamp()</literal>, use
18383 <literal>timestamp 'string'</literal> or <literal>CAST</literal>.
18390 The <literal>SELECT ... LIMIT #,#</literal> syntax will be removed
18391 in the next release. You should change your queries to use
18392 separate LIMIT and OFFSET clauses, e.g. <literal>LIMIT 10 OFFSET
18398 <title>Changes</title>
18401 <title>Server Operation</title>
18403 <listitem><para>Create temporary files in a separate directory (Bruce)</para></listitem>
18404 <listitem><para>Delete orphaned temporary files on postmaster startup (Bruce)</para></listitem>
18405 <listitem><para>Added unique indexes to some system tables (Tom)</para></listitem>
18406 <listitem><para>System table operator reorganization (Oleg Bartunov, Teodor Sigaev, Tom)</para></listitem>
18407 <listitem><para>Renamed pg_log to pg_clog (Tom)</para></listitem>
18408 <listitem><para>Enable SIGTERM, SIGQUIT to kill backends (Jan)</para></listitem>
18409 <listitem><para>Removed compile-time limit on number of backends (Tom)</para></listitem>
18410 <listitem><para>Better cleanup for semaphore resource failure (Tatsuo, Tom)</para></listitem>
18411 <listitem><para>Allow safe transaction ID wraparound (Tom)</para></listitem>
18412 <listitem><para>Removed OIDs from some system tables (Tom)</para></listitem>
18413 <listitem><para>Removed "triggered data change violation" error check (Tom)</para></listitem>
18414 <listitem><para>SPI portal creation of prepared/saved plans (Jan)</para></listitem>
18415 <listitem><para>Allow SPI column functions to work for system columns (Tom)</para></listitem>
18416 <listitem><para>Long value compression improvement (Tom)</para></listitem>
18417 <listitem><para>Statistics collector for table, index access (Jan)</para></listitem>
18418 <listitem><para>Truncate extra-long sequence names to a reasonable value (Tom)</para></listitem>
18419 <listitem><para>Measure transaction times in milliseconds (Thomas)</para></listitem>
18420 <listitem><para>Fix TID sequential scans (Hiroshi)</para></listitem>
18421 <listitem><para>Superuser ID now fixed at 1 (Peter E)</para></listitem>
18422 <listitem><para>New pg_ctl "reload" option (Tom)</para></listitem>
18427 <title>Performance</title>
18429 <listitem><para>Optimizer improvements (Tom)</para></listitem>
18430 <listitem><para>New histogram column statistics for optimizer (Tom)</para></listitem>
18431 <listitem><para>Reuse write-ahead log files rather than discarding them (Tom)</para></listitem>
18432 <listitem><para>Cache improvements (Tom)</para></listitem>
18433 <listitem><para>IS NULL, IS NOT NULL optimizer improvement (Tom)</para></listitem>
18434 <listitem><para>Improve lock manager to reduce lock contention (Tom)</para></listitem>
18435 <listitem><para>Keep relcache entries for index access support functions (Tom)</para></listitem>
18436 <listitem><para>Allow better selectivity with NaN and infinities in NUMERIC (Tom)</para></listitem>
18437 <listitem><para>R-tree performance improvements (Kenneth Been)</para></listitem>
18438 <listitem><para>B-tree splits more efficient (Tom)</para></listitem>
18443 <title>Privileges</title>
18445 <listitem><para>Change UPDATE, DELETE privileges to be distinct (Peter E)</para></listitem>
18446 <listitem><para>New REFERENCES, TRIGGER privileges (Peter E)</para></listitem>
18447 <listitem><para>Allow GRANT/REVOKE to/from more than one user at a time (Peter E)</para></listitem>
18448 <listitem><para>New has_table_privilege() function (Joe Conway)</para></listitem>
18449 <listitem><para>Allow non-superuser to vacuum database (Tom)</para></listitem>
18450 <listitem><para>New SET SESSION AUTHORIZATION command (Peter E)</para></listitem>
18451 <listitem><para>Fix bug in privilege modifications on newly created tables (Tom)</para></listitem>
18452 <listitem><para>Disallow access to pg_statistic for non-superuser, add user-accessible views (Tom)</para></listitem>
18457 <title>Client Authentication</title>
18459 <listitem><para>Fork postmaster before doing authentication to prevent hangs (Peter E)</para></listitem>
18460 <listitem><para>Add ident authentication over Unix domain sockets on Linux, *BSD (Helge Bahmann, Oliver Elphick, Teodor Sigaev, Bruce)</para></listitem>
18461 <listitem><para>Add a password authentication method that uses MD5 encryption (Bruce)</para></listitem>
18462 <listitem><para>Allow encryption of stored passwords using MD5 (Bruce)</para></listitem>
18463 <listitem><para>PAM authentication (Dominic J. Eidson)</para></listitem>
18464 <listitem><para>Load pg_hba.conf and pg_ident.conf only on startup and SIGHUP (Bruce)</para></listitem>
18469 <title>Server Configuration</title>
18471 <listitem><para>Interpretation of some time zone abbreviations as Australian rather than North American now settable at run time (Bruce)</para></listitem>
18472 <listitem><para>New parameter to set default transaction isolation level (Peter E)</para></listitem>
18473 <listitem><para>New parameter to enable conversion of "expr = NULL" into "expr IS NULL", off by default (Peter E)</para></listitem>
18474 <listitem><para>New parameter to control memory usage by VACUUM (Tom)</para></listitem>
18475 <listitem><para>New parameter to set client authentication timeout (Tom)</para></listitem>
18476 <listitem><para>New parameter to set maximum number of open files (Tom)</para></listitem>
18481 <title>Queries</title>
18483 <listitem><para>Statements added by INSERT rules now execute after the INSERT (Jan)</para></listitem>
18484 <listitem><para>Prevent unadorned relation names in target list (Bruce)</para></listitem>
18485 <listitem><para>NULLs now sort after all normal values in ORDER BY (Tom)</para></listitem>
18486 <listitem><para>New IS UNKNOWN, IS NOT UNKNOWN Boolean tests (Tom)</para></listitem>
18487 <listitem><para>New SHARE UPDATE EXCLUSIVE lock mode (Tom)</para></listitem>
18488 <listitem><para>New EXPLAIN ANALYZE command that shows run times and row counts (Martijn van Oosterhout)</para></listitem>
18489 <listitem><para>Fix problem with LIMIT and subqueries (Tom)</para></listitem>
18490 <listitem><para>Fix for LIMIT, DISTINCT ON pushed into subqueries (Tom)</para></listitem>
18491 <listitem><para>Fix nested EXCEPT/INTERSECT (Tom)</para></listitem>
18496 <title>Schema Manipulation</title>
18498 <listitem><para>Fix SERIAL in temporary tables (Bruce)</para></listitem>
18499 <listitem><para>Allow temporary sequences (Bruce)</para></listitem>
18500 <listitem><para>Sequences now use int8 internally (Tom)</para></listitem>
18501 <listitem><para>New SERIAL8 creates int8 columns with sequences, default still SERIAL4 (Tom)</para></listitem>
18502 <listitem><para>Make OIDs optional using WITHOUT OIDS (Tom)</para></listitem>
18503 <listitem><para>Add %TYPE syntax to CREATE TYPE (Ian Lance Taylor)</para></listitem>
18504 <listitem><para>Add ALTER TABLE / DROP CONSTRAINT for CHECK constraints (Christopher Kings-Lynne)</para></listitem>
18505 <listitem><para>New CREATE OR REPLACE FUNCTION to alter existing function (preserving the function OID) (Gavin Sherry)</para></listitem>
18506 <listitem><para>Add ALTER TABLE / ADD [ UNIQUE | PRIMARY ] (Christopher Kings-Lynne)</para></listitem>
18507 <listitem><para>Allow column renaming in views</para></listitem>
18508 <listitem><para>Make ALTER TABLE / RENAME COLUMN update column names of indexes (Brent Verner)</para></listitem>
18509 <listitem><para>Fix for ALTER TABLE / ADD CONSTRAINT ... CHECK with inherited tables (Stephan Szabo)</para></listitem>
18510 <listitem><para>ALTER TABLE RENAME update foreign-key trigger arguments correctly (Brent Verner)</para></listitem>
18511 <listitem><para>DROP AGGREGATE and COMMENT ON AGGREGATE now accept an aggtype (Tom)</para></listitem>
18512 <listitem><para>Add automatic return type data casting for SQL functions (Tom)</para></listitem>
18513 <listitem><para>Allow GiST indexes to handle NULLs and multikey indexes (Oleg Bartunov, Teodor Sigaev, Tom)</para></listitem>
18514 <listitem><para>Enable partial indexes (Martijn van Oosterhout)</para></listitem>
18519 <title>Utility Commands</title>
18521 <listitem><para>Add RESET ALL, SHOW ALL (Marko Kreen)</para></listitem>
18522 <listitem><para>CREATE/ALTER USER/GROUP now allow options in any order (Vince)</para></listitem>
18523 <listitem><para>Add LOCK A, B, C functionality (Neil Padgett)</para></listitem>
18524 <listitem><para>New ENCRYPTED/UNENCRYPTED option to CREATE/ALTER USER (Bruce)</para></listitem>
18525 <listitem><para>New light-weight VACUUM does not lock table; old semantics are available as VACUUM FULL (Tom)</para></listitem>
18526 <listitem><para>Disable COPY TO/FROM on views (Bruce)</para></listitem>
18527 <listitem><para>COPY DELIMITERS string must be exactly one character (Tom)</para></listitem>
18528 <listitem><para>VACUUM warning about index tuples fewer than heap now only appears when appropriate (Martijn van Oosterhout)</para></listitem>
18529 <listitem><para>Fix privilege checks for CREATE INDEX (Tom)</para></listitem>
18530 <listitem><para>Disallow inappropriate use of CREATE/DROP INDEX/TRIGGER/VIEW (Tom)</para></listitem>
18535 <title>Data Types and Functions</title>
18537 <listitem><para>SUM(), AVG(), COUNT() now uses int8 internally for speed (Tom)</para></listitem>
18538 <listitem><para>Add convert(), convert2() (Tatsuo)</para></listitem>
18539 <listitem><para>New function bit_length() (Peter E)</para></listitem>
18540 <listitem><para>Make the "n" in CHAR(n)/VARCHAR(n) represents letters, not bytes (Tatsuo)</para></listitem>
18541 <listitem><para>CHAR(), VARCHAR() now reject strings that are too long (Peter E)</para></listitem>
18542 <listitem><para>BIT VARYING now rejects bit strings that are too long (Peter E)</para></listitem>
18543 <listitem><para>BIT now rejects bit strings that do not match declared size (Peter E)</para></listitem>
18544 <listitem><para>INET, CIDR text conversion functions (Alex Pilosov)</para></listitem>
18545 <listitem><para>INET, CIDR operators << and <<= indexable (Alex Pilosov)</para></listitem>
18546 <listitem><para>Bytea \### now requires valid three digit octal number</para></listitem>
18547 <listitem><para>Bytea comparison improvements, now supports =, <>, >, >=, <, and <=</para></listitem>
18548 <listitem><para>Bytea now supports B-tree indexes</para></listitem>
18549 <listitem><para>Bytea now supports LIKE, LIKE...ESCAPE, NOT LIKE, NOT LIKE...ESCAPE</para></listitem>
18550 <listitem><para>Bytea now supports concatenation</para></listitem>
18551 <listitem><para>New bytea functions: position, substring, trim, btrim, and length</para></listitem>
18552 <listitem><para>New encode() function mode, "escaped", converts minimally escaped bytea to/from text</para></listitem>
18553 <listitem><para>Add pg_database_encoding_max_length() (Tatsuo)</para></listitem>
18554 <listitem><para>Add pg_client_encoding() function (Tatsuo)</para></listitem>
18555 <listitem><para>now() returns time with millisecond precision (Thomas)</para></listitem>
18556 <listitem><para>New TIMESTAMP WITHOUT TIMEZONE data type (Thomas)</para></listitem>
18557 <listitem><para>Add ISO date/time specification with "T", yyyy-mm-ddThh:mm:ss (Thomas)</para></listitem>
18558 <listitem><para>New xid/int comparison functions (Hiroshi)</para></listitem>
18559 <listitem><para>Add precision to TIME, TIMESTAMP, and INTERVAL data types (Thomas)</para></listitem>
18560 <listitem><para>Modify type coercion logic to attempt binary-compatible functions first (Tom)</para></listitem>
18561 <listitem><para>New encode() function installed by default (Marko Kreen)</para></listitem>
18562 <listitem><para>Improved to_*() conversion functions (Karel Zak)</para></listitem>
18563 <listitem><para>Optimize LIKE/ILIKE when using single-byte encodings (Tatsuo)</para></listitem>
18564 <listitem><para>New functions in contrib/pgcrypto: crypt(), hmac(), encrypt(), gen_salt() (Marko Kreen)</para></listitem>
18565 <listitem><para>Correct description of translate() function (Bruce)</para></listitem>
18566 <listitem><para>Add INTERVAL argument for SET TIME ZONE (Thomas)</para></listitem>
18567 <listitem><para>Add INTERVAL YEAR TO MONTH (etc.) syntax (Thomas)</para></listitem>
18568 <listitem><para>Optimize length functions when using single-byte encodings (Tatsuo)</para></listitem>
18569 <listitem><para>Fix path_inter, path_distance, path_length, dist_ppath to handle closed paths (Curtis Barrett, Tom)</para></listitem>
18570 <listitem><para>octet_length(text) now returns non-compressed length (Tatsuo, Bruce)</para></listitem>
18571 <listitem><para>Handle "July" full name in date/time literals (Greg Sabino Mullane)</para></listitem>
18572 <listitem><para>Some datatype() function calls now evaluated differently</para></listitem>
18573 <listitem><para>Add support for Julian and ISO time specifications (Thomas)</para></listitem>
18578 <title>Internationalization</title>
18580 <listitem><para>National language support in psql, <application>pg_dump</>, libpq, and server (Peter E)</para></listitem>
18581 <listitem><para>Message translations in Chinese (simplified, traditional), Czech, French, German, Hungarian, Russian, Swedish (Peter E, Serguei A. Mokhov, Karel Zak, Weiping He, Zhenbang Wei, Kovacs Zoltan)</para></listitem>
18582 <listitem><para>Make trim, ltrim, rtrim, btrim, lpad, rpad, translate multibyte aware (Tatsuo)</para></listitem>
18583 <listitem><para>Add LATIN5,6,7,8,9,10 support (Tatsuo)</para></listitem>
18584 <listitem><para>Add ISO 8859-5,6,7,8 support (Tatsuo)</para></listitem>
18585 <listitem><para>Correct LATIN5 to mean ISO-8859-9, not ISO-8859-5 (Tatsuo)</para></listitem>
18586 <listitem><para>Make mic2ascii() non-ASCII aware (Tatsuo)</para></listitem>
18587 <listitem><para>Reject invalid multibyte character sequences (Tatsuo)</para></listitem>
18592 <title><application>PL/pgSQL</></title>
18594 <listitem><para>Now uses portals for SELECT loops, allowing huge result sets (Jan)</para></listitem>
18595 <listitem><para>CURSOR and REFCURSOR support (Jan)</para></listitem>
18596 <listitem><para>Can now return open cursors (Jan)</para></listitem>
18597 <listitem><para>Add ELSEIF (Klaus Reger)</para></listitem>
18598 <listitem><para>Improve PL/pgSQL error reporting, including location of error (Tom)</para></listitem>
18599 <listitem><para>Allow IS or FOR key words in cursor declaration, for compatibility (Bruce)</para></listitem>
18600 <listitem><para>Fix for SELECT ... FOR UPDATE (Tom)</para></listitem>
18601 <listitem><para>Fix for PERFORM returning multiple rows (Tom)</para></listitem>
18602 <listitem><para>Make PL/pgSQL use the server's type coercion code (Tom)</para></listitem>
18603 <listitem><para>Memory leak fix (Jan, Tom)</para></listitem>
18604 <listitem><para>Make trailing semicolon optional (Tom)</para></listitem>
18609 <title>PL/Perl</title>
18611 <listitem><para>New untrusted PL/Perl (Alex Pilosov)</para></listitem>
18612 <listitem><para>PL/Perl is now built on some platforms even if libperl is not shared (Peter E)</para></listitem>
18617 <title>PL/Tcl</title>
18619 <listitem><para>Now reports errorInfo (Vsevolod Lobko)</para></listitem>
18620 <listitem><para>Add spi_lastoid function (bob@redivi.com)</para></listitem>
18625 <title>PL/Python</title>
18627 <listitem><para>...is new (Andrew Bosma)</para></listitem>
18632 <title><application>psql</></title>
18634 <listitem><para>\d displays indexes in unique, primary groupings (Christopher Kings-Lynne)</para></listitem>
18635 <listitem><para>Allow trailing semicolons in backslash commands (Greg Sabino Mullane)</para></listitem>
18636 <listitem><para>Read password from /dev/tty if possible</para></listitem>
18637 <listitem><para>Force new password prompt when changing user and database (Tatsuo, Tom)</para></listitem>
18638 <listitem><para>Format the correct number of columns for Unicode (Patrice)</para></listitem>
18643 <title><application>libpq</></title>
18645 <listitem><para>New function PQescapeString() to escape quotes in command strings (Florian Weimer)</para></listitem>
18646 <listitem><para>New function PQescapeBytea() escapes binary strings for use as SQL string literals</para></listitem>
18651 <title>JDBC</title>
18653 <listitem><para>Return OID of INSERT (Ken K)</para></listitem>
18654 <listitem><para>Handle more data types (Ken K)</para></listitem>
18655 <listitem><para>Handle single quotes and newlines in strings (Ken K)</para></listitem>
18656 <listitem><para>Handle NULL variables (Ken K)</para></listitem>
18657 <listitem><para>Fix for time zone handling (Barry Lind)</para></listitem>
18658 <listitem><para>Improved Druid support</para></listitem>
18659 <listitem><para>Allow eight-bit characters with non-multibyte server (Barry Lind)</para></listitem>
18660 <listitem><para>Support BIT, BINARY types (Ned Wolpert)</para></listitem>
18661 <listitem><para>Reduce memory usage (Michael Stephens, Dave Cramer)</para></listitem>
18662 <listitem><para>Update DatabaseMetaData (Peter E)</para></listitem>
18663 <listitem><para>Add DatabaseMetaData.getCatalogs() (Peter E)</para></listitem>
18664 <listitem><para>Encoding fixes (Anders Bengtsson)</para></listitem>
18665 <listitem><para>Get/setCatalog methods (Jason Davies)</para></listitem>
18666 <listitem><para>DatabaseMetaData.getColumns() now returns column defaults (Jason Davies)</para></listitem>
18667 <listitem><para>DatabaseMetaData.getColumns() performance improvement (Jeroen van Vianen)</para></listitem>
18668 <listitem><para>Some JDBC1 and JDBC2 merging (Anders Bengtsson)</para></listitem>
18669 <listitem><para>Transaction performance improvements (Barry Lind)</para></listitem>
18670 <listitem><para>Array fixes (Greg Zoller)</para></listitem>
18671 <listitem><para>Serialize addition </para></listitem>
18672 <listitem><para>Fix batch processing (Rene Pijlman)</para></listitem>
18673 <listitem><para>ExecSQL method reorganization (Anders Bengtsson)</para></listitem>
18674 <listitem><para>GetColumn() fixes (Jeroen van Vianen)</para></listitem>
18675 <listitem><para>Fix isWriteable() function (Rene Pijlman)</para></listitem>
18676 <listitem><para>Improved passage of JDBC2 conformance tests (Rene Pijlman)</para></listitem>
18677 <listitem><para>Add bytea type capability (Barry Lind)</para></listitem>
18678 <listitem><para>Add isNullable() (Rene Pijlman)</para></listitem>
18679 <listitem><para>JDBC date/time test suite fixes (Liam Stewart)</para></listitem>
18680 <listitem><para>Fix for SELECT 'id' AS xxx FROM table (Dave Cramer)</para></listitem>
18681 <listitem><para>Fix DatabaseMetaData to show precision properly (Mark Lillywhite)</para></listitem>
18682 <listitem><para>New getImported/getExported keys (Jason Davies)</para></listitem>
18683 <listitem><para>MD5 password encryption support (Jeremy Wohl)</para></listitem>
18684 <listitem><para>Fix to actually use type cache (Ned Wolpert)</para></listitem>
18689 <title>ODBC</title>
18691 <listitem><para>Remove query size limit (Hiroshi)</para></listitem>
18692 <listitem><para>Remove text field size limit (Hiroshi)</para></listitem>
18693 <listitem><para>Fix for SQLPrimaryKeys in multibyte mode (Hiroshi)</para></listitem>
18694 <listitem><para>Allow ODBC procedure calls (Hiroshi)</para></listitem>
18695 <listitem><para>Improve boolean handing (Aidan Mountford)</para></listitem>
18696 <listitem><para>Most configuration options now settable via DSN (Hiroshi)</para></listitem>
18697 <listitem><para>Multibyte, performance fixes (Hiroshi)</para></listitem>
18698 <listitem><para>Allow driver to be used with iODBC or unixODBC (Peter E)</para></listitem>
18699 <listitem><para>MD5 password encryption support (Bruce)</para></listitem>
18700 <listitem><para>Add more compatibility functions to odbc.sql (Peter E)</para></listitem>
18705 <title><application>ECPG</></title>
18707 <listitem><para>EXECUTE ... INTO implemented (Christof Petig)</para></listitem>
18708 <listitem><para>Multiple row descriptor support (e.g. CARDINALITY) (Christof Petig)</para></listitem>
18709 <listitem><para>Fix for GRANT parameters (Lee Kindness)</para></listitem>
18710 <listitem><para>Fix INITIALLY DEFERRED bug</para></listitem>
18711 <listitem><para>Various bug fixes (Michael, Christof Petig)</para></listitem>
18712 <listitem><para>Auto allocation for indicator variable arrays (int *ind_p=NULL)</para></listitem>
18713 <listitem><para>Auto allocation for string arrays (char **foo_pp=NULL)</para></listitem>
18714 <listitem><para>ECPGfree_auto_mem fixed</para></listitem>
18715 <listitem><para>All function names with external linkage are now prefixed by ECPG</para></listitem>
18716 <listitem><para>Fixes for arrays of structures (Michael)</para></listitem>
18721 <title>Misc. Interfaces</title>
18723 <listitem><para>Python fix fetchone() (Gerhard Haring)</para></listitem>
18724 <listitem><para>Use UTF, Unicode in Tcl where appropriate (Vsevolod Lobko, Reinhard Max)</para></listitem>
18725 <listitem><para>Add Tcl COPY TO/FROM (ljb)</para></listitem>
18726 <listitem><para>Prevent output of default index op class in <application>pg_dump</> (Tom)</para></listitem>
18727 <listitem><para>Fix libpgeasy memory leak (Bruce)</para></listitem>
18732 <title>Build and Install</title>
18734 <listitem><para>Configure, dynamic loader, and shared library fixes (Peter E)</para></listitem>
18735 <listitem><para>Fixes in QNX 4 port (Bernd Tegge)</para></listitem>
18736 <listitem><para>Fixes in Cygwin and Windows ports (Jason Tishler, Gerhard Haring, Dmitry Yurtaev, Darko Prenosil, Mikhail Terekhov)</para></listitem>
18737 <listitem><para>Fix for Windows socket communication failures (Magnus, Mikhail Terekhov)</para></listitem>
18738 <listitem><para>Hurd compile fix (Oliver Elphick)</para></listitem>
18739 <listitem><para>BeOS fixes (Cyril Velter)</para></listitem>
18740 <listitem><para>Remove configure --enable-unicode-conversion, now enabled by multibyte (Tatsuo)</para></listitem>
18741 <listitem><para>AIX fixes (Tatsuo, Andreas)</para></listitem>
18742 <listitem><para>Fix parallel make (Peter E)</para></listitem>
18743 <listitem><para>Install SQL language manual pages into OS-specific directories (Peter E)</para></listitem>
18744 <listitem><para>Rename config.h to pg_config.h (Peter E)</para></listitem>
18745 <listitem><para>Reorganize installation layout of header files (Peter E)</para></listitem>
18750 <title>Source Code</title>
18752 <listitem><para>Remove SEP_CHAR (Bruce)</para></listitem>
18753 <listitem><para>New GUC hooks (Tom)</para></listitem>
18754 <listitem><para>Merge GUC and command line handling (Marko Kreen)</para></listitem>
18755 <listitem><para>Remove EXTEND INDEX (Martijn van Oosterhout, Tom)</para></listitem>
18756 <listitem><para>New pgjindent utility to indent java code (Bruce)</para></listitem>
18757 <listitem><para>Remove define of true/false when compiling under C++ (Leandro Fanzone, Tom)</para></listitem>
18758 <listitem><para>pgindent fixes (Bruce, Tom)</para></listitem>
18759 <listitem><para>Replace strcasecmp() with strcmp() where appropriate (Peter E)</para></listitem>
18760 <listitem><para>Dynahash portability improvements (Tom)</para></listitem>
18761 <listitem><para>Add 'volatile' usage in spinlock structures</para></listitem>
18762 <listitem><para>Improve signal handling logic (Tom)</para></listitem>
18767 <title>Contrib</title>
18769 <listitem><para>New contrib/rtree_gist (Oleg Bartunov, Teodor Sigaev)</para></listitem>
18770 <listitem><para>New contrib/tsearch full-text indexing (Oleg, Teodor Sigaev)</para></listitem>
18771 <listitem><para>Add contrib/dblink for remote database access (Joe Conway)</para></listitem>
18772 <listitem><para>contrib/ora2pg Oracle conversion utility (Gilles Darold)</para></listitem>
18773 <listitem><para>contrib/xml XML conversion utility (John Gray)</para></listitem>
18774 <listitem><para>contrib/fulltextindex fixes (Christopher Kings-Lynne)</para></listitem>
18775 <listitem><para>New contrib/fuzzystrmatch with levenshtein and metaphone, soundex merged (Joe Conway)</para></listitem>
18776 <listitem><para>Add contrib/intarray boolean queries, binary search, fixes (Oleg Bartunov)</para></listitem>
18777 <listitem><para>New pg_upgrade utility (Bruce)</para></listitem>
18778 <listitem><para>Add new pg_resetxlog options (Bruce, Tom)</para></listitem>
18785 <sect1 id="release-7-1-3">
18786 <title>Release 7.1.3</title>
18789 <title>Release date</title>
18790 <simpara>2001-08-15</simpara>
18794 <title>Migration to version 7.1.3</title>
18797 A dump/restore is <emphasis>not</emphasis> required for those running
18803 <title>Changes</title>
18807 Remove unused WAL segments of large transactions (Tom)
18808 Multiaction rule fix (Tom)
18809 PL/pgSQL memory allocation fix (Jan)
18810 VACUUM buffer fix (Tom)
18811 Regression test fixes (Tom)
18812 pg_dump fixes for GRANT/REVOKE/comments on views, user-defined types (Tom)
18813 Fix subselects with DISTINCT ON or LIMIT (Tom)
18815 Disable COPY TO/FROM a view (Tom)
18816 Cygwin build (Jason Tishler)
18823 <sect1 id="release-7-1-2">
18824 <title>Release 7.1.2</title>
18827 <title>Release date</title>
18828 <simpara>2001-05-11</simpara>
18832 This has one fix from 7.1.1.
18837 <title>Migration to version 7.1.2</title>
18840 A dump/restore is <emphasis>not</emphasis> required for those running
18846 <title>Changes</title>
18850 Fix PL/pgSQL SELECTs when returning no rows
18851 Fix for psql backslash core dump
18852 Referential integrity privilege fix
18861 <sect1 id="release-7-1-1">
18862 <title>Release 7.1.1</title>
18865 <title>Release date</title>
18866 <simpara>2001-05-05</simpara>
18870 This has a variety of fixes from 7.1.
18875 <title>Migration to version 7.1.1</title>
18878 A dump/restore is <emphasis>not</emphasis> required for those running
18884 <title>Changes</title>
18888 Fix for numeric MODULO operator (Tom)
18889 pg_dump fixes (Philip)
18890 pg_dump can dump 7.0 databases (Philip)
18891 readline 4.2 fixes (Peter E)
18893 AIX, MSWIN, VAX, N32K fixes (Tom)
18894 Multibytes fixes (Tom)
18895 Unicode fixes (Tatsuo)
18896 Optimizer improvements (Tom)
18897 Fix for whole rows in functions (Tom)
18898 Fix for pg_ctl and option strings with spaces (Peter E)
18899 ODBC fixes (Hiroshi)
18900 EXTRACT can now take string argument (Thomas)
18901 Python fixes (Darcy)
18908 <sect1 id="release-7-1">
18909 <title>Release 7.1</title>
18912 <title>Release date</title>
18913 <simpara>2001-04-13</simpara>
18917 This release focuses on removing limitations that have existed in the
18918 <productname>PostgreSQL</productname> code for many years.
18922 Major changes in this release:
18928 Write-ahead Log (WAL)
18932 To maintain database consistency in case of an operating system crash,
18933 previous releases of <productname>PostgreSQL</productname> have forced
18934 all data modifications to disk before each transaction commit. With
18935 WAL, only one log file must be flushed to disk, greatly improving
18936 performance. If you have been using -F in previous releases to
18937 disable disk flushes, you might want to consider discontinuing its use.
18948 TOAST - Previous releases had a compiled-in row length limit,
18949 typically 8k - 32k. This limit made storage of long text fields
18950 difficult. With TOAST, long rows of any length can be stored with good
18962 We now support outer joins. The UNION/NOT IN
18963 workaround for outer joins is no longer required. We use the SQL92
18975 The previous C function manager did not
18976 handle null values properly, nor did it support 64-bit <acronym>CPU</acronym>'s (Alpha). The new
18977 function manager does. You can continue using your old custom
18978 functions, but you might want to rewrite them in the future to use the new
18979 function manager call interface.
18990 A large number of complex queries that were
18991 unsupported in previous releases now work. Many combinations of views,
18992 aggregates, UNION, LIMIT, cursors, subqueries, and inherited tables
18993 now work properly. Inherited tables are now accessed by default.
18994 Subqueries in FROM are now supported.
19002 <title>Migration to version 7.1</title>
19005 A dump/restore using pg_dump is required for those wishing to migrate
19006 data from any previous release.
19011 <title>Changes</title>
19017 Many multibyte/Unicode/locale fixes (Tatsuo and others)
19018 More reliable ALTER TABLE RENAME (Tom)
19019 Kerberos V fixes (David Wragg)
19020 Fix for INSERT INTO...SELECT where targetlist has subqueries (Tom)
19021 Prompt username/password on standard error (Bruce)
19022 Large objects inv_read/inv_write fixes (Tom)
19023 Fixes for to_char(), to_date(), to_ascii(), and to_timestamp() (Karel,
19025 Prevent query expressions from leaking memory (Tom)
19026 Allow UPDATE of arrays elements (Tom)
19027 Wake up lock waiters during cancel (Hiroshi)
19028 Fix rare cursor crash when using hash join (Tom)
19029 Fix for DROP TABLE/INDEX in rolled-back transaction (Hiroshi)
19030 Fix psql crash from \l+ if MULTIBYTE enabled (Peter E)
19031 Fix truncation of rule names during CREATE VIEW (Ross Reedstrom)
19032 Fix PL/perl (Alex Kapranoff)
19033 Disallow LOCK on views (Mark Hollomon)
19034 Disallow INSERT/UPDATE/DELETE on views (Mark Hollomon)
19035 Disallow DROP RULE, CREATE INDEX, TRUNCATE on views (Mark Hollomon)
19036 Allow PL/pgSQL accept non-ASCII identifiers (Tatsuo)
19037 Allow views to proper handle GROUP BY, aggregates, DISTINCT (Tom)
19038 Fix rare failure with TRUNCATE command (Tom)
19039 Allow UNION/INTERSECT/EXCEPT to be used with ALL, subqueries, views,
19040 DISTINCT, ORDER BY, SELECT...INTO (Tom)
19041 Fix parser failures during aborted transactions (Tom)
19042 Allow temporary relations to properly clean up indexes (Bruce)
19043 Fix VACUUM problem with moving rows in same page (Tom)
19044 Modify pg_dump to better handle user-defined items in template1 (Philip)
19045 Allow LIMIT in VIEW (Tom)
19046 Require cursor FETCH to honor LIMIT (Tom)
19047 Allow PRIMARY/FOREIGN Key definitions on inherited columns (Stephan)
19048 Allow ORDER BY, LIMIT in subqueries (Tom)
19049 Allow UNION in CREATE RULE (Tom)
19050 Make ALTER/DROP TABLE rollback-able (Vadim, Tom)
19051 Store initdb collation in pg_control so collation cannot be changed (Tom)
19052 Fix INSERT...SELECT with rules (Tom)
19053 Fix FOR UPDATE inside views and subselects (Tom)
19054 Fix OVERLAPS operators conform to SQL92 spec regarding NULLs (Tom)
19055 Fix lpad() and rpad() to handle length less than input string (Tom)
19056 Fix use of NOTIFY in some rules (Tom)
19057 Overhaul btree code (Tom)
19058 Fix NOT NULL use in Pl/pgSQL variables (Tom)
19059 Overhaul GIST code (Oleg)
19060 Fix CLUSTER to preserve constraints and column default (Tom)
19061 Improved deadlock detection handling (Tom)
19062 Allow multiple SERIAL columns in a table (Tom)
19063 Prevent occasional index corruption (Vadim)
19067 Add OUTER JOINs (Tom)
19068 Function manager overhaul (Tom)
19069 Allow ALTER TABLE RENAME on indexes (Tom)
19070 Improve CLUSTER (Tom)
19071 Improve ps status display for more platforms (Peter E, Marc)
19072 Improve CREATE FUNCTION failure message (Ross)
19073 JDBC improvements (Peter, Travis Bauer, Christopher Cain, William Webber,
19075 Grand Unified Configuration scheme/GUC. Many options can now be set in
19076 data/postgresql.conf, postmaster/postgres flags, or SET commands (Peter E)
19077 Improved handling of file descriptor cache (Tom)
19078 New warning code about auto-created table alias entries (Bruce)
19079 Overhaul initdb process (Tom, Peter E)
19080 Overhaul of inherited tables; inherited tables now accessed by default;
19081 new ONLY key word prevents it (Chris Bitmead, Tom)
19082 ODBC cleanups/improvements (Nick Gorham, Stephan Szabo, Zoltan Kovacs,
19084 Allow renaming of temp tables (Tom)
19085 Overhaul memory manager contexts (Tom)
19086 pg_dumpall uses CREATE USER or CREATE GROUP rather using COPY (Peter E)
19087 Overhaul pg_dump (Philip Warner)
19088 Allow pg_hba.conf secondary password file to specify only username (Peter E)
19089 Allow TEMPORARY or TEMP key word when creating temporary tables (Bruce)
19090 New memory leak checker (Karel)
19091 New SET SESSION CHARACTERISTICS (Thomas)
19092 Allow nested block comments (Thomas)
19093 Add WITHOUT TIME ZONE type qualifier (Thomas)
19094 New ALTER TABLE ADD CONSTRAINT (Stephan)
19095 Use NUMERIC accumulators for INTEGER aggregates (Tom)
19096 Overhaul aggregate code (Tom)
19097 New VARIANCE and STDDEV() aggregates
19098 Improve dependency ordering of pg_dump (Philip)
19099 New pg_restore command (Philip)
19100 New pg_dump tar output option (Philip)
19101 New pg_dump of large objects (Philip)
19102 New ESCAPE option to LIKE (Thomas)
19103 New case-insensitive LIKE - ILIKE (Thomas)
19104 Allow functional indexes to use binary-compatible type (Tom)
19105 Allow SQL functions to be used in more contexts (Tom)
19106 New pg_config utility (Peter E)
19107 New PL/pgSQL EXECUTE command which allows dynamic SQL and utility statements
19109 New PL/pgSQL GET DIAGNOSTICS statement for SPI value access (Jan)
19110 New quote_identifiers() and quote_literal() functions (Jan)
19111 New ALTER TABLE table OWNER TO user command (Mark Hollomon)
19112 Allow subselects in FROM, i.e. FROM (SELECT ...) [AS] alias (Tom)
19113 Update PyGreSQL to version 3.1 (D'Arcy)
19114 Store tables as files named by OID (Vadim)
19115 New SQL function setval(seq,val,bool) for use in pg_dump (Philip)
19116 Require DROP VIEW to remove views, no DROP TABLE (Mark)
19117 Allow DROP VIEW view1, view2 (Mark)
19118 Allow multiple objects in DROP INDEX, DROP RULE, and DROP TYPE (Tom)
19119 Allow automatic conversion to/from Unicode (Tatsuo, Eiji)
19120 New /contrib/pgcrypto hashing functions (Marko Kreen)
19121 New pg_dumpall --globals-only option (Peter E)
19122 New CHECKPOINT command for WAL which creates new WAL log file (Vadim)
19123 New AT TIME ZONE syntax (Thomas)
19124 Allow location of Unix domain socket to be configurable (David J. MacKenzie)
19125 Allow postmaster to listen on a specific IP address (David J. MacKenzie)
19126 Allow socket path name to be specified in hostname by using leading slash
19127 (David J. MacKenzie)
19128 Allow CREATE DATABASE to specify template database (Tom)
19129 New utility to convert MySQL schema dumps to SQL92 and PostgreSQL (Thomas)
19130 New /contrib/rserv replication toolkit (Vadim)
19131 New file format for COPY BINARY (Tom)
19132 New /contrib/oid2name to map numeric files to table names (B Palmer)
19133 New "idle in transaction" ps status message (Marc)
19134 Update to pgaccess 0.98.7 (Constantin Teodorescu)
19135 pg_ctl now defaults to -w (wait) on shutdown, new -l (log) option
19136 Add rudimentary dependency checking to pg_dump (Philip)
19140 Fix INET/CIDR type ordering and add new functions (Tom)
19141 Make OID behave as an unsigned type (Tom)
19142 Allow BIGINT as synonym for INT8 (Peter E)
19143 New int2 and int8 comparison operators (Tom)
19144 New BIT and BIT VARYING types (Adriaan Joubert, Tom, Peter E)
19145 CHAR() no longer faster than VARCHAR() because of TOAST (Tom)
19146 New GIST seg/cube examples (Gene Selkov)
19147 Improved round(numeric) handling (Tom)
19148 Fix CIDR output formatting (Tom)
19149 New CIDR abbrev() function (Tom)
19153 Write-Ahead Log (WAL) to provide crash recovery with less performance
19155 ANALYZE stage of VACUUM no longer exclusively locks table (Bruce)
19156 Reduced file seeks (Denis Perchine)
19157 Improve BTREE code for duplicate keys (Tom)
19158 Store all large objects in a single table (Denis Perchine, Tom)
19159 Improve memory allocation performance (Karel, Tom)
19163 New function manager call conventions (Tom)
19164 SGI portability fixes (David Kaelbling)
19165 New configure --enable-syslog option (Peter E)
19166 New BSDI README (Bruce)
19167 configure script moved to top level, not /src (Peter E)
19168 Makefile/configuration/compilation overhaul (Peter E)
19169 New configure --with-python option (Peter E)
19170 Solaris cleanups (Peter E)
19171 Overhaul /contrib Makefiles (Karel)
19172 New OpenSSL configuration option (Magnus, Peter E)
19173 AIX fixes (Andreas)
19174 QNX fixes (Maurizio)
19175 New heap_open(), heap_openr() API (Tom)
19176 Remove colon and semi-colon operators (Thomas)
19177 New pg_class.relkind value for views (Mark Hollomon)
19178 Rename ichar() to chr() (Karel)
19179 New documentation for btrim(), ascii(), chr(), repeat() (Karel)
19180 Fixes for NT/Cygwin (Pete Forman)
19181 AIX port fixes (Andreas)
19182 New BeOS port (David Reid, Cyril Velter)
19183 Add proofreader's changes to docs (Addison-Wesley, Bruce)
19184 New Alpha spinlock code (Adriaan Joubert, Compaq)
19185 UnixWare port overhaul (Peter E)
19186 New Darwin/MacOS X port (Peter Bierman, Bruce Hartzler)
19187 New FreeBSD Alpha port (Alfred)
19188 Overhaul shared memory segments (Tom)
19189 Add IBM S/390 support (Neale Ferguson)
19190 Moved macmanuf to /contrib (Larry Rosenman)
19191 Syslog improvements (Larry Rosenman)
19192 New template0 database that contains no user additions (Tom)
19193 New /contrib/cube and /contrib/seg GIST sample code (Gene Selkov)
19194 Allow NetBSD's libedit instead of readline (Peter)
19195 Improved assembly language source code format (Bruce)
19196 New contrib/pg_logger
19197 New --template option to createdb
19198 New contrib/pg_control utility (Oliver)
19199 New FreeBSD tools ipc_check, start-scripts/freebsd
19206 <sect1 id="release-7-0-3">
19207 <title>Release 7.0.3</title>
19210 <title>Release date</title>
19211 <simpara>2000-11-11</simpara>
19215 This has a variety of fixes from 7.0.2.
19220 <title>Migration to version 7.0.3</title>
19223 A dump/restore is <emphasis>not</emphasis> required for those running
19229 <title>Changes</title>
19234 Large object fix (Tom)
19235 Fix lean in COPY WITH OIDS leak (Tom)
19236 Fix backwards-index-scan (Tom)
19237 Fix SELECT ... FOR UPDATE so it checks for duplicate keys (Hiroshi)
19238 Add --enable-syslog to configure (Marc)
19239 Fix abort transaction at backend exit in rare cases (Tom)
19240 Fix for psql \l+ when multibyte enabled (Tatsuo)
19241 Allow PL/pgSQL to accept non ascii identifiers (Tatsuo)
19242 Make vacuum always flush buffers (Tom)
19243 Fix to allow cancel while waiting for a lock (Hiroshi)
19244 Fix for memory allocation problem in user authentication code (Tom)
19245 Remove bogus use of int4out() (Tom)
19246 Fixes for multiple subqueries in COALESCE or BETWEEN (Tom)
19247 Fix for failure of triggers on heap open in certain cases (Jeroen van
19249 Fix for erroneous selectivity of not-equals (Tom)
19250 Fix for erroneous use of strcmp() (Tom)
19251 Fix for bug where storage manager accesses items beyond end of file
19253 Fix to include kernel errno message in all smgr elog messages (Tom)
19254 Fix for '.' not in PATH at build time (SL Baur)
19255 Fix for out-of-file-descriptors error (Tom)
19256 Fix to make pg_dump dump 'iscachable' flag for functions (Tom)
19257 Fix for subselect in targetlist of Append node (Tom)
19258 Fix for mergejoin plans (Tom)
19259 Fix TRUNCATE failure on relations with indexes (Tom)
19260 Avoid database-wide restart on write error (Hiroshi)
19261 Fix nodeMaterial to honor chgParam by recomputing its output (Tom)
19262 Fix VACUUM problem with moving chain of update row versions when source
19263 and destination of a row version lie on the same page (Tom)
19264 Fix user.c CommandCounterIncrement (Tom)
19265 Fix for AM/PM boundary problem in to_char() (Karel Zak)
19266 Fix TIME aggregate handling (Tom)
19267 Fix to_char() to avoid coredump on NULL input (Tom)
19269 Fix for inserting/copying longer multibyte strings into char() data
19271 Fix for crash of backend, on abort (Tom)
19278 <sect1 id="release-7-0-2">
19279 <title>Release 7.0.2</title>
19282 <title>Release date</title>
19283 <simpara>2000-06-05</simpara>
19287 This is a repackaging of 7.0.1 with added documentation.
19292 <title>Migration to version 7.0.2</title>
19295 A dump/restore is <emphasis>not</emphasis> required for those running
19301 <title>Changes</title>
19305 Added documentation to tarball.
19312 <sect1 id="release-7-0-1">
19313 <title>Release 7.0.1</title>
19316 <title>Release date</title>
19317 <simpara>2000-06-01</simpara>
19321 This is a cleanup release for 7.0.
19325 <title>Migration to version 7.0.1</title>
19328 A dump/restore is <emphasis>not</emphasis> required for those running
19334 <title>Changes</title>
19338 Fix many CLUSTER failures (Tom)
19339 Allow ALTER TABLE RENAME works on indexes (Tom)
19340 Fix plpgsql to handle datetime->timestamp and timespan->interval (Bruce)
19341 New configure --with-setproctitle switch to use setproctitle() (Marc, Bruce)
19342 Fix the off by one errors in ResultSet from 6.5.3, and more.
19343 jdbc ResultSet fixes (Joseph Shraibman)
19344 optimizer tunings (Tom)
19345 Fix create user for pgaccess
19346 Fix for UNLISTEN failure
19347 IRIX fixes (David Kaelbling)
19348 QNX fixes (Andreas Kardos)
19349 Reduce COPY IN lock level (Tom)
19350 Change libpqeasy to use PQconnectdb() style parameters (Bruce)
19351 Fix pg_dump to handle OID indexes (Tom)
19352 Fix small memory leak (Tom)
19353 Solaris fix for createdb/dropdb (Tatsuo)
19354 Fix for non-blocking connections (Alfred Perlstein)
19355 Fix improper recovery after RENAME TABLE failures (Tom)
19356 Copy pg_ident.conf.sample into /lib directory in install (Bruce)
19357 Add SJIS UDC (NEC selection IBM kanji) support (Eiji Tokuya)
19358 Fix too long syslog message (Tatsuo)
19359 Fix problem with quoted indexes that are too long (Tom)
19360 JDBC ResultSet.getTimestamp() fix (Gregory Krasnow & Floyd Marinescu)
19361 ecpg changes (Michael)
19367 <sect1 id="release-7-0">
19368 <title>Release 7.0</title>
19371 <title>Release date</title>
19372 <simpara>2000-05-08</simpara>
19376 This release contains improvements in many areas, demonstrating
19377 the continued growth of <productname>PostgreSQL</productname>.
19378 There are more improvements and fixes in 7.0 than in any previous
19379 release. The developers have confidence that this is the best
19380 release yet; we do our best to put out only solid releases, and
19381 this one is no exception.
19385 Major changes in this release:
19395 Foreign keys are now implemented, with the exception of PARTIAL MATCH
19396 foreign keys. Many users have been asking for this feature, and we are
19397 pleased to offer it.
19408 Continuing on work started a year ago, the optimizer has been
19409 improved, allowing better query plan selection and faster performance
19410 with less memory usage.
19417 Updated <application>psql</application>
19421 <application>psql</application>, our interactive terminal monitor, has been
19422 updated with a variety of new features. See the <application>psql</application> manual page for details.
19433 SQL92 join syntax is now supported, though only as
19434 <literal>INNER JOIN</> for this release. <literal>JOIN</>,
19435 <literal>NATURAL JOIN</>, <literal>JOIN</>/<literal>USING</>,
19436 and <literal>JOIN</>/<literal>ON</> are available, as are
19437 column correlation names.
19445 <title>Migration to version 7.0</title>
19448 A dump/restore using <application>pg_dump</application>
19449 is required for those wishing to migrate data from any
19450 previous release of <productname>PostgreSQL</productname>.
19451 For those upgrading from 6.5.*, you can instead use
19452 <application>pg_upgrade</application> to upgrade to this
19453 release; however, a full dump/reload installation is always the
19454 most robust method for upgrades.
19458 Interface and compatibility issues to consider for the new
19465 The date/time types <type>datetime</type> and
19466 <type>timespan</type> have been superseded by the
19467 SQL92-defined types <type>timestamp</type> and
19468 <type>interval</type>. Although there has been some effort to
19469 ease the transition by allowing
19470 <productname>PostgreSQL</productname> to recognize
19471 the deprecated type names and translate them to the new type
19472 names, this mechanism cannot be completely transparent to
19473 your existing application.
19479 The optimizer has been substantially improved in the area of
19480 query cost estimation. In some cases, this will result in
19481 decreased query times as the optimizer makes a better choice
19482 for the preferred plan. However, in a small number of cases,
19483 usually involving pathological distributions of data, your
19484 query times might go up. If you are dealing with large amounts
19485 of data, you might want to check your queries to verify
19492 The <acronym>JDBC</acronym> and <acronym>ODBC</acronym>
19493 interfaces have been upgraded and extended.
19499 The string function <function>CHAR_LENGTH</function> is now a
19500 native function. Previous versions translated this into a call
19501 to <function>LENGTH</function>, which could result in
19502 ambiguity with other types implementing
19503 <function>LENGTH</function> such as the geometric types.
19510 <title>Changes</title>
19516 Prevent function calls exceeding maximum number of arguments (Tom)
19517 Improve CASE construct (Tom)
19518 Fix SELECT coalesce(f1,0) FROM int4_tbl GROUP BY f1 (Tom)
19519 Fix SELECT sentence.words[0] FROM sentence GROUP BY sentence.words[0] (Tom)
19520 Fix GROUP BY scan bug (Tom)
19521 Improvements in SQL grammar processing (Tom)
19522 Fix for views involved in INSERT ... SELECT ... (Tom)
19523 Fix for SELECT a/2, a/2 FROM test_missing_target GROUP BY a/2 (Tom)
19524 Fix for subselects in INSERT ... SELECT (Tom)
19525 Prevent INSERT ... SELECT ... ORDER BY (Tom)
19526 Fixes for relations greater than 2GB, including vacuum
19527 Improve propagating system table changes to other backends (Tom)
19528 Improve propagating user table changes to other backends (Tom)
19529 Fix handling of temp tables in complex situations (Bruce, Tom)
19530 Allow table locking at table open, improving concurrent reliability (Tom)
19531 Properly quote sequence names in pg_dump (Ross J. Reedstrom)
19532 Prevent DROP DATABASE while others accessing
19533 Prevent any rows from being returned by GROUP BY if no rows processed (Tom)
19534 Fix SELECT COUNT(1) FROM table WHERE ...' if no rows matching WHERE (Tom)
19535 Fix pg_upgrade so it works for MVCC (Tom)
19536 Fix for SELECT ... WHERE x IN (SELECT ... HAVING SUM(x) > 1) (Tom)
19537 Fix for "f1 datetime DEFAULT 'now'" (Tom)
19538 Fix problems with CURRENT_DATE used in DEFAULT (Tom)
19539 Allow comment-only lines, and ;;; lines too. (Tom)
19540 Improve recovery after failed disk writes, disk full (Hiroshi)
19541 Fix cases where table is mentioned in FROM but not joined (Tom)
19542 Allow HAVING clause without aggregate functions (Tom)
19543 Fix for "--" comment and no trailing newline, as seen in perl interface
19544 Improve pg_dump failure error reports (Bruce)
19545 Allow sorts and hashes to exceed 2GB file sizes (Tom)
19546 Fix for pg_dump dumping of inherited rules (Tom)
19547 Fix for NULL handling comparisons (Tom)
19548 Fix inconsistent state caused by failed CREATE/DROP commands (Hiroshi)
19549 Fix for dbname with dash
19550 Prevent DROP INDEX from interfering with other backends (Tom)
19551 Fix file descriptor leak in verify_password()
19552 Fix for "Unable to identify an operator =$" problem
19553 Fix ODBC so no segfault if CommLog and Debug enabled (Dirk Niggemann)
19554 Fix for recursive exit call (Massimo)
19555 Fix for extra-long timezones (Jeroen van Vianen)
19556 Make pg_dump preserve primary key information (Peter E)
19557 Prevent databases with single quotes (Peter E)
19558 Prevent DROP DATABASE inside transaction (Peter E)
19559 ecpg memory leak fixes (Stephen Birch)
19560 Fix for SELECT null::text, SELECT int4fac(null) and SELECT 2 + (null) (Tom)
19561 Y2K timestamp fix (Massimo)
19562 Fix for VACUUM 'HEAP_MOVED_IN was not expected' errors (Tom)
19563 Fix for views with tables/columns containing spaces (Tom)
19564 Prevent privileges on indexes (Peter E)
19565 Fix for spinlock stuck problem when error is generated (Hiroshi)
19566 Fix ipcclean on Linux
19567 Fix handling of NULL constraint conditions (Tom)
19568 Fix memory leak in odbc driver (Nick Gorham)
19569 Fix for privilege check on UNION tables (Tom)
19570 Fix to allow SELECT 'a' LIKE 'a' (Tom)
19571 Fix for SELECT 1 + NULL (Tom)
19573 Fix log() on numeric type (Tom)
19574 Deprecate ':' and ';' operators
19575 Allow vacuum of temporary tables
19576 Disallow inherited columns with the same name as new columns
19577 Recover or force failure when disk space is exhausted (Hiroshi)
19578 Fix INSERT INTO ... SELECT with AS columns matching result columns
19579 Fix INSERT ... SELECT ... GROUP BY groups by target columns not source columns (Tom)
19580 Fix CREATE TABLE test (a char(5) DEFAULT text '', b int4) with INSERT (Tom)
19581 Fix UNION with LIMIT
19582 Fix CREATE TABLE x AS SELECT 1 UNION SELECT 2
19583 Fix CREATE TABLE test(col char(2) DEFAULT user)
19584 Fix mismatched types in CREATE TABLE ... DEFAULT
19585 Fix SELECT * FROM pg_class where oid in (0,-1)
19586 Fix SELECT COUNT('asdf') FROM pg_class WHERE oid=12
19587 Prevent user who can create databases can modifying pg_database table (Peter E)
19588 Fix btree to give a useful elog when key > 1/2 (page - overhead) (Tom)
19589 Fix INSERT of 0.0 into DECIMAL(4,4) field (Tom)
19593 New CLI interface include file sqlcli.h, based on SQL3/SQL98
19594 Remove all limits on query length, row length limit still exists (Tom)
19595 Update jdbc protocol to 2.0 (Jens Glaser <email>jens@jens.de</email>)
19596 Add TRUNCATE command to quickly truncate relation (Mike Mascari)
19597 Fix to give super user and createdb user proper update catalog rights (Peter E)
19598 Allow ecpg bool variables to have NULL values (Christof)
19599 Issue ecpg error if NULL value for variable with no NULL indicator (Christof)
19600 Allow ^C to cancel COPY command (Massimo)
19601 Add SET FSYNC and SHOW PG_OPTIONS commands(Massimo)
19602 Function name overloading for dynamically-loaded C functions (Frankpitt)
19603 Add CmdTuples() to libpq++(Vince)
19604 New CREATE CONSTRAINT TRIGGER and SET CONSTRAINTS commands(Jan)
19605 Allow CREATE FUNCTION/WITH clause to be used for all language types
19606 configure --enable-debug adds -g (Peter E)
19607 configure --disable-debug removes -g (Peter E)
19608 Allow more complex default expressions (Tom)
19609 First real FOREIGN KEY constraint trigger functionality (Jan)
19610 Add FOREIGN KEY ... MATCH FULL ... ON DELETE CASCADE (Jan)
19611 Add FOREIGN KEY ... MATCH <unspecified> referential actions (Don Baccus)
19612 Allow WHERE restriction on ctid (physical heap location) (Hiroshi)
19613 Move pginterface from contrib to interface directory, rename to pgeasy (Bruce)
19614 Change pgeasy connectdb() parameter ordering (Bruce)
19615 Require SELECT DISTINCT target list to have all ORDER BY columns (Tom)
19616 Add Oracle's COMMENT ON command (Mike Mascari <email>mascarim@yahoo.com</email>)
19617 libpq's PQsetNoticeProcessor function now returns previous hook(Peter E)
19618 Prevent PQsetNoticeProcessor from being set to NULL (Peter E)
19619 Make USING in COPY optional (Bruce)
19620 Allow subselects in the target list (Tom)
19621 Allow subselects on the left side of comparison operators (Tom)
19622 New parallel regression test (Jan)
19623 Change backend-side COPY to write files with permissions 644 not 666 (Tom)
19624 Force permissions on PGDATA directory to be secure, even if it exists (Tom)
19625 Added psql LASTOID variable to return last inserted oid (Peter E)
19626 Allow concurrent vacuum and remove pg_vlock vacuum lock file (Tom)
19627 Add privilege check for vacuum (Peter E)
19628 New libpq functions to allow asynchronous connections: PQconnectStart(),
19629 PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(),
19630 PQsetenvPoll(), PQsetenvAbort (Ewan Mellor)
19631 New libpq PQsetenv() function (Ewan Mellor)
19632 create/alter user extension (Peter E)
19633 New postmaster.pid and postmaster.opts under $PGDATA (Tatsuo)
19634 New scripts for create/drop user/db (Peter E)
19635 Major psql overhaul (Peter E)
19636 Add const to libpq interface (Peter E)
19637 New libpq function PQoidValue (Peter E)
19638 Show specific non-aggregate causing problem with GROUP BY (Tom)
19639 Make changes to pg_shadow recreate pg_pwd file (Peter E)
19640 Add aggregate(DISTINCT ...) (Tom)
19641 Allow flag to control COPY input/output of NULLs (Peter E)
19642 Make postgres user have a password by default (Peter E)
19643 Add CREATE/ALTER/DROP GROUP (Peter E)
19644 All administration scripts now support --long options (Peter E, Karel)
19645 Vacuumdb script now supports --all option (Peter E)
19646 ecpg new portable FETCH syntax
19647 Add ecpg EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF
19648 and EXEC SQL ENDIF directives
19649 Add pg_ctl script to control backend start-up (Tatsuo)
19650 Add postmaster.opts.default file to store start-up flags (Tatsuo)
19651 Allow --with-mb=SQL_ASCII
19652 Increase maximum number of index keys to 16 (Bruce)
19653 Increase maximum number of function arguments to 16 (Bruce)
19654 Allow configuration of maximum number of index keys and arguments (Bruce)
19655 Allow unprivileged users to change their passwords (Peter E)
19656 Password authentication enabled; required for new users (Peter E)
19657 Disallow dropping a user who owns a database (Peter E)
19658 Change initdb option --with-mb to --enable-multibyte
19659 Add option for initdb to prompts for superuser password (Peter E)
19660 Allow complex type casts like col::numeric(9,2) and col::int2::float8 (Tom)
19661 Updated user interfaces on initdb, initlocation, pg_dump, ipcclean (Peter E)
19662 New pg_char_to_encoding() and pg_encoding_to_char() functions (Tatsuo)
19663 libpq non-blocking mode (Alfred Perlstein)
19664 Improve conversion of types in casts that don't specify a length
19665 New plperl internal programming language (Mark Hollomon)
19666 Allow COPY IN to read file that do not end with a newline (Tom)
19667 Indicate when long identifiers are truncated (Tom)
19668 Allow aggregates to use type equivalency (Peter E)
19669 Add Oracle's to_char(), to_date(), to_datetime(), to_timestamp(), to_number()
19670 conversion functions (Karel Zak <zakkr@zf.jcu.cz>)
19671 Add SELECT DISTINCT ON (expr [, expr ...]) targetlist ... (Tom)
19672 Check to be sure ORDER BY is compatible with the DISTINCT operation (Tom)
19673 Add NUMERIC and int8 types to ODBC
19674 Improve EXPLAIN results for Append, Group, Agg, Unique (Tom)
19675 Add ALTER TABLE ... ADD FOREIGN KEY (Stephan Szabo)
19676 Allow SELECT .. FOR UPDATE in PL/pgSQL (Hiroshi)
19677 Enable backward sequential scan even after reaching EOF (Hiroshi)
19678 Add btree indexing of boolean values, >= and <= (Don Baccus)
19679 Print current line number when COPY FROM fails (Massimo)
19680 Recognize POSIX time zone e.g. "PST+8" and "GMT-8" (Thomas)
19681 Add DEC as synonym for DECIMAL (Thomas)
19682 Add SESSION_USER as SQL92 key word, same as CURRENT_USER (Thomas)
19683 Implement SQL92 column aliases (aka correlation names) (Thomas)
19684 Implement SQL92 join syntax (Thomas)
19685 Make INTERVAL reserved word allowed as a column identifier (Thomas)
19686 Implement REINDEX command (Hiroshi)
19687 Accept ALL in aggregate function SUM(ALL col) (Tom)
19688 Prevent GROUP BY from using column aliases (Tom)
19689 New psql \encoding option (Tatsuo)
19690 Allow PQrequestCancel() to terminate when in waiting-for-lock state (Hiroshi)
19691 Allow negation of a negative number in all cases
19692 Add ecpg descriptors (Christof, Michael)
19693 Allow CREATE VIEW v AS SELECT f1::char(8) FROM tbl
19694 Allow casts with length, like foo::char(8)
19695 New libpq functions PQsetClientEncoding(), PQclientEncoding() (Tatsuo)
19696 Add support for SJIS user defined characters (Tatsuo)
19697 Larger views/rules supported
19698 Make libpq's PQconndefaults() thread-safe (Tom)
19699 Disable // as comment to be ANSI conforming, should use -- (Tom)
19700 Allow column aliases on views CREATE VIEW name (collist)
19701 Fixes for views with subqueries (Tom)
19702 Allow UPDATE table SET fld = (SELECT ...) (Tom)
19703 SET command options no longer require quotes
19704 Update pgaccess to 0.98.6
19705 New SET SEED command
19706 New pg_options.sample file
19707 New SET FSYNC command (Massimo)
19708 Allow pg_descriptions when creating tables
19709 Allow pg_descriptions when creating types, columns, and functions
19710 Allow psql \copy to allow delimiters (Peter E)
19711 Allow psql to print nulls as distinct from "" [null] (Peter E)
19715 Many array fixes (Tom)
19716 Allow bare column names to be subscripted as arrays (Tom)
19717 Improve type casting of int and float constants (Tom)
19718 Cleanups for int8 inputs, range checking, and type conversion (Tom)
19719 Fix for SELECT timespan('21:11:26'::time) (Tom)
19720 netmask('x.x.x.x/0') is 255.255.255.255 instead of 0.0.0.0 (Oleg Sharoiko)
19721 Add btree index on NUMERIC (Jan)
19722 Perl fix for large objects containing NUL characters (Douglas Thomson)
19723 ODBC fix for large objects (free)
19724 Fix indexing of cidr data type
19725 Fix for Ethernet MAC addresses (macaddr type) comparisons
19726 Fix for date/time types when overflows happened in computations (Tom)
19727 Allow array on int8 (Peter E)
19728 Fix for rounding/overflow of NUMERIC type, like NUMERIC(4,4) (Tom)
19729 Allow NUMERIC arrays
19730 Fix bugs in NUMERIC ceil() and floor() functions (Tom)
19731 Make char_length()/octet_length including trailing blanks (Tom)
19732 Made abstime/reltime use int4 instead of time_t (Peter E)
19733 New lztext data type for compressed text fields
19734 Revise code to handle coercion of int and float constants (Tom)
19735 Start at new code to implement a BIT and BIT VARYING type (Adriaan Joubert)
19736 NUMERIC now accepts scientific notation (Tom)
19737 NUMERIC to int4 rounds (Tom)
19738 Convert float4/8 to NUMERIC properly (Tom)
19739 Allow type conversion with NUMERIC (Thomas)
19740 Make ISO date style (2000-02-16 09:33) the default (Thomas)
19741 Add NATIONAL CHAR [ VARYING ] (Thomas)
19742 Allow NUMERIC round and trunc to accept negative scales (Tom)
19743 New TIME WITH TIME ZONE type (Thomas)
19744 Add MAX()/MIN() on time type (Thomas)
19745 Add abs(), mod(), fac() for int8 (Thomas)
19746 Rename functions to round(), sqrt(), cbrt(), pow() for float8 (Thomas)
19747 Add transcendental math functions (e.g. sin(), acos()) for float8 (Thomas)
19748 Add exp() and ln() for NUMERIC type
19749 Rename NUMERIC power() to pow() (Thomas)
19750 Improved TRANSLATE() function (Edwin Ramirez, Tom)
19751 Allow X=-Y operators (Tom)
19752 Allow SELECT float8(COUNT(*))/(SELECT COUNT(*) FROM t) FROM t GROUP BY f1; (Tom)
19753 Allow LOCALE to use indexes in regular expression searches (Tom)
19754 Allow creation of functional indexes to use default types
19758 Prevent exponential space consumption with many AND's and OR's (Tom)
19759 Collect attribute selectivity values for system columns (Tom)
19760 Reduce memory usage of aggregates (Tom)
19761 Fix for LIKE optimization to use indexes with multibyte encodings (Tom)
19762 Fix r-tree index optimizer selectivity (Thomas)
19763 Improve optimizer selectivity computations and functions (Tom)
19764 Optimize btree searching for cases where many equal keys exist (Tom)
19765 Enable fast LIKE index processing only if index present (Tom)
19766 Re-use free space on index pages with duplicates (Tom)
19767 Improve hash join processing (Tom)
19768 Prevent descending sort if result is already sorted(Hiroshi)
19769 Allow commuting of index scan query qualifications (Tom)
19770 Prefer index scans in cases where ORDER BY/GROUP BY is required (Tom)
19771 Allocate large memory requests in fix-sized chunks for performance (Tom)
19772 Fix vacuum's performance by reducing memory allocation requests (Tom)
19773 Implement constant-expression simplification (Bernard Frankpitt, Tom)
19774 Use secondary columns to be used to determine start of index scan (Hiroshi)
19775 Prevent quadruple use of disk space when doing internal sorting (Tom)
19776 Faster sorting by calling fewer functions (Tom)
19777 Create system indexes to match all system caches (Bruce, Hiroshi)
19778 Make system caches use system indexes (Bruce)
19779 Make all system indexes unique (Bruce)
19780 Improve pg_statistics management for VACUUM speed improvement (Tom)
19781 Flush backend cache less frequently (Tom, Hiroshi)
19782 COPY now reuses previous memory allocation, improving performance (Tom)
19783 Improve optimization cost estimation (Tom)
19784 Improve optimizer estimate of range queries x > lowbound AND x < highbound (Tom)
19785 Use DNF instead of CNF where appropriate (Tom, Taral)
19786 Further cleanup for OR-of-AND WHERE-clauses (Tom)
19787 Make use of index in OR clauses (x = 1 AND y = 2) OR (x = 2 AND y = 4) (Tom)
19788 Smarter optimizer computations for random index page access (Tom)
19789 New SET variable to control optimizer costs (Tom)
19790 Optimizer queries based on LIMIT, OFFSET, and EXISTS qualifications (Tom)
19791 Reduce optimizer internal housekeeping of join paths for speedup (Tom)
19792 Major subquery speedup (Tom)
19793 Fewer fsync writes when fsync is not disabled (Tom)
19794 Improved LIKE optimizer estimates (Tom)
19795 Prevent fsync in SELECT-only queries (Vadim)
19796 Make index creation use psort code, because it is now faster (Tom)
19797 Allow creation of sort temp tables > 1 Gig
19799 Source Tree Changes
19800 -------------------
19801 Fix for linux PPC compile
19802 New generic expression-tree-walker subroutine (Tom)
19803 Change form() to varargform() to prevent portability problems
19804 Improved range checking for large integers on Alphas
19805 Clean up #include in /include directory (Bruce)
19806 Add scripts for checking includes (Bruce)
19807 Remove un-needed #include's from *.c files (Bruce)
19808 Change #include's to use <> and "" as appropriate (Bruce)
19809 Enable Windows compilation of libpq
19810 Alpha spinlock fix from Uncle George <email>gatgul@voicenet.com</email>
19811 Overhaul of optimizer data structures (Tom)
19812 Fix to cygipc library (Yutaka Tanida)
19813 Allow pgsql to work on newer Cygwin snapshots (Dan)
19814 New catalog version number (Tom)
19816 Rename heap_replace to heap_update
19817 Update for QNX (Dr. Andreas Kardos)
19818 New platform-specific regression handling (Tom)
19819 Rename oid8 -> oidvector and int28 -> int2vector (Bruce)
19820 Included all yacc and lex files into the distribution (Peter E.)
19821 Remove lextest, no longer needed (Peter E)
19822 Fix for libpq and psql on Windows (Magnus)
19823 Internally change datetime and timespan into timestamp and interval (Thomas)
19824 Fix for plpgsql on BSD/OS
19825 Add SQL_ASCII test case to the regression test (Tatsuo)
19826 configure --with-mb now deprecated (Tatsuo)
19828 NetBSD fixes (Johnny C. Lam <email>lamj@stat.cmu.edu</email>)
19829 Fixes for Alpha compiles
19830 New multibyte encodings
19836 <sect1 id="release-6-5-3">
19837 <title>Release 6.5.3</title>
19840 <title>Release date</title>
19841 <simpara>1999-10-13</simpara>
19845 This is basically a cleanup release for 6.5.2. We have added a new
19846 <application>PgAccess</> that was missing in 6.5.2, and installed an NT-specific fix.
19851 <title>Migration to version 6.5.3</title>
19854 A dump/restore is <emphasis>not</emphasis> required for those running
19859 <title>Changes</title>
19863 Updated version of pgaccess 0.98
19865 Fix dumping rules on inherited tables
19872 <sect1 id="release-6-5-2">
19873 <title>Release 6.5.2</title>
19876 <title>Release date</title>
19877 <simpara>1999-09-15</simpara>
19881 This is basically a cleanup release for 6.5.1. We have fixed a variety of
19882 problems reported by 6.5.1 users.
19887 <title>Migration to version 6.5.2</title>
19890 A dump/restore is <emphasis>not</emphasis> required for those running
19896 <title>Changes</title>
19900 subselect+CASE fixes(Tom)
19901 Add SHLIB_LINK setting for solaris_i386 and solaris_sparc ports(Daren Sefcik)
19902 Fixes for CASE in WHERE join clauses(Tom)
19903 Fix BTScan abort(Tom)
19904 Repair the check for redundant UNIQUE and PRIMARY KEY indexes(Thomas)
19905 Improve it so that it checks for multicolumn constraints(Thomas)
19906 Fix for Windows making problem with MB enabled(Hiroki Kataoka)
19907 Allow BSD yacc and bison to compile pl code(Bruce)
19908 Fix SET NAMES working
19910 Fix vacuum's memory consumption(Hiroshi,Tatsuo)
19911 Reduce the total memory consumption of vacuum(Tom)
19912 Fix for timestamp(datetime)
19913 Rule deparsing bugfixes(Tom)
19914 Fix quoting problems in mkMakefile.tcldefs.sh.in and mkMakefile.tkdefs.sh.in(Tom)
19915 This is to re-use space on index pages freed by vacuum(Vadim)
19916 document -x for pg_dump(Bruce)
19917 Fix for unary operators in rule deparser(Tom)
19918 Comment out FileUnlink of excess segments during mdtruncate()(Tom)
19919 IRIX linking fix from Yu Cao >yucao@falcon.kla-tencor.com<
19920 Repair logic error in LIKE: should not return LIKE_ABORT
19921 when reach end of pattern before end of text(Tom)
19922 Repair incorrect cleanup of heap memory allocation during transaction abort(Tom)
19923 Updated version of pgaccess 0.98
19929 <sect1 id="release-6-5-1">
19930 <title>Release 6.5.1</title>
19933 <title>Release date</title>
19934 <simpara>1999-07-15</simpara>
19938 This is basically a cleanup release for 6.5. We have fixed a variety of
19939 problems reported by 6.5 users.
19943 <title>Migration to version 6.5.1</title>
19946 A dump/restore is <emphasis>not</emphasis> required for those running
19952 <title>Changes</title>
19957 Portability fixes for linux_ppc, IRIX, linux_alpha, OpenBSD, alpha
19958 Remove QUERY_LIMIT, use SELECT...LIMIT
19959 Fix for EXPLAIN on inheritance(Tom)
19960 Patch to allow vacuum on multisegment tables(Hiroshi)
19961 R-Tree optimizer selectivity fix(Tom)
19962 ACL file descriptor leak fix(Atsushi Ogawa)
19963 New expression subtree code(Tom)
19964 Avoid disk writes for read-only transactions(Vadim)
19965 Fix for removal of temp tables if last transaction was aborted(Bruce)
19966 Fix to prevent too large row from being created(Bruce)
19968 Allow port numbers 32k - 64k(Bruce)
19969 Add ^ precedence(Bruce)
19970 Rename sort files called pg_temp to pg_sorttemp(Bruce)
19971 Fix for microseconds in time values(Tom)
19972 Tutorial source cleanup
19973 New linux_m68k port
19974 Fix for sorting of NULL's in some cases(Tom)
19975 Shared library dependencies fixed (Tom)
19976 Fixed glitches affecting GROUP BY in subselects(Tom)
19977 Fix some compiler warnings (Tomoaki Nishiyama)
19978 Add Win1250 (Czech) support (Pavel Behal)
19984 <sect1 id="release-6-5">
19985 <title>Release 6.5</title>
19988 <title>Release date</title>
19989 <simpara>1999-06-09</simpara>
19993 This release marks a major step in the development team's mastery of the source
19994 code we inherited from Berkeley. You will see we are now easily adding
19995 major features, thanks to the increasing size and experience of our
19996 world-wide development team.
20000 Here is a brief summary of the more notable changes:
20005 Multiversion concurrency control(MVCC)
20009 This removes our old table-level locking, and replaces it with
20010 a locking system that is superior to most commercial database
20011 systems. In a traditional system, each row that is modified
20012 is locked until committed, preventing reads by other users.
20013 MVCC uses the natural multiversion nature of
20014 <productname>PostgreSQL</productname> to allow readers to
20015 continue reading consistent data during writer activity.
20016 Writers continue to use the compact pg_log transaction system.
20017 This is all performed without having to allocate a lock for
20018 every row like traditional database systems. So, basically,
20019 we no longer are restricted by simple table-level locking; we
20020 have something better than row-level locking.
20027 Hot backups from <application>pg_dump</application>
20031 <application>pg_dump</application> takes advantage of the new
20032 MVCC features to give a consistent database dump/backup while
20033 the database stays online and available for queries.
20044 We now have a true numeric data type, with
20045 user-specified precision.
20056 Temporary tables are guaranteed to have unique names
20057 within a database session, and are destroyed on session exit.
20068 We now have CASE, INTERSECT, and EXCEPT statement
20069 support. We have new LIMIT/OFFSET, SET TRANSACTION ISOLATION LEVEL,
20070 SELECT ... FOR UPDATE, and an improved LOCK TABLE command.
20081 We continue to speed up <productname>PostgreSQL</productname>,
20082 thanks to the variety of talents within our team. We have
20083 sped up memory allocation, optimization, table joins, and row
20095 We continue to expand our port list, this time including
20096 <systemitem class="osname">Windows NT</>/<systemitem>ix86</> and <systemitem class="osname">NetBSD</>/<systemitem>arm32</>.
20107 Most interfaces have new versions, and existing functionality
20119 New and updated material is present throughout the
20120 documentation. New <acronym>FAQ</acronym>s have been
20121 contributed for <systemitem class="osname">SGI</> and <systemitem class="osname">AIX</> platforms.
20122 The <citetitle>Tutorial</citetitle> has introductory information
20123 on <acronym>SQL</acronym> from Stefan Simkovics.
20124 For the <citetitle>User's Guide</citetitle>, there are
20125 reference pages covering the postmaster and more utility
20126 programs, and a new appendix
20127 contains details on date/time behavior.
20128 The <citetitle>Administrator's Guide</citetitle> has a new
20129 chapter on troubleshooting from Tom Lane.
20130 And the <citetitle>Programmer's Guide</citetitle> has a
20131 description of query processing, also from Stefan, and details
20132 on obtaining the <productname>PostgreSQL</productname> source
20133 tree via anonymous <productname>CVS</productname> and
20134 <productname>CVSup</productname>.
20142 <title>Migration to version 6.5</title>
20145 A dump/restore using <application>pg_dump</application>
20146 is required for those wishing to migrate data from any
20147 previous release of <productname>PostgreSQL</productname>.
20148 <application>pg_upgrade</application> can <emphasis>not</emphasis>
20149 be used to upgrade to this release because the on-disk structure
20150 of the tables has changed compared to previous releases.
20154 The new Multiversion Concurrency Control (MVCC) features can
20155 give somewhat different behaviors in multiuser
20156 environments. <emphasis>Read and understand the following section
20157 to ensure that your existing applications will give you the
20158 behavior you need.</emphasis>
20162 <title>Multiversion Concurrency Control</title>
20165 Because readers in 6.5 don't lock data, regardless of transaction
20166 isolation level, data read by one transaction can be overwritten by
20167 another. In other words, if a row is returned by
20168 <command>SELECT</command> it doesn't mean that this row really exists
20169 at the time it is returned (i.e. sometime after the statement or
20170 transaction began) nor that the row is protected from being deleted or
20171 updated by concurrent transactions before the current transaction does
20172 a commit or rollback.
20176 To ensure the actual existence of a row and protect it against
20177 concurrent updates one must use <command>SELECT FOR UPDATE</command> or
20178 an appropriate <command>LOCK TABLE</command> statement. This should be
20179 taken into account when porting applications from previous releases of
20180 <productname>PostgreSQL</productname> and other environments.
20184 Keep the above in mind if you are using
20185 <filename>contrib/refint.*</filename> triggers for
20186 referential integrity. Additional techniques are required now. One way is
20187 to use <command>LOCK parent_table IN SHARE ROW EXCLUSIVE MODE</command>
20188 command if a transaction is going to update/delete a primary key and
20189 use <command>LOCK parent_table IN SHARE MODE</command> command if a
20190 transaction is going to update/insert a foreign key.
20194 Note that if you run a transaction in SERIALIZABLE mode then you must
20195 execute the <command>LOCK</command> commands above before execution of any
20196 <acronym>DML</acronym> statement
20197 (<command>SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO</command>) in the
20204 These inconveniences will disappear in the future
20205 when the ability to read dirty
20206 (uncommitted) data (regardless of isolation level) and true referential
20207 integrity will be implemented.
20213 <title>Changes</title>
20219 Fix text<->float8 and text<->float4 conversion functions(Thomas)
20220 Fix for creating tables with mixed-case constraints(Billy)
20221 Change exp()/pow() behavior to generate error on underflow/overflow(Jan)
20222 Fix bug in pg_dump -z
20223 Memory overrun cleanups(Tatsuo)
20224 Fix for lo_import crash(Tatsuo)
20225 Adjust handling of data type names to suppress double quotes(Thomas)
20226 Use type coercion for matching columns and DEFAULT(Thomas)
20227 Fix deadlock so it only checks once after one second of sleep(Bruce)
20228 Fixes for aggregates and PL/pgsql(Hiroshi)
20229 Fix for subquery crash(Vadim)
20230 Fix for libpq function PQfnumber and case-insensitive names(Bahman Rafatjoo)
20231 Fix for large object write-in-middle, no extra block, memory consumption(Tatsuo)
20232 Fix for pg_dump -d or -D and quote special characters in INSERT
20233 Repair serious problems with dynahash(Tom)
20234 Fix INET/CIDR portability problems
20235 Fix problem with selectivity error in ALTER TABLE ADD COLUMN(Bruce)
20236 Fix executor so mergejoin of different column types works(Tom)
20237 Fix for Alpha OR selectivity bug
20238 Fix OR index selectivity problem(Bruce)
20239 Fix so \d shows proper length for char()/varchar()(Ryan)
20240 Fix tutorial code(Clark)
20241 Improve destroyuser checking(Oliver)
20242 Fix for Kerberos(Rodney McDuff)
20243 Fix for dropping database while dirty buffers(Bruce)
20244 Fix so sequence nextval() can be case-sensitive(Bruce)
20246 Drop buffers before destroying database files(Bruce)
20247 Fix case where executor evaluates functions twice(Tatsuo)
20248 Allow sequence nextval actions to be case-sensitive(Bruce)
20249 Fix optimizer indexing not working for negative numbers(Bruce)
20250 Fix for memory leak in executor with fjIsNull
20251 Fix for aggregate memory leaks(Erik Riedel)
20252 Allow user name containing a dash to grant privileges
20253 Cleanup of NULL in inet types
20254 Clean up system table bugs(Tom)
20255 Fix problems of PAGER and \? command(Masaaki Sakaida)
20256 Reduce default multisegment file size limit to 1GB(Peter)
20257 Fix for dumping of CREATE OPERATOR(Tom)
20258 Fix for backward scanning of cursors(Hiroshi Inoue)
20259 Fix for COPY FROM STDIN when using \i(Tom)
20260 Fix for subselect is compared inside an expression(Jan)
20261 Fix handling of error reporting while returning rows(Tom)
20262 Fix problems with reference to array types(Tom,Jan)
20263 Prevent UPDATE SET oid(Jan)
20264 Fix pg_dump so -t option can handle case-sensitive tablenames
20265 Fixes for GROUP BY in special cases(Tom, Jan)
20266 Fix for memory leak in failed queries(Tom)
20267 DEFAULT now supports mixed-case identifiers(Tom)
20268 Fix for multisegment uses of DROP/RENAME table, indexes(Ole Gjerde)
20269 Disable use of pg_dump with both -o and -d options(Bruce)
20270 Allow pg_dump to properly dump group privileges(Bruce)
20271 Fix GROUP BY in INSERT INTO table SELECT * FROM table2(Jan)
20272 Fix for computations in views(Jan)
20273 Fix for aggregates on array indexes(Tom)
20274 Fix for DEFAULT handles single quotes in value requiring too many quotes
20275 Fix security problem with non-super users importing/exporting large objects(Tom)
20276 Rollback of transaction that creates table cleaned up properly(Tom)
20277 Fix to allow long table and column names to generate proper serial names(Tom)
20281 Add "vacuumdb" utility
20282 Speed up libpq by allocating memory better(Tom)
20283 EXPLAIN all indexes used(Tom)
20284 Implement CASE, COALESCE, NULLIF expression(Thomas)
20285 New pg_dump table output format(Constantin)
20286 Add string min()/max() functions(Thomas)
20287 Extend new type coercion techniques to aggregates(Thomas)
20288 New moddatetime contrib(Terry)
20289 Update to pgaccess 0.96(Constantin)
20290 Add routines for single-byte "char" type(Thomas)
20291 Improved substr() function(Thomas)
20292 Improved multibyte handling(Tatsuo)
20293 Multiversion concurrency control/MVCC(Vadim)
20294 New Serialized mode(Vadim)
20295 Fix for tables over 2gigs(Peter)
20296 New SET TRANSACTION ISOLATION LEVEL(Vadim)
20297 New LOCK TABLE IN ... MODE(Vadim)
20298 Update ODBC driver(Byron)
20299 New NUMERIC data type(Jan)
20300 New SELECT FOR UPDATE(Vadim)
20301 Handle "NaN" and "Infinity" for input values(Jan)
20302 Improved date/year handling(Thomas)
20303 Improved handling of backend connections(Magnus)
20304 New options ELOG_TIMESTAMPS and USE_SYSLOG options for log files(Massimo)
20305 New TCL_ARRAYS option(Massimo)
20306 New INTERSECT and EXCEPT(Stefan)
20307 New pg_index.indisprimary for primary key tracking(D'Arcy)
20308 New pg_dump option to allow dropping of tables before creation(Brook)
20309 Speedup of row output routines(Tom)
20310 New READ COMMITTED isolation level(Vadim)
20311 New TEMP tables/indexes(Bruce)
20312 Prevent sorting if result is already sorted(Jan)
20313 New memory allocation optimization(Jan)
20314 Allow psql to do \p\g(Bruce)
20315 Allow multiple rule actions(Jan)
20316 Added LIMIT/OFFSET functionality(Jan)
20317 Improve optimizer when joining a large number of tables(Bruce)
20318 New intro to SQL from S. Simkovics' Master's Thesis (Stefan, Thomas)
20319 New intro to backend processing from S. Simkovics' Master's Thesis (Stefan)
20320 Improved int8 support(Ryan Bradetich, Thomas, Tom)
20321 New routines to convert between int8 and text/varchar types(Thomas)
20322 New bushy plans, where meta-tables are joined(Bruce)
20323 Enable right-hand queries by default(Bruce)
20324 Allow reliable maximum number of backends to be set at configure time
20325 (--with-maxbackends and postmaster switch (-N backends))(Tom)
20326 GEQO default now 10 tables because of optimizer speedups(Tom)
20327 Allow NULL=Var for MS-SQL portability(Michael, Bruce)
20328 Modify contrib check_primary_key() so either "automatic" or "dependent"(Anand)
20329 Allow psql \d on a view show query(Ryan)
20330 Speedup for LIKE(Bruce)
20331 Ecpg fixes/features, see src/interfaces/ecpg/ChangeLog file(Michael)
20332 JDBC fixes/features, see src/interfaces/jdbc/CHANGELOG(Peter)
20333 Make % operator have precedence like /(Bruce)
20334 Add new postgres -O option to allow system table structure changes(Bruce)
20335 Update contrib/pginterface/findoidjoins script(Tom)
20336 Major speedup in vacuum of deleted rows with indexes(Vadim)
20337 Allow non-SQL functions to run different versions based on arguments(Tom)
20338 Add -E option that shows actual queries sent by \dt and friends(Masaaki Sakaida)
20339 Add version number in start-up banners for psql(Masaaki Sakaida)
20340 New contrib/vacuumlo removes large objects not referenced(Peter)
20341 New initialization for table sizes so non-vacuumed tables perform better(Tom)
20342 Improve error messages when a connection is rejected(Tom)
20343 Support for arrays of char() and varchar() fields(Massimo)
20344 Overhaul of hash code to increase reliability and performance(Tom)
20345 Update to PyGreSQL 2.4(D'Arcy)
20346 Changed debug options so -d4 and -d5 produce different node displays(Jan)
20347 New pg_options: pretty_plan, pretty_parse, pretty_rewritten(Jan)
20348 Better optimization statistics for system table access(Tom)
20349 Better handling of non-default block sizes(Massimo)
20350 Improve GEQO optimizer memory consumption(Tom)
20351 UNION now supports ORDER BY of columns not in target list(Jan)
20352 Major libpq++ improvements(Vince Vielhaber)
20353 pg_dump now uses -z(ACL's) as default(Bruce)
20354 backend cache, memory speedups(Tom)
20355 have pg_dump do everything in one snapshot transaction(Vadim)
20356 fix for large object memory leakage, fix for pg_dumping(Tom)
20357 INET type now respects netmask for comparisons
20358 Make VACUUM ANALYZE only use a readlock(Vadim)
20359 Allow VIEWs on UNIONS(Jan)
20360 pg_dump now can generate consistent snapshots on active databases(Vadim)
20362 Source Tree Changes
20363 -------------------
20364 Improve port matching(Tom)
20365 Portability fixes for SunOS
20366 Add Windows NT backend port and enable dynamic loading(Magnus and Daniel Horak)
20367 New port to Cobalt Qube(Mips) running Linux(Tatsuo)
20368 Port to NetBSD/m68k(Mr. Mutsuki Nakajima)
20369 Port to NetBSD/sun3(Mr. Mutsuki Nakajima)
20370 Port to NetBSD/macppc(Toshimi Aoki)
20371 Fix for tcl/tk configuration(Vince)
20372 Removed CURRENT key word for rule queries(Jan)
20373 NT dynamic loading now works(Daniel Horak)
20374 Add ARM32 support(Andrew McMurry)
20375 Better support for HP-UX 11 and UnixWare
20376 Improve file handling to be more uniform, prevent file descriptor leak(Tom)
20377 New install commands for plpgsql(Jan)
20384 <sect1 id="release-6-4-2">
20385 <title>Release 6.4.2</title>
20388 <title>Release date</title>
20389 <simpara>1998-12-20</simpara>
20393 The 6.4.1 release was improperly packaged. This also has one additional
20399 <title>Migration to version 6.4.2</title>
20402 A dump/restore is <emphasis>not</emphasis> required for those running
20407 <title>Changes</title>
20411 Fix for datetime constant problem on some platforms(Thomas)
20419 <sect1 id="release-6-4-1">
20420 <title>Release 6.4.1</title>
20423 <title>Release date</title>
20424 <simpara>1998-12-18</simpara>
20428 This is basically a cleanup release for 6.4. We have fixed a variety of
20429 problems reported by 6.4 users.
20434 <title>Migration to version 6.4.1</title>
20437 A dump/restore is <emphasis>not</emphasis> required for those running
20442 <title>Changes</title>
20446 Add pg_dump -N flag to force double quotes around identifiers. This is
20447 the default(Thomas)
20448 Fix for NOT in where clause causing crash(Bruce)
20449 EXPLAIN VERBOSE coredump fix(Vadim)
20450 Fix shared-library problems on Linux
20451 Fix test for table existence to allow mixed-case and whitespace in
20452 the table name(Thomas)
20453 Fix a couple of pg_dump bugs
20454 Configure matches template/.similar entries better(Tom)
20455 Change builtin function names from SPI_* to spi_*
20456 OR WHERE clause fix(Vadim)
20457 Fixes for mixed-case table names(Billy)
20458 contrib/linux/postgres.init.csh/sh fix(Thomas)
20459 libpq memory overrun fix
20461 Change exp() behavior to generate error on underflow(Thomas)
20462 pg_dump fixes for memory leak, inheritance constraints, layout change
20463 update pgaccess to 0.93
20464 Fix prototype for 64-bit platforms
20465 Multibyte fixes(Tatsuo)
20467 Fix memory overruns(Tatsuo)
20468 Fix for lo_import() crash(Bruce)
20469 Better search for install program(Tom)
20470 Timezone fixes(Tom)
20472 Use implicit type coercion for matching DEFAULT values(Thomas)
20473 Add routines to help with single-byte (internal) character type(Thomas)
20474 Compilation of libpq for Windows fixes(Magnus)
20475 Upgrade to PyGreSQL 2.2(D'Arcy)
20483 <sect1 id="release-6-4">
20484 <title>Release 6.4</title>
20487 <title>Release date</title>
20488 <simpara>1998-10-30</simpara>
20492 There are <emphasis>many</emphasis> new features and improvements in this release.
20493 Thanks to our developers and maintainers, nearly every aspect of the system
20494 has received some attention since the previous release.
20495 Here is a brief, incomplete summary:
20500 Views and rules are now functional thanks to extensive new code in the
20501 rewrite rules system from Jan Wieck. He also wrote a chapter on it
20502 for the <citetitle>Programmer's Guide</citetitle>.
20507 Jan also contributed a second procedural language, <application>PL/pgSQL</application>, to go with the
20508 original <application>PL/pgTCL</application> procedural language he contributed last release.
20514 We have optional multiple-byte character set support from Tatsuo Ishii
20515 to complement our existing locale support.
20521 Client/server communications has been cleaned up, with better support for
20522 asynchronous messages and interrupts thanks to Tom Lane.
20528 The parser will now perform automatic type coercion to match arguments
20529 to available operators and functions, and to match columns and expressions
20530 with target columns. This uses a generic mechanism which supports
20531 the type extensibility features of <productname>PostgreSQL</productname>.
20532 There is a new chapter in the <citetitle>User's Guide</citetitle>
20533 which covers this topic.
20539 Three new data types have been added.
20540 Two types, <type>inet</type> and <type>cidr</type>, support various forms
20541 of IP network, subnet, and machine addressing. There is now an 8-byte integer
20542 type available on some platforms. See the chapter on data types
20543 in the <citetitle>User's Guide</citetitle> for details.
20544 A fourth type, <type>serial</type>, is now supported by the parser as an
20545 amalgam of the <type>int4</type> type, a sequence, and a unique index.
20551 Several more <acronym>SQL92</acronym>-compatible syntax features have been
20552 added, including <command>INSERT DEFAULT VALUES</command>
20558 The automatic configuration and installation system has received some
20559 attention, and should be more robust for more platforms than it has ever
20568 <title>Migration to version 6.4</title>
20571 A dump/restore using <application>pg_dump</application>
20572 or <application>pg_dumpall</application>
20573 is required for those wishing to migrate data from any
20574 previous release of <productname>PostgreSQL</productname>.
20579 <title>Changes</title>
20585 Fix for a tiny memory leak in PQsetdb/PQfinish(Bryan)
20586 Remove char2-16 data types, use char/varchar(Darren)
20587 Pqfn not handles a NOTICE message(Anders)
20588 Reduced busywaiting overhead for spinlocks with many backends (dg)
20589 Stuck spinlock detection (dg)
20590 Fix up "ISO-style" timespan decoding and encoding(Thomas)
20591 Fix problem with table drop after rollback of transaction(Vadim)
20592 Change error message and remove non-functional update message(Vadim)
20593 Fix for COPY array checking
20594 Fix for SELECT 1 UNION SELECT NULL
20595 Fix for buffer leaks in large object calls(Pascal)
20596 Change owner from oid to int4 type(Bruce)
20597 Fix a bug in the oracle compatibility functions btrim() ltrim() and rtrim()
20598 Fix for shared invalidation cache overflow(Massimo)
20599 Prevent file descriptor leaks in failed COPY's(Bruce)
20600 Fix memory leak in libpgtcl's pg_select(Constantin)
20601 Fix problems with username/passwords over 8 characters(Tom)
20602 Fix problems with handling of asynchronous NOTIFY in backend(Tom)
20603 Fix of many bad system table entries(Tom)
20607 Upgrade ecpg and ecpglib,see src/interfaces/ecpc/ChangeLog(Michael)
20608 Show the index used in an EXPLAIN(Zeugswetter)
20609 EXPLAIN invokes rule system and shows plan(s) for rewritten queries(Jan)
20610 Multibyte awareness of many data types and functions, via configure(Tatsuo)
20611 New configure --with-mb option(Tatsuo)
20612 New initdb --pgencoding option(Tatsuo)
20613 New createdb -E multibyte option(Tatsuo)
20614 Select version(); now returns PostgreSQL version(Jeroen)
20615 libpq now allows asynchronous clients(Tom)
20616 Allow cancel from client of backend query(Tom)
20617 psql now cancels query with Control-C(Tom)
20618 libpq users need not issue dummy queries to get NOTIFY messages(Tom)
20619 NOTIFY now sends sender's PID, so you can tell whether it was your own(Tom)
20620 PGresult struct now includes associated error message, if any(Tom)
20621 Define "tz_hour" and "tz_minute" arguments to date_part()(Thomas)
20622 Add routines to convert between varchar and bpchar(Thomas)
20623 Add routines to allow sizing of varchar and bpchar into target columns(Thomas)
20624 Add bit flags to support timezonehour and minute in data retrieval(Thomas)
20625 Allow more variations on valid floating point numbers (e.g. ".1", "1e6")(Thomas)
20626 Fixes for unary minus parsing with leading spaces(Thomas)
20627 Implement TIMEZONE_HOUR, TIMEZONE_MINUTE per SQL92 specs(Thomas)
20628 Check for and properly ignore FOREIGN KEY column constraints(Thomas)
20629 Define USER as synonym for CURRENT_USER per SQL92 specs(Thomas)
20630 Enable HAVING clause but no fixes elsewhere yet.
20631 Make "char" type a synonym for "char(1)" (actually implemented as bpchar)(Thomas)
20632 Save string type if specified for DEFAULT clause handling(Thomas)
20633 Coerce operations involving different data types(Thomas)
20634 Allow some index use for columns of different types(Thomas)
20635 Add capabilities for automatic type conversion(Thomas)
20636 Cleanups for large objects, so file is truncated on open(Peter)
20637 Readline cleanups(Tom)
20638 Allow psql \f \ to make spaces as delimiter(Bruce)
20639 Pass pg_attribute.atttypmod to the frontend for column field lengths(Tom,Bruce)
20640 Msql compatibility library in /contrib(Aldrin)
20641 Remove the requirement that ORDER/GROUP BY clause identifiers be
20642 included in the target list(David)
20643 Convert columns to match columns in UNION clauses(Thomas)
20644 Remove fork()/exec() and only do fork()(Bruce)
20645 Jdbc cleanups(Peter)
20646 Show backend status on ps command line(only works on some platforms)(Bruce)
20647 Pg_hba.conf now has a sameuser option in the database field
20648 Make lo_unlink take oid param, not int4
20649 New DISABLE_COMPLEX_MACRO for compilers that cannot handle our macros(Bruce)
20650 Libpgtcl now handles NOTIFY as a Tcl event, need not send dummy queries(Tom)
20651 libpgtcl cleanups(Tom)
20652 Add -error option to libpgtcl's pg_result command(Tom)
20653 New locale patch, see docs/README/locale(Oleg)
20654 Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb)
20655 New contrib/lo code for large object orphan removal(Peter)
20656 New psql command "SET CLIENT_ENCODING TO 'encoding'" for multibytes
20657 feature, see /doc/README.mb(Tatsuo)
20658 contrib/noupdate code to revoke update permission on a column
20659 libpq can now be compiled on Windows(Magnus)
20660 Add PQsetdbLogin() in libpq
20661 New 8-byte integer type, checked by configure for OS support(Thomas)
20662 Better support for quoted table/column names(Thomas)
20663 Surround table and column names with double-quotes in pg_dump(Thomas)
20664 PQreset() now works with passwords(Tom)
20665 Handle case of GROUP BY target list column number out of range(David)
20666 Allow UNION in subselects
20667 Add auto-size to screen to \d? commands(Bruce)
20668 Use UNION to show all \d? results in one query(Bruce)
20669 Add \d? field search feature(Bruce)
20670 Pg_dump issues fewer \connect requests(Tom)
20671 Make pg_dump -z flag work better, document it in manual page(Tom)
20672 Add HAVING clause with full support for subselects and unions(Stephan)
20673 Full text indexing routines in contrib/fulltextindex(Maarten)
20674 Transaction ids now stored in shared memory(Vadim)
20675 New PGCLIENTENCODING when issuing COPY command(Tatsuo)
20676 Support for SQL92 syntax "SET NAMES"(Tatsuo)
20677 Support for LATIN2-5(Tatsuo)
20678 Add UNICODE regression test case(Tatsuo)
20679 Lock manager cleanup, new locking modes for LLL(Vadim)
20680 Allow index use with OR clauses(Bruce)
20681 Allows "SELECT NULL ORDER BY 1;"
20682 Explain VERBOSE prints the plan, and now pretty-prints the plan to
20683 the postmaster log file(Bruce)
20684 Add indexes display to \d command(Bruce)
20685 Allow GROUP BY on functions(David)
20686 New pg_class.relkind for large objects(Bruce)
20687 New way to send libpq NOTICE messages to a different location(Tom)
20688 New \w write command to psql(Bruce)
20689 New /contrib/findoidjoins scans oid columns to find join relationships(Bruce)
20690 Allow binary-compatible indexes to be considered when checking for valid
20691 Indexes for restriction clauses containing a constant(Thomas)
20692 New ISBN/ISSN code in /contrib/isbn_issn
20693 Allow NOT LIKE, IN, NOT IN, BETWEEN, and NOT BETWEEN constraint(Thomas)
20694 New rewrite system fixes many problems with rules and views(Jan)
20695 * Rules on relations work
20696 * Event qualifications on insert/update/delete work
20697 * New OLD variable to reference CURRENT, CURRENT will be remove in future
20698 * Update rules can reference NEW and OLD in rule qualifications/actions
20699 * Insert/update/delete rules on views work
20700 * Multiple rule actions are now supported, surrounded by parentheses
20701 * Regular users can create views/rules on tables they have RULE permits
20702 * Rules and views inherit the privileges of the creator
20703 * No rules at the column level
20704 * No UPDATE NEW/OLD rules
20705 * New pg_tables, pg_indexes, pg_rules and pg_views system views
20706 * Only a single action on SELECT rules
20707 * Total rewrite overhaul, perhaps for 6.5
20708 * handle subselects
20709 * handle aggregates on views
20710 * handle insert into select from view works
20711 System indexes are now multikey(Bruce)
20712 Oidint2, oidint4, and oidname types are removed(Bruce)
20713 Use system cache for more system table lookups(Bruce)
20714 New backend programming language PL/pgSQL in backend/pl(Jan)
20715 New SERIAL data type, auto-creates sequence/index(Thomas)
20716 Enable assert checking without a recompile(Massimo)
20717 User lock enhancements(Massimo)
20718 New setval() command to set sequence value(Massimo)
20719 Auto-remove unix socket file on start-up if no postmaster running(Massimo)
20720 Conditional trace package(Massimo)
20721 New UNLISTEN command(Massimo)
20722 psql and libpq now compile under Windows using win32.mak(Magnus)
20723 Lo_read no longer stores trailing NULL(Bruce)
20724 Identifiers are now truncated to 31 characters internally(Bruce)
20725 Createuser options now available on the command line
20726 Code for 64-bit integer supported added, configure tested, int8 type(Thomas)
20727 Prevent file descriptor leaf from failed COPY(Bruce)
20728 New pg_upgrade command(Bruce)
20729 Updated /contrib directories(Massimo)
20730 New CREATE TABLE DEFAULT VALUES statement available(Thomas)
20731 New INSERT INTO TABLE DEFAULT VALUES statement available(Thomas)
20732 New DECLARE and FETCH feature(Thomas)
20733 libpq's internal structures now not exported(Tom)
20734 Allow up to 8 key indexes(Bruce)
20735 Remove ARCHIVE key word, that is no longer used(Thomas)
20736 pg_dump -n flag to suppress quotes around indentifiers
20737 disable system columns for views(Jan)
20738 new INET and CIDR types for network addresses(TomH, Paul)
20739 no more double quotes in psql output
20740 pg_dump now dumps views(Terry)
20741 new SET QUERY_LIMIT(Tatsuo,Jan)
20743 Source Tree Changes
20744 -------------------
20745 /contrib cleanup(Jun)
20746 Inline some small functions called for every row(Bruce)
20748 HP-UX cleanups(Tom)
20749 Multibyte regression tests(Soonmyung.)
20750 Remove --disabled options from configure
20751 Define PGDOC to use POSTGRESDIR by default
20752 Make regression optional
20753 Remove extra braces code to pgindent(Bruce)
20754 Add bsdi shared library support(Bruce)
20755 New --without-CXX support configure option(Brook)
20757 Update backend flowchart in tools/backend(Bruce)
20758 Change atttypmod from int16 to int32(Bruce, Tom)
20759 Getrusage() fix for platforms that do not have it(Tom)
20760 Add PQconnectdb, PGUSER, PGPASSWORD to libpq man page
20761 NS32K platform fixes(Phil Nelson, John Buller)
20762 SCO 7/UnixWare 2.x fixes(Billy,others)
20763 Sparc/Solaris 2.5 fixes(Ryan)
20764 Pgbuiltin.3 is obsolete, move to doc files(Thomas)
20765 Even more documentation(Thomas)
20766 Nextstep support(Jacek)
20768 pginterface manual page(Bruce)
20769 shared libraries all have version numbers
20770 merged all OS-specific shared library defines into one file
20771 smarter TCL/TK configuration checking(Billy)
20772 smarter perl configuration(Brook)
20773 configure uses supplied install-sh if no install script found(Tom)
20774 new Makefile.shlib for shared library configuration(Tom)
20780 <sect1 id="release-6-3-2">
20781 <title>Release 6.3.2</title>
20784 <title>Release date</title>
20785 <simpara>1998-04-07</simpara>
20789 This is a bug-fix release for 6.3.x.
20790 Refer to the release notes for version 6.3 for a more complete summary of new features.
20798 Repairs automatic configuration support for some platforms, including Linux,
20799 from breakage inadvertently introduced in version 6.3.1.
20805 Correctly handles function calls on the left side of BETWEEN and LIKE clauses.
20812 A dump/restore is NOT required for those running 6.3 or 6.3.1. A
20813 <literal>make distclean</>, <literal>make</>, and <literal>make install</> is all that is required.
20814 This last step should be performed while the postmaster is not running.
20815 You should re-link any custom applications that use <productname>PostgreSQL</productname> libraries.
20818 For upgrades from pre-6.3 installations,
20819 refer to the installation and migration instructions for version 6.3.
20823 <title>Changes</title>
20827 Configure detection improvements for tcl/tk(Brook Milligan, Alvin)
20828 Manual page improvements(Bruce)
20829 BETWEEN and LIKE fix(Thomas)
20830 fix for psql \connect used by pg_dump(Oliver Elphick)
20832 pgaccess, version 0.86
20833 qsort removed, now uses libc version, cleanups(Jeroen)
20834 fix for buffer over-runs detected(Maurice Gittens)
20835 fix for buffer overrun in libpgtcl(Randy Kunkee)
20836 fix for UNION with DISTINCT or ORDER BY(Bruce)
20837 gettimeofday configure check(Doug Winterburn)
20838 Fix "indexes not used" bug(Vadim)
20839 docs additions(Thomas)
20840 Fix for backend memory leak(Bruce)
20841 libreadline cleanup(Erwan MAS)
20842 Remove DISTDIR(Bruce)
20843 Makefile dependency cleanup(Jeroen van Vianen)
20844 ASSERT fixes(Bruce)
20850 <sect1 id="release-6-3-1">
20851 <title>Release 6.3.1</title>
20854 <title>Release date</title>
20855 <simpara>1998-03-23</simpara>
20864 Additional support for multibyte character sets.
20870 Repair byte ordering for mixed-endian clients and servers.
20876 Minor updates to allowed SQL syntax.
20882 Improvements to the configuration autodetection for installation.
20889 A dump/restore is NOT required for those running 6.3. A
20890 <literal>make distclean</>, <literal>make</>, and <literal>make install</> is all that is required.
20891 This last step should be performed while the postmaster is not running.
20892 You should re-link any custom applications that use <productname>PostgreSQL</productname> libraries.
20895 For upgrades from pre-6.3 installations,
20896 refer to the installation and migration instructions for version 6.3.
20900 <title>Changes</title>
20904 ecpg cleanup/fixes, now version 1.1(Michael Meskes)
20905 pg_user cleanup(Bruce)
20906 large object fix for pg_dump and tclsh (alvin)
20907 LIKE fix for multiple adjacent underscores
20908 fix for redefining builtin functions(Thomas)
20910 upgrade to pg_access 0.83
20911 updated CLUSTER manual page
20912 multibyte character set support, see doc/README.mb(Tatsuo)
20913 configure --with-pgport fix
20915 big-endian fix for backend communications(Kataoka)
20916 SUBSTR() and substring() fix(Jan)
20917 several jdbc fixes(Peter)
20918 libpgtcl improvements, see libptcl/README(Randy Kunkee)
20919 Fix for "Datasize = 0" error(Vadim)
20920 Prevent \do from wrapping(Bruce)
20921 Remove duplicate Russian character set entries
20923 Allow optional TABLE key word in LOCK and SELECT INTO(Thomas)
20924 CREATE SEQUENCE options to allow a negative integer(Thomas)
20925 Add "PASSWORD" as an allowed column identifier(Thomas)
20926 Add checks for UNION target fields(Bruce)
20927 Fix Alpha port(Dwayne Bailey)
20928 Fix for text arrays containing quotes(Doug Gibson)
20929 Solaris compile fix(Albert Chin-A-Young)
20930 Better identify tcl and tk libs and includes(Bruce)
20936 <sect1 id="release-6-3">
20937 <title>Release 6.3</title>
20940 <title>Release date</title>
20941 <simpara>1998-03-01</simpara>
20945 There are <emphasis>many</emphasis> new features and improvements in this release.
20946 Here is a brief, incomplete summary:
20951 Many new SQL features, including
20952 full <acronym>SQL92</acronym> subselect capability
20953 (everything is here but target-list subselects).
20959 Support for client-side environment variables to specify time zone and date style.
20965 Socket interface for client/server connection. This is the default now
20966 so you might need to start <application>postmaster</application> with the
20967 <option>-i</option> flag.
20973 Better password authorization mechanisms. Default table privileges have changed.
20979 Old-style <firstterm>time travel</firstterm>
20980 has been removed. Performance has been improved.
20988 Bruce Momjian wrote the following notes to introduce the new release.
20993 There are some general 6.3 issues that I want to mention. These are
20994 only the big items that cannot be described in one sentence. A review
20995 of the detailed changes list is still needed.
20998 First, we now have subselects. Now that we have them, I would like to
20999 mention that without subselects, SQL is a very limited language.
21000 Subselects are a major feature, and you should review your code for
21001 places where subselects provide a better solution for your queries. I
21002 think you will find that there are more uses for subselects than you might
21003 think. Vadim has put us on the big SQL map with subselects, and fully
21004 functional ones too. The only thing you cannot do with subselects is to
21005 use them in the target list.
21008 Second, 6.3 uses Unix domain sockets rather than TCP/IP by default. To
21009 enable connections from other machines, you have to use the new
21010 postmaster -i option, and of course edit <filename>pg_hba.conf</filename>. Also, for this
21011 reason, the format of <filename>pg_hba.conf</filename> has changed.
21014 Third, <type>char()</type> fields will now allow faster access than <type>varchar()</type> or
21015 <type>text</type>. Specifically, the <type>text</> and <type>varchar()</type> have a penalty for access to
21016 any columns after the first column of this type. <type>char()</type> used to also
21017 have this access penalty, but it no longer does. This might suggest that
21018 you redesign some of your tables, especially if you have short character
21019 columns that you have defined as <type>varchar()</type> or <type>text</type>. This and other
21020 changes make 6.3 even faster than earlier releases.
21023 We now have passwords definable independent of any Unix file. There are
21024 new SQL USER commands.
21025 See the <citetitle>Administrator's Guide</citetitle> for more
21026 information. There is a new table, pg_shadow, which is used to store
21027 user information and user passwords, and it by default only SELECT-able
21028 by the <systemitem>postgres</systemitem> super-user. pg_user is now a view of pg_shadow, and is
21029 SELECT-able by PUBLIC. You should keep using pg_user in your
21030 application without changes.
21033 User-created tables now no longer have SELECT privilege to PUBLIC by
21034 default. This was done because the ANSI standard requires it. You can
21035 of course GRANT any privileges you want after the table is created.
21036 System tables continue to be SELECT-able by PUBLIC.
21039 We also have real deadlock detection code. No more sixty-second
21040 timeouts. And the new locking code implements a <acronym>FIFO</acronym> better, so there
21041 should be less resource starvation during heavy use.
21044 Many complaints have been made about inadequate documentation in previous
21045 releases. Thomas has put much effort into many new manuals for this
21046 release. Check out the doc/ directory.
21049 For performance reasons, time travel is gone, but can be implemented
21050 using triggers (see <filename>pgsql/contrib/spi/README</filename>). Please check out the new
21051 \d command for types, operators, etc. Also, views have their own
21052 privileges now, not based on the underlying tables, so privileges on
21053 them have to be set separately. Check <filename>/pgsql/interfaces</filename> for some new
21054 ways to talk to <productname>PostgreSQL</productname>.
21057 This is the first release that really required an explanation for
21058 existing users. In many ways, this was necessary because the new
21059 release removes many limitations, and the work-arounds people were using
21060 are no longer needed.
21064 <title>Migration to version 6.3</title>
21067 A dump/restore using <application>pg_dump</application>
21068 or <application>pg_dumpall</application>
21069 is required for those wishing to migrate data from any
21070 previous release of <productname>PostgreSQL</productname>.
21075 <title>Changes</title>
21081 Fix binary cursors broken by MOVE implementation(Vadim)
21082 Fix for tcl library crash(Jan)
21083 Fix for array handling, from Gerhard Hintermayer
21084 Fix acl error, and remove duplicate pqtrace(Bruce)
21085 Fix psql \e for empty file(Bruce)
21086 Fix for textcat on varchar() fields(Bruce)
21087 Fix for DBT Sendproc (Zeugswetter Andres)
21088 Fix vacuum analyze syntax problem(Bruce)
21089 Fix for international identifiers(Tatsuo)
21090 Fix aggregates on inherited tables(Bruce)
21091 Fix substr() for out-of-bounds data
21092 Fix for select 1=1 or 2=2, select 1=1 and 2=2, and select sum(2+2)(Bruce)
21093 Fix notty output to show status result. -q option still turns it off(Bruce)
21094 Fix for count(*), aggs with views and multiple tables and sum(3)(Bruce)
21096 Fix for PQtrace start/stop several times(Bruce)
21097 Fix a variety of locking problems like newer lock waiters getting
21098 lock before older waiters, and having readlock people not share
21099 locks if a writer is waiting for a lock, and waiting writers not
21100 getting priority over waiting readers(Bruce)
21101 Fix crashes in psql when executing queries from external files(James)
21102 Fix problem with multiple order by columns, with the first one having
21103 NULL values(Jeroen)
21104 Use correct hash table support functions for float8 and int4(Thomas)
21105 Re-enable JOIN= option in CREATE OPERATOR statement (Thomas)
21106 Change precedence for boolean operators to match expected behavior(Thomas)
21107 Generate elog(ERROR) on over-large integer(Bruce)
21108 Allow multiple-argument functions in constraint clauses(Thomas)
21109 Check boolean input literals for 'true','false','yes','no','1','0'
21110 and throw elog(ERROR) if unrecognized(Thomas)
21111 Major large objects fix
21112 Fix for GROUP BY showing duplicates(Vadim)
21113 Fix for index scans in MergeJoin(Vadim)
21117 Subselects with EXISTS, IN, ALL, ANY key words (Vadim, Bruce, Thomas)
21118 New User Manual(Thomas, others)
21119 Speedup by inlining some frequently-called functions
21120 Real deadlock detection, no more timeouts(Bruce)
21121 Add SQL92 "constants" CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP,
21122 CURRENT_USER(Thomas)
21123 Modify constraint syntax to be SQL92-compliant(Thomas)
21124 Implement SQL92 PRIMARY KEY and UNIQUE clauses using indexes(Thomas)
21125 Recognize SQL92 syntax for FOREIGN KEY. Throw elog notice(Thomas)
21126 Allow NOT NULL UNIQUE constraint clause (each allowed separately before)(Thomas)
21127 Allow PostgreSQL-style casting ("::") of non-constants(Thomas)
21128 Add support for SQL3 TRUE and FALSE boolean constants(Thomas)
21129 Support SQL92 syntax for IS TRUE/IS FALSE/IS NOT TRUE/IS NOT FALSE(Thomas)
21130 Allow shorter strings for boolean literals (e.g. "t", "tr", "tru")(Thomas)
21131 Allow SQL92 delimited identifiers(Thomas)
21132 Implement SQL92 binary and hexadecimal string decoding (b'10' and x'1F')(Thomas)
21133 Support SQL92 syntax for type coercion of literal strings
21134 (e.g. "DATETIME 'now'")(Thomas)
21135 Add conversions for int2, int4, and OID types to and from text(Thomas)
21136 Use shared lock when building indexes(Vadim)
21137 Free memory allocated for an user query inside transaction block after
21138 this query is done, was turned off in <= 6.2.1(Vadim)
21139 New SQL statement CREATE PROCEDURAL LANGUAGE(Jan)
21140 New <productname>PostgreSQL</productname> Procedural Language (PL) backend interface(Jan)
21141 Rename pg_dump -H option to -h(Bruce)
21142 Add Java support for passwords, European dates(Peter)
21143 Use indexes for LIKE and ~, !~ operations(Bruce)
21144 Add hash functions for datetime and timespan(Thomas)
21145 Time Travel removed(Vadim, Bruce)
21146 Add paging for \d and \z, and fix \i(Bruce)
21147 Add Unix domain socket support to backend and to frontend library(Goran)
21148 Implement CREATE DATABASE/WITH LOCATION and initlocation utility(Thomas)
21149 Allow more SQL92 and/or <productname>PostgreSQL</productname> reserved words as column identifiers(Thomas)
21150 Augment support for SQL92 SET TIME ZONE...(Thomas)
21151 SET/SHOW/RESET TIME ZONE uses TZ backend environment variable(Thomas)
21152 Implement SET keyword = DEFAULT and SET TIME ZONE DEFAULT(Thomas)
21153 Enable SET TIME ZONE using TZ environment variable(Thomas)
21154 Add PGDATESTYLE environment variable to frontend and backend initialization(Thomas)
21155 Add PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO
21156 frontend library initialization environment variables(Thomas)
21157 Regression tests time zone automatically set with "setenv PGTZ PST8PDT"(Thomas)
21158 Add pg_description table for info on tables, columns, operators, types, and
21160 Increase 16 char limit on system table/index names to 32 characters(Bruce)
21161 Rename system indexes(Bruce)
21162 Add 'GERMAN' option to SET DATESTYLE(Thomas)
21163 Define an "ISO-style" timespan output format with "hh:mm:ss" fields(Thomas)
21164 Allow fractional values for delta times (e.g. '2.5 days')(Thomas)
21165 Validate numeric input more carefully for delta times(Thomas)
21166 Implement day of year as possible input to date_part()(Thomas)
21167 Define timespan_finite() and text_timespan() functions(Thomas)
21168 Remove archive stuff(Bruce)
21169 Allow for a pg_password authentication database that is separate from
21170 the system password file(Todd)
21171 Dump ACLs, GRANT, REVOKE privileges(Matt)
21172 Define text, varchar, and bpchar string length functions(Thomas)
21173 Fix Query handling for inheritance, and cost computations(Bruce)
21174 Implement CREATE TABLE/AS SELECT (alternative to SELECT/INTO)(Thomas)
21175 Allow NOT, IS NULL, IS NOT NULL in constraints(Thomas)
21176 Implement UNIONs for SELECT(Bruce)
21177 Add UNION, GROUP, DISTINCT to INSERT(Bruce)
21178 varchar() stores only necessary bytes on disk(Bruce)
21179 Fix for BLOBs(Peter)
21180 Mega-Patch for JDBC...see README_6.3 for list of changes(Peter)
21181 Remove unused "option" from PQconnectdb()
21182 New LOCK command and lock manual page describing deadlocks(Bruce)
21183 Add new psql \da, \dd, \df, \do, \dS, and \dT commands(Bruce)
21184 Enhance psql \z to show sequences(Bruce)
21185 Show NOT NULL and DEFAULT in psql \d table(Bruce)
21186 New psql .psqlrc file start-up(Andrew)
21187 Modify sample start-up script in contrib/linux to show syslog(Thomas)
21188 New types for IP and MAC addresses in contrib/ip_and_mac(TomH)
21189 Unix system time conversions with date/time types in contrib/unixdate(Thomas)
21190 Update of contrib stuff(Massimo)
21191 Add Unix socket support to DBD::Pg(Goran)
21192 New python interface (PyGreSQL 2.0)(D'Arcy)
21193 New frontend/backend protocol has a version number, network byte order(Phil)
21194 Security features in pg_hba.conf enhanced and documented, many cleanups(Phil)
21195 CHAR() now faster access than VARCHAR() or TEXT
21196 ecpg embedded SQL preprocessor
21197 Reduce system column overhead(Vadmin)
21198 Remove pg_time table(Vadim)
21199 Add pg_type attribute to identify types that need length (bpchar, varchar)
21200 Add report of offending line when COPY command fails
21201 Allow VIEW privileges to be set separately from the underlying tables.
21202 For security, use GRANT/REVOKE on views as appropriate(Jan)
21203 Tables now have no default GRANT SELECT TO PUBLIC. You must
21204 explicitly grant such privileges.
21205 Clean up tutorial examples(Darren)
21207 Source Tree Changes
21208 -------------------
21209 Add new html development tools, and flow chart in /tools/backend
21210 Fix for SCO compiles
21211 Stratus computer port Robert Gillies
21212 Added support for shlib for BSD44_derived & i386_solaris
21213 Make configure more automated(Brook)
21214 Add script to check regression test results
21215 Break parser functions into smaller files, group together(Bruce)
21216 Rename heap_create to heap_create_and_catalog, rename heap_creatr
21217 to heap_create()(Bruce)
21218 Sparc/Linux patch for locking(TomS)
21219 Remove PORTNAME and reorganize port-specific stuff(Marc)
21220 Add optimizer README file(Bruce)
21221 Remove some recursion in optimizer and clean up some code there(Bruce)
21222 Fix for NetBSD locking(Henry)
21223 Fix for libptcl make(Tatsuo)
21225 Change IS TRUE, IS FALSE, ... to expressions using "=" rather than
21226 function calls to istrue() or isfalse() to allow optimization(Thomas)
21227 Various fixes NetBSD/Sparc related(TomH)
21228 Alpha linux locking(Travis,Ryan)
21229 Change elog(WARN) to elog(ERROR)(Bruce)
21230 FAQ for FreeBSD(Marc)
21231 Bring in the PostODBC source tree as part of our standard distribution(Marc)
21232 A minor patch for HP/UX 10 vs 9(Stan)
21233 New pg_attribute.atttypmod for type-specific info like varchar length(Bruce)
21234 UnixWare patches(Billy)
21235 New i386 'lock' for spinlock asm(Billy)
21236 Support for multiplexed backends is removed
21237 Start an OpenBSD port
21239 Start a Cygnus port
21240 Add string functions to regression suite(Thomas)
21241 Expand a few function names formerly truncated to 16 characters(Thomas)
21242 Remove un-needed malloc() calls and replace with palloc()(Bruce)
21248 <sect1 id="release-6-2-1">
21249 <title>Release 6.2.1</title>
21252 <title>Release date</title>
21253 <simpara>1997-10-17</simpara>
21257 6.2.1 is a bug-fix and usability release on 6.2.
21265 Allow strings to span lines, per <acronym>SQL92</acronym>.
21271 Include example trigger function for inserting user names on table updates.
21278 This is a minor bug-fix release on 6.2.
21279 For upgrades from pre-6.2 systems, a full dump/reload is required.
21280 Refer to the 6.2 release notes for instructions.
21284 <title>Migration from version 6.2 to version 6.2.1</title>
21287 This is a minor bug-fix release. A dump/reload is not required from version 6.2,
21288 but is required from any release prior to 6.2.
21291 In upgrading from version 6.2, if you choose to dump/reload you will find that
21292 avg(money) is now calculated correctly. All other bug fixes take effect
21293 upon updating the executables.
21296 Another way to avoid dump/reload is to use the following SQL command
21297 from <command>psql</command> to update the existing system table:
21300 update pg_aggregate set aggfinalfn = 'cash_div_flt8'
21301 where aggname = 'avg' and aggbasetype = 790;
21305 This will need to be done to every existing database, including template1.
21310 <title>Changes</title>
21314 Allow TIME and TYPE column names(Thomas)
21315 Allow larger range of true/false as boolean values(Thomas)
21316 Support output of "now" and "current"(Thomas)
21317 Handle DEFAULT with INSERT of NULL properly(Vadim)
21318 Fix for relation reference counts problem in buffer manager(Vadim)
21319 Allow strings to span lines, like ANSI(Thomas)
21320 Fix for backward cursor with ORDER BY(Vadim)
21321 Fix avg(cash) computation(Thomas)
21322 Fix for specifying a column twice in ORDER/GROUP BY(Vadim)
21323 Documented new libpq function to return affected rows, PQcmdTuples(Bruce)
21324 Trigger function for inserting user names for INSERT/UPDATE(Brook Milligan)
21330 <sect1 id="release-6-2">
21331 <title>Release 6.2</title>
21334 <title>Release date</title>
21335 <simpara>1997-10-02</simpara>
21339 A dump/restore is required for those wishing to migrate data from
21340 previous releases of <productname>PostgreSQL</productname>.
21344 <title>Migration from version 6.1 to version 6.2</title>
21347 This migration requires a complete dump of the 6.1 database and a
21348 restore of the database in 6.2.
21351 Note that the <command>pg_dump</command> and <command>pg_dumpall</command> utility from 6.2 should be used
21352 to dump the 6.1 database.
21357 <title>Migration from version 1.<replaceable>x</> to version 6.2</title>
21360 Those migrating from earlier 1.* releases should first upgrade to 1.09
21361 because the COPY output format was improved from the 1.02 release.
21366 <title>Changes</title>
21372 Fix problems with pg_dump for inheritance, sequences, archive tables(Bruce)
21373 Fix compile errors on overflow due to shifts, unsigned, and bad prototypes
21374 from Solaris(Diab Jerius)
21375 Fix bugs in geometric line arithmetic (bad intersection calculations)(Thomas)
21376 Check for geometric intersections at endpoints to avoid rounding ugliness(Thomas)
21377 Catch non-functional delete attempts(Vadim)
21378 Change time function names to be more consistent(Michael Reifenberg)
21379 Check for zero divides(Michael Reifenberg)
21380 Fix very old bug which made rows changed/inserted by a command
21381 visible to the command itself (so we had multiple update of
21382 updated rows, etc.)(Vadim)
21383 Fix for SELECT null, 'fail' FROM pg_am (Patrick)
21384 SELECT NULL as EMPTY_FIELD now allowed(Patrick)
21385 Remove un-needed signal stuff from contrib/pginterface
21386 Fix OR (where x != 1 or x isnull didn't return rows with x NULL) (Vadim)
21387 Fix time_cmp function (Vadim)
21388 Fix handling of functions with non-attribute first argument in
21389 WHERE clauses (Vadim)
21390 Fix GROUP BY when order of entries is different from order
21391 in target list (Vadim)
21392 Fix pg_dump for aggregates without sfunc1 (Vadim)
21396 Default genetic optimizer GEQO parameter is now 8(Bruce)
21397 Allow use parameters in target list having aggregates in functions(Vadim)
21398 Added JDBC driver as an interface(Adrian & Peter)
21399 pg_password utility
21400 Return number of rows inserted/affected by INSERT/UPDATE/DELETE etc.(Vadim)
21401 Triggers implemented with CREATE TRIGGER (SQL3)(Vadim)
21402 SPI (Server Programming Interface) allows execution of queries inside
21403 C-functions (Vadim)
21404 NOT NULL implemented (SQL92)(Robson Paniago de Miranda)
21405 Include reserved words for string handling, outer joins, and unions(Thomas)
21406 Implement extended comments ("/* ... */") using exclusive states(Thomas)
21407 Add "//" single-line comments(Bruce)
21408 Remove some restrictions on characters in operator names(Thomas)
21409 DEFAULT and CONSTRAINT for tables implemented (SQL92)(Vadim & Thomas)
21410 Add text concatenation operator and function (SQL92)(Thomas)
21411 Support WITH TIME ZONE syntax (SQL92)(Thomas)
21412 Support INTERVAL unit TO unit syntax (SQL92)(Thomas)
21413 Define types DOUBLE PRECISION, INTERVAL, CHARACTER,
21414 and CHARACTER VARYING (SQL92)(Thomas)
21415 Define type FLOAT(p) and rudimentary DECIMAL(p,s), NUMERIC(p,s) (SQL92)(Thomas)
21416 Define EXTRACT(), POSITION(), SUBSTRING(), and TRIM() (SQL92)(Thomas)
21417 Define CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP (SQL92)(Thomas)
21418 Add syntax and warnings for UNION, HAVING, INNER and OUTER JOIN (SQL92)(Thomas)
21419 Add more reserved words, mostly for SQL92 compliance(Thomas)
21420 Allow hh:mm:ss time entry for timespan/reltime types(Thomas)
21421 Add center() routines for lseg, path, polygon(Thomas)
21422 Add distance() routines for circle-polygon, polygon-polygon(Thomas)
21423 Check explicitly for points and polygons contained within polygons
21424 using an axis-crossing algorithm(Thomas)
21425 Add routine to convert circle-box(Thomas)
21426 Merge conflicting operators for different geometric data types(Thomas)
21427 Replace distance operator "<===>" with "<->"(Thomas)
21428 Replace "above" operator "!^" with ">^" and "below" operator "!|" with "<^"(Thomas)
21429 Add routines for text trimming on both ends, substring, and string position(Thomas)
21430 Added conversion routines circle(box) and poly(circle)(Thomas)
21431 Allow internal sorts to be stored in memory rather than in files(Bruce & Vadim)
21432 Allow functions and operators on internally-identical types to succeed(Bruce)
21433 Speed up backend start-up after profiling analysis(Bruce)
21434 Inline frequently called functions for performance(Bruce)
21435 Reduce open() calls(Bruce)
21436 psql: Add PAGER for \h and \?,\C fix
21437 Fix for psql pager when no tty(Bruce)
21438 New entab utility(Bruce)
21439 General trigger functions for referential integrity (Vadim)
21440 General trigger functions for time travel (Vadim)
21441 General trigger functions for AUTOINCREMENT/IDENTITY feature (Vadim)
21442 MOVE implementation (Vadim)
21444 Source Tree Changes
21445 -------------------
21446 HP-UX 10 patches (Vladimir Turin)
21447 Added SCO support, (Daniel Harris)
21448 MkLinux patches (Tatsuo Ishii)
21449 Change geometric box terminology from "length" to "width"(Thomas)
21450 Deprecate temporary unstored slope fields in geometric code(Thomas)
21451 Remove restart instructions from INSTALL(Bruce)
21452 Look in /usr/ucb first for install(Bruce)
21453 Fix c++ copy example code(Thomas)
21454 Add -o to psql manual page(Bruce)
21455 Prevent relname unallocated string length from being copied into database(Bruce)
21456 Cleanup for NAMEDATALEN use(Bruce)
21457 Fix pg_proc names over 15 chars in output(Bruce)
21458 Add strNcpy() function(Bruce)
21459 remove some (void) casts that are unnecessary(Bruce)
21460 new interfaces directory(Marc)
21461 Replace fopen() calls with calls to fd.c functions(Bruce)
21462 Make functions static where possible(Bruce)
21463 enclose unused functions in #ifdef NOT_USED(Bruce)
21464 Remove call to difftime() in timestamp support to fix SunOS(Bruce & Thomas)
21465 Changes for Digital Unix
21466 Portability fix for pg_dumpall(Bruce)
21467 Rename pg_attribute.attnvals to attdispersion(Bruce)
21468 "intro/unix" manual page now "pgintro"(Bruce)
21469 "built-in" manual page now "pgbuiltin"(Bruce)
21470 "drop" manual page now "drop_table"(Bruce)
21471 Add "create_trigger", "drop_trigger" manual pages(Thomas)
21472 Add constraints regression test(Vadim & Thomas)
21473 Add comments syntax regression test(Thomas)
21474 Add PGINDENT and support program(Bruce)
21475 Massive commit to run PGINDENT on all *.c and *.h files(Bruce)
21476 Files moved to /src/tools directory(Bruce)
21477 SPI and Trigger programming guides (Vadim & D'Arcy)
21483 <sect1 id="release-6-1-1">
21484 <title>Release 6.1.1</title>
21487 <title>Release date</title>
21488 <simpara>1997-07-22</simpara>
21492 <title>Migration from version 6.1 to version 6.1.1</title>
21495 This is a minor bug-fix release. A dump/reload is not required from version 6.1,
21496 but is required from any release prior to 6.1.
21497 Refer to the release notes for 6.1 for more details.
21502 <title>Changes</title>
21506 fix for SET with options (Thomas)
21507 allow pg_dump/pg_dumpall to preserve ownership of all tables/objects(Bruce)
21508 new psql \connect option allows changing usernames without changing databases
21509 fix for initdb --debug option(Yoshihiko Ichikawa))
21510 lextest cleanup(Bruce)
21512 fix date/time month boundary arithmetic(Thomas)
21513 fix timezone daylight handling for some ports(Thomas, Bruce, Tatsuo)
21514 timestamp overhauled to use standard functions(Thomas)
21515 other code cleanup in date/time routines(Thomas)
21516 psql's \d now case-insensitive(Bruce)
21517 psql's backslash commands can now have trailing semicolon(Bruce)
21518 fix memory leak in psql when using \g(Bruce)
21519 major fix for endian handling of communication to server(Thomas, Tatsuo)
21520 Fix for Solaris assembler and include files(Yoshihiko Ichikawa)
21521 allow underscores in usernames(Bruce)
21522 pg_dumpall now returns proper status, portability fix(Bruce)
21528 <sect1 id="release-6-1">
21529 <title>Release 6.1</title>
21532 <title>Release date</title>
21533 <simpara>1997-06-08</simpara>
21537 The regression tests have been adapted and extensively modified for the
21538 6.1 release of <productname>PostgreSQL</productname>.
21542 Three new data types (<type>datetime</type>, <type>timespan</type>, and <type>circle</type>) have been added to
21543 the native set of <productname>PostgreSQL</productname> types. Points, boxes, paths, and polygons
21544 have had their output formats made consistent across the data types.
21545 The polygon output in misc.out has only been spot-checked for correctness
21546 relative to the original regression output.
21550 <productname>PostgreSQL</productname> 6.1 introduces a new, alternate
21551 optimizer which uses <firstterm>genetic</firstterm>
21552 algorithms. These algorithms introduce a random behavior in the ordering
21553 of query results when the query contains multiple qualifiers or multiple
21554 tables (giving the optimizer a choice on order of evaluation). Several
21555 regression tests have been modified to explicitly order the results, and
21556 hence are insensitive to optimizer choices. A few regression tests are
21557 for data types which are inherently unordered (e.g. points and time
21558 intervals) and tests involving those types are explicitly bracketed with
21559 <command>set geqo to 'off'</command> and <command>reset geqo</command>.
21563 The interpretation of array specifiers (the curly braces around atomic
21564 values) appears to have changed sometime after the original regression
21565 tests were generated. The current <filename>./expected/*.out</filename> files reflect this
21566 new interpretation, which might not be correct!
21570 The float8 regression test fails on at least some platforms. This is due
21571 to differences in implementations of <function>pow()</function> and <function>exp()</function> and the signaling
21572 mechanisms used for overflow and underflow conditions.
21576 The <quote>random</> results in the random test should cause the
21577 <quote>random</quote> test to be <quote>failed</quote>, since the
21578 regression tests are evaluated using a simple diff. However,
21579 <quote>random</> does not seem to produce random results on my test
21580 machine (Linux/<application>gcc</>/i686).
21584 <title>Migration to version 6.1</title>
21587 This migration requires a complete dump of the 6.0 database and a
21588 restore of the database in 6.1.
21591 Those migrating from earlier 1.* releases should first upgrade to 1.09
21592 because the COPY output format was improved from the 1.02 release.
21597 <title>Changes</title>
21603 packet length checking in library routines
21604 lock manager priority patch
21605 check for under/over flow of float8(Bruce)
21606 multitable join fix(Vadim)
21607 SIGPIPE crash fix(Darren)
21608 large object fixes(Sven)
21609 allow btree indexes to handle NULLs(Vadim)
21610 timezone fixes(D'Arcy)
21611 select SUM(x) can return NULL on no rows(Thomas)
21612 internal optimizer, executor bug fixes(Vadim)
21613 fix problem where inner loop in < or <= has no rows(Vadim)
21614 prevent re-commuting join index clauses(Vadim)
21615 fix join clauses for multiple tables(Vadim)
21616 fix hash, hashjoin for arrays(Vadim)
21617 fix btree for abstime type(Vadim)
21618 large object fixes(Raymond)
21619 fix buffer leak in hash indexes (Vadim)
21620 fix rtree for use in inner scan (Vadim)
21621 fix gist for use in inner scan, cleanups (Vadim, Andrea)
21622 avoid unnecessary local buffers allocation (Vadim, Massimo)
21623 fix local buffers leak in transaction aborts (Vadim)
21624 fix file manager memmory leaks, cleanups (Vadim, Massimo)
21625 fix storage manager memmory leaks (Vadim)
21626 fix btree duplicates handling (Vadim)
21627 fix deleted rows reincarnation caused by vacuum (Vadim)
21628 fix SELECT varchar()/char() INTO TABLE made zero-length fields(Bruce)
21629 many psql, pg_dump, and libpq memory leaks fixed using Purify (Igor)
21633 attribute optimization statistics(Bruce)
21634 much faster new btree bulk load code(Paul)
21635 BTREE UNIQUE added to bulk load code(Vadim)
21636 new lock debug code(Massimo)
21637 massive changes to libpg++(Leo)
21638 new GEQO optimizer speeds table multitable optimization(Martin)
21639 new WARN message for non-unique insert into unique key(Marc)
21640 update x=-3, no spaces, now valid(Bruce)
21641 remove case-sensitive identifier handling(Bruce,Thomas,Dan)
21642 debug backend now pretty-prints tree(Darren)
21643 new Oracle character functions(Edmund)
21644 new plaintext password functions(Dan)
21645 no such class or insufficient privilege changed to distinct messages(Dan)
21646 new ANSI timestamp function(Dan)
21647 new ANSI Time and Date types (Thomas)
21648 move large chunks of data in backend(Martin)
21649 multicolumn btree indexes(Vadim)
21650 new SET var TO value command(Martin)
21651 update transaction status on reads(Dan)
21652 new locale settings for character types(Oleg)
21653 new SEQUENCE serial number generator(Vadim)
21654 GROUP BY function now possible(Vadim)
21655 re-organize regression test(Thomas,Marc)
21656 new optimizer operation weights(Vadim)
21657 new psql \z grant/permit option(Marc)
21658 new MONEY data type(D'Arcy,Thomas)
21659 tcp socket communication speed improved(Vadim)
21660 new VACUUM option for attribute statistics, and for certain columns (Vadim)
21661 many geometric type improvements(Thomas,Keith)
21662 additional regression tests(Thomas)
21663 new datestyle variable(Thomas,Vadim,Martin)
21664 more comparison operators for sorting types(Thomas)
21665 new conversion functions(Thomas)
21666 new more compact btree format(Vadim)
21667 allow pg_dumpall to preserve database ownership(Bruce)
21668 new SET GEQO=# and R_PLANS variable(Vadim)
21669 old (!GEQO) optimizer can use right-sided plans (Vadim)
21670 typechecking improvement in SQL parser(Bruce)
21671 new SET, SHOW, RESET commands(Thomas,Vadim)
21672 new \connect database USER option
21673 new destroydb -i option (Igor)
21674 new \dt and \di psql commands (Darren)
21675 SELECT "\n" now escapes newline (A. Duursma)
21676 new geometry conversion functions from old format (Thomas)
21678 Source tree changes
21679 -------------------
21680 new configuration script(Marc)
21681 readline configuration option added(Marc)
21682 OS-specific configuration options removed(Marc)
21683 new OS-specific template files(Marc)
21684 no more need to edit Makefile.global(Marc)
21685 re-arrange include files(Marc)
21686 nextstep patches (Gregor Hoffleit)
21687 removed Windows-specific code(Bruce)
21688 removed postmaster -e option, now only postgres -e option (Bruce)
21689 merge duplicate library code in front/backends(Martin)
21690 now works with eBones, international Kerberos(Jun)
21691 more shared library support
21692 c++ include file cleanup(Bruce)
21693 warn about buggy flex(Bruce)
21694 DG/UX, Ultrix, IRIX, AIX portability fixes
21700 <sect1 id="release-6-0">
21701 <title>Release 6.0</title>
21704 <title>Release date</title>
21705 <simpara>1997-01-29</simpara>
21709 A dump/restore is required for those wishing to migrate data from
21710 previous releases of <productname>PostgreSQL</productname>.
21714 <title>Migration from version 1.09 to version 6.0</title>
21717 This migration requires a complete dump of the 1.09 database and a
21718 restore of the database in 6.0.
21723 <title>Migration from pre-1.09 to version 6.0</title>
21726 Those migrating from earlier 1.* releases should first upgrade to 1.09
21727 because the COPY output format was improved from the 1.02 release.
21732 <title>Changes</title>
21738 ALTER TABLE bug - running postgres process needs to re-read table definition
21739 Allow vacuum to be run on one table or entire database(Bruce)
21741 Fix array over-runs of memory writes(Kurt)
21742 Fix elusive btree range/non-range bug(Dan)
21743 Fix for hash indexes on some types like time and date
21744 Fix for pg_log size explosion
21745 Fix permissions on lo_export()(Bruce)
21746 Fix uninitialized reads of memory(Kurt)
21747 Fixed ALTER TABLE ... char(3) bug(Bruce)
21748 Fixed a few small memory leaks
21749 Fixed EXPLAIN handling of options and changed full_path option name
21750 Fixed output of group acl privileges
21751 Memory leaks (hunt and destroy with tools like Purify(Kurt)
21752 Minor improvements to rules system
21754 New asserts for run-checking
21755 Overhauled parser/analyze code to properly report errors and increase speed
21756 Pg_dump -d now handles NULL's properly(Bruce)
21757 Prevent SELECT NULL from crashing server (Bruce)
21758 Properly report errors when INSERT ... SELECT columns did not match
21759 Properly report errors when insert column names were not correct
21760 psql \g filename now works(Bruce)
21761 psql fixed problem with multiple statements on one line with multiple outputs
21762 Removed duplicate system OIDs
21763 SELECT * INTO TABLE . GROUP/ORDER BY gives unlink error if table exists(Bruce)
21764 Several fixes for queries that crashed the backend
21765 Starting quote in insert string errors(Bruce)
21766 Submitting an empty query now returns empty status, not just " " query(Bruce)
21770 Add EXPLAIN manual page(Bruce)
21771 Add UNIQUE index capability(Dan)
21772 Add hostname/user level access control rather than just hostname and user
21773 Add synonym of != for <>(Bruce)
21774 Allow "select oid,* from table"
21775 Allow BY,ORDER BY to specify columns by number, or by non-alias table.column(Bruce)
21776 Allow COPY from the frontend(Bryan)
21777 Allow GROUP BY to use alias column name(Bruce)
21778 Allow actual compression, not just reuse on the same page(Vadim)
21779 Allow installation-configuration option to auto-add all local users(Bryan)
21780 Allow libpq to distinguish between text value '' and null(Bruce)
21781 Allow non-postgres users with createdb privs to destroydb's
21782 Allow restriction on who can create C functions(Bryan)
21783 Allow restriction on who can do backend COPY(Bryan)
21784 Can shrink tables, pg_time and pg_log(Vadim & Erich)
21785 Change debug level 2 to print queries only, changed debug heading layout(Bruce)
21786 Change default decimal constant representation from float4 to float8(Bruce)
21787 European date format now set when postmaster is started
21788 Execute lowercase function names if not found with exact case
21789 Fixes for aggregate/GROUP processing, allow 'select sum(func(x),sum(x+y) from z'
21790 Gist now included in the distribution(Marc)
21791 Idend authentication of local users(Bryan)
21792 Implement BETWEEN qualifier(Bruce)
21793 Implement IN qualifier(Bruce)
21794 libpq has PQgetisnull()(Bruce)
21795 libpq++ improvements
21796 New options to initdb(Bryan)
21797 Pg_dump allow dump of OIDs(Bruce)
21798 Pg_dump create indexes after tables are loaded for speed(Bruce)
21799 Pg_dumpall dumps all databases, and the user table
21800 Pginterface additions for NULL values(Bruce)
21801 Prevent postmaster from being run as root
21802 psql \h and \? is now readable(Bruce)
21803 psql allow backslashed, semicolons anywhere on the line(Bruce)
21804 psql changed command prompt for lines in query or in quotes(Bruce)
21805 psql char(3) now displays as (bp)char in \d output(Bruce)
21806 psql return code now more accurate(Bryan?)
21807 psql updated help syntax(Bruce)
21808 Re-visit and fix vacuum(Vadim)
21809 Reduce size of regression diffs, remove timezone name difference(Bruce)
21810 Remove compile-time parameters to enable binary distributions(Bryan)
21811 Reverse meaning of HBA masks(Bryan)
21812 Secure Authentication of local users(Bryan)
21813 Speed up vacuum(Vadim)
21814 Vacuum now had VERBOSE option(Bruce)
21816 Source tree changes
21817 -------------------
21818 All functions now have prototypes that are compared against the calls
21819 Allow asserts to be disabled easily from Makefile.global(Bruce)
21820 Change oid constants used in code to #define names
21821 Decoupled sparc and solaris defines(Kurt)
21822 Gcc -Wall compiles cleanly with warnings only from unfixable constructs
21823 Major include file reorganization/reduction(Marc)
21824 Make now stops on compile failure(Bryan)
21825 Makefile restructuring(Bryan, Marc)
21826 Merge bsdi_2_1 to bsdi(Bruce)
21827 Monitor program removed
21828 Name change from Postgres95 to PostgreSQL
21829 New config.h file(Marc, Bryan)
21830 PG_VERSION now set to 6.0 and used by postmaster
21831 Portability additions, including Ultrix, DG/UX, AIX, and Solaris
21832 Reduced the number of #define's, centralized #define's
21833 Remove duplicate OIDS in system tables(Dan)
21834 Remove duplicate system catalog info or report mismatches(Dan)
21835 Removed many os-specific #define's
21836 Restructured object file generation/location(Bryan, Marc)
21837 Restructured port-specific file locations(Bryan, Marc)
21838 Unused/uninitialized variables corrected
21844 <sect1 id="release-1-09">
21845 <title>Release 1.09</title>
21848 <title>Release date</title>
21849 <simpara>1996-11-04</simpara>
21853 Sorry, we didn't keep track of changes from 1.02 to 1.09. Some of
21854 the changes listed in 6.0 were actually included in the 1.02.1 to 1.09
21859 <sect1 id="release-1-02">
21860 <title>Release 1.02</title>
21863 <title>Release date</title>
21864 <simpara>1996-08-01</simpara>
21868 <title>Migration from version 1.02 to version 1.02.1</title>
21871 Here is a new migration file for 1.02.1. It includes the 'copy' change
21872 and a script to convert old <acronym>ASCII</acronym> files.
21876 The following notes are for the benefit of users who want to migrate
21877 databases from <productname>Postgres95</> 1.01 and 1.02 to <productname>Postgres95</> 1.02.1.
21880 If you are starting afresh with <productname>Postgres95</> 1.02.1 and do not need
21881 to migrate old databases, you do not need to read any further.
21886 In order to upgrade older <productname>Postgres95</> version 1.01 or 1.02 databases to
21887 version 1.02.1, the following steps are required:
21892 Start up a new 1.02.1 postmaster
21897 Add the new built-in functions and operators of 1.02.1 to 1.01 or 1.02
21898 databases. This is done by running the new 1.02.1 server against
21899 your own 1.01 or 1.02 database and applying the queries attached at
21900 the end of the file. This can be done easily through <command>psql</>. If your
21901 1.01 or 1.02 database is named <literal>testdb</literal> and you have cut the commands
21902 from the end of this file and saved them in <filename>addfunc.sql</filename>:
21904 % psql testdb -f addfunc.sql
21907 Those upgrading 1.02 databases will get a warning when executing the
21908 last two statements in the file because they are already present in 1.02. This is
21909 not a cause for concern.
21916 <title>Dump/Reload Procedure</title>
21919 If you are trying to reload a pg_dump or text-mode, <literal>copy tablename to
21920 stdout</literal> generated with a previous version, you will need to run the
21921 attached <command>sed</command> script on the ASCII file before loading it into the
21922 database. The old format used '.' as end-of-data, while '\.' is now the
21923 end-of-data marker. Also, empty strings are now loaded in as '' rather
21924 than NULL. See the copy manual page for full details.
21927 sed 's/^\.$/\\./g' <in_file >out_file
21931 If you are loading an older binary copy or non-<systemitem>stdout</> copy, there is no
21932 end-of-data character, and hence no conversion necessary.
21935 -- following lines added by agc to reflect the case-insensitive
21936 -- regexp searching for varchar (in 1.02), and bpchar (in 1.02.1)
21937 create operator ~* (leftarg = bpchar, rightarg = text, procedure = texticregexeq);
21938 create operator !~* (leftarg = bpchar, rightarg = text, procedure = texticregexne);
21939 create operator ~* (leftarg = varchar, rightarg = text, procedure = texticregexeq);
21940 create operator !~* (leftarg = varchar, rightarg = text, procedure = texticregexne);
21946 <title>Changes</title>
21950 Source code maintenance and development
21951 * worldwide team of volunteers
21952 * the source tree now in CVS at ftp.ki.net
21955 * psql (and underlying libpq library) now has many more options for
21956 formatting output, including HTML
21957 * pg_dump now output the schema and/or the data, with many fixes to
21958 enhance completeness.
21959 * psql used in place of monitor in administration shell scripts.
21960 monitor to be deprecated in next release.
21961 * date/time functions enhanced
21962 * NULL insert/update/comparison fixed/enhanced
21963 * TCL/TK lib and shell fixed to work with both tck7.4/tk4.0 and tcl7.5/tk4.1
21965 Bug Fixes (almost too numerous to mention)
21967 * storage management
21968 * check for NULL pointer before dereferencing
21972 * added SolarisX86 port
21973 * added BSD/OS 2.1 port
21978 Contributors (apologies to any missed)
21979 * Kurt J. Lidl <lidl@va.pubnix.com>
21980 (missed in first run, but no less important)
21981 * Erich Stamberger <eberger@gewi.kfunigraz.ac.at>
21982 * Jason Wright <jason@shiloh.vnet.net>
21983 * Cees de Groot <C.deGroot@inter.NL.net>
21984 * ernst.molitor@uni-bonn.de
21985 * michael.siebenborn@ae3.Hypo.DE (Michael Siebenborn (6929))
21986 * Brian E. Gallew <geek+@cmu.edu>
21987 * Vadim B. Mikheev <vadim@sable.krasnoyarsk.su>
21988 * Adam Sussman <myddryn@vidya.com>
21989 * Chris Dunlop <chris@onthe.net.au>
21990 * Marc G. Fournier <scrappy@ki.net>
21991 * Dan McGuirk <mcguirk@indirect.com>
21992 * Dr_George_D_Detlefsen <drgeorge@ilt.com>
21993 * Erich Stamberger <eberger@gewi.kfunigraz.ac.at>
21994 * Massimo Dal Zotto <dz@cs.unitn.it>
21995 * Randy Kunkee <kunkee@Starbase.NeoSoft.COM>
21996 * Rick Weldon <rick@wisetech.com>
21997 * Thomas van Reimersdahl <reimersd@dali.techinfo.rwth-aachen.de>
21998 * david bennett <dave@bensoft.com>
21999 * ernst.molitor@uni-bonn.de
22000 * Julian Assange <proff@suburbia.net>
22001 * Bruce Momjian <pgman@candle.pha.pa.us>
22002 * Paul "Shag" Walmsley <ccshag@cclabs.missouri.edu>
22003 * "Alistair G. Crooks" <azcb0@sde.uts.amdahl.com>
22008 <sect1 id="release-1-01">
22009 <title>Release 1.01</title>
22012 <title>Release date</title>
22013 <simpara>1996-02-23</simpara>
22018 <title>Migration from version 1.0 to version 1.01</title>
22021 The following notes are for the benefit of users who want to migrate
22022 databases from <productname>Postgres95</> 1.0 to <productname>Postgres95</> 1.01.
22025 If you are starting afresh with <productname>Postgres95</> 1.01 and do not need
22026 to migrate old databases, you do not need to read any further.
22029 In order to <productname>Postgres95</> version 1.01 with databases created with
22030 <productname>Postgres95</> version 1.0, the following steps are required:
22035 Set the definition of <symbol>NAMEDATALEN</symbol> in <filename>src/Makefile.global</filename> to 16
22036 and <symbol>OIDNAMELEN</symbol> to 20.
22041 Decide whether you want to use Host based authentication.
22046 If you do, you must create a file name <literal>pg_hba</literal> in your top-level data
22047 directory (typically the value of your <envar>$PGDATA</envar>). <filename>src/libpq/pg_hba</filename>
22048 shows an example syntax.
22053 If you do not want host-based authentication, you can comment out
22058 in <filename>src/Makefile.global</filename>
22061 Note that host-based authentication is turned on by default, and if
22062 you do not take steps A or B above, the out-of-the-box 1.01 will
22063 not allow you to connect to 1.0 databases.
22071 Compile and install 1.01, but DO NOT do the <command>initdb</command> step.
22076 Before doing anything else, terminate your 1.0 postmaster, and
22077 backup your existing <envar>$PGDATA</envar> directory.
22082 Set your <envar>PGDATA</envar> environment variable to your 1.0 databases, but set up
22083 path up so that 1.01 binaries are being used.
22088 Modify the file <filename><envar>$PGDATA</envar>/PG_VERSION</filename> from 5.0 to 5.1
22093 Start up a new 1.01 postmaster
22098 Add the new built-in functions and operators of 1.01 to 1.0
22099 databases. This is done by running the new 1.01 server against
22100 your own 1.0 database and applying the queries attached and saving
22101 in the file 1.0_to_1.01.sql. This can be done easily through <command>psql</command>.
22102 If your 1.0 database is name <literal>testdb</literal>:
22105 % psql testdb -f 1.0_to_1.01.sql
22108 and then execute the following commands (cut and paste from here):
22111 -- add builtin functions that are new to 1.01
22113 create function int4eqoid (int4, oid) returns bool as 'foo'
22114 language 'internal';
22115 create function oideqint4 (oid, int4) returns bool as 'foo'
22116 language 'internal';
22117 create function char2icregexeq (char2, text) returns bool as 'foo'
22118 language 'internal';
22119 create function char2icregexne (char2, text) returns bool as 'foo'
22120 language 'internal';
22121 create function char4icregexeq (char4, text) returns bool as 'foo'
22122 language 'internal';
22123 create function char4icregexne (char4, text) returns bool as 'foo'
22124 language 'internal';
22125 create function char8icregexeq (char8, text) returns bool as 'foo'
22126 language 'internal';
22127 create function char8icregexne (char8, text) returns bool as 'foo'
22128 language 'internal';
22129 create function char16icregexeq (char16, text) returns bool as 'foo'
22130 language 'internal';
22131 create function char16icregexne (char16, text) returns bool as 'foo'
22132 language 'internal';
22133 create function texticregexeq (text, text) returns bool as 'foo'
22134 language 'internal';
22135 create function texticregexne (text, text) returns bool as 'foo'
22136 language 'internal';
22138 -- add builtin functions that are new to 1.01
22140 create operator = (leftarg = int4, rightarg = oid, procedure = int4eqoid);
22141 create operator = (leftarg = oid, rightarg = int4, procedure = oideqint4);
22142 create operator ~* (leftarg = char2, rightarg = text, procedure = char2icregexeq);
22143 create operator !~* (leftarg = char2, rightarg = text, procedure = char2icregexne);
22144 create operator ~* (leftarg = char4, rightarg = text, procedure = char4icregexeq);
22145 create operator !~* (leftarg = char4, rightarg = text, procedure = char4icregexne);
22146 create operator ~* (leftarg = char8, rightarg = text, procedure = char8icregexeq);
22147 create operator !~* (leftarg = char8, rightarg = text, procedure = char8icregexne);
22148 create operator ~* (leftarg = char16, rightarg = text, procedure = char16icregexeq);
22149 create operator !~* (leftarg = char16, rightarg = text, procedure = char16icregexne);
22150 create operator ~* (leftarg = text, rightarg = text, procedure = texticregexeq);
22151 create operator !~* (leftarg = text, rightarg = text, procedure = texticregexne);
22159 <title>Changes</title>
22164 * 1.01 is backwards compatible with 1.0 database provided the user
22165 follow the steps outlined in the MIGRATION_from_1.0_to_1.01 file.
22166 If those steps are not taken, 1.01 is not compatible with 1.0 database.
22169 * added PQdisplayTuples() to libpq and changed monitor and psql to use it
22170 * added NeXT port (requires SysVIPC implementation)
22171 * added CAST .. AS ... syntax
22172 * added ASC and DESC key words
22173 * added 'internal' as a possible language for CREATE FUNCTION
22174 internal functions are C functions which have been statically linked
22175 into the postgres backend.
22176 * a new type "name" has been added for system identifiers (table names,
22177 attribute names, etc.) This replaces the old char16 type. The
22178 of name is set by the NAMEDATALEN #define in src/Makefile.global
22179 * a readable reference manual that describes the query language.
22180 * added host-based access control. A configuration file ($PGDATA/pg_hba)
22181 is used to hold the configuration data. If host-based access control
22182 is not desired, comment out HBA=1 in src/Makefile.global.
22183 * changed regex handling to be uniform use of Henry Spencer's regex code
22184 regardless of platform. The regex code is included in the distribution
22185 * added functions and operators for case-insensitive regular expressions.
22186 The operators are ~* and !~*.
22187 * pg_dump uses COPY instead of SELECT loop for better performance
22190 * fixed an optimizer bug that was causing core dumps when
22191 functions calls were used in comparisons in the WHERE clause
22192 * changed all uses of getuid to geteuid so that effective uids are used
22193 * psql now returns non-zero status on errors when using -c
22194 * applied public patches 1-14
22200 <sect1 id="release-1-0">
22201 <title>Release 1.0</title>
22204 <title>Release date</title>
22205 <simpara>1995-09-05</simpara>
22209 <title>Changes</title>
22214 * The copyright of <productname>Postgres</productname> 1.0 has been loosened to be freely modifiable
22215 and modifiable for any purpose. Please read the COPYRIGHT file.
22216 Thanks to Professor Michael Stonebraker for making this possible.
22219 * date formats have to be MM-DD-YYYY (or DD-MM-YYYY if you're using
22220 EUROPEAN STYLE). This follows SQL-92 specs.
22221 * "delimiters" is now a key word
22224 * sql LIKE syntax has been added
22225 * copy command now takes an optional USING DELIMITER specification.
22226 delimiters can be any single-character string.
22227 * IRIX 5.3 port has been added.
22228 Thanks to Paul Walmsley and others.
22229 * updated pg_dump to work with new libpq
22230 * \d has been added psql
22231 Thanks to Keith Parks
22232 * regexp performance for architectures that use POSIX regex has been
22233 improved due to caching of precompiled patterns.
22234 Thanks to Alistair Crooks
22235 * a new version of libpq++
22236 Thanks to William Wanders
22239 * arbitrary userids can be specified in the createuser script
22240 * \c to connect to other databases in psql now works.
22241 * bad pg_proc entry for float4inc() is fixed
22242 * users with usecreatedb field set can now create databases without
22243 having to be usesuper
22244 * remove access control entries when the entry no longer has any
22246 * fixed non-portable datetimes implementation
22247 * added kerberos flags to the src/backend/Makefile
22248 * libpq now works with kerberos
22249 * typographic errors in the user manual have been corrected.
22250 * btrees with multiple index never worked, now we tell you they don't
22251 work when you try to use them
22257 <sect1 id="release-0-03">
22258 <title><productname>Postgres95</productname> Release 0.03</title>
22261 <title>Release date</title>
22262 <simpara>1995-07-21</simpara>
22266 <title>Changes</title>
22269 Incompatible changes:
22270 * BETA-0.3 IS INCOMPATIBLE WITH DATABASES CREATED WITH PREVIOUS VERSIONS
22271 (due to system catalog changes and indexing structure changes).
22272 * double-quote (") is deprecated as a quoting character for string literals;
22273 you need to convert them to single quotes ('). <!-- " -->
22274 * name of aggregates (eg. int4sum) are renamed in accordance with the
22275 SQL standard (eg. sum).
22276 * CHANGE ACL syntax is replaced by GRANT/REVOKE syntax.
22277 * float literals (eg. 3.14) are now of type float4 (instead of float8 in
22278 previous releases); you might have to do typecasting if you depend on it
22279 being of type float8. If you neglect to do the typecasting and you assign
22280 a float literal to a field of type float8, you might get incorrect values
22282 * LIBPQ has been totally revamped so that frontend applications
22283 can connect to multiple backends
22284 * the usesysid field in pg_user has been changed from int2 to int4 to
22285 allow wider range of Unix user ids.
22286 * the netbsd/freebsd/bsd o/s ports have been consolidated into a
22287 single BSD44_derived port. (thanks to Alistair Crooks)
22289 SQL standard-compliance (the following details changes that makes postgres95
22290 more compliant to the SQL-92 standard):
22291 * the following SQL types are now built-in: smallint, int(eger), float, real,
22292 char(N), varchar(N), date and time.
22294 The following are aliases to existing postgres types:
22295 smallint -> int2
22296 integer, int -> int4
22297 float, real -> float4
22298 char(N) and varchar(N) are implemented as truncated text types. In
22299 addition, char(N) does blank-padding.
22300 * single-quote (') is used for quoting string literals; '' (in addition to
22301 \') is supported as means of inserting a single quote in a string
22302 * SQL standard aggregate names (MAX, MIN, AVG, SUM, COUNT) are used
22303 (Also, aggregates can now be overloaded, i.e. you can define your
22304 own MAX aggregate to take in a user-defined type.)
22305 * CHANGE ACL removed. GRANT/REVOKE syntax added.
22306 - Privileges can be given to a group using the "GROUP" key word.
22308 GRANT SELECT ON foobar TO GROUP my_group;
22309 The key word 'PUBLIC' is also supported to mean all users.
22311 Privileges can only be granted or revoked to one user or group
22314 "WITH GRANT OPTION" is not supported. Only class owners can change
22316 - The default access control is to grant users readonly access.
22317 You must explicitly grant insert/update access to users. To change
22318 this, modify the line in
22319 src/backend/utils/acl.h
22320 that defines ACL_WORLD_DEFAULT
22323 * the bug where aggregates of empty tables were not run has been fixed. Now,
22324 aggregates run on empty tables will return the initial conditions of the
22325 aggregates. Thus, COUNT of an empty table will now properly return 0.
22326 MAX/MIN of an empty table will return a row of value NULL.
22327 * allow the use of \; inside the monitor
22328 * the LISTEN/NOTIFY asynchronous notification mechanism now work
22329 * NOTIFY in rule action bodies now work
22330 * hash indexes work, and access methods in general should perform better.
22331 creation of large btree indexes should be much faster. (thanks to Paul
22334 Other changes and enhancements:
22335 * addition of an EXPLAIN statement used for explaining the query execution
22336 plan (eg. "EXPLAIN SELECT * FROM EMP" prints out the execution plan for
22338 * WARN and NOTICE messages no longer have timestamps on them. To turn on
22339 timestamps of error messages, uncomment the line in
22340 src/backend/utils/elog.h:
22341 /* define ELOG_TIMESTAMPS */
22342 * On an access control violation, the message
22343 "Either no such class or insufficient privilege"
22344 will be given. This is the same message that is returned when
22345 a class is not found. This dissuades non-privileged users from
22346 guessing the existence of privileged classes.
22347 * some additional system catalog changes have been made that are not
22348 visible to the user.
22351 * The -oid option has been added to the "pg_result" tcl command.
22352 pg_result -oid returns oid of the last row inserted. If the
22353 last command was not an INSERT, then pg_result -oid returns "".
22354 * the large object interface is available as pg_lo* tcl commands:
22355 pg_lo_open, pg_lo_close, pg_lo_creat, etc.
22357 Portability enhancements and New Ports:
22358 * flex/lex problems have been cleared up. Now, you should be able to use
22359 flex instead of lex on any platforms. We no longer make assumptions of
22360 what lexer you use based on the platform you use.
22361 * The Linux-ELF port is now supported. Various configuration have been
22362 tested: The following configuration is known to work:
22363 kernel 1.2.10, gcc 2.6.3, libc 4.7.2, flex 2.5.2, bison 1.24
22364 with everything in ELF format,
22367 * ipcclean added to the distribution
22368 ipcclean usually does not need to be run, but if your backend crashes
22369 and leaves shared memory segments hanging around, ipcclean will
22370 clean them up for you.
22373 * the user manual has been revised and libpq documentation added.
22379 <sect1 id="release-0-02">
22380 <title><productname>Postgres95</productname> Release 0.02</title>
22383 <title>Release date</title>
22384 <simpara>1995-05-25</simpara>
22388 <title>Changes</title>
22392 Incompatible changes:
22393 * The SQL statement for creating a database is 'CREATE DATABASE' instead
22394 of 'CREATEDB'. Similarly, dropping a database is 'DROP DATABASE' instead
22395 of 'DESTROYDB'. However, the names of the executables 'createdb' and
22396 'destroydb' remain the same.
22399 * pgperl - a Perl (4.036) interface to Postgres95
22400 * pg_dump - a utility for dumping out a postgres database into a
22401 script file containing query commands. The script files are in a ASCII
22402 format and can be used to reconstruct the database, even on other
22403 machines and other architectures. (Also good for converting
22404 a Postgres 4.2 database to Postgres95 database.)
22406 The following ports have been incorporated into postgres95-beta-0.02:
22407 * the NetBSD port by Alistair Crooks
22408 * the AIX port by Mike Tung
22409 * the Windows NT port by Jon Forrest (more stuff but not done yet)
22410 * the Linux ELF port by Brian Gallew
22412 The following bugs have been fixed in postgres95-beta-0.02:
22413 * new lines not escaped in COPY OUT and problem with COPY OUT when first
22415 * cannot type return to use the default user id in createuser
22416 * SELECT DISTINCT on big tables crashes
22417 * Linux installation problems
22418 * monitor doesn't allow use of 'localhost' as PGHOST
22419 * psql core dumps when doing \c or \l
22420 * the "pgtclsh" target missing from src/bin/pgtclsh/Makefile
22421 * libpgtcl has a hard-wired default port number
22422 * SELECT DISTINCT INTO TABLE hangs
22423 * CREATE TYPE doesn't accept 'variable' as the internallength
22424 * wrong result using more than 1 aggregate in a SELECT
22430 <sect1 id="release-0-01">
22431 <title><productname>Postgres95</productname> Release 0.01</title>
22434 <title>Release date</title>
22435 <simpara>1995-05-01</simpara>
22444 <sect1 id="timing-results">
22445 <title>Timing Results</title>
22448 These timing results are from running the regression test with the commands
22451 % cd src/test/regress
22453 % time make runtest
22457 Timing under Linux 2.0.27 seems to have a roughly 5% variation from run
22458 to run, presumably due to the scheduling vagaries of multitasking systems.
22462 <title>Version 6.5</title>
22465 As has been the case for previous releases, timing between
22466 releases is not directly comparable since new regression tests
22467 have been added. In general, 6.5 is faster than previous
22472 Timing with <function>fsync()</function> disabled:
22476 02:00 Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486
22477 04:38 Sparc Ultra 1 143MHz, 64MB, Solaris 2.6
22482 Timing with <function>fsync()</function> enabled:
22486 04:21 Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486
22489 For the <systemitem class="osname">Linux</systemitem> system above, using <acronym>UW-SCSI</acronym> disks rather than (older) <acronym>IDE</acronym>
22490 disks leads to a 50% improvement in speed on the regression test.
22495 <title>Version 6.4beta</title>
22498 The times for this release are not directly comparable to those for previous releases
22499 since some additional regression tests have been included.
22500 In general, however, 6.4 should be slightly faster than the previous release (thanks, Bruce!).
22505 02:26 Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
22511 <title>Version 6.3</title>
22514 The times for this release are not directly comparable to those for previous releases
22515 since some additional regression tests have been included and some obsolete tests involving
22516 time travel have been removed.
22517 In general, however, 6.3 is substantially faster than previous releases (thanks, Bruce!).
22522 02:30 Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
22523 04:12 Dual Pentium Pro 180, 96MB, EIDE, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
22529 <title>Version 6.1</title>
22534 06:12 Pentium Pro 180, 32MB, EIDE, Linux 2.0.30, gcc 2.7.2 -O2 -m486
22535 12:06 P-100, 48MB, Linux 2.0.29, gcc
22536 39:58 Sparc IPC 32MB, Solaris 2.5, gcc 2.7.2.1 -O -g