La conférence PGDay du FOSDEM sera tenue juste avant l'ouverture du meeting, le 1er février à Bruxelles, Belgique. Les appels à conférenciers, pour cette conférence et pour le cursus PostgreSQL du FOSDEM, sont lancés : http://fosdem2013.pgconf.eu/callforpapers/

Le PGDay 2013 de New-York City aura lieu le 22 mars. La date limite de candidature des conférenciers est fixée au 7 janvier 2013, midi (heure de New-York). Envois à l'adresse papers AT nycpug DOT org : http://pgday.nycpug.org/speakers

Les nouveautés des produits dérivés

Offres d'emplois autour de PostgreSQL en novembre

PostgreSQL Local

  • La sixième édition du PGDay italien aura lieu à Prato, Toscane, le 23 novembre 2012. Un appel international à conférenciers est lancé, conférences et présentations en anglais sont acceptées. Informations anglophones sur le processus de candidature disponibles ci-après : http://2012.pgday.it/call-for-papers/international-call-for-papers/

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é :

  • Silence "expression result unused" warnings in AssertVariableIsOfTypeMacro. At least clang 3.1 generates those warnings. Prepend (void) to avoid them, like we have in AssertMacro. http://git.postgresql.org/pg/commitdiff/c9d44a75d48ed8a9b9275b95be1fadaa562f3826
  • Use correct text domain for translating errcontext() messages. errcontext() is typically used in an error context callback function, not within an ereport() invocation like e.g errmsg and errdetail are. That means that the message domain that the TEXTDOMAIN magic in ereport() determines is not the right one for the errcontext() calls. The message domain needs to be determined by the C file containing the errcontext() call, not the file containing the ereport() call. Fix by turning errcontext() into a macro that passes the TEXTDOMAIN to use for the errcontext message. "errcontext" was used in a few places as a variable or struct field name, I had to rename those out of the way, now that errcontext is a macro. We've had this problem all along, but this isn't doesn't seem worth backporting. It's a fairly minor issue, and turning errcontext from a function to a macro requires at least a recompile of any external code that calls errcontext(). http://git.postgresql.org/pg/commitdiff/dbdf9679d7d61b03a3bf73af9b095831b7010eb5
  • Oops, have to rename local variables called 'errcontext' in contrib, too. As pointed out by Alvaro Herrera. http://git.postgresql.org/pg/commitdiff/d092d116ed047ebb923ada112235a8866571731c

Peter Eisentraut a poussé :

Tom Lane a poussé :

  • Fix multiple problems in WAL replay. Most of the replay functions for WAL record types that modify more than one page failed to ensure that those pages were locked correctly to ensure that concurrent queries could not see inconsistent page states. This is a hangover from coding decisions made long before Hot Standby was added, when it was hardly necessary to acquire buffer locks during WAL replay at all, let alone hold them for carefully-chosen periods. The key problem was that RestoreBkpBlocks was written to hold lock on each page restored from a full-page image for only as long as it took to update that page. This was guaranteed to break any WAL replay function in which there was any update-ordering constraint between pages, because even if the nominal order of the pages is the right one, any mixture of full-page and non-full-page updates in the same record would result in out-of-order updates. Moreover, it wouldn't work for situations where there's a requirement to maintain lock on one page while updating another. Failure to honor an update ordering constraint in this way is thought to be the cause of bug #7648 from Daniel Farina: what seems to have happened there is that a btree page being split was rewritten from a full-page image before the new right sibling page was written, and because lock on the original page was not maintained it was possible for hot standby queries to try to traverse the page's right-link to the not-yet-existing sibling page. To fix, get rid of RestoreBkpBlocks as such, and instead create a new function RestoreBackupBlock that restores just one full-page image at a time. This function can be invoked by WAL replay functions at the points where they would otherwise perform non-full-page updates; in this way, the physical order of page updates remains the same no matter which pages are replaced by full-page images. We can then further adjust the logic in individual replay functions if it is necessary to hold buffer locks for overlapping periods. A side benefit is that we can simplify the handling of concurrency conflict resolution by moving that code into the record-type-specfic functions; there's no more need to contort the code layout to keep conflict resolution in front of the RestoreBkpBlocks call. In connection with that, standardize on zero-based numbering rather than one-based numbering for referencing the full-page images. In HEAD, I removed the macros XLR_BKP_BLOCK_1 through XLR_BKP_BLOCK_4. They are still there in the header files in previous branches, but are no longer used by the code. In addition, fix some other bugs identified in the course of making these changes: spgRedoAddNode could fail to update the parent downlink at all, if the parent tuple is in the same page as either the old or new split tuple and we're not doing a full-page image: it would get fooled by the LSN having been advanced already. This would result in permanent index corruption, not just transient failure of concurrent queries. Also, ginHeapTupleFastInsert's "merge lists" case failed to mark the old tail page as a candidate for a full-page image; in the worst case this could result in torn-page corruption. heap_xlog_freeze() was inconsistent about using a cleanup lock or plain exclusive lock: it did the former in the normal path but the latter for a full-page image. A plain exclusive lock seems sufficient, so change to that. Also, remove gistRedoPageDeleteRecord(), which has been dead code since VACUUM FULL was rewritten. Back-patch to 9.0, where hot standby was introduced. Note however that 9.0 had a significantly different WAL-logging scheme for GIST index updates, and it doesn't appear possible to make that scheme safe for concurrent hot standby queries, because it can leave inconsistent states in the index even between WAL records. Given the lack of complaints from the field, we won't work too hard on fixing that branch. http://git.postgresql.org/pg/commitdiff/3bbf668de9f1bc172371681e80a4e769b6d014c8
  • Fix memory leaks in record_out() and record_send(). record_out() leaks memory: it fails to free the strings returned by the per-column output functions, and also is careless about detoasted values. This results in a query-lifespan memory leakage when returning composite values to the client, because printtup() runs the output functions in the query-lifespan memory context. Fix it to handle these issues the same way printtup() does. Also fix a similar leakage in record_send(). (At some point we might want to try to run output functions in shorter-lived memory contexts, so that we don't need a zero-leakage policy for them. But that would be a significantly more invasive patch, which doesn't seem like material for back-patching.) In passing, use appendStringInfoCharMacro instead of appendStringInfoChar in the innermost data-copying loop of record_out, to try to shave a few cycles from this function's runtime. Per trouble report from Carlos Henrique Reimer. Back-patch to all supported versions. http://git.postgresql.org/pg/commitdiff/273986bf0d39e5166eb15ba42ebff4803e23a688
  • Fix the int8 and int2 cases of (minimum possible integer) % (-1). The correct answer for this (or any other case with arg2 = -1) is zero, but some machines throw a floating-point exception instead of behaving sanely. Commit f9ac414c35ea084ff70c564ab2c32adb06d5296f dealt with this in int4mod, but overlooked the fact that it also happens in int8mod (at least on my Linux x86_64 machine). Protect int2mod as well; it's not clear whether any machines fail there (mine does not) but since the test is so cheap it seems better safe than sorry. While at it, simplify the original guard in int4mod: we need only check for arg2 == -1, we don't need to check arg1 explicitly. Xi Wang, with some editing by me. http://git.postgresql.org/pg/commitdiff/a235b85a0ba06666dbbfdb9249a65dbfa9b42ebd
  • Improve check_partial_indexes() to consider join clauses in proof attempts. Traditionally check_partial_indexes() has only looked at restriction clauses while trying to prove partial indexes usable in queries. However, join clauses can also be used in some cases; mainly, that a strict operator on "x" proves an "x IS NOT NULL" index predicate, even if the operator is in a join clause rather than a restriction clause. Adding this code fixes a regression in 9.2, because previously we would take join clauses into account when considering whether a partial index could be used in a nestloop inner indexscan path. 9.2 doesn't handle nestloop inner indexscans in the same way, and this consideration was overlooked in the rewrite. Moving the work to check_partial_indexes() is a better solution anyway, since the proof applies whether or not we actually use the index in that particular way, and we don't have to do it over again for each possible outer relation. Per report from Dave Cramer. http://git.postgresql.org/pg/commitdiff/1746ba92565d130c3b5c6fc285ac57f00cf6bf75
  • Assert that WaitLatch's timeout is not more than INT_MAX milliseconds. The behavior with larger values is unspecified by the Single Unix Spec. It appears that BSD-derived kernels report EINVAL, although Linux does not. If waiting for longer intervals is desired, the calling code has to do something to limit the delay; we can't portably fix it here since "long" may not be any wider than "int" in the first place. Part of response to bug #7670, though this change doesn't fix that (in fact, it converts the problem from an ERROR into an Assert failure). No back-patch since it's just an assertion addition. http://git.postgresql.org/pg/commitdiff/14ddff44c22cb358775d5aad6953f0ce0fdb64cf
  • Fix syslogger to not fail when log_rotation_age exceeds 231 milliseconds. We need to avoid calling WaitLatch with timeouts exceeding INT_MAX. Fortunately a simple clamp will do the trick, since no harm is done if the wait times out before it's really time to rotate the log file. Per bug #7670 (probably bug #7545 is the same thing, too). In passing, fix bogus definition of log_rotation_age's maximum value in guc.c --- it was numerically right, but only because MINS_PER_HOUR and SECS_PER_MINUTE have the same value. Back-patch to 9.2. Before that, syslogger wasn't using WaitLatch. http://git.postgresql.org/pg/commitdiff/d038966ddb918872700f9f21affbc84d6bc2c029
  • Limit values of archive_timeout, post_auth_delay, auth_delay.milliseconds. The previous definitions of these GUC variables allowed them to range up to INT_MAX, but in point of fact the underlying code would suffer overflows or other errors with large values. Reduce the maximum values to something that won't misbehave. There's no apparent value in working harder than this, since very large delays aren't sensible for any of these. (Note: the risk with archive_timeout is that if we're late checking the state, the timestamp difference it's being compared to might overflow. So we need some amount of slop; the choice of INT_MAX/2 is arbitrary.) Per followup investigation of bug #7670. Although this isn't a very significant fix, might as well back-patch. http://git.postgresql.org/pg/commitdiff/b6e3798f3aa2747db145f25e03a8d34f2e5ec8c8

Simon Riggs a poussé :

Bruce Momjian a poussé :

Correctifs rejetés (à ce jour)

  • Karl O. Pinc's patch to document the automatically created names of constraints and indexes. We're not guaranteeing these will remain stable.
  • Nicholas White's patch to fix a mis-compilation on cygwin and mingw. Turned out to be a misconfiguration.

Correctifs en attente

  • Kyotaro HORIGUCHI sent in another revision of the patch to reduce palloc's in numeric operations.
  • Kyotaro HORIGUCHI sent in another revision of the identity projection patch.
  • Asif Rehman sent in a patch intended to fix a problem in PL/pgsql where functions can't return a row expression.
  • Karl O. Pinc sent in another revision of the patch to add a --truncate-tables option to pg_restore.
  • Andrew Dunstan sent in a patch to make vacuumlo use a cursor.
  • Dimitri Fontaine sent in a RFC patch to implement pg_dump --extension-script.
  • Peter Eisentraut sent in a patch to enable using LDAP URLs in pg_hba.conf.
  • Karl O. Pinc sent in a patch to document when search_path is used in secure functions.
  • Peter Eisentraut sent in a patch to add CREATE RECURSIVE VIEW.
  • Peter Geoghegan sent in a patch to recommend settings for the commit_delay parameter.
  • Abhijit Menon-Sen sent in two revisions of a patch to create a binary heap implementation.
  • Etsuro Fujita sent in another revision of the patch to add PRE- and POST-processor options to COPY.
  • Atri Sharma sent in another revision of a patch to mitigate hint bit I/O.
  • Alvaro Herrera sent in another revision of the patch to implement foreign key locks.
  • Kevin Grittner sent in a patch to implement materialized views.
  • Jeff Davis sent in two more revisions of a patch to add disk page checksums.
  • Andres Freund sent in a placeholder patch, to be replaced by Abhijit Menon-Sen's above, for a binary heap implementation.
  • Andres Freund sent in another revision of the patch to a add new function pg_relation_by_filenode to look up a relation given the tablespace and the filenode OIDs.
  • Andres Freund sent in another revision of a patch to add a new RELFILENODE syscache to fetch a pg_class entry via (reltablespace, relfilenode).
  • Andres Freund sent in new revisions of replication design document and a snapshot building design document.
  • Andres Freund sent in another revision of a patch to introduce InvalidCommandId and declare that to be the new maximum for CommandCounterIncrement.
  • Andres Freund sent in another revision of a patch to allow walsenders to connect to a specific database.
  • Andres Freund sent in another revision of a patch to introduce pg_receivellog, the pg_receivexlog equivalent for logical changes. Michael Paquier sent in a follow-on patch adding the installer for pg_receivellog.
  • Andres Freund sent in another revision of a patch to add a simple decoding module in contrib named 'test_decoding'.
  • Andres Freund sent in another revision of a patch to Introduce wal decoding via catalog timetravel.
  • Andres Freund sent in another revision of a patch to store the number of subtransactions in xl_running_xacts separately from toplevel xids.
  • Andres Freund sent in another revision of a patch to add simple xlogdump tool.
  • Andres Freund and Alvaro Herrera traded patches to add support for a generic wal reading facility dubbed XLogReader.
  • Andres Freund sent in another revision of a patch to adjust all *Satisfies routines to take a HeapTuple instead of a HeapTupleHeader.
  • Andres Freund sent in another revision of a patch to add a new relmapper.c function RelationMapFilenodeToOid that acts as a reverse of RelationMapOidToFilenode.
  • Amit Kapila sent in two more revisions of a patch to allow postgresql.conf values to be changed via SQL.
  • Shigeru HANADA sent in another revision of a patch to add a FDW for PostgreSQL.
  • KaiGai Kohei sent in another revision of a patch to refactor the ALTER commands.
  • Karl O. Pinc sent in a patch to enable controlling the destination of psql's error stream.
  • KaiGai Kohei sent in another revision of a patch to implement row-level access control.
  • KaiGai Kohei sent in two more revisions of a patch to implement OAT_POST_ALTER object access hooks.
  • Greg Smith sent in a WIP patch saving Timing Events via a new hook.
  • Amit Kapila sent in a patch to make pg_basebackup and pg_receivexlog non-blocking.
  • Heikki Linnakangas sent in two more revisions of a patch to enable switching timelines over streaming replication.
  • Robert Haas sent in another revision of a patch to deal with tuplesort memory usage via grow_memtuples.
  • KaiGai Kohei sent in another revision of a patch to enable writing to foreign tables.
  • Fujii Masao sent in a patch extending pg_trgm to be able to use a GIN index in partial matches.
  • Pavel Stehule sent in a patch to add a width specification for s specifier (format function) and fix behavior when both positional and ordered placeholders are used.
  • Amit Kapila sent in another revision of a patch to compute the max LSN of data pages.
  • Euler Taveira de Oliveira sent in another revision of a patch to enable changing global configuration settings from SQL.
  • Phil Sorber sent in another revision of a patch to implement a pg_ping utility.
  • Simon Riggs sent in a partial WIP patch implementing part of Jeff Davis's suggestion as to how to reduce the number of hint bits.
  • Alexander Korotkov sent in a WIP patch to enable GIN indexes to store additional information with item pointers in posting lists and trees.
  • Tomas Vondra sent in another revision of a patch to allow reducing the logging load via not writing all logs.
  • JiangGuiqing sent in a patch to fix ecpg library installations on Windows/MSVC.