Nouvelles hebdomadaires de PostgreSQL - 31 janvier 2010
Les candidatures pour le "Google Summer of Code" sont recevables jusqu'au 9 mars, mais n'attendez pas autant pour contacter Selena Deckelman à l'adresse selena CHEZ postgresql POINT org
Le PUG de Seattle tiendra sa première réunion le 9 février 2010. Plus de détails : http://www.seapug.org/talk.php?talk=1
Les nouveautés des produits dérivés
- GNUmed EMR client 0.6.0 et GNUmed EMR server 12.0 : http://wiki.gnumed.de/
La fonctionnalité 8.5 de la semaine
Les contraintes d'unicité peuvent maintenant être écartées jusqu'au commit.
Offres d'emplois autour de PostgreSQL en janvier
- Le PGDay-Cuba 2010 sera tenu du 4 au 6 février 2010 à l'Université des Sciences Informatiques, à La Havane. Sont invités les participants de Cuba, de la République Dominicaine et du Venezuela.
- Le FOSDEM 2010 aura lieu à Bruxelles les 6 & 7 février 2010 : http://www.postgresql.eu/events/schedule/fosdem2010/
- Le PUG allemand aura un stand dans le "Project Lounge" du hall 2 au Cebit 2010 du 2 au 6 mars 2010 à Hanovre : http://andreas.scherbaum.la/blog/archives/649-PostgreSQL-stand-at-Cebit-2010.html
- Le PUG allemand aura un stand aux Linuxdays de Chemnitz les 13 et 14 mars 2010. Andreas (ads) Scherbaum y donnera une conférence sur PostgreSQL 9.0 et dirigera un atelier sur la configuration de PostgreSQL : http://andreas.scherbaum.la/blog/archives/652-PostgreSQL-stand-at-Chemnitz-Linux-Days-2010.html http://chemnitzer.linux-tage.de/2010/vortraege/plan.html
- La "Linuxfest Northwest 2010" aura lieu à Bellingham, Washington, États-Unis les 24 et 25 avril. Conférences, réunions et mécénat sont proposables : http://linuxfestnorthwest.org/
- Andreas (ads) Scherbaum enseignera au centre pour adultes de Magdeburg (All.) du 3 au 7 mai 2010 sur le sujet "PostgreSQL for Corporate Use". Détails ci-dessous : http://andreas.scherbaum.la/blog/archives/650-PostgreSQL-Schulung-als-Bildungsurlaub-03.-07.05.2010-in-Magdeburg.html
- La PgCon 2010 aura lieu les 20 & 21 mai 2010 à Ottawa avec des tutoriels les 18 et 19. L'appel à conférenciers est lancé ! http://www.pgcon.org/2010/papers.php
- L'appel aux propositions est lancé pour l'OSCON, qui aura lieu à Portland (Oregon) du 19 au 23 juillet 2010 : http://post.oreilly.com/f2f/9z1zqmm5lhkab0uogt3avlvc4u59bro6f917re423d8
PostgreSQL dans les média
- Planet PostgreSQL : http://planet.postgresql.org/
- Planet PostgreSQLFr : http://planete.postgresql.fr/
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.
Jeff Davis reviewed Joachim Wieland's patch to fix the behavior of LISTEN/NOTIFY when the queue is full.
Heikki Linnakangas a commité :
- Add note that PREPARE TRANSACTION is for transaction managers, not regular applications. Also add a comment pointing out that tab-completion for PREPARE TRANSACTION is missing on purpose.
- Make standby server continuously retry restoring the next WAL segment with restore_command, if the connection to the primary server is lost. This ensures that the standby can recover automatically, if the connection is lost for a long time and standby falls behind so much that the required WAL segments have been archived and deleted in the master. This also makes standby_mode useful without streaming replication; the server will keep retrying restore_command every few seconds until the trigger file is found. That's the same basic functionality pg_standby offers, but without the bells and whistles. To implement that, refactor the ReadRecord/FetchRecord functions. The FetchRecord() function introduced in the original streaming replication patch is removed, and all the retry logic is now in a new function called XLogReadPage(). XLogReadPage() is now responsible for executing restore_command, launching walreceiver, and waiting for new WAL to arrive from primary, as required. This also changes the life cycle of walreceiver. When launched, it now only tries to connect to the master once, and exits if the connection fails, or is lost during streaming for any reason. The startup process detects the death, and re-launches walreceiver if necessary.
- Fix bug in wasender's xlogid boundary handling, reported by Erik Rijkers. LogwrtRqst.Write can be set to non-existent FF log segment, we mustn't try to send that in XLogSend(). Also fix similar bug in ReadRecord(), which I just introduced in the ReadRecord() refactoring patch.
- Change a few remaining calls of XLogArchivingActive() to use XLogIsNeeded() instead, to determine if an otherwise non-logged operation needs to be logged in WAL for standby servers. Fujii Masao.
- In pgsql/src/backend/access/transam/xlog.c, fix crashing bug at the end of recovery in Streaming Replication, when restore_command is not given. Fujii Masao.
Tom Lane a commité :
- Add get_bit/set_bit functions for bit strings, paralleling those for bytea, and implement OVERLAY() for bit strings and bytea. In passing also convert text OVERLAY() to a true built-in, instead of relying on a SQL function. Leonardo Francalanci, reviewed by Kevin Grittner.
- In pgsql/src/bin/initdb/initdb.c, un-break initdb logic for commenting out IPv6 pg_hba.conf line.
- Remove the default_do_language parameter, instead making DO use a hardwired default of "plpgsql". This is more reasonable than it was when the DO patch was written, because we have since decided that plpgsql should be installed by default. Per discussion, having a parameter for this doesn't seem useful enough to justify the risk of application breakage if the value is changed unexpectedly.
- In pgsql/src/backend/regex/regcomp.c, fix some comments that got mangled by pgindent.
- In pgsql/src/bin/psql/print.c, fix memory leakage introduced into print_aligned_text by 8.4 changes (failure to free col_lineptrs array elements) and exacerbated in the current devel cycle (failure to free "wrap"). This resulted in moderate bloat of psql over long script runs. Noted while testing bug #5302, although what the reporter was complaining of was backend-side leakage.
- In pgsql/src/backend/tcop/dest.c, avoid performing encoding conversion on command tag strings during EndCommand. Since all current and foreseeable future command tags will be pure ASCII, there is no need to do conversion on them. This saves a few cycles and also avoids polluting otherwise-pristine subtransaction memory contexts, which is the cause of the backend memory leak exhibited in bug #5302. (Someday we'll probably want to have a better method of determining whether subtransaction contexts need to be kept around, but today is not that day.) Backpatch to 8.0. The cycle-shaving aspect of this would work in 7.4 too, but without subtransactions the memory-leak aspect doesn't apply, so it doesn't seem worth touching 7.4.
- In pgsql/src/backend/libpq/auth.c, get rid of unportable use of socklen_t --- we have a configure test for that, so use it.
- In pgsql/src/include/port.h, parenthesize this macro, just in case.
- Fix memory leak created by deferrable-index-constraints patches. We need to free the OID list returned by ExecInsertIndexTuples to avoid a query-lifespan memory leak. When many rows require rechecking, this can be a significant leak --- it's even more than the space used for the queued trigger events. Dean Rasheed.
- In pgsql/src/backend/regex/regexec.c, change regexp engine's ccondissect/crevdissect routines to perform DFA matching before recursing instead of after. The DFA match eliminates unworkable midpoint choices a lot faster than the recursive check, in most cases, so doing it first can speed things up; particularly in pathological cases such as recently exhibited by Michael Glaesemann. In addition, apply some cosmetic changes that were applied upstream (in the Tcl project) at the same time, in order to sync with upstream version 1.15 of regexec.c. Upstream apparently intends to backpatch this, so I will too. The pathological behavior could be unpleasant if encountered in the field, which seems to justify any risk of introducing new bugs. Tom Lane, reviewed by Donal K. Fellows of Tcl project
Simon Riggs a commité :
- In pgsql/src/backend/access/transam/xlog.c, fix longstanding gripe that we check for 0000000001.history at start of archive recovery, even when we know it is never present.
- In pgsql/src/backend/storage/lmgr/lock.c, use malloc() in GetLockConflicts() when called InHotStandby to avoid repeated palloc calls. Current code assumed this was already true, so this is a bug fix.
- Filter recovery conflicts based upon dboid from relfilenode of WAL records for heap and btree. Minor change, mostly API changes to pass through the required values. This is a simple change though also provides the refactoring required for further enhancements to conflict processing using the relOid. Changes only have effect during Hot Standby.
- Augment WAL records for btree delete with GetOldestXmin() to reduce false positives during Hot Standby conflict processing. Simple patch to enhance conflict processing, following previous discussions. Controlled by parameter minimize_standby_conflicts = on | off, with default off allows measurement of performance impact to see whether it should be set on all the time.
- In pgsql/src/backend/storage/lmgr/lock.c, adjust GetLockConflicts() so that it uses TopMemoryContext when executed InHotStandby. Cleaner solution than using malloc or palloc depending upon situation, as proposed by Tom.
- Detect early deadlock in Hot Standby when Startup is already waiting. First stage of required deadlock detection to allow re-enabling max_standby_delay setting of -1, which is now essential in the absence of improved relation- specific conflict resoluton. Requested by Greg Stark et al.
Peter Eisentraut a commité :
- Make the default pg_hba.conf and pg_ident.conf align at 8-character boundaries to make it easier to use with tabs.
- Reformat the comments in pg_hba.conf and pg_ident.conf. These files have apparently been edited over the years by a dozen people with as many different editor settings, which made the alignment of the paragraphs quite inconsistent and ugly. I made a pass of M-q with Emacs to straighten it out.
- Type table feature. This adds the CREATE TABLE name OF type command, per SQL standard.
Michael Meskes a commité :
- Applied patch by Zoltan Boszormenyi to add out-of-scope cursor support to native mode.
- In pgsql/doc/src/sgml/ecpg.sgml, finally applied patch by Zoltan Boszormenyi to add the new features his patches added to the docs.
- Added test case that was part of Zoltan's ECPG patch but apparently wasn't part of my commit.
- Fixed a few typos in ecpg. Two were in comments, the third made a log output reverse yes and no.
- Changed ECPG outofscope handling to always print out statements in the same order so regression testing is possible. Zoltan Boszormenyi.
Bruce Momjian a commité :
- In pgsql/doc/src/sgml/ecpg.sgml, remove tabs in SGML.
Andrew Dunstan a commité :
- Various small improvements and cleanups for PL/Perl. 1. Allow (ineffective) use of 'require' in plperl If the required module is not already loaded then it dies. So "use strict;" now works in plperl. 2. Pre-load the feature module if perl >= 5.10. So "use feature :5.10;" now works in plperl. 3. Stored procedure subs are now given names. The names are not visible in ordinary use, but they make tools like Devel::NYTProf and Devel::Cover much more useful. 4. Simplified and generalized the subroutine creation code. Now one code path for generating sub source code, not four. Can generate multiple 'use' statements with specific imports (which handles plperl.use_strict currently and can easily be extended to handle a plperl.use_feature=':5.12' in future). 5. Disallows use of Safe version 2.20 which is broken for PL/Perl. http://rt.perl.org/rt3/Ticket/Display.html?id=72068 6. Assorted minor optimizations by pre-growing data structures. Patch from Tim Bunce, reviewed by Alex Hunsaker.
- In pgsql/doc/src/sgml/plperl.sgml, fix plperl.sgml errors from recent commit.
- In pgsql/src/pl/plperl/plperl.c, fix bug found by warning from recent gcc. patch from Tim Bunce.
- Add new make targets "world", "install-world" and "installcheck-world" to build, install and check just about everything. In addition to everything built installed and tested by all, install and installcheck targets, these build HTML Docs, build and test contrib, and test PLs and ECPG.
- In pgsql/GNUmakefile.in, fix thinko in new installcheck-world target
- Add plperl.on_perl_init setting to provide for initializing the perl library on load. Also, handle END blocks in plperl. Database access is disallowed during both these operations, although it might be allowed in END blocks in future. Patch from Tim Bunce.
Magnus Hagander a commité :
- Add support for RADIUS authentication.
- In pgsql/doc/src/sgml/client-auth.sgml, fix typo. Noted by Thom Brown.
- In pgsql/src/include/port/solaris.h, define INADDR_NONE on Solaris when it's missing. Per a couple of buildfarm members complaining.
- Add functions to reset the statistics counter for a single table/index or a single function.
- In pgsql/src/backend/port/win32/signal.c, fix race condition in win32 signal handling. There was a race condition where the receiving pipe could be closed by the child thread if the main thread was pre-empted before it got a chance to create a new one, and the dispatch thread ran to completion during that time. One symptom of this is that rows in pg_listener could be dropped under heavy load. Analysis and original patch by Radu Ilie, with some small modifications by Magnus Hagander.
- In pgsql/src/port/kill.c, remove now unnecessary loop around CallNamedPipe(). Radu Ilie.
- In pgsql/src/backend/postmaster/pgstat.c, make checks for invalid pgStatSock use PGINVALID_SOCKET.
Joe Conway a commité :
- Introduce two new libpq connection functions, PQconnectdbParams and PQconnectStartParams. These are analogous to PQconnectdb and PQconnectStart respectively. They differ from the legacy functions in that they accept two NULL-terminated arrays, keywords and values, rather than conninfo strings. This avoids the need to build the conninfo string in cases where it might be inconvenient to do so. Includes documentation. Also modify psql to utilize PQconnectdbParams rather than PQsetdbLogin. This allows the new config parameter application_name to be set, which in turn is displayed in the pg_stat_activity view and included in CSV log entries. This will also ensure both new functions get regularly exercised. Patch by Guillaume Lelarge with review and minor adjustments by Joe Conway.
ITAGAKI Takahiro a commité :
- In pgsql/src/backend/tcop/utility.c, fix command tag for ALTER LARGE OBJECT.
- Add string_agg aggregate functions. The one argument version concatenates the input values into a string. The two argument version also does the same thing, but inserts delimiters between elements. Original patch by Pavel Stehule, reviewed by David E. Wheeler and me.
Robert Haas a commité :
- Allow psql variables to be interpolated with literal or identifier escaping. Loosely based on a patch by Pavel Stehule.
Correctifs rejetés (à ce jour)
- Pas de déception cette semaine :-)
Correctifs en attente
- Pavel Stehule sent in another revision of the patch to add a string_agg() aggregate which concatenates the elements of aggregation with an internal separator.
- Pavel Stehule sent in another revision of the patch to introduce quoting behavior to psql variables.
- Selena Deckelmann sent in a patch to divide process from debugging information in pg_standby.
- Peter Eisentraut sent in another revision of the typed table patch per review from Hitoshi Harada.
- Tim Bunce sent in another revision of the patch to clean up namespaces and Safe initialization for PL/perl.
- Robert Haas sent in another revision of the patch to add red-black trees to GIN indexes. Mark Cave-Ayland sent another revision in response to this.
- Zoltan Boszormenyi sent in three more revisions of the patch to fix out-of-scope cursor handling in ECPG.
- David Christensen sent in a patch to add a \whoami option to psql.
- Marko (johto) Tiikkaja sent in another revision of the patch to add general DML to CTEs.
- KaiGai Kohei sent in three more revisions of the patch to fix the behavior of ALTER TABLE...RENAME TO... in the case of multiple inheritance.
- KaiGai Kohei sent in another revision of the patch to add access controls to large objects.
- Tim Bunce sent in two more revisions of the patch to add plperl.on_[un]trusted_init.
- Leonardo Francalanci sent in another revision of the patch to improve CLUSTER's performance.
- Robert Haas sent in another revision of the patch to add hash information to EXPLAIN.
- Robert Haas sent in a patch to remove contrib/xml2. Mike Rylander sent a smaller one to add the analogous functions to the core distribution.
- Simon Riggs sent in two revisions of a patch to add relation-specific deferred conflict resolution.
- Fujii Masao sent in a patch to extend the format of the string returned by pg_last_xlog_receive/replay_location() to include the timeline ID, and teaches pg_xlogfile_name[_offset]() to accept that format, too.
- Alexey Klyukin sent in a patch to improve the documentation of PL/perl database access functions.
- Zoltan Boszormenyi sent in another revision of the patch to fix NaN and Inf behaviors in ECPG.
- Simon Riggs sent in a patch to fix the behavior of VACUUM FULL in the streaming replication case.
- Tim Bunce sent in another revision of the patch to PL/Perl to move the internal function from namespace main:: to namespaces PostgreSQL::InServer[::safe], and restructure the Safe compartment.
- Guillaume Lelarge sent in a patch to make the PostgreSQL binaries use the new PQconnectdbParamss libpq functions.
- Fujii Masao sent in a patch to shut down the server, including the startup process and walreceiver, as soon as all read-only connections have died. This fixes a corner case in streaming replication.