== PostgreSQL Weekly News - June 30 2013 ==
От | David Fetter |
---|---|
Тема | == PostgreSQL Weekly News - June 30 2013 == |
Дата | |
Msg-id | 20130701061206.GF4365@fetter.org обсуждение исходный текст |
Список | pgsql-announce |
== PostgreSQL Weekly News - June 30 2013 == PostgreSQL 9.3 Beta 2 released. TEST! http://www.postgresql.org/developer/beta PGDay.IT 2013 will take place in Prato on October the 25th 2013. The International Call For Papers is now open. http://2013.pgday.it/index.php/programma/call-for-papers-english/ == PostgreSQL Jobs for June == http://archives.postgresql.org/pgsql-jobs/2013-06/threads.php == PostgreSQL Local == We're going to have a booth at OSCON this year. Please sign up and hang out at the booth for an hour or two: https://wiki.postgresql.org/wiki/Oscon_2013_signup PGDay UK 2013 is July 12, 2013. Registration is closing soon. Book now! http://postgresqlusergroup.org.uk PostgreSQL Brazil will be held August 15-17, 2013 in Porto Velho, RO, Brazil. http://pgbr.postgresql.org.br/2013/chamada.en.php Postgres Open 2013 will be in Chicago, IL, USA, September 16-18. Early Bird registration and call for presentations closes June 30th. http://postgresopen.org/ pgconf.EU 2013 will be held on Oct 29-Nov 1, 2013 at the Conrad Hotel in downtown Dublin, Ireland. The CfP is open. http://2013.pgconf.eu/ PGConf.DE 2013 will be held November 8th, 2013, at the Rhineland Industrial Museum in Oberhausen. The CfP is open through September 15, 2013. http://2013.pgconf.de/ == PostgreSQL in the News == Planet PostgreSQL: http://planet.postgresql.org/ PostgreSQL Weekly News is brought to you this week by David Fetter Submit news and announcements by Sunday at 3:00pm Pacific time. Please send English language ones to david@fetter.org, German language to pwn@pgug.de, Italian language to pwn@itpug.org. Spanish language to pwn@arpug.com.ar. == Applied Patches == Peter Eisentraut pushed: - Translation updates http://git.postgresql.org/pg/commitdiff/ce18b011596389cbff1589494411643f995b0421 - pg_receivexlog: Fix logic error. The code checking the WAL file name contained a logic error and wouldn't actually catch some bad names. http://git.postgresql.org/pg/commitdiff/2c1031bd8602f749a81672015811f365a129acff - ecpg: Consistently use mm_strdup(). mm_strdup() is provided to check errors from strdup(), but some places were failing to use it. http://git.postgresql.org/pg/commitdiff/14a85031b16239708d4f208528709153779c590d - Fix cpluspluscheck in checksum code. C++ is more picky about comparing signed and unsigned integers. http://git.postgresql.org/pg/commitdiff/129759d6a539059cde85d0dad19992ff45da3bb4 Simon Riggs pushed: - ALTER TABLE ... ALTER CONSTRAINT for FKs. Allow constraint attributes to be altered, so the default setting of NOT DEFERRABLE can be altered to DEFERRABLE and back. Review by Abhijit Menon-Sen http://git.postgresql.org/pg/commitdiff/b577a57d4113bcbd1a7900b78b3e41df528c9a35 - Reverting previous commit, pending investigation of sporadic seg faults from various build farm members. http://git.postgresql.org/pg/commitdiff/4f14c86d7434376b95477aeeb07fcc7272f4c47d - ALTER TABLE ... ALTER CONSTRAINT for FKs. Allow constraint attributes to be altered, so the default setting of NOT DEFERRABLE can be altered to DEFERRABLE and back. Review by Abhijit Menon-Sen http://git.postgresql.org/pg/commitdiff/f177cbfe676dc2c7ca2b206c54d6bf819feeea8b - Assert that ALTER TABLE subcommands have pass set http://git.postgresql.org/pg/commitdiff/2f74e4ec50dc625605e9a7afd63bd8a48c981d9e - Change errcode for lock_timeout to match NOWAIT. Set errcode to ERRCODE_LOCK_NOT_AVAILABLE Zoltán Bsöszörményi http://git.postgresql.org/pg/commitdiff/d51b271059ba736f71c5372f713d907f711208ec Fujii Masao pushed: - Support clean switchover. In replication, when we shutdown the master, walsender tries to send all the outstanding WAL records to the standby, and then to exit. This basically means that all the WAL records are fully synced between two servers after the clean shutdown of the master. So, after promoting the standby to new master, we can restart the stopped master as new standby without the need for a fresh backup from new master. But there was one problem so far: though walsender tries to send all the outstanding WAL records, it doesn't wait for them to be replicated to the standby. Then, before receiving all the WAL records, walreceiver can detect the closure of connection and exit. We cannot guarantee that there is no missing WAL in the standby after clean shutdown of the master. In this case, backup from new master is required when restarting the stopped master as new standby. This patch fixes this problem. It just changes walsender so that it waits for all the outstanding WAL records to be replicated to the standby before closing the replication connection. Per discussion, this is a fix that needs to get backpatched rather than new feature. So, back-patch to 9.1 where enough infrastructure for this exists. Patch by me, reviewed by Andres Freund. http://git.postgresql.org/pg/commitdiff/985bd7d49726c9f178558491d31a570d47340459 Andrew Dunstan pushed: - Properly dump dropped foreign table cols in binary-upgrade mode. In binary upgrade mode, we need to recreate and then drop dropped columns so that all the columns get the right attribute number. This is true for foreign tables as well as for native tables. For foreign tables we have been getting the first part right but not the second, leading to bogus columns in the upgraded database. Fix this all the way back to 9.1, where foreign tables were introduced. http://git.postgresql.org/pg/commitdiff/81166a2f7e1e792a746c907fe9e0318cc736311a Alvaro Herrera pushed: - Avoid inconsistent type declaration. Clang 3.3 correctly complains that a variable of type enum MultiXactStatus cannot hold a value of -1, which makes sense. Change the declared type of the variable to int instead, and apply casting as necessary to avoid the warning. Per notice from Andres Freund http://git.postgresql.org/pg/commitdiff/4ca50e071024421e3b75bf7e48fda08141360636 - Update pg_resetxlog's documentation on multixacts. I added some more functionality to it in 0ac5ad5134f27 but neglected to add it to the docs. Per Peter Eisentraut in message 1367112171.32604.4.camel@vanquo.pezone.net http://git.postgresql.org/pg/commitdiff/9db4ad44eb02326bbe8eeaf7d1dd452844764a20 - Document relminmxid and datminmxid. I introduced these new fields in 0ac5ad5134f27 but neglected to add them to the system catalogs section of the docs. Per Thom Brown in message CAA-aLv7UiO=Whiq3MVbsEqSyQRthuX8Tb_RLyBuQt0KQBp=6EQ@mail.gmail.com http://git.postgresql.org/pg/commitdiff/863fad1bcc9de52381e117bfecc89dfb4a52f84a - Send SIGKILL to children if they don't die quickly in immediate shutdown. On immediate shutdown, or during a restart-after-crash sequence, postmaster used to send SIGQUIT (and then abandon ship if shutdown); but this is not a good strategy if backends don't die because of that signal. (This might happen, for example, if a backend gets tangled trying to malloc() due to gettext(), as in an example illustrated by MauMau.) This causes problems when later trying to restart the server, because some processes are still attached to the shared memory segment. Instead of just abandoning such backends to their fates, we now have postmaster hang around for a little while longer, send a SIGKILL after some reasonable waiting period, and then exit. This makes immediate shutdown more reliable. There is disagreement on whether it's best for postmaster to exit after sending SIGKILL, or to stick around until all children have reported death. If this controversy is resolved differently than what this patch implements, it's an easy change to make. Bug reported by MauMau in message 20DAEA8949EC4E2289C6E8E58560DEC0@maumau MauMau and Álvaro Herrera http://git.postgresql.org/pg/commitdiff/82233ce7ea42d6ba519aaec63008aff49da6c7af Noah Misch pushed: - Renovate display of non-ASCII messages on Windows. GNU gettext selects a default encoding for the messages it emits in a platform-specific manner; it uses the Windows ANSI code page on Windows and follows LC_CTYPE on other platforms. This is inconvenient for PostgreSQL server processes, so realize consistent cross-platform behavior by calling bind_textdomain_codeset() on Windows each time we permanently change LC_CTYPE. This primarily affects SQL_ASCII databases and processes like the postmaster that do not attach to a database, making their behavior consistent with PostgreSQL on non-Windows platforms. Messages from SQL_ASCII databases use the encoding implied by the database LC_CTYPE, and messages from non-database processes use LC_CTYPE from the postmaster system environment. PlatformEncoding becomes unused, so remove it. Make write_console() prefer WriteConsoleW() to write() regardless of the encodings in use. In this situation, write() will invariably mishandle non-ASCII characters. elog.c has assumed that messages conform to the database encoding. While usually true, this does not hold for SQL_ASCII and MULE_INTERNAL. Introduce MessageEncoding to track the actual encoding of message text. The present consumers are Windows-specific code for converting messages to UTF16 for use in system interfaces. This fixes the appearance in Windows event logs and consoles of translated messages from SQL_ASCII processes like the postmaster. Note that SQL_ASCII inherently disclaims a strong notion of encoding, so non-ASCII byte sequences interpolated into messages by %s may yet yield a nonsensical message. MULE_INTERNAL has similar problems at present, albeit for a different reason: its lack of libiconv support or a conversion to UTF8. Consequently, one need no longer restart Windows with a different Windows ANSI code page to broadly test backend logging under a given language. Changing the user's locale ("Format") is enough. Several accounts can simultaneously run postmasters under different locales, all correctly logging localized messages to Windows event logs and consoles. Alexander Law and Noah Misch http://git.postgresql.org/pg/commitdiff/5f538ad004aa00cf0881f179f0cde789aad4f47e - Initialize pad bytes in GinFormTuple(). Every other core buffer page consumer initializes the bytes it furnishes to PageAddItem(). For consistency, do the same here. No back-patch; regardless, we couldn't count on the fix so long as binary upgrade can carry forward affected index builds. http://git.postgresql.org/pg/commitdiff/1d96bb96024c51f5a445f85ec45ce2e9bbd08c56 - Document effect of constant folding on CASE. Back-patch to all supported versions. Laurenz Albe http://git.postgresql.org/pg/commitdiff/d53f7cf11658a3252a6fddf308b992b751379f09 - Cooperate with the Valgrind instrumentation framework. Valgrind "client requests" in aset.c and mcxt.c teach Valgrind and its Memcheck tool about the PostgreSQL allocator. This makes Valgrind roughly as sensitive to memory errors involving palloc chunks as it is to memory errors involving malloc chunks. Further client requests in PageAddItem() and printtup() verify that all bits being added to a buffer page or furnished to an output function are predictably-defined. Those tests catch failures of C-language functions to fully initialize the bits of a Datum, which in turn stymie optimizations that rely on _equalConst(). Define the USE_VALGRIND symbol in pg_config_manual.h to enable these additions. An included "suppression file" silences nominal errors we don't plan to fix. Reviewed in earlier versions by Peter Geoghegan and Korry Douglas. http://git.postgresql.org/pg/commitdiff/19085116eeecfde0a3fc1611eaffccc35bcec204 - Refactor aset.c and mcxt.c in preparation for Valgrind cooperation. Move some repeated debugging code into functions and store intermediates in variables where not presently necessary. No code-generation changes in a production build, and no functional changes. This simplifies and focuses the main patch. http://git.postgresql.org/pg/commitdiff/a855148a29b786b179308b3bd5c59fe5b67110d8 - Permit super-MaxAllocSize allocations with MemoryContextAllocHuge(). The MaxAllocSize guard is convenient for most callers, because it reduces the need for careful attention to overflow, data type selection, and the SET_VARSIZE() limit. A handful of callers are happy to navigate those hazards in exchange for the ability to allocate a larger chunk. Introduce MemoryContextAllocHuge() and repalloc_huge(). Use this in tuplesort.c and tuplestore.c, enabling internal sorts of up to INT_MAX tuples, a factor-of-48 increase. In particular, B-tree index builds can now benefit from much-larger maintenance_work_mem settings. Reviewed by Stephen Frost, Simon Riggs and Jeff Janes. http://git.postgresql.org/pg/commitdiff/263865a48973767ce8ed7b7788059a38a24a9f37 Robert Haas pushed: - pgbench: Add long options for all existing short options. Fabien Coelho, reviewed by Fabrízio de Royes Mello, with some further changes by me http://git.postgresql.org/pg/commitdiff/79cddb18419778be3202c971b3f21cdd90f7b719 - pgbench: Fix inadvertent inconsistency in help message. Per report from Fujii Masao. http://git.postgresql.org/pg/commitdiff/682d977f816e7fa7f29c723666248a8c3ac09bd6 - Define Trap and TrapMacro even in non-cassert builds. In some cases, the use of these macros may be preferable to Assert() or AssertMacro(), since this way the caller can set the trap message. Andres Freund and Robert Haas http://git.postgresql.org/pg/commitdiff/5ee73525d57380a55b5c87f8df1c30bd32fb98b3 - Make the OVER keyword unreserved. This results in a slightly less specific error message when OVER is used in a context where we don't accept window functions, but per discussion, it's worth it to get the benefit of not needing to reserve this keyword any more. This same refactoring will also let us avoid reserving some other keywords that we expect to add in upcoming patches (specifically, IGNORE, RESPECT, and FILTER). Troels Nielsen, with minor changes by me http://git.postgresql.org/pg/commitdiff/5893ffa79c03824f34ae3d37f211381fd1c17283 Tom Lane pushed: - Tweak wording in sequence-function docs to avoid PDF build failures. Adjust the wording in the first para of "Sequence Manipulation Functions" so that neither of the link phrases in it break across line boundaries, in either A4- or US-page-size PDF output. This fixes a reported build failure for the 9.3beta2 A4 PDF docs, and future-proofs this particular para against causing similar problems in future. (Perhaps somebody will fix this issue in the SGML/TeX documentation tool chain someday, but I'm not holding my breath.) Back-patch to all supported branches, since the same problem could rise up to bite us in future updates if anyone changes anything earlier than this in func.sgml. http://git.postgresql.org/pg/commitdiff/a03ae56e40d7b401ebf93f5732e89ef8cb5237f9 - Expect EWOULDBLOCK from a non-blocking connect() call only on Windows. On Unix-ish platforms, EWOULDBLOCK may be the same as EAGAIN, which is *not* a success return, at least not on Linux. We need to treat it as a failure to avoid giving a misleading error message. Per the Single Unix Spec, only EINPROGRESS and EINTR returns indicate that the connection attempt is in progress. On Windows, on the other hand, EWOULDBLOCK (WSAEWOULDBLOCK) is the expected case. We must accept EINPROGRESS as well because Cygwin will return that, and it doesn't seem worth distinguishing Cygwin from native Windows here. It's not very clear whether EINTR can occur on Windows, but let's leave that part of the logic alone in the absence of concrete trouble reports. Also, remove the test for errno == 0, effectively reverting commit da9501bddb42222dc33c031b1db6ce2133bcee7b, which AFAICS was just a thinko; or at best it might have been a workaround for a platform-specific bug, which we can hope is gone now thirteen years later. In any case, since libpq makes no effort to reset errno to zero before calling connect(), it seems unlikely that that test has ever reliably done anything useful. Andres Freund and Tom Lane http://git.postgresql.org/pg/commitdiff/a099482c86d85299f1942b2919721a23da37724e - Mark index-constraint comments with correct dependency in pg_dump. When there's a comment on an index that was created with UNIQUE or PRIMARY KEY constraint syntax, we need to label the comment as depending on the constraint not the index, since only the constraint object actually appears in the dump. This incorrect dependency can lead to parallel pg_restore trying to restore the comment before the index has been created, per bug #8257 from Lloyd Albin. This patch fixes pg_dump to produce the right dependency in dumps made in the future. Usually we also try to hack pg_restore to work around bogus dependencies, so that existing (wrong) dumps can still be restored in parallel mode; but that doesn't seem practical here since there's no easy way to relate the constraint dump entry to the comment after the fact. Andres Freund http://git.postgresql.org/pg/commitdiff/9ef86cd994e9f2a684996df994d4657e84a6c0bb Michael Meskes pushed: - Fixed incorrect description of EXEC SQL VAR command. Thanks to MauMau <maumau307@gmail.com> for finding and fixing this. http://git.postgresql.org/pg/commitdiff/a2769a4e2137bda5f3ad2834fbb5f353f86cab40 Heikki Linnakangas pushed: - Track spinlock delay in microsecond granularity. On many platforms the OS will round the sleep time to millisecond resolution, but there is no reason for us to pre-emptively round the argument to pg_usleep. When the delay was measured in milliseconds and started from 1 ms, it sometimes took many attempts until the logic that increases the delay by multiplying with a random value between 1 and 2 actually managed to bump it from 1 ms to 2 ms. That lead to a sequence of 1 ms waits until the delay started to increase. This wasn't really a problem but it looked odd if you observed the waits. There is no measurable difference in performance, but it's more readable this way. Jeff Janes http://git.postgresql.org/pg/commitdiff/9e0bc7c1e84d7fffb93130f2b7d079a0853329ed - Inline ginCompareItemPointers function for speed. ginCompareItemPointers function is called heavily in gin index scans - inlining it speeds up some kind of queries a lot. http://git.postgresql.org/pg/commitdiff/ee6556555b237c0feeb175e7ea7ce23af959e7ba Bruce Momjian pushed: - pg_upgrade: change -u to -U, for consistency. Change -u (user) option to -U, for consistency with other tools like pg_dump and psql. Also expand --user to --username, again for consistency. BACKWARD INCOMPATIBILITY http://git.postgresql.org/pg/commitdiff/457d6cf049c57cabe9b46ea13f26138040a214ec - pg_upgrade: trim down --help and doc option descriptions. Previous code had old/new prefixes on option values, e.g. --old-datadir=OLDDATADIR. Remove them, for simplicity; now: --old-datadir=DATADIR. Also update docs to do the same. http://git.postgresql.org/pg/commitdiff/fb771f9086aab3018b652e1d8e5207208311bb23 - pg_upgrade: remove -h option. -h (help) is not needed; pg_upgrade already supports --help and -?, which is consistent with other tools. http://git.postgresql.org/pg/commitdiff/e029275cdeb39cd2178ac23e2fcc65520f7b7b9c - pg_upgrade: pass username to analyze script. If -U (user) is specified, pass the username into the created analyze script. Per request from Ray Stell http://git.postgresql.org/pg/commitdiff/f85136106d87f54e87635736dfe1b8227b6803ad == Rejected Patches (for now) == No one was disappointed this week :-) == Pending Patches == Laurenz Albe sent in another revision of a patch to document some portability issues and approaches to same using floating point numbers. Dean Rasheed sent in another revision of a patch to implement WITH CHECK OPTION for updateable views. Andres Freund and Fabien COELHO traded patches to implement CREATE CAST ... AS EXPLICIT. Alvaro Herrera sent in another revision of a patch to remove unused targets. Amit Kapila sent in another revision of a patch to implement ALTER SYSTEM to change GUC variables durably across restarts of the PostgreSQL server. Rushabh Lathia and Pavel Stehule traded patches to allow access to the call stack in PL/pgsql's SET DIAGNOSTICS statement. Dimitri Fontaine sent in another revision of a patch to implement EXTENSION templates. Andres Freund sent in another revision of a patch to help with generating logical changesets in WAL. Joe Conway sent in two more revisions of a patch to add Levenshtein-Demerau distance to fuzzystrmatch. Alexander Korotkov and Heikki Linnakangas traded patches to add some helpful information to GIN indexes. Alexander Korotkov sent in another revision of a patch to do fast scans on GIN indexes. Alexander Korotkov and Heikki Linnakangas traded patches to optimize ordering in a GIN index. Michael Paquier sent in three more revisions of a patch to implement REINDEX CONCURRENTLY. Nicholas White sent in seven more revisions of a patch to implement IGNORE NULLS in windowing functions. Mark Wong sent in another revision of a patch to add an SPI_gettypmod() function to return a field's typemod from a TupleDesc. Heikki Linnakangas and Amit Kapila traded patches to improve the pglz compressor's performance. Kyotaro HORIGUCHI sent in two more revisions of a patch to reduce the maximum error in tuple estimation after a VACUUM. Josh Kupershmidt sent in another revision of a patch to fix some misbehavior of pg_ctl with relative paths. Heikki Linnakangas sent in another revision of a patch to improve the checkpoint IO scheduler for stable transaction responses. Pavel Stehule sent in another revision of a patch to add some new error fields to PL/pgsql. Szymon Guz, Ronan Deklau, and Steve Singer traded patches to fix conversion for Decimal arguments in plpython functions. Robins Tharakan sent in another revision of a patch to add more regression tests for DDL affecting databases themselves (ALTER DATABASE, e.g.). Cedric Villemain sent in another revision of a patch to make VPATH builds work better. Peter Eisentraut sent in another revision of a patch to revive the line type. Kevin Grittner sent in another revision of a patch to allow for refreshing materialized views concurrently. Heikki Linnakangas sent in another revision of a patch to scale xlog inserts better. Fabien COELHO sent in two more revisions of a patch to add --progress to pgbench. Jeff Davis sent in another revision of a patch to teach pg_filedump about page checksums. Pavel Stehule sent in two more revisions of a patch to change the ANY variadic elements to array in PL/pgsql. Andres Freund sent in another revision of a patch to enable extensible external toast tuple support. Robert Haas sent in two more revisions of a patch to implement MVCC access to the calalog. Fabien COELHO sent in another revision of a patch to implement pgbench --throttle. Ian Link sent in another revision of a patch to add a query result history on demand to psql. Robins Tharakan sent in another revision of a patch to add regression tests for CREATE OPERATOR. Bruce Momjian sent in a patch to add a way to get timezone offsets from UTC with to_char(). Bruce Momjian sent in another revision of a patch to make pg_ctl promote status more in line with the LSB standards for same. Gilles Darold sent in a patch to make psql's \pset without arguments dump out the currently set psql variables: name and content. David Fetter sent in two more revisions of a patch to add makeFuncArgs. Fabien COELHO sent in two revisions of a patch to add another regression test suite which is fuller but more time-consuming. Gurjeet Singh sent in two more revisions of a patch to make AND/OR lists more efficient. David Fetter sent in another revision of a patch to add FILTER for aggregates per the SQL spec. David Fetter sent in another revision of a patch to add a WITH ORDINALITY option for calls to set-returning functions. Jon Nelson, Jeff Davis, and Greg Smith traded patches to fallocate / posix_fallocate for new WAL file creation when those functions are available.
В списке pgsql-announce по дате отправления: