== PostgreSQL Weekly News - February 28 2016 == == PostgreSQL Product News ==
Ora2PG 17.0 a migration system for moving from Oracle and MySQL to PostgreSQL, released. http://ora2pg.darold.net/ pgBadger 8.0, a parallel PostgreSQL log analyzer written in Perl, released: https://github.com/dalibo/pgbadger/blob/master/ChangeLog Development: https://github.com/dalibo/pgbadger/ pgbouncer 1.7.2, a light-weight connection pooler for PostgreSQL, released. https://pgbouncer.github.io/changelog.html == PostgreSQL Jobs for February == http://archives.postgresql.org/pgsql-jobs/2016-02/ == PostgreSQL Local == The first pan-Asian PostgreSQL conference will be held March 17-19, 2016 in Singapore. Registration is open. http://2016.pgday.asia/ Nordic PGDay 2016 is a one day one track conference which will be held in Helsinki, Finland, on March 17, 2016. Registration is still open. http://2016.nordicpgday.org/ PGDay Paris 2016, on March 31 in Paris, has opened registration. http://www.pgday.paris/registration/ (scroll down for English) The 8th PostgreSQL Session will be held on April 6th, 2016, in Lyon, France. The CfP is open until February 29, 2016 at call-for-paper <AT> postgresql-sessions <DOT> org. PGConf US 2016 will take place April 18-20, 2016 in NYC. Registration is open. http://www.pgconf.us/2016/ LinuxFest Northwest will take place April 23-24, 2016 at Bellingham Technical College in Bellingham, Washington, USA. The CfP is now open. http://www.linuxfestnorthwest.org/2016/present FOSS4G NA, will be held May 2-5, 2016 in Raleigh, North Carolina. The CfP is still open. https://2016.foss4g-na.org/cfp PGCon 2016 will be held May 17-21, 2016 in Ottawa. http://www.pgcon.org/ This year's Swiss PGDay will be held on June 24, 2016 at the University of Applied Sciences in Rapperswil (Switzerland). The CfP is open. http://www.pgday.ch/ "5432 ... Meet us!", will take place in Milan, Italy on June 28-29, 2016. The CfP is open until February 28th, 2016. http://5432meet.us/ == 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 da...@fetter.org, German language to p...@pgug.de, Italian language to p...@itpug.org. Spanish language to p...@arpug.com.ar. == Applied Patches == Andres Freund pushed: - Fix wrong keysize in PrivateRefCountHash creation. In 4b4b680c3 I accidentally used sizeof(PrivateRefCountArray) instead of sizeof(PrivateRefCountEntry) when creating the refcount overflow hashtable. As the former is bigger than the latter, this luckily only resulted in a slightly increased memory usage when many buffers are pinned in a backend. Reported-By: Takashi Horikawa Discussion: 73fa3881462c614096f815f75628afcd035a4...@bpxm01gp.gisp.nec.co.jp Backpatch: 9.5, where thew new ref count infrastructure was introduced http://git.postgresql.org/pg/commitdiff/ea56b06cf77a6932a74f9d4ec6c950a333d1527d Tom Lane pushed: - Remove redundant PGPROC.lockGroupLeaderIdentifier field. We don't really need this field, because it's either zero or redundant with PGPROC.pid. The use of zero to mark "not a group leader" is not necessary since we can just as well test whether lockGroupLeader is NULL. This does not save very much, either as to code or data, but the simplification seems worthwhile anyway. http://git.postgresql.org/pg/commitdiff/73bf8715aa7430bd003516bde448507fbe789c05 - Create a function to reliably identify which sessions block which others. This patch introduces "pg_blocking_pids(int) returns int[]", which returns the PIDs of any sessions that are blocking the session with the given PID. Historically people have obtained such information using a self-join on the pg_locks view, but it's unreasonably tedious to do it that way with any modicum of correctness, and the addition of parallel queries has pretty much broken that approach altogether. (Given some more columns in the view than there are today, you could imagine handling parallel-query cases with a 4-way join; but ugh.) The new function has the following behaviors that are painful or impossible to get right via pg_locks: 1. Correctly understands which lock modes block which other ones. 2. In soft-block situations (two processes both waiting for conflicting lock modes), only the one that's in front in the wait queue is reported to block the other. 3. In parallel-query cases, reports all sessions blocking any member of the given PID's lock group, and reports a session by naming its leader process's PID, which will be the pg_backend_pid() value visible to clients. The motivation for doing this right now is mostly to fix the isolation tests. Commit 38f8bdcac4982215beb9f65a19debecaf22fd470 lobotomized isolationtester's is-it-waiting query by removing its ability to recognize nonconflicting lock modes, as a crude workaround for the inability to handle soft-block situations properly. But even without the lock mode tests, the old query was excessively slow, particularly in CLOBBER_CACHE_ALWAYS builds; some of our buildfarm animals fail the new deadlock-hard test because the deadlock timeout elapses before they can probe the waiting status of all eight sessions. Replacing the pg_locks self-join with use of pg_blocking_pids() is not only much more correct, but a lot faster: I measure it at about 9X faster in a typical dev build with Asserts, and 3X faster in CLOBBER_CACHE_ALWAYS builds. That should provide enough headroom for the slower CLOBBER_CACHE_ALWAYS animals to pass the test, without having to lengthen deadlock_timeout yet more and thus slow down the test for everyone else. http://git.postgresql.org/pg/commitdiff/52f5d578d6c29bf254e93c69043b817d4047ca67 Noah Misch pushed: - MSVC: Clean tmp_check directory of pg_controldata test suite. Back-patch to 9.4, where the suite was introduced. http://git.postgresql.org/pg/commitdiff/41635887835d54715a2fd4745dbf0fdb99f57f4f - Clean the last few TAP suite tmp_check directories. Back-patch to 9.5, where the suites were introduced. http://git.postgresql.org/pg/commitdiff/25924ac47abde5330ca502e23796e9d37cd1ae68 Robert Haas pushed: - Enable parallelism for prepared statements and extended query protocol. Parallel query can't handle running a query only partially rather than to completion. However, there seems to be no way to run a statement prepared via SQL PREPARE other than to completion, so we can enable it there without a problem. The situation is more complicated for the extend query protocol. libpq seems to provide no way to send an Execute message with a non-zero rowcount, but some other client might. If that happens, and a parallel plan was chosen, we'll execute the parallel plan without using any workers, which may be somewhat inefficient but should still work. Hopefully this won't be a problem; users can always set max_parallel_degree=0 to avoid choosing parallel plans in the first place. Amit Kapila, reviewed by me. http://git.postgresql.org/pg/commitdiff/57a6a72b6bc98f3003e87bc31de4b9c2c89fe019 - Add new FDW API to test for parallel-safety. This is basically a bug fix; the old code assumes that a ForeignScan is always parallel-safe, but for postgres_fdw, for example, this is definitely false. It should be true for file_fdw, though, since a worker can read a file from the filesystem just as well as any other backend process. Original patch by Thomas Munro. Documentation, and changes to the comments, by me. http://git.postgresql.org/pg/commitdiff/35746bc348b6bf1f690fe17f4f80cfb68e22f504 - On second thought, disable parallelism for prepared statements. CREATE TABLE .. AS EXECUTE can turn an apparently read-only query into a write operation, which parallel query can't handle. It's a bit of a shame that requires us to avoid parallel query for queries prepared via PREPARE in all cases, but for right now it does. http://git.postgresql.org/pg/commitdiff/7bea19d0a9d3e6975418ffe685fb510bd31ab434 - Respect TEMP_CONFIG when running contrib regression tests. Thomas Munro http://git.postgresql.org/pg/commitdiff/9117985b6ba9beda4f280f596035649fc23b6233 Álvaro Herrera pushed: - Fix typos Backpatch to: 9.4 http://git.postgresql.org/pg/commitdiff/343f709c0691abdc779bec91fa3587dda259808e - Add README in src/test and src/test/modules. Author: Craig Ringer Reviewed by: Michaël Paquier http://git.postgresql.org/pg/commitdiff/bda0b081984011ba5347bf3eecc95b71833de082 - Add POD docs to PostgresNode. Also, the dump_info method got split into another method that returns the stuff as a string instead of just printing it to stdout. Add a new README in src/test/perl too. Author: Craig Ringer Reviewed by: Michaël Paquier http://git.postgresql.org/pg/commitdiff/e64009303d4e2434abafbdafe4d571cc4f279d39 - Move some code from RewindTest into PostgresNode. Some code in the RewindTest test suite is more generally useful than just for that suite, so put it where other test suites can reach it. Some postgresql.conf parameters change their default values when a cluster is initialized with 'allows_streaming' than the previous behavior; most notably, autovacuum is no longer turned off. (Also, we no longer call pg_ctl promote with -w, but that flag doesn't actually do anything in promote so there's no behavior change.) Author: Michael Paquier http://git.postgresql.org/pg/commitdiff/89ac7004dadf4116d9b180bb5ff64b64bfce94b1 - Apply last revision of recovery patch. I applied the previous-to-last revision of Michaël's submitted patch instead of the last; these two tweaks pointed out by Craig were left out of the previous commit by accident. http://git.postgresql.org/pg/commitdiff/74d58425c70f9f7f1cb5d7f428ceaa1b56aa081d - Add a test framework for recovery. This long-awaited framework is an expansion of the existing PostgresNode stuff to support additional features for recovery testing; the recovery tests included in this commit are a starting point that cover some of the recovery features we have. More scripts are expected to be added later. Author: Michaël Paquier, a bit of help from Amir Rohan. Reviewed by: Amir Rohan, Stas Kelvich, Kyotaro Horiguchi, Victor Wagner, Craig Ringer, Álvaro Herrera. Discussion: http://www.postgresql.org/message-id/CAB7nPqTf7V6rswrFa=q_rrWeETUWagP=h8lx8xaov2jcxw0...@mail.gmail.com Discussion: http://www.postgresql.org/message-id/trinity-b4a8035d-59af-4c42-a37e-258f0f28e44a-1443795007012@3capp-mailcom-lxa08 http://git.postgresql.org/pg/commitdiff/49148645f7f30f461b09618b5342b37425f33b22 - Add isolationtester spec for old heapam.c bug. In 0e5680f4737a, I fixed a bug in heapam that caused spurious deadlocks when multiple updates concurrently attempted to modify the old version of an updated tuple whose new version was key-share locked. I proposed an isolationtester spec file that reproduced the bug, but back then isolationtester wasn't mature enough to be able to run it. Now that 38f8bdcac498 is in the tree, we can have this spec file too. Discussion: https://www.postgresql.org/message-id/20141212205254.GC1768%40alvh.no-ip.org http://git.postgresql.org/pg/commitdiff/c9578135f769072e2597b88402f256a398279c91 Andrew Dunstan pushed: - Respect TEMP_CONFIG when pg_regress_check and friends are called. This reverts commit 9117985b6ba9beda4f280f596035649fc23b6233 in favor of a more general solution. http://git.postgresql.org/pg/commitdiff/87cc6b57a911bf439ff9e53f1eddba58e9749ffe - Allow multiple --temp-config arguments to pg_regress. This means that if, for example, TEMP_CONFIG is set and a Makefile explicitly sets a temp-config file, both will now be used. Patch from John Gorman. http://git.postgresql.org/pg/commitdiff/26fdff1b8f76f3c47d4e19be7c4aef3cdcd3393c == Rejected Patches (for now) == No one was disappointed this week :-) == Pending Patches == Amit Kapila sent in another revision of a patch to extend pg_stat_activity with wait_type_event. Corey Huinker sent in another revision of a patch to add \gexec to psql. Rushabh Lathia sent in another revision of a patch to help fix some slowness in FDW DML. Michaël Paquier sent in another revision of a patch to add new authentication methods with SCRAM as one example. Vitaly Burovoy sent in a patch to fix handling of negative years. Ashutosh Bapat sent in another revision of a patch to push sorted joins down to FDWs. Fujii Masao sent in a patch to add tab completion in psql to CREATE USER MAPPING. Michaël Paquier sent in a pair of patches, one which extends XLogInsert() with an extra argument for flags, the other which introduces XLogInsertExtended with this extra argument and leaves XLogInsert() alone. Michaël Paquier sent in another revision of a patch to fix a potential data loss bug on ext4 filesystems. Craig Ringer sent in another revision of a patch to implement failover slots. Tomas Vondra and Mark Dilger traded patches to improve GROUP BY estimation. Tomas Vondra and Kyotaro HORIGUCHI traded patches to allow index-only scans with partial indexes. Jim Nasby sent in another revision of a patch to convert PL/Tcl from strings to objects. Thomas Munro sent in two more revisions of a patch to make the PostgreSQL in parallel mode safer on PPC. Teodor Sigaev sent in two more revisions of a patch to fix a GIN corruption bug. Vitaly Burovoy sent in a patch to fix some overflows in timstamp[tz]. Iacob Catalin and Pavel Stěhule traded patches to add an ereport function to PL/PythonU. Mithun Cy sent in another revision of a patch to cache data in GetSnapshotData(). Kyotaro HORIGUCHI and SAWADA Masahiko traded patches to support N>1 synchronous standby servers. Petr Jelínek sent in another revision of a patch to add generic WAL messages. Julien Rouhaud sent in a patch to ensure that the CREATE OPERATOR CLASS documentation mentions that BRIN indexes also support the STORAGE parameter. Kyotaro HORIGUCHI sent in a patch to fix wrong comments for PQmblen() and PQdsplen(). Kyotaro HORIGUCHI sent in a patch to fix identifier completion with multibyte characters. Peter Eisentraut sent in a patch to add table qualifications to some tags in pg_dump. Kyotaro HORIGUCHI sent in another revision of a patch to add "IF [NOT] EXISTS" support to psql's tab completion. Michaël Paquier sent in four more revisions of a patch to add new regression tests for recovery, etc. Peter Eisentraut sent in a patch to introduce new configuration parameters syslog_sequence_numbers and syslog_split_lines. Amit Kapila sent in another revision of a patch to speed up CLOG access. Vitaly Burovoy sent in a patch to allow infinite values in to_timestamp. Pavel Stěhule sent in another revision of a patch to add a raw format to COPY. Vinayak Pokure sent in another revision of a patch to add a vacuum progress checker. Roma Sokolov sent in two revisions of a patch to fix DROP OPERATOR to reset links to itself on commutator and negator. Ivan Kartyshov sent in two revisions of a patch to add a pg_oldest_xlog_location() function. Simon Riggs sent in two revisions of a patch to fix an issue with relcache invalidation on a physical replica. Amit Langote sent in a patch to fix a typo in src/backend/utils/init/postinit.c. Joe Conway sent in two more revisions of a patch to add control data functions. Tom Lane sent in a WIP patch to path-ify the upper planner. And there was much rejoicing. Jim Nasby sent in a patch to improve error handling in PL/Tcl. -- Sent via pgsql-announce mailing list (pgsql-announce@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-announce