Skip site navigation (1) Skip section navigation (2)

== PostgreSQL Weekly News - March 19 2017 ==

From: David Fetter <david(at)fetter(dot)org>
To: PostgreSQL Announce <pgsql-announce(at)postgresql(dot)org>
Subject: == PostgreSQL Weekly News - March 19 2017 ==
Date: 2017-03-20 02:12:08
Message-ID: (view raw, whole thread or download thread mbox)
Lists: pgsql-announce
== PostgreSQL Weekly News - March 19 2017 ==

== PostgreSQL Product News ==

pgpool3.6.2, 3.5.6, 3.4.10, 3.3.14 and 3.2.19 released.

Postgresqltuner, a tuning program for PostgreSQL, released.

psycopg2 2.7.1, a Python connector for PostgreSQL, released.

pg_chameleon beta 1 released. Please test.

== PostgreSQL Jobs for March ==

== PostgreSQL Local ==

Nordic PGDay 2017 will be held in Stockholm, Sweden, at the Sheraton
Hotel, on March 21, 2017.

pgDay Paris 2017 will be held in Paris, France on March 23, 2017.

PGConf US 2017 will be on March 28-31 in Jersey City, New Jersey.

PGCon 2017 will take place in Ottawa on 23-26 May.

Postgres Vision will take place in Boston, June 26 - 28, 2017.

Swiss PGDay in Rapperswil will take place June 30, 2017.
The CfP is open through April 14, 2017.

PostgresOpen will occur September 6-8, 2017 in San Francisco.
The CfP will open  March 24, 2017.

== 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)fetter(dot)org, German language
to pwn(at)pgug(dot)de, Italian language to pwn(at)itpug(dot)org(dot)

== Applied Patches ==

Tom Lane pushed:

- Remove dead code in nodeGatherMerge.c.  Coverity noted that the last line of
  gather_merge_getnext() was unreachable, since each arm of the preceding "if"
  ends in a "return".  Drop it as an oversight.  In passing, improve some nearby

- Fix typo in initdb's SCRAM password processing.  Noted by Coverity (a rather
  impressive catch).  Michael Paquier

- Add "break"s to make it clearer what will happen in a nested switch.  This
  could only matter if the guessed_type variable had a value that wasn't a
  member of the PasswordType enum; but just in case, let's be sure that control
  falls out to reach the elog(ERROR) at the end of the function.  Per gripe from

- Remove unnecessary dependency on statement_timeout in prepared_xacts test.
  Rather than waiting around for statement_timeout to expire, we can just try to
  take the table's lock in nowait mode.  This saves some fraction under 4
  seconds when running this test with prepared xacts available, and it guards
  against timeout-expired-anyway failures on very slow machines when prepared
  xacts are not available, as seen in a recent failure on axolotl for instance.
  This approach could fail if autovacuum were to take an exclusive lock on the
  test table concurrently, but there's no reason for it to do so.  Since the
  main point here is to improve stability in the buildfarm, back-patch to all
  supported branches.

- Add a "void *" passthrough pointer for psqlscan.l's callback functions.  The
  immediate motivation for this is to provide clean infrastructure for the
  proposed \if...\endif patch for psql; but it seems like a good thing to have
  even if that patch doesn't get in.  Previously the callback functions could
  only make use of application-global state, which is a pretty severe handicap.
  For the moment, the pointer is only passed through to the get_variable
  callback function.  I considered also passing it to the write_error callback,
  but for now let's not.  Neither psql nor pgbench has a use for that, and in
  the case of psql we'd have to invent a separate wrapper function because we
  would certainly not want to change the signature of psql_error().  Discussion:

- Fix busted markup.  Oversight in commit 9ca5c8721.  Per buildfarm.

- Make logging about multixact wraparound protection less chatty.  The original
  messaging design, introduced in commit 068cfadf9, seems too chatty now that
  some time has elapsed since the bug fix; most installations will be in good
  shape and don't really need a reminder about this on every postmaster start.
  Hence, arrange to suppress the "wraparound protections are now enabled"
  message during startup (specifically, during the TrimMultiXact() call).  The
  message will still appear if protection becomes effective at some later point.

- Include port number when logging successful binding to a TCP port.  Per
  suggestion from Andres Freund.  Discussion:

- Rewrite async-connection loop in libpqwalreceiver.c, once again.  The original
  coding in commit 1e8a85009 didn't use PQconnectPoll per spec, and while the
  rewrite in e434ad39a is closer, it still doesn't guarantee to wait until the
  socket is read-ready or write-ready (as appropriate) before calling
  PQconnectPoll.  It's not clear whether that omission is causing the continuing
  failures on buildfarm member bowerbird; but given the lack of other
  explanations meeting the available facts, let's tighten that up and see what
  happens.  An independent issue in the same loop was that it had a race
  condition whereby it could clear the process's latch without having serviced
  an interrupt request, causing failure to respond to a cancel while waiting for
  connection (the very problem 1e8a85009 was meant to fix).  Discussion:

- Fix WaitEventSetWait() to handle write-ready waits properly on Windows.
  Windows apparently will not detect socket write-ready events unless a
  preceding send attempt returned WSAEWOULDBLOCK.  In many usage patterns that's
  satisfied by the caller of WaitEvenSetWait(), but not always.  Apply the same
  solution that we already had in pgwin32_select(), namely to perform a dummy
  WSASend() call with len=0.  This will return WSAEWOULDBLOCK if there's no
  buffer space (even though it could legitimately do nothing and report success,
  which makes me a bit nervous about this solution; but since it's been working
  fine in libpq, let's roll with it).  In passing, improve the comments about
  this in pgwin32_select(), and remove duplicated code there.  Back-patch to 9.6
  where WaitEventSetWait() was introduced.  We might need to back-patch
  something similar into predecessor code.  But given the lack of complaints so
  far, it's not clear that the case ever gets exercised in the back branches, so
  I'm not going to expend effort on it right now.  This should resolve recurring
  failures on buildfarm member bowerbird, which has been failing since 1e8a85009
  went in.  Diagnosis and patch by Petr Jelinek, cosmetic adjustments by me.

- Fix REFRESH MATERIALIZED VIEW to report activity to the stats collector.  The
  non-concurrent code path for REFRESH MATERIALIZED VIEW failed to report its
  updates to the stats collector.  This is bad since it means auto-analyze
  doesn't know there's any work to be done.  Adjust it to report the refresh as
  a table truncate followed by insertion of an appropriate number of rows.
  Since a matview could contain more than INT_MAX rows, change the signature of
  pgstat_count_heap_insert() to accept an int64 rowcount.  (The accumulator it's
  adding into is already int64, but existing callers could not insert more than
  a small number of rows at once, so the argument had been declared just "int
  n".) This is surely a bug fix, but changing pgstat_count_heap_insert()'s API
  seems too risky for the back branches.  Given the lack of previous complaints,
  I'm not sure it's a big enough problem to justify a kluge solution that would
  avoid that.  So, no back-patch, at least for now.  Jim Mlodgenski, adjusted a
  bit by me Discussion:

- Avoid use of already-closed relcache entry.  Oversight in commit 17f8ffa1e.
  Per buildfarm member prion.

Noah Misch pushed:

- Assume deconstruct_array() outputs are untoasted.  In functions that issue a
  deconstruct_array() call, consistently use plain VARSIZE()/VARDATA() on the
  array elements.  Prior practice was divided between those and

- Fix comment about length of text, bytea, etc.  When commit
  3e23b68dac006e8deb0afa327e855258df8de064 introduced single-byte varlena
  headers, it rendered this comment incomplete.

- Recommend wrappers of PG_DETOAST_DATUM_PACKED().  When commit
  3e23b68dac006e8deb0afa327e855258df8de064 introduced single-byte varlena
  headers, its fmgr.h changes presented PG_GETARG_TEXT_PP() and
  PG_GETARG_TEXT_P() as equals.  Its postgres.h changes presented
  PG_DETOAST_DATUM_PACKED() and VARDATA_ANY() as the exceptional case.  Now,
  instead, firmly recommend PG_GETARG_TEXT_PP() over PG_GETARG_TEXT_P();
  likewise for other ...PP() macros.  This shaves cycles and invites consistency
  of style.

- Use wrappers of PG_DETOAST_DATUM_PACKED() more.  This makes almost all core
  code follow the policy introduced in the previous commit.  Specific decisions:
  * Text search support functions with char* and length arguments, such as
  prsstart and lexize, may receive unaligned strings.  I doubt maintainers of
  non-core text search code will notice.  * Use plain VARDATA() on values
  detoasted or synthesized earlier in the same function.  Use VARDATA_ANY() on
  varlenas sourced outside the function, even if they happen to always have
  four-byte headers.  As an exception, retain the universal practice of using
  VARDATA() on return values of SendFunctionCall().  * Retain
  PG_GETARG_BYTEA_P() in pageinspect.  (Page images are too large for a one-byte
  header, so this misses no optimization.)  Sites that do not call
  get_page_from_raw() typically need the four-byte alignment.  * For now, do not
  change btree_gist.  Its use of four-byte headers in memory is partly entangled
  with storage of 4-byte headers inside GBT_VARKEY, on disk.  * For now, do not
  change gtrgm_consistent() or gtrgm_distance().  They incorporate the varlena
  header into a cache, and there are multiple credible implementation strategies
  to consider.

- Fix pg_file_write() error handling.  Detect fclose() failures; given "ln -s
  /dev/full $PGDATA/devfull", "pg_file_write('devfull', 'x', true)" now fails as
  it should.  Don't leak a stream when fwrite() fails.  Remove a
  born-ineffective test that aimed to skip zero-length writes.  Back-patch to
  9.2 (all supported versions).

Magnus Hagander pushed:

- Fix typo in comment.  Masahiko Sawada

- Update obsolete comment.  Commit ff27db5d changed this function to no longer
  return the start position, but forgot the comment.

Peter Eisentraut pushed:

- initdb: Re-add translatable string that got lost.

- Change xlog to WAL in some error messages.

- Fix compiler warning.  From: David Rowley <david(dot)rowley(at)2ndquadrant(dot)com>

- doc: Fix synopsis.

- Spelling fixes.  From: Josh Soref <jsoref(at)gmail(dot)com>

- Spelling fixes in code comments.  From: Josh Soref <jsoref(at)gmail(dot)com>

- ecpg: Improve some variable names.  based on patch from Josh Soref

- Add option to control snapshot export to CREATE_REPLICATION_SLOT.  We used to
  export snapshots unconditionally in CREATE_REPLICATION_SLOT in the replication
  protocol, but several upcoming patches want more control over what happens.
  Suppress snapshot export in pg_recvlogical, which neither needs nor can use
  the exported snapshot.  Since snapshot exporting can fail this improves
  reliability.  This also paves the way for allowing the creation of replication
  slots on standbys, which cannot export snapshots because they cannot allocate
  new XIDs.  Author: Petr Jelinek <petr(dot)jelinek(at)2ndquadrant(dot)com>

- doc: Fix TOC generation for refentries.  The XSLT stylesheets by default don't
  show refentries inside sections in table of contents, which for our
  documentation leads to some regressions compared to the DSSSL output.  For
  example, in the SPI chapter, which is mostly refentries, you don't get any
  usable table of contents.  Tweak things so it's mostly back to what it was

- doc: Remove useless elements in bibliography.  Under DSSSL, bibliodiv/para
  elements didn't show up, but under XSLT they do, but they are kind of useless
  here, so remove them.

- Allow referring to functions without arguments when unique.  In DDL commands
  referring to an existing function, allow omitting the argument list if the
  function name is unique in its schema, per SQL standard.  This uses the same
  logic that the regproc type uses for finding functions by name only.
  Reviewed-by: Michael Paquier <michael(dot)paquier(at)gmail(dot)com>

- Add more documentation and tests for publications.  Add/correct documentation
  and add some tests related to how access control around adding tables to
  publications works.

- Fix typo.

- Simplify publication/subscription tests a bit.  After testing RENAME TO,
  rename the object back.  This reduces the merge mess when subsequent patches
  add test cases before or after the rename test.

- psql: Add completion for \help DROP|ALTER.  While \help CREATE would complete
  usefully, \help DROP or \help ALTER did not complete anything.  Expand the
  list of things after CREATE and DROP to cover ALTER as well, and use that for
  the ALTER completion.  Also make minor tweaks to that list.  Also add support
  for completing \help on multiword commands like CREATE TEXT SEARCH ...
  Author: Andreas Karlsson <andreas(at)proxel(dot)se>

- pageinspect: Add test for page_header function.

- pageinspect: Add page_checksum function.  Author: Tomas Vondra
  <tomas(dot)vondra(at)2ndquadrant(dot)com> Reviewed-by: Ashutosh Sharma

- doc: Correct row count in table.  The incorrect count causes FOP to error out.

- doc: Tweak reference page header style.  Change the header style of references
  pages in HTML and PDF output to be more like the old style under DSSSL.  In
  particular, the page should start with a header containing the command name,
  instead of just "Name".

- doc: Update compatibility claim.  Update outdated claim that TRUNCATE is a
  PostgreSQL extension.  Add cross-links between DELETE and TRUNCATE references

- doc: Add markup.

- doc: Improve wording.  Link to CREATE and ALTER ROLE consistently, instead of

- doc: Fix a few typos and awkward links.

Heikki Linnakangas pushed:

- Remove obsolete references to JIS0201.TXT JIS0208.TXT.  We don't use those
  files anymore, since commit 1de9cc0dcc.

- Use radix tree for character encoding conversions.  Replace the mapping tables
  used to convert between UTF-8 and other character encodings with new radix
  tree-based maps. Looking up an entry in a radix tree is much faster than a
  binary search in the old maps. As a bonus, the radix tree representation is
  also more compact, making the binaries slightly smaller.  The "combined" maps
  work the same as before, with binary search. They are much smaller than the
  main tables, so it doesn't matter so much. However, the "combined" maps are
  now stored in the same .map files as the main tables. This seems more clear,
  since they're always used together, and generated from the same source files.
  Patch by Kyotaro Horiguchi, with lot of hacking by me at various stages.
  Reviewed by Michael Paquier and Daniel Gustafsson.  Discussion:

- Include array size in forward declaration.  Some compilers require it. At
  least Visual Studio, according to the buildfarm, and gcc with the -pedantic

- Fix and simplify check for whether we're running as Windows service.  If the
  process token contains SECURITY_SERVICE_RID, but it has been disabled by the
  SE_GROUP_USE_FOR_DENY_ONLY attribute, win32_is_service() would incorrectly
  report that we're running as a service. That situation arises, e.g. if
  postmaster is launched with a restricted security token, with the "Log in as
  Service" privilege explicitly removed.  Replace the broken code with
  CheckProcessTokenMembership(), which does this correctly. Also replace similar
  code in win32_is_admin(), even though it got this right, for simplicity and
  consistency.  Per bug #13755, reported by Breen Hagan. Back-patch to all
  supported versions. Patch by Takayuki Tsunakawa, reviewed by Michael Paquier.

- Allow plaintext 'password' authentication when user has a SCRAM verifier.
  Oversight in the main SCRAM patch.

- Add TAP tests for password-based authentication methods.  Tests all
  combinations of users with MD5, plaintext and SCRAM verifiers stored in
  pg_authid, with plain 'password', 'md5' and 'scram' authentication methods.
  Michael Paquier

Michael Meskes pushed:

- Document two phase commit commands in ecpg docu.  Patch by Masahiko Sawada

- Ecpg should support COMMIT PREPARED and ROLLBACK PREPARED.  The problem was
  that "begin transaction" was issued automatically before executing
  COMMIT/ROLLBACK PREPARED if not in auto commit. This fix by Masahiko Sawada
  fixes this.

- Add test case for two phase commit. Also by Masahiko Sawada.

- Fix schedule of ecpg test files to only try two-phase commit test when

Álvaro Herrera pushed:

- Silence unused variable compiler warning.  Fallout from fcec6caafa2: mark a
  variable in set_tablefunc_size_estimates as used for asserts only.  Also, the
  planner_rte_fetch() call is pointless with assertions disabled, so enclose it
  in a USE_ASSERT_CHECKING #ifdef; fix the same problem in
  set_subquery_size_estimates().  First problem noted by David Rowley, whose
  compiler is noisier than mine in this regard.

- Fix ancient get_object_address_opf_member bug.  The original coding was trying
  to use a TypeName as a string Value, which doesn't work; an oversight in my
  commit a61fd533.  Repair.  Also, make sure we cover the broken case in the
  relevant test script.  Backpatch to 9.5.  Discussion:

Robert Haas pushed:

- Remove some bogus logic from create_gather_merge_plan.  This logic was
  adapated from create_merge_append_plan, but the two cases aren't really
  analogous, because create_merge_append_plan is not projection-capable and must
  therefore have a tlist identical to that of the underlying paths.  Overwriting
  the tlist of Gather Merge with whatever the underlying plan happens to produce
  is no good at all.  Patch by me, reviewed by Rushabh Lathia, who also reported
  the issue and made an initial attempt at a fix.  Discussion:

- Update overlooked comment for Gather Merge.  Commit
  355d3993c53ed62c5b53d020648e4fbcfbf5f155 probably should have done this, but
  nobody noticed that it was needed.

- Fix failure to mark init buffers as BM_PERMANENT.  This could result in
  corruption of the init fork of an unlogged index if the ambuildempty routine
  for that index used shared buffers to create the init fork, which was true for
  brin, gin, gist, and hash indexes.  Patch by me, based on an earlier patch by
  Michael Paquier, who also reviewed this one.  This also incorporates an idea
  from Artur Zakirov.  Discussion:

- Update .gitignore.  Commit 42fcad68a9c0e0ebecf6842888723cad1f9d5be2 failed to
  do this.  Michael Paquier Discussion:

- Fix regression in parallel planning against inheritance tables.  Commit
  51ee6f3160d2e1515ed6197594bda67eb99dc2cc accidentally changed the behavior
  around inheritance hierarchies; before, we always considered parallel paths
  even for very small inheritance children, because otherwise an inheritance
  hierarchy with even one small child wouldn't be eligible for parallelism.
  That exception was inadverently removed; put it back.  In passing, also adjust
  the degree-of-parallelism comptuation for index-only scans not to consider the
  number of heap pages fetched.  Otherwise, we'll avoid parallel index-only
  scans on tables that are mostly all-visible, which isn't especially logical.
  Robert Haas and Amit Kapila, per a report from Ashutosh Sharma.  Discussion:

- hash: Support WAL consistency checking.  Kuntal Ghosh, reviewed by Amit Kapila
  and Ashutosh Sharma, with a few tweaks by me.  Discussion:

- Some preliminary refactoring towards partitionwise join.  Partitionwise join
  proposes add a concept of child join relations, which will have the same
  relationship with join relations as "other member" relations do with base
  relations.  These relations will need some but not all of the handling that we
  currently have for join relations, and some but not all of the handling that
  we currently have for appendrels, since they are a mix of the two.  Refactor a
  little bit so that the necessary bits of logic are exposed as separate
  functions.  Ashutosh Bapat, reviewed and tested by Rajkumar Raghuwanshi and by
  me.  Discussion:

- hash: Add write-ahead logging support.  The warning about hash indexes not
  being write-ahead logged and their use being discouraged has been removed.
  "snapshot too old" is now supported for tables with hash indexes.  Most
  importantly, barring bugs, hash indexes will now be crash-safe and usable on
  standbys.  This commit doesn't yet add WAL consistency checking for hash
  indexes, as we now have for other index types; a separate patch has been
  submitted to cure that lack.  Amit Kapila, reviewed and slightly modified by
  me.  The larger patch series of which this is a part has been reviewed and
  tested by Álvaro Herrera, Ashutosh Sharma, Mark Kirkwood, Jeff Janes, and
  Jesper Pedersen.  Discussion:

- Cosmetic fixes for hash index write-ahead logging.  Amit Kapila.  One of these
  was reported by Tom Lane.  Discussion:

- Fix MB regression tests for WAL-logging of hash indexes.  Thomas Munro noted
  that these files still contained the now-removed deprecation message in the
  expected output.  Patch by Amit Kapila Discussion:

- Add a regression test for snapshot too old with hash indexes.  Amit Kapila,
  but I changed the comment not to be a copy-and-paste of an existing one, and
  instead referred to it.  Discussion:

- Fix failure to use clamp_row_est() for parallel joins.  Commit
  0c2070cefa0e5d097b715c9a3b9b5499470019aa neglected to use clamp_row_est()
  where it should have done so.  Patch by me.  Report by Amit Kapila.

- Port single-page btree vacuum logic to hash indexes.  This is advantageous for
  hash indexes for the same reasons it's good for btrees: it accelerates space
  recycling, reducing bloat.  Ashutosh Sharma, reviewed by Amit Kapila and by
  me.  A bit of additional hacking by me.  Discussion:

- postgres_fdw: Push down FULL JOINs with restriction clauses.  The previous
  deparsing logic wasn't smart enough to produce subqueries when deparsing; make
  it smart enough to do that.  However, we only do it that way when necessary,
  because it generates more complicated SQL which will be harder for any humans
  reading the queries to understand.  Etsuro Fujita, reviewed by Ashutosh Bapat

- Add pg_ls_logdir() and pg_ls_waldir() functions.  These functions are intended
  to be used by monitoring tools, and, unlike pg_ls_dir(), access to them can be
  granted to non-superusers, so that those monitoring tools can observe the
  principle of least privilege.  Dave Page, revised by me, and also reviewed a
  bit by Thomas Munro.  Discussion:

- Avoid access to uninitialized memory in shared tidbitmap iteration.
  Primarily, this didn't work correctly when the tidbitmap ended up empty.
  Dilip Kumar, per a report from Emre Hasegeli Discussion:

- Fix grammar.  This would have ben grammatical if the closing tag name were
  actually part of the output, but of course it's not.

- Remove dead link.  David Christensen Discussion:

- Rename "pg_clog" directory to "pg_xact".  Names containing the letters "log"
  sometimes confuse users into believing that only non-critical data is present.
  It is hoped this renaming will discourage ill-considered removals of
  transaction status data.  Michael Paquier Discussion:

- Create and use wait events for read, write, and fsync operations.  Previous
  commits, notably 53be0b1add7064ca5db3cd884302dfc3268d884e and
  6f3bd98ebfc008cbd676da777bb0b2376c4c4bfa, made it possible to see from
  pg_stat_activity when a backend was stuck waiting for another backend, but
  it's also fairly common for a backend to be stuck waiting for an I/O.  Add
  wait events for those operations, too.  Rushabh Lathia, with further hacking
  by me.  Reviewed and tested by Michael Paquier, Amit Kapila, Rajkumar
  Raghuwanshi, and Rahila Syed.  Discussion:

Andres Freund pushed:

- amcheck: Harden tests against concurrent autovacuums.  The previous coding of
  the test was vulnerable against autovacuum triggering work on one of the
  tables in check_btree.sql.  For the purpose of the test it's entirely
  sufficient to check for locks taken by the current process, so add an
  appropriate restriction.  While touching the test, expand it to also check for
  locks on the underlying relations, rather than just the indexes.  Reported-By:
  Tom Lane Discussion:

- Improve isolation tests infrastructure.  Previously if a directory had both
  isolationtester and plain regression tests, they couldn't be run in parallel,
  because they'd access the same files/directories.  That, so far, only affected
  contrib/test_decoding.  Rather than fix that locally in contrib/test_decoding,
  improve pg_regress_isolation_[install]check to use separate resources from
  plain regression tests.  That requires a minor change in pg_regress, namely
  that the --outputdir is created if not already existing, that seems like good
  idea anyway.  Use the improved helpers even where previously not used.
  Author: Tom Lane and Andres Freund Discussion:

- Improve grammar / fix typos in snapbuild.c.  Author: Erik Rijkers Discussion:

- Specify bindir in pg_isolation_regress_installcheck.  It appears
  dcae5faccab64776376d3 forgot to add it to pg_isolation_regress_installcheck,
  while it was added to pg_regress_installcheck.  It seems to so far have
  escaped notice, because buildfarm animals requiring it, didn't actually use
  pg_isolation_regress_installcheck anywhere - that changed with 60f826c5e6244,
  triggering failures on narwhal and frogmouth.  I've decided to not, for now at
  least, backpatch this, because the relevant invocations look quite different
  in the back branches.  Seems quite possible that we'll want to backport
  60f826c5e6244 as a whole if it proves stable.  Discussion:

Stephen Frost pushed:

- Add support for EUI-64 MAC addresses as macaddr8.  This adds in support for
  EUI-64 MAC addresses by adding a new data type called 'macaddr8' (using our
  usual convention of indicating the number of bytes stored).  This was largely
  a copy-and-paste from the macaddr data type, with appropriate adjustments for
  having 8 bytes instead of 6 and adding support for converting a provided
  EUI-48 (6 byte format) to the EUI-64 format.  Conversion from EUI-48 to EUI-64
  inserts FFFE as the 4th and 5th bytes but does not perform the IPv6 modified
  EUI-64 action of flipping the 7th bit, but we add a function to perform that
  specific action for the user as it may be commonly done by users who wish to
  calculate their IPv6 address based on their network prefix and 48-bit MAC
  address.  Author: Haribabu Kommi, with a good bit of rework of macaddr8_in by
  me.  Reviewed by: Vitaly Burovoy, Kuntal Ghosh Discussion:

- Bump catversion for MACADDR8.  Pointed out by Robert.

- Clean up overly paranoid checks in mac8.c.  Andres' compiler points out, quite
  correctly, that there's no need for some of the overly paranoid checks which
  were put into mac8.c.  Remove those, as they're useless, add some comments and
  make a few other minor improvements- reduce the size of hexlookup by making it
  a char array instead of an int array, and pass in the ptr location directly
  instead of making hex2_to_uchar re-calculate the location based off the offset
  every time.

- Be more careful about signed vs. unsigned char.  The buildfarm has reminded me
  that not all systems consider char to be signed and we need to be explicit.
  Adjust the various bits of mac8.c for what we intend, mostly using casts to
  unsigned char as suggested by Tom, and adjust the tests for valid input
  accordingly.  Explicitly make the hexlookup table signed as it's useful to use
  -1 there to indicate an invalid value.

- Improve pg_dump regression tests and code coverage.  These improvements bring
  the lines-of-code coverage of pg_dump.c up to 87.7% (at least using LCOV 1.12,
  1.11 seems to differ slightly).  Nearly every function is covered, three of
  the four which aren't are only called when talking to older PG instances.
  There is more which can, and should, be done here to improve the coverage but
  it's past time to see what the buildfarm thinks of this.  What has been added:
  * Coverage for many more command-line options * Use command_fails_like instead
  of command_exit_is * Operator classes, operator families * Text search
  configuration, templates, parsers, dictionaries * FDWs, servers, foreign
  tables * Materialized views * Improved Publications / Subscriptions test
  (though this needs work, see PG10 open items and tests marked with XXX in * Unlogged tables * Partitioned tables * Additional ACL
  testing for various object types There is room for improvement, specifically:
  * Various type-based option (alignment, storage, etc) * Composite type
  collation * Extra Procedural language functions (inline, validator) *
  Different function options (SRF, Transform, config, security definer, cost,
  leakproof) * OpClass options (default, storage, order by, recheck) * OpFamily
  options (order by, recheck) * Aggregate functions (combinefunc, serialfunc,
  deserialfunc, etc) * Text Search parser 'headline' * Text Search template
  'init' * FDW options (handler, validator, options) * Server options (type,
  version, options) * User mapping options * Default ACLs for sequences, types *
  Security labels * View circular dependencies (last function that needs
  coverage) * Toast table autovacuum options * Replica identity options *
  Independent indexes (plus marking them as clustered on) * Deferrable /
  initially deferred constraints * Independent domain constraints There's bits
  of extension pg_dump'ing also not covered, but those will need to go into
  test_pg_dump (such as having a filter for config tables).  Last, but not
  least, this approximately halves the number of tests run with 'ok()' by
  removing the ok()-based checking of if all runs are covered by each test.
  Instead, will just exit out in such a case (with a message in
  the log file).  In general, when adding tests, cover all runs unless there is
  a very good reason not to (such as adding a 'catch-all' case).  With these
  changes, the resulting output and number of "tests" run is actually reduced.

- pg_dump: Remove "option requires an argument -- j" test.  This is really
  testing getopt more than pg_dump, and what getopt returns exactly appears to
  differ based on platform, so remove this test.  Per buildfarm.

- Adjust number of tests for pg_dump  When removing a test, need
  to make sure the count of tests is adjusted when it isn't calculated.

- pg_dump: Skip COLLATION-related regression tests.  Not every platform supports
  non-default collations, as pointed out by the buildfarm, so skip
  collation-related regression tests in pg_dump when they aren't supported.

Andrew Gierth pushed:

- Avoid having vacuum set reltuples to 0 on non-empty relations in the
  presence of page pins, which leads to serious estimation errors in the
  planner.  This particularly affects small heavily-accessed tables, especially
  where locking (e.g. from FK constraints) forces frequent vacuums for mxid
  cleanup.  Fix by keeping separate track of pages whose live tuples were
  actually counted vs. pages that were only scanned for freezing purposes.
  Thus, reltuples can only be set to 0 if all pages of the relation were
  actually counted.  Backpatch to all supported versions.  Per bug #14057 from
  Nicolas Baccelli, analyzed by me.  Discussion:

- Repair test for vacuum reltuples fix.  Concurrent auto-analyze could be
  holding a snapshot, affecting the removal of deleted row versions.  Remove the
  deletion to avoid this happening.  Per buildfarm.  In passing, make the test
  independent of assumptions of physical row order, just out of sheer paranoia.

== Pending Patches ==

Andreas Karlsson sent in another revision of a patch to implement REINDEX

Amit Langote sent in a patch to fix a bug in get_partition_for_tuple.

KaiGai Kohei sent in another revision of a patch to add PassDownLimitBound for

Masahiko Sawada sent in another revision of a patch to support 2PC for FDWs.

Pavel Stěhule sent in a patch to fix an xpath bug.

Craig Ringer and Petr Jelínek traded patches to add an option to control
snapshot export to CREATE_REPLICATION_SLOT and add logical replication support
for initial data copy.

Craig Ringer sent in two more revisions of a patch to add a pg_recvlogical
wrapper to PostgresNode, follow timeline switches in logical decoding, and
enable logical decoding on standby.

Mithun Cy sent in another revision of a patch to implement auto_prewarm.

Thomas Munro sent in a patch to fix a bug in psql's tab completion for UPDATE.

Jeff Janes sent in a patch to silence a perl warning in the check-world make

Peter Geoghegan sent in a patch to avoid copying within

Thomas Munro sent in a patch to update the "tool sets" documentation for modern

David Rowley sent in two more revisions of a patch to improve performance for
joins where outer side is unique.

Anastasia Lubennikova and Ashutosh Bapat traded patches to add IF NOT EXISTS
option for CREATE SERVER and CREATE USER MAPPING statements.

Rafia Sabih sent in another revision of a patch to add parallelism support for
queries coming from SQL or other PL functions.

Thomas Munro sent in another revision of a patch to help measure replay lag.

Vaishnavi Prabakaran sent in a patch to fix a bug in libpq's single row mode.

Michaël Paquier sent in another revision of a patch to change references of
password encryption to hashing.

Amit Langote sent in four more revisions of a patch to avoid creating scan nodes
for partitioned tables and not allocate storage for partitioned tables.

David Steele sent in two more revisions of a patch to make pg_stop_backup()
archive wait optional.

Andres Freund, Heikki Linnakangas, and Andreas Karlsson traded patches to
process expressions faster.

Aleksander Alekseev sent in another revision of a patch to suppress clang 3.9

Beena Emerson sent in another revision of a patch to allow increasing the
default WAL segment size.

Amit Kapila sent in another revision of a patch to enable parallel queries
containing initplans.

Michaël Paquier sent in another revision of a patch to fix backend crash on
non-exclusive backup cancel.

Álvaro Herrera and David Rowley traded patches to add extended (multivariate)

Ashutosh Sharma sent in six more revisions of a patch to add microvacuum support
for Hash Index.

Surafel Temesgen and Pavel Stěhule traded patches to add CORRESPONDING.

Ashutosh Bapat and Rafia Sabih traded patches to support partition-wise join for
join between (declaratively) partitioned tables.

Pavan Deolasee sent in two more revisions of a patch to implement WARM.

Masahiko Sawada sent in another revision of a patch to report the number of
skipped frozen pages by manual VACUUM.

Kuntal Ghosh sent in a patch to show extParams and allParams in explain.

Andrew Gierth sent in another revision of a patch to add hash support for

Haribabu Kommi sent in another revision of a patch to mark utility commands
benefiting from parallel plan.

Haribabu Kommi sent in another revision of a patch to add pg_stat_wal_write
statistics view.

Vaishnavi Prabakaran sent in another revision of a patch to add pipelining batch
support for libpq code and tests for same.

Dilip Kumar sent in three revisions of a patch to fix a bug in parallel bitmap

Nikhil Sontakke sent in another revision of a patch to speed up 2PC

Kuntal Ghosh sent in two more revisions of a patch to add infra to expose all
backend processes in pg_stat_get_activity, expose stats for all backends, and
add backend_type column in pg_stat_get_activity.

Heikki Linnakangas sent in a patch to allow SCRAM authentication, when
pg_hba.conf says 'md5'.

Michaël Paquier sent in another revision of a patch to use base64-based encoding
for stored and server keys in SCRAM verifiers, refactor frontend-side random
number generation, move routine to build SCRAM verifier into src/common/, and
extend PQencryptPassword with a hashing method.

Simon Riggs and David Rowley traded patches to improve the performance of replay
of AccessExclusiveLock.

Peter Eisentraut sent in another revision of a patch to refine rules for
altering publication owner, change logical replication pg_hba.conf use, add
USAGE privilege for publications, add subscription apply worker privilege
checks, and add CREATE SUBSCRIPTION privilege on databases.

Rushabh Lathia sent in two more revisions of a patch to add wait events for disk

Peter Eisentraut sent in another revision of a patch to implement ICU

Thomas Munro sent in two revisions of a patch to change ancient use of Size to
the now-common size_t.

Michaël Paquier sent in a patch to add clause PASSWORD (val USING protocol) to

Takayuki Tsunakawa sent in a patch to fix an issue where pgwin32_is_service was
not checking whether SECURITY_SERVICE_SID was disabled.

Michael Banck sent in three revisions of a patch to reorder tablespaces for
non-WAL streaming basebackups.

Amit Khandekar sent in another revision of a patch to implement parallel append.

Michaël Paquier sent in another revision of a patch to rename pg_subtrans to

Corey Huinker sent in two more revisions of a patch to add \if and friends to

Kyotaro HORIGUCHI sent in another revision of a patch to implement asynchronous

Dave Page sent in another revision of a patch to add monitoring roles.

Emre Hasegeli sent in another revision of a patch to add new BRIN cost

Yugo Nagata sent in another revision of a patch to implement hash partitioning.

Robert Haas sent in a patch to put make a single point of truth for
adjust_relid_set while keeping it static.

Petr Jelínek sent in a patch to fix wait for writable socket on Windows.

Pritam Baral sent in a patch to enable using indexes for
element-contained-by-const-range clauses.

Nikolay Shaplov sent in another revision of a patch to move all am-related
reloption code into src/backend/access/[am-name] and get rid of relopt_kind for
custom AM.

Peter Eisentraut sent in a patch to pageinspect to add bt_page_items function
with a bytea argument.

Elvis Pranskevichus sent in a patch to add and report the new "in_hot_standby"
GUC pseudo-variable.

Vinayak Pokale sent in another revision of a patch to add an ANALYZE command
progress checker.

Petr Jelínek sent in another revision of a patch to add an option to modify sync
commit per subscription in logical replication.

Pavel Stěhule sent in another revision of a patch to psql to add \gload for
loading binary formats.

Mithun Cy sent in another revision of a patch to expand hash buckets

Jan Michálek sent in another revision of a patch to add markdown and rst output
formats to psql.

Michael Banck sent in two revisions of a patch to create replication slot in
pg_basebackup if requested and not yet present.

Peter Eisentraut sent in a patch to remove createlang and droplang.

Peter Geoghegan sent in another revision of a patch to add parallel B-tree index
build sorting and add temporary testing tools.

pgsql-announce by date

Next:From: SwissPUG InfoDate: 2017-03-20 08:15:01
Subject: Swiss PGDay 2017 - CfS is open - Reminder
Previous:From: Bo PengDate: 2017-03-17 07:35:28
Subject: Pgpool-II 3.6.2, 3.5.6, 3.4.10, 3.3.14 and 3.2.19 are now officially released.

Privacy Policy | About PostgreSQL
Copyright © 1996-2017 The PostgreSQL Global Development Group