Les nouveautés des produits dérivés

Offres d'emplois autour de PostgreSQL en mai

PostgreSQL Local

PostgreSQL dans les média

PostgreSQL Weekly News / les nouvelles hebdomadaires vous sont offertes cette semaine par David Fetter. Traduction par l'équipe PostgreSQLFr sous licence CC BY-NC-SA.

Proposez vos articles ou annonces avant dimanche 15:00 (heure du Pacifique). Merci de les envoyer en anglais à david (a) fetter.org, en allemand à pwn (a) pgug.de, en italien à pwn (a) itpug.org et en espagnol à pwn (a) arpug.com.ar.

(lien vers l'article original)

Correctifs appliqués

Heikki Linnakangas a poussé :

  • Use Size instead of uint32 to store result of sizeof(). Silences coverity and is more consistent with other functions in the same file. Andres Freund http://git.postgresql.org/pg/commitdiff/c83457683968e2263d7e6bcdcdd52d472f9b0f8d
  • Don't leak memory after connection aborts in pg_recvlogical. Andres Freund, noticed by coverity. http://git.postgresql.org/pg/commitdiff/329de9fa983debc941ebd79f335f2574b72a3694
  • Pass sensible value to memset() when randomizing reorderbuffer's tuple slab. This is entirely harmless, but still wrong. Noticed by coverity. Andres Freund http://git.postgresql.org/pg/commitdiff/377790fbd707b41bdf2264fe6c217e903e241f7c
  • Assert that pre/post-fix updated tuples are on the same page during replay. If they were not 'oldtup.t_data' would be dereferenced while set to NULL in case of a full page image for block 0. Do so primarily to silence coverity; but also to make sure this prerequisite isn't changed without adapting the replay routine as that would appear to work in many cases. Andres Freund http://git.postgresql.org/pg/commitdiff/1460b199e6e748712253fa130d1c3368ba6ac861
  • Replace SYSTEMQUOTEs with Windows-specific wrapper functions. It's easy to forget using SYSTEMQUOTEs when constructing command strings for system() or popen(). Even if we fix all the places missing it now, it is bound to be forgotten again in the future. Introduce wrapper functions that do the the extra quoting for you, and get rid of SYSTEMQUOTEs in all the callers. We previosly used SYSTEMQUOTEs in all the hard-coded command strings, and this doesn't change the behavior of those. But user-supplied commands, like archive_command, restore_command, COPY TO/FROM PROGRAM calls, as well as pgbench's \shell, will now gain an extra pair of quotes. That is desirable, but if you have existing scripts or config files that include an extra pair of quotes, those might need to be adjusted. Reviewed by Amit Kapila and Tom Lane http://git.postgresql.org/pg/commitdiff/a692ee5870f0f442565b4c4bff367094599e9bdf
  • Fix use of free in walsender error handling after a sysid mismatch. Found via valgrind. The bug exists since the introduction of the walsender, so backpatch to 9.0. Andres Freund http://git.postgresql.org/pg/commitdiff/3a8e9e977fa642433986e5cd145e3a6f86601c2c
  • Fix build after removing JsonbValue.estSize field. Oops, I didn't realize that contrib/hstore refers to jsonb stuff. http://git.postgresql.org/pg/commitdiff/7572b7735971cd7a5ef289e133eedf7d82f79c42
  • Clean up jsonb code. The main target of this cleanup is the convertJsonb() function, but I also touched a lot of other things that I spotted into in the process. The new convertToJsonb() function uses an output buffer that's resized on demand, so the code to estimate of the size of JsonbValue is removed. The on-disk format was not changed, even though I refactored the structs used to handle it. The term "superheader" is replaced with "container". The jsonb_exists_any and jsonb_exists_all functions no longer sort the input array. That was a premature optimization, the idea being that if there are duplicates in the input array, you only need to check them once. Also, sorting the array saves some effort in the binary search used to find a key within an object. But there were drawbacks too: the sorting and deduplicating obviously isn't free, and in the typical case there are no duplicates to remove, and the gain in the binary search was minimal. Remove all that, which makes the code simpler too. This includes a bug-fix; the total length of the elements in a jsonb array or object mustn't exceed 2^28. That is now checked. http://git.postgresql.org/pg/commitdiff/364ddc3e5cbd01c93a39896b5260509129a9883e
  • Include files copied from libpqport in .gitignore. Michael Paquier http://git.postgresql.org/pg/commitdiff/02c9a938057ecb811c65999577d32c5f5e9c99dc
  • Protect against torn pages when deleting GIN list pages. To-be-deleted list pages contain no useful information, as they are being deleted, but we must still protect the writes from being torn by a crash after a partial write. To do that, re-initialize the pages on WAL replay. Jeff Janes caught this with a test program to test partial writes. Backpatch to all supported versions. http://git.postgresql.org/pg/commitdiff/4f7bb4b2a36facc94a1d6b821ec6733093aa9bc6
  • Avoid some pnstrdup()s when constructing jsonb. This speeds up text to jsonb parsing and hstore to jsonb conversions somewhat. http://git.postgresql.org/pg/commitdiff/d3c72e23df6ef1fde8122db589d12d49c8495535
  • Minor cleanup of jsonb_util.c. Move the functions around to group related functions together. Remove binequal argument from lengthCompareJsonbStringValue, moving that responsibility to lengthCompareJsonbPair. Fix typo in comment. http://git.postgresql.org/pg/commitdiff/ff7bbb0176a667aeb0577e4d48d651ffdb6afd50
  • More jsonb cleanup. Fix JSONB_MAX_ELEMS and JSONB_MAX_PAIRS macros to use CB_MASK in the calculation. JENTRY_POSMASK happens to have the same value at the moment, but that's just coincidental. Refactor jsonb iterator functions, for readability. Get rid of the JENTRY_ISFIRST flag. Whenever we handle JEntrys, we have access to the whole array and have enough context information to know which entry is the first. This frees up one bit in the JEntry header for future use. While we're at it, shuffle the JEntry bits so that boolean true and false go together, for aesthetic reasons. Bump catalog version as this changes the on-disk format slightly. http://git.postgresql.org/pg/commitdiff/d9daff0e0cb15221789e6c50d9733c8754c054fb
  • Fix bug in lossy-page handling in GIN. When returning rows from a bitmap, as done with partial match queries, we would get stuck in an infinite loop if the bitmap contained a lossy page reference. This bug is new in master, it was introduced by the patch to allow skipping items refuted by other entries in GIN scans. Report and fix by Alexander Korotkov http://git.postgresql.org/pg/commitdiff/866e6e1d04d4ae9615bd1899a757dae0191e9c77

Robert Haas a poussé :

Bruce Momjian a poussé :

Tom Lane a poussé :

  • Fix case of pg_dump -Fc to an unseekable file (such as a pipe). This was accidentally broken in commits cfa1b4a711/5e8e794e3b. It saves a line or so to call ftello unconditionally in _CloseArchive, but we have to expect that it might fail if we're not in hasSeek mode. Per report from Bernd Helmle. In passing, improve _getFilePos to print an appropriate message if ftello fails unexpectedly, rather than just a vague complaint about "ftell mismatch". http://git.postgresql.org/pg/commitdiff/e03485ae8a2025d5deea291ebb24412229cc2fe5
  • Fix possible cache invalidation failure in ReceiveSharedInvalidMessages. Commit fad153ec45299bd4d4f29dec8d9e04e2f1c08148 modified sinval.c to reduce the number of calls into sinvaladt.c (which require taking a shared lock) by keeping a local buffer of collected-but-not-yet-processed messages. However, if processing of the last message in a batch resulted in a recursive call to ReceiveSharedInvalidMessages, we could overwrite that message with a new one while the outer invalidation function was still working on it. This would be likely to lead to invalidation of the wrong cache entry, allowing subsequent processing to use stale cache data. The fix is just to make a local copy of each message while we're processing it. Spotted by Andres Freund. Back-patch to 8.4 where the bug was introduced. http://git.postgresql.org/pg/commitdiff/0f928a85ecd509b165bfb9acd71b18c40063a7a0
  • Fix pg_type.typlen for newly-revived line type. Commit 261c7d4b653bc3e44c31fd456d94f292caa50d8f removed the "m" field from struct LINE, but neglected to make pg_type.h's idea of the type's size match. This resulted in reading past the end of palloc'd LINE values when inserting them into tuples etc. In principle that could cause a SIGSEGV, though the odds of detectable problems seem low. Bump catversion since this makes an incompatible on-disk format change. Note that if the line type had been in use in the field, this would break pg_upgrade'ability of databases containing line values; but it seems unlikely that there are any (they'd have had to be compiled with -DENABLE_LINE_TYPE). Spotted by Andres Freund. http://git.postgresql.org/pg/commitdiff/3727afafeef69088456acc3f6257360315220a20
  • Run autoconf in wake of commit a692ee5870f0f442565b4c4bff367094599e9bdf. Heikki updated configure.in but evidently forgot to include the updated configure script in the commit. Per buildfarm. http://git.postgresql.org/pg/commitdiff/9252b8eec27bbefbeae9d60d8cd4f6b8be80b861
  • hash_any returns Datum, not uint32 (and definitely not "int"). The coding in JsonbHashScalarValue might have accidentally failed to fail given current representational choices, but the key word there would be "accidental". Insert the appropriate datatype conversion macro. And use the right conversion macro for hash_numeric's result, too. In passing make the code a bit cleaner and less repetitive by factoring out the xor step from the switch. http://git.postgresql.org/pg/commitdiff/2c22afaa4e29cbd773bae3f043a941f82ff30e2d
  • Fix some more confusion between uint32 and Datum. http://git.postgresql.org/pg/commitdiff/1891b415f0cf45d56f29af423598f8518754d675
  • Fix failure to set ActiveSnapshot while rewinding a cursor. ActiveSnapshot needs to be set when we call ExecutorRewind because some plan node types may execute user-defined functions during their ReScan calls (nodeLimit.c does so, at least). The wisdom of that is somewhat debatable, perhaps, but for now the simplest fix is to make sure the required context is valid. Failure to do this typically led to a null-pointer-dereference core dump, though it's possible that in more complex cases a function could be executed with the wrong snapshot leading to very subtle misbehavior. Per report from Leif Jensen. It's been broken for a long time, so back-patch to all active branches. http://git.postgresql.org/pg/commitdiff/04e5025be8bbe572e12b19c4ba9e2a8360b8ffe5
  • Avoid buffer bloat in libpq when server is consistently faster than client. If the server sends a long stream of data, and the server + network are consistently fast enough to force the recv() loop in pqReadData() to iterate until libpq's input buffer is full, then upon processing the last incomplete message in each bufferload we'd usually double the buffer size, due to supposing that we didn't have enough room in the buffer to finish collecting that message. After filling the newly-enlarged buffer, the cycle repeats, eventually resulting in an out-of-memory situation (which would be reported misleadingly as "lost synchronization with server"). Of course, we should not enlarge the buffer unless we still need room after discarding already-processed messages. This bug dates back quite a long time: pqParseInput3 has had the behavior since perhaps 2003, getCopyDataMessage at least since commit 70066eb1a1ad in 2008. Probably the reason it's not been isolated before is that in common environments the recv() loop would always be faster than the server (if on the same machine) or faster than the network (if not); or at least it wouldn't be slower consistently enough to let the buffer ramp up to a problematic size. The reported cases involve Windows, which perhaps has different timing behavior than other platforms. Per bug #7914 from Shin-ichi Morita, though this is different from his proposed solution. Back-patch to all supported branches. http://git.postgresql.org/pg/commitdiff/2f557167b19af79ffecb8faedf8b7bce4d48f3e1
  • Allow for platforms that have optreset but not <getopt.h>. Reportedly, some versions of mingw are like that, and it seems plausible in general that older platforms might be that way. However, we'd determined experimentally that just doing "extern int" conflicts with the way Cygwin declares these variables, so explicitly exclude Cygwin. Michael Paquier, tweaked by me to hopefully not break Cygwin http://git.postgresql.org/pg/commitdiff/0c15a524c532c1006a7bd36d3a680f8e8b8db9fc
  • Fix comment. Previous commit was confused about the case we're handling: actually, what the patch is dealing with is platforms that have optreset, *and* have <getopt.h>, but the latter fails to declare the former. Because we use a linking probe to set HAVE_INT_OPTRESET, we need to be sure we have a declaration even if <getopt.h> doesn't think it exists. http://git.postgresql.org/pg/commitdiff/1e81f8462aceb07d520daaabdc999b879381bd12
  • Revert "Auto-tune effective_cache size to be 4x shared buffers". This reverts commit ee1e5662d8d8330726eaef7d3110cb7add24d058, as well as a remarkably large number of followup commits, which were mostly concerned with the fact that the implementation didn't work terribly well. It still doesn't: we probably need some rather basic work in the GUC infrastructure if we want to fully support GUCs whose default varies depending on the value of another GUC. Meanwhile, it also emerged that there wasn't really consensus in favor of the definition the patch tried to implement (ie, effective_cache_size should default to 4 times shared_buffers). So whack it all back to where it was. In a followup commit, I'll do what was recently agreed to, which is to simply change the default to a higher value. http://git.postgresql.org/pg/commitdiff/a16d421ca4fc639929bc964b2585e8382cf16e33
  • Increase the default value of effective_cache_size to 4GB. Per discussion, the old value of 128MB is ridiculously small on modern machines; in fact, it's not even any larger than the default value of shared_buffers, which it certainly should be. Increase to 4GB, which is unlikely to be any worse than the old default for anyone, and should be noticeably better for most. Eventually we might have an autotuning scheme for this setting, but the recent attempt crashed and burned, so for now just do this. http://git.postgresql.org/pg/commitdiff/b910d7ea358b0134d170ebf4002248df25a5f244
  • Document permissions needed for pg_database_size and pg_tablespace_size. Back in 8.3, we installed permissions checks in these functions (see commits 8bc225e7990a and cc26599b7206). But we forgot to document that anywhere in the user-facing docs; it did get mentioned in the 8.3 release notes, but nobody's looking at that any more. Per gripe from Suya Huang. http://git.postgresql.org/pg/commitdiff/fb1974cc6b58cd21a269dd7ab8aea0120906ec3b
  • Fix missing dependencies in ecpg's test Makefiles. Ensure that ecpg preprocessor output files are rebuilt when re-testing after a change in the ecpg preprocessor itself, or a change in any of several include files that get copied verbatim into the output files. The lack of these dependencies was what created problems for Kevin Grittner after the recent pgindent run. There's no way for --enable-depend to discover these dependencies automatically, so we've gotta put them into the Makefiles by hand. While at it, reduce the amount of duplication in the ecpg invocations. http://git.postgresql.org/pg/commitdiff/14d309cc55d88b73d4c9d1fa51b535ae491405fd
  • Improve key representation for GIN jsonb_ops, and fix existence-search bug. Change the key representation so that values that would exceed 127 bytes are hashed into short strings, and so that the original JSON datatype of each value is recorded in the index. The hashing rule eliminates the major objection to having this opclass be the default for jsonb, namely that it could fail for plausible input data (due to GIN's restrictions on maximum key length). Preserving datatype information doesn't really buy us much right now, but it requires no extra space compared to the previous way, and it might be useful later. Also, change the consistency-checking functions to request recheck for exists (jsonb ? text) and related operators. The original analysis that this is an exactly checkable query was incorrect, since the index does not preserve information about whether a key appears at top level in the indexed JSON object. Add a test case demonstrating the problem. Make some other, mostly cosmetic improvements to the code in jsonb_gin.c as well. catversion bump due to on-disk data format change in jsonb_ops indexes. http://git.postgresql.org/pg/commitdiff/46dddf7673c5820be7c78a8b0e098fdbc65d003d
  • Fix typcategory labeling of jsonb. Dunno who had the cute idea of labeling jsonb as typcategory 'C', but it is not a composite type. Label it 'U', since that's what json is using. http://git.postgresql.org/pg/commitdiff/bdf9dd4db78a5f23e863f2d4d8500969dc261fd0
  • Teach add_json() that jsonb is of TYPCATEGORY_JSON. This code really needs to be refactored so that there aren't so many copies that can diverge. Not to mention that this whole approach is probably wrong. But for the moment I'll just stick my finger in the dike. Per report from Michael Paquier. http://git.postgresql.org/pg/commitdiff/62e57ff040e5d0acd303b94e86fff689effc5957
  • Get rid of bogus dependency on typcategory in to_json() and friends. These functions were relying on typcategory to identify arrays and composites, which is not reliable and not the normal way to do it. Using typcategory to identify boolean, numeric types, and json itself is also pretty questionable, though the code in those cases didn't seem to be at risk of anything worse than wrong output. Instead, use the standard lsyscache functions to identify arrays and composites, and rely on a direct check of the type OID for the other cases. In HEAD, also be sure to look through domains so that a domain is treated the same as its base type for conversions to JSON. However, this is a small behavioral change; given the lack of field complaints, we won't back-patch it. In passing, refactor so that there's only one copy of the code that decides which conversion strategy to apply, not multiple copies that could (and have) gotten out of sync. http://git.postgresql.org/pg/commitdiff/0ca6bda8e7501947c05f30c127f6d12ff90b5a64
  • Improve user-facing JSON documentation. I started out with the intention of just fixing the info about the jsonb operator classes, but soon found myself copy-editing most of the JSON material. Hopefully it's more readable now. http://git.postgresql.org/pg/commitdiff/0b92a77c17ebe8bec08e250e1a929b07efef1008
  • Fix broken allocation logic in recently-rewritten jsonb_util.c. reserveFromBuffer() failed to consider the possibility that it needs to more-than-double the current buffer size. Beyond that, it seems likely that we'd someday need to worry about integer overflow of the buffer length variable. Rather than reinvent the logic that's already been debugged in stringinfo.c, let's go back to using that logic. We can still have the same targeted API, but we'll rely on stringinfo.c to manage reallocation. Per report from Alexander Korotkov. http://git.postgresql.org/pg/commitdiff/3d8c2b496fc1fed2b8ff8a403d3a17329325466e
  • Fix bogus documentation of json_object_agg(). It takes two arguments, not one. http://git.postgresql.org/pg/commitdiff/17e4082b6312383075e397b4b2ae324c90716c5b
  • Update config.guess and config.sub http://git.postgresql.org/pg/commitdiff/7fa5bc43aaaf01e23c3a6ab59a57c19273f6f7f4
  • Accept tcl 8.6 in configure's probe for tclsh. Usually the search would find plain "tclsh" without any trouble, but some installations might only have the version-numbered flavor of that program. No compatibility problems have been reported with 8.6, so we might as well back-patch this to all active branches. Christoph Berg http://git.postgresql.org/pg/commitdiff/eaba54c20c5ab2cb6aaffa574444fd4990dfe2c7
  • More work on the JSON/JSONB user documentation. Document existence operator adequately; fix obsolete claim that no Unicode-escape semantic checks happen on input (it's still true for json, but not for jsonb); improve examples; assorted wordsmithing. http://git.postgresql.org/pg/commitdiff/f825c7c850dbe683d62defd7e5bd31664ee3302c
  • Rename min_recovery_apply_delay to recovery_min_apply_delay. Per discussion, this seems like a more consistent choice of name. Fabrízio de Royes Mello, after a suggestion by Peter Eisentraut; some additional documentation wordsmithing by me http://git.postgresql.org/pg/commitdiff/0d0b2bf175a53dfedcc0cb69eaba7576b0c286f2
  • Rename jsonb_hash_ops to jsonb_path_ops. There's no longer much pressure to switch the default GIN opclass for jsonb, but there was still some unhappiness with the name "jsonb_hash_ops", since hashing is no longer a distinguishing property of that opclass, and anyway it seems like a relatively minor detail. At the suggestion of Heikki Linnakangas, we'll use "jsonb_path_ops" instead; that captures the important characteristic that each index entry depends on the entire path from the document root to the indexed value. Also add a user-facing explanation of the implementation properties of these two opclasses. http://git.postgresql.org/pg/commitdiff/12e611d43e6efbf0e36014a3055ed47366facee7
  • Find postgresql.auto.conf in PGDATA even when postgresql.conf is elsewhere. The original coding for ALTER SYSTEM made a fundamentally bogus assumption that postgresql.auto.conf could be sought relative to the main config file if we hadn't yet determined the value of data_directory. This fails for common arrangements with the config file elsewhere, as reported by Christoph Berg. The simplest fix is to not try to read postgresql.auto.conf until after SelectConfigFiles has chosen (and locked down) the data_directory setting. Because of the logic in ProcessConfigFile for handling resetting of GUCs that've been removed from the config file, we cannot easily read the main and auto config files separately; so this patch adopts a brute force approach of reading the main config file twice during postmaster startup. That's a tad ugly, but the actual time cost is likely to be negligible, and there's no time for a more invasive redesign before beta. With this patch, any attempt to set data_directory via ALTER SYSTEM will be silently ignored. It would probably be better to throw an error, but that can be dealt with later. This bug, however, would prevent any testing of ALTER SYSTEM by a significant fraction of the userbase, so it seems important to get it fixed before beta. http://git.postgresql.org/pg/commitdiff/195e81aff5d63da1e1f9dd0314a13859ec15c7c0
  • Stamp 9.4beta1. http://git.postgresql.org/pg/commitdiff/e6df2e1be6330660ba4d81daa726ae4a71535aa9

Michael Meskes a poussé :

  • Fix handling of array of char pointers in ecpglib. When array of char * was used as target for a FETCH statement returning more than one row, it tried to store all the result in the first element. Instead it should dump array of char pointers with right offset, use the address instead of the value of the C variable while reading the array and treat such variable as char **, instead of char * for pointer arithmetic. Patch by Ashutosh Bapat <ashutosh(dot)bapat(at)enterprisedb(dot)com> http://git.postgresql.org/pg/commitdiff/8d6a07fa01cece1bd3508a81e59c0c0cbc0bb867

Simon Riggs a poussé :

Peter Eisentraut a poussé :

Jeff Davis a poussé :

  • Improve comment for tricky aspect of index-only scans. Index-only scans avoid taking a lock on the VM buffer, which would cause a lot of contention. To be correct, that requires some intricate assumptions that weren't completely documented in the previous comment. Reviewed by Robert Haas. http://git.postgresql.org/pg/commitdiff/35c0cd3b05b0be18dc2d049c33b38a2d13993ffe
  • Fix interval test, which was broken for floating-point timestamps. Commit 4318daecc959886d001a6e79c6ea853e8b1dfb4b introduced a test that couldn't be made consistent between integer and floating-point timestamps. It was designed to test the longest possible interval output length, so removing four zeros from the number of hours, as this patch does, is not ideal. But the test still has some utility for its original purpose, and there aren't a lot of other good options. Noah Misch suggested a different approach where we test that the output either matches what we expect from integer timestamps or what we expect from floating-point timestamps. That seemed to obscure an otherwise simple test, however. Reviewed by Tom Lane and Noah Misch. http://git.postgresql.org/pg/commitdiff/348aa75a678069569923c501206d5a1ca03654e3

Noah Misch a poussé :

Correctifs rejetés (à ce jour)

  • No one was disappointed this week :-)

Correctifs en attente

  • Robert Haas sent in a patch to avoiding tuple copying in btree index builds.
  • Thomas Munro sent in three revisions of a patch to include the (non-default) cluster name in ps output.
  • Heikki Linnakangas sent in a patch to fix a race condition between PREPARE TRANSACTION and COMMIT PREPARED.
  • Robert Haas sent in a patch to create a new memory allocator, sb_alloc.
  • Heikki Linnakangas sent in a patch to prevent a doPickSplit stack buffer overflow in XLogInsert by removing MAXALIGNs in SP-GiST WAL.
  • Andreas Karlsson sent in a patch to fix tab completion for DROP TRIGGER/RULE and ALTER TABLE ... DISABLE/ENABLE in psql.
  • Andres Freund sent in two more revisions of a patch to add a pg_shmem_allocations view.
  • Michael Paquier, Andres Freund, and Fabrízio de Royes Mello traded patches to fix an issue where the new pg_lsn type doesn't have hash/btree opclasses, resulting in inability to do certain relativel simple queries with them.
  • Kaigai Kouhei sent in another revision of a patch to implement a custom plan API.
  • Jaime Casanova sent in a WIP patch to show index maintenance in EXPLAIN ANALYZE VERBOSE.
  • Andres Freund sent in a patch to fix harmless access to uninitialized memory in ri_triggers.c.
  • Robert Haas sent in a doc patch to fix what appeared to be an issue where PQputCopyEnd didn't adhere to its API contract.
  • MauMau sent in another revision of a patch to fix an issue on Windows where pg_ctl always uses the same event source.
  • Peter Eisentraut sent in a patch to fix imprecise pg_basebackup documentation about excluded files.
  • Christoph Berg sent in a patch to update config.guess/config.sub for ppc64le.
  • Alexander Korotkov sent in a patch to fix a breakage of lossy bitmap scans in GIN indexes.
  • Fabrízio de Royes Mello sent in a patch to rename min_recovery_apply_delay to recovery_min_apply_delay.
  • Peter Eisentraut sent in a patch to enable accepting empty values as xml "content" values, per the XML spec.