Umair Shahid | 25 May 16:32 2016

Announcing the Dubai PostgreSQL User Group


This is to announce the PostgreSQL User Group in Dubaimeant to provide a platform to anyone who is enthusiastic about PostgreSQL in the region or is just plain curious and wants to know more. I understand we have users and developers in the Middle East region, and hopefully this user group can provide a good platform for them to share views and exchange ideas. 

Please help spread the word and encourage local users to join. I will announce the date and topic of the first meetup as soon as we have enough people signed up to the group. 


- Umair
Stephen Frost | 23 May 20:57 2016

PostgresOpen Registration Open; 1 week left on CFP!


Early Bird Registration for PostgresOpen 2016, being held in Dallas,
Texas from September 13th to 16th, is now open!

Simply go to: and register.

The Program Committee is excited to be able to offer tickets for
PostgresOpen at the same rate as last year, with a $200 discount for
early bird registrations!

We are also pleased to announce that the Call for Papers is open up
until May 30th, Anywhere on Earth (AoE), only one week left to submit
your talk!

Presentations on any topic related to PostgreSQL including, but not
limited to, case studies, experiences, tools and utilities, migration
stories, existing features, new feature development, benchmarks,
performance tuning will be considered.

Tutorials will be announced in the coming weeks- watch our blog at for updates!

The Program Committee looks forward to bringing the best PostgreSQL
presentations and tutorials from speakers around the world back to

Speakers will be notified by June 6th, 2016 AoE, with the schedule to be
published once selected speakers have confirmed.

PostgresOpen 2016 is proud to announce 2ndQuadrant, global experts in
PostgreSQL support, training and development as a Diamond level sponsor!

Sponsorship opportunities are still available!  Please visit to review our prospectus.

We look forward to seeing everyone in Dallas!

Any questions?  Please contact: program2016 <at>

Stephen Frost
PostgresOpen 2016 Committee Chair
Giulio Calacoci | 23 May 10:35 2016

Barman 1.6.1 released

23 MAY 2016: 2ndQuadrant is proud to announce the release of Barman
version 1.6.1, a Backup and Recovery Manager for PostgreSQL.

This minor release introduces support for --peek option for get-wal
command which allow users to implement parallel remote restore commands
on standby servers and during recovery.

Through the new replication-status command, Barman becomes a very
practical tool for monitoring streaming replication status of every
managed server.

A few important improvements have been added to the check command, which
should make installation and initial configuration easier. Another step
in this direction is the switch-xlog command, a new feature also
included in this release.

Minor bugs have also been fixed, including support for
archive_mode=always for PostgreSQL 9.5, as well as FAILED backups
preventing new one from being taken.

Many thanks for funding towards the development of this release go to
Jobrapido (, Navionics (, and (

However, for a complete list of changes, see the "Release Notes" section


-   Website:
-   Download:
-   Documentation:
-   Man page, section 1:
-   Man page, section 5:
-   Support:
-   pgespresso extension:

Release notes

-   Add --peek option to get-wal command to discover existing WAL files
    from the Barman's archive

-   Add replication-status command for monitoring the status of any
    streaming replication clients connected to the PostgreSQL server.
    The --target option allows users to limit the request to only hot
    standby servers or WAL streaming clients

-   Add the switch-xlog command to request a switch of a WAL file to the
    PostgreSQL server. Through the '--force' it issues a CHECKPOINT

-   Add streaming_archiver_name option, which sets a proper
    application_name to pg_receivexlog when streaming_archiver is
    enabled (only for PostgreSQL 9.3 and above)

-   Check for _superuser_ privileges with PostgreSQL's standard
    connections (#30)

-   Check the WAL archive is never empty

-   Check for 'backup_label' on the master when server is down

-   Improve barman-wal-restore contrib script

-   Bug fixes:

    -   Treat the "failed backups" check as non-fatal
    -   Rename '-x' option for get-wal as '-z'
    -   Add archive_mode=always support for PostgreSQL 9.5 (#32)
    -   Properly close PostgreSQL connections when necessary
    -   Fix receive-wal for pg_receive_xlog version 9.2


-   Release Notes:
-   Sources:
-   RPMs for RHEL/CentOS 5:
-   Barman:
-   Dependencies:
-   RPMs for RHEL/CentOS 6:
-   Barman:
-   Dependencies:
-   PyPI:
-   pgespresso on PostgreSQL Extension framework (PGXN):
-   pgespresso RPM/Debian packages:
-   Online documentation:
-   PDF documentation:


BARMAN (Backup and Recovery Manager) is an open source administration
tool for disaster recovery of PostgreSQL servers written in Python. It
allows your organisation to perform remote backups of multiple servers
in business critical environments and help DBAs during the recovery
phase. Barman's most requested features include backup catalogues,
incremental backup, retention policies, remote backup and recovery,
archiving and compression of WAL files and backups. Barman is
distributed under GNU GPL 3.

 Giulio Calacoci - 2ndQuadrant Italia
 PostgreSQL Training, Services and Support
 giulio.calacoci <at> |


Sent via pgsql-announce mailing list (pgsql-announce <at>
To make changes to your subscription:

Craig Kerstiens | 18 May 18:40 2016

PGConf Silicon Valley 2016 - Call for papers

The call for papers for PGConfSV 2016, being held in South San Francisco, California from November 14th to 16th, is now open!

Please visit and submit your talk proposals!

Presentations can be on any topic related to PostgreSQL, including, but not limited to: 

* What's New in PostgreSQL
* Use cases
* Migration to PostgreSQL
* Performance Tuning
* Backup and Restore
* High-Availability
* Data Warehouse / Big Data
* Any other topics that educate the audience

Anyone and everyone in the PostgreSQL community is encouraged to submit a talk. We will focus on maintaining diversity in our speakers and guests and especially encourage underrepresented groups to apply. Talks will be accepted up until July 7th, Midnight PST.

If you are interested in sponsoring, please reach out to us at sponsors <at> or visit to download our sponsor prospectus. 

Have questions? Please contact info <at>

~ Craig Kerstiens

Guillaume Lelarge | 18 May 15:22 2016

Call for Papers - PostgreSQL Conference Europe 2016


PostgreSQL Conference Europe 2016 will be held on November 1-4 in the Radisson Blu Hotel Olümpia, in Tallin, Estonia. It will cover topics for PostgreSQL users, developers and contributors, as well as decision and policy makers. For more information about the conference, please see the website at

We are now accepting proposals for talks in English.

Each session will last 45 minutes, and may be on any topic related to PostgreSQL. Suggested topic areas include:

* Developing applications for PostgreSQL
* Administering large scale PostgreSQL installations
* Case studies and/or success stories of PostgreSQL deployments
* PostgreSQL tools and utilities
* PostgreSQL hacking
* Community & user groups
* Tuning the server
* Migrating from other systems
* Scaling/replication
* Benchmarking & hardware
* PostgreSQL related products

Of course, we're happy to receive proposals for talks on other PostgreSQL related topics as well.

We may also have a limited number of longer, 90-minute, slots available. Please indicate clearly in your submission if you wish to make a 90-minute talk.

Finally, there will be a session of five minute lightning talks. A separate call for proposals will be made for them further on.

The submission deadline is August 7th. Selected speakers will be notified before August 24th, 2016.

Please submit your proposals by going to and following the instructions there.

The proposals will be considered by committee who will produce a schedule to be published nearer the conference date.

All selected speakers will get free entry to the conference (excluding training sessions). We do not in general cover travel and accommodations for speakers, but may be able to do that in limited cases. If you require assistance with funding to be able to attend, please make a note of this in the submission notes field.

We look forward to hearing from you, and seeing you in Tallin in November!

Adam Brusselback | 14 May 19:57 2016

jpgAgent (job scheduler) 1.2.0 released

I have recently released version 1.2.0 of jpgAgent, a PGAgent compatible job scheduler.

New features in this release:
* Code cleanup. Refactored large methods into more contained methods.
* Added support for <at> DATABASE_AUTH_QUERY annotation.
* Annotation support for remote host info. We are not using the remote server info spot that pgagent uses due to limitations.
* Updated readme to keep up with the above changes, and fix some formatting.

I am open to pull requests, or any suggestions for improvement.  Feel free to reach out with any questions or concerns.

Dave Page | 12 May 15:29 2016

PostgreSQL 9.6 Beta 1 Released

The PostgreSQL Global Development Group announces today that the first
beta release of PostgreSQL 9.6 is available for download. This release
contains previews of all of the features which will be available in
the final release of version 9.6, although some details will change
before then.  Users are encouraged to begin testing their applications
against this latest release.

Major Features of 9.6

Version 9.6 includes significant changes and exciting enhancements including:

* Parallel sequential scans, joins and aggregates
* Support for consistent, read-scaling clusters through multiple synchronous
  standbys and "remote_apply" synchronous commit.
* Full text search for phrases
* postgres_fdw can now execute sorts, joins, UPDATEs and DELETEs on the
  remote server
* Decreased autovacuum impact on big tables by avoiding "refreezing" old data.

In particular, parallel execution should bring a noticeable increase
in performance to supported queries.

Help Test for Bugs

As with other major releases, the improvements in PostgreSQL include
changes to large amounts of code. We count on you to test the altered
version with your workloads and testing tools in order to find bugs
and regressions before the release of PostgreSQL 9.6.0. In addition to
testing that the new features work as documented, consider testing the

* Do parallel queries actually improve performance for you?
* Can you make parallel queries crash or lose data?
* Do our code changes cause PostgreSQL to not function on your platform?
* Does improved vacuum freezing safely reduce autovacuum of large tables?
* Does phrase search return the results you expect?

Version 9.6 Beta 1 also makes changes to the binary backup API.
Administrators should test version 9.6 with PostgreSQL backup tools,
including pgBackRest, Barman, WAL-E, and other packaged and in-house

As this is a Beta, minor changes to database behaviors, feature
details, and APIs are still possible. Your feedback and testing will
help determine the final tweaks on the new features, so test soon. The
quality of user testing helps determine when we can make a final

Beta Schedule

This is the first beta release of version 9.6. The PostgreSQL Project
will release additional betas as required for testing, followed by one
or more release candidates, until the final release in late 2016. For
further information please see the Beta Testing page.


* Downloads Page:
* Beta Testing Information:
* 9.6 Beta Release Notes:
* What's New in 9.6:
* 9.6 Open Items:

Dave Page
PostgreSQL Core Team


Sent via pgsql-announce mailing list (pgsql-announce <at>
To make changes to your subscription:

Dave Page | 13 May 10:19 2016

PostgreSQL 9.6 Beta 1, 9.5.3, 9.4.8, 9.3.13, 9.2.17 and 9.1.22 Released!

2016-05-12 Cumulative Bug Fix Release

The PostgreSQL Global Development Group has released an update to all
supported versions of our database system, including 9.5.3, 9.4.8,
9.3.13, 9.2.17 and 9.1.22. This release fixes a number of issues
reported by users over the last two months. Most database
administrators should plan to upgrade at the next available downtime,
unless they have been affected directly by the fixed issues.

Bug Fixes and Improvements

This update fixes several problems which caused downtime for users, including:

* Clearing the OpenSSL error queue before OpenSSL calls, preventing
errors in SSL
  connections, particularly when using the Python, Ruby or PHP OpenSSL wrappers
* Fixed the "failed to build N-way joins" planner error
* Fixed incorrect handling of equivalence in multilevel nestloop query plans,
  which could emit rows which didn't match the WHERE clause.
* Prevented two memory leaks with using GIN indexes, including a potential index
  corruption risk.

The release also includes many other bug fixes for reported issues,
many of which
affect all supported versions:

* Fix corner-case parser failures occurring when
operator_precedence_warning is turned on
* Prevent possible misbehavior of TH, th, and Y,YYY format codes in
* Correct dumping of VIEWs and RULEs which use ANY (array) in a subselect
* Disallow newlines in ALTER SYSTEM parameter values
* Avoid possible misbehavior after failing to remove a tablespace symlink
* Fix crash in logical decoding on alignment-picky platforms
* Avoid repeated requests for feedback from receiver while shutting
down walsender
* Multiple fixes for pg_upgrade
* Support building with Visual Studio 2015

This update also contains tzdata release 2016d, with updates for
Russia, Venezuela, Kirov, and Tomsk.


All PostgreSQL update releases are cumulative. As with other minor
releases, users are not required to dump and reload their database or
use pg_upgrade in order to apply this update release; you may simply
shut down PostgreSQL and update its binaries.  Users who have skipped
one or more update releases may need to run additional, post-update
steps; please see the release notes for earlier versions for details.

* Download:
* Release Notes:
* Security Page:
* Abbreviated Keys Issue:

Dave Page
PostgreSQL Core Team


Sent via pgsql-announce mailing list (pgsql-announce <at>
To make changes to your subscription:

Umair Shahid | 2 May 12:07 2016

Announcing the release of pglogical 1.1

2ndQuadrant, the leading developers of PostgreSQL, are delighted to announce the release of pglogical 1.1 – the next generation in replication systems for PostgreSQL.  

The 1.1 release brings new features along with bug fixes to pglogical. Same salient features are listed below:

- Sequence replication support

- Support for replica triggers

- Foreign keys are no longer checked on the replica

- Multiple subscriptions between single pair of nodes

- The create_subscription function does not synchronize structure change by default

- User can specify affected replication sets in replicate_ddl_command function

- New functions for manipulating connection strings of nodes

- PGLogical processes are clearly marked in the pg_stat_activity

- Better behavior on worker crashes

- Logging improvements

- Ubuntu Xenial package

pglogical offers Logical Replication as a PostgreSQL extension, which provides the flexibility of trigger-based replication with the efficiency of log-based replication. This ground-breaking new technology has benefits for many key use cases

- UPGRADE      Upgrade PostgreSQL from 9.4 to 9.5, without downtime

- SCALE OUT    Copy all or a selection of database tables to other nodes in a cluster

- AGGREGATE    Accumulate changes from sharded database servers into a Data Warehouse

- INTEGRATE    Feed database changes in real-time to other systems

- PROTECT      Provide backup or high availability for clusters, replacing earlier technologies

pglogical is open source and available for download as binary packages for PostgreSQL 9.4 and 9.5 versions. Visit for more detail.

2ndQuadrant’s respected 24/7 Production Support provides the fastest and highest rated response service for PostgreSQL anywhere and is available now worldwide.

2ndQuadrant leads the drive for improving the enterprise functionality for PostgreSQL, contributing major features every year in performance, replication, business intelligence and usability.

David Fetter | 2 May 07:48 2016

== PostgreSQL Weekly News - May 01 2016 ==

== PostgreSQL Weekly News - May 01 2016 ==

== PostgreSQL Product News ==

BigSQL integrated PostgreSQL distribution from SCG released.

jpgAgent is a job scheduler for PostgreSQL written in Java.

Ora2PG 18.4 a migration system for moving from Oracle and MySQL to
PostgreSQL, released.

pgBadger 8.1, a parallel PostgreSQL log analyzer written in Perl, released:

pgCluu 2.5, a Perl program to audit PostgreSQL performance, released.

pgpool-II 3.5.2, 3.4.6, 3.3.10, 3.2.15, 3.1.18, and pgpoolAdmin 3.5.2
released.  pgpool-II is a connection pooler and replication system for

== PostgreSQL Jobs for May ==

== PostgreSQL Local ==

FOSS4G NA, will be held May 2-5, 2016 in Raleigh, North Carolina.

PGCon 2016 will be held May 17-21, 2016 in Ottawa.

This year's Swiss PGDay will be held on June 24, 2016 at the
University of Applied Sciences in Rapperswil (Switzerland).

"5432 ... Meet us!", will take place in Milan, Italy on June 28-29, 2016.
Registration is open.

PG Day UK 2016 will be 5th July 2016.

PostgresOpen 2016 in will be held in Dallas, Texas September 13-16.
The CfP is open.

PostgreSQL Session will be held on September 22th, 2016, in Lyon,
France.  The submission deadline is May 20, 2016. Send proposals to
call-for-paper AT postgresql-sessions DOT org.

PgConf Silicon Valley 2016 will be held on November 14-16, 2016.

== PostgreSQL in the News ==

Planet PostgreSQL:

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 <at>, German language
to pwn <at>, Italian language to pwn <at>  Spanish language
to pwn <at>

== Applied Patches ==

Peter Eisentraut pushed:

- doc: Fix typo From: Andreas Seltenreich
  <andreas.seltenreich <at>>

- Update GETTEXT_FILES after config and controldata refactoring.

- pg_dump: Message style improvements.

- pg_dump: Message style improvements forgotten in

- doc: Minor wording changes.  From: Dmitry Igrishin <dmitigr <at>>

Tom Lane pushed:

- Try harder to detect a port conflict in  Commit
  fab84c7787f25756 tried to get away without doing an actual bind(),
  but buildfarm results show that that doesn't get the job done.  So
  we must really bind to the target port --- and at least on my Linux
  box, we need a listen() as well, or conflicts won't be detected.  We
  rely on SO_REUSEADDR to prevent problems from starting a postmaster
  on the socket immediately after we've bound to it in the test code.
  (There may be platforms where that doesn't work too well.  But
  fortunately, we only really care whether this works on Windows, and
  there the default behavior should be OK.)

- New method for preventing compile-time calculation of degree
  constants.  Commit 65abaab547a5758b tried to prevent the scaling
  constants used in the degree-based trig functions from being
  precomputed at compile time, because some compilers do that with
  functions that don't yield results identical-to-the-last-bit to what
  you get at runtime.  A report from Peter Eisentraut suggests that
  some recent compilers are smart enough to see through that trick,
  though.  Instead, let's put the inputs to these calculations into
  non-const global variables, which should be a more reliable way of
  convincing the compiler that it can't assume that they are
  compile-time constants.  (If we really get desperate, we could mark
  these variables "volatile", but I do not believe we should have to.)

- Yet more portability hacking for degree-based trig functions.  The
  true explanation for Peter Eisentraut's report of inexact asind
  results seems to be that (a) he's compiling into x87 instruction
  set, which uses wider-than-double float registers, plus (b) the
  library function asin() on his platform returns a result that is
  wider than double and is not rounded to double width.  To fix, we
  have to force the function's result to be rounded comparably to what
  happened to the scaling constant asin_0_5.  Experimentation suggests
  that storing it into a volatile local variable is the least ugly way
  of making that happen.  Although only asin() is known to exhibit an
  observable inexact result, we'd better do this in all the places
  where we're hoping to get an exact result by scaling.

- Fix order of shutdown cleanup operations in
  Previously, database clusters created by a TAP test were shut down
  by DESTROY methods attached to the PostgresNode objects representing
  them.  The trouble with that is that if the objects survive into the
  final global destruction phase (which they do), Perl executes the
  DESTROY methods in an unspecified order.  Thus, the order of
  shutdown of multiple clusters was indeterminate, which might lead to
  not-very-reproducible errors getting logged (eg from a slave whose
  master might or might not get killed first).  Worse, the File::Temp
  objects representing the temporary PGDATA directories might get
  destroyed before the PostgresNode objects, resulting in attempts to
  delete PGDATA directories that still have live servers in them.  On
  Windows, this would lead to directory deletion failures; on Unix, it
  usually had no effects worse than erratic "could not open temporary
  statistics file "pg_stat/global.tmp": No such file or directory" log
  messages.  While none of this would affect the reported result of
  the TAP test, which is already determined, it could be very
  confusing when one is trying to understand from the logs what went
  wrong with a failed test.  To fix, do the postmaster shutdowns in an
  END block rather than at object destruction time.  The END block
  will execute at a well-defined (and reasonable) time during script
  termination, and it will stop the postmasters in order of
  PostgresNode object creation.  (Perhaps we should change that to be
  reverse order of creation, but the main point here is that we now
  have control which we did not before.)  Use "pg_ctl stop", not an
  asynchronous kill(SIGQUIT), so that we wait for the postmasters to
  shut down before proceeding with directory deletion.  Deletion of
  temporary directories still happens in an unspecified order during
  global destruction, but I can see no reason to care about that once
  the postmasters are stopped.

- Add a --brief option to git_changelog.  In commit c0b050192, Andres
  introduced the idea of including one-line commit references in our
  major release notes.  Teach git_changelog to emit a (lightly
  adapted) version of that format, so that we don't have to
  laboriously add it to the notes after the fact.  The default output
  isn't changed, since I anticipate still using that for minor release

- Clean up parsing of synchronous_standby_names GUC variable.  Commit
  989be0810dffd08b added a flex/bison lexer/parser to interpret
  synchronous_standby_names.  It was done in a pretty crufty way,
  though, making assorted end-use sites responsible for calling the
  parser at the right times.  That was not only vulnerable to errors
  of omission, but made it possible that lexer/parser errors occur at
  very undesirable times, and created memory leakages even if there
  was no error.  Instead, perform the parsing once during
  check_synchronous_standby_names and let guc.c manage the resulting
  data.  To do that, we have to flatten the parsed representation into
  a single hunk of malloc'd memory, but that is not very hard.  While
  at it, work a little harder on making useful error reports for
  parsing problems; the previous code felt that
  "synchronous_standby_names parser returned 1" was an appropriate
  user-facing error message.  (To be fair, it did also log a syntax
  error message, but separately from the GUC problem report, which is
  at best confusing.)  It had some outright bugs in the face of
  invalid input, too.  I (tgl) also concluded that we need to restrict
  unquoted names in synchronous_standby_names to be just SQL
  identifiers.  The previous coding would accept darn near anything,
  which (1) makes the quoting convention both nearly-unnecessary and
  formally ambiguous, (2) makes it very hard to understand what is a
  syntax error and what is a creative interpretation of the input as a
  standby name, and (3) makes it impossible to further extend the
  syntax in future without a compatibility break.  I presume that
  we're intending future extensions of the syntax, else this parsing
  infrastructure is massive overkill, so (3) is an important
  objection.  Since we've taken a compatibility hit for non-identifier
  names with this change anyway, we might as well lock things down now
  and insist that users use double quotes for standby names that
  aren't identifiers.  Kyotaro Horiguchi and Tom Lane

- Use memmove() not memcpy() to slide some pointers down.  The
  previous coding here was formally undefined, though it seems to
  accidentally work on most platforms in the buildfarm.  Caught by
  some OpenBSD platforms in which libc contains an assertion check for
  overlapping areas passed to memcpy().  Thomas Munro

- Revert "Convert contrib/seg's bool-returning SQL functions to V1
  call convention." This reverts commit
  c8e81afc60093b199a128ccdfbb692ced8e0c9cd.  That turns out to have
  been based on a faulty diagnosis of why the VS2015 build was
  misbehaving.  Instead, we need to fix DatumGetBool().

- Adjust DatumGetBool macro, this time for sure.  Commit 23a41573c
  attempted to fix the DatumGetBool macro to ignore bits in a Datum
  that are to the left of the actual bool value.  But it did that by
  casting the Datum to bool; and on compilers that use C99 semantics
  for bool, that ends up being a whole-word test, not a 1-byte test.
  This seems to be the true explanation for contrib/seg failing in
  VS2015.  To fix, use GET_1_BYTE() explicitly.  I think in the
  previous patch, I'd had some idea of not having to commit to bool
  being exactly 1 byte wide, but regardless of what the compiler's
  bool is, boolean columns and Datums are certainly 1 byte wide.  The
  previous fix was (eventually) back-patched into all active versions,
  so do likewise with this one.

- Fix mishandling of equivalence-class tests in parameterized plans.
  Given a three-or-more-way equivalence class, such as X.Y = Y.Y =
  Z.Z, it was possible for the planner to omit one of the quals needed
  to enforce that all members of the equivalence class are actually
  equal.  This only happened in the case of a parameterized join node
  for two of the relations, that is a plan tree like Nested Loop ->
  Scan X ->  Nested Loop ->  Scan Y ->  Scan Z Filter: Z.Z = X.X The
  eclass machinery normally expects to apply X.X = Y.Y when those two
  relations are joined, but in this shape of plan tree they aren't
  joined until the top node --- and, if the lower nested loop is
  marked as parameterized by X, the top node will assume that the
  relevant eclass condition(s) got pushed down into the lower node.
  On the other hand, the scan of Z assumes that it's only responsible
  for constraining Z.Z to match any one of the other eclass members.
  So one or another of the required quals sometimes fell between the
  cracks, depending on whether consideration of the eclass in
  get_joinrel_parampathinfo() for the lower nested loop chanced to
  generate X.X = Y.Y or X.X = Z.Z as the appropriate constraint there.
  If it generated the latter, it'd erroneously suppose that the Z scan
  would take care of matters.  To fix, force X.X = Y.Y to be generated
  and applied at that join node when this case occurs.  This is
  *extremely* hard to hit in practice, because various planner
  behaviors conspire to mask the problem; starting with the fact that
  the planner doesn't really like to generate a parameterized plan of
  the above shape.  (It might have been impossible to hit it before we
  tweaked things to allow this plan shape for star-schema cases.)
  Many thanks to Alexander Kirkouski for submitting a reproducible
  test case.  The bug can be demonstrated in all branches back to 9.2
  where parameterized paths were introduced, so back-patch that far.

- Remove warning about num_sync being too large in
  synchronous_standby_names.  If we're not going to reject such setups
  entirely, throwing a WARNING in check_synchronous_standby_names() is
  unhelpful, because it will cause the warning to be logged again
  every time the postmaster receives SIGHUP.  Per discussion, just
  remove the warning.  In passing, improve the documentation for
  synchronous_commit, which had not gotten the word that now there can
  be more than one synchronous standby.

- Fix planner crash from pfree'ing a partial path that a GatherPath
  uses.  We mustn't run generate_gather_paths() during
  add_paths_to_joinrel(), because that function can be invoked
  multiple times for the same target joinrel.  Not only is it wasteful
  to build GatherPaths repeatedly, but a later add_partial_path()
  could delete the partial path that a previously created GatherPath
  depends on.  Instead establish the convention that we do
  generate_gather_paths() for a rel only just before set_cheapest().
  The code was accidentally not broken for baserels, because as of
  today there never is more than one partial path for a baserel.  But
  that assumption obviously has a pretty short half-life, so move the
  generate_gather_paths() calls for those cases as well.  Also add
  some generic comments explaining how and why this all works.  Per
  fuzz testing by Andreas Seltenreich.  Report:
  <871t5pgwdt.fsf <at>>

- Small improvements to OPTIMIZER_DEBUG code.  Now that Paths have
  their own rows field, print that rather than the parent relation's
  rowcount.  Show the relid sets associated with Paths using table
  names rather than numbers; since this code is able to print simple
  Var references using table names, it seems a bit silly that
  print_relids can't.  Print the cheapest_parameterized_paths list for
  a RelOptInfo, and include information about a parameterized path's
  required_outer rels.  Noted while trying to use this feature to
  debug Alexander Kirkouski's recent bug report.

- Update contrib/unaccent documentation about its unaccent.rules file.
  Commit 1bbd52cb9a4aa61a didn't bother with such niceties.

- Add a --non-master-only option to git_changelog.  This has the
  inverse effect of --master-only.  It's needed to help find cases
  where a commit should not be described in major release notes
  because it was back-patched into older branches, though not at the
  same time as the HEAD commit.

Kevin Grittner pushed:

- Fix C comment typo and redundant test

- Add a few entries to the tail of time mapping, to see old values.
  Without a few entries beyond old_snapshot_threshold, the lookup
  would often fail, resulting in the more aggressive pruning or vacuum
  being skipped often enough to matter.  This was very clearly shown
  by a python test script posted by Ants Aasma, and was likely a
  factor in an earlier but somewhat less clear-cut test case posted by
  Jeff Janes.  This patch makes no change to the logic, per se -- it
  just makes the array of mapping entries big enough to make lookup
  misses based on timing much less likely.  An occasional miss is
  still possible if a thread stalls for more than 10 minutes, but that
  does not create any problem with correctness of behavior.  Besides,
  if things are so busy that a thread is stalling for more than 10
  minutes, it is probably OK to skip the more aggressive cleanup at
  that particular point in time.

Magnus Hagander pushed:

- Fix typo in comment.  Author: Daniel Gustafsson

- Fix typo.  Author: Thomas Munro

Robert Haas pushed:

- Enable parallel query by default.  Change max_parallel_degree
  default from 0 to 2.  It is possible that this is not a good idea,
  or that we should go with 1 worker rather than 2, but we won't find
  out without trying it.  Along the way, reword the documentation for
  max_parallel_degree a little bit to hopefully make it more clear.
  Discussion: 20160420174631.3qjjhpwsvvx5bau5 <at>

- Fix pg_get_functiondef to dump parallel-safety markings.  Ashutosh

- Fix EXPLAIN VERBOSE output for parallel aggregate.  The way that
  PartialAggregate and FinalizeAggregate plan nodes were displaying
  output columns before was bogus.  Now, FinalizeAggregate produces
  the same outputs as an Aggregate would have produced, while
  PartialAggregate produces each of those outputs prefixed by the word
  PARTIAL.  Discussion: 12585.1460737650 <at> Patch by me,
  reviewed by David Rowley.

- Remove mergeHyperLogLog.  It's buggy.  If somebody needs this later,
  they'll need to put back a non-buggy vesion of it.  Discussion:
  CAM3SWZT-i6R9JU5YXa8MJUou2_r3LfGJZpQ9tYa1BYxfkj0=cQ <at>
  CAM3SWZRUOLsYoTT83QgdUy9D8ehYWm_nvbrrfcOOzikiRfFY7g <at>
  Peter Geoghegan

- Clean up a few parallelism-related things that pgindent wants to
  mangle.  In nodeFuncs.c, pgindent wants to introduce spurious
  indentation into the definitions of planstate_tree_walker and
  planstate_walk_subplans.  Fix that by spreading the definition out
  across several lines, similar to what is already done for other
  walker functions in that file.  In execParallel.c, in the definition
  of SharedExecutorInstrumentation, pgindent wants to insert more
  whitespace between the type name and the member name.  That causes
  it to mangle comments later on the line.  Fix by moving the comments
  out of line.  Now that we have a bit more room, add some more
  details that may be useful to the next person reading this code.

- Update typedefs.list file in preparation for pgindent run In
  addition to adding new typedefs, I also re-sorted the file so that
  various entries add piecemeal, mostly or entirely by me, were
  alphabetized the same way as other entries in the file.

- Remove inadvertently commited vim swapfile.  If you were wondering
  what editor I use, now you know.

- Tighten up sanity checks for parallel aggregate in execQual.c.
  David Rowley

- Change postgresql.conf.sample to say that fsync=off will corrupt
  data.  Discussion: 24748.1461764666 <at> Per a suggestion
  from Craig Ringer.  This wording from Tom Lane, following

- Fix wrong word.  Commit a31212b429cd3397fb3147b1a584ae33224454a6 was
  a little too hasty.  Per report from Tom Lane.

Teodor Sigaev pushed:

- Fix tsearch docs.  Remove mention of setweight(tsquery) which wasn't
  included in 9.6. Also replace old forgotten phrase operator to new
  one.  Dmitry Ivanov

- Prevent multiple cleanup process for pending list in GIN.
  Previously, ginInsertCleanup could exit early if it detects that
  someone else is cleaning up the pending list, without waiting for
  that someone else to finish the job. But in this case vacuum could
  miss tuples to be deleted.  Cleanup process now locks metapage with
  a help of heavyweight LockPage(ExclusiveLock), and it guarantees
  that there is no another cleanup process at the same time. Lock is
  taken differently depending on caller of cleanup process: any
  vacuums and gin_clean_pending_list() will be blocked until lock
  becomes available, ordinary insert uses conditional lock to prevent
  indefinite waiting on lock.  Insert into pending list doesn't use
  this lock, so insertion isn't blocked.  Also, patch adds stopping of
  cleanup process when at-start-cleanup-tail is reached in order to
  prevent infinite cleanup in case of massive insertion. But it will
  stop only for automatic maintenance tasks like autovacuum.  Patch
  introduces choice of limit of memory to use: autovacuum_work_mem,
  maintenance_work_mem or work_mem depending on call path.  Patch for
  previous releases should be reworked due to changes between 9.6 and
  previous ones in this area.  Discover and diagnostics by Jeff Janes
  and Tomas Vondra Patch by me with some ideas of Jeff Janes

- Prevent to use magic constants.  Use macroses for definition
  amstrategies/amsupport fields instead of hardcoded values.  Author:
  Nikolay Shaplov with addition for contrib/bloom

Noah Misch pushed:

- Impose a full barrier in generic-xlc.h atomics functions.
  pg_atomic_compare_exchange_*_impl() were providing only the
  semantics of an acquire barrier.  Buildfarm members hornet and
  mandrill revealed this deficit beginning with commit
  008608b9d51061b1f598c197477b3dc7be9c4a64.  While we have no report
  of symptoms in 9.5, we can't rule out the possibility of certain
  compilers, hardware, or extension code relying on these functions'
  specified barrier semantics.  Back-patch to 9.5, where commit
  b64d92f1a5602c55ee8b27a7ac474f03b7aee340 introduced atomics.
  Reviewed by Andres Freund.

Andres Freund pushed:

- Don't open formally non-existent segments in _mdfd_getseg().  Before
  this commit _mdfd_getseg(), in contrast to mdnblocks(), did not
  verify whether all segments leading up to the to-be-opened one, were
  RELSEG_SIZE sized. That is e.g. not the case after truncating a
  relation, because later segments just get truncated to zero length,
  not removed.  Once a "non-existent" segment has been opened in a
  session, mdnblocks() will return wrong results, causing errors like
  "could not read block %u in file" when accessing blocks. Closing the
  session, or the later arrival of relevant invalidation messages,
  would "fix" the problem.  That, so far, was mostly harmless, because
  most segment accesses are only done after an mdnblocks() call. But
  since 428b1d6b29ca we try to open segments that might have been
  deleted, to trigger kernel writeback from a backend's queue of
  recent writes.  To fix check segment sizes in _mdfd_getseg() when
  opening previously unopened segments. In practice this shouldn't
  imply a lot of additional lseek() calls, because mdnblocks() will
  most of the time already have opened all relevant segments.  This
  commit also fixes a second problem, namely that _mdfd_getseg(
  EXTENSION_RETURN_NULL) extends files during recovery, which is not
  desirable for the mdwriteback() case.  Add
  EXTENSION_REALLY_RETURN_NULL, which does not behave that way, and
  use it.  Reported-By: Thom Brown Author: Andres Freund, Abhijit
  Menon-Sen Reviewd-By: Robert Haas, Fabien Coehlo Discussion:
  CAA-aLv6Dp_ZsV-44QA-2zgkqWKQq=GedBX2dRSrWpxqovXK=Pg <at>
  Fixes: 428b1d6b29ca599c5700d4bc4f4ce4c5880369bf

- Emit invalidations to standby for transactions without xid.  So far,
  when a transaction with pending invalidations, but without an
  assigned xid, committed, we simply ignored those invalidation
  messages. That's problematic, because those are actually sent for a
  reason.  Known symptoms of this include that existing sessions on a
  hot-standby replica sometimes fail to notice new concurrently built
  indexes and visibility map updates.  The solution is to WAL log such
  invalidations in transactions without an xid. We considered to
  alternatively force-assign an xid, but that'd be problematic for
  vacuum, which might be run in systems with few xids.  Important:
  This adds a new WAL record, but as the patch has to be back-patched,
  we can't bump the WAL page magic. This means that standbys have to
  be updated before primaries; otherwise "PANIC: standby_redo: unknown
  op code 32" errors can be encountered.  XXX: Reported-By: Васильев
  Дмитрий, Masahiko Sawada Discussion:
  CAB-SwXY6oH=9twBkXJtgR4UC1NqT-vpYAtxCseME62ADwyK5OA <at>
  CAD21AoDpZ6Xjg=gFrGPnSn4oTRRcwK1EBrWCq9OqOHuAcMMC=w <at>

- Remember asking for feedback during walsender shutdown.  Since
  5a991ef8 we're explicitly asking for feedback from the receiving
  side when shutting down walsender, if there's not yet replicated
  data.  Unfortunately we didn't remember (i.e. set
  waiting_for_ping_response to true) having asked for feedback,
  leading to scenarios in which replies were requested at a high
  frequency.  I can't reproduce this problem on my laptop, I think
  that's because the problem requires a significant TCP window to
  manifest due to the !pq_is_send_pending() condition. But since this
  clearly is a bug, let's fix it.  There's quite possibly more wrong
  than just this though.  While fiddling with WalSndDone(), I rewrote
  a hard to understand comment about looking at the flush vs. the
  write position.  Reported-By: Nick Cleaton, Magnus Hagander Author:
  Nick Cleaton Discussion:
  CAFgz3kus=rC_avEgBV=+hRK5HYJ8vXskJRh8yEAbahJGTzF2VQ <at>
  CABUevExsjROqDcD0A2rnJ6HK6FuKGyewJr3PL12pw85BHFGS2Q <at>
  Backpatch: 9.4, were 5a991ef8 introduced the use of feedback
  messages during shutdown.

Andrew Dunstan pushed:

- Support building with Visual Studio 2015.  Adjust the way we detect
  the locale. As a result the minumum Windows version supported by
  VS2015 and later is Windows Vista. Add some tweaks to remove new
  compiler warnings. Remove documentation references to the now
  obsolete msysGit.  Michael Paquier, somewhat edited by me, reviewed
  by Christian Ullrich.  Backpatch to 9.5

- Fix typo in VS2015 patch.  reported by Christian Ullrich

- Fix comment whitespace in VS2105 patch.  per gripe from Michael

== Rejected Patches (for now) ==

No one was disappointed this week :-)

== Pending Patches ==

Stephen Frost sent in another revision of a patch to fix pg_dump for
catalog ACLs.

Sehrope Sarkuni sent in a patch to add jsonb_compact(...) for
whitespace-free jsonb to text.

Peter Eisentraut sent in another revision of a patch to fix an OpenSSL
error queue bug.

Kyotaro HORIGUCHI sent in two more revisions of a patch to fix
synchronous replication update configuration.

Ashutosh Sharma sent in a patch to allow pg_basebackup to create
pg_stat_tmp and pg_replslot as an empty directories if they are
symbolic links.

Etsuro Fujita sent in a patch to fix subtransaction callbacks in the
PostgreSQL FDW.

Christian Ullrich sent in three revisions of a patch to enable
parallel builds with MSVC.

Dean Rasheed sent in a patch to fix an issue in psql's \ev feature
which adds support for missing VIEW options like WITH CHECK OPTION.

Daniel Gustafsson sent in a patch to remove some unused macros from

Julien Rouhaud sent in two revisions of a patch to fix an issue with
FK joins that could cause a segfault.

Craig Ringer sent in a patch to allow a stop LSN to be specified to

Andreas Karlsson sent in a patch to fix the parallel safety markings
for some built-in functions that got missed in the shuffle.

Ian Lawrence Barwick sent in a patch to add tab completion to psql's
\l command.

Amit Kapila sent in a patch to fix an issue sqlsmith uncovered in


Sent via pgsql-announce mailing list (pgsql-announce <at>
To make changes to your subscription:

Gilles Darold | 27 Apr 18:25 2016

pgCluu release 2.5

Paris, April 27th 2016

pgCluu 2.5 released

PostgreSQL Cluster Utilization

pgCluu is a Perl program used to perform a full audit of a PostgreSQL
Cluster performances. It is divided in two parts, a collector used to
grab statistics on the PostgreSQL server using psql and sar, a reports
builder that will generate all HTML and charts output.

This release fixes some issues reported by users over past year and a
full replacement of the flotr2 javascript chart library with jqplot.

There's also some new interesting reports:

  * Add report for hash indexes.
  * Keep track of pg_settings and database/roles settings changes and
    show diff in the the reports.
  * Add report of pending restart in pg settings view.
  * Add information about percentage of timed against requested
  * Split database menu in submenu per set of 10 databases.
  * Add report of tables without indexes and tables with more than
    five indexes.
  * Add report about invalid index after concurrency build.
  * Add report of system and PostgreSQL uptime.
  * Add report of last statistics reset per database and report of
    last autovacuum and autoanalyze.
  * Add report of bgwriter last statistics reset in Home/Cluster view.
  * Add a non default configuration settings report.

and useful features:

  * Autodetect timezone from csv data files and automatic adjustment
    of chart axis.
  * Add systemd start script.
  * Add collect of crontab information.
  * Add support to daylight saving.
  * Add compatibility with PostgreSQL 9.5
  * Add ablity to export plots data as csv
  * Set legend table outside the graph.
  * Display specific titles and description for overall graphs.

Note that a CGI script have been added to be able to perform temporal
lookup in incremental pgCluu statistics, with predefined year, month,
day and hour views. This is a work in progress, it will be available
in next major release.

Upgrade: you can safely override previous installation, backward
compatibility with 2.4 version is preserved.

See ChangeLog for a complete list of changes and bug fixes.

The goal of this project is to provide a complete PostgreSQL auditing
tool that don't need any dependency to be run easily to audit a local
or remote server.

If you just have a sar output file, pgCluu can be use to draw graphs
about the system utilization only.

pgCluu is an original collection of tools built during my work at
Dalibo. Those tools are published under the PostgreSQL License to
be shared, any one is welcome to contribute.

For more information take a look at

View a sample report at


pgCluu is created and maintained by Gilles Darold.

  * Web/Demo site:
  * Download:
  * Development:
  * Documentation:

Gilles Darold
Consultant PostgreSQL -


Sent via pgsql-announce mailing list (pgsql-announce <at>
To make changes to your subscription: