Commit Graph

  • 5e95fc0c8b Pl/pgsql MOVE done: Bruce Momjian 2007-04-29 06:48:11 +00:00
  • 8690ebc26f Support for MOVE in PL/PgSQL. Initial patch from Magnus, some improvements by Pavel Stehule, and reviewed by Neil Conway. Neil Conway 2007-04-29 01:21:09 +00:00
  • f2321a3f37 Add support for IN as alternative to FROM in PL/PgSQL's FETCH statement, for consistency with the backend's FETCH command. Patch from Pavel Stehule, reviewed by Neil Conway. Neil Conway 2007-04-28 23:54:59 +00:00
  • bbbe825f5f Modify processing of DECLARE CURSOR and EXPLAIN so that they can resolve the types of unspecified parameters when submitted via extended query protocol. This worked in 8.2 but I had broken it during plancache changes. DECLARE CURSOR is now treated almost exactly like a plain SELECT through parse analysis, rewrite, and planning; only just before sending to the executor do we divert it away to ProcessUtility. This requires a special-case check in a number of places, but practically all of them were already special-casing SELECT INTO, so it's not too ugly. (Maybe it would be a good idea to merge the two by treating IntoClause as a form of utility statement? Not going to worry about that now, though.) That approach doesn't work for EXPLAIN, however, so for that I punted and used a klugy solution of running parse analysis an extra time if under extended query protocol. Tom Lane 2007-04-27 22:05:49 +00:00
  • a264671116 Remove no-longer-true statement from the docs. Since the default config now enables row-level stats, the out of the box stats volume is no longer particularly low. Neil Conway 2007-04-27 20:08:43 +00:00
  • 6cc02136a4 Properly set MODULE_PATHNAME based on module name instead of incorrectly based on directory name. Fixes the generation of .sql files in contrib/spi. Magnus Hagander 2007-04-27 16:45:54 +00:00
  • 56680bae08 Removed non-existant function from extern.h Michael Meskes 2007-04-27 07:55:28 +00:00
  • 9c35b136f1 Removed non-existant function from extern.h Michael Meskes 2007-04-27 07:55:22 +00:00
  • 85a3fce996 Removed non-existant function from extern.h Michael Meskes 2007-04-27 07:55:14 +00:00
  • 72e6a18813 Inlined two functions to get rid of va_list prolems on some archs. Michael Meskes 2007-04-27 06:58:24 +00:00
  • 1b87b4474f Inlined two functions to get rid of va_list prolems on some archs. Michael Meskes 2007-04-27 06:58:17 +00:00
  • c8577c6c7f Inlined two functions to get rid of va_list problems on some archs. Michael Meskes 2007-04-27 06:56:11 +00:00
  • 2d91f676b0 Fix dynahash.c to suppress hash bucket splits while a hash_seq_search() scan is in progress on the same hashtable. This seems the least invasive way to fix the recently-recognized problem that a split could cause the scan to visit entries twice or (with much lower probability) miss them entirely. The only field-reported problem caused by this is the "failed to re-find shared lock object" PANIC in COMMIT PREPARED reported by Michel Dorochevsky, which was caused by multiply visited entries. However, it seems certain that mdsync() is vulnerable to missing required fsync's due to missed entries, and I am fearful that RelationCacheInitializePhase2() might be at risk as well. Because of that and the generalized hazard presented by this bug, back-patch all the supported branches. Tom Lane 2007-04-26 23:25:48 +00:00
  • 8dcc675d88 Fix dynahash.c to suppress hash bucket splits while a hash_seq_search() scan is in progress on the same hashtable. This seems the least invasive way to fix the recently-recognized problem that a split could cause the scan to visit entries twice or (with much lower probability) miss them entirely. The only field-reported problem caused by this is the "failed to re-find shared lock object" PANIC in COMMIT PREPARED reported by Michel Dorochevsky, which was caused by multiply visited entries. However, it seems certain that mdsync() is vulnerable to missing required fsync's due to missed entries, and I am fearful that RelationCacheInitializePhase2() might be at risk as well. Because of that and the generalized hazard presented by this bug, back-patch all the supported branches. Tom Lane 2007-04-26 23:25:41 +00:00
  • 2e8a8eabcf Fix dynahash.c to suppress hash bucket splits while a hash_seq_search() scan is in progress on the same hashtable. This seems the least invasive way to fix the recently-recognized problem that a split could cause the scan to visit entries twice or (with much lower probability) miss them entirely. The only field-reported problem caused by this is the "failed to re-find shared lock object" PANIC in COMMIT PREPARED reported by Michel Dorochevsky, which was caused by multiply visited entries. However, it seems certain that mdsync() is vulnerable to missing required fsync's due to missed entries, and I am fearful that RelationCacheInitializePhase2() might be at risk as well. Because of that and the generalized hazard presented by this bug, back-patch all the supported branches. Tom Lane 2007-04-26 23:25:30 +00:00
  • ca27e5ec4c Fix dynahash.c to suppress hash bucket splits while a hash_seq_search() scan is in progress on the same hashtable. This seems the least invasive way to fix the recently-recognized problem that a split could cause the scan to visit entries twice or (with much lower probability) miss them entirely. The only field-reported problem caused by this is the "failed to re-find shared lock object" PANIC in COMMIT PREPARED reported by Michel Dorochevsky, which was caused by multiply visited entries. However, it seems certain that mdsync() is vulnerable to missing required fsync's due to missed entries, and I am fearful that RelationCacheInitializePhase2() might be at risk as well. Because of that and the generalized hazard presented by this bug, back-patch all the supported branches. Tom Lane 2007-04-26 23:25:09 +00:00
  • b26329654e Fix dynahash.c to suppress hash bucket splits while a hash_seq_search() scan is in progress on the same hashtable. This seems the least invasive way to fix the recently-recognized problem that a split could cause the scan to visit entries twice or (with much lower probability) miss them entirely. The only field-reported problem caused by this is the "failed to re-find shared lock object" PANIC in COMMIT PREPARED reported by Michel Dorochevsky, which was caused by multiply visited entries. However, it seems certain that mdsync() is vulnerable to missing required fsync's due to missed entries, and I am fearful that RelationCacheInitializePhase2() might be at risk as well. Because of that and the generalized hazard presented by this bug, back-patch all the supported branches. Tom Lane 2007-04-26 23:24:57 +00:00
  • a2e923a652 Fix dynahash.c to suppress hash bucket splits while a hash_seq_search() scan is in progress on the same hashtable. This seems the least invasive way to fix the recently-recognized problem that a split could cause the scan to visit entries twice or (with much lower probability) miss them entirely. The only field-reported problem caused by this is the "failed to re-find shared lock object" PANIC in COMMIT PREPARED reported by Michel Dorochevsky, which was caused by multiply visited entries. However, it seems certain that mdsync() is vulnerable to missing required fsync's due to missed entries, and I am fearful that RelationCacheInitializePhase2() might be at risk as well. Because of that and the generalized hazard presented by this bug, back-patch all the supported branches. Tom Lane 2007-04-26 23:24:46 +00:00
  • 8e90c54480 Another tweak for tab completion of CREATE TEMP. Instead of only completing CREATE { TEMP | TEMPORARY } TABLE, we should also suggest VIEW and SEQUENCE. Per Greg Sabino Mullane. Neil Conway 2007-04-26 22:25:56 +00:00
  • 16fb5da730 Consistency tweaks for a table in the SGML docs: we don't terminate table entries describing functions with periods. Neil Conway 2007-04-26 22:10:54 +00:00
  • 9475aa917d Minor enhancement to psql tab completion. If we see "CREATE TEMPORARY", we can complete "TABLE". The previous coding only looked for "CREATE TEMP". Neil Conway 2007-04-26 18:10:28 +00:00
  • c765ca2482 Minor tweak for DISCARD ref page. Neil Conway 2007-04-26 18:00:24 +00:00
  • 16efdb5ec7 Rename the newly-added commands for discarding session state. RESET SESSION, RESET PLANS, and RESET TEMP are now DISCARD ALL, DISCARD PLANS, and DISCARD TEMP, respectively. This is to avoid confusion with the pre-existing RESET variants: the DISCARD commands are not actually similar to RESET. Patch from Marko Kreen, with some minor editorialization. Neil Conway 2007-04-26 16:13:15 +00:00
  • 5ea27a4b28 libpgtypes is a client lib, should not link with backend. Magnus Hagander 2007-04-26 14:09:12 +00:00
  • 2d7f4f2220 Generate "fake configure output" for pg_config, so that external builds like Slony can figure out which options were enabled in the build. Magnus Hagander 2007-04-26 10:36:47 +00:00
  • 85904e0d36 Minor consistency tweak for SGML docs. Neil Conway 2007-04-25 19:48:27 +00:00
  • 6792b4bba3 Install libpgport.lib as needed by some client programs. Magnus Hagander 2007-04-25 19:00:05 +00:00
  • 9295463087 Install headers in the same directory structure as Mingw. Magnus Hagander 2007-04-25 18:58:33 +00:00
  • 197ca8f83e Remove tabs from installation.sgml. Bruce Momjian 2007-04-25 13:01:41 +00:00
  • fad9fb1d83 Update Japanese FAQs. Bruce Momjian 2007-04-25 01:31:01 +00:00
  • f63afbe8d4 Fix typo. Bruce Momjian 2007-04-24 21:29:42 +00:00
  • 2a2e6d3f0f Update FAQ item: Bruce Momjian 2007-04-24 21:28:54 +00:00
  • 3f92fd6524 Set maximum semaphore count to 32767 instead of 1. Fixes errorcode 298 when unlocking a semaphore more than once. Magnus Hagander 2007-04-24 12:25:23 +00:00
  • 93dc5a234e Set maximum semaphore count to 32767 instead of 1. Fixes errorcode 298 when unlocking a semaphore more than once. Magnus Hagander 2007-04-24 12:25:18 +00:00
  • 152b77aa3d Don't try to install uuid-ossp since we don't build it. Magnus Hagander 2007-04-23 17:18:58 +00:00
  • a8ac5f7626 Fix newly-introduced documentation typo. Neil Conway 2007-04-23 16:53:15 +00:00
  • 414d0d1ecf Fix newly-introduced documentation typo. Neil Conway 2007-04-23 16:53:13 +00:00
  • d221ef7bdf Fix newly-introduced documentation typo. Neil Conway 2007-04-23 16:53:09 +00:00
  • a99381619e Fix newly-introduced documentation typo. Neil Conway 2007-04-23 16:52:58 +00:00
  • 6d0e96df6f Fix newly-introduced documentation typo. Neil Conway 2007-04-23 16:52:56 +00:00
  • 24236db193 Fix newly-introduced documentation typo. Neil Conway 2007-04-23 16:52:53 +00:00
  • f0ed36748d Fix LOCK_DEBUG compilation in the 8.2 branch; HEAD was fixed earlier. Heikki Linnakangas. Neil Conway 2007-04-23 15:13:30 +00:00
  • 3591ca1fbf Make some functions immutable. Peter Eisentraut 2007-04-22 21:16:18 +00:00
  • 83ebe3a562 Fix typo Peter Eisentraut 2007-04-22 21:12:25 +00:00
  • 3644ba5f9b Done: Bruce Momjian 2007-04-22 13:28:43 +00:00
  • dbcd9d6160 Remove some of the most blatant brain-fade in the recent guc patch (it's so nice to have a buildfarm member that actively rejects naked uses of strcasecmp). This coding is still pretty awful, though, since it's going to be O(N^2) in the number of guc variables. May I direct your attention to bsearch? Tom Lane 2007-04-22 03:52:40 +00:00
  • afcf09dd90 Some further performance tweaks for planning large inheritance trees that are mostly excluded by constraints: do the CE test a bit earlier to save some adjust_appendrel_attrs() work on excluded children, and arrange to use array indexing rather than rt_fetch() to fetch RTEs in the main body of the planner. The latter is something I'd wanted to do for awhile anyway, but seeing list_nth_cell() as 35% of the runtime gets one's attention. Tom Lane 2007-04-21 21:01:45 +00:00
  • ac7e6c0665 Fix build for directories with spaces in them by quoting properly. Magnus Hagander 2007-04-21 20:58:05 +00:00
  • b7edb568bd Make configuration parameters fall back to their default values when they are removed from the configuration file. Peter Eisentraut 2007-04-21 20:02:41 +00:00
  • adf7788c5e Don't try to build uuid-ossp on msvc. Magnus Hagander 2007-04-21 19:04:51 +00:00
  • e08617cfba Fix alignment of help output. Peter Eisentraut 2007-04-21 18:26:44 +00:00
  • 74496bc298 Contrib module uuid-ossp for generating UUID values using the OSSP UUID library. New configure option --with-ossp-uuid to activate. Peter Eisentraut 2007-04-21 17:26:18 +00:00
  • 71495f296e Document new -with-libxslt build option. Andrew Dunstan 2007-04-21 15:30:28 +00:00
  • 48239e156f Avoid useless work during set_plain_rel_pathlist() when the relation will be excluded by constraint exclusion anyway. Greg Stark Tom Lane 2007-04-21 06:18:52 +00:00
  • 925ca9d7de Tweak make_inh_translation_lists() to check the common case wherein parent and child attnums are the same, before it grovels through each and every child column looking for a name match. Saves some time in large inheritance trees, per example from Greg. Tom Lane 2007-04-21 05:56:41 +00:00
  • 402bd494ce Improve the way in which CatalogCacheComputeHashValue combines multiple key values: don't throw away perfectly good hash bits, and increase the shift distances so as to provide more separation in the common case where some of the key values are small integers (and so their hashes are too, because hashfunc.c doesn't try all that hard). This reduces the runtime of SearchCatCache by a factor of 4 in an example provided by Greg Stark, in which the planner spends a whole lot of time searching the two-key STATRELATT cache. It seems unlikely to hurt in other cases, but maybe we could do even better? Tom Lane 2007-04-21 04:49:20 +00:00
  • 11da4c671e Adjust pgstat_initstats() to avoid repeated searches of the TabStat arrays when a relation is opened multiple times in the same transaction. This is particularly useful for system catalogs, which we may heap_open or index_open many times in a transaction, and it doesn't really cost anything extra even if the rel is touched but once. Motivated by study of an example from Greg Stark, in which pgstat_initstats() accounted for an unreasonably large fraction of the runtime. Tom Lane 2007-04-21 04:10:53 +00:00
  • ca3d14f2a9 Tweak set_rel_width() to avoid redundant executions of getrelid(). In very large queries this accounts for a noticeable fraction of planning time. Per an example from Greg Stark. Tom Lane 2007-04-21 02:41:13 +00:00
  • 8073fff8e4 Documentation for UUID type Peter Eisentraut 2007-04-20 21:51:46 +00:00
  • 1c8302cab3 Add comment on why deadlock detection error messages only prints numbers. Bruce Momjian 2007-04-20 20:15:52 +00:00
  • 0240b28668 Add script major_release_split to simplify creating release notes for multiple releases. Bruce Momjian 2007-04-20 19:40:53 +00:00
  • 6b5ecb4010 Update configure.in for release REL7_3_19 PostgreSQL Daemon 2007-04-20 16:19:11 +00:00
  • d4b832508a Add mention of checking <link> behavior of HISTORY.html to release checklist. Bruce Momjian 2007-04-20 15:47:08 +00:00
  • c95bdc96b5 Update configure in for new release REL7_4_17 PostgreSQL Daemon 2007-04-20 15:15:43 +00:00
  • 39c1ce2ccb Remove duplicate text, per Magnus. Bruce Momjian 2007-04-20 13:48:21 +00:00
  • 13e22236c9 Update configure for release REL8_0_13 PostgreSQL Daemon 2007-04-20 03:44:17 +00:00
  • 2bf97c9c4a Update configure.in for release REL8_1_9 PostgreSQL Daemon 2007-04-20 03:32:59 +00:00
  • 653f0f0b53 Fix markup. Tom Lane 2007-04-20 03:28:17 +00:00
  • 9903eaf7a1 Fix markup. Tom Lane 2007-04-20 03:28:05 +00:00
  • cfe1b04c66 Fix markup. Tom Lane 2007-04-20 03:27:54 +00:00
  • d8f365365b Fix markup. Tom Lane 2007-04-20 03:27:43 +00:00
  • ce8a3e6c88 Fix markup. REL8_2_4 Tom Lane 2007-04-20 03:27:34 +00:00
  • 23c8b0ccc6 Fix markup. Tom Lane 2007-04-20 03:27:23 +00:00
  • e05d9875b2 Update configure.in version number PostgreSQL Daemon 2007-04-20 03:20:42 +00:00
  • a174b6fb6c Fix markup. Tom Lane 2007-04-20 03:10:57 +00:00
  • 8294203637 Fix markup. Tom Lane 2007-04-20 03:10:51 +00:00
  • a796aac46f Support explicit placement of the temporary-table schema within search_path. This is needed to allow a security-definer function to set a truly secure value of search_path. Without it, a malicious user can use temporary objects to execute code with the privileges of the security-definer function. Even pushing the temp schema to the back of the search path is not quite good enough, because a function or operator at the back of the path might still capture control from one nearer the front due to having a more exact datatype match. Hence, disable searching the temp schema altogether for functions and operators. Tom Lane 2007-04-20 02:38:59 +00:00
  • eaabaa7e04 Support explicit placement of the temporary-table schema within search_path. This is needed to allow a security-definer function to set a truly secure value of search_path. Without it, a malicious user can use temporary objects to execute code with the privileges of the security-definer function. Even pushing the temp schema to the back of the search path is not quite good enough, because a function or operator at the back of the path might still capture control from one nearer the front due to having a more exact datatype match. Hence, disable searching the temp schema altogether for functions and operators. Tom Lane 2007-04-20 02:38:46 +00:00
  • 566331a2e9 Support explicit placement of the temporary-table schema within search_path. This is needed to allow a security-definer function to set a truly secure value of search_path. Without it, a malicious user can use temporary objects to execute code with the privileges of the security-definer function. Even pushing the temp schema to the back of the search path is not quite good enough, because a function or operator at the back of the path might still capture control from one nearer the front due to having a more exact datatype match. Hence, disable searching the temp schema altogether for functions and operators. Tom Lane 2007-04-20 02:38:33 +00:00
  • fc52d13ca6 Support explicit placement of the temporary-table schema within search_path. This is needed to allow a security-definer function to set a truly secure value of search_path. Without it, a malicious user can use temporary objects to execute code with the privileges of the security-definer function. Even pushing the temp schema to the back of the search path is not quite good enough, because a function or operator at the back of the path might still capture control from one nearer the front due to having a more exact datatype match. Hence, disable searching the temp schema altogether for functions and operators. Tom Lane 2007-04-20 02:38:05 +00:00
  • d694bdd1c9 Support explicit placement of the temporary-table schema within search_path. This is needed to allow a security-definer function to set a truly secure value of search_path. Without it, a malicious user can use temporary objects to execute code with the privileges of the security-definer function. Even pushing the temp schema to the back of the search path is not quite good enough, because a function or operator at the back of the path might still capture control from one nearer the front due to having a more exact datatype match. Hence, disable searching the temp schema altogether for functions and operators. Tom Lane 2007-04-20 02:37:49 +00:00
  • aa27977fe2 Support explicit placement of the temporary-table schema within search_path. This is needed to allow a security-definer function to set a truly secure value of search_path. Without it, a malicious user can use temporary objects to execute code with the privileges of the security-definer function. Even pushing the temp schema to the back of the search path is not quite good enough, because a function or operator at the back of the path might still capture control from one nearer the front due to having a more exact datatype match. Hence, disable searching the temp schema altogether for functions and operators. Tom Lane 2007-04-20 02:37:38 +00:00
  • c6f3c246cc Sync timezone data with 2007e zic release. Tom Lane 2007-04-19 22:44:51 +00:00
  • 2a1b76f046 Sync timezone data with 2007e zic release. Tom Lane 2007-04-19 22:44:44 +00:00
  • 4e6c6a40e0 Sync timezone data with 2007e zic release. Tom Lane 2007-04-19 22:44:38 +00:00
  • 9350056eaa Sync timezone data with 2007e zic release. Tom Lane 2007-04-19 22:44:32 +00:00
  • c0a562287b Fix missed PACKAGE_STRING. Tom Lane 2007-04-19 22:23:31 +00:00
  • b8f0a51a49 Repair PANIC condition in hash indexes when a previous index extension attempt failed (due to lock conflicts or out-of-space). We might have already extended the index's filesystem EOF before failing, causing the EOF to be beyond what the metapage says is the last used page. Hence the invariant maintained by the code needs to be "EOF is at or beyond last used page", not "EOF is exactly the last used page". Problem was created by my patch of 2006-11-19 that attempted to repair bug #2737. Since that was back-patched to 7.4, this needs to be as well. Per report and test case from Vlastimil Krejcir. Tom Lane 2007-04-19 20:24:36 +00:00
  • 0f93ebd338 Repair PANIC condition in hash indexes when a previous index extension attempt failed (due to lock conflicts or out-of-space). We might have already extended the index's filesystem EOF before failing, causing the EOF to be beyond what the metapage says is the last used page. Hence the invariant maintained by the code needs to be "EOF is at or beyond last used page", not "EOF is exactly the last used page". Problem was created by my patch of 2006-11-19 that attempted to repair bug #2737. Since that was back-patched to 7.4, this needs to be as well. Per report and test case from Vlastimil Krejcir. Tom Lane 2007-04-19 20:24:28 +00:00
  • d184462ae0 Repair PANIC condition in hash indexes when a previous index extension attempt failed (due to lock conflicts or out-of-space). We might have already extended the index's filesystem EOF before failing, causing the EOF to be beyond what the metapage says is the last used page. Hence the invariant maintained by the code needs to be "EOF is at or beyond last used page", not "EOF is exactly the last used page". Problem was created by my patch of 2006-11-19 that attempted to repair bug #2737. Since that was back-patched to 7.4, this needs to be as well. Per report and test case from Vlastimil Krejcir. Tom Lane 2007-04-19 20:24:18 +00:00
  • 7fc2507f7c Repair PANIC condition in hash indexes when a previous index extension attempt failed (due to lock conflicts or out-of-space). We might have already extended the index's filesystem EOF before failing, causing the EOF to be beyond what the metapage says is the last used page. Hence the invariant maintained by the code needs to be "EOF is at or beyond last used page", not "EOF is exactly the last used page". Problem was created by my patch of 2006-11-19 that attempted to repair bug #2737. Since that was back-patched to 7.4, this needs to be as well. Per report and test case from Vlastimil Krejcir. Tom Lane 2007-04-19 20:24:10 +00:00
  • 9d37c038fc Repair PANIC condition in hash indexes when a previous index extension attempt failed (due to lock conflicts or out-of-space). We might have already extended the index's filesystem EOF before failing, causing the EOF to be beyond what the metapage says is the last used page. Hence the invariant maintained by the code needs to be "EOF is at or beyond last used page", not "EOF is exactly the last used page". Problem was created by my patch of 2006-11-19 that attempted to repair bug #2737. Since that was back-patched to 7.4, this needs to be as well. Per report and test case from Vlastimil Krejcir. Tom Lane 2007-04-19 20:24:04 +00:00
  • 266a0ffe45 Fix plpgsql to avoid reference to already-freed memory when returning a pass-by-reference data type and the RETURN statement is within an EXCEPTION block. Bug introduced by my fix of 2007-01-28 to use per-subtransaction ExprContexts/EStates; since that wasn't back-patched into older branches, only 8.2 and HEAD are affected. Per report from Gary Winslow. Tom Lane 2007-04-19 16:33:32 +00:00
  • 77a41e71a3 Fix plpgsql to avoid reference to already-freed memory when returning a pass-by-reference data type and the RETURN statement is within an EXCEPTION block. Bug introduced by my fix of 2007-01-28 to use per-subtransaction ExprContexts/EStates; since that wasn't back-patched into older branches, only 8.2 and HEAD are affected. Per report from Gary Winslow. Tom Lane 2007-04-19 16:33:24 +00:00
  • dfa58878cb Silence compiler warnings, per Bruce. Alvaro Herrera 2007-04-19 16:26:44 +00:00
  • 9de4b61388 Release wording updates for releases 8.2.4, 8.1.9, 8.0.13, 7.4.17, 7.3.19. Bruce Momjian 2007-04-19 13:03:07 +00:00
  • 7fb1a0b5f3 Release wording updates for releases 8.2.4, 8.1.9, 8.0.13, 7.4.17, 7.3.19. Bruce Momjian 2007-04-19 13:02:49 +00:00
  • 9e7ea85984 Release wording updates for releases 8.2.4, 8.1.9, 8.0.13, 7.4.17, 7.3.19. Bruce Momjian 2007-04-19 13:02:30 +00:00
  • 77be1e891d Release wording updates for releases 8.2.4, 8.1.9, 8.0.13, 7.4.17, 7.3.19. Bruce Momjian 2007-04-19 13:02:15 +00:00
  • f1d934b6b3 Release wording updates for releases 8.2.4, 8.1.9, 8.0.13, 7.4.17, 7.3.19. Bruce Momjian 2007-04-19 13:01:59 +00:00