== PostgreSQL Weekly News - August 9, 2020 ==

Поиск
Список
Период
Сортировка
От David Fetter
Тема == PostgreSQL Weekly News - August 9, 2020 ==
Дата
Msg-id 20200809214950.GA19989@fetter.org
обсуждение исходный текст
Список pgsql-announce
== PostgreSQL Weekly News - August  9, 2020 ==

PGDay Ukraine has been cancelled due to COVID-19.

Person of the week: https://postgresql.life/post/tatsuo_ishii/

== PostgreSQL Jobs for August ==

http://archives.postgresql.org/pgsql-jobs/2020-08/

== PostgreSQL Local ==

pgDay Israel 2020 will take place on September 10, 2020 in Tel Aviv.
http://pgday.org.il/

== 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 PST8PDT to david@fetter.org.

== Applied Patches ==

Tom Lane pushed:

- Fix minor issues in psql's new \dAc and related commands. The type-name
  pattern in \dAc and \dAf was matched only to the actual pg_type.typname
  string, which is fairly user-unfriendly in cases where that is not what's
  shown to the user by format_type (compare "_int4" and "integer[]").  Make this
  code match what \dT does, i.e. match the pattern against either typname or
  format_type() output.  Also fix its broken handling of schema-name
  restrictions.  (IOW, make these processSQLNamePattern calls match \dT's.)
  While here, adjust whitespace to make the query a little prettier in -E
  output, too.  Also improve some inaccuracies and shaky grammar in the related
  documentation.  Noted while working on a patch for intarray's opclasses; I
  wondered why I couldn't get a match to "integer*" for the input type name.
  https://git.postgresql.org/pg/commitdiff/533020d05045046a3481fdd92777de7bb2e30ab3

- Fix behavior of ecpg's "EXEC SQL elif name". This ought to work much like C's
  "#elif defined(name)"; but the code implemented it in a way equivalent to
  endif followed by ifdef, so that it didn't matter whether any previous branch
  of the IF construct had succeeded.  Fix that; add some test cases covering
  elif and nested IFs; and improve the documentation, which also seemed a bit
  confused.  AFAICS the code has been like this since the feature was added in
  1999 (commit b57b0e044).  So while it's surely wrong, there might be code out
  there relying on the current behavior.  Hence, don't back-patch into stable
  branches.  It seems all right to fix it in v13 though.  Per report from
  Ashutosh Sharma.  Reviewed by Ashutosh Sharma and Michael Meskes.  Discussion:
  https://postgr.es/m/CAE9k0P=dQk9X0cU2tN49S7a9tv733-e1pVdpB1P-pWJ5PdTktg@mail.gmail.com
  https://git.postgresql.org/pg/commitdiff/5f28b21eb3c5c2fb72c24608bc686acd7c9b113c

- Doc: fix obsolete info about allowed range of TZ offsets in timetz. We've
  allowed UTC offsets up to +/- 15:59 since commit cd0ff9c0f, but that commit
  forgot to fix the documentation about timetz.  Per bug #16571 from osdba.
  Discussion: https://postgr.es/m/16571-eb7501598de78c8a@postgresql.org
  https://git.postgresql.org/pg/commitdiff/eeb01e3122bb0acb6f8575d352e8e63101662ae7

- Remove unnecessary "DISTINCT" in psql's queries for \dAc and \dAf. A moment's
  examination of these queries is sufficient to see that they do not produce
  duplicate rows, unless perhaps there's catalog corruption.  Using DISTINCT
  anyway is inefficient and confusing; moreover it sets a poor example for
  anyone who refers to psql -E output to see how to query the catalogs.
  https://git.postgresql.org/pg/commitdiff/9e496768b8a7303ea07888ea1baae8e2a57dda7b

- Increase hard-wired timeout values in ecpg regression tests. A couple of test
  cases had connect_timeout=14, a value that seems to have been plucked from a
  hat.  While it's more than sufficient for normal cases, slow/overloaded
  buildfarm machines can get a timeout failure here, as per recent report from
  "sungazer".  Increase to 180 seconds, which is in line with our typical
  timeouts elsewhere in the regression tests.  Back-patch to 9.6; the code looks
  different in 9.5, and this doesn't seem to be quite worth the effort to adapt
  to that.  Report:
  https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=sungazer&dt=2020-08-04%2007%3A12%3A22
  https://git.postgresql.org/pg/commitdiff/0f76294260b92849c4958fb706ecd5b5cd73e40e

- Fix matching of sub-partitions when a partitioned plan is stale. Since we no
  longer require AccessExclusiveLock to add a partition, the executor may see
  that a partitioned table has more partitions than the planner saw.
  ExecCreatePartitionPruneState's code for matching up the partition lists in
  such cases was faulty, and would misbehave if the planner had successfully
  pruned any partitions from the query.  (Thus, trouble would occur only if a
  partition addition happens concurrently with a query that uses both static and
  dynamic partition pruning.)  This led to an Assert failure in debug builds,
  and probably to crashes or query misbehavior in production builds.  To repair
  the bug, just explicitly skip zeroes in the plan's relid_map[] list.  I also
  made some cosmetic changes to make the code more readable (IMO anyway).  Also,
  convert the cross-checking Assert to a regular test-and-elog, since it's now
  apparent that this logic is more fragile than one would like.  Currently,
  there's no way to repeatably exercise this code, except with manual use of a
  debugger to stop the backend between planning and execution.  Hence, no test
  case in this patch.  We oughta do something about that testability gap, but
  that's for another day.  Amit Langote and Tom Lane, per report from Justin
  Pryzby.  Oversight in commit 898e5e329; backpatch to v12 where that appeared.
  Discussion: https://postgr.es/m/20200802181131.GA27754@telsasoft.com
  https://git.postgresql.org/pg/commitdiff/7a980dfc6c15add6ec3309932cf3061bb6745f65

- Support testing of cases where table schemas change after planning. We have
  various cases where we allow DDL on tables to be performed with less than full
  AccessExclusiveLock.  This requires concurrent queries to be able to cope with
  the DDL change mid-flight, but up to now we had no repeatable way to test such
  cases.  To improve that, invent a test module that allows halting a backend
  after planning and then resuming execution once we've done desired actions in
  another session.  (The same approach could be used to inject delays in other
  places, if there's a suitable hook available.)  This commit includes a single
  test case, which is meant to exercise the previously-untestable
  ExecCreatePartitionPruneState code repaired by commit 7a980dfc6.  We'd
  probably not bother with this if that were the only foreseen benefit, but I
  expect additional test cases will use this infrastructure in the future.  Test
  module by Andy Fan, partition-addition test case by me.  Discussion:
  https://postgr.es/m/20200802181131.GA27754@telsasoft.com
  https://git.postgresql.org/pg/commitdiff/6f0b632f083ba08fabb6c496caf733802cee9d2e

- Remove <@ from contrib/intarray's GiST operator classes. Since commit
  efc77cf5f, an indexed query using <@ has required a full-index scan, so that
  it actually performs worse than a plain seqscan would do.  As I noted at the
  time, we'd be better off to not treat <@ as being indexable by such indexes at
  all; and that's what this patch does.  It would have been difficult to remove
  these opclass members without dropping the whole opclass before commit
  9f9682783 fixed GiST opclass member dependency rules, but now it's quite
  simple, so let's do it.  I left the existing support code in place for the
  time being, with comments noting it's now unreachable.  At some point, perhaps
  we should remove that code in favor of throwing an error telling people to
  upgrade the extension version.  Discussion:
  https://postgr.es/m/2176979.1596389859@sss.pgh.pa.us Discussion:
  https://postgr.es/m/458.1565114141@sss.pgh.pa.us
  https://git.postgresql.org/pg/commitdiff/20e7e1fe316467720d8d062e1a1429f798fc31bf

- Remove useless Assert. Testing that an unsigned variable is >= 0 is pretty
  pointless, as noted by Coverity and numerous buildfarm members.  In passing,
  add comment about new uses of "volatile" --- Coverity doesn't much like that
  either, but it seems probably necessary.
  https://git.postgresql.org/pg/commitdiff/1c164ef3d28dfab445a885a03e80cfd0d552f64a

- Check for fseeko() failure in pg_dump's _tarAddFile(). Coverity pointed out,
  not unreasonably, that we checked fseeko's result at every other call site but
  these.  Failure to seek in the temp file (note this is NOT pg_dump's output
  file) seems quite unlikely, and even if it did happen the file length
  cross-check further down would probably detect the problem.  Still, that's a
  poor excuse for not checking the result of a system call.
  https://git.postgresql.org/pg/commitdiff/1b9cde51246c7773eac119b84cc18095118735de

Thomas Munro pushed:

- Correct comment in simplehash.h. Post-commit review for commit 84c0e4b9.
  Author: David Rowley <dgrowleyml@gmail.com> Discussion:
  https://postgr.es/m/CAApHDvptBx_%2BUPAzY0uXzopbvPVGKPeZ6Hoy8rnPcWz20Cr0Bw%40mail.gmail.com
  https://git.postgresql.org/pg/commitdiff/63e9aa6879cc5b87c77bab9afea3740748a4f00b

- Fix rare failure in LDAP tests. Instead of writing a query to psql's stdin,
  use -c.  This avoids a failure where psql exits before we write, seen a few
  times on the build farm.  Thanks to Tom Lane for the suggestion.  Back-patch
  to 11, where the LDAP tests arrived.  Reviewed-by: Noah Misch
  <noah@leadboat.com> Discussion:
  https://postgr.es/m/CA%2BhUKGLFmW%2BHQYPeKiwSp5sdFFHtFViCpw4Mh6yAgEx74r5-Cw%40mail.gmail.com
  https://git.postgresql.org/pg/commitdiff/f44b9b625bedd8e0bca67b3b42ba10ce482fa31b

Michaël Paquier pushed:

- Add %P to log_line_prefix for parallel group leader. This is useful for
  monitoring purposes with log parsing.  Similarly to pg_stat_activity, the
  leader's PID is shown only for active parallel workers, minimizing the log
  footprint for the leaders as the equivalent shared memory field is set as long
  as a backend is alive.  Author: Justin Pryzby Reviewed-by: Álvaro Herrera,
  Michael Paquier, Julien Rouhaud, Tom Lane Discussion:
  https://postgr.es/m/20200315111831.GA21492@telsasoft.com
  https://git.postgresql.org/pg/commitdiff/b8fdee7d0ca8bd2165d46fb1468f75571b706a01

- Make new SSL TAP test for channel_binding more robust. The test would fail in
  an environment including a certificate file in ~/.postgresql/.  bdd6e9b fixed
  a similar failure, and d6e612f introduced the same problem again with a new
  test.  Author: Kyotaro Horiguchi Discussion:
  https://postgr.es/m/20200804.120033.31225582282178001.horikyota.ntt@gmail.com
  Backpatch-through: 13
  https://git.postgresql.org/pg/commitdiff/dd877998d498c511352bd3640fd57f041c90ea62

Peter Geoghegan pushed:

- Add nbtree page deletion assertion. Add a documenting assertion that's similar
  to the nearby assertion added by commit cd8c73a3.  This conveys that the
  entire call to _bt_pagedel() does no work if it isn't possible to get a
  descent stack for the initial scanblkno page.
  https://git.postgresql.org/pg/commitdiff/a451b7d44249b8655db8d40476ace9f84d76ab88

- Fix replica backward scan race condition. It was possible for the logic used
  by backward scans (which must reason about concurrent page splits/deletions in
  its own peculiar way) to become confused when running on a replica.
  Concurrent replay of a WAL record that describes the second phase of page
  deletion could cause _bt_walk_left() to get confused.
  btree_xlog_unlink_page() simply failed to adhere to the same locking protocol
  that we use on the primary, which is obviously wrong once you consider these
  two disparate functions together.  This bug is present in all stable branches.
  More concretely, the problem was that nothing stopped _bt_walk_left() from
  observing inconsistencies between the deletion's target page and its original
  sibling pages when running on a replica.  This is true even though the second
  phase of page deletion is supposed to work as a single atomic action.  Queries
  running on replicas raised "could not find left sibling of block %u in index
  %s" can't-happen errors when they went back to their scan's "original" page
  and observed that the page has not been marked deleted (even though it really
  was concurrently deleted).  There is no evidence that this actually happened
  in the real world.  The issue came to light during unrelated feature
  development work.  Note that _bt_walk_left() is the only code that cares about
  the difference between a half-dead page and a fully deleted page that isn't
  also exclusively used by nbtree VACUUM (unless you include contrib/amcheck
  code).  It seems very likely that backward scans are the only thing that could
  become confused by the inconsistency.  Even amcheck's complex
  bt_right_page_check_scankey() dance was unaffected.  To fix, teach
  btree_xlog_unlink_page() to lock the left sibling, target, and right sibling
  pages in that order before releasing any locks (just like
  _bt_unlink_halfdead_page()).  This is the simplest possible approach.  There
  doesn't seem to be any opportunity to be more clever about lock acquisition in
  the REDO routine, and it hardly seems worth the trouble in any case.  This fix
  might enable contrib/amcheck verification of leaf page sibling links with only
  an AccessShareLock on the relation.  An amcheck patch from Andrey Borodin was
  rejected back in January because it clashed with btree_xlog_unlink_page()'s
  lax approach to locking pages.  It now seems likely that the real problem was
  with btree_xlog_unlink_page(), not the patch.  This is a low severity, low
  likelihood bug, so no backpatch.  Author: Michail Nikolaev Diagnosed-By:
  Michail Nikolaev Discussion:
  https://postgr.es/m/CANtu0ohkR-evAWbpzJu54V8eCOtqjJyYp3PQ_SGoBTRGXWhWRw@mail.gmail.com
  https://git.postgresql.org/pg/commitdiff/9a9db08ae46209edcc5ecb120328a2bf92fd6069

- amcheck: Sanitize metapage's allequalimage field. This will be helpful if it
  ever proves necessary to revoke an opclass's support for deduplication.
  Backpatch: 13-, where nbtree deduplication was introduced.
  https://git.postgresql.org/pg/commitdiff/c254d8d7b20bf629420b407a5451c3b32d1a7b0b

- Remove obsolete amcheck comment. Oversight in commit d114cc53871.
  https://git.postgresql.org/pg/commitdiff/3a3be80641c01e675d0ed484f15df8ec536d0a06

- Rename nbtree split REDO routine variables. Make the nbtree page split REDO
  routine variable names consistent with _bt_split() (which handles the original
  execution of page splits). These names make the code easier to follow by
  making the distinction between the original page and the left half of the
  split clear.  (The left half of the split page is a temp page that REDO
  creates to replace the origpage contents.)  Also reduce the elevel used when
  adding a new high key to the temp page from PANIC to ERROR to be consistent.
  We already only raise an ERROR when data item PageAddItem() temp page calls
  fail.
  https://git.postgresql.org/pg/commitdiff/3df92bbd1dba98f72e3f005406463b0718193a0f

- Make nbtree split REDO locking match original execution. Make the nbtree page
  split REDO routine consistent with original execution in its approach to
  acquiring and releasing buffer locks (at least for pages on the tree level of
  the page being split).  This brings btree_xlog_split() in line with
  btree_xlog_unlink_page(), which was taught to couple buffer locks by commit
  9a9db08a.  Note that the precise order in which we both acquire and release
  sibling buffer locks in btree_xlog_split() now matches original execution
  exactly (the precise order in which the locks are released probably doesn't
  matter much, but we might as well be consistent about it).  The rule for
  nbtree REDO routines from here on is that same-level locks should be acquired
  in an order that's consistent with original execution.  It's not practical to
  have a similar rule for cross-level page locks, since for the most part
  original execution holds those locks for a period that spans multiple atomic
  actions/WAL records.  It's also not necessary, because clearly the cross-level
  lock coupling is only truly needed during original execution because of the
  presence of concurrent inserters.  This is not a bug fix (unlike the similar
  aforementioned commit, commit 9a9db08a).  The immediate reason to tighten
  things up in this area is to enable an upcoming enhancement to contrib/amcheck
  that allows it to verify that sibling links are in agreement with only an
  AccessShareLock (this check produced false positives when run on a replica
  server on account of the inconsistency fixed by this commit).  But that's not
  the only reason to be stricter here.  It is generally useful to make locking
  on replicas be as close to what happens during original execution as
  practically possible.  It makes it less likely that hard to catch bugs will
  slip in in the future.  The previous state of affairs seems to be a holdover
  from before the introduction of Hot Standby, when buffer lock acquisitions
  during recovery were totally unnecessary.  See also: commit 3bbf668d, which
  tightened things up in this area a few years after the introduction of Hot
  Standby.  Discussion:
  https://postgr.es/m/CAH2-Wz=465cJj11YXD9RKH8z=nhQa2dofOZ_23h67EXUGOJ00Q@mail.gmail.com
  https://git.postgresql.org/pg/commitdiff/0a7d771f0f63eb120e7f0a60aecd543ab25ba197

- Teach amcheck to verify sibling links in all cases. Teach contrib/amcheck's
  bt_index_check() function to check agreement between siblings links.  The left
  sibling's right link should point to a right sibling page whose left link
  points back to the same original left sibling.  This extends a check that
  bt_index_parent_check() always performed to bt_index_check().  This is the
  first time amcheck has been taught to perform buffer lock coupling, which we
  have explicitly avoided up until now.  The sibling link check tends to catch a
  lot of real world index corruption with little overhead, so it seems worth
  accepting the complexity.  Note that the new lock coupling logic would not
  work correctly on replica servers without the changes made by commits 0a7d771f
  and 9a9db08a (there could be false positives without those changes).  Author:
  Andrey Borodin, Peter Geoghegan Discussion:
  https://postgr.es/m/0EB0CFA8-CBD8-4296-8049-A2C0F28FAE8C@yandex-team.ru
  https://git.postgresql.org/pg/commitdiff/39132b784aeaaacf5ddfb5c35b6e29a6926f4345

Alexander Korotkov pushed:

- Remove btree page items after page unlink. Currently, page unlink leaves
  remaining items "as is", but replay of corresponding WAL-record re-initializes
  page leaving it with no items. For the sake of consistency, this commit makes
  primary delete all the items during page unlink as well.  Thanks to this
  change, we now don't mask contents of deleted btree page for WAL consistency
  checking.  Discussion:
  https://postgr.es/m/CAPpHfdt_OTyQpXaPJcWzV2N-LNeNJseNB-K_A66qG%3DL518VTFw%40mail.gmail.com
  Author: Alexander Korotkov Reviewed-by: Peter Geoghegan
  https://git.postgresql.org/pg/commitdiff/f47b5e139579a77c1f7c63400f01ea39d515e8c8

Bruce Momjian pushed:

- doc:  clarify "state" table reference in tutorial. Reported-by: Vyacheslav
  Shablistyy  Discussion:
  https://postgr.es/m/159586122762.680.1361378513036616007@wrigleys.postgresql.org
  Backpatch-through: 9.5
  https://git.postgresql.org/pg/commitdiff/a6775352476ac92d6b3eb3ae2dfd2775e3622afe

Robert Haas pushed:

- Register llvm_shutdown using on_proc_exit, not before_shmem_exit. This seems
  more correct, because other before_shmem_exit calls may expect the
  infrastructure that is needed to run queries and access the database to be
  working, and also because this cleanup has nothing to do with shared memory.
  There are no known user-visible consequences to this, though, apart from what
  was previous fixed by commit 303640199d0436c5e7acdf50b837a027b5726594 and
  back-patched as commit bcbc27251d35336a6442761f59638138a772b839 and commit
  f7013683d9bb663a6a917421b1374306a32f165b, so for now, no back-patch.  Bharath
  Rupireddy  Discussion:
  http://postgr.es/m/CALj2ACWk7j4F2v2fxxYfrroOF=AdFNPr1WsV+AGtHAFQOqm_pw@mail.gmail.com
  https://git.postgresql.org/pg/commitdiff/bab150045bd9766869f471ede88734ea0989261c

David Rowley pushed:

- Fix bogus EXPLAIN output for Hash Aggregate. 9bdb300de modified the EXPLAIN
  output for Hash Aggregate to show details from parallel workers. However, it
  neglected to consider that a given parallel worker may not have assisted with
  the given Hash Aggregate. This can occur when workers fail to start or during
  Parallel Append with enable_partitionwise_join enabled when only a single
  worker is working on a non-parallel aware sub-plan. It could also happen if a
  worker simply wasn't fast enough to get any work done before other processes
  went and finished all the work.  The bogus output came from the fact that
  ExplainOpenWorker() skipped showing any details for non-initialized workers
  but show_hashagg_info() did show details from the worker.  This meant that the
  worker properties that were shown were not properly attributed to the worker
  that they belong to.  In passing, we also now don't show Hash Aggregate
  properties for the leader process when it did not contribute any work to the
  Hash Aggregate. This can occur either during Parallel Append when only a
  parallel worker worked on a given sub plan or with
  parallel_leader_participation set to off.  This aims to make the behavior of
  Hash Aggregate's EXPLAIN output more similar to Sort's.  Reported-by: Justin
  Pryzby Discussion: https://postgr.es/m/20200805012105.GZ28072%40telsasoft.com
  Backpatch-through: 13, where the original breakage was introduced
  https://git.postgresql.org/pg/commitdiff/d5e96520ffca8eeeefc11f8fc82af610f68e63a8

Etsuro Fujita pushed:

- Fix yet another issue with step generation in partition pruning. Commit
  13838740f fixed some issues with step generation in partition pruning, but
  there was yet another one: get_steps_using_prefix() assumes that clauses in
  the passed-in prefix list are sorted in ascending order of their partition key
  numbers, but the caller failed to ensure this for range partitioning, which
  led to an assertion failure in debug builds. Adjust the caller function to
  arrange the clauses in the prefix list in the required order for range
  partitioning.  Back-patch to v11, like the previous commit.  Patch by me,
  reviewed by Amit Langote.  Discussion:
  https://postgr.es/m/CAPmGK16jkXiFG0YqMbU66wte-oJTfW6D1HaNvQf%3D%2B5o9%3Dm55wQ%40mail.gmail.com
  https://git.postgresql.org/pg/commitdiff/199cec9779504c08aaa8159c6308283156547409

Álvaro Herrera pushed:

- Remove PROC_IN_ANALYZE and derived flags. These flags are unused and always
  have been.  Discussion:
  https://postgr.es/m/20200805235549.GA8118@alvherre.pgsql
  https://git.postgresql.org/pg/commitdiff/cea3d55898655582e3a3835a7bed2c3a1b002fef

- walsnd: Don't set waiting_for_ping_response spuriously. Ashutosh Bapat noticed
  that when logical walsender needs to wait for WAL, and it realizes that it
  must send a keepalive message to walreceiver to update the sent-LSN, which
  *does not* request a reply from walreceiver, it wrongly sets the flag that
  it's going to wait for that reply.  That means that any future would-be sender
  of feedback messages ends up not sending a feedback message, because they all
  believe that a reply is expected.  With built-in logical replication there's
  not much harm in this, because WalReceiverMain will send a ping-back every
  wal_receiver_timeout/2 anyway; but with other logical replication systems
  (e.g. pglogical) it can cause significant pain.  This problem was introduced
  in commit 41d5f8ad734, where the request-reply flag was changed from true to
  false to WalSndKeepalive, without at the same time removing the line that sets
  waiting_for_ping_response.  Just removing that line would be a sufficient fix,
  but it seems better to shift the responsibility of setting the flag to
  WalSndKeepalive itself instead of requiring caller to do it; this is clearly
  less error-prone.  Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
  Reported-by: Ashutosh Bapat <ashutosh.bapat@2ndquadrant.com> Backpatch: 9.5
  and up Discussion: https://postgr.es/m/20200806225558.GA22401@alvherre.pgsql
  https://git.postgresql.org/pg/commitdiff/470687b4a5bb3b9f2b5bf7c9235680b3c91bd050

Amit Kapila pushed:

- Implement streaming mode in ReorderBuffer. Instead of serializing the
  transaction to disk after reaching the logical_decoding_work_mem limit in
  memory, we consume the changes we have in memory and invoke stream API methods
  added by commit 45fdc9738b. However, sometimes if we have incomplete toast or
  speculative insert we spill to the disk because we can't generate the complete
  tuple and stream. And, as soon as we get the complete tuple we stream the
  transaction including the serialized changes.  We can do this incremental
  processing thanks to having assignments (associating subxact with toplevel
  xacts) in WAL right away, and thanks to logging the invalidation messages at
  each command end. These features are added by commits 0bead9af48 and
  c55040ccd0 respectively.  Now that we can stream in-progress transactions, the
  concurrent aborts may cause failures when the output plugin consults catalogs
  (both system and user-defined).  We handle such failures by returning
  ERRCODE_TRANSACTION_ROLLBACK sqlerrcode from system table scan APIs to the
  backend or WALSender decoding a specific uncommitted transaction. The decoding
  logic on the receipt of such a sqlerrcode aborts the decoding of the current
  transaction and continue with the decoding of other transactions.  We have
  ReorderBufferTXN pointer in each ReorderBufferChange by which we know which
  xact it belongs to.  The output plugin can use this to decide which changes to
  discard in case of stream_abort_cb (e.g. when a subxact gets discarded).  We
  also provide a new option via SQL APIs to fetch the changes being streamed.
  Author: Dilip Kumar, Tomas Vondra, Amit Kapila, Nikhil Sontakke Reviewed-by:
  Amit Kapila, Kuntal Ghosh, Ajin Cherian Tested-by: Neha Sharma, Mahendra Singh
  Thalor and Ajin Cherian Discussion:
  https://postgr.es/m/688b0b7f-2f6c-d827-c27b-216a8e3ea700@2ndquadrant.com
  https://git.postgresql.org/pg/commitdiff/7259736a6e5b7c7588fff9578370736a6648acbb

- Fix the logical streaming test. Commit 7259736a6e added the capability to
  stream changes in ReorderBuffer which has some tests to test the streaming
  mode. It is quite possible that while this test is running a parallel
  transaction could be logged by autovacuum. Such a transaction won't perform
  any insert/update/delete to non-catalog tables so will be shown as an empty
  transaction. Fix it by skipping the empty transactions during this test.  Per
  report by buildfarm.
  https://git.postgresql.org/pg/commitdiff/82a0ba7707e010a29f5fe1a0020d963c82b8f1cb

Peter Eisentraut pushed:

- Add some const decorations.
  https://git.postgresql.org/pg/commitdiff/a13421c96c0e8ffa34310f92d03d0e6f3bfa27f8

== Pending Patches ==

Anastasia Lubennikova sent in another revision of a patch to set VM all_visible
and all_frozen bits when COPY FREEZE inserts tuples into empty page.

Justin Pryzby sent in another revision of a patch to create some secondary index
access optimizations, and avoid bitmap index scans inconsistent with partition
constraints.

Justin Pryzby sent in a patch to elog.c to remove a special case which avoided
%*s format strings, which should no longer be needed since it was a performance
hack for specific platform snprintf, which are no longer used.

Andrew Dunstan sent in two more revisions of a patch to support libnss as a TLS
backend.

Bharath Rupireddy sent in another revision of a patch to parallelize COPY.

Amit Langote sent in another revision of a patch to use heap slot for
partitioned tables.

Peter Eisentraut sent in three revisions of a patch to replace the remaining
StrNCpy() calls with strlcpy() calls.

Takashi Menjo sent in another revision of a patch to make it possible to use
PMDK for WAL.

Kyotaro HORIGUCHI sent in a patch to allow using a directory name for the
ssl_crl_file GUC and the sslcrl connection option.  X509_STORE_load_locations
accepts a directory, which leads to on-demand loading method with which method
only relevant CRLs are loaded.

Peter Eisentraut sent in a patch to change return type of EXTRACT to numeric.

Bertrand Drouvot sent in a patch to add information to rm_redo_error_callback().

David Cramer sent in a patch to throw an error and rollback on a failed
transaction instead of silently rolling back.

Andrey Borodin sent in another revision of a patch to add sort support for point
gist_point_sortsupport, and implement GiST index builds using same.

Álvaro Herrera sent in a patch to let ALTER TABLE exec routines deal with the
relation, and implement ALTER TABLE ... DETACH CONCURRENTLY.

Alexander Korotkov sent in another revision of a patch to remove btree page
items after page unlink, which removal makes it possible to stop masking the
contents of deleted btree pages for WAL consistency checking.

Bharath Rupireddy sent in another revision of a patch to implement background
worker shared memory access for EXEC_BACKEND cases.

David Rowley sent in another revision of a patch to allow estimate_num_groups()
to pass back further details about the estimation, allow users of simplehash.h
to perform direct deletions, and add a Result Cache executor node.

Mahendra Singh sent in another revision of a patch to add offset with block
number in vacuum errcontext.

Amit Langote, Tom Lane, and Andy Fan traded patches to fix an issue that
manifested as FailedAssertion("pd_idx == pinfo->nparts", File:
"execPartition.c", Line: 1689).

Amit Langote sent in two more revisions of a patch to revise how FDWs obtain
result relation information, avoid making "root" ResultRelInfo for insert
queries, revise the child-to-root tuple conversion map management, and
Initialize result relation information lazily.

Thomas Munro sent in another revision of a patch to ask the checkpointer to
flush SLRU files.

Jehan-Guillaume de Rorthais sent in another revision of a patch to implement
DEMOTE, a command that turns a writer node into a standby.

Dmitry Dolgov sent in another revision of a patch to implement generic type
subscripting.

David Rowley sent in a patch to avoid displaying hashagg properties for workers
that don't assist.

Asim Praveen sent in two more revisions of a patch to use a stringInfo instead
of a char for replace_string in pg_regress.

Ashutosh Sharma sent in two more revisions of a patch to add contrib/pg_surgery
to perform surgery on a damaged heap table.

Álvaro Herrera sent in a patch to flag CREATE INDEX CONCURRENTLY to avoid
spurious waiting.

Michaël Paquier sent in a patch to implement range checks of pg_test_fsync
--secs-per-test and pg_test_timing --duration.

Bertrand Drouvot sent in another revision of a patch to display individual
queries in pg_stat_activity.


Ryo Matsumura sent in another revision of a patch to ensure that "make
installcheck" works with PGXS.

Michaël Paquier sent in another revision of a patch to use multi-inserts for
pg_depend, and switch to multi-insert dependencies for many code paths.

Amit Langote sent in a patch to fix some inefficiencies in the patch to make
inserts to tables with foreign partitions faster.

Tomáš Vondra sent in another revision of a patch to implement BRIN multi-range
indexes.

Robert Haas sent in another revision of a patch to fix a bug that manifested as
parallel worker hanging while handling errors.

Bharath Rupireddy sent in another revision of a patch to modify the
cancel_before_shmem_exit() comments.

Pavel Borisov sent in a patch to implement covering GiST indexes.

Justin Pryzby sent in another revision of a patch to implement CREATE INDEX
CONCURRENTLY on partitioned tables.

Asim Praveen sent in another revision of a patch to start the WAL receiver
before the startup process replays existing WAL.

Michaël Paquier sent in a patch to support REINDEX in psql's tab completion.

Thomas Munro sent in a patch to optimize latches to send fewer signals, and
remove the self-pipe in WAIT_USE_EPOLL and WAIT_USE_KQUEUE builds.

Jeff Janes sent in a patch to implement tab completion for IMPORT FOREIGN SCHEMA
in psql.



В списке pgsql-announce по дате отправления:

Предыдущее
От: David Fetter
Дата:
Сообщение: == PostgreSQL Weekly News - August 2, 2020 ==
Следующее
От: "Jonathan S. Katz"
Дата:
Сообщение: PostgreSQL 12.4, 11.9, 10.14, 9.6.19, 9.5.23, and 13 Beta 3 Released!