== PostgreSQL Weekly News - June 09 2013 == - Mailing list pgsql-announce
From | David Fetter |
---|---|
Subject | == PostgreSQL Weekly News - June 09 2013 == |
Date | |
Msg-id | 20130610065014.GB1586@fetter.org Whole thread Raw |
List | pgsql-announce |
== PostgreSQL Weekly News - June 09 2013 == The first Commitfest for the next version of PostgreSQL will start soon. Dust off those patches and prepare to help others dust off theirs! https://commitfest.postgresql.org/action/commitfest_view?id=18 == PostgreSQL Product News == Slony-I 2.2.0 beta 4 released. http://www.slony.info/ psqlODBC 09.02.0100 released. http://www.postgresql.org/ftp/odbc/versions/ == PostgreSQL Jobs for June == http://archives.postgresql.org/pgsql-jobs/2013-06/threads.php == PostgreSQL Local == PG Day France is the major French-speaking PostgreSQL community event. It will be held June 13, 2013 in Nantes, France. http://pgday.fr/ 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 open. 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 Save The Date! Postgres Open 2013 will be in Chicago, IL, USA, September 16-18. Hotel Sax: https://reservations.ihotelier.com/crs/g_reservation.cfm?groupID=888761&hotelID=6865 Early Bird registration open through June 30, 2013: http://postgresopen-eac2.eventbrite.com/ Presentations are due by July 1, 2013. http://www.postgresopen.org/2013/speaker/ 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 == Noah Misch pushed: - Don't emit non-canonical empty arrays in array_remove(). Dean Rasheed http://git.postgresql.org/pg/commitdiff/97c4d9b7c71519d9dc281394af2c4bcb28bdf136 Heikki Linnakangas pushed: - Code review of recycling WAL segments in a restartpoint. Seems cleaner to get the currently-replayed TLI in the same call to GetXLogReplayRecPtr that we get the WAL position. Make it more clear in the comment what the code does when recovery has already ended (RecoveryInProgress() will set ThisTimeLineID in that case). Finally, make resetting ThisTimeLineID afterwards more explicit. http://git.postgresql.org/pg/commitdiff/e1e2bb34f1237cbec396bcaa795f0fa955af0e72 - Put back allow_system_table_mods check in heap_create(). This reverts commit a475c6036752c26dca538632b68fd2cc592976b7. Erik Rijkers reported back in January 2013 that after the patch, if you do "pg_dump -t myschema.mytable" to dump a single table, and restore that in a database where myschema does not exist, the table is silently created in pg_catalog instead. That is because pg_dump uses "SET search_path=myschema, pg_catalog" to set schema the table is created in. While allow_system_table_mods is not a very elegant solution to this, we can't leave it as it is, so for now, revert it back to the way it was previously. http://git.postgresql.org/pg/commitdiff/15386281a62071f322155b74cb32c2fea92e8350 - Fix off-by-one in pg_xlogdump -r option. Because of the bug, -r would not accept the rmgr with the highest ID. http://git.postgresql.org/pg/commitdiff/79e15c7d86d3f781cc390a5a04db18254ce97b79 - Fix typo in comment. http://git.postgresql.org/pg/commitdiff/f73cb5567c2e27d9a02c7ddba9da8d8557cf08dd Stephen Frost pushed: - Additional spelling corrections. A few more minor spelling corrections, no functional changes. Thom Brown http://git.postgresql.org/pg/commitdiff/f129615fe72f70868a86862b663dd7d78dd5cb71 Tom Lane pushed: - Add semicolons to eval'd strings to hide a minor Perl behavioral change. "eval q{foo}" used to complain that the error was on line 2 of the eval'd string, because eval internally tacked on "\n;" so that the end of the erroneous command was indeed on line 2. But as of Perl 5.18 it more sanely says that the error is on line 1. To avoid Perl-version-dependent regression test results, use "eval q{foo;}" instead in the two places where this matters. Per buildfarm. Since people might try to use newer Perl versions with older PG releases, back-patch as far as 9.0 where these test cases were added. http://git.postgresql.org/pg/commitdiff/035a5e1e8c346efe25df6be4627b5f24cc3736b1 - Fix memory leak in LogStandbySnapshot(). The array allocated by GetRunningTransactionLocks() needs to be pfree'd when we're done with it. Otherwise we leak some memory during each checkpoint, if wal_level = hot_standby. This manifests as memory bloat in the checkpointer process, or in bgwriter in versions before we made the checkpointer separate. Reported and fixed by Naoya Anzai. Back-patch to 9.0 where the issue was introduced. In passing, improve comments for GetRunningTransactionLocks(), and add an Assert that we didn't overrun the palloc'd array. http://git.postgresql.org/pg/commitdiff/dbc6eb1f4b840d252031419d4bf694316812124f - Add ARM64 (aarch64) support to s_lock.h. Use the same gcc atomic functions as we do on newer ARM chips. (Basically this is a copy and paste of the __arm__ code block, but omitting the SWPB option since that definitely won't work.) Back-patch to 9.2. The patch would work further back, but we'd also need to update config.guess/config.sub in older branches to make them build out-of-the-box, and there hasn't been demand for it. Mark Salter http://git.postgresql.org/pg/commitdiff/5c7603c318872a42e1665b228f68fdf58714d945 - Provide better message when CREATE EXTENSION can't find a target schema. The new message (and SQLSTATE) matches the corresponding error cases in namespace.c. This was thought to be a "can't happen" case when extension.c was written, so we didn't think hard about how to report it. But it definitely can happen in 9.2 and later, since we no longer require search_path to contain any valid schema names. It's probably also possible in 9.1 if search_path came from a noninteractive source. So, back-patch to all releases containing this code. Per report from Sean Chittenden, though this isn't exactly his patch. http://git.postgresql.org/pg/commitdiff/530acda4dabe26a4345eccd28a92dd23b1e7a94a - Put analyze_keyword back in explain_option_name production. In commit 2c92edad48796119c83d7dbe6c33425d1924626d, I broke "EXPLAIN (ANALYZE)" syntax, because I mistakenly thought that ANALYZE/ANALYSE were only partially reserved and thus would be included in NonReservedWord; but actually they're fully reserved so they still need to be called out here. A nicer solution would be to demote these words to type_func_name_keyword status (they can't be less than that because of "VACUUM [ANALYZE] ColId"). While that works fine so far as the core grammar is concerned, it breaks ECPG's grammar for reasons I don't have time to isolate at the moment. So do this for the time being. Per report from Kevin Grittner. Back-patch to 9.0, like the previous commit. http://git.postgresql.org/pg/commitdiff/3f783c882712db5a5e0056f271ff765edeb2571a - Prevent pushing down WHERE clauses into unsafe UNION/INTERSECT nests. The planner is aware that it mustn't push down upper-level quals into subqueries if the quals reference subquery output columns that contain set-returning functions or volatile functions, or are non-DISTINCT outputs of a DISTINCT ON subquery. However, it missed making this check when there were one or more levels of UNION or INTERSECT above the dangerous expression. This could lead to "set-valued function called in context that cannot accept a set" errors, as seen in bug #8213 from Eric Soroos, or to silently wrong answers in the other cases. To fix, refactor the checks so that we make the column-is-unsafe checks during subquery_is_pushdown_safe(), which already has to recursively inspect all arms of a set-operation tree. This makes qual_is_pushdown_safe() considerably simpler, at the cost that we will spend some cycles checking output columns that possibly aren't referenced in any upper qual. But the cases where this code gets executed at all are already nontrivial queries, so it's unlikely anybody will notice any slowdown of planning. This has been broken since commit 05f916e6add9726bf4ee046e4060c1b03c9961f2, which makes the bug over ten years old. A bit surprising nobody noticed it before now. http://git.postgresql.org/pg/commitdiff/964c0d0f80e485dd3a4073e073ddfd9bfdda90b2 - Minor docs wordsmithing. Swap the order of a couple of phrases to clarify what the adjective "subsequent" applies to. Joshua Tolley http://git.postgresql.org/pg/commitdiff/7b1e893acd4b7637de93631781f82e0f6834b621 - Remove fixed limit on the number of concurrent AllocateFile() requests. AllocateFile(), AllocateDir(), and some sister routines share a small array for remembering requests, so that the files can be closed on transaction failure. Previously that array had a fixed size, MAX_ALLOCATED_DESCS (32). While historically that had seemed sufficient, Steve Toutant pointed out that this meant you couldn't scan more than 32 file_fdw foreign tables in one query, because file_fdw depends on the COPY code which uses AllocateFile(). There are probably other cases, or will be in the future, where this nonconfigurable limit impedes users. We can't completely remove any such limit, at least not without a lot of work, since each such request requires a kernel file descriptor and most platforms limit the number we can have. (In principle we could "virtualize" these descriptors, as fd.c already does for the main VFD pool, but not without an additional layer of overhead and a lot of notational impact on the calling code.) But we can at least let the array size be configurable. Hence, change the code to allow up to max_safe_fds/2 allocated file requests. On modern platforms this should allow several hundred concurrent file_fdw scans, or more if one increases the value of max_files_per_process. To go much further than that, we'd need to do some more work on the data structure, since the current code for closing requests has potentially O(N^2) runtime; but it should still be all right for request counts in this range. Back-patch to 9.1 where contrib/file_fdw was introduced. http://git.postgresql.org/pg/commitdiff/007556bf08e6153c442fe3742adb3685fca3a0e0 - Remove ALTER DEFAULT PRIVILEGES' requirement of schema CREATE permissions. Per discussion, this restriction isn't needed for any real security reason, and it seems to confuse people more often than it helps them. It could also result in some database states being unrestorable. So just drop it. Back-patch to 9.0, where ALTER DEFAULT PRIVILEGES was introduced. http://git.postgresql.org/pg/commitdiff/f3839ea117fba6fdb69c75a1fe145aa86a4c8ae3 - Remove unnecessary restrictions about RowExprs in transformAExprIn(). When the existing code here was written, it made sense to special-case RowExprs because that was the only way that we could handle row comparisons at all. Now that we have record_eq() and arrays of composites, the generic logic for "scalar" types will in fact work on RowExprs too, so there's no reason to throw error for combinations of RowExprs and other ways of forming composite values, nor to ignore the possibility of using a ScalarArrayOpExpr. But keep using the old logic when comparing two RowExprs, for consistency with the main transformAExprOp() logic. (This allows some cases with not-quite-identical rowtypes to succeed, so we might get push-back if we removed it.) Per bug #8198 from Rafal Rzepecki. Back-patch to all supported branches, since this works fine as far back as 8.4. Rafal Rzepecki and Tom Lane http://git.postgresql.org/pg/commitdiff/a4424c57c3da52efa212b21521abff4bf129b19e - Tweak postgres_fdw regression test so autovacuum doesn't change results. Autovacuum occurring while the test runs could allow some of the inserts to go into recycled space, thus changing the output ordering of later queries. While we could complicate those queries to force sorting of their output rows, it doesn't seem like that would make the test better in any meaningful way, and conceivably it could hide unexpected diffs. Instead, tweak the affected queries so that the inserted rows aren't updated by the following UPDATE. Per buildfarm. http://git.postgresql.org/pg/commitdiff/e0b451e43250558b3c1ac830e067b39e25e0e348 Peter Eisentraut pushed: - Update SQL features list http://git.postgresql.org/pg/commitdiff/a3bd6096bdc6db70ec267116ba52a4cccbd34c2a - doc: Clarify description of VALUES command. Greg Smith http://git.postgresql.org/pg/commitdiff/58617e4dc131561f4b6ba492d6a404b05bd0b968 - doc: Fix <synopsis> in <term> markup. Although the DTD technically allows this, the resulting HTML is invalid because it puts block elements inside inline elements. DocBook 5.0 also doesn't allow it anymore, so it's fair to assume that this was never really intended to work. Replace <synopsis> with <literal>, which is the markup used elsewhere in the documentation in similar cases. http://git.postgresql.org/pg/commitdiff/c99d5d1bcc137c15058458bbdcdd2789b56e4c66 Bruce Momjian pushed: - pg_upgrade: document that --link should be used with --check Backpatch to 9.2. http://git.postgresql.org/pg/commitdiff/e2c84bc9f5f1f2f9570c882d10c2cbdf6fe9e47d Robert Haas pushed: - Ensure that XLOG_HEAP2_VISIBLE always targets an initialized page. Andres Freund http://git.postgresql.org/pg/commitdiff/a6370fd9ed3dbad6070b789eae916d6a037e4773 Kevin Grittner pushed: - Correct the documentation of pg_rewrite.ev_attr. It claimed the value was always zero; it is really always -1. Per report from Hari Babu http://git.postgresql.org/pg/commitdiff/734fbbd1d2d1babfbd195414e2445024ad549ae3 Andrew Dunstan pushed: - Handle Unicode surrogate pairs correctly when processing JSON. In 9.2, Unicode escape sequences are not analysed at all other than to make sure that they are in the form \uXXXX. But in 9.3 many of the new operators and functions try to turn JSON text values into text in the server encoding, and this includes de-escaping Unicode escape sequences. This processing had not taken into account the possibility that this might contain a surrogate pair to designate a character outside the BMP. That is now handled correctly. This also enforces correct use of surrogate pairs, something that is not done by the type's input routines. This fact is noted in the docs. http://git.postgresql.org/pg/commitdiff/94e3311b97448324d67ba9a527854271373329d9 - Don't downcase non-ascii identifier chars in multi-byte encodings. Long-standing code has called tolower() on identifier character bytes with the high bit set. This is clearly an error and produces junk output when the encoding is multi-byte. This patch therefore restricts this activity to cases where there is a character with the high bit set AND the encoding is single-byte. There have been numerous gripes about this, most recently from Martin Schäfer. Backpatch to all live releases. http://git.postgresql.org/pg/commitdiff/d535136b5d60b19f7ffa777b97ed301739c15a9d Joe Conway pushed: - Fix ordering of obj id for Rules and EventTriggers in pg_dump. getSchemaData() must identify extension member objects and mark them as not to be dumped. This must happen after reading all objects that can be direct members of extensions, but before we begin to process table subsidiary objects. Both rules and event triggers were wrong in this regard. Backport rules portion of patch to 9.1 -- event triggers do not exist prior to 9.3. Suggested fix by Tom Lane, initial complaint and patch by me. http://git.postgresql.org/pg/commitdiff/33a4466f767be8b153ef1ef78433ad9b1867dab8 == Rejected Patches (for now) == No one was disappointed this week :-) == Pending Patches == Noah Misch sent in a patch to improve partitioning performance by caching stringToNode() of pg_constraint.ccbin. Robert Haas sent in another revision of a patch to enable MVCC catalog access. Pavel Raiskup sent in a patch to add support for the TAS/S_UNLOCK instructions for aarch64. Michael Paquier sent in another revision of a patch to add support for REINDEX CONCURRENTLY. Andres Freund sent in a WIP patch to add extensible external toast tuples and add the "snappy" compression algorithm as a contrib module. Gurjeet Singh and Heikki Linnakangas traded patches to introduce a new automatic variable to pgbench: client_id. Amit Kapila sent in another revision of a patch to move unused buffers to freelist. Gurjeet Singh sent in another revision of a patch to make processing of long AND/OR lists more efficient. Greg Smith and Heikki Linnakangas traded patches to redesign how checkpoint segments are done. Dean Rasheed sent in two more revisions of a patch to make sure they catalog knows when a relation is updateable. Amit Kapila sent in another revision of a patch to reduce the amount of WAL for an update operation. Greg Smith sent in another revision of a patch to add a --throttle option to pgbench. Simon Riggs sent in a patch to batch trigger executions together to avoid execution overhead. Simon Riggs sent in a patch to make it possible to do ALTER TABLE ... ALTER CONSTRAINT. Dean Rasheed sent in another revision of a patch to add WITH CHECK OPTION to updateable views. Noah Misch sent in a flock of patches dealing with memory errors in 9.3. Noah Misch sent in two more revisions of a patch to do Valgrind memory checking. Tatsuo Ishii sent in a patch to rationalize client-side large object accessors. Jeff Davis sent in another revision of a patch to eliminate PD_ALL_VISIBLE. Jeff Davis sent in a patch to update pg_filedump to deal with current technologies like checksums.
pgsql-announce by date: