Nouvelles hebdomadaires de PostgreSQL - 23 janvier 2011
Les nouveautés des produits dérivés
Offres d'emplois autour de PostgreSQL en janvier
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)
Revues de code
- ITAGAKI Takahiro reviewed Marko (johto) Tiikkaja's patch to add transaction-scope advisory locks.
- Anssi Kaariainen reviewed Dimitri Fontaine's patch to add EXTENSION support to pg_dump, several times.
- Chris Browne reviewed the patch to compact the fsync request queue.
- Steve Singer reviewed the patch for log_hostname and pg_stat_activity.
- Kevin Grittner reviewed the file_fdw patch.
- Noah Misch reviewed the snapshot synchronization patch.
- Jan Urbanski reviewed the patch to add wildcard search support for pg_trgm.
- Dimitri Fontaine reviewed the patch to add FOR KEY LOCK for foreign key checks.
- Stephen Frost reviewed the patch to add FOREACH ... IN ARRAY to PL/pgsql.
- Marko (johto) Tiikkaja reviewed the patch to add ALTER TABLE ... ADD FOREIGN KEY ... NOT ENFORCED.
Correctifs appliqués
Heikki Linnakangas a poussé :
Bruce Momjian a poussé :
Alvaro Herrera a poussé :
Tom Lane a poussé :
- Fix miscalculation of itemsafter in array_set_slice(). If the slice to be assigned to was before the existing array lower bound (requiring at least one null element to spring into existence to fill the gap), the code miscalculated how many entries needed to be copied from the old array's null bitmap. This could result in trashing the array's data area (as seen in bug #5840 from Karsten Loesing), or worse. This has been broken since we first allowed the behavior of assigning to non-adjacent slices, in 8.2. Back-patch to all affected versions.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=bdd8ed973da9ab48aba2292b01f71d2f9968b82c
- Avoid detoast in texteq/textne/byteaeq/byteane for unequal-length strings. We can get the length of a compressed or out-of-line datum without actually detoasting it. If the lengths of two strings are unequal, we can then conclude they are unequal without detoasting. That saves considerable work in an admittedly less-common case, without costing anything much when the optimization doesn't apply. Noah Misch.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=1b393f4e5db4fd6bbc86a4e88785b6945a1541d0
- Show correct datatype for pg_class.relpersistence, plus a typo fix. Thom Brown
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=357faea82e93712937cd109b48ce006789ec7a8f
- Fix pg_restore to do the right thing when escaping large objects. Specifically, this makes the workflow pg_dump -Fc -> pg_restore -> file produce correct output for BLOBs when the source database has standard_conforming_strings turned on. It was already okay when that was off, or if pg_restore was told to restore directly into a database. This is a back-port of commit b1732111f233bbb72788e92a627242ec28a85631 of 2009-08-04, with additional changes to emit old-style escaped bytea data instead of hex-style. At the time, we had not heard of anyone encountering the problem in the field, so I judged it not worth the risk of changing back branches. Now we do have a report, from Bosco Rama, so back-patch into 8.2 through 8.4. 9.0 and up are okay already.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=2a1ef1011548e329f4eca86671401bf4124f9d1e
- Fix broken markup, also minor copy-editing.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=0cf3db2175ec770097b9c44d9a8e1e8c281ee5a6
- Clean up pg_test_fsync commit. Actually rename the program, rather than just claiming we did. Hook it into the build system. Get rid of useless dependency on libpq. Clean up #include list and messy whitespace.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=bc616703e8767d2a5d0312cdbf5dc3c6de2b86fe
- More pg_test_fsync cleanup. Un-break Windows build (I hope) by making the HAVE_FSYNC_WRITETHROUGH code match the backend. Fix incorrect program help message. static-ize all functions.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=cb38ab6d3b89eccb75b3337f8723cfc283fb77fb
- Suppress unused-variables warning when OPEN_SYNC_FLAG isn't defined. Per buildfarm.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=3ae28ce8c437811bba47c09d1212c2d3c41cb7ff
- More pg_test_fsync fixups. Reduce #includes to minimum actually needed; in particular include postgres_fe.h not postgres.h, so as to stop build failures on some platforms. Use get_progname() instead of hardwired program name; improve error checking for command line syntax; bring error messages into line with style guidelines; include strerror result in die() cases.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=37eb2cd4ad4c3323f1c7ed1c893c9d645fbaeb1a
- Suppress possibly-uninitialized-variable warnings from gcc 4.5. It appears that gcc 4.5 can issue such warnings for whole structs, not just scalar variables as in the past. Refactor some pg_dump code slightly so that the OutputContext local variables are always initialized, even if they won't be used. It's cheap enough to not be worth worrying about.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=e2627258c3cc43b8b00c5c29c35933a33259e718
- Suppress "control reaches end of non-void function" warning from gcc 4.5. Not sure why I'm seeing this on Fedora 14 and not earlier versions. Seems like a regression that gcc no longer knows that DIE() doesn't return. Still, adding a dummy return is harmless enough.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=518b1e96c02ba0fa52227c528d6e951004d0653f
- Allow the wal_buffers setting to be auto-tuned to a reasonable value. If wal_buffers is initially set to -1 (which is now the default), it's replaced by 1/32nd of shared_buffers, with a minimum of 8 (the old default) and a maximum of the XLOG segment size. The allowed range for manual settings is still from 4 up to whatever will fit in shared memory. Greg Smith, with implementation correction by me.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=0f73aae13def660371c34c8feda6e684e6366bdb
- Quick hack to un-break plpython regression tests. It's not clear to me what should happen to the other plpython_unicode variant expected files, but this patch gets things passing on my own machines and at least some of the buildfarm.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=cc73c160507588bdc5822d7f2bb79d6b3a386761
- Suppress uninitialized-variable warning.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=b3cfcdaad27bea9bb86d6de6cbf8d184c16fbceb
- Add .gitignore file to silence complaints about pg_basebackup.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=10e99f15d423b1730929af1992593c6649952fd5
- Revert "Factor out functions responsible for caching I/O routines". This reverts commit 740e54ca84c437fd67524f97a3ea9ddea752e208, which seems to have tickled an optimization bug in gcc 4.5.x, as reported upstream at
https://bugzilla.redhat.com/show_bug.cgi?id=671899 Since this patch had no purpose beyond code beautification, it's not worth expending a lot of effort to look for another workaround. http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=de3c2d6e928b0f7fb2840914351b96fecce2a30d
- Improve getObjectDescription's display of pg_amop and pg_amproc entries. Include the lefttype/righttype columns explicitly (instead of assuming the reader can deduce them from the operator or function description), and move the operator or function description to the end of the string, to make it clearer that it's a referenced object and not the amop or amproc item itself. Per extensive discussion of Andreas Karlsson's original patch. Andreas Karlsson, Tom Lane
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=dd5f0db96ba68553e3ab2c1d9d117863a5637c67
- Fix another portability issue in pg_basebackup. The target of sscanf with a %o format had better be of integer width, but "mode_t" conceivably isn't that. Another compiler warning seen only on some platforms; this one I think is potentially a real bug and not just a warning.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=f36920796ec1335733493f7860d6f2f711c20398
Peter Eisentraut a poussé :
- Use HTABs instead of Python dictionary objects to cache procedures Two separate hash tables are used for regular procedures and for trigger procedures, since the way trigger procedures work is quite different from normal stored procedures. Change the signatures of PLy_procedure_{get,create} to accept the function OID and a Boolean flag indicating whether it's a trigger. This should make implementing a PL/Python validator easier. Using HTABs instead of Python dictionaries makes error recovery easier, and allows for procedures to be cached based on their OIDs, not their names. It also allows getting rid of the PyCObject field that used to hold a pointer to PLyProcedure, since PyCObjects are deprecated in Python 2.7 and replaced by Capsules in Python 3. Jan Urbański
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=46211da1b84bc3537e799ee1126098e71c2428e8
- Skip dropped attributes when converting Python objects to tuples. Pay attention to the attisdropped field and skip over TupleDesc fields that have it set. Not a real problem until we get table returning functions, but it's the right thing to do anyway. Jan Urbański.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=41282111e6cc73aca4b63dffe950ba7a63e4bd8a
- Free plan values in the PLyPlanObject dealloc function. Jan Urbański.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=847e8c7783e877bbdc6a89250ade7d264eee5593
- Use palloc in TopMemoryContext instead of malloc. As discussed, even if the PL needs a permanent memory location, it should use palloc, not malloc. It also makes error handling easier. Jan Urbański.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=59ea9ef9aa216d0bc718539cd5622628943d3f21
- Use PyObject_New instead of PyObject_NEW. The latter is undocumented and the speed gain is negligible. Jan Urbański.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=d9a95c0adb11f7a3ca5aa9ab8a900018832ed4ea
- Improve message for errors in compiling anonymous PL/Python blocks The previous code would try to print out a null pointer. Jan Urbański.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=719461b7a28c04a84b0fb1e5faa9b3cb5ee66605
- Fix an error when a set-returning function fails halfway through the execution. If the function using yield to return rows fails halfway, the iterator stays open and subsequent calls to the function will resume reading from it. The fix is to unref the iterator and set it to NULL if there has been an error. Jan Urbański.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=88047e59ba12479ef9adcaf3dee61b48566ce6eb
- Add braces around an if block, for readability. Jan Urbański, reviewed by Peter Eisentraut, Álvaro Herrera, Tom Lane :-)
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=fbed5d48307528c8b49ba48e741817e75146ea8f
- Fix typo. Hitoshi Harada
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=81f79dbf2e551978300ee85d42026e26f932089a
- Factor out functions responsible for caching I/O routines. This makes PLy_procedure_create a bit more manageable. Jan Urbański
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=740e54ca84c437fd67524f97a3ea9ddea752e208
- Fix wrong comment. Hitoshi Harada.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=14b9f69cb2077c65a09df78d167d45c35b1d7973
- Correctly add exceptions to the plpy module for Python 3. The way the exception types where added to the module was wrong for Python 3. Exception classes were not actually available from plpy. Fix that by factoring out code that is responsible for defining new Python exceptions and make it work with Python 3. New regression test makes sure the plpy module has the expected contents. Jan Urbanśki, slightly revised by me.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=4609caf3645ae975724af1f7f57f831e516cf220
- Get rid of the global variable holding the error state. Global error handling led to confusion and was hard to manage. With this change, errors from PostgreSQL are immediately reported to Python as exceptions. This requires setting a Python exception after reporting the caught PostgreSQL error as a warning, because PLy_elog destroys the Python exception state. Ideally, all places where PostgreSQL errors need to be reported back to Python should be wrapped in subtransactions, to make going back to Python from a longjmp safe. This will be handled in a separate patch. Jan Urbański.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=116ce2f4d01b929cc7c3bd0f7e6bca631f83da50
Magnus Hagander a poussé :
Robert Haas a poussé :
- Document that WITH queries are also called Common Table Expressions. Peter Geoghegan, reviewed by Stephen Frost.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=92f7eebbbd6554f0414ab869abd8733cef751249
- Add new psql command \dL to list languages. Original patch by Fernando Ike, revived by Josh Kuperschmidt, reviewed by Andreas Karlsson, and in earlier versions by Tom Lane and Peter Eisentraut.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=9c5e2c120be42fbd1a743ddf539ff451e1cce23b
- Make ALTER TABLE revalidate uniqueness and exclusion constraints. Failure to do so can lead to constraint violations. This was broken by commit 1ddc2703a936d03953657f43345460b9242bbed1 on 2010-02-07, so back-patch to 9.0. Noah Misch. Regression test by me.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=8ceb24568054232696dddc1166a8563bc78c900a
- Emphasize where OVER needs to be when using a window function. Jeff Turner.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=d3b372e92d4efdd6f63da35996f04ff009c932b5
- Code cleanup for assign_XactIsoLevel. The new coding avoids a spurious debug message when a transaction that has changed the isolation level has been rolled back. It also allows the property to be freely changed to the current value within a subtransaction. Kevin Grittner, with one small change by me.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=fb4c5d2798730f60b102d775f22fb53c26a6445d
- Avoid treating WAL senders as normal backends. The previous coding treated anything that wasn't an autovacuum launcher as a normal backend, which is wrong now that we also have WAL senders. Fujii Masao, reviewed by Robert Haas, Alvaro Herrera, Tom Lane, and Bernd Helmle.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=a0c75f55394fe904e09f7caee9a8195e3a09c801
- Code cleanup for assign_transaction_read_only. As in commit fb4c5d2798730f60b102d775f22fb53c26a6445d on 2011-01-21, this avoids spurious debug messages and allows idempotent changes at any time. Along the way, make assign_XactIsoLevel allow idempotent changes even when not within a subtransaction, to be consistent with the new coding of assign_transaction_read_only and because there's no compelling reason to do otherwise. Kevin Grittner, with some adjustments.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=6f59777c65d557485e933a383ebc4c3fdfc1a2b7
- sepgsql, an SE-Linux integration for PostgreSQL. This is still pretty rough - among other things, the documentation needs work, and the messages need a visit from the style police - but this gets the basic framework in place. KaiGai Kohei.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=968bc6fac91d6aaca594488ab85c179b686cbbdd
- First round of cleanup of sepgsql code and documentation. Robert Haas, with a few suggestions from Thom Brown.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=194c8f713aa62a528afa4ce4274b80aaff9eb264
- Blind attempt to exclude sepgsql from MSVC build system.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=c26ac226e45fbf84cd63588498c00da9417aebc1
- PGXS support for contrib/hstore. Joey Adams
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=41611f16e933dafa9c3ae0477f89537ea1459eb6
Andrew Dunstan a poussé :
Correctifs rejetés (à ce jour)
- Pavel Stehule's patch to remove redundant code from PL/pgsql. Too much added complexity for too little benefit.
Correctifs en attente
- Alexander Korotkov sent in another revision of the patch to add wildcards to contrib/pg_trgm.
- Heikki Linnakangas sent in a patch to fix some typos, etc., in the SSI patch.
- Dimitri Fontaine sent in two more revisions of the patch to add extensions.
- Shigeru HANADA sent in another revision of the patch to add file_fdw, which implements file-based access in SQL/MED.
- ITAGAKI Takahiro sent in another revision of the MULTISET patch.
- Magnus Hagander sent in two more revisions of the patch to add pg_basebackup to streaming backups.
- Shigeru HANADA sent in another revision of the patches to implement the foreign data wrapper API for SQL/MED.
- Jan Urbanski sent in another revision of the PL/Python validator function.
- Joachim Wieland sent in another revision of the patch to implement synchronized snapshots.
- Stephen Frost sent in another revision of the patch to allow logging roles.
- Fujii Masao sent in another revision of the patch to add "pg_ctl promote," used when the replication origin has failed, or is presumed to have failed.
- Robert Haas sent in another revision of the patch to limit hint bit I/O.
- Noah Misch sent in a review and another revision of the patch to add ALTER TABLE...REPLACE WITH.
- Jan Urbanski sent another flock of patches to refactor PL/PythonU.
- Stephen Frost sent in another revision of the patch to add FOREACH ... IN ARRAY to PL/pgsql.
- Jeff Davis sent in another revision of the patch to add range types, this one with generic range functions.
- Stephen Frost reviewed and revised the patch to add nfiltered to EXPLAIN output.
- Kevin Grittner sent in another revision of the patch to implement true serializability.
- Noah Misch sent in another revision of the ALTER TYPE patch.
- Kris Shannon sent in a patch to fix gripes with an ECPG conversion script, which was using deprecated features in Perl.
- Per review from Hitoshi Harada, Jan Urbanski sent in another revision of the patch to fix table functions in PL/PythonU.
- Pavel Stehule sent in another revision of the patch to add FOREACH ... IN ARRAY to PL/pgsql.
- Fujii Masao sent in another revision of the patch to fix a bug in SignalSomeChildren.