Обсуждение: [ANNOUNCE] == PostgreSQL Weekly News - October 15 2017 ==

Поиск
Список
Период
Сортировка

[ANNOUNCE] == PostgreSQL Weekly News - October 15 2017 ==

От
David Fetter
Дата:
== PostgreSQL Weekly News - October 15 2017 ==

PGConf APAC 2018 will be held in Singapore March 22-24, 2018.  The CfP is open
at http://2018.pgconfapac.org/cfp through December 4, 2017.
http://2018.pgconfapac.org/

PGDAY Brasilia 2017 will take place December 2, 2017.  The CfP
is open at 
http://www.pgdaybrasilia.com.br/submissao-de-palestra/

== PostgreSQL Product News ==

psqlODBC 10.00.0000 released.
https://odbc.postgresql.org/docs/release.html

Ajqvue Version 1.15, a java-based UI which supports PostgreSQL, released.
http://ajqvue.com

pglogical 2.1, a logical-WAL-based replication system for PostgreSQL, released.
https://www.2ndquadrant.com/en/resources/pglogical/

repmgr 4.0 beta1, a replication manager for PostgreSQL, released.
http://repmgr.org/release-notes-4.0beta1.html

pg_repack 1.4.2, an extension for removing bloat, released.
http://reorg.github.io/pg_repack/

sql_insert_writer v0.1.0, a Python3 utility to build legible skeletons for
INSERT and INSERT FROM statements, released.
https://github.com/18F/sql_insert_writer

== PostgreSQL Jobs for October ==

http://archives.postgresql.org/pgsql-jobs/2017-10/

== PostgreSQL Local ==

PostgreSQL Conference Europe 2017 will be held on October 24-27, 2017 in the
Warsaw Marriott Hotel, in Warsaw, Poland.
https://2017.pgconf.eu/

pgday.Seoul 2017 will be held in Seoul, South Korea on November 4, 2017.
Korean language information is here:
                               
 
http://pgday.postgresql.kr/

2ndQuadrant PostgreSQL Conference 2017 (2Q PGConf, for short) will be hosted on
November 6th & 7th in New York City, and November 9th in Chicago.
http://www.2qpgconf.com/

PGConf Local: Seattle will be held November 13 - 14, 2017.
https://www.pgconf.us/#Seattle2017

PGDay Australia 2017 will be held on November 17 in Melbourne.
http://2017.pgday.com.au/

PostgreSQL Session will take place November 17th, 2017, in Paris, France.  
http://www.postgresql-sessions.org/en/9/start

PGConf Local: Austin will be held December 4 - 5, 2017. Call for Papers is
now open at https://www.pgconf.us/conferences/Austin2017

PGConf.ASIA 2017 will take place on December 4-6 2017 in Akihabara, Tokyo,
Japan.
http://www.pgconf.asia/EN/2017/

PGConf India 2018 will be on February 22-23, 2018 in Bengaluru, Karnataka.
Proposals are due via https://goo.gl/forms/F9hRjOIsaNasVOAz2 by October 31st, 2017.
http://pgconf.in/

PostgreSQL@SCaLE is a two day, two track event which takes place on
March 8-9, 2018, at Pasadena Convention Center, as part of SCaLE 16X.
The CfP is open through October 31, 2017 at
http://www.socallinuxexpo.org/scale/16x/cfp

== 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 EST5EDT.  Please send English
language ones to david@fetter.org, German language to pwn@pgug.de, Italian
language to pwn@itpug.org.

== Applied Patches ==

Andres Freund pushed:

- Reduce memory usage of targetlist SRFs.  Previously nodeProjectSet only released memory once per input tuple, rather
thanonce per returned tuple. If the computation of an individual returned tuple requires a lot of memory, that can lead
toproblems.  Instead change things so that the expression context can be reset once per output tuple, which requires a
newmemory context to store SRF arguments in.  This is a longstanding issue, but was hard to fix before 9.6, due to the
waytSRFs where evaluated. But it's fairly easy to fix now. We could backpatch this into 10, but given there've been
fewcomplaints that doesn't seem worth the risk so far.  Reported-By: Lucas Fairchild Author: Andres Freund, per
discussionwith Tom Lane Discussion: https://postgr.es/m/4514.1507318623@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/84ad4b036d975ad1be0f52251bac3a06463c9811

- Fix pnstrdup() to not memcpy() the maximum allowed length.  The previous behaviour was dangerous if the length passed
wasn'tthe size of the underlying buffer, but the maximum size of the underlying buffer.  Author: Andres Freund
Discussion:https://postgr.es/m/20161003215524.mwz5p45pcverrkyk@alap3.anarazel.de
https://git.postgresql.org/pg/commitdiff/82c117cb90e6b6b79f06d61eb1ddf06e94e75b60

- Rewrite strnlen replacement implementation from 8a241792f96.  The previous placement of the fallback implementation
inlibpgcommon was problematic, because libpqport functions need strnlen functionality.  Move replacement into
libpgport.Provide strnlen() under its posix name, instead of pg_strnlen(). Fix stupid configure bug, executing the test
onlywhen compiled with threading support.  Author: Andres Freund Discussion:
https://postgr.es/m/E1e1gR2-0005fB-SI@gemulon.postgresql.org
https://git.postgresql.org/pg/commitdiff/fffd651e83ccbd6191a76be6ec7c6b1b27888fde

- Prevent idle in transaction session timeout from sometimes being ignored.  The previous coding in ProcessInterrupts()
couldlead to idle_in_transaction_session_timeout being ignored, when statement_timeout occurred earlier.  The problem
wasthat ProcessInterrupts() would return before processing the transaction timeout if QueryCancelPending was set while
QueryCancelHoldoffCount!= 0 - which is the case when reading new commands from the client. Ergo when the idle
transactiontimeout would hit.  Fix that by removing the early return. Alternatively the transaction timeout code could
havebeen moved up, but that early return seems like an issue that could hit other cases too.  Author: Lukas Fittl Bug:
#14821Discussion: https://www.postgresql.org/message-id/20170921010956.17345.61461%40wrigleys.postgresql.org
https://www.postgresql.org/message-id/CAP53PkxQnv3OWJpyNPGJYT62uY=n1=2CF_Lpc6gVOFnc0-gazw@mail.gmail.comBackpatch:
9.6-,where idle_in_transaction_session_timeout was introduced.
https://git.postgresql.org/pg/commitdiff/f676616651c83b14e1d879fbfabdd3ab2dc70bbe

- Add more efficient functions to pqformat API.  There's three prongs to achieve greater efficiency here: 1) Allow
reusinga stringbuffer across pq_beginmessage/endmessage, with the new pq_beginmessage_reuse/endmessage_reuse. This can
bebeneficial both because it avoids allocating the initial buffer, and because it's more likely to already have an
correctlysized buffer.  2) Replacing pq_sendint() with pq_sendint$width() inline functions. Previously unnecessary and
unpredictablebranches in pq_sendint() were needed. Additionally the replacement functions are implemented more
efficiently. pq_sendint is now deprecated, a separate commit will convert all in-tree callers.  3) Add
pq_writeint$width(),pq_writestring(). These rely on sufficient space in the StringInfo's buffer, avoiding individual
spacechecks & potential individual resizing.  To allow this to be used for strings, expose mbutil.c's
MAX_CONVERSION_GROWTH.Followup commits will make use of these facilities.  Author: Andres Freund Discussion:
https://postgr.es/m/20170914063418.sckdzgjfrsbekae4@alap3.anarazel.de
https://git.postgresql.org/pg/commitdiff/1de09ad8eb1fa673ee7899d6dfbb2b49ba204818

- Allow to avoid NUL-byte management for stringinfos and use in format.c.  In a lot of the places having
appendBinaryStringInfo()maintain a trailing NUL byte wasn't actually meaningful, e.g. when appending an integer which
cancontain 0 in one of its bytes.  Removing this yields some small speedup, but more importantly will be more
consistentwhen providing faster variants of pq_sendint etc.  Author: Andres Freund Discussion:
https://postgr.es/m/20170914063418.sckdzgjfrsbekae4@alap3.anarazel.de
https://git.postgresql.org/pg/commitdiff/70c2d1be2b1e1efa8ef38a92b443fa290a9558dd

- Use one stringbuffer for all rows printed in printtup.c.  This avoids newly allocating, and then possibly growing,
thestringbuffer for every row. For wide rows this can substantially reduce memory allocator overhead, at the price of
notimmediately reducing memory usage after outputting an especially wide row.  Author: Andres Freund Discussion:
https://postgr.es/m/20170914063418.sckdzgjfrsbekae4@alap3.anarazel.de
https://git.postgresql.org/pg/commitdiff/f2dec34e19d3969ddd616e671fe9a7b968bec812

- Work around overly strict restrict checks by MSVC.  Apparently MSVC requires a * before a restrict in a variable
declaration,even if the adorned type already is a pointer, just via typedef.  As reported by buildfarm animal
woodlouse. Author: Andres Freund Discussion: https://postgr.es/m/20171012001320.4putagiruuehtvb6@alap3.anarazel.de
https://git.postgresql.org/pg/commitdiff/060b069984a69ff0255ce318f10681c553613bef

- Temporary attempt at a workaround for further MSVC restrict build failures. It appears some versions of msvc use
__declspec(restrict)in stdlib.h and subsidiary headers. Including those after defining 'restrict' to '__restrict'
doesn'twork.  Try to get the buildfarm green to see whether there's further problems, by including stdlib.h just before
saiddefine. https://git.postgresql.org/pg/commitdiff/36b4b91ba07843406d5a30106facb59d8275c6de
 

- Replace remaining uses of pq_sendint with pq_sendint{8,16,32}.  pq_sendint() remains, so extension code doesn't
unnecessarilybreak.  Author: Andres Freund Discussion:
https://postgr.es/m/20170914063418.sckdzgjfrsbekae4@alap3.anarazel.de
https://git.postgresql.org/pg/commitdiff/31079a4a8e66e56e48bad94d380fa6224e9ffa0d

- Add configure infrastructure to detect support for C99's restrict.  Will be used in later commits improving
performancefor a few key routines where information about aliasing allows for significantly better code generation.
Thisallows to use the C99 'restrict' keyword without breaking C89, or for that matter C++, compilers. If not supported
it'sdefined to be empty. Author: Andres Freund Discussion:
https://postgr.es/m/20170914063418.sckdzgjfrsbekae4@alap3.anarazel.de
https://git.postgresql.org/pg/commitdiff/0b974dba2d6b5581ce422ed883209de46f313fb6

- Use C99 restrict via pg_restrict, rather than restrict directly. Unfortunately using 'restrict' plainly causes
problemswith MSVC, which supports restrict only as '__restrict'. Defining 'restrict' to '__restrict' unfortunately
causesa conflict with MSVC's usage of __declspec(restrict) in headers.  Therefore define pg_restrict to the appropriate
keywordinstead, and replace existing usages.  This replaces the temporary workaround introduced in 36b4b91ba078.
Author:Andres Freund Discussion: https://postgr.es/m/2656.1507830907@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/91d5f1a4a3e8aea2a6488243bac55806160408fb

- Improve performance of SendRowDescriptionMessage.

There's three categories of changes leading to better performance:
- Splitting the per-attribute part of SendRowDescriptionMessage into a v2 and a v3 version allows avoiding branches for
everyattribute.
 
- Preallocating the size of the buffer to be big enough for all attributes and then using pq_write* avoids unnecessary
buffersize checks & resizing.
 
- Reusing a persistently allocated StringInfo for all. SendRowDescriptionMessage() invocations avoids repeated
allocations& reallocations.  Author: Andres Freund Discussion:
https://postgr.es/m/20170914063418.sckdzgjfrsbekae4@alap3.anarazel.de
https://git.postgresql.org/pg/commitdiff/4c119fbcd49ba882791c7b99a1e934b985468e9f

- Force "restrict" not to be used when compiling with xlc.  Per buildfarm animal Hornet and followup manual testing by
NoahMisch, it appears xlc miscompiles code using "restrict" in at least some cases. Allow disabling restrict usage with
FORCE_DISABLE_RESTRICT=yesin template files, and do so for aix/xlc. Author: Andres Freund and Tom Lane Discussion:
https://postgr.es/m/1820.1507918762@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/d133982d598c7e6208d16cb4fc0b552151796603

- Improve sys/catcache performance.  The following are the individual improvements: 1) Avoidance of FunctionCallInfo
basedfunction calls, replaced by more efficient functions with a native C argument interface.  2) Don't extract columns
froma cache entry's tuple whenever matching entries - instead store them as a Datum array. This also allows to get rid
ofhaving to build dummy tuples for negative & list entries, and of a hack for dealing with cstring vs. text weirdness.
3)Reorder members of catcache.h struct, so imortant entries are more likely to be on one cacheline.  4) Allowing the
compilerto specialize critical SearchCatCache for a specific number of attributes allows to unroll loops and avoid
othernkeys dependant initialization.  5) Only initializing the ScanKey when necessary, i.e. catcache misses, greatly
reducescache unnecessary cpu cache misses.  6) Split of the cache-miss case from the hash lookup, reducing stack
allocationsetc in the common case.  7) CatCTup and their corresponding heaptuple are allocated in one piece.  This
resultsin making cache lookups themselves roughly three times as fast - full-system benchmarks obviously improve less
thanthat.  I've also evaluated further techniques: - replace open coded hash with simplehash - the list walk right now
showsup in profiles. Unfortunately it's not easy to do so safely as an entry's memory location can change at various
times,which doesn't work well with the refcounting and cache invalidation.  - Cacheline-aligning CatCTup entries -
helpssome with performance, but the win isn't big and the code for it is ugly, because the tuples have to be freed as
well. - add more proper functions, rather than macros for SearchSysCacheCopyN etc., but right now they don't show up in
profiles. The reason the macro wrapper for syscache.c/h have to be changed, rather than just catcache, is that doing
otherwisewould require exposing the SysCache array to the outside. That might be a good idea anyway, but it's for
anotherday.  Author: Andres Freund Reviewed-By: Robert Haas Discussion:
https://postgr.es/m/20170914061207.zxotvyopetm7lrrp@alap3.anarazel.de
https://git.postgresql.org/pg/commitdiff/141fd1b66ce6e3d10518d66d4008bd368f1505fd
 

- Add pg_noinline macro to c.h.  Forcing a function not to be inlined can be useful if it's the slow-path of a
performancecritical function, or should be visible in profiles to allow for proper cost attribution.  Author: Andres
FreundDiscussion: https://postgr.es/m/20170914061207.zxotvyopetm7lrrp@alap3.anarazel.de
https://git.postgresql.org/pg/commitdiff/a0247e7a11bb9f5fd55694b594a3906b7bd05881

Peter Eisentraut pushed:

- Remove unused documentation file. https://git.postgresql.org/pg/commitdiff/71c75ddfbb277362bf62dc5b1645c3903e16bc34

- Use lower-case SGML attribute values.  for DocBook XML compatibility
https://git.postgresql.org/pg/commitdiff/44b3230e821e7a0cc4e9438d1c27305d533edacc

- Fix whitespace. https://git.postgresql.org/pg/commitdiff/e9e0f78bdeaee6e1e24544fd564cf0907f6a2134

- Improve LDAP cleanup code in error paths.  After calling ldap_unbind_s() we probably shouldn't try to use the LDAP
connectionagain to call ldap_get_option(), even if it failed.  The OpenLDAP man page for ldap_unbind[_s] says "Once it
iscalled, the connection to the LDAP server is closed, and the ld structure is invalid."  Otherwise, as a general rule
weshould probably call ldap_unbind() before returning in all paths to avoid leaking resources.  It is unlikely there is
anypractical leak problem since failure to authenticate currently results in the backend exiting soon afterwards.
Author:Thomas Munro Reviewed-By: Alvaro Herrera, Peter Eisentraut Discussion:
https://postgr.es/m/20170914141205.eup4kxzlkagtmfac%40alvherre.pgsql
https://git.postgresql.org/pg/commitdiff/1feff99fe4576d4685c14dff18d1f845a1456f10

- Attempt to fix LDAP build.  Apparently, an older spelling of LDAP_OPT_DIAGNOSTIC_MESSAGE is LDAP_OPT_ERROR_STRING, so
fallback to that one. https://git.postgresql.org/pg/commitdiff/7d1b8e7591690fb68cc53553e0f13b537b5455dc
 

- Log diagnostic messages if errors occur during LDAP auth.  Diagnostic messages seem likely to help users diagnose
rootcauses more easily, so let's report them as errdetail.  Author: Thomas Munro Reviewed-By: Ashutosh Bapat, Christoph
Berg,Alvaro Herrera, Peter Eisentraut Discussion:
https://postgr.es/m/CAEepm=2_dA-SYpFdmNVwvKsEBXOUj=K4ooKovHmvj6jnMdt8dw@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/cf1238cd9763f0a6e3454ddf75ac56ff722f18ee

- Reinstate genhtml --prefix option for non-vpath builds.  In c3d9a66024a93e6d0380bdd1b18cb03a67216b72, the genhtml
--prefixoption was removed to get slightly better behavior for vpath builds.  genhtml would then automatically pick a
suitableprefix.  However, for non-vpath builds, this makes the coverage output dependent on the length of the path
wherethe source code happens to be, leading to confusingly arbitrary results.  So put the --prefix option back for
non-vpathbuilds. https://git.postgresql.org/pg/commitdiff/5f340cb30ce2f0d9f272840b0d977b0a4b854f0b
 

- doc: Postgres -> PostgreSQL. https://git.postgresql.org/pg/commitdiff/d8794fd7c337a2285f46b23d348c9826afff69eb

Tom Lane pushed:

- Add missing clean step to src/test/modules/brin/Makefile.  I noticed the tmp_check subdirectory wasn't getting
cleanedup after a check-world run. Apparently pgxs.mk will only do this for you if you've defined REGRESS.  The only
othersrc/test/modules Makefile that does not set that is snapshot_too_old, and it does it like this.
https://git.postgresql.org/pg/commitdiff/fa5e119dc71ada8d023deadcb36dbfae328f8902

- Regenerate configure script.  Not sure how fffd651e83ccbd6191a76be6ec7c6b1b27888fde ended up probing for
"strnlenfrak"rather than "strnlen".  My autoconf doesn't do that ...
https://git.postgresql.org/pg/commitdiff/f4128ab466aac639387a5dade6647621c87bbb3f

- Fix low-probability loss of NOTIFY messages due to XID wraparound.  Up to now async.c has used
TransactionIdIsInProgress()to detect whether a notify message's source transaction is still running.  However, that
functionhas a quick-exit path that reports that XIDs before RecentXmin are no longer running.  If a listening backend
isdoing nothing but listening, and not running any queries, there is nothing that will advance its value of RecentXmin.
Once 2 billion transactions elapse, the RecentXmin check causes active transactions to be reported as not running.  If
theyaren't committed yet according to CLOG, async.c decides they aborted and discards their messages.  The timing for
thatis a bit tight but it can happen when multiple backends are sending notifies concurrently.  The net symptom
thereforeis that a sufficiently-long-surviving listen-only backend starts to miss some fraction of NOTIFY traffic, but
onlyunder heavy load.  The only function that updates RecentXmin is GetSnapshotData().  A brute-force fix would
thereforebe to take a snapshot before processing incoming notify messages.  But that would add cycles, as well as
contentionfor the ProcArrayLock.  We can be smarter: having taken the snapshot, let's use that to check for running
XIDs,and not call TransactionIdIsInProgress() at all.  In this way we reduce the number of ProcArrayLock acquisitions
fromone per message to one per notify interrupt; that's the same under light load but should be a benefit under heavy
load.Light testing says that this change is a wash performance-wise for normal loads.  I looked around for other
callersof TransactionIdIsInProgress() that might be at similar risk, and didn't find any; all of them are inside
transactionsthat presumably have already taken a snapshot.  Problem report and diagnosis by Marko Tiikkaja, patch by
me. Back-patch to all supported branches, since it's been like this since 9.0.  Discussion:
https://postgr.es/m/20170926182935.14128.65278@wrigleys.postgresql.org
https://git.postgresql.org/pg/commitdiff/118e99c3d71efbea85341697a447d84bbfb54f18

- Doc: fix missing explanation of default object privileges.  The GRANT reference page, which lists the default
privilegesfor new objects, failed to mention that USAGE is granted by default for data types and domains.  As a lesser
sin,it also did not specify anything about the initial privileges for sequences, FDWs, foreign servers, or large
objects. Fix that, and add a comment to acldefault() in the probably vain hope of getting people to maintain this list
infuture.  Noted by Laurenz Albe, though I editorialized on the wording a bit.  Back-patch to all supported branches,
sincethey all have this behavior.  Discussion: https://postgr.es/m/1507620895.4152.1.camel@cybertec.at
https://git.postgresql.org/pg/commitdiff/28605968322b70a7efe1cc89595d1cfc557d80b9

- Remove unnecessary PG_TRY overhead for CurrentResourceOwner changes. resowner/README contained advice to use a PG_TRY
blockto restore the old CurrentResourceOwner value anywhere that that variable is transiently changed. That advice was
onlyinconsistently followed, however, and on reflection it seems like unnecessary overhead.  We don't bother with such
aconvention for transient CurrentMemoryContext changes, on the grounds that any (sub)transaction abort will start out
byresetting CurrentMemoryContext to what it wants.  But the same is true of CurrentResourceOwner, so there seems no
needto treat it differently.  Hence, remove PG_TRY blocks that exist only to restore CurrentResourceOwner before
re-throwingthe error.  There are a couple of places that restore it along with some other actions, and I left those
alone;the restore is probably unnecessary but no noticeable gain will result from removing it.  Discussion:
https://postgr.es/m/5236.1507583529@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/5fa6b0d102eb8ccd15c4963ee9841baec50df45e

- Prevent sharing transition states between ordered-set aggregates.  This ought to work, but the built-in OSAs are not
capableof coping, because their final-functions destructively modify their transition state (specifically, the
containedtuplesort object).  That was fine when those functions were written, but commit 804163bc2 moved the goalposts
withouttelling orderedsetaggs.c.  We should fix the built-in OSAs to support this, but it will take a little work,
especiallyif we don't want to sacrifice performance in the normal non-shared-state case.  Given that it took a year
after9.6 release for anyone to notice this bug, we should not prioritize sharable-state over nonsharable-state
performance. And a proper fix is likely to be more complicated than we'd want to back-patch, too.  Therefore, let's
justput in this stop-gap patch to prevent nodeAgg.c from choosing to use shared state for OSAs.  We can revert it in
HEADwhen we get a better fix.  Report from Lukas Eder, diagnosis by me, patch by David Rowley.  Back-patch to 9.6 where
theproblem was introduced.  Discussion:
https://postgr.es/m/CAB4ELO5RZhOamuT9Xsf72ozbenDLLXZKSk07FiSVsuJNZB861A@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/52328727bea4d9f95af9622e4624b9d1492df88e

- Doc: fix typo in release notes.  Ioseph Kim Discussion:
https://postgr.es/m/e7a79f91-8244-5bcb-afcc-96c817e86f4e@postgresql.kr
https://git.postgresql.org/pg/commitdiff/0a047a1e3ef852884278b1324df73e359972c43a

- Add port/strnlen support to libpq and ecpg Makefiles.  In the wake of fffd651e8, any makefile that pulls in
snprintf.cfrom src/port/ needs to be prepared to pull in strnlen.c as well.  Per buildfarm.
https://git.postgresql.org/pg/commitdiff/46912d9b1504cfaede1b22811039028a75f76ab8

- Fix AggGetAggref() so it won't lie to aggregate final functions.  If we merge the transition calculations for two
differentaggregates, it's reasonable to assume that the transition function should not care which of those Aggref
structsit gets from AggGetAggref().  It is not reasonable to make the same assumption about an aggregate final
function,however.  Commit 804163bc2 broke this, as it will pass whichever Aggref was first associated with the
transitionstate in both cases.  This doesn't create an observable bug so far as the core system is concerned, because
theonly existing uses of AggGetAggref() are in ordered-set aggregates that happen to not pay attention to anything but
theinput properties of the Aggref; and besides that, we disabled sharing of transition calculations for OSAs yesterday.
Nonetheless, if some third-party code were using AggGetAggref() in a normal aggregate, they would be entitled to call
thisa bug.  Hence, back-patch the fix to 9.6 where the problem was introduced.  In passing, improve some of the
commentsabout transition state sharing.  Discussion:
https://postgr.es/m/CAB4ELO5RZhOamuT9Xsf72ozbenDLLXZKSk07FiSVsuJNZB861A@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/305cf1fd7239e0ffa9ae4ff54a7c66f36432c741

- Rely on sizeof(typename) rather than sizeof(variable) in pqformat.h.  In each of the pq_writeintN functions, the
threeuses of sizeof() should surely all be consistent.  I started out to make them all sizeof(ni), but on reflection
let'smake them sizeof(typename) instead.  That's more like our usual style elsewhere, and it's just barely possible
thatthe failures buildfarm member hornet has shown since 4c119fbcd went in are caused by the compiler getting confused
aboutsizeof() a parameter that it's optimizing away.  In passing, improve a couple of comments.  Discussion:
https://postgr.es/m/E1e2RML-0002do-Lc@gemulon.postgresql.org
https://git.postgresql.org/pg/commitdiff/5229db6c6f92515afcd698cf5d5badc12ffe6bc2

- Improve implementation of CRE-stack-flattening in map_variable_attnos().  I (tgl) objected to the obscure
implementationintroduced in commit 1c497fa72. This one seems a bit less action-at-a-distance-y, at the price of
repeatinga few lines of code.  Improve the comments about what the function is doing, too.  Amit Khandekar, whacked
arounda bit more by me Discussion:
https://postgr.es/m/CAJ3gD9egYTyHUH0nTMxm8-1m3RvdqEbaTyGC-CUNtYf7tKNDaQ@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/73937119bfd07a140da4817f5ca949351942ffdc

- Explicitly track whether aggregate final functions modify transition state. Up to now, there's been hard-wired
assumptionsthat normal aggregates' final functions never modify their transition states, while ordered-set aggregates'
finalfunctions always do.  This has always been a bit limiting, and in particular it's getting in the way of improving
thebuilt-in ordered-set aggregates to allow merging of transition states.  Therefore, let's introduce catalog and
CREATEAGGREGATE infrastructure that lets the finalfn's behavior be declared explicitly.  There are now three
possibilitiesfor the finalfn behavior: it's purely read-only, it trashes the transition state irrecoverably, or it
changesthe state in such a way that no more transfn calls are possible but the state can still be passed to other,
compatiblefinalfns.  There are no examples of this third case today, but we'll shortly make the built-in OSAs act like
that. This change allows user-defined aggregates to explicitly disclaim support for use as window functions, and/or to
preventtransition state merging, if their implementations cannot handle that.  While it was previously possible to
handlethe window case with a run-time error check, there was not any way to prevent transition state merging, which in
retrospectis something commit 804163bc2 should have provided for.  But better late than never.  In passing, split out
pg_aggregate.c'sextern function declarations into a new header file pg_aggregate_fn.h, similarly to what we've done for
someother catalog headers, so that pg_aggregate.h itself can be safe for frontend files to include.  This lets pg_dump
usethe symbolic names for relevant constants. Discussion: https://postgr.es/m/4834.1507849699@sss.pgh.pa.us
https://git.postgresql.org/pg/commitdiff/4de2d4fba38f4f7aff7f95401eb43a6cd05a6db4

- gcc's support for __attribute__((noinline)) hasn't been around forever. Buildfarm member gaur says it wasn't there in
2.95.3. Guess that 3.0 and later have it.
https://git.postgresql.org/pg/commitdiff/82aff8d3369754282114cb0fff92a342b2864e75

Robert Haas pushed:

- Fix mistakes in comments.  Masahiko Sawada Discussion:
http://postgr.es/m/CAD21AoBsfYsMHD6_SL9iN3n_Foaa+oPbL5jG55DxU1ChaujqwQ@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/20d210bf5bb0d5ae37c727d364cfd810c367704a

- pg_stat_statements: Widen query IDs from 32 bits to 64 bits.  This takes advantage of the infrastructure introduced
bycommit 81c5e46c490e2426db243eada186995da5bb0ba7 to greatly reduce the likelihood that two different queries will end
upwith the same query ID.  It's still possible, of course, but whereas before it the chances of a collision reached 25%
around50,000 queries, it will now take more than 3 billion queries. Backward incompatibility: Because the type exposed
atthe SQL level is int8, users may now see negative query IDs in the pg_stat_statements view (and also, query IDs more
than4 billion, which was the old limit).  Patch by me, reviewed by Michael Paquier and Peter Geoghegan.  Discussion:
http://postgr.es/m/CA+TgmobG_Kp4cBKFmsznUAaM1GWW6hhRNiZC0KjRMOOeYnz5Yw@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/cff440d368690f94fbda1a475277e90ea2263843

- Fix logical replication to fire BEFORE ROW DELETE triggers.  Before, that would fail to happen unless a BEFORE ROW
UPDATEtrigger was also present. Noted by me while reviewing a patch from Masahiko Sawada, who also wrote this patch.
Reviewedby Petr Jelinek.  Discussion:
http://postgr.es/m/CA+TgmobAZvCxduG8y_mQKBK7nz-vhbdLvjM354KEFozpuzMN5A@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/360fd1a7b2fe779cc9e696b813b12f6a8e83b558

- Synchronize error messages.  Commits 6476b26115f3ef25a9cd87880e0ac5ec5f7a05f6 and
14f67a8ee282ebc0de78e773fbd597f460ab4a54didn't use quite the same error message for what is basically the same
situation. Amit Langote, pared back a bit by me.  Discussion:
http://postgr.es/m/54dc76d0-3b5b-ba5a-27dc-fb31a3975b61@lab.ntt.co.jp
https://git.postgresql.org/pg/commitdiff/ad4a7ed0996ee044ee7291559deddf9842d8bbf7

- Use ResultRelInfo ** rather than ResultRelInfo * for tuple routing.  The previous convention doesn't lend itself to
creatingResultRelInfos lazily, as we already do in ExecGetTriggerResultRel.  This patch doesn't make anything lazier
thanbefore, but the pending patch for UPDATE tuple routing proposes to do so (and there might be other opportunities as
well). Amit Khandekar with some adjustments by me.  Discussion:
http://postgr.es/m/CA+TgmoYPVP9Lyf6vUFA5DwxS4c--x6LOj2y36BsJaYtp62eXPQ@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/60f7c0abef0327648c02795312d1679c66586fbb

- Avoid coercing a whole-row variable that is already coerced.  Marginal efficiency and beautification hack.  I'm not
surewhether this case ever arises currently, but the pending patch for update tuple routing will cause it to arise.
AmitKhandekar Discussion: http://postgr.es/m/CAJ3gD9cazfppe7-wwUbabPcQ4_0SubkiPFD1+0r5_DkVNWo5yg@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/1c497fa72df7593d8976653538da3d0ab033207f

- Fix possible crash with Parallel Bitmap Heap Scan.  If a Parallel Bitmap Heap scan's chain of leftmost descendents
includesa BitmapOr whose first child is a BitmapAnd, the prior coding would mistakenly create a non-shared TIDBitmap
andthen try to perform shared iteration.  Report by Tomas Vondra.  Patch by Dilip Kumar.  Discussion:
http://postgr.es/m/50e89684-8ad9-dead-8767-c9545bafd3b6@2ndquadrant.com
https://git.postgresql.org/pg/commitdiff/6393613b6a1e0feae3d22af608397b252cee5b58

Álvaro Herrera pushed:

- Infer functional dependency past RelabelType.  Vars hidden within a RelabelType would not be detected as compatible
withsome functional dependency.  Repair by properly ignoring the RelabelType.  Author: David Rowley Reviewed-by: Tomas
VondraDiscussion: https://postgr.es/m/CAKJS1f-y-UEy=rsBXynBOgiW1fKMr_LVoYSGL9QOc36mLEC-ww@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/e9ef11ac8bb2acc2d2462fc17ec3291a959589e7

Joe Conway pushed:

- Add missing options to pg_regress help() output.  A few command line options accepted by pg_regress were not being
outputby help(), including --help itself. Add that one, as well as --version and --bindir, and the corresponding short
optionsfor the first two.  We could consider this for backpatching, but it did not seem worthwhile and no one else
advocatedfor it, so apply only to master for now.  Author: Joe Conway Reviewed-By: Tom Lane Discussion:
https://postgr.es/m/dd519469-06d7-2662-83ef-c926f6c4f0f1%40joeconway.com
https://git.postgresql.org/pg/commitdiff/b81eba6a650186dc35b6a1fb8bde320d9c29055d

== Pending Patches ==

Nathan Bossart sent in another revision of a patch to add more logging to VACUUM
and ANALYZE.

Amul Sul sent in three more revisions of a patch to add hash partitioning.

Ashutosh Bapat sent in a patch to support partition-wise join for dummy
partitioned relation.

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

Jeevan Chalke sent in another revision of a patch to implement partition-wise
aggregation/grouping.

David Rowley sent in two revisions of a patch to remove left joins with a
DISTINCT clause, as the DISTINCT makes the LEFT JOIN redundant.

Julien Rouhaud and Thomas Munro traded patches to fix an oversight in
EphemeralNamedRelation support.

Rushabh Lathia sent in another revision of a patch to add parallel B-tree index
build sorting.

Michaël Paquier sent in another revision of a patch to refactor the routine to
test connection to an SSL server, support channel binding 'tls-unique' in SCRAM,
add connection parameters "saslname" and "saslchannelbinding", and implement
channel binding tls-server-end-point for SCRAM.

Masahiko Sawada and Aleksander Alekseev traded patches to ensure that updated
columns are not null in logical replication when they shouldn't be.

Laurenz Albe sent in a patch to document that PUBLIC has USAGE privileges on
newly created types.

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

Ashutosh Bapat sent in another revision of a patch to modify the bound
comparision functions to accept members of PartitionKey, add partition-wise join
for 1:1, 1:0, 0:1 partition matching, and add tests for same.

Yugo Nagata sent in a patch to implement lockable views.

Tom Lane sent in a patch to remove Windows warnings from VS 2017 by removing
MemSet.

Dilip Kumar sent in another revision of a patch to improve bitmap costing for
lossy pages.

Pavel Stěhule sent in another revision of a patch to PL/pgsql to allow forcing
either a generic or a custom plan.

Peter Eisentraut sent in a patch to replace GrantObjectType with ObjectType.

Jeevan Chalke sent in a patch to add a cost_append function which determines and
returns the cost of an Append node.

Amit Kapila sent in a patch to handle redundant ConvertRowtypeExpr nodes.

Álvaro Herrera sent in a patch to refactor the relkind check in DefineIndex from
an ugly rat's nest of 'if' statements to a switch statement.

Amit Kapila sent in a patch to fix parallel safety for extern params, fix simple
expr interaction gather, and fix parallel mode nested execution.

Tomas Vondra sent in a PoC patch to enable parallel execution for cursors
explicitly.

Pavel Stěhule sent in another revision of a patch to enable default namespaces
for XPath expressions.



-- 
Sent via pgsql-announce mailing list (pgsql-announce@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-announce