<p><strong>Nouvelles hebdomadaires de PostgreSQL - 16 mars 2008</strong></p> <p>Rassemblement de l'ITPUG sur IRC pour organiser les "PGDay.IT" qui auront lieu les 17 et 18 octobre 2008 &agrave; Prato. La r&eacute;union se fera en italien et commencera jeudi 18 mars &agrave; 21h30 CET&nbsp;: irc://irc.freenode.net/pgday-it</p> <p>La "United States PostgreSQL Association" a &eacute;t&eacute; lanc&eacute;e&nbsp;: <a target="_blank" href="http://www.postgresql.us">http://www.postgresql.us</a></p> <p>Dave Page a mis en place un wiki de documentation &agrave; destination des utilisateurs&nbsp;: <a target="_blank" href="http://wiki.postgresql.org/">http://wiki.postgresql.org/</a></p> <p><strong>Les nouveaut&eacute;s des produits d&eacute;riv&eacute;s</strong></p> <ul> <li>Recherche plein-texte en italien pour PostgreSQL 8.3 publi&eacute;e&nbsp;: <a target="_blank" href="http://www.develer.com/~piro/ispell-italian/italian-fts.html">http://www.develer.com/~piro/ispell-italian/italian-fts.html</a></li> <li>AM Lightning Debugger Client 1.0 disponible&nbsp;: <a target="_blank" href="http://www.amsoftwaredesign.com">http://www.amsoftwaredesign.com</a></li> <li>Devrim GUNDUZ a mis &agrave; disposition un nouveau liveCD avec la mise &agrave; jour de PostgreSQL 8.3.1, plruby et ptop, et les nouvelles inclusions de pg_filedump, ruby-pg et pgbouncer&nbsp;: <a target="_blank" href="http://yum.pgsqlrpms.org/livecd.php">http://yum.pgsqlrpms.org/livecd.php</a></li> <li>OpenRPT 2.3.0 a &eacute;t&eacute; publi&eacute;&nbsp;: <a target="_blank" href="http://pgfoundry.org/projects/openrpt/">http://pgfoundry.org/projects/openrpt/</a></li> <li>pgloader 2.3.0 est disponible&nbsp;: <a target="_blank" href="http://pgfoundry.org/projects/pgloader/">http://pgfoundry.org/projects/pgloader/</a></li> <li>PgWorksheet 1.9 a &eacute;t&eacute; publi&eacute;&nbsp;: <a target="_blank" href="http://pgfoundry.org/projects/pgworksheet/">http://pgfoundry.org/projects/pgworksheet/</a></li> <li>ptop 3.6.2-beta1 est disponible&nbsp;: <a target="_blank" href="http://ptop.projects.postgresql.org/">http://ptop.projects.postgresql.org/</a></li> <li>!SE-PostgreSQL v8.3 est disponible&nbsp;: <a target="_blank" href="http://download.fedora.redhat.com/pub/fedora/linux/development">http://download.fedora.redhat.com/pub/fedora/linux/development</a></li> </ul> <p><strong>Offres d'emplois autour de PostgreSQL en mars</strong></p> <p><a target="_blank" href="http://archives.postgresql.org/pgsql-jobs/2008-03/threads.php">http://archives.postgresql.org/pgsql-jobs/2008-03/threads.php</a></p> <p><strong>PostgreSQL Local</strong></p> <ul> <li>Le premier meeting du PUG d'Atlanta aura finalement lieu le 18 mars &agrave; 18h30&nbsp;: <a target="_blank" href="http://pugs.postgresql.org/node/366">http://pugs.postgresql.org/node/366</a></li> <li>Jon Asher fera une conf&eacute;rence sur PostORM au SFPUG le 18 mars &agrave; 17h30&nbsp;: <a target="_blank" href="http://postgresql.meetup.com/1/calendar/7321956/">http://postgresql.meetup.com/1/calendar/7321956/</a></li> <li>Le PUG marocain aura sa premi&egrave;re r&eacute;union &eacute;galement, le 22 mars &agrave; 9h du matin &agrave; Tanger&nbsp;: <a target="_blank" href="http://pugs.postgresql.org/moroccopug">http://pugs.postgresql.org/moroccopug</a></li> <li>Le LAPUG se r&eacute;unira le 28 mars &agrave; 19h, dans la salle de formation info de la cit&eacute; "Garden Grove" ("Youth Cafe")&nbsp;: <a target="_blank" href="http://pugs.postgresql.org/lapug">http://pugs.postgresql.org/lapug</a></li> <li>La PostgreSQL Conference East '08 est programm&eacute;e les 29 et 30 mars 2008 &agrave; l'Universit&eacute; du Maryland, College Park&nbsp;: <a target="_blank" href="http://www.postgresqlconference.org/">http://www.postgresqlconference.org/</a></li> <li>Le "PG UK day" aura lieu le 2 avril &agrave; Birmingham&nbsp;: <a target="_blank" href="http://www.postgresql.org.uk/">http://www.postgresql.org.uk/</a></li> <li>Le FISL 9.0 se d&eacute;roulera du 17 au 19 avril 2008 &agrave; la PUCRS de Porto Alegre (Br&eacute;sil)&nbsp;: <a target="_blank" href="https://fisl.softwarelivre.org/9.0/">https://fisl.softwarelivre.org/9.0/</a></li> <li>Les PGCon 2008 auront lieu du 20 au 23 mai &agrave; Ottawa&nbsp;: <a target="_blank" href="http://www.pgcon.org/2008/">http://www.pgcon.org/2008/</a></li> <li>L'appel aux propositions pour l'"Utah Open Source Conference 2008" est lanc&eacute; et celles-ci seront re&ccedil;ues jusqu'au 1er juin. Cette seconde &eacute;dition du rassemblement annuel est programm&eacute;e les 28, 29 et 30 ao&ucirc;t &agrave; Salt Lake City&nbsp;: <a target="_blank" href="http://2008.utosc.com/">http://2008.utosc.com/</a></li> </ul> <p><strong>PostgreSQL dans les m&eacute;dia</strong></p> <ul> <li>Planet PostgreSQL&nbsp;: <a target="_blank" href="http://www.planetpostgresql.org/">http://www.planetpostgresql.org/</a></li> <li>General Bits, Archives et ses manchettes occasionnelles&nbsp;: <a target="_blank" href="http://www.varlena.com/GeneralBits/">http://www.varlena.com/GeneralBits/</a></li> </ul> <p><i>PostgreSQL Weekly News / les nouvelles hebdomadaires vous sont offertes cette semaine par David Fetter. La traduction en est assur&eacute;e par l'&eacute;quipe PostgreSQLFr.</i></p> <p><i>Proposez vos articles ou annonces avant dimanche 15:00 (heure du Pacifique). Merci de les envoyer en anglais &agrave; david (a) fetter.org, en allemand &agrave; pwn (a) pgug.de, en italien &agrave; pwn (a) itpug.org.</i></p> <p><strong>Correctifs appliqu&eacute;s</strong></p> <p>Tom Lane a commit&eacute;&nbsp;:</p> <ul> <li>In pgsql/contrib/pgbench/pgbench.c, fix pgbench's getrand() function so that min and max have approximately the same chance of being selected as do numbers between them. Problem noted by Greg Stark; fix by Alexey Klyukin.</li> <li>Reduce memory consumption during VACUUM of large relations, by using FSMPageData (6 bytes) instead of PageFreeSpaceInfo (8 or 16 bytes) for the temporary array of page-free-space information. Itagaki Takahiro.</li> <li>In pgsql/src/backend/access/transam/xlog.c, remove no-longer-used XLogCacheByte field of XLogCtl. Itagaki Takahiro.</li> <li>Add a CaseSensitive parameter to synonym dictionaries. Simon Riggs.</li> <li>Increase the default value of log_min_messages to WARNING, so that NOTICE-grade messages are not logged by default. Per pgsql-hackers discussion back on 21-Nov-2007.</li> <li>Throw an error for negative LIMIT or OFFSET values, instead of silently treating them as zero. Simon Riggs</li> <li>Document and enforce that the usable range of setseed() arguments is -1 to 1, not 0 to 1. The actual behavior for values within this range does not change. Kris Jurka</li> <li>In pgsql/src/backend/utils/adt/tsvector.c, fix unportable coding of new error message, per Kris Jurka.</li> <li>Provide a build-time option to store large relations as single files, rather than dividing them into 1GB segments as has been our longtime practice. This requires working support for large files in the operating system; at least for the time being, it won't be the default. Zdenek Kotala</li> <li>Use -fwrapv in CFLAGS if we are using a version of gcc that accepts this flag. This prevents compiler optimizations that assume overflow won't occur, which breaks numerous overflow tests that we need to have working. It is known that gcc 4.3 causes problems and possible that 4.1 does. Per my proposal of some time ago and a recent report from Kris Jurka. Backpatch as far as 8.0, which is as far as the patch conveniently goes. 7.x was pretty short of overflow tests anyway, so it may not matter there, even assuming that anyone cares whether 7.x builds on recent gcc.</li> <li>Make TransactionIdIsInProgress check transam.c's single-item XID status cache before it goes groveling through the ProcArray. In situations where the same recently-committed transaction ID is checked repeatedly by tqual.c, this saves a lot of shared-memory searches. And it's cheap enough that it shouldn't hurt noticeably when it doesn't help. Concept and patch by Simon, some minor tweaking and comment-cleanup by Tom.</li> <li>In pgsql/contrib/pgbench/pgbench.c, add a comment explaining one of the ways that pgbench fails to fully comply with TPC-B. Per Itagaki Takahiro and discussion of bug#3681.</li> <li>Fix LISTEN/NOTIFY race condition reported by Laurent Birtz, by postponing pg_listener modifications commanded by LISTEN and UNLISTEN until the end of the current transaction. This allows us to hold the ExclusiveLock on pg_listener until after commit, with no greater risk of deadlock than there was before. Aside from fixing the race condition, this gets rid of a truly ugly kludge that was there before, namely having to ignore HeapTupleBeingUpdated failures during NOTIFY. There is a small potential incompatibility, which is that if a transaction issues LISTEN or UNLISTEN and then looks into pg_listener before committing, it won't see any resulting row insertion or deletion, where before it would have. It seems unlikely that anyone would be depending on that, though. This patch also disallows LISTEN and UNLISTEN inside a prepared transaction. That case had some pretty undesirable properties already, such as possibly allowing pg_listener entries to be made for PIDs no longer present, so disallowing it seems like a better idea than trying to maintain the behavior.</li> <li>In pgsql/src/backend/tcop/postgres.c, fix pg_plan_queries() to restore the previous setting of ActiveSnapshot (probably NULL) before exiting. Up to now it's just left the variable as it set it, which means that after we're done processing the current client message, ActiveSnapshot is probably pointing at garbage (because this function is typically run in MessageContext which will get reset). There doesn't seem to have been any code path in which that mattered before 8.3, but now the plancache module might try to use the stale value if the next client message is a Bind for a prepared statement that is in need of replanning. Per report from Alex Hunsaker.</li> <li>Fix heap_page_prune's problem with failing to send cache invalidation messages if the calling transaction aborts later on. Collapsing out line pointer redirects is a done deal as soon as we complete the page update, so syscache *must* be notified even if the VACUUM FULL as a whole doesn't complete. To fix, add some functionality to inval.c to allow the pending inval messages to be sent immediately while heap_page_prune is still running. The implementation is a bit chintzy: it will only work in the context of VACUUM FULL. But that's all we need now, and it can always be extended later if needed. Per my trouble report of a week ago.</li> <li>In pgsql/src/backend/utils/adt/varlena.c, fix varstr_cmp's special case for UTF8 encoding on Windows so that strings that are reported as "equal" by wcscoll() are checked to see if they really are bitwise equal, and are sorted per strcmp() if not. We made this happen a couple of years ago in the regular code path, but it unaccountably got left out of the Windows/UTF8 case (probably brain fade on my part at the time). As in the prior set of changes, affected users may need to reindex indexes on textual columns. Backpatch as far as 8.2, which is the oldest release we are still supporting on Windows.</li> <li>Update to tzdata 2008a distribution (Chilean DST law change).</li> <li>In pgsql/doc/src/sgml/release.sgml, update release notes for 8.3.1 and 8.2.7 releases.</li> <li>Stamp version 8.3.1, except for configure.in/configure.</li> <li>Stamp version 8.2.7, except for configure.in/configure.</li> <li>In pgsql/src/backend/postmaster/autovacuum.c, fix inappropriately-timed memory context switch in autovacuum_do_vac_analyze. This accidentally failed to fail before 8.3, because the context we were switching back to was long-lived anyway; but it sure looks risky as can be now. Well spotted by Pavan Deolasee.</li> <li>Change hash index creation so that rather than always establishing exactly two buckets at the start, we create a number of buckets appropriate for the estimated size of the table. This avoids a lot of expensive bucket-split actions during initial index build on an already-populated table. This is one of the two core ideas of Tom Raney and Shreya Bhargava's patch to reduce hash index build time. I'm committing it separately to make it easier for people to test the effects of this separately from the effects of their other core idea (pre-sorting the index entries by bucket number).</li> </ul> <p>Magnus Hagander a commit&eacute;&nbsp;:</p> <ul> <li>Implement enum type for guc parameters, and convert a couple of existing variables to it. More need to be converted, but I wanted to get this in before it conflicts with too much... Other than just centralising the text-to-int conversion for parameters, this allows the pg_settings view to contain a list of available options and allows an error hint to show what values are allowed.</li> <li>Bump catversion from guc enum patch, which I forgot. Sorry!</li> <li>Some cleanups of enum-guc code, per comments from Tom.</li> </ul> <p>Bruce Momjian a commit&eacute;&nbsp;:</p> <ul> <li>Add to TODO: "Consider increasing the minimum allowed number of shared buffers."</li> <li>Add URL for TODO: "Allow administrators to safely terminate individual sessions either via an SQL function or SIGTERM."</li> <li>Add URL for TODO: "Optimize referential integrity checks."</li> <li>Add to TODO: "Set up autovacuum to ignore statement_timeout set in postgresql.conf."</li> <li>In pgsql/doc/src/sgml/config.sgml, document that statement_timeout is not recommended in postgresql.conf because it affects all sessions, including autovacuum.</li> <li>Add to TODO: "Consider adding buffers the BGW finds reusable to the free list" and "Automatically tune bgwriter_delay based on activity rather then using a fixed interval."</li> <li>Remove from TODO: "Set up autovacuum to ignore statement_timeout set in postgresql.conf." per Alvaro Herrera.</li> <li>In pgsql/doc/src/sgml/config.sgml, back out doc addition that statement_timeout affects autovacuum.</li> <li>Add to TODO: "Allow statistics last vacuum/analyze execution times to be displayed without requiring stats_row_level to be enabled."</li> <li>In pgsql/doc/src/sgml/config.sgml, add "Setting statement_timeout in postgresql.conf is not recommended because it affects all sessions." Backpatch to 8.3.X.</li> <li>Add to TODO: "Prevent pg_dump/pg_restore from being affected by statement_timeout. Using psql to restore a pg_dump dump is also affected."</li> <li>Add to TODO for !PL/PgSQL?: "Review handling of MOVE and FETCH."</li> <li>Add to TODO: "Add temporal versions of generate_series()."</li> <li>Add URL for TODO: "Fix problem when multiple subtransactions of the same outer transaction hold different types of locks, and one subtransaction aborts."</li> <li>Add to TODO for VACUUM: "Consider a more compact data representation for dead tuples."</li> <li>Add to TODO: "Consider using a hash for joining to a large IN (VALUES ...) list."</li> <li>Add to TODO: "Consider increasing the number of default statistics target, and reduce statistics target overhead. Also consider having a larger statistics target for indexed columns and expression indexes."</li> <li>Add URL for TODO: "Consider increasing the number of default statistics target, and reduce statistics target overhead. Also consider having a larger statistics target for indexed columns and expression indexes."</li> <li>Add another URL for TODO: "Consider increasing the number of default statistics target, and reduce statistics target overhead. Also consider having a larger statistics target for indexed columns and expression indexes."</li> <li>Add to TODO: "Change memory allocation for multi-byte functions so memory is allocated inside conversion functions."</li> <li>Add to TODO: "Prefix command-line utilities like createuser with 'pg_'."</li> <li>Add to TODO: "Consider sorting writes during checkpoint."</li> <li>Add to TODO: "Consider normalizing fractions in postgresql.conf, perhaps using '%'."</li> <li>Add URL for TODO: "Reduce storage space for small NUMERICs."</li> <li>Update TODO to read: "Consider adding buffers the background writer finds reusable to the free list. Consider whether increasing BM_MAX_USAGE_COUNT improves performance."</li> <li>Add to TODO: "Test to see if calling PreallocXlogFiles() from the background writer will help with WAL segment creation latency."</li> <li>Add to TODO: "Research use of signals and sleep wake ups."</li> <li>Add to TODO: "Add automated check for invalid C++ source code constructs."</li> <li>Add to TODO for !PL/PgSQL?: "Improve logic of determining if an identifier is a variable or column name."</li> <li>Add to TODO for COPY: "Allow COPY in CSV mode to control whether "" is treated as NULL."</li> <li>Update the above TODO to read: "Allow COPY in CSV mode to control whether a quoted zero-length string is treated as NULL. Currently this is always treated as a zero-length string, which generates an error when loading into an integer column."</li> <li>In pgsql/src/bin/psql/copy.c, prevent psql \copy from accepting duplicate string parameters. Per report from Stephen Frost.</li> <li>Add URL for TODO: "Consider increasing NUM_CLOG_BUFFERS."</li> <li>Add URL for TODO: "Allow user configuration of TOAST thresholds."</li> <li>Add to TODO: "Consider simplifying how memory context resets handle child contexts."</li> <li>Add to TODO: "Allow domains to be cast."</li> <li>Add URL for TODO: "Improve speed with indexes. For large table adjustments during VACUUM FULL, it is faster to cluster or reindex rather than update the index. Also, index updates can bloat the index."</li> <li>Add to TODO: "Add array_accum() and array_to_set() functions for arrays."</li> <li>Add to TODO: "Remove use of MAKE_PTR and MAKE_OFFSET macros."</li> <li>Add to TODO for Win32: "Diagnose problem where shared memory can sometimes not be attached by postmaster children."</li> <li>Add URL for TODO: "Add REINDEX CONCURRENTLY, like CREATE INDEX CONCURRENTLY."</li> <li>Add to TODO for Win32: "Convert MSVC build system to remove most batch files."</li> <li>Add URL for TODO: "Consider a simplified API for full text searches."</li> <li>Update TODO: "Add array_accum() and array_to_set() functions for arrays" add "The standards specify array_agg() and UNNEST."</li> <li>Back out text search change to TODO.</li> <li>Add to TODO: "Consider a special data type for regular expressions."</li> <li>Add to TODO: "Expire published xmin for read-only and idle transactions."</li> <li>Add to TODO: "Include the symbolic SQLSTATE name in verbose error reports."</li> <li>Add URL for TODO: "Do async I/O for faster random read-ahead of data. Async I/O allows multiple I/O requests to be sent to the disk with results coming back asynchronously."</li> <li>Marc Fournier commited:</li> <li>Update configure for 8.3.1 prior to tag.</li> <li>Update configure for 8.2.7 prior to tag.</li> </ul> <p>Peter Eisentraut a commit&eacute;&nbsp;:</p> <ul> <li>Translation updates.</li> </ul> <p>Alvaro Herrera a commit&eacute;&nbsp;:</p> <ul> <li>Fix vacuum so that autovacuum is really not cancelled when doing an emergency job (i.e. to prevent Xid wraparound problems.) Bug reported by ITAGAKI Takahiro in 20080314103837.63D3.52131E4D@oss.ntt.co.jp, though I didn't use his patch.</li> <li>In pgsql/doc/src/sgml/install-win32.sgml, fix duplicate word, per Guillaume Lelarge.</li> <li>Modify interactions between sinval.c and sinvaladt.c. The code that actually deals with the queue, including locking etc, is all in sinvaladt.c. This means that the struct definition of the queue, and the queue pointer, are now internal "implementation details" inside sinvaladt.c. Per my proposal dated 25-Jun-2007 and followup discussion.</li> </ul> <p><strong>Correctifs rejet&eacute;s (&agrave; ce jour)</strong></p> <ul> <li>Pas de d&eacute;ception cette semaine :-)</li> </ul> <p><strong>Correctifs en attente</strong></p> <ul> <li>Zoltan Boszormenyi sent in a WIP patch to allow 64-bit integers and floats to get passed by value on 64-bit platforms, and to change 32-bit floats to be passed by value along the way.</li> <li>Heikki Linnakangas sent in two revisions of a patch which converts some linked lists into expandable arrays.</li> <li>Bruce Momjian sent in a patch which rejects conflicting options given to COPY...CSV in psql.</li> <li>ITAGAKI Takahiro sent in a patch intended to suppress compiler warnings in the mingw build.</li> </ul>