== PostgreSQL Weekly News - November 25, 2018 ==

From: David Fetter <david(at)fetter(dot)org>
To: PostgreSQL Announce <pgsql-announce(at)postgresql(dot)org>
Subject: == PostgreSQL Weekly News - November 25, 2018 ==
Date: 2018-11-26 01:23:28
Message-ID: 20181126012328.GA7880@fetter.org
Views: Raw Message | Whole Thread | Download mbox
Lists: pgsql-announce

== PostgreSQL Weekly News - November 25, 2018 ==

PGConf India 2019 will be on February 13-15, 2019 in Bengaluru, Karnataka.
The CfP at the site below is open through December 15, 2018.

== PostgreSQL Product News ==

pg_backtrace, and extenstion which makes it possible to get Postgres errors and
exceptions when no debugger is available, released.

pgpool-II 4.0.2, 3.7.7, 4.6.14, 3.5.18, and 3.4.21 released.

PostGIS 2.5.1, the industry standard geographic information
system package for PostgreSQL, released.

PostGIS 2.2.8 is the end of the 2.2 series.

PostGIS 2.3.8 and 2.4.6 released.

pgFormatter 3.3, a formatter/beautifier for SQL code, released.

griddb_fdw 1.0 released.

== PostgreSQL Jobs for November ==


== PostgreSQL Local ==

2Q PGConf will be on December 4-5, 2018 in Chicago, IL.

PGConf.ASIA 2018 will take place on December 10-12, 2018 in Akihabara, Tokyo,

FOSDEM PGDay 2019, a one day conference held before the main FOSDEM event will
be held in Brussels, Belgium, on Feb 1st, 2019.

Prague PostgreSQL Developer Day 2019 (P2D2 2019) is a two-day
conference that will be held on February 13-14, 2019 in Prague, Czech Republic.
The CfP is open until January 4, 2018 at https://p2d2.cz/callforpapers

PGConf India 2019 will be on February 13-15, 2019 in Bengaluru, Karnataka.
The CfP at the site below is open through December 15, 2018.

pgDay Paris 2019 will be held in Paris, France on March 12, 2019
at 199bis rue Saint-Martin. The CfP is open until November 30, 2018.

PGConf APAC 2019 will be held in Singapore March 19-21, 2019. The CfP is open
at http://2019.pgconfapac.org/cfp through November 30, 2018.

PGDay.IT 2019 will take place May 16th and May 17th in Bologna, Italy. The CfP
is open at https://2019.pgday.it/en/blog/cfp and the Call for Workshops is at
https://2019.pgday.it/en/blog/cfw until January 15, 2019.

== 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(at)fetter(dot)org(dot)

== Applied Patches ==

Michaël Paquier pushed:

- Remove unnecessary memcpy when reading WAL record fitting on page. When
reading a WAL record, its contents are copied into an intermediate buffer.
However, doing so is not necessary if the record fits fully into the current
page, saving one memcpy for each such record. The allocation handling of the
intermediate buffer is also now done only when a record crosses a page
boundary, shaving some extra cycles when reading a WAL record. Author: Andrey
Lepikhov Reviewed-by: Kyotaro Horiguchi, Heikki Linnakangas Discussion:

- Rework documentation of pg_promote. This clarifies the behavior of how the
"wait" flag works, which is something that the previous version of the
documentation failed to do. Author: Ian Barwick Discussion:

- Fix issues with TAP tests of pg_verify_checksums Two issues have been spotted
and get fixed here: - When checking for corrupted files, make sure that
pg_verify_checksums complains about the correct file. In order to make the
logic more robust, all files created are immediately removed once checks on
them are done. The error message generated by pg_verify_checksums also now
includes the file name it sees as corrupted. - Before running
corruption-related tests, empty files are generated. which used names mapping
with the corrupted files, potentially leading to conflicts. So use different
set of names for both. Author: Michael Banck Discussion:

- Improve description of buffer used to store records in WAL reader. The
dedicated private buffer to store records is used only for these crossing a
page boundary since 285bd0ac, but its description did not match completely the
reality. Reported-by: Andrey Lepikhov Author: Michael Paquier Discussion:

- Fix typo in description of ExecFindPartition. Author: Amit Langote

- Clarify documentation about PASSWORD in CREATE/ALTER ROLE The documentation of
CREATE/ALTER ROLE has been missing two things related to PASSWORD: - The
password value provided needs to be quoted, some places of the documentation
marked the field with quotes, but not others, which led to confusion. -
PASSWORD NULL was not provided consistently, with ENCRYPTED being not.
compatible with it. Reported-by: Steven Winfield Author: Michael Paquier
Reviewed-by: David G. Johnston Discussion:

- Add PGXS options to control TAP and isolation tests The following options are
added for extensions: - TAP_TESTS, to allow an extention to run TAP tests
which are the ones present in t/*.pl. A subset of tests can always be run
with the existing PROVE_TESTS for developers. - ISOLATION, to define a list
of isolation tests. - ISOLATION_OPTS, to pass custom options to
isolation_tester. A couple of custom Makefile targets have been accumulated
across the tree to cover the lack of facility in PGXS for a couple of releases
when using those test suites, which are all now replaced with the new flags,
without reducing the test coverage. This also fixes an issue with
contrib/bloom/, which had a custom target to trigger its TAP tests of its own
not part of the main check runs. Author: Michael Paquier Reviewed-by: Adam
Berlin, Álvaro Herrera, Tom Lane, Nikolay Shaplov, Arthur Zakirov Discussion:

- Disable temporarily TAP tests for contrib/bloom/. The recent commit 03faa4a8
has enabled those tests, however several buildfarm members are complaining
about their stability on Windows and macOS. This will keep the buildfarm
green, while investigating the root problem. Discussion:

Thomas Munro pushed:

- PANIC on fsync() failure. On some operating systems, it doesn't make sense to
retry fsync(), because dirty data cached by the kernel may have been dropped
on write-back failure. In that case the only remaining copy of the data is in
the WAL. A subsequent fsync() could appear to succeed, but not have flushed
the data. That means that a future checkpoint could apparently complete
successfully but have lost data. Therefore, violently prevent any future
checkpoint attempts by panicking on the first fsync() failure. Note that we
already did the same for WAL data; this change extends that behavior to
non-temporary data files. Provide a GUC data_sync_retry to control this new
behavior, for users of operating systems that don't eject dirty data, and
possibly forensic/testing uses. If it is set to on and the write-back error
was transient, a later checkpoint might genuinely succeed (on a system that
does not throw away buffers on failure); if the error is permanent, later
checkpoints will continue to fail. The GUC defaults to off, meaning that we
panic. Back-patch to all supported releases. There is still a narrow window
for error-loss on some operating systems: if the file is closed and later
reopened and a write-back error occurs in the intervening time, but the inode
has the bad luck to be evicted due to memory pressure before we reopen, we
could miss the error. A later patch will address that with a scheme for
keeping files with dirty data open at all times, but we judge that to be too
complicated to back-patch. Author: Craig Ringer, with some adjustments by
Thomas Munro Reported-by: Craig Ringer Reviewed-by: Robert Haas, Thomas Munro,
Andres Freund Discussion:

- Don't forget about failed fsync() requests. If fsync() fails, md.c must keep
the request in its bitmap, so that future attempts will try again. Back-patch
to all supported releases. Author: Thomas Munro Reviewed-by: Amit Kapila
Reported-by: Andrew Gierth Discussion:

- Add WL_EXIT_ON_PM_DEATH pseudo-event. Users of the WaitEventSet and
WaitLatch() APIs can now choose between asking for WL_POSTMASTER_DEATH and
then handling it explicitly, or asking for WL_EXIT_ON_PM_DEATH to trigger
immediate exit on postmaster death. This reduces code duplication, since
almost all callers want the latter. Repair all code that was previously
ignoring postmaster death completely, or requesting the event but ignoring it,
or requesting the event but then doing an unconditional PostmasterIsAlive()
call every time through its event loop (which is an expensive syscall on
platforms for which we don't have USE_POSTMASTER_DEATH_SIGNAL support).
Assert that callers of WaitLatchXXX() under the postmaster remember to ask for
either WL_POSTMASTER_DEATH or WL_EXIT_ON_PM_DEATH, to prevent future bugs.
The only process that doesn't handle postmaster death is syslogger. It waits
until all backends holding the write end of the syslog pipe (including the
postmaster) have closed it by exiting, to be sure to capture any parting
messages. By using the WaitEventSet API directly it avoids the new assertion,
and as a by-product it may be slightly more efficient on platforms that have
epoll(). Author: Thomas Munro Reviewed-by: Kyotaro Horiguchi, Heikki
Linnakangas, Tom Lane Discussion:

- Fix assertion failure for SSL connections. Commit cfdf4dc4 added an assertion
that every WaitLatch() or similar handles postmaster death. One place did
not, but was missed in review and testing due to the need for an SSL
connection. Fix, by asking for WL_EXIT_ON_PM_DEATH. Reported-by: Christoph
Berg Discussion: https://postgr.es/m/20181124143845.GA15039%40msg.df7cb.de

Peter Eisentraut pushed:

- pg_archivecleanup: Update file header comment a bit.

- Refine some guc.c help texts. These settings apply to communication with the
sending server, which is not necessarily a primary. Author: Sergei Kornilov

- doc: Clarify CREATE TYPE ENUM documentation. The documentation claimed that
an enum type requires "one or more" labels, but since 1fd9883ff49, zero labels
are also allowed. Reported-by: Lukas Eder <lukas(dot)eder(at)gmail(dot)com> Bug: #15356

- Make WAL description output more consistent. The output for record types
XLOG_DBASE_CREATE and XLOG_DBASE_DROP used the order dbid/tablespaceid,
whereas elsewhere the order is tablespaceid/dbid[/relfilenodeid]. Flip the
order for those two types to make it consistent. Author: Jean-Christophe Arnu
<jcarnu(at)gmail(dot)com> Discussion:

- Add settings to control SSL/TLS protocol version. For example:
ssl_min_protocol_version = 'TLSv1.1' ssl_max_protocol_version = 'TLSv1.2'
Reviewed-by: Steve Singer <steve(at)ssinger(dot)info> Discussion:

- Make detection of SSL_CTX_set_min_proto_version more portable. As already
explained in configure.in, using the OpenSSL version number to detect presence
of functions doesn't work, because LibreSSL reports incompatible version
numbers. Fortunately, the functions we need here are actually macros, so we
can just test for them directly.

- doc: Fix typo.

- Integrate recovery.conf into postgresql.conf. recovery.conf settings are now
set in postgresql.conf (or other GUC sources). Currently, all the affected
settings are PGC_POSTMASTER; this could be refined in the future case by case.
Recovery is now initiated by a file recovery.signal. Standby mode is
initiated by a file standby.signal. The standby_mode setting is gone. If a
recovery.conf file is found, an error is issued. The trigger_file setting has
been renamed to promote_trigger_file as part of the move. The documentation
chapter "Recovery Configuration" has been integrated into "Server
Configuration". pg_basebackup -R now appends settings to postgresql.auto.conf
and creates a standby.signal file. Author: Fujii Masao
<masao(dot)fujii(at)gmail(dot)com> Author: Simon Riggs <simon(at)2ndquadrant(dot)com> Author:
Abhijit Menon-Sen <ams(at)2ndquadrant(dot)com> Author: Sergei Kornilov <sk(at)zsrv(dot)org>

Álvaro Herrera pushed:

- Disallow COPY FREEZE on partitioned tables. This didn't actually work: COPY
would fail to flush the right files, and instead would try to flush a
non-existing file, causing the whole transaction to fail. Cope by raising an
error as soon as the command is sent instead, to avoid a nasty later surprise.
Of course, it would be much better to make it work, but we don't have a patch
for that yet, and we don't know if we'll want to backpatch one when we do.
Reported-by: Tomas Vondra Author: David Rowley Reviewed-by: Amit Langote,
Steve Singer, Tomas Vondra

- psql: Show IP address in \conninfo. When hostaddr is given, the actual IP
address that psql is connected to can be totally unexpected for the given
host. The more verbose output we now generate makes things clearer. Since
the "host" and "hostaddr" parts of the conninfo could come from different
sources (say, one of them is in the service specification or a URI-style
conninfo and the other is not), this is not as silly as it may first appear.
This is also definitely useful if the hostname resolves to multiple addresses.
Author: Fabien Coelho Reviewed-by: Pavel Stehule, Arthur Zakirov Discussion:

- psql: Describe partitioned tables/indexes as such. In \d and \z, instead of
conflating partitioned tables and indexes with plain ones, set the "type"
column and table title differently to make the distinction obvious. A simple
ease-of-use improvement. Author: Pavel Stehule, Michaël Paquier, Álvaro
Herrera Reviewed-by: Amit Langote Discussion:

- Fix PartitionDispatchData vertical whitespace. Per David Rowley Discussion:

- instr_time.h: add INSTR_TIME_SET_CURRENT_LAZY. Sets the timestamp to current
if not already set. Will acquire more callers momentarily. Author: Fabien
Coelho Discussion:

- Fix typo in commit 6f7d02aa60b7. Per pink buildfarm.

- Rework the pgbench state machine code for clarity. This commit continues the
code improvements started by commit 12788ae49e19. With this commit, state
machine transitions are better contained in the routine that was called
doCustom() and is now called advanceConnectionState -- the resulting code is
easier to reason about, since there are no state changes occuring in the outer
layer. This change is prompted by future patches to add more features to
pgbench, which will need to effect some more surgery to this code. Fabien's
original had all the machine state changes inside one routine, but I (Álvaro)
thought that a subroutine to handle command execution is more straightforward
to review, so this commit does not match Fabien's submission closely. If
something is broken, it's probably my fault. Author: Fabien Coelho, Álvaro
Herrera Reviewed-by: Kirk Jamison Discussion:

- Don't allow partitioned indexes in pg_global tablespace. Missing in
dfa608141982. Author: David Rowley Discussion:

- Silence compiler warnings. Commit cfdf4dc4fc96 left a few unnecessary
assignments, one of which caused compiler warnings, as reported by Erik
Rijkers. Remove them all. Discussion:

Tom Lane pushed:

- Fix configure's AC_CHECK_DECLS tests to work correctly with clang. The test
case that Autoconf uses to discover whether a function has been declared
doesn't work reliably with clang, because clang reports a warning not an error
if the name is a known built-in function. On some platforms, this results in
a lot of compile-time warnings about strlcpy and related functions not having
been declared. There is a fix for this (by Noah Misch) in the upstream
Autoconf sources, but since they've not made a release in years and show no
indication of doing so anytime soon, let's just absorb their fix directly. We
can revert this when and if we update to a newer Autoconf release. Back-patch
to all supported branches. Discussion:

- Postpone LLVM-related uses of AC_CHECK_DECLS. Calling AC_CHECK_DECLS before
we've finished setting up the compiler's CFLAGS seems like a pretty risky
proposition, especially now that the first use of that macro will result in a
test to see whether the compiler gives warning or error for undeclared
built-in functions. That answer could very easily get changed later than
where PGAC_LLVM_SUPPORT is called; furthermore, it's hardly unlikely that
flags such as -D_GNU_SOURCE could change visibility of declarations. Hence,
be a little less cavalier about where to do LLVM-related tests. This results
in v11 and HEAD doing the warning-or-error check at the same place in the
script as older branches are doing it, which seems like a good thing. Per
further thought about commits 0b59b0e8b and 16fbac39f.

- Update config/ax_pthread.m4 to latest upstream version. This change doesn't
fix any bugs that we've heard about, but it seems like a good idea on general
principles to track upstream occasionally. Discussion:

- Handle EPIPE more sanely when we close a pipe reading from a program.
Previously, any program launched by COPY TO/FROM PROGRAM inherited the
server's setting of SIGPIPE handling, i.e. SIG_IGN. Hence, if we were doing
COPY FROM PROGRAM and closed the pipe early, the child process would see EPIPE
on its output file and typically would treat that as a fatal error, in turn
causing the COPY to report error. Similarly, one could get a failure report
from a query that didn't read all of the output from a contrib/file_fdw
foreign table that uses file_fdw's PROGRAM option. To fix, ensure that child
programs inherit SIG_DFL not SIG_IGN processing of SIGPIPE. This seems like
an all-around better situation since if the called program wants some
non-default treatment of SIGPIPE, it would expect to have to set that up for
itself. Then in COPY, if it's COPY FROM PROGRAM and we stop reading short of
detecting EOF, treat a SIGPIPE exit from the called program as a non-error
condition. This still allows us to report an error for any case where the
called program gets SIGPIPE on some other file descriptor. As coded, we won't
report a SIGPIPE if we stop reading as a result of seeing an in-band EOF
marker (e.g. COPY BINARY EOF marker). It's somewhat debatable whether we
should complain if the called program continues to transmit data after an EOF
marker. However, it seems like we should avoid throwing error in any
questionable cases, especially in a back-patched fix, and anyway it would take
additional code to make such an error get reported consistently. Back-patch
to v10. We could go further back, since COPY FROM PROGRAM has been around
awhile, but AFAICS the only way to reach this situation using core or contrib
is via file_fdw, which has only supported PROGRAM sources since v10. The COPY
statement per se has no feature whereby it'd stop reading without having hit
EOF or an error already. Therefore, I don't see any upside to back-patching
further that'd outweigh the risk of complaints about behavioral change. Per
bug #15449 from Eric Cyr. Patch by me, review by Etsuro Fujita and Kyotaro
Horiguchi Discussion:

- Add needed #include. Per POSIX, WIFSIGNALED and related macros are provided
by <sys/wait.h>. Apparently on Linux they're also pulled in by some other
inclusions, but BSD-ish systems are pickier. Fixes portability issue in
ffa4cbd62. Per buildfarm.

- Doc: rework introductory documentation about covering indexes. Documenting
INCLUDE in the section about unique indexes is confusing, as complained of by
Emilio Platzer. Furthermore, it entirely failed to explain why you might want
to use the feature. The section about index-only scans is really the right
place; it already talked about making such things the hard way. Rewrite that
text to describe INCLUDE as the normal way to make a covering index. Also,
move that section up a couple of places, as it now seems more important than
some of the stuff we had before it. It still has to be after expression and
partial indexes, since otherwise some of it would involve forward references.

- Fix another crash in json{b}_populate_recordset and json{b}_to_recordset.
populate_recordset_worker() failed to consider the possibility that the
supplied JSON data contains no rows, so that update_cached_tupdesc never got
called. This led to a null-pointer dereference since commit 9a5e8ed28; before
that it led to a bogus "set-valued function called in context that cannot
accept a set" error. Fix by forcing the update to happen. Per bug #15514.
Back-patch to v11 as 9a5e8ed28 was. (If we were excited about the bogus
error, we could perhaps go back further, but it'd take more work to figure out
how to fix it in older branches. Given the lack of field complaints about
that aspect, I'm not excited.) Discussion:

- Remove bogus file.

- Clamp semijoin selectivity to be not more than inner-join selectivity. We
should never estimate the output of a semijoin to be more rows than we
estimate for an inner join with the same input rels and join condition; it's
obviously impossible for that to happen. However, given the relatively poor
quality of our semijoin selectivity estimates --- particularly, but not only,
in cases where we punt and return a default estimate --- we did often deliver
such estimates. To improve matters, calculate both estimates inside
eqjoinsel() and take the smaller one. The bulk of this patch is just
mechanical refactoring to avoid repetitive information lookup when we call
both eqjoinsel_semi and eqjoinsel_inner. The actual new behavior is just
selec = Min(selec, inner_rel->rows * selec_inner); which looks a bit odd but
is correct because of our different definitions for inner and semi join
selectivity. There is one ensuing plan change in the regression tests, but it
looks reasonable enough (and checking the actual row counts shows that the
estimate moved closer to reality, not further away). Per bug #15160 from
Alexey Ermakov. Although this is arguably a bug fix, I won't risk
destabilizing plan choices in stable branches by back-patching. Tom Lane,
reviewed by Melanie Plageman Discussion:

- Add a 64-bit hash function for type citext. Amul Sul, reviewed by Hironobu
Suzuki Discussion:

- Add a 64-bit hash function for type hstore. There's some question about the
correctness of the hash function, but if it's wrong, the 32-bit version is
also wrong. Amul Sul, reviewed by Hironobu Suzuki Discussion:

- Fix float-to-integer coercions to handle edge cases correctly. ftoi4 and its
sibling coercion functions did their overflow checks in a way that looked
superficially plausible, but actually depended on an assumption that the MIN
and MAX comparison constants can be represented exactly in the float4 or
float8 domain. That fails in ftoi4, ftoi8, and dtoi8, resulting in a
possibility that values near the MAX limit will be wrongly converted (to
negative values) when they need to be rejected. Also, because we compared
before rounding off the fractional part, the other three functions threw
errors for values that really ought to get rounded to the min or max integer
value. Fix by doing rint() first (requiring an assumption that it handles NaN
and Inf correctly; but dtoi8 and ftoi8 were assuming that already), and by
comparing to values that should coerce to float exactly, namely INTxx_MIN and
-INTxx_MIN. Also remove some random cosmetic discrepancies between these six
functions. Per bug #15519 from Victor Petrovykh. This should get
back-patched, but first let's see what the buildfarm thinks of it --- I'm not
too sure about portability of some of the regression test cases. Patch by me;
thanks to Andrew Gierth for analysis and discussion. Discussion:

- Adjust new test case for more portability. Early returns from the buildfarm
say that most critters are good with commit cbdb8b4c0, but gaur gives
unexpected results with the test case involving a float8 that's
one-ULP-less-than-2^63. It appears that that platform's version of rint()
rounds that value up to 2^63 instead of leaving it be. This is possibly a
bug, and it's also possible that no other platform anybody is using anywhere
behaves likewise. Still, the point of the test is not to insist that
everybody's rint() behaves exactly the same. Let's use
two-ULPs-less-than-2^63 instead, which I've tested to act the same on gaur as
on more modern hardware. (This is, more or less, exactly the portability
issue I'd feared might arise...) Discussion:

Robert Haas pushed:

- Reduce unnecessary list construction in RelationBuildPartitionDesc. The
'partoids' list which was constructed by the previous version of this code was
necessarily identical to 'inhoids'. There's no point to duplicating the list,
so avoid that. Instead, construct the array representation directly from the
original 'inhoids' list. Also, use an array rather than a list for
'boundspecs'. We know exactly how many items we need to store, so there's
really no reason to use a list. Using an array instead reduces the number of
memory allocations we perform. Patch by me, reviewed by Michael Paquier and
Amit Langote, the latter of whom also helped with rebasing.

Andres Freund pushed:

- Remove WITH OIDS support, change oid catalog column visibility. Previously
tables declared WITH OIDS, including a significant fraction of the catalog
tables, stored the oid column not as a normal column, but as part of the tuple
header. This special column was not shown by default, which was somewhat odd,
as it's often (consider e.g. pg_class.oid) one of the more important parts of
a row. Neither pg_dump nor COPY included the contents of the oid column by
default. The fact that the oid column was not an ordinary column necessitated
a significant amount of special case code to support oid columns. That already
was painful for the existing, but upcoming work aiming to make table storage
pluggable, would have required expanding and duplicating that "specialness"
significantly. WITH OIDS has been deprecated since 2005 (commit
ff02d0a05280e0). Remove it. Removing includes: - CREATE TABLE and ALTER
TABLE syntax for declaring the table to be WITH OIDS has been removed (WITH
(oids[ = true]) will error out) - pg_dump does not support dumping tables
declared WITH OIDS and will issue a warning when dumping one (and ignore the
oid column). - restoring an pg_dump archive with pg_restore will warn when
restoring a table with oid contents (and ignore the oid column) - COPY will
refuse to load binary dump that includes oids. - pg_upgrade will error out
when encountering tables declared WITH OIDS, they have to be altered to remove
the oid column first. - Functionality to access the oid of the last inserted
row (like. plpgsql's RESULT_OID, spi's SPI_lastoid, ...) has been removed.
The syntax for declaring a table WITHOUT OIDS (or WITH (oids = false) for
CREATE TABLE) is still supported. While that requires a bit of support code,
it seems unnecessary to break applications / dumps that do not use oids, and
are explicit about not using them. The biggest user of WITH OID columns was
postgres' catalog. This commit changes all 'magic' oid columns to be columns
that are normally declared and stored. To reduce unnecessary query breakage
all the newly added columns are still named 'oid', even if a table's column
naming scheme would indicate 'reloid' or such. This obviously requires
adapting a lot code, mostly replacing oid access via HeapTupleGetOid() with
access to the underlying Form_pg_*->oid column. The bootstrap process now
assigns oids for all oid columns in genbki.pl that do not have an explicit
value (starting at the largest oid previously used), only oids assigned later
by oids will be above FirstBootstrapObjectId. As the oid column now is a
normal column the special bootstrap syntax for oids has been removed. Oids
are not automatically assigned during insertion anymore, all backend code
explicitly assigns oids with GetNewOidWithIndex(). For the rare case that
insertions into the catalog via SQL are called for the new pg_nextoid()
function can be used (which only works on catalog tables). The fact that oid
columns on system tables are now normal columns means that they will be
included in the set of columns expanded by * (i.e. SELECT * FROM pg_class will
now include the table's oid, previously it did not). It'd not technically be
hard to hide oid column by default, but that'd mean confusing behavior would
either have to be carried forward forever, or it'd cause breakage down the
line. While it's not unlikely that further adjustments are needed, the
scope/invasiveness of the patch makes it worthwhile to get merge this now.
It's painful to maintain externally, too complicated to commit after the code
code freeze, and a dependency of a number of other patches. Catversion bump,
for obvious reasons. Author: Andres Freund, with contributions by John Naylor

- Fix sepgsql compile error caused by oid removal. Per buildfarm animal
rhinoceros. I (Andres) missed replacing a few uses of ObjectIdAttributeNumber
in sepgsql. It's quite probable that the sepgsql test output will need more
adapting than done in 578b22... Author: Thomas Munro Discussion:

- Blind attempt at fixing sepgsql output for 578b22.

Bruce Momjian pushed:

- doc: adjust time zone names text. Reported-by: Kevin <kcolagio(at)gmail(dot)com>
Backpatch-through: 9.4

- doc: adjust time zone names text, v2. Removed one too many words. Fix for
7906de847f229f391b9e6b5892b4b4a89f29edb4. Reported-by: Thomas Munro
Backpatch-through: 9.4

Andrew Gierth pushed:

- Avoid crashes in contrib/intarray gist__int_ops (bug #15518). 1. Integer
overflow in internal_size could result in memory corruption in decompression
since a zero-length array would be allocated and then written to. This leads
to crashes or corruption when traversing an index which has been populated
with sufficiently sparse values. Fix by using int64 for computations and
checking for overflow. 2. Integer overflow in g_int_compress could cause
pessimal merge choices, resulting in unnecessarily large ranges (which would
in turn trigger issue 1 above). Fix by using int64 again. 3. Even without
overflow, array sizes could become large enough to cause unexplained memory
allocation errors. Fix by capping the sizes to a safe limit and report actual
errors pointing at gist__intbig_ops as needed. 4. Large inputs to the
compression function always consist of large runs of consecutive integers, and
the compression loop was processing these one at a time in an O(N^2) manner
with a lot of overhead. The expected runtime of this function could easily
exceed 6 months for a single call as a result. Fix by performing a linear-time
first pass, which reduces the worst case to something on the order of seconds.
Backpatch all the way, since this has been wrong forever. Per bug #15518 from
report from irc user "dymk", analysis and patch by me. Discussion:

- Fix hstore hash function for empty hstores upgraded from 8.4. Hstore data
generated on pg 8.4 and pg_upgraded to current versions remains in its
original on-disk format unless modified. The same goes for values generated by
the addon hstore-new module on pre-9.0 versions. (The hstoreUpgrade function
converts old values on the fly when read in, but the on-disk value is not
modified by this.) Since old-format empty hstores (and hstore-new hstores)
have representations compatible with the new format, hstoreUpgrade thought it
could get away without modifying such values; but this breaks hstore_hash (and
the new hstore_hash_extended) which assumes bit-perfect matching between
semantically identical hstore values. Only one bit actually differs (the "new
version" flag in the count field) but that of course is enough to break the
hash. Fix by making hstoreUpgrade unconditionally convert all old values to
new format. Backpatch all the way, even though this changes a hash value in
some cases, because in those cases the hash value is already failing - for
example, a hash join between old- and new-format empty hstores will be failing
to match, or a hash index on an hstore column containing an old-format empty
value will be failing to find the value since it will be searching for a hash
derived from a new-format datum. (There are no known field reports of this
happening, probably because hashing of hstores has only been useful in limited
circumstances and there probably isn't much upgraded data being used this
way.) Per concerns arising from discussion of commit eb6f29141be. Original bug
is my fault. Discussion:

== Pending Patches ==

Julien Demoor sent in another revision of a patch to add a collapse_mode
parameter to pg_notify(), which enables redundant pg_notifies in situations
where delivering the NOTIFY once suffices.

Amit Khandekar sent in a patch to populate &slot->tts_tid wherever tuple->t_self
changes and slot-ify trigger tuples.

Nikolay Shaplov sent in another revision of a patch to split the functionality
of StdRdOptions into individual binary reloptions representations for each
relation kind.

Sergey Cherkashin sent in a patch to add a verification of the connection with
the client during the execution of the SQL query via a new
client_connection_check_interval GUC.

Michael Banck sent in another revision of a patch to add TAP tests for

Andrey V. Lepikhov sent in a patch to clarify comments in readRecordBuf.

Pavel Stěhule and Michaël Paquier traded patches to add a \dP for partitioned
things to psql, along with improvements to \di for partitioned indexes.

Amit Langote sent in two revisions of a patch to fix some comments about

Dilip Kumar sent in another revision of a patch to provide an interface for
prepare, insert, or fetch the undo records.

John Naylor sent in a patch to update bki.sgml for the OID removal patch.

Haozhou Wang sent in two more revisions of a patch to add hooks to enable,
amongh other things, extensions to implement disk quotas.

David Rowley sent in another revision of a patch to add a documentation section
appendix detailing some limitations of PostgreSQL.

Pavel Stěhule sent in another revision of a patch to implement schema variables.

Iwata Aya sent in another revision of a patch to enable libpq debug logging.

Amit Langote sent in another revision of a patch to speed up planning with

Alexander Kuzmenkov sent in another revision of a patch to remove unneeded

Christoph Berg sent in a patch to log the PostgreSQL version number on startup.

Haribabu Kommi sent in a patch to remove the release notes for unsupported
versions of PostgreSQL from HEAD.

Dmitry Dolgov sent in another revision of a patch to implement index skip scan.

Masahiko Sawada sent in a patch to fix an issue in gcov.

Adrien Nayrat sent in another revision of a patch to add a new GUC,
log_statement_sample_rate, to sample log queries.

Michael Banck sent in another revision of a patch to enable online verification
of disk page checksums.

Álvaro Herrera and Fabien COELHO traded patches to enable pgbench to store
SELECT results into variables.

Michaël Paquier and Artur Zakirov traded patches to add extension options to
control TAP and isolation tests.

David Rowley sent in another revision of a patch to allow Append to be used in
place of MergeAppend for some cases.

Paul Guo sent in a patch to allow the fact that a wal sender is stopping to
affect SyncRepReleaseWaiters(). Previously, only the fact that a wal sender was
streaming did.

Christoph Berg sent in a patch to switch pg_regress to output unified diffs by

Evgeniy Efimkin sent in another revision of a patch to add options to the DDL

Patrick Francelle sent in another revision of a patch to document more clearly
what CHECK constraints are and are not good for.

Andres Freund sent in a patch to fix some breakage of pg_dump caused by the
patch which removed "magic" OIDs.

Amit Langote sent in a patch to fix a typo in src/backend/executor/execPartition.c.

David Rowley sent in a patch to fix index locking for deletes.

David Rowley sent in a patch to fix some issues in a previous patch which
improved TID scans.

Kyotaro HORIGUCHI and David Fetter traded patches to enable debugging of tab
completion in psql.

David Rowley sent in a patch to delay locking of partitions during INSERT and

Thomas Munro sent in another revision of a patch to refactor the checkpointer's
data sync request queue and fix a deadlock by sending without content lock, but
still marked BM_DIRTY.

Thomas Munro sent in a patch to avoid counting zero-filled buffers as 'read' in

Sergey Cherkashin sent in another revision of a patch to implement \dA (access
method) for psql.

Konstantin Knizhnik sent in a patch to make index_getattr more efficient.

Tony REIX sent in a patch to make it possible for PostgreSQL to use Sys-V shared
memory on AIX.

Andrey Borodin sent in a patch to use a correct locking protocol during GIN
posting tree vacuum.

David Rowley sent in two revisions of a patch to allow newly created partitions
to inherit their parent's tablespace.

John Naylor sent in another revision of a patch to prevent creating a free space
map for small tables.

Surafel Temesgen sent in another revision of a patch to implement COPY ... FROM

Tomáš Vondra sent in another revision of a patch to fix an infelicity between
logical decoding and VACUUM FULL / CLUSTER on table with TOAST-ed data.

David Rowley sent in another revision of a patch to remove single-subpath Append
and MergeAppend nodes.

Paul A Jungwirth sent in two revisions of a patch to implement temporal PRIMARY

Fabien COELHO sent in a patch to fix up some infelicities in the pgbench state
change patch.

Surafel Temesgen sent in another revision of a patch to implement FETCH FIRST

Fabien COELHO sent in another revision of a patch to add a progress indicator to

Jeff Janes sent in two revisions of a patch to avoid checking for a trigger file
on a streaming replica when no trigger file is configured.

Peter Geoghegan sent in another revision of a patch to make all nbtree entries
unique by having heap TIDs participate in comparisons.

Noah Misch sent in another PoC of a patch to create a function trust mechanism.

Surafel Temesgen sent in another revision of a patch to implement FETCH FIRST

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

Dmitry Dolgov sent in another revision of a patch to improve the algorithms for
joining partitions.

Sergei Kornilov sent in a WIP patch to make primary_conninfo and primary_slot_name

Tom Lane sent in a patch to fix tab completion in psql for the latex-longtable

Masahiko Sawada sent in another revision of a patch to create a copy function
for logical and physical replication slots.

Browse pgsql-announce by date

  From Date Subject
Next Message Dave Page 2018-11-27 11:23:32 Registration for FOSDEM PGDay 2019 is now open!
Previous Message Bo Peng 2018-11-22 09:23:36 Pgpool-II 4.0.2, 3.7.7, 3.6.14, 3.5.18 and 3.4.21 are now officially released.