La date limite de dépôt des propositions de conférences pour les événements outre-manche a été reportée au 2 mai :
http://www.char14.info - propositions à simon AT 2ndQuadrant.com
http://www.postgresqlusergroup.org.uk - propositions à simon AT 2ndQuadrant.com

Les nouveautés des produits dérivés

Offres d'emplois autour de PostgreSQL en avril

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

Tom Lane a poussé :

  • pg_stat_statements forgot to let previous occupant of hook get control too. pgss_post_parse_analyze() neglected to pass the call on to any earlier occupant of the post_parse_analyze_hook. There are no other users of that hook in contrib/, and most likely none in the wild either, so this is probably just a latent bug. But it's a bug nonetheless, so back-patch to 9.2 where this code was introduced. http://git.postgresql.org/pg/commitdiff/78a3c9b6a5f6cc84abaf4e13deb58c620eb2161b
  • Fix broken logic in logical_heap_rewrite_flush_mappings(). It's blatantly obvious that commit 4d0d607a454ee832574afd52a3c515099cc85eb3 wasn't tested. The leak's real enough, though. http://git.postgresql.org/pg/commitdiff/c6a4ace5bf839b2480e8bb4c36bd3ec850c55c65
  • Fix documentation of FmgrInfo.fn_nargs. Some ancient comments claimed that fn_nargs could be -1 to indicate a variable number of input arguments; but this was never implemented, and is at variance with what we ultimately did with "variadic" functions. Update the comments. http://git.postgresql.org/pg/commitdiff/d26b042ce577a4012b9798528f0b1bcfa6e502eb
  • Allow polymorphic aggregates to have non-polymorphic state data types. Before 9.4, such an aggregate couldn't be declared, because its final function would have to have polymorphic result type but no polymorphic argument, which CREATE FUNCTION would quite properly reject. The ordered-set-aggregate patch found a workaround: allow the final function to be declared as accepting additional dummy arguments that have types matching the aggregate's regular input arguments. However, we failed to notice that this problem applies just as much to regular aggregates, despite the fact that we had a built-in regular aggregate array_agg() that was known to be undeclarable in SQL because its final function had an illegal signature. So what we should have done, and what this patch does, is to decouple the extra-dummy-arguments behavior from ordered-set aggregates and make it generally available for all aggregate declarations. We have to put this into 9.4 rather than waiting till later because it slightly alters the rules for declaring ordered-set aggregates. The patch turned out a bit bigger than I'd hoped because it proved necessary to record the extra-arguments option in a new pg_aggregate column. I'd thought we could just look at the final function's pronargs at runtime, but that didn't work well for variadic final functions. It's probably just as well though, because it simplifies life for pg_dump to record the option explicitly. While at it, fix array_agg() to have a valid final-function signature, and add an opr_sanity test to notice future deviations from polymorphic consistency. I also marked the percentile_cont() aggregates as not needing extra arguments, since they don't. http://git.postgresql.org/pg/commitdiff/f0fedfe82c8adea78354652d67c027a1a8fbce88
  • Fix incorrect pg_proc.proallargtypes entries for two built-in functions. pg_sequence_parameters() and pg_identify_object() have had incorrect proallargtypes entries since 9.1 and 9.3 respectively. This was mostly masked by the correct information in proargtypes, but a few operations such as pg_get_function_arguments() (and thus psql's \df display) would show the wrong data types for these functions' input parameters. In HEAD, fix the wrong info, bump catversion, and add an opr_sanity regression test to catch future mistakes of this sort. In the back branches, just fix the wrong info so that installations initdb'd with future minor releases will have the right data. We can't force an initdb, and it doesn't seem like a good idea to add a regression test that will fail on existing installations. Andres Freund http://git.postgresql.org/pg/commitdiff/a0f9358149b78c62871a0b7d3c167b78f9b2c77e
  • Reset pg_stat_activity.xact_start during PREPARE TRANSACTION. Once we've completed a PREPARE, our session is not running a transaction, so its entry in pg_stat_activity should show xact_start as null, rather than leaving the value as the start time of the now-prepared transaction. I think possibly this oversight was triggered by faulty extrapolation from the adjacent comment that says PrepareTransaction should not call AtEOXact_PgStat, so tweak the wording of that comment. Noted by Andres Freund while considering bug #10123 from Maxim Boguk, although this error doesn't seem to explain that report. Back-patch to all active branches. http://git.postgresql.org/pg/commitdiff/d19bd29f07aef9e508ff047d128a4046cc8bc1e2
  • Clean up temp installations after client program tests. Commit 7d0f493f19607774fdccb1a1ea06fdd96a3d9698 added infrastructure to perform tests in assorted src/bin/ subdirectories, but forgot to teach "make clean" to clean up the detritus the tests leave behind. http://git.postgresql.org/pg/commitdiff/49137ec9d469f744289d0dfa2487a7fc1ef217cb
  • Fix off-by-one bug in LWLockRegisterTranche(). Original coding failed to enlarge the array as required if the requested tranche_id was equal to LWLockTranchesAllocated. In passing, fix poor style of not casting the result of (re)palloc. http://git.postgresql.org/pg/commitdiff/4bfc5f1396b18da3a0db73e4406badc4ce793a1e
  • Record the proper typmod for an index expression column. We should use exprTypmod() to extract the typmod of the expression, instead of just blindly storing -1. This seems to have been an aboriginal oversight in commit fc8d970cbcdd6f025475822a4cf01dfda0873226 which introduced general-expression indexes. The consequences are only cosmetic at present, since the index machinery doesn't really look at typmod for index columns; but still it seems best to describe the column type as precisely as we can. Per off-list complaint from Thomas Fanghaenel. http://git.postgresql.org/pg/commitdiff/39b0c7681e465f3e486ca2a5d13fbbafbe25cb1a
  • Don't #include utils/palloc.h in common/fe_memutils.h. This breaks the principle that common/ ought not depend on anything in the server, not only code-wise but in the headers. The only arguable advantage is avoidance of duplication of half a dozen extern declarations, and even that is rather dubious, considering that the previous coding was wrong about which declarations to duplicate: it exposed pnstrdup() to frontend code even though no such function is provided in fe_memutils.c. On the same principle, don't #include utils/memutils.h in the frontend build of psprintf.c. This requires duplicating the definition of MaxAllocSize, but that seems fine to me: there's no a-priori reason why frontend code should use the same size limit as the backend anyway. In passing, clean up some rather odd layout and ordering choices that were imposed on palloc.h to reduce the number of #ifdefs required by the previous approach. Per gripe from Christoph Berg. There's still more work to do to make include/common/ clean, but this part seems reasonably noncontroversial. http://git.postgresql.org/pg/commitdiff/528c454b2ada89ca0f0cd9a64f939e775b55b879
  • Improve generation algorithm for database system identifier. As noted some time ago, the original coding had a typo ("|" for "^") that made the result less unique than intended. Even the intended behavior is obsolete since it was based on wanting to produce a usable value even if we didn't have int64 arithmetic --- a limitation we stopped supporting years ago. Instead, let's redefine the system identifier as tv_sec in the upper 32 bits (same as before), tv_usec in the next 20 bits, and the low 12 bits of getpid() in the remaining bits. This is still hardly guaranteed-universally-unique, but it's noticeably better than before. Per my proposal at <29019.1374535940@sss.pgh.pa.us> http://git.postgresql.org/pg/commitdiff/5035701e07e8bd395aa878465a102afd7b74e8c3
  • Can't completely get rid of #ifndef FRONTEND in palloc.h pg_controldata includes postgres.h not postgres_fe.h, so utils/palloc.h must be able to compile in a "#define FRONTEND" context. It appears that Solaris Studio is smart enough to persuade us to define PG_USE_INLINE, but not smart enough to not make a copy of unreferenced static functions; which leads to an unsatisfied reference to CurrentMemoryContext. So we need an #ifndef FRONTEND around that declaration. Per buildfarm. http://git.postgresql.org/pg/commitdiff/a9baeb361d635963a19a0268a7d60636c813d2ee

Heikki Linnakangas a poussé :

Peter Eisentraut a poussé :

Bruce Momjian a poussé :

Magnus Hagander a poussé :

Alvaro Herrera a poussé :

  • Fix race when updating a tuple concurrently locked by another process. If a tuple is locked, and this lock is later upgraded either to an update or to a stronger lock, and in the meantime some other process tries to lock, update or delete the same tuple, it (the tuple) could end up being updated twice, or having conflicting locks held. The reason for this is that the second updater checks for a change in Xmax value, or in the HEAP_XMAX_IS_MULTI infomask bit, after noticing the first lock; and if there's a change, it restarts and re-evaluates its ability to update the tuple. But it neglected to check for changes in lock strength or in lock-vs-update status when those two properties stayed the same. This would lead it to take the wrong decision and continue with its own update, when in reality it shouldn't do so but instead restart from the top. This could lead to either an assertion failure much later (when a multixact containing multiple updates is detected), or duplicate copies of tuples. To fix, make sure to compare the other relevant infomask bits alongside the Xmax value and HEAP_XMAX_IS_MULTI bit, and restart from the top if necessary. Also, in the belt-and-suspenders spirit, add a check to MultiXactCreateFromMembers that a multixact being created does not have two or more members that are claimed to be updates. This should protect against other bugs that might cause similar bogus situations. Backpatch to 9.3, where the possibility of multixacts containing updates was introduced. (In prior versions it was possible to have the tuple lock upgraded from shared to exclusive, and an update would not restart from the top; yet we're protected against a bug there because there's always a sleep to wait for the locking transaction to complete before continuing to do anything. Really, the fact that tuple locks always conflicted with concurrent updates is what protected against bugs here.) Per report from Andrew Dunstan and Josh Berkus in thread at http://www.postgresql.org/message-id/534C8B33.9050807@pgexperts.com Bug analysis by Andres Freund. http://git.postgresql.org/pg/commitdiff/1a917ae8610d44985fd2027da0cfe60ccece9104

Correctifs rejetés (à ce jour)

  • No one was disappointed this week

Correctifs en attente

  • Dmitry Voronin sent in two more revisions of a patch to add functionality to the sslinfo contrib extension.
  • Bruce Momjian sent in a patch to fix an issue where pg_dump was ignoring read and write errors, which manifested as failure to produce a return code in the -Fd case.
  • Etsuro Fujita sent in a patch to revert that part of CREATE FOREIGN TABLE that could create an OID column.
  • Andres Freund sent in a patch to add a GUC which controls whether shared memory is System V or mmap.
  • Etsuro Fujita sent in a patch to fix the docs for ALTER TABLE.
  • Michael Paquier sent in a patch to ensure correct compilation of pg_recvlogical on Windows.
  • Etsuro Fujita sent in a patch to fix the docs for foreign data wrapper handlers.
  • Gurjeet Singh and Tom Lane traded patches to flatten long AND/OR lists in queries rather than processing them recursively as occurs now.
  • Tom Lane sent in another revision of a patch to remove TOAST pointers from composite Datums.
  • Gregory Stark sent in another revision of a patch to improve the display of wide tables in psql.