== PostgreSQL Weekly News - April 19, 2020 == - Mailing list pgsql-announce
From | David Fetter |
---|---|
Subject | == PostgreSQL Weekly News - April 19, 2020 == |
Date | |
Msg-id | 20200419222534.GA25823@fetter.org Whole thread Raw |
List | pgsql-announce |
== PostgreSQL Weekly News - April 19, 2020 == == PostgreSQL Product News == pg_normalize_query 1.0, an extension to expose to SQL level a way to normalize query similar that used by to pg_stat_statements, released. https://github.com/fabriziomello/pg_normalize_query pspg 3.0.0 a pager designed for PostgreSQL, released. https://github.com/okbob/pspg/releases/tag/3.0.0 pgtt 2.0, an extension to implement global temporary tables, released. https://github.com/darold/pgtt/releases/tag/v2.0 repmgr 5.1 a replication manager for PostgreSQL, released. https://repmgr.org/docs/current/release-5.1.0.html pgmetrics 1.9, a command-line tool for PostgreSQL metrics, released. https://pgmetrics.io/ Pyrseas 0.9.1, a set of utilities for comparing and synchronizing Postgres database schemas, released. https://github.com/pyrseas/Pyrseas pg_readonly 0.0.1, an extension that makes it possible to set all cluster databases read-only, released. https://github.com/pierreforstmann/pg_readonly == PostgreSQL Jobs for April == http://archives.postgresql.org/pgsql-jobs/2020-04/ == PostgreSQL Local == PGCon 2020 will take place online on May 26-29, 2020. https://www.pgcon.org/2020/ PostgresLondon 2020 will be July 7-8, 2020 with an optional training day on July 6. http://postgreslondon.org PG Day Russia will be in Saint Petersburg on July 10, 2020. https://pgday.ru/en/2020/ FOSS4G 2020, will take place in Calgary, Alberta, Canada August 24-29 2020. the Call for Papers is currently open at https://2020.foss4g.org/speakers/ https://2020.foss4g.org/ PGDay Ukraine will take place September 5th, 2020 in Lviv at the Bank Hotel. https://pgday.org.ua/ pgDay Israel 2020 will take place on September 10, 2020 in Tel Aviv. http://pgday.org.il/ PGDay Austria will take place September 18, 2020 at Schloss Schoenbrunn (Apothekertrakt) in Vienna. https://pgday.at/en/ == 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: - Doc: introduce and document "&zwsp;" for allowing optional line breaks. We already had a couple of places using zero-width spaces for formatting hackery, and we're going to need more if we ever want the PDF manuals to look decent. But please let's not write hard-coded Unicode escapes. We can avoid that by using a custom entity, which also provides a place to put a teeny bit of documentation about what it is and how to use it. I'd previously posted a patch using "&break;" for this, but on reflection that would be horrible to grep for. Instead let's use "&zwsp;", based on the name of the Unicode symbol ("zero width space"). Discussion: https://postgr.es/m/9326.1581457869@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/88d934f0387a66ba372643913f99e845d0ea144a - Doc: introduce new layout for tables of functions and operators. We've long fought with the draconian space limitations of our traditional table layout for describing SQL functions and operators. This commit introduces a new approach, though so far I've only applied it to a few of those tables. The new way makes use of DocBook's support for different layouts in different rows of a table, and allows the descriptions and examples for a function or operator to run to several lines without as much ugliness and wasted space as before. The core layout concept is now Name Signature Description Example Example Result so that a function or operator really has three table rows not one, but we group them to look like one row by having the name column have only one entry for all three rows. (Actually, there could be four or more rows if you wanted to have more than one example, which is another thing that was painful before but works easily now.) This is handled by a "morerows" annotation on the name entry, which isn't perfect (notably, the toolchain is not smart enough to avoid breaking these row groups across PDF pages) but there seems no better solution in DocBook. The name column is normally fairly narrow, allowing plenty of space for the other column(s), and not wasting too much space when one of the other components runs to multiple lines. The varying row layout is managed by defining named "spans" and then tagging entries with a "spanname" of "name", "sig", "desc", "example", or "exresult". This provides a bit of semantic annotation to go with the formatting improvement, which seems like a good thing. (It seems that we have to re-define these spans afresh for each table, which is annoying, but it's not any worse than the duplication involved in the table headers. At least that gives us an opportunity to vary the relative column widths per-table, which is handy since function tables sometimes need much wider name columns than operator tables.) Signature entries should be written in the style <function>fname</function>(<type>typename</type> ...) <returnvalue>typename</returnvalue> The <returnvalue> tag produces a right arrow before the result type name. (I'll document that convention in a user-visible place later.) While this provides significantly more horizontal space than before for examples, it's still true that PDF output is a lot narrower than typical webpage viewing windows, so some examples need to be broken in places where there is no whitespace. I've added &zwsp; markers in suitable places to allow the tables to render warning-free in PDF. I've so far converted only the date/time operator, date/time function, and enum function tables in sections 9.9 and 9.10; these were chosen to provide a reasonable sample of the formatting problems that need to be solved. Assuming that this looks good on the website and doesn't provoke howls of anguish, I'll work on the other similar tables in the near future. There's a moderate amount of new editorial content in this patch along with the raw formatting changes; for instance I had to write text descriptions for operators that lacked them. I failed to resist the temptation to improve some other descriptions and examples, too. Patch by me, with thanks to Alexander Lakhin for assistance with figuring out some formatting issues. Discussion: https://postgr.es/m/9326.1581457869@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/e894c61836e4b967f7ec65358fdaed2ba86ed238 - Account for collation when coercing the output of a SQL function. Commit 913bbd88d overlooked that the result of coerce_to_target_type might need collation fixups. Per report from Andreas Joseph Krogh. Discussion: https://postgr.es/m/VisenaEmail.72.37d08ec2b8cb8fb5.17179940cd3@tc7-visena https://git.postgresql.org/pg/commitdiff/2d59643dbccaf73bc1f90875ea02dcad641379cd - Fix cache reference leak in contrib/sepgsql. fixup_whole_row_references() did the wrong thing with a dropped column, resulting in a commit-time warning about a cache reference leak. I (tgl) added a test case exercising this, but back-patched the test only as far as v10; the patch didn't apply cleanly to 9.6 and it didn't seem worth the trouble to adapt it. The bug is pretty old though, so apply the code change all the way back. Michael Luo, with cosmetic improvements by me Discussion: https://postgr.es/m/BYAPR08MB5606D1453D7F50E2AF4D2FD29AD80@BYAPR08MB5606.namprd08.prod.outlook.com https://git.postgresql.org/pg/commitdiff/fc576b7c4f3a5f045d443fc771d9e0f54b33e72b - Fix possible future cache reference leak in ALTER EXTENSION ADD/DROP. recordExtObjInitPriv and removeExtObjInitPriv were sloppy about calling ReleaseSysCache. The cases cannot occur given current usage in ALTER EXTENSION ADD/DROP, since we wouldn't get here for these relkinds; but it seems wise to clean up better. In passing, extend test logic in test_pg_dump to exercise the dropped-column code paths here. Since the case is unreachable at present, there seems no great need to back-patch; hence fix HEAD only. Kyotaro Horiguchi, with test case and comment adjustments by me Discussion: https://postgr.es/m/20200417.151831.1153577605111650154.horikyota.ntt@gmail.com https://git.postgresql.org/pg/commitdiff/3125a5baec1cf6d3aaeb8964bc3b3c49835e0452 - Doc: revise formatting of function/operator tables. The table layout ideas proposed in commit e894c6183 were not as widely popular as I'd hoped. After discussion, we've settled on a layout that's effectively a single-column table with cell contents much like a <varlistentry> description of the function or operator; though we're not actually using <varlistentry>, because it'd add way too much vertical space. Instead the effect is accomplished using line-break processing instructions to separate the description and example(s), plus CSS or FO customizations to produce indentation of all but the first line in each cell. While technically this is a bit grotty, it does have the advantage that we won't need to write nearly as much boilerplate markup. This patch updates tables 9.30, 9.31, and 9.33 (which were touched by the previous patch) to the revised style, and additionally converts table 9.10. A lot of work still remains to do, but hopefully it won't be too controversial. Thanks to Andrew Dunstan, Pierre Giraud, Robert Haas, Alvaro Herrera, David Johnston, Jonathan Katz, Isaac Morland for valuable ideas. Discussion: https://postgr.es/m/8691.1586798003@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/737d69ffc3cfb2e093975411c1becd65ad029478 - Fix race conditions in synchronous standby management. We have repeatedly seen the buildfarm reach the Assert(false) in SyncRepGetSyncStandbysPriority. This apparently is due to failing to consider the possibility that the sync_standby_priority values in shared memory might be inconsistent; but they will be whenever only some of the walsenders have updated their values after a change in the synchronous_standby_names setting. That function is vastly too complex for what it does, anyway, so rewriting it seems better than trying to apply a band-aid fix. Furthermore, the API of SyncRepGetSyncStandbys is broken by design: it returns a list of WalSnd array indexes, but there is nothing guaranteeing that the contents of the WalSnd array remain stable. Thus, if some walsender exits and then a new walsender process takes over that WalSnd array slot, a caller might make use of WAL position data that it should not, potentially leading to incorrect decisions about whether to release transactions that are waiting for synchronous commit. To fix, replace SyncRepGetSyncStandbys with a new function SyncRepGetCandidateStandbys that copies all the required data from shared memory while holding the relevant mutexes. If the associated walsender process then exits, this data is still safe to make release decisions with, since we know that that much WAL *was* sent to a valid standby server. This incidentally means that we no longer need to treat sync_standby_priority as protected by the SyncRepLock rather than the per-walsender mutex. SyncRepGetSyncStandbys is no longer used by the core code, so remove it entirely in HEAD. However, it seems possible that external code is relying on that function, so do not remove it from the back branches. Instead, just remove the known-incorrect Assert. When the bug occurs, the function will return a too-short list, which callers should treat as meaning there are not enough sync standbys, which seems like a reasonably safe fallback until the inconsistent state is resolved. Moreover it's bug-compatible with what has been happening in non-assert builds. We cannot do anything about the walsender-replacement race condition without an API/ABI break. The bogus assertion exists back to 9.6, but 9.6 is sufficiently different from the later branches that the patch doesn't apply at all. I chose to just remove the bogus assertion in 9.6, feeling that the probability of a bad outcome from the walsender-replacement race condition is too low to justify rewriting the whole patch for 9.6. Discussion: https://postgr.es/m/21519.1585272409@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/f332241a60aa9c0945d74642cb3dbcbc11621154 - Doc: sync functableentry markup choices with website style. Jonathan Katz felt that slightly different indentation settings made for a better-looking result, so sync stylesheet-fo.xsl (for PDF) and stylesheet.css (for non-website-style HTML) with those choices. Discussion: https://postgr.es/m/31464.1587156281@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/00f4aba46d537452da41e6d398f8f4c915de586d - Doc: update sections 9.1-9.3 for new function table layout. I took the opportunity to do some copy-editing in this area as well, and to add some new material such as a note about BETWEEN's syntactical peculiarities. Of note is that quite a few of the examples of transcendental functions needed to be updated, because the displayed output no longer matched what you get on a modern server. I believe some of these cases are side-effects of the new Ryu algorithm in float8out. Others appear to be because the examples predate the addition of type numeric, and were expecting that float8 calculations would be done although the given syntax would actually lead to calling the numeric function nowadays. https://git.postgresql.org/pg/commitdiff/81e83216d5b6826167d5116bd084b7b3a364b0b3 Peter Eisentraut pushed: - Improve error messages after LoadLibrary(). Move the file name to a format parameter to ease translatability. Add error code where missing. Make the wording consistent. https://git.postgresql.org/pg/commitdiff/0c620a5803afbb667da7ac4bcc91b245a214a80c - Fix update-unicode target. The normalization-check target needs to be run last, after moving the newly generated files into place. Also, we need an additional dependency so that unicode_norm.o is rebuilt first. Otherwise, norm_test will still test the old files but against the new expected results, which will probably fail. https://git.postgresql.org/pg/commitdiff/73afabcdc20e227beb8094efb44753b4de1c5c0a Amit Kapila pushed: - Cosmetic fixups for WAL usage work. Reported-by: Justin Pryzby and Euler Taveira Author: Justin Pryzby and Julien Rouhaud Reviewed-by: Amit Kapila Discussion: https://postgr.es/m/CAB-hujrP8ZfUkvL5OYETipQwA=e3n7oqHFU=4ZLxWS_Cza3kQQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/ef08ca113fe302b9ddf298964756eadcd41e77a1 - Comments and doc fixes for commit 40d964ec99. Reported-by: Justin Pryzby Author: Justin Pryzby, with few changes by me Reviewed-by: Amit Kapila and Sawada Masahiko Discussion: https://postgr.es/m/20200322021801.GB2563@telsasoft.com https://git.postgresql.org/pg/commitdiff/a6fea120a7e3858e642bb5e96027f166a1a6f134 - Fix the usage of parallel and full options of vacuum command. Earlier we were inconsistent in allowing the usage of parallel and full options. Change it such that we disallow them only when they are combined in a way that we don't support. In passing, improve the comments in some of the existing tests of parallel vacuum. Reported-by: Tushar Ahuja Author: Justin Pryzby, Amit Kapila Reviewed-by: Sawada Masahiko, Michael Paquier, Mahendra Singh Thalor and Amit Kapila Discussion: https://postgr.es/m/58c8d171-e665-6fa3-a9d3-d9423b694dae%40enterprisedb.com https://git.postgresql.org/pg/commitdiff/24d2d38b1eb86c0b410ad0f07f66566a83c6f05c Robert Haas pushed: - Rename pg_validatebackup to pg_verifybackup some more. The previous commit missed an instance. Noriyoshi Shinoda Discussion: http://postgr.es/m/TU4PR8401MB115291AE850BA7CF1AEB2F0BEEDD0@TU4PR8401MB1152.NAMPRD84.PROD.OUTLOOK.COM https://git.postgresql.org/pg/commitdiff/7a6b017b34783eb7ee4e93f93a52bde2bb017c8c - Document the backup manifest file format. Patch by me, at the request of Andres Freund. Reviewed by Justin Pryzby, Erik Rijkers, Álvaro Herrera, and Andrew Dunstan. Discussion: http://postgr.es/m/20200327203225.hcm6ag4grwsiruea@alap3.anarazel.de https://git.postgresql.org/pg/commitdiff/149f2ae88ab0510be3239caf45699d7373f2c6e8 Andrew Dunstan pushed: - Print policy name in perlcritic messages. This makes it easier to do a web search for details of the policy that's been violated, as well as displaying the name that might be needed for a policy override. Various perlcritic settings changes are being discussed, but this one should be uncontroversial. https://git.postgresql.org/pg/commitdiff/8930e43ecd3f683c457865131d7a932401a2188f - Use perl warnings pragma consistently. We've had a mixture of the warnings pragma, the -w switch on the shebang line, and no warnings at all. This patch removes the -w swicth and add the warnings pragma to all perl sources missing it. It raises the severity of the TestingAndDebugging::RequireUseWarnings perlcritic policy to level 5, so that we catch any future violations. Discussion: https://postgr.es/m/20200412074245.GB623763@rfd.leadboat.com https://git.postgresql.org/pg/commitdiff/7be5d8df1f74b78620167d3abf32ee607e728919 - Use perl's $/ more idiomatically. This replaces a few occurrences of ugly code with a more clean and idiomatic usage. The problem was highlighted by perlcritic, but we're not enforcing the policy that led to the discovery. Discussion: https://postgr.es/m/20200412074245.GB623763@rfd.leadboat.com https://git.postgresql.org/pg/commitdiff/8f00d84afc0dad577b65df5a313e5306cee3d11f - Set Perl search path more idiomatically. Back in commits 1df92eeafe, f884a96819, and 592123efbb I used some hackish code to set the script search path, unaware despite decades of perl that there was a completely standard way to do this. This patch changes those cases to use the standard perl FindBin package. https://git.postgresql.org/pg/commitdiff/e60c6f6ea17b50833242653fe2781f6d47429540 - Stop requiring an explicit return from perl subroutines. The consensus of the project appears to be that this provides little benefit and is simply an annoyance. Discussion: https://postgr.es/m/27481.1586618092@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/0516f94d18c57cc5dce72ff8fb84a05d24a67063 - Only provide new libpq sslpasskey hook for openssl-enabled builds. In commit 4dc6355210 I neglected to put #ifdef USE_OPENSSL around the declarations of the new items. This is remedied here. Per complaint from Daniel Gustafsson. https://git.postgresql.org/pg/commitdiff/9e24109f1a4e4d8d1d372b004d6a0dd06e673fe7 - Use a slightly more liberal regex to detect Visual Studio version. Apparently in some language versions of Visual Studio nmake outputs some material after the version number and before the end of the line. This has been seen in Chinese versions. Therefore, we no longer demand that the version string comes at the end of a line. Per complaint from Cuiping Lin. Backpatch to all live branches. https://git.postgresql.org/pg/commitdiff/a9659fb65497af8d2db66101f2ff7233d02997f1 - Only provide openssl_tls_init_hook if building with openssl. This should have been protected by #ifdef USE_OPENSSL in commit 896fcdb230. Per the real complaint this time from Daniel Gustafsson. https://git.postgresql.org/pg/commitdiff/f342d7ad03e61a1cea0339cf0c5aea0d01c3b43e - Revert "Only provide new libpq sslpasskey hook for openssl-enabled builds". This reverts commit 9e24109f1a4e4d8d1d372b004d6a0dd06e673fe7. This caused build errors when building without openssl, and it's simplest just to revert it. https://git.postgresql.org/pg/commitdiff/6741cfa5964768279a13e01e46931664fe0903a4 Peter Geoghegan pushed: - Harmonize nbtree page split point code. An nbtree split point can be thought of as a point between two adjoining tuples from an imaginary version of the page being split that includes the incoming/new item (in addition to the items that really are on the page). These adjoining tuples are called the lastleft and firstright tuples. The variables that represent split points contained a field called firstright, which is an offset number of the first data item from the original page that goes on the new right page. The corresponding tuple from origpage was usually the same thing as the actual firstright tuple, but not always: the firstright tuple is sometimes the new/incoming item instead. This situation seems unnecessarily confusing. Make things clearer by renaming the origpage offset returned by _bt_findsplitloc() to "firstrightoff". We now have a firstright tuple and a firstrightoff offset number which are comparable to the newitem/lastleft tuples and the newitemoff/lastleftoff offset numbers respectively. Also make sure that we are consistent about how we describe nbtree page split point state. Push the responsibility for dealing with pg_upgrade'd !heapkeyspace indexes down to lower level code, relieving _bt_split() from dealing with it directly. This means that we always have a palloc'd left page high key on the leaf level, no matter what. This enables simplifying some of the code (and code comments) within _bt_split(). Finally, restructure the page split code to make it clearer why suffix truncation (which only takes place during leaf page splits) is completely different to the first data item truncation that takes place during internal page splits. Tuples are marked as having fewer attributes stored in both cases, and the firstright tuple is truncated in both cases, so it's easy to imagine somebody missing the distinction. https://git.postgresql.org/pg/commitdiff/bc3087b626d1073c9b7c9687b334785909ca2237 - Make _bt_insertonpg() more like _bt_split(). It seems like a good idea for nbtree's retail insert code to be absolutely consistent with nbtree's page split code for anything that naturally requires equivalent handling. Anything that concerns inserting newitem (which is handled as part of the page split atomic action when a page split is required) should work in exactly the same way. With that in mind, make _bt_insertonpg() handle 'cbuf' in a way that matches _bt_split(). https://git.postgresql.org/pg/commitdiff/826ee1a019127d611bb0fd22ca878142bfb077ac - Add defensive "split_only_page" nbtree assertion. Clearly it's not okay for nbtree to split a page that is the only page on its level, and then find that it has to split the parent one level up in turn. There is simply no code to handle the split_only_page case in the _bt_insertonpg() "newitem won't fit" branch (only the "newitem fits" branch handles split_only_page). Add a defensive assertion that will fail if a split_only_page call to _bt_insertonpg() somehow ends up splitting the target/parent page. I (pgeoghegan) believe that we don't need split_only_page handling for the "newitem won't fit" branch because anybody calling _bt_insertonpg() like this would have to hold a lock on the same one and only child page. https://git.postgresql.org/pg/commitdiff/f762b2feba276a627585cb7e834fb7a1bf4c549d - Rearrange _bt_insertonpg() "update metapage" code. Nest the "update metapage as part of insert into root-like page" branch inside the broader "insert into internal page" branch. This improves readability. https://git.postgresql.org/pg/commitdiff/80634e3b181562015762b5846583ff67f8037a80 - Remove obsolete "hole in center of page" comment. A comment from the Berkeley days incorrectly claimed that the page management code cares about the contents of the hole in the center of the page (at least in the case of the left half of an nbtree page split). Commit 8fa30f906be added an addendum that stated that the original comment was "probably obsolete". It's definitely obsolete, though, so remove the original comment plus the addendum. https://git.postgresql.org/pg/commitdiff/4a05a6409567719829ec84d7689b41c55009d75f - Slightly simplify nbtree split point choice loop. Spotted during post-commit review of the nbtree deduplication commit (commit 0d861bbb). https://git.postgresql.org/pg/commitdiff/f0ca378d4c139eda99ef14998115c1674dac3fc5 Álvaro Herrera pushed: - Silence Perl warning. Now that warnings are enabled across the board, this code that tries to print an undef variable emits one. Silently printing the empty string achieves the previous behavior. Author: Álvaro Herrera <alvherre@alvh.no-ip.org> Reviewed-by: Andrew Dunstan <andrew.dunstan@2ndquadrant.com> Discussion: https://postgr.es/m/E1jO1VT-0008Qk-TM@gemulon.postgresql.org https://git.postgresql.org/pg/commitdiff/e56d717d8a23c48e4ab27b6bd6815c50dc3a378a Noah Misch pushed: - Add a wait_for_catchup() before immediate stop of a test master. Per buildfarm member hoverfly, a slow walsender could make the test fail. Back-patch to v10, where the test was introduced. Discussion: https://postgr.es/m/20200414013849.GA886648@rfd.leadboat.com https://git.postgresql.org/pg/commitdiff/d60cfb6bf2b4812e97271e7b5ba3ad4713406b9d Michaël Paquier pushed: - Fix collection of typos and grammar mistakes in the tree, volume 2. This fixes some comments and documentation new as of Postgres 13, and is a follow-up of the work done in dd0f37e. Author: Justin Pryzby Discussion: https://postgr.es/m/20200408165653.GF2228@telsasoft.com https://git.postgresql.org/pg/commitdiff/8128b0c152a67917535f50738ac26da4f984ddd9 - Fix minor memory leak in pg_dump. A query used to read default ACL information from the catalogs did not free a set of PQExpBuffer. Oversight in commit e2090d9, so backpatch down to 9.6. Author: Jie Zhang Reviewed-by: Sawada Masahiko Discussion: https://postgr.es/m/05bcbc5857f948efa0b451b85a48ae10@G08CNEXMBPEKD06.g08.fujitsu.local Backpatch-through: 9.6 https://git.postgresql.org/pg/commitdiff/8f4ee44bcdbcd437f860f2d048125a118335b088 - Disable silently generation of manifests with servers <= 12 in pg_basebackup. Since 0d8c9c1, pg_basebackup would generate an error if connected to a backend version older than 12 where backup manifests are not supported. Avoiding this error is possible by using the --no-manifest option. This error handling could be confusing for some users, where patching a backup script that interacts with multiple backend versions would cause the addition of --no-manifest to potentially not generate a backup manifest even for Postgres 13 and newer versions. As we want to encourage the use of backup manifests as much as possible, this commit silently disables manifests where not supported, instead of generating an error. While on it, rework a bit the code to make it more consistent with the surroundings when generating the BASE_BACKUP command. Per discussion with Andres Freund, Stephen Frost, Robert Haas, Álvaro Herrera, Kyotaro Horiguchi, Tom Lane, David Steele, and me. Author: Michael Paquier Discussion: https://postgr.es/m/20200410080910.GZ1606@paquier.xyz https://git.postgresql.org/pg/commitdiff/542d7817f774ea9d94798eb95cdf250d4f1527d9 - Fix minor memory leak in pg_basebackup and pg_receivewal. The result of the query used to retrieve the WAL segment size from the backend was not getting freed in two code paths. Both pg_basebackup and pg_receivewal exit immediately if a failure happened on this query, so this was not an actual problem, but it could be an issue if this code gets used for other tools in different ways, be they future tools in this code tree or external, existing, ones. Oversight in commit fc49e24, so backpatch down to 11. Author: Jie Zhang Discussion: https://postgr.es/m/970ad9508461469b9450b64027842331@G08CNEXMBPEKD06.g08.fujitsu.local Backpatch-through: 11 https://git.postgresql.org/pg/commitdiff/198efe774b0d2065d828cf7822376a2871c671fc Fujii Masao pushed: - Code review for backup manifest. This commit prevents pg_basebackup from receiving backup_manifest file when --no-manifest is specified. Previously, when pg_basebackup was writing a tarfile to stdout, it tried to receive backup_manifest file even when --no-manifest was specified, and reported an error. Also remove unused -m option from pg_basebackup. Also fix typo in BASE_BACKUP command documentation. Author: Fujii Masao Reviewed-by: Michael Paquier, Robert Haas Discussion: https://postgr.es/m/01e3ed3a-8729-5aaa-ca84-e60e3ca59db8@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/a2ac73e7be7adf2a9248d14322d3a5e055ea4fd0 - Add index term for backup manifest in documentation. Author: Fujii Masao Reviewed-by: Robert Haas Discussion: https://postgr.es/m/951743d0-fd7e-8e2b-d489-1368a58b7304@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/4db819ba403901d38c4e4328883412c59061bb58 David Rowley pushed: - Remove unneeded constraint dependency tracking. It was previously thought that remove_useless_groupby_columns() needed to keep track of which constraints the generated plan depended upon, however, this is unnecessary. The confusion likely arose regarding this because of check_functional_grouping(), which does need to track the dependency to ensure VIEWs with columns which are functionally dependant on the GROUP BY remain so. For remove_useless_groupby_columns(), cached plans will just become invalidated when the primary key's underlying index is removed through the normal relcache invalidation code. Here we just remove the unneeded code which records the dependency and updates the comments. The previous comments claimed that we could not use UNIQUE constraints for the same optimization due to lack of a pg_constraint record for NOT NULL constraints (which are required because NULLs can be duplicated in a unique index). Since we don't actually need a pg_constraint record to handle the invalidation, it looks like we could add code to do this in the future. But not today. We're not really fixing any bug in the code here, this fix is just to set the record straight on UNIQUE constraints. This code was added back in 9.6, but due to lack of any bug, we'll not be backpatching this. Reviewed-by: Tom Lane Discussion: https://postgr.es/m/CAApHDvrdYa=VhOoMe4ZZjZ-G4ALnD-xuAeUNCRTL+PYMVN8OnQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/5b736e9cf95793ca6a4c00d291a06dfe3559c8ec - Fix possible crash with GENERATED ALWAYS columns. In some corner cases, this could also lead to corrupted values being included in the tuple. Users who are concerned that they are affected by this should first upgrade and then perform a base backup of their database and restore onto an off-line server. They should then query each table with generated columns to ensure there are no rows where the generated expression does not match a newly calculated version of the GENERATED ALWAYS expression. If no crashes occur and no rows are returned then you're not affected. Fixes bug #16369. Reported-by: Cameron Ezell Discussion: https://postgr.es/m/16369-5845a6f1bef59884@postgresql.org Backpatch-through: 12 (where GENERATED ALWAYS columns were added.) https://git.postgresql.org/pg/commitdiff/3cb02e307e350caf3c9099c6f661a95fd00e7e4c == Pending Patches == Yugo Nagata sent in another revision of a patch to implement incremental maintenance of materialized views. Fabien COELHO sent in another revision of a patch to pgbench to enable testing whether a variable exists. Zeng Wenjing sent in another revision of a patch to implement global temporary tables. Peter Eisentraut sent in a patch to improve the error messages about mismatching relkind. Julien Rouhaud and Amit Kapila traded patches to fix up the WAL usage calculation patch. David Rowley and Andy Fan traded patches to introduce UniqueKeys to determine RelOptInfo unique properties, and use same to skip DISTINCT / GROUP BY if the input is already unique. Asif Rehman sent in two more revisions of a patch to implement parallel basebackup. Dilip Kumar sent in two more revisions of a patch to fix an infelicity between logical_work_mem and logical streaming of large in-progress transactions. Davinder Singh, Juan José Santamaría Flecha, Amit Kapila, and Ranier Vilela traded patches to fix a compilation error with Microsoft Visual Studio 2015/2017/2019. Mark Dilger sent in a patch to add HeapFile related perl modules. Andrey Borodin and Magnus Hagander traded patches to allow pg_read_all_stats to read pg_stat_progress_*. Thomas Munro sent in a patch to implement snapshot_too_old using a timer. Kyotaro HORIGUCHI sent in a patch to pg restore to handle cfclose error properly. Cary Huang sent in another revision of a patch to support sequences in logical replication. Dilip Kumar sent in a patch to fix an issue with REPLICA IDENTITY FULL. Richard Guo sent in a patch to fix an incremental sort crash found by sqlsmith. Robert Haas and Thomas Munro traded patches to fix old_snapshot_threshold's time->xid mapping. Ranier Vilela sent in a patch to nbtree to avert some some unneeded calls and set vars. Ranier Vilela sent in a patch to fix a possible overflow on tuplesort.c. Amit Langote sent in a patch to avoid partial nested append, which could break run-time partition pruning. Peter Eisentraut sent in a patch to make pgstattuple_approx accept TOAST tables. Masahiko Sawada sent in a patch to fix an error in pg_dump involving generated columns. Amit Langote sent in a patch to rearrange some code in pgoutput.c, and fix some partition logical replication TAP tests for better coverage. Nikita Glukhov sent in a patch to return FALSE instead of NULL in jsonpath operators. Kyotaro HORIGUCHI sent in a patch to fix an aclchk cacheref leak. Masahiro Ikeda sent in a patch to fix the documentation about the way to exit standby mode. Peter Geoghegan sent in a patch to redefine split interval to be space-wise. Thomas Munro sent in a patch to rename xid to xid4. Pavel Stěhule sent in two revisions of a patch to implement a string_to_table() function. Thomas Munro sent in two revisions of a patch to expose oldSnapshotControl, add a time->xid mapping to contrib/old_snapshot, fix some bugs in MaintainOldSnapshotTimeMapping, add a pg_clobber_current_snapshot_timestamp(), and truncate old snapshot XIDs before truncating CLOG. Noah Misch sent in a patch to revert "When WalSndCaughtUp, sleep only in WalSndWaitForWal(). Robert Haas sent in a patch to move the server's backup manifest code to a separate file. Justin Pryzby sent in two revisions of a patch to fix explain output for incremental sort, and fix some comment typos in same. James Coleman sent in a patch to disable mark/restore for incremental sort, and fix up EXEC_FLAG_REWIND for incremental sort. Pavel Stěhule sent in a patch to make it possible to use a pager for psql's \watch command. Justin Pryzby sent in three more revisions of a patch to fix detaching tables with inherited row triggers. Ranier Vilela sent in a patch to remove a few unneeded uses of strlen(). Jeff Davis sent in a patch to fix a performance regression related to FORTIFY_SOURCE.
pgsql-announce by date: