PostgreSQL 9.6 Release Candidate 1 est disponible, à vos tests ! http://www.postgresql.org/docs/devel/static/release-9-6.html

Les nouveautés des produits dérivés

Offres d'emplois autour de PostgreSQL en septembre

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. La version originale se trouve à l'adresse suivante : http://www.postgresql.org/message-id/20160905054301.GA25294@fetter.org

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.

Correctifs appliqués

Tom Lane pushed:

  • Make another editorial pass over the 9.6 release notes. I think they're pretty much release-quality now. http://git.postgresql.org/pg/commitdiff/39d866433e6fb1c385eee8dc67843097b8703add
  • Fix stray reference to the old genbki.sh script. Per Tomas Vondra. http://git.postgresql.org/pg/commitdiff/b899ccbb49cbcf8431b3af43fcf3faf91e6a28c6
  • Make AllocSetContextCreate throw an error for bad context-size parameters. The previous behavior was to silently change them to something valid. That obscured the bugs fixed in commit ea268cdc9, and generally seems less useful than complaining. Unlike the previous commit, though, we'll do this in HEAD only --- it's a bit too late to be possibly breaking third-party code in 9.6. Discussion: <CA+TgmobNcELVd3QmLD3tx=w7+CokRQiC4_U0txjz=WHpfdkU=w@mail.gmail.com> http://git.postgresql.org/pg/commitdiff/cf34fdbbe1452b9e19c0956bc48494889e1b2777
  • Fix initdb misbehavior when user mis-enters superuser password. While testing simple_prompt() revisions, I happened to notice that current initdb behaves rather badly when --pwprompt is specified and the user miskeys the second password. It complains about the mismatch, does "rm -rf" on the data directory, and exits. The problem is that since commit c4a8812cf, there's a standalone backend sitting waiting for commands at that point. It gets unhappy about its datadir having gone away, and spews a PANIC message at the user, which is not nice. (And the shell then adds to the mess with meaningless bleating about a core dump...) We don't really want that sort of thing to happen unless there's an internal failure in initdb, which this surely is not. The best fix seems to be to move the collection of the password earlier, so that it's done essentially as part of argument collection, rather than at the rather ad-hoc time it was done before. Back-patch to 9.6 where the problem was introduced. http://git.postgresql.org/pg/commitdiff/37f6fd1eaab698983ca1fb2a036d52381347ac71
  • Simplify correct use of simple_prompt(). The previous API for this function had it returning a malloc'd string. That meant that callers had to check for NULL return, which few of them were doing, and it also meant that callers had to remember to free() the string later, which required extra logic in most cases. Instead, make simple_prompt() write into a buffer supplied by the caller. Anywhere that the maximum required input length is reasonably small, which is almost all of the callers, we can just use a local or static array as the buffer instead of dealing with malloc/free. A fair number of callers used "pointer == NULL" as a proxy for "haven't requested the password yet". Maintaining the same behavior requires adding a separate boolean flag for that, which adds back some of the complexity we save by removing free()s. Nonetheless, this nets out at a small reduction in overall code size, and considerably less code than we would have had if we'd added the missing NULL-return checks everywhere they were needed. In passing, clean up the API comment for simple_prompt() and get rid of a very-unnecessary malloc/free in its Windows code path. This is nominally a bug fix, but it does not seem worth back-patching, because the actual risk of an OOM failure in any of these places seems pretty tiny, and all of them are client-side not server-side anyway. This patch is by me, but it owes a great deal to Michael Paquier who identified the problem and drafted a patch for fixing it the other way. Discussion: <CAB7nPqRu07Ot6iht9i9KRfYLpDaF2ZuUv5y_+72uP23ZAGysRg@mail.gmail.com> http://git.postgresql.org/pg/commitdiff/9daec77e165de461fca9d5bc3ece86a91aba5804
  • Fix a bunch of places that called malloc and friends with no NULL check. Where possible, use palloc or pg_malloc instead; otherwise, insert explicit NULL checks. Generally speaking, these are places where an actual OOM is quite unlikely, either because they're in client programs that don't allocate all that much, or they're very early in process startup so that we'd likely have had a fork() failure instead. Hence, no back-patch, even though this is nominally a bug fix. Michael Paquier, with some adjustments by me Discussion: <CAB7nPqRu07Ot6iht9i9KRfYLpDaF2ZuUv5y_+72uP23ZAGysRg@mail.gmail.com> http://git.postgresql.org/pg/commitdiff/052cc223d5ce1b727f62afff75797c88d82f880b
  • Prevent starting a standalone backend with standby_mode on. This can't really work because standby_mode expects there to be more WAL arriving, which there will not ever be because there's no WAL receiver process to fetch it. Moreover, if standby_mode is on then hot standby might also be turned on, causing even more strangeness because that expects read-only sessions to be executing in parallel. Bernd Helmle reported a case where btree_xlog_delete_get_latestRemovedXid got confused, but rather than band-aiding individual problems it seems best to prevent getting anywhere near this state in the first place. Back-patch to all supported branches. In passing, also fix some omissions of errcodes in other ereport's in readRecoveryCommandFile(). Michael Paquier (errcode hacking by me) Discussion: <00F0B2CEF6D0CEF8A90119D4@eje.credativ.lan> http://git.postgresql.org/pg/commitdiff/0e0f43d6fdc2e1fbd5261245ed4cf85302a3f653
  • Remove no-longer-useful SSL-specific Port.count field. Since we removed SSL renegotiation, there's no longer any reason to keep track of the amount of data transferred over the link. Daniel Gustafsson Discussion: <FEA7F89C-ECDF-4799-B789-2F8DDCBA467F@yesql.se> http://git.postgresql.org/pg/commitdiff/679226337ac3f44e784de0a95a8599dfd86401e8
  • Try to fix portability issue in enum renumbering (again). The hack embodied in commit 4ba61a487 no longer works after today's change to allow DatumGetFloat4/Float4GetDatum to be inlined (commit 14cca1bf8). Probably what's happening is that the faulty compilers are deciding that the now-inlined assignment is a no-op and so they're not required to round to float4 width. We had a bunch of similar issues earlier this year in the degree-based trig functions, and eventually settled on using volatile intermediate variables as the least ugly method of forcing recalcitrant compilers to do what the C standard says (cf commit 82311bcdd). Let's see if that method works here. Discussion: <4640.1472664476@sss.pgh.pa.us> http://git.postgresql.org/pg/commitdiff/65a588b4c3b06aefe0b00d6222598d4cff3542c2
  • Improve memory management for PL/Tcl functions. Formerly, the memory used to represent a PL/Tcl function was allocated with malloc() or in TopMemoryContext, and we'd leak it all if the function got redefined during the session. Instead, create a per-function context and keep everything in or under that context. Add a reference-counting mechanism (like the one plpgsql has long had) so that we can safely clean up an old function definition, either immediately if it's not being executed or at the end of the outermost execution. Currently, we only detect that a cached function is obsolete when we next attempt to call that function. So this covers the updated-definition case but leaves cruft around after DROP FUNCTION. It's not clear whether it's worth installing a syscache invalidation callback to watch for drops; none of the other PLs do, so for now we won't do it here either. Michael Paquier and Tom Lane Discussion: <CAB7nPqSOyAsHC6jL24J1B+oK3p=yyNoFU0Vs_B6fd2kdd5g5WQ@mail.gmail.com> http://git.postgresql.org/pg/commitdiff/d062245b5bd591edf6f78bab8d6b8bb3ff69c7a6
  • Improve memory management for PL/Perl functions. Unlike PL/Tcl, PL/Perl at least made an attempt to clean up after itself when a function gets redefined. But it was still using TopMemoryContext for the fn_mcxt of argument/result I/O functions, resulting in the potential for memory leaks depending on what those functions did, and the retail alloc/free logic was pretty bulky as well. Fix things to use a per-function memory context like the other PLs now do. Tweak a couple of places where things were being done in a not-very-safe order (on the principle that a memory leak is better than leaving global state inconsistent after an error). Also make some minor cosmetic adjustments, mostly in field names, to make the code look similar to the way PL/Tcl does now wherever it's essentially the same logic. Michael Paquier and Tom Lane Discussion: <CAB7nPqSOyAsHC6jL24J1B+oK3p=yyNoFU0Vs_B6fd2kdd5g5WQ@mail.gmail.com> http://git.postgresql.org/pg/commitdiff/6f7c0ea32f808a7dad3ec07db7e5fdf6514d2af0
  • Change API of ShmemAlloc() so it throws error rather than returning NULL. A majority of callers seem to have believed that this was the API spec already, because they omitted any check for a NULL result, and hence would crash on an out-of-shared-memory failure. The original proposal was to just add such error checks everywhere, but that does nothing to prevent similar omissions in future. Instead, let's make ShmemAlloc() throw the error (so we can remove the caller-side checks that do exist), and introduce a new function ShmemAllocNoError() that has the previous behavior of returning NULL, for the small number of callers that need that and are prepared to do the right thing. This also lets us remove the rather wishy-washy behavior of printing a WARNING for out-of-shmem, which never made much sense: either the caller has a strategy for dealing with that, or it doesn't. It's not ShmemAlloc's business to decide whether a warning is appropriate. The v10 release notes will need to call this out as a significant source-code change. It's likely that it will be a bug fix for extension callers too, but if not, they'll need to change to using ShmemAllocNoError(). This is nominally a bug fix, but the odds that it's fixing any live bug are actually rather small, because in general the requests being made by the unchecked callers were already accounted for in determining the overall shmem size, so really they ought not fail. Between that and the possible impact on extensions, no back-patch. Discussion: <24843.1472563085@sss.pgh.pa.us> http://git.postgresql.org/pg/commitdiff/6c03d981a6b64ed8caaed4e94b54ef926202c9f3
  • Don't require dynamic timezone abbreviations to match underlying time zone. Previously, we threw an error if a dynamic timezone abbreviation did not match any abbreviation recorded in the referenced IANA time zone entry. That seemed like a good consistency check at the time, but it turns out that a number of the abbreviations in the IANA database are things that Olson and crew made up out of whole cloth. Their current policy is to remove such names in favor of using simple numeric offsets. Perhaps unsurprisingly, a lot of these made-up abbreviations have varied in meaning over time, which meant that our commit b2cbced9e and later changes made them into dynamic abbreviations. So with newer IANA database versions that don't mention these abbreviations at all, we fail, as reported in bug #14307 from Neil Anderson. It's worse than just a few unused-in-the-wild abbreviations not working, because the pg_timezone_abbrevs view stops working altogether (since its underlying function tries to compute the whole view result in one call). We considered deleting these abbreviations from our abbreviations list, but the problem with that is that we can't stay ahead of possible future IANA changes. Instead, let's leave the abbreviations list alone, and treat any "orphaned" dynamic abbreviation as just meaning the referenced time zone. It will behave a bit differently than it used to, in that you can't any longer override the zone's standard vs. daylight rule by using the "wrong" abbreviation of a pair, but that's better than failing entirely. (Also, this solution can be interpreted as adding a small new feature, which is that any abbreviation a user wants can be defined as referencing a time zone name.) Back-patch to all supported branches, since this problem affects all of them when using tzdata 2016f or newer. Report: <20160902031551.15674.67337@wrigleys.postgresql.org> Discussion: <6189.1472820913@sss.pgh.pa.us> http://git.postgresql.org/pg/commitdiff/39b691f251167bbb3d49203abfb39d430f68f411
  • Fix corrupt GIN_SEGMENT_ADDITEMS WAL records on big-endian hardware. computeLeafRecompressWALData() tried to produce a uint16 WAL log field by memcpy'ing the first two bytes of an int-sized variable. That accidentally works on little-endian hardware, but not at all on big-endian. Replay then thinks it's looking at an ADDITEMS action with zero entries, and reads the first two bytes of the first TID therein as the next segno/action, typically leading to "unexpected GIN leaf action" errors during replay. Even if replay failed to crash, the resulting GIN index page would surely be incorrect. To fix, just declare the variable as uint16 instead. Per bug #14295 from Spencer Thomason (much thanks to Spencer for turning his problem into a self-contained test case). This likely also explains a previous report of the same symptom from Bernd Helmle. Back-patch to 9.4 where the problem was introduced (by commit 14d02f0bb). Discussion: <20160826072658.15676.7628@wrigleys.postgresql.org> Possible-Report: <2DA7350F7296B2A142272901@eje.land.credativ.lan> http://git.postgresql.org/pg/commitdiff/60893786d5180f5dd5aefd44d9cb6955d77b0473
  • Fix multiple bugs in numeric_poly_deserialize(). These were evidently introduced by yesterday's commit 9cca11c91, which perhaps needs more review than it got. Per report from Andreas Seltenreich and additional examination of nearby code. Report: <87oa45qfwq.fsf@credativ.de> http://git.postgresql.org/pg/commitdiff/600dc4c0da3b8c094ccc1ae75b47c8320898c714
  • Improve readability of the output of psql's \timing command. In addition to the existing decimal-milliseconds output value, display the same value in mm:ss.fff format if it exceeds one second. Tack on hours and even days fields if the interval is large enough. This avoids needing mental arithmetic to convert the values into customary time units. Corey Huinker, reviewed by Gerdan Santos; bikeshedding by many Discussion: <CADkLM=dbC4R8sbbuFXQVBFWoJGQkTEW8RWnC0PbW9nZsovZpJQ@mail.gmail.com> http://git.postgresql.org/pg/commitdiff/6591f4226c81104f7746da6a5c00519919c560ae
  • Remove useless pg_strdup() operations. split_to_stringlist() doesn't modify its first argument nor expect it to remain valid after exit, so there's no need to duplicate the optarg string at the call sites. Per Coverity. (This has been wrong all along, but commit 052cc223d changed the useless calls from "strdup" to "pg_strdup", which apparently made Coverity think it's a new bug. It's not, but it's also not worth back-patching.) http://git.postgresql.org/pg/commitdiff/a2d75b67bccd24d17e328360080e4877d23bc369
  • Update release notes to mention need for ALTER EXTENSION UPDATE. Maybe we ought to make pg_upgrade do this for you, but it won't happen in 9.6, so call out the need for it as a migration consideration. http://git.postgresql.org/pg/commitdiff/5a072244919a92b2c757b2e3985191f02d674627
  • Remove vestigial references to "zic" in favor of "IANA database". Commit b2cbced9e instituted a policy of referring to the timezone database as the "IANA timezone database" in our user-facing documentation. Propagate that wording into a couple of places that were still using "zic" to refer to the database, which is definitely not right (zic is the compilation tool, not the data). Back-patch, not because this is very important in itself, but because we routinely cherry-pick updates to the tznames files and I don't want to risk future merge failures. http://git.postgresql.org/pg/commitdiff/da6ea70c32bed99ca040a5e04d83c0edd5dfc615
  • Add regression test coverage for non-default timezone abbreviation sets. After further reflection about the mess cleaned up in commit 39b691f25, I decided the main bit of test coverage that was still missing was to check that the non-default abbreviation-set files we supply are usable. Add that. Back-patch to supported branches, just because it seems like a good idea to keep this all in sync. http://git.postgresql.org/pg/commitdiff/c7f68bea22bf680a4eab4b8b1592b3c90bc634ac
  • Remove duplicate code from ReorderBufferCleanupTXN(). Andres is apparently the only hacker who thinks this code is better as-is. I (tgl) follow some of his logic, but the fact that it's setting off warnings from static code analyzers seems like a sufficient reason to put the complexity into a comment rather than the code. Aleksander Alekseev Discussion: <20160404190345.54d84ee8@fujitsu> http://git.postgresql.org/pg/commitdiff/b6182081be4a795d70b966be2542ad32d1ffbc20

Fujii Masao pushed:

  • Fix pg_xlogdump so that it handles cross-page XLP_FIRST_IS_CONTRECORD record. Previously pg_xlogdump failed to dump the contents of the WAL file if the file starts with the continuation WAL record which spans more than one pages. Since pg_xlogdump assumed that the continuation record always fits on a page, it could not find the valid WAL record to start reading from in that case. This patch changes pg_xlogdump so that it can handle a continuation WAL record which crosses a page boundary and find the valid record to start reading from. Back-patch to 9.3 where pg_xlogdump was introduced. Author: Pavan Deolasee Reviewed-By: Michael Paquier and Craig Ringer Discussion: CABOikdPsPByMiG6J01DKq6om2+BNkxHTPkOyqHM2a4oYwGKsqQ@mail.gmail.com http://git.postgresql.org/pg/commitdiff/bab7823a49bb210b8920ae59e5126d27e4d63833
  • Fix typos in comments. http://git.postgresql.org/pg/commitdiff/bd082231edbaf25626a023913394b611fe7928e8

Simon Riggs pushed:

Heikki Linnakangas pushed:

  • Remove support for OpenSSL versions older than 0.9.8. OpenSSL officially only supports 1.0.1 and newer. Some OS distributions still provide patches for 0.9.8, but anything older than that is not interesting anymore. Let's simplify things by removing compatibility code. Andreas Karlsson, with small changes by me. http://git.postgresql.org/pg/commitdiff/9b7cd59af1afcfbd786921d5cf73befb5fefa2f7
  • Use static inline functions for float <-> Datum conversions. Now that we are OK with using static inline functions, we can use them to avoid function call overhead of pass-by-val versions of Float4GetDatum, DatumGetFloat8, and Float8GetDatum. Those functions are only a few CPU instructions long, but they could not be written into macros previously, because we need a local union variable for the conversion. I kept the pass-by-ref versions as regular functions. They are very simple too, but they call palloc() anyway, so shaving a few instructions from the function call doesn't seem so important there. Discussion: <dbb82a4a-2c15-ba27-dd0a-009d2aa72b77@iki.fi> http://git.postgresql.org/pg/commitdiff/14cca1bf8e31ed39dbc26dd6c610f1113e759972
  • Support multiple iterators in the Red-Black Tree implementation. While we don't need multiple iterators at the moment, the interface is nicer and less dangerous this way. Aleksander Alekseev, with some changes by me. http://git.postgresql.org/pg/commitdiff/9f85784cae4d057f307b83b0d33edede33434f04
  • Speed up SUM calculation in numeric aggregates. This introduces a numeric sum accumulator, which performs better than repeatedly calling add_var(). The performance comes from using wider digits and delaying carry propagation, tallying positive and negative values separately, and avoiding a round of palloc/pfree on every value. This speeds up SUM(), as well as other standard aggregates like AVG() and STDDEV() that also calculate a sum internally. Reviewed-by: Andrey Borodin Discussion: <c0545351-a467-5b76-6d46-4840d1ea8aa4@iki.fi> http://git.postgresql.org/pg/commitdiff/9cca11c915e458323d0e746c68203f2c11da0302
  • Move code shared between libpq and backend from backend/libpq/ to common/. When building libpq, ip.c and md5.c were symlinked or copied from src/backend/libpq into src/interfaces/libpq, but now that we have a directory specifically for routines that are shared between the server and client binaries, src/common/, move them there. Some routines in ip.c were only used in the backend. Keep those in src/backend/libpq, but rename to ifaddr.c to avoid confusion with the file that's now in common. Fix the comment in src/common/Makefile to reflect how libpq actually links those files. There are two more files that libpq symlinks directly from src/backend: encnames.c and wchar.c. I don't feel compelled to move those right now, though. Patch by Michael Paquier, with some changes by me. Discussion: <69938195-9c76-8523-0af8-eb718ea5b36e@iki.fi> http://git.postgresql.org/pg/commitdiff/ec136d19b21791c845b1deeff43df137add0639e
  • Clarify the new Red-Black post-order traversal code a bit. Coverity complained about the for(;;) loop, because it never actually iterated. It was used just to be able to use "break" to exit it early. I agree with Coverity, that's a bit confusing, so refactor the code to use if-else instead. While we're at it, use a local variable to hold the "current" node. That's shorter and clearer than referring to "iter->last_visited" all the time. http://git.postgresql.org/pg/commitdiff/e21db14b8a6696a2b704b89df9c4be9cd0ea8a33

Ãlvaro Herrera pushed:

Robert Haas pushed:

Kevin Grittner pushed:

Correctifs en attente

Vik Fearing sent in a patch to fix some misbehaviors by using autovacuum better.

Haribabu Kommi sent in a patch to ensure that ecpg -? option works on Windows.

Craig Ringer sent in two revisions of a patch to report server_version_num alongside server_version in startup packet.

Andrew Borodin sent in three revisions of a patch to improve the performance of GiST penalty functions.

Vik Fearing sent in a patch to update sample configuration files to more modern settings.

KaiGai Kohei sent in a patch to add an optional callback to support a special optimization when a ForeignScan/CustomScan is located under the Limit node in plan tree.

Craig Ringer sent in six more revisions of a patch to add txid_status(bigint).

Michaël Paquier sent in two more revisions of a patch to rename pg_xlog and pg_clog to things that look less removable.

Tom Lane sent in a patch to fix some corner cases that cube_in rejects.

Michaël Paquier sent in another revision of a patch to fix a case that crashed pg_basebackup.

Andreas Karlsson sent in a patch to allow compiling with OpenSSL 1.1, remove OpenSSL 1.1 deprecation warnings, and remove px_get_pseudo_random_bytes.

Martín Marqués sent in another revision of a patch to fix the fact that extensions' tables are reloaded twice: once when restoring the extension, the other when the tables themselves get picked up.

Michaël Paquier sent in another revision of a patch to fix pg_receivelog.

Kyotaro HORIGUCHI sent in another revision of a patch to start on asynchronous and vectorized execution.

Kyotaro HORIGUCHI sent in a patch to fix some comments in GatherPath.single_copy.

Fujii Masao sent in three revisions of a patch to fix a GIN bug.

Maksim Milyutin sent in a patch to enable extraction of the state of a query execution from an external session via signals.

Peter Eisentraut sent in a patch to upgrade SERIALs to the new format.

Heikki Linnakangas sent in two revisions of a patch to reflect his conclusion that pinning a buffer in TupleTableSlot is unnecessary.

Jesper Pedersen sent in a patch to add hash index support in pageinspect.

Peter Eisentraut sent in another revision of a patch to add IDENTITY columns.

Mithun Cy sent in a patch to ensure that ecpg passes make.

Jeevan Chalke sent in a patch to push aggregates to a foreign server under some circumstances.

Peter Eisentraut sent in a patch to allow the use of ICU for sorting and other locale things.

Peter Eisentraut sent in a patch to add CREATE SEQUENCE AS <data type> clause.

Peter Eisentraut sent in a patch to add autonomous transactions.

Heikki Linnakangas sent in a patch to use static inline functions for Float <-> Datum conversions.

Ivan Kartyshov sent in a patch to make async slave wait for lsn to be replayed.

Peter Eisentraut sent in a PoC patch to support C++ builds of PostgreSQL.

Heikki Linnakangas and Andres Freund traded patches to optimize aggregates.

Pavel Stehule sent in a patch to add a \setfileref to psql.

Kevin Grittner sent in another revision of a patch to add trigger transition tables.

Craig Ringer sent in another revision of a patch to enable logical decoding to follow timelines.

Craig Ringer sent in another revision of a patch to add an optional --endpos LSN argument to pg_reclogical.

Simon Riggs and Abhijit Menon-Sen traded patches to change the recovery.conf API.

Pavan Deolasee sent in three revisions of a patch to add WARM, a technique to reduce write amplification when an indexed column of a table is updated.

Michael Banck sent in a patch to add -N (exclude schema(s)) to pg_restore.

Ivan Kartyshov sent in a patch to make pg_buffercache cheaper with large shmem.

Magnus Hagander sent in two revisions of a patch to pg_basebackup stream xlog to tar.

Marko Tiikkaja sent in another revision of a patch to add an INSERT ... SET syntax.

Petr Jelinek and Erik Rijkers traded patches to add logical replication.

Stephen Frost sent in a patch to add support for restrictive RLS policies.

Peter Eisentraut sent in a patch to add a pg_sequence catalog.

Simon Riggs sent in a patch to reduce lock levels with some comments as to how and why.

Kurt Roeckx sent in a patch to allow compiling with OpenSSL 1.1.

Amit Kapila sent in another revision of a patch to implement WAL-logged hash indexes.

Michaël Paquier sent in another revision of a patch to disallow database and role names with carriage return or linefeed in them.

Haribabu Kommi sent in a patch to add a new SQL counter statistics view, pg_stat_sql.

Michaël Paquier sent in two more revisions of a patch to fix some data durability issues in pg_basebackup and pg_receivexlog.

Rahila Syed sent in two revisions of a patch to cause psql to error when autocommit is turned on inside a transaction.

Tom Lane sent in another revision of a patch to add a \timing interval to psql.

Craig Ringer sent in three revisions of a patch to emit a HINT when COPY can't find a file.

Simon Riggs sent in a patch to fix docs' incorrect assumption that decoding slots cannot go backwards from SQL.

Etsuro Fujita sent in another revision of a patch to push down more full joins in the PostgreSQL FDW.

Andy Grundman sent in a patch to avoid use of __attribute__ when building with old Sun compiler versions.

Fabien COELHO sent in another revision of a patch to allow storing select results into variables in pgbench.

Claudio Freire and Simon Riggs traded patches to allow setting maintainance_work_mem or autovacuum_work_mem higher than 1GB (and be effective).

Craig Ringer sent in two revisions of a patch to dirty replication slots when accessed via sql interface.

Michaël Paquier sent in another revision of a patch to support SCRAM-SHA-256 for passwords, along with supporting syntax.

Tomas Vondra sent in another revision of a patch to allow index-only scans for expressions.

Vik Fearing sent in a patch to add --wait and --no-wait long options to match the shorter corresponding -w and -W in pg_ctl.

Tom Lane sent in another revision of a patch to enable transaction enum alters and renames.

Pavel Stehule sent in another revision of a patch to add xmltable().

Emre Hasegeli sent in another revision of a patch to fix some floating point comparison inconsistencies for the geometric types.

Jim Nasby sent in a patch to fix some formatting in the comments of execnodes.h.

Andreas Karlsson sent in two more revisions of a patch to fix compilation with OpenSSL 1.1.

Amit Kapila sent in another revision of a patch to use granular locking in CLOG.

Victor Wagner sent in another revision of a patch to implement failover on libpq connect level.

Craig Ringer sent in a patch to send catalog_xmin separately in hot standby feedback.