== PostgreSQL Weekly News - October 15 2017 ==

From: David Fetter <david(at)fetter(dot)org>
To: PostgreSQL Announce <pgsql-announce(at)postgresql(dot)org>
Subject: == PostgreSQL Weekly News - October 15 2017 ==
Date: 2017-10-15 17:35:16
Message-ID: 20171015173515.GA17626@fetter.org
Views: Raw Message | Whole Thread | Download mbox
Lists: pgsql-announce

== 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.

PGDAY Brasilia 2017 will take place December 2, 2017. The CfP
is open at

== PostgreSQL Product News ==

psqlODBC 10.00.0000 released.

Ajqvue Version 1.15, a java-based UI which supports PostgreSQL, released.

pglogical 2.1, a logical-WAL-based replication system for PostgreSQL, released.

repmgr 4.0 beta1, a replication manager for PostgreSQL, released.

pg_repack 1.4.2, an extension for removing bloat, released.

sql_insert_writer v0.1.0, a Python3 utility to build legible skeletons for
INSERT and INSERT FROM statements, released.

== PostgreSQL Jobs for October ==


== PostgreSQL Local ==

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

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

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

PGConf Local: Seattle will be held November 13 - 14, 2017.

PGDay Australia 2017 will be held on November 17 in Melbourne.

PostgreSQL Session will take place November 17th, 2017, in Paris, France.

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,

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.

PostgreSQL(at)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

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

== Applied Patches ==

Andres Freund pushed:

- Reduce memory usage of targetlist SRFs. Previously nodeProjectSet only
released memory once per input tuple, rather than once per returned tuple. If
the computation of an individual returned tuple requires a lot of memory, that
can lead to problems. Instead change things so that the expression context
can be reset once per output tuple, which requires a new memory context to
store SRF arguments in. This is a longstanding issue, but was hard to fix
before 9.6, due to the way tSRFs where evaluated. But it's fairly easy to fix
now. We could backpatch this into 10, but given there've been fewc omplaints
that doesn't seem worth the risk so far. Reported-By: Lucas Fairchild Author:
Andres Freund, per discussion with Tom Lane Discussion:

- Fix pnstrdup() to not memcpy() the maximum allowed length. The previous
behaviour was dangerous if the length passed wasn't the size of the underlying
buffer, but the maximum size of the underlying buffer. Author: Andres Freund

- Rewrite strnlen replacement implementation from 8a241792f96. The previous
placement of the fallback implementation in libpgcommon 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 only when compiled with threading
support. Author: Andres Freund Discussion:

- Prevent idle in transaction session timeout from sometimes being ignored. The
previous coding in ProcessInterrupts() could lead to
idle_in_transaction_session_timeout being ignored, when statement_timeout
occurred earlier. The problem was that 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 transaction timeout would hit. Fix that
by removing the early return. Alternatively the transaction timeout code could
have been moved up, but that early return seems like an issue that could hit
other cases too. Author: Lukas Fittl Bug: #14821 Discussion:
Backpatch: 9.6-, where idle_in_transaction_session_timeout was introduced.

- Add more efficient functions to pqformat API. There's three prongs to achieve
greater efficiency here: 1) Allow reusing a stringbuffer across
pq_beginmessage/endmessage, with the new
pq_beginmessage_reuse/endmessage_reuse. This can be beneficial both because it
avoids allocating the initial buffer, and because it's more likely to already
have an correctly sized buffer. 2) Replacing pq_sendint() with
pq_sendint$width() inline functions. Previously unnecessary and unpredictable
branches 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 space checks & 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

- 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 can contain 0
in one of its bytes. Removing this yields some small speedup, but more
importantly will be more consistent when providing faster variants of
pq_sendint etc. Author: Andres Freund Discussion:

- Use one stringbuffer for all rows printed in printtup.c. This avoids newly
allocating, and then possibly growing, the stringbuffer for every row. For
wide rows this can substantially reduce memory allocator overhead, at the
price of not immediately reducing memory usage after outputting an especially
wide row. Author: Andres Freund Discussion:

- 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:

- 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't work. Try to get the buildfarm green to see whether there's further
problems, by including stdlib.h just before said define.

- Replace remaining uses of pq_sendint with pq_sendint{8,16,32}. pq_sendint()
remains, so extension code doesn't unnecessarily break. Author: Andres Freund

- Add configure infrastructure to detect support for C99's restrict. Will be
used in later commits improving performance for a few key routines where
information about aliasing allows for significantly better code generation.
This allows to use the C99 'restrict' keyword without breaking C89, or for
that matter C++, compilers. If not supported it's defined to be empty.
Author: Andres Freund Discussion:

- Use C99 restrict via pg_restrict, rather than restrict directly.
Unfortunately using 'restrict' plainly causes problems with MSVC, which
supports restrict only as '__restrict'. Defining 'restrict' to '__restrict'
unfortunately causes a conflict with MSVC's usage of __declspec(restrict) in
headers. Therefore define pg_restrict to the appropriate keyword instead, and
replace existing usages. This replaces the temporary workaround introduced in
36b4b91ba078. Author: Andres Freund Discussion:

- 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 every attribute.
- Preallocating the size of the buffer to be big enough for all
attributes and then using pq_write* avoids unnecessary buffer
size checks & resizing.
- Reusing a persistently allocated StringInfo for all.
SendRowDescriptionMessage() invocations avoids repeated allocations &
reallocations. Author: Andres Freund Discussion:

- Force "restrict" not to be used when compiling with xlc. Per buildfarm animal
Hornet and followup manual testing by Noah Misch, it appears xlc miscompiles
code using "restrict" in at least some cases. Allow disabling restrict usage
with FORCE_DISABLE_RESTRICT=yes in template files, and do so for aix/xlc.
Author: Andres Freund and Tom Lane Discussion:

- Improve sys/catcache performance. The following are the individual
improvements: 1) Avoidance of FunctionCallInfo based function calls, replaced
by more efficient functions with a native C argument interface. 2) Don't
extract columns from a cache entry's tuple whenever matching entries - instead
store them as a Datum array. This also allows to get rid of having 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
compiler to specialize critical SearchCatCache for a specific number of
attributes allows to unroll loops and avoid other nkeys dependant
initialization. 5) Only initializing the ScanKey when necessary, i.e.
catcache misses, greatly reduces cache unnecessary cpu cache misses. 6) Split
of the cache-miss case from the hash lookup, reducing stack allocations etc in
the common case. 7) CatCTup and their corresponding heaptuple are allocated
in one piece. This results in making cache lookups themselves roughly three
times as fast - full-system benchmarks obviously improve less than that. I've
also evaluated further techniques: - replace open coded hash with simplehash -
the list walk right now shows up 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 - helps some 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 otherwise would require exposing the SysCache array to the outside.
That might be a good idea anyway, but it's for another day. Author: Andres
Freund Reviewed-By: Robert Haas Discussion:

- 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 performance critical function, or should be
visible in profiles to allow for proper cost attribution. Author: Andres
Freund Discussion:

Peter Eisentraut pushed:

- Remove unused documentation file.

- Use lower-case SGML attribute values. for DocBook XML compatibility

- Fix whitespace.

- Improve LDAP cleanup code in error paths. After calling ldap_unbind_s() we
probably shouldn't try to use the LDAP connection again to call
ldap_get_option(), even if it failed. The OpenLDAP man page for
ldap_unbind[_s] says "Once it is called, the connection to the LDAP server is
closed, and the ld structure is invalid." Otherwise, as a general rule we
should probably call ldap_unbind() before returning in all paths to avoid
leaking resources. It is unlikely there is any practical leak problem since
failure to authenticate currently results in the backend exiting soon
afterwards. Author: Thomas Munro Reviewed-By: Alvaro Herrera, Peter
Eisentraut Discussion:

- Attempt to fix LDAP build. Apparently, an older spelling of

- Log diagnostic messages if errors occur during LDAP auth. Diagnostic messages
seem likely to help users diagnose root causes more easily, so let's report
them as errdetail. Author: Thomas Munro Reviewed-By: Ashutosh Bapat,
Christoph Berg, Alvaro Herrera, Peter Eisentraut Discussion:

- Reinstate genhtml --prefix option for non-vpath builds. In
c3d9a66024a93e6d0380bdd1b18cb03a67216b72, the genhtml --prefix option was
removed to get slightly better behavior for vpath builds. genhtml would then
automatically pick a suitable prefix. However, for non-vpath builds, this
makes the coverage output dependent on the length of the path where the source
code happens to be, leading to confusingly arbitrary results. So put the
--prefix option back for non-vpath builds.

- doc: Postgres -> PostgreSQL.

Tom Lane pushed:

- Add missing clean step to src/test/modules/brin/Makefile. I noticed the
tmp_check subdirectory wasn't getting cleaned up after a check-world run.
Apparently pgxs.mk will only do this for you if you've defined REGRESS. The
only other src/test/modules Makefile that does not set that is
snapshot_too_old, and it does it like this.

- Regenerate configure script. Not sure how
fffd651e83ccbd6191a76be6ec7c6b1b27888fde ended up probing for "strnlenfrak"
rather than "strnlen". My autoconf doesn't do that ...

- 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 function has a
quick-exit path that reports that XIDs before RecentXmin are no longer
running. If a listening backend is doing 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 they aren't committed
yet according to CLOG, async.c decides they aborted and discards their
messages. The timing for that is a bit tight but it can happen when multiple
backends are sending notifies concurrently. The net symptom therefore is that
a sufficiently-long-surviving listen-only backend starts to miss some fraction
of NOTIFY traffic, but only under heavy load. The only function that updates
RecentXmin is GetSnapshotData(). A brute-force fix would therefore be to take
a snapshot before processing incoming notify messages. But that would add
cycles, as well as contention for 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 from one 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 callers of TransactionIdIsInProgress() that
might be at similar risk, and didn't find any; all of them are inside
transactions that 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:

- Doc: fix missing explanation of default object privileges. The GRANT
reference page, which lists the default privileges for 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 in future. Noted by Laurenz Albe, though I editorialized
on the wording a bit. Back-patch to all supported branches, since they all
have this behavior. Discussion:

- Remove unnecessary PG_TRY overhead for CurrentResourceOwner changes.
resowner/README contained advice to use a PG_TRY block to restore the old
CurrentResourceOwner value anywhere that that variable is transiently changed.
That advice was only inconsistently followed, however, and on reflection it
seems like unnecessary overhead. We don't bother with such a convention for
transient CurrentMemoryContext changes, on the grounds that any
(sub)transaction abort will start out by resetting CurrentMemoryContext to
what it wants. But the same is true of CurrentResourceOwner, so there seems
no need to treat it differently. Hence, remove PG_TRY blocks that exist only
to restore CurrentResourceOwner before re-throwing the 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:

- Prevent sharing transition states between ordered-set aggregates. This ought
to work, but the built-in OSAs are not capable of coping, because their
final-functions destructively modify their transition state (specifically, the
contained tuplesort object). That was fine when those functions were written,
but commit 804163bc2 moved the goalposts without telling orderedsetaggs.c. We
should fix the built-in OSAs to support this, but it will take a little work,
especially if we don't want to sacrifice performance in the normal
non-shared-state case. Given that it took a year after 9.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 just put in
this stop-gap patch to prevent nodeAgg.c from choosing to use shared state for
OSAs. We can revert it in HEAD when we get a better fix. Report from Lukas
Eder, diagnosis by me, patch by David Rowley. Back-patch to 9.6 where the
problem was introduced. Discussion:

- Doc: fix typo in release notes. Ioseph Kim Discussion:

- Add port/strnlen support to libpq and ecpg Makefiles. In the wake of
fffd651e8, any makefile that pulls in snprintf.c from src/port/ needs to be
prepared to pull in strnlen.c as well. Per buildfarm.

- Fix AggGetAggref() so it won't lie to aggregate final functions. If we merge
the transition calculations for two different aggregates, it's reasonable to
assume that the transition function should not care which of those Aggref
structs it 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
transition state in both cases. This doesn't create an observable bug so far
as the core system is concerned, because the only existing uses of
AggGetAggref() are in ordered-set aggregates that happen to not pay attention
to anything but the input 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 this a bug. Hence, back-patch the fix to 9.6 where
the problem was introduced. In passing, improve some of the comments about
transition state sharing. Discussion:

- Rely on sizeof(typename) rather than sizeof(variable) in pqformat.h. In each
of the pq_writeintN functions, the three uses of sizeof() should surely all be
consistent. I started out to make them all sizeof(ni), but on reflection
let's make them sizeof(typename) instead. That's more like our usual style
elsewhere, and it's just barely possible that the failures buildfarm member
hornet has shown since 4c119fbcd went in are caused by the compiler getting
confused about sizeof() a parameter that it's optimizing away. In passing,
improve a couple of comments. Discussion:

- Improve implementation of CRE-stack-flattening in map_variable_attnos(). I
(tgl) objected to the obscure implementation introduced in commit 1c497fa72.
This one seems a bit less action-at-a-distance-y, at the price of repeating a
few lines of code. Improve the comments about what the function is doing,
too. Amit Khandekar, whacked around a bit more by me Discussion:

- Explicitly track whether aggregate final functions modify transition state.
Up to now, there's been hard-wired assumptions that normal aggregates' final
functions never modify their transition states, while ordered-set aggregates'
final functions always do. This has always been a bit limiting, and in
particular it's getting in the way of improving the built-in ordered-set
aggregates to allow merging of transition states. Therefore, let's introduce
catalog and CREATE AGGREGATE infrastructure that lets the finalfn's behavior
be declared explicitly. There are now three possibilities for the finalfn
behavior: it's purely read-only, it trashes the transition state
irrecoverably, or it changes the state in such a way that no more transfn
calls are possible but the state can still be passed to other, compatible
finalfns. 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 prevent transition state merging, if their implementations cannot handle
that. While it was previously possible to handle the window case with a
run-time error check, there was not any way to prevent transition state
merging, which in retrospect is something commit 804163bc2 should have
provided for. But better late than never. In passing, split out
pg_aggregate.c's extern function declarations into a new header file
pg_aggregate_fn.h, similarly to what we've done for some other catalog
headers, so that pg_aggregate.h itself can be safe for frontend files to
include. This lets pg_dump use the symbolic names for relevant constants.
Discussion: https://postgr.es/m/4834.1507849699@sss.pgh.pa.us

- 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.

Robert Haas pushed:

- Fix mistakes in comments. Masahiko Sawada Discussion:

- pg_stat_statements: Widen query IDs from 32 bits to 64 bits. This takes
advantage of the infrastructure introduced by commit
81c5e46c490e2426db243eada186995da5bb0ba7 to greatly reduce the likelihood that
two different queries will end up with the same query ID. It's still
possible, of course, but whereas before it the chances of a collision reached
25% around 50,000 queries, it will now take more than 3 billion queries.
Backward incompatibility: Because the type exposed at the SQL level is int8,
users may now see negative query IDs in the pg_stat_statements view (and also,
query IDs more than 4 billion, which was the old limit). Patch by me,
reviewed by Michael Paquier and Peter Geoghegan. Discussion:

- Fix logical replication to fire BEFORE ROW DELETE triggers. Before, that
would fail to happen unless a BEFORE ROW UPDATE trigger was also present.
Noted by me while reviewing a patch from Masahiko Sawada, who also wrote this
patch. Reviewed by Petr Jelinek. Discussion:

- Synchronize error messages. Commits 6476b26115f3ef25a9cd87880e0ac5ec5f7a05f6
and 14f67a8ee282ebc0de78e773fbd597f460ab4a54 didn't use quite the same error
message for what is basically the same situation. Amit Langote, pared back a
bit by me. Discussion:

- Use ResultRelInfo ** rather than ResultRelInfo * for tuple routing. The
previous convention doesn't lend itself to creating ResultRelInfos lazily, as
we already do in ExecGetTriggerResultRel. This patch doesn't make anything
lazier than before, 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:

- Avoid coercing a whole-row variable that is already coerced. Marginal
efficiency and beautification hack. I'm not sure whether this case ever
arises currently, but the pending patch for update tuple routing will cause it
to arise. Amit Khandekar Discussion:

- Fix possible crash with Parallel Bitmap Heap Scan. If a Parallel Bitmap Heap
scan's chain of leftmost descendents includes a BitmapOr whose first child is
a BitmapAnd, the prior coding would mistakenly create a non-shared TIDBitmap
and then try to perform shared iteration. Report by Tomas Vondra. Patch by
Dilip Kumar. Discussion:

Álvaro Herrera pushed:

- Infer functional dependency past RelabelType. Vars hidden within a
RelabelType would not be detected as compatible with some functional
dependency. Repair by properly ignoring the RelabelType. Author: David
Rowley Reviewed-by: Tomas Vondra Discussion:

Joe Conway pushed:

- Add missing options to pg_regress help() output. A few command line options
accepted by pg_regress were not being output by help(), including --help
itself. Add that one, as well as --version and --bindir, and the corresponding
short options for the first two. We could consider this for backpatching, but
it did not seem worthwhile and no one else advocated for it, so apply only to
master for now. Author: Joe Conway Reviewed-By: Tom Lane Discussion:

== Pending Patches ==

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

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

Jeevan Chalke sent in another revision of a patch to implement partition-wise

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

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

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

Browse pgsql-announce by date

  From Date Subject
Next Message Bo Peng 2017-10-17 04:03:42 Pgpool-II 3.7 beta1 is now released
Previous Message Hiroshi Saito 2017-10-13 14:34:55 psqlODBC 10.00.0000 Released