<p><strong>Nouvelles hebdomadaires de PostgreSQL - 26 juillet 2009</strong></p> <p>Si vous utilisez une plateforme Win32, merci de nous aider dans les tests du patch corrigeant l'inf&acirc;me <em>&ldquo;failed to re-attach to shared memory&rdquo;&nbsp;</em>: <a href="http://blog.hagander.net/archives/149-Help-us-test-a-patch-for-the-Win32-shared-memory-issue.html">http://blog.hagander.net/archives/149-Help-us-test-a-patch-for-the-Win32-shared-memory-issue.html</a></p> <p><strong>Les nouveaut&eacute;s des produits d&eacute;riv&eacute;s</strong></p> <ul> <li>psqlODBC 08.04.0100&nbsp;: <a target="_blank" href="http://psqlodbc.projects.postgresql.org/release.html">http://psqlodbc.projects.postgresql.org/release.html</a></li> <li>Lancement de l'&ldquo;Open Source Database Magazine&rdquo; avec un article de Robert Treat&nbsp;: <a target="_blank" href="http://www.osdbzine.net">http://www.osdbzine.net</a></li> <li>Lancement &eacute;galement de l'&ldquo;Open Source Database Podcast&rdquo;&nbsp;: <a target="_blank" href="http://www.osdbzine.net/podcast/osdbpodcast.xml">http://www.osdbzine.net/podcast/osdbpodcast.xml</a></li> <li>PostGIS 1.4.0, un syst&egrave;me g&eacute;ospatial pour PostgreSQL&nbsp;: <a target="_blank" href="http://postgis.refractions.net/">http://postgis.refractions.net/</a></li> </ul> <p>(<a target="_blank" href="http://www.postgresql.org/community/weeklynews/pwn20090726">lien vers l'article original</a>)</p> <p><strong>Offres d'emplois autour de PostgreSQL en juillet</strong></p> <ul> <li><a target="_blank" href="http://archives.postgresql.org/pgsql-jobs/2009-07/threads.php">http://archives.postgresql.org/pgsql-jobs/2009-07/threads.php</a></li> </ul> <p><strong>PostgreSQL Local</strong></p> <ul> <li>L'"OpenSQL Camp" aura lieu les 22 &amp; 23 ao&ucirc;t &agrave; S<sup>t</sup> Augustin (All.), pr&egrave;s de Bonn et de Cologne. La date limite pour les propositions de conf&eacute;rences est le 19 juillet 2009&nbsp;: <a target="_blank" href="http://opensqlcamp.org/Events/2009/Call_for_Participation">http://opensqlcamp.org/Events/2009/Call_for_Participation</a></li> <li>Le PUG allemand a obtenu un emplacement d&eacute;veloppeur au FrOSCon le dimanche 23 ao&ucirc;t 2009. L'appel &agrave; conf&eacute;rences est ouvert&nbsp;: <a target="_blank" href="http://andreas.scherbaum.la/blog/archives/573-Call-for-Papers-fuer-den-PostgreSQL-Devroom-auf-der-FrOSCon-2009.html">http://andreas.scherbaum.la/blog/archives/573-Call-for-Papers-fuer-den-PostgreSQL-Devroom-auf-der-FrOSCon-2009.html</a></li> <li>L'appel &agrave; conf&eacute;rences pour la "PyCon Argentina" est lanc&eacute; jusqu'&agrave; la date du 29 juin 2009, 23h59 ART [ndt: UTC-3 ?]. La conf&eacute;rence elle-m&ecirc;me aura lieu &agrave; Buenos Aires les 4 &amp; 5 septembre 2009&nbsp;: <a target="_blank" href="http://ar.pycon.org/2009/rfp/">http://ar.pycon.org/2009/rfp/</a></li> <li>Andreas (ads) Scherbaum enseignera au centre pour adultes de Magdeburg (All.) du 7 au 11 septembre 2009 sur le sujet "PostgreSQL for Corporate Use". D&eacute;tails ci-dessous&nbsp;: <a target="_blank" href="http://andreas.scherbaum.la/blog/archives/574-PostgreSQL-als-Bildungsurlaub.html">http://andreas.scherbaum.la/blog/archives/574-PostgreSQL-als-Bildungsurlaub.html</a></li> <li>Il y aura une conf&eacute;rence &agrave; Athens (Georgie, &Eacute;tats-Unis) le 19 septembre 2009. L'appel aux conf&eacute;rences est ouvert&nbsp;: <a target="_blank" href="http://www.postgresqlconference.org/2009/pgday/athens">http://www.postgresqlconference.org/2009/pgday/athens</a></li> <li>Une suite de conf&eacute;rences est organis&eacute;e &agrave; Seattle (&Eacute;tat de Washington, &Eacute;tats-Unis) du 16 au 18 octobre 2009. L'appel &agrave; conf&eacute;rences est ouvert&nbsp;: <a target="_blank" href="http://www.postgresqlconference.org/2009/west">http://www.postgresqlconference.org/2009/west</a></li> <li>La "PGCon Brazil" prendra place &agrave; l'Unicamp de Campinas (&Eacute;tat de S&atilde;o Paulo) les 23 &amp; 24 octobre 2009. L'appel &agrave; conf&eacute;rences est lanc&eacute;&nbsp;: <a target="_blank" href="http://pgcon.postgresql.org.br/2009/chamadas.en.php">http://pgcon.postgresql.org.br/2009/chamadas.en.php</a></li> <li>Le PGDay.EU 2009 est programm&eacute; pour les 6 &amp; 7 novembre 2009 &agrave; Telecom ParisTech [ndt: ENST ?]&nbsp;: <a target="_blank" href="http://www.pgday.eu/">http://www.pgday.eu/</a></li> <li>Vos propositions de conf&eacute;rences sont attendues pour le 10<sup>&egrave;me</sup> anniversaire du JPUG. Le rassemblement aura lieu les 20 &amp; 21 novembre 2009 &agrave; Tokyo, Japan&nbsp;: <a target="_blank" href="http://archives.postgresql.org/pgsql-announce/2009-05/msg00018.php">http://archives.postgresql.org/pgsql-announce/2009-05/msg00018.php</a></li> </ul> <p><strong>PostgreSQL dans les m&eacute;dia</strong></p> <ul> <li>Planet PostgreSQL&nbsp;: <a target="_blank" href="http://planet.postgresql.org/">http://planet.postgresql.org/</a></li> <li>Planet PostgreSQLFr&nbsp;: <a target="_blank" href="http://planete.postgresql.fr/">http://planete.postgresql.fr/</a></li> </ul> <p><i>PostgreSQL Weekly News / les nouvelles hebdomadaires vous sont offertes cette semaine par David Fetter. Traduction par l'&eacute;quipe PostgreSQLFr sous licence CC BY-NC-SA.</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>Peter Eisentraut a commit&eacute;&nbsp;:</p> <ul> <li>Use errcontext mechanism in PL/Python. Error messages from PL/Python now always mention the function name in the CONTEXT: field. This also obsoletes the few places that tried to do the same manually. Regression test files are updated to work with Python 2.4-2.6. I don't have access to older versions right now.</li> <li>In pgsql/doc/src/sgml/Makefile, small additional clean from the rearrangement of the HTML index build rules</li> <li>In pgsql/src/tools/editors/emacs.samples, add a further customization to the SGML Emacs mode to prevent the use of tabs in the documentation source.</li> <li>Remove translated FAQs. The English FAQ has been moved to the wiki, so the translated versions should have been removed at that point as well. The FAQ_MINGW.html should have been removed when the platform FAQs were integrated into the documentation (or earlier). Applied to both 8.4 and 8.5</li> <li>Change pg_listener attribute number constants to match the usual pattern. It appears that, for no particularly good reason, pg_listener.h deviates from the usual convention for declaring attribute number constants. Normally, it's #define Anum_{catalog-name}_{column-name} {attribute-number} pg_listener.h, however substitutes a different string that is similar, but not the same as, the column name. This change fixes that. Author: Robert Haas</li> <li>In pgsql/doc/src/sgml/func.sgml, clarify NULLIF example. Found by Vesa-Matti J Kari.</li> <li>Document \dg+ and \du+. The fact that \dg and \du take the + option was missing in the documentation. Backpatched to 8.4. Author: Andreas Wenk.</li> <li>In pgsql/src/backend/access/gist/gistsplit.c, fix the fix for the gist error message</li> </ul> <p>Alvaro Herrera a commit&eacute;&nbsp;:</p> <ul> <li>In pgsql/src/include/Makefile, install src/include/utils/fmgroids.h on VPATH builds too. The original coding was not dealing specially with this file being a symlink, with the end result that it was not installed in VPATH builds. Oddly enough, the clean target does know about it ...</li> </ul> <p>Bruce Momjian a commit&eacute;&nbsp;:</p> <ul> <li>In pgsql/src/bin/pg_dump/pg_dump.c, properly restore pg_largeobject.relfozenxid in binary upgrade mode. Backpatch to 8.4.X.</li> </ul> <p>Tom Lane a commit&eacute;&nbsp;:</p> <ul> <li>Fix another semijoin-ordering bug. We already knew that we couldn't reorder a semijoin into or out of the righthand side of another semijoin, but actually it doesn't work to reorder it into or out of the righthand side of a left or antijoin, either. Per bug #4906 from Mathieu Fenniak. This was sloppy thinking on my part. This identity does work: ( A left join B on (Pab) ) semijoin C on (Pac) == ( A semijoin C on (Pac) ) left join B on (Pab) but I failed to see that that doesn't mean this does: ( A left join B on (Pab) ) semijoin C on (Pbc) != A left join ( B semijoin C on (Pbc) ) on (Pab)</li> <li>In pgsql/src/backend/utils/mmgr/aset.c, speed up AllocSetFreeIndex, which is a significant cost in palloc and pfree, by using a lookup table instead of a naive shift-and-count loop. Based on code originally posted by Sean Eron Anderson at <a target="_blank" href="http://graphics.stanford.edu/%7eseander/bithacks.html.">http://graphics.stanford.edu/%7eseander/bithacks.html.</a> Greg Stark did the research and benchmarking to show that this is what we should use. Jeremy Kerr first noticed that this is a hotspot that could be optimized, though we ended up not using his suggestion of platform-specific bit-searching code.</li> <li>Make pg_dump/pg_restore --clean options drop large objects too. In passing, make invocations of lo_xxx functions a bit more schema-safe. Itagaki Takahiro</li> <li>Tweak TOAST code so that columns marked with MAIN storage strategy are not forced out-of-line unless that is necessary to make the row fit on a page. Previously, they were forced out-of-line if needed to get the row down to the default target size (1/4th page). Kevin Grittner</li> <li>Change do_tup_output() to take Datum/isnull arrays instead of a char * array, so it doesn't go through BuildTupleFromCStrings. This is more or less a wash for current uses, but will avoid inefficiency for planned changes to EXPLAIN. Robert Haas.</li> <li>In pgsql/src/backend/optimizer/path/joinrels.c, fix another thinko in join_is_legal's handling of semijoins: we have to test for the case that the semijoin was implemented within either input by unique-ifying its RHS before we test to see if it appears to match the current join situation. The previous coding would select semijoin logic in situations where we'd already unique-ified the RHS and joined it to some unrelated relation(s), and then came to join it to the semijoin's LHS. That still gave the right answer as far as the semijoin itself was concerned, but would lead to incorrectly examining only an arbitrary one of the matchable rows from the unrelated relation(s). The cause of this thinko was incorrect unification of the pre-8.4 logic for IN joins and OUTER joins --- the comparable case for outer joins can be handled after making the match test, but that's because there is nothing like the unique-ification escape hatch for outer joins. Per bug #4934 from Benjamin Reed.</li> <li>In a non-hashed Agg node, reset the "aggcontext" at group boundaries, instead of individually pfree'ing pass-by-reference transition values. This should be at least as fast as the prior coding, and it has the major advantage of clearing out any working data an aggregate function may have stored in or underneath the aggcontext. This avoids memory leakage when an aggregate such as array_agg() is used in GROUP BY mode. Per report from Chris Spotts. Back-patch to 8.4. In principle the problem could arise in prior versions, but since they didn't have array_agg the issue seems not critical.</li> <li>In pgsql/src/backend/executor/execTuples.c, save a few cycles in EXPLAIN and related commands by not bothering to form a physical tuple in do_tup_output(). A virtual tuple is easier to set up and also easier for most tuple receivers to process. Per my comment on Robert Haas' recent patch in this code.</li> <li>In pgsql/src/bin/pg_dump/pg_dump.c, teach pg_dump to dump comments attached to the columns of a composite type. Taro (Higepon) Minowa.</li> <li>Add commentary about Cygwin's broken erand48, per report from Andrew Dunstan.</li> <li>Avoid extra system calls to block SIGPIPE if the platform provides either sockopt(SO_NOSIGPIPE) or the MSG_NOSIGNAL flag to send(). We assume these features are available if (1) the symbol is defined at compile time and (2) the kernel doesn't reject the call at runtime. It might turn out that there are some platforms where (1) and (2) are true and yet the signal isn't really blocked, in which case applications would die on server crash. If that sort of thing gets reported, then we'll have to add additional defenses of some kind. Jeremy Kerr.</li> <li>Assorted minor refactoring in EXPLAIN. This is believed to not change the output at all, with one known exception: "Subquery Scan foo" becomes "Subquery Scan on foo". (We can fix that if anyone complains, but it would be a wart, because the old code was clearly inconsistent.) The main intention is to remove duplicate coding and provide a cleaner base for subsequent EXPLAIN patching. Robert Haas.</li> <li>Code review for FORCE QUOTE * patch: fix error checking to consider FORCE QUOTE * as a variety of FORCE QUOTE, and update psql documentation to include the option. (The actual psql code doesn't seem to need any changes.)</li> <li>Extend EXPLAIN to allow generic options to be specified. The original syntax made it difficult to add options without making them into reserved words. This change parenthesizes the options to avoid that problem, and makes provision for an explicit (and perhaps non-Boolean) value for each option. The original syntax is still supported, but only for the two original options ANALYZE and VERBOSE. As a test case, add a COSTS option that can suppress the planner cost estimates. This may be useful for including EXPLAIN output in the regression tests, which are otherwise unable to cope with cross-platform variations in cost estimates. Robert Haas</li> <li>Experiment with using EXPLAIN COSTS OFF in regression tests. This is a simple test to see whether COSTS OFF will help much with getting EXPLAIN output that's sufficiently platform-independent for use in the regression tests. The planner does have some freedom of choice in these examples (plain via bitmap indexscan), so I'm not sure what will happen.</li> <li>In pgsql/contrib/pg_stat_statements/pg_stat_statements.c, fix pg_stat_statements for EXEC_BACKEND case. We should not try to load old statistics when re-attaching to existing shared memory. Per bug #4941. Itagaki Takahiro</li> <li>In pgsql/contrib/pg_stat_statements/pg_stat_statements.c, improve comment, per gripe from Alvaro Herrera.</li> <li>In pgsql/src/include/storage/s_lock.h, add s_lock support for SuperH architecture. After a patch originally submitted by Nobuhiro Iwamatsu, but corrected (I think) to match our guidelines for safe use of asm fragments. This should be considered untested ...</li> </ul> <p>Joe Conway a commit&eacute;&nbsp;:</p> <ul> <li>Replace PLpgSQL_dstring by StringInfo. Replace redundant PLpgSQL_dstring functionality with StringInfo. Patch by Pavel Stehule. Review by Joe Conway.</li> </ul> <p>Magnus Hagander a commit&eacute;&nbsp;:</p> <ul> <li>In pgsql/src/interfaces/ecpg/ecpglib/prepare.c, fix mismatch in const:ness of parameters.</li> <li>Reserve the shared memory region during backend startup on Windows, so that memory allocated by starting third party DLLs doesn't end up conflicting with it. Hopefully this solves the long-time issue with "could not reattach to shared memory" errors on Win32. Patch from Tsutomu Yamada and me, based on idea from Trevor Talbot.</li> <li>Reserve the shared memory region during backend startup on Windows, so that memory allocated by starting third party DLLs doesn't end up conflicting with it. Hopefully this solves the long-time issue with "could not reattach to shared memory" errors on Win32. Patch from Tsutomu Yamada and me, based on idea from Trevor Talbot.</li> </ul> <p>Andrew Dunstan a commit&eacute;&nbsp;:</p> <ul> <li>In pgsql/doc/src/sgml/install-win32.sgml, update location to download flex for building on Windows.</li> <li>Force use of our erand48 on Cygwin.</li> <li>Allow * as parameter for FORCE QUOTE for COPY CSV. Itagaki Takahiro.</li> <li>In pgsql/src/backend/commands/copy.c, small stylistic improvement in recent FORCE QUOTE * code - use a bool instead of a magic value.</li> </ul> <p><strong>Correctifs rejet&eacute;s (&agrave; ce jour)</strong></p> <ul> <li>Dean Rasheed's in revision of the deferrable unique constraints patch. Needs work.</li> </ul> <p><strong>Correctifs en attente</strong></p> <ul> <li>James Pye sent in a WIP patch to make PL/Python work with Python 3, with several stylistic and functional improvements included.</li> <li>Alexey Klyukin sent in two revisions of a patch to add errcontext support to PL/Perl.</li> <li>Pavel Stehule sent in two revisions of a patch intended to fix mixed and named notation support in PL/PgSQL.</li> <li>Alan Li sent in two revisions of a patch to optimize MIN()/MAX() operations on partitioned tables.</li> <li>Josh Tolley and Petr (PJMODOS) Jelinek traded patches to implement DefaultACLs.</li> <li>ITAGAKI Takahiro sent in another revision of the patch to make pgbench multi-threaded.</li> <li>Fujii Masao sent in another revision of a patch to add a non-blocking communication between an front-end and a back-end.</li> <li>Robert Haas sent in another revision of his patch to auto-generate headers.</li> <li>Pavel Stehule sent in another revision of his patch to enable machine-readable EXPLAIN output.</li> <li>Brendan Jurd sent in an updated version of the EEEE formatting patch for to_char().</li> <li>ITAGAKI Takahiro sent in another revision of his patch to mkae a more specific error when a key is duplicated.</li> <li>Bernd Helmle sent in an updated version of the patch to handle byteas more efficiently in pg_dump.</li> <li>Jaime Casanova sent in an updated patch to help infer client_encoding from client locale.</li> <li>Robert Haas sent in another revision of the machine-readable EXPLAIN output patch.</li> </ul>