]> granicus.if.org Git - postgresql/log
postgresql
6 years agoFix off-by-one bug in XactLogCommitRecord
Alvaro Herrera [Fri, 15 Jun 2018 19:00:41 +0000 (15:00 -0400)]
Fix off-by-one bug in XactLogCommitRecord

Commit 1eb6d6527aae introduced zeroed alignment bytes in the GID field
of commit/abort WAL records.  Fixup commit cf5a1890592b later changed
that representation into a regular cstring with a single terminating
zero byte, but it also introduced an off-by-one mistake.  Fix that.

Author: Nikhil Sontakke
Reported-by: Nikhil Sontakke
Discussion: https://postgr.es/m/CAMGcDxey6dG1DP34_tJMoWPcp5sPJUAL4K5CayUUXLQSx2GQpA@mail.gmail.com

6 years agoFix memory leak in PLySequence_ToJsonbValue()
Alexander Korotkov [Fri, 15 Jun 2018 12:01:46 +0000 (15:01 +0300)]
Fix memory leak in PLySequence_ToJsonbValue()

PyObject returned from PySequence_GetItem() is not released.  Similar code in PLyMapping_ToJsonbValue() is correct, because according to Python documentation
PyList_GetItem() and PyTuple_GetItem() return a borrowed reference while
PySequence_GetItem() returns new reference.  contrib/jsonb_plpython is new
in PostgreSQL 11, no backpatch is needed.

Author: Nikita Glukhov
Discussion: https://postgr.es/m/6001af16-b242-2527-bc7e-84b8a959163b%40postgrespro.ru

6 years agoFix memory leak.
Tatsuo Ishii [Fri, 15 Jun 2018 07:32:59 +0000 (16:32 +0900)]
Fix memory leak.

Memory is allocated twice for "file" and "files" variables in
BufFileOpenShared().

Author: Antonin Houska
Discussion: https://postgr.es/m/11329.1529045692%40localhost

6 years agoFail BRIN control functions during recovery explicitly
Alvaro Herrera [Thu, 14 Jun 2018 16:51:32 +0000 (12:51 -0400)]
Fail BRIN control functions during recovery explicitly

They already fail anyway, but prior to this patch they raise an ugly
error message about a lock that cannot be acquired.  This just improves
the message.

Author: Masahiko Sawada
Reported-by: Masahiko Sawada
Discussion: https://postgr.es/m/CAD21AoBZau4g4_NUf3BKNd=CdYK+xaPdtJCzvOC1TxGdTiJx_Q@mail.gmail.com
Reviewed-by: Kuntal Ghosh, Alexander Korotkov, Simon Riggs, Michaël Paquier, Álvaro Herrera
6 years agoRemove spurious code comments in standby related code
Simon Riggs [Thu, 14 Jun 2018 11:17:51 +0000 (12:17 +0100)]
Remove spurious code comments in standby related code

GetRunningTransactionData() suggested that subxids were not worth
optimizing away if overflowed, yet they have already been removed
for that case.

Changes to LogAccessExclusiveLock() API forgot to remove the
prior comment when it was copied to LockAcquire().

6 years agoRemove cut-off bug from RunningTransactionData
Simon Riggs [Thu, 14 Jun 2018 11:02:41 +0000 (12:02 +0100)]
Remove cut-off bug from RunningTransactionData

32ac7a118fc17f5 tried to fix a Hot Standby issue
reported by Greg Stark, but in doing so caused
a different bug to appear, noted by Andres Freund.

Revoke the core changes from 32ac7a118fc17f5,
leaving in its place a minor change in code
ordering and comments to explain for the future.

6 years agoCode review for match_clause_to_partition_key().
Tom Lane [Wed, 13 Jun 2018 20:10:30 +0000 (16:10 -0400)]
Code review for match_clause_to_partition_key().

Fix inconsistent decisions about NOMATCH vs UNSUPPORTED result codes.
If we're going to cater for partkeys that have the same expression and
different collations, surely we should also support partkeys with the
same expression and different opclasses.

Clean up shaky handling of commuted opclauses, eg checking the wrong
operator to see what its negator is.  This wouldn't cause any actual
bugs given a sane opclass definition, but it doesn't seem helpful to
expend more code to be less correct.

Improve handling of null elements in ScalarArrayOp arrays: in the
"op ALL" case, we can conclude they result in an unsatisfiable clause.

Minor cosmetic changes and comment improvements.

6 years agoFix some ill-chosen names for globally-visible partition support functions.
Tom Lane [Wed, 13 Jun 2018 17:18:02 +0000 (13:18 -0400)]
Fix some ill-chosen names for globally-visible partition support functions.

"compute_hash_value" is particularly gratuitously generic, but IMO
all of these ought to have names clearly related to partitioning.

6 years agoFix up run-time partition pruning's use of relcache's partition data.
Tom Lane [Wed, 13 Jun 2018 16:03:19 +0000 (12:03 -0400)]
Fix up run-time partition pruning's use of relcache's partition data.

The previous coding saved pointers into the partitioned table's relcache
entry, but then closed the relcache entry, causing those pointers to
nominally become dangling.  Actual trouble would be seen in the field
only if a relcache flush occurred mid-query, but that's hardly out of
the question.

While we could fix this by copying all the data in question at query
start, it seems better to just hold the relcache entry open for the
whole query.

While at it, improve the handling of support-function lookups: do that
once per query not once per pruning test.  There's still something to be
desired here, in that we fail to exploit the possibility of caching data
across queries in the fn_extra fields of the relcache's FmgrInfo structs,
which could happen if we just used those structs in-place rather than
copying them.  However, combining that with the possibility of per-query
lookups of cross-type comparison functions seems to require changes in the
APIs of a lot of the pruning support functions, so it's too invasive to
consider as part of this patch.  A win would ensue only for complex
partition key data types (e.g. arrays), so it may not be worth the
trouble.

David Rowley and Tom Lane

Discussion: https://postgr.es/m/17850.1528755844@sss.pgh.pa.us

6 years agoDocumentation improvement for pg_trgm
Alexander Korotkov [Wed, 13 Jun 2018 15:23:00 +0000 (18:23 +0300)]
Documentation improvement for pg_trgm

Documentation of word_similarity() and strict_word_similarity() functions
contains some vague wordings which could confuse users.  This patch makes
those wordings more clear.  word_similarity() was introduced in PostgreSQL 9.6,
and corresponding part of documentation needs to be backpatched.

Author: Bruce Momjian, Alexander Korotkov
Discussion: https://postgr.es/m/20180526165648.GB12510%40momjian.us
Backpatch: 9.6, where word_similarity() was introduced

6 years agoExclude files in .git from list of perl files
Andrew Dunstan [Tue, 12 Jun 2018 18:54:43 +0000 (14:54 -0400)]
Exclude files in .git from list of perl files

The .git directory might contain perl files, as hooks, for example.
Since we have no control over these they should be excluded from things
like our perlcritic checks.

Per offline report from Mike Blackwell.

6 years agoFix bugs in vacuum of shared rels, by keeping their relcache entries current.
Andres Freund [Tue, 12 Jun 2018 18:13:21 +0000 (11:13 -0700)]
Fix bugs in vacuum of shared rels, by keeping their relcache entries current.

When vacuum processes a relation it uses the corresponding relcache
entry's relfrozenxid / relminmxid as a cutoff for when to remove
tuples etc. Unfortunately for nailed relations (i.e. critical system
catalogs) bugs could frequently lead to the corresponding relcache
entry being stale.

This set of bugs could cause actual data corruption as vacuum would
potentially not remove the correct row versions, potentially reviving
them at a later point.  After 699bf7d05c some corruptions in this vein
were prevented, but the additional error checks could also trigger
spuriously. Examples of such errors are:
  ERROR: found xmin ... from before relfrozenxid ...
and
  ERROR: found multixact ... from before relminmxid ...
To be caused by this bug the errors have to occur on system catalog
tables.

The two bugs are:

1) Invalidations for nailed relations were ignored, based on the
   theory that the relcache entry for such tables doesn't
   change. Which is largely true, except for fields like relfrozenxid
   etc.  This means that changes to relations vacuumed in other
   sessions weren't picked up by already existing sessions.  Luckily
   autovacuum doesn't have particularly longrunning sessions.

2) For shared *and* nailed relations, the shared relcache init file
   was never invalidated while running.  That means that for such
   tables (e.g. pg_authid, pg_database) it's not just already existing
   sessions that are affected, but even new connections are as well.
   That explains why the reports usually were about pg_authid et. al.

To fix 1), revalidate the rd_rel portion of a relcache entry when
invalid. This implies a bit of extra complexity to deal with
bootstrapping, but it's not too bad.  The fix for 2) is simpler,
simply always remove both the shared and local init files.

Author: Andres Freund
Reviewed-By: Alvaro Herrera
Discussion:
    https://postgr.es/m/20180525203736.crkbg36muzxrjj5e@alap3.anarazel.de
    https://postgr.es/m/CAMa1XUhKSJd98JW4o9StWPrfS=11bPgG+_GDMxe25TvUY4Sugg@mail.gmail.com
    https://postgr.es/m/CAKMFJucqbuoDRfxPDX39WhA3vJyxweRg_zDVXzncr6+5wOguWA@mail.gmail.com
    https://postgr.es/m/CAGewt-ujGpMLQ09gXcUFMZaZsGJC98VXHEFbF-tpPB0fB13K+A@mail.gmail.com
Backpatch: 9.3-

6 years agoConvert debug message from ereport to elog
Peter Eisentraut [Tue, 12 Jun 2018 15:33:39 +0000 (11:33 -0400)]
Convert debug message from ereport to elog

6 years agodoc: Replace non-ASCII lines in psql example output
Peter Eisentraut [Tue, 12 Jun 2018 12:19:52 +0000 (08:19 -0400)]
doc: Replace non-ASCII lines in psql example output

We normally use the default line mode in examples.

6 years agodoc: Suggest logical replication more prominently for upgrading
Peter Eisentraut [Tue, 12 Jun 2018 01:34:32 +0000 (21:34 -0400)]
doc: Suggest logical replication more prominently for upgrading

The previous wording suggested only Slony, and there are more options
available.

6 years agoFix access to just-closed relcache entry.
Tom Lane [Mon, 11 Jun 2018 23:17:50 +0000 (19:17 -0400)]
Fix access to just-closed relcache entry.

It might be impossible for this to cause a problem in non-debug builds,
since there'd be no opportunity for the relcache entry to get recycled
before the fetch.  It blows up nicely with -DRELCACHE_FORCE_RELEASE plus
valgrind, though.

Evidently introduced by careless refactoring in commit f0e44751d.
Back-patch accordingly.

Discussion: https://postgr.es/m/27543.1528758304@sss.pgh.pa.us

6 years agoFix oversight from 9e149c8 with spin-lock handling
Michael Paquier [Mon, 11 Jun 2018 21:52:34 +0000 (06:52 +0900)]
Fix oversight from 9e149c8 with spin-lock handling

Calling an external function while a pin-lock is held is a bad idea as
those are designed to be short-lived.  The stress of a first commit into
a large git history may contribute to that.

Reported-by: Andres Freund
Discussion: https://postgr.es/m/20180611164952.vmxdpdpirdtkdsz6@alap3.anarazel.de

6 years agoImprove ExecFindInitialMatchingSubPlans's subplan renumbering logic.
Tom Lane [Mon, 11 Jun 2018 21:35:43 +0000 (17:35 -0400)]
Improve ExecFindInitialMatchingSubPlans's subplan renumbering logic.

We don't need two passes if we scan child partitions before parents,
as that way the children's present_parts are up to date before they're
needed.  I (tgl) think there's actually a bug being fixed here, for the
case of an intermediate partitioned table with no direct leaf children,
but haven't attempted to construct a test case to prove it.

David Rowley

Discussion: https://postgr.es/m/CAKJS1f-6GODRNgEtdPxCnAPme2h2hTztB6LmtfdmcYAAOE0kQg@mail.gmail.com

6 years agoImprove commentary about run-time partition pruning data structures.
Tom Lane [Mon, 11 Jun 2018 21:14:46 +0000 (17:14 -0400)]
Improve commentary about run-time partition pruning data structures.

No code changes except for a couple of new Asserts.

David Rowley and Tom Lane

Discussion: https://postgr.es/m/CAKJS1f-6GODRNgEtdPxCnAPme2h2hTztB6LmtfdmcYAAOE0kQg@mail.gmail.com

6 years agoAdjust error message
Peter Eisentraut [Mon, 11 Jun 2018 21:19:11 +0000 (17:19 -0400)]
Adjust error message

Makes it look more similar to other ones, and avoids the need for
pluralization.

6 years agoDon't needlessly check the partition contraint twice
Alvaro Herrera [Mon, 11 Jun 2018 20:53:33 +0000 (16:53 -0400)]
Don't needlessly check the partition contraint twice

Starting with commit f0e44751d717, ExecConstraints was in charge of
running the partition constraint; commit 19c47e7c8202 modified that so
that caller could request to skip that checking depending on some
conditions, but that commit and 15ce775faa42 together introduced a small
bug there which caused ExecInsert to request skipping the constraint
check but have this not be honored -- in effect doing the check twice.
This could have been fixed in a very small patch, but on further
analysis of the involved function and its callsites, it turns out to be
simpler to give the responsibility of checking the partition constraint
fully to the caller, and return ExecConstraints to its original
(pre-partitioning) shape where it only checked tuple descriptor-related
constraints.  Each caller must do partition constraint checking on its
own schedule, which is more convenient after commit 2f178441044 anyway.

Reported-by: David Rowley
Author: David Rowley, Álvaro Herrera
Reviewed-by: Amit Langote, Amit Khandekar, Simon Riggs
Discussion: https://postgr.es/m/CAKJS1f8w8+awsxgea8wt7_UX8qzOQ=Tm1LD+U1fHqBAkXxkW2w@mail.gmail.com

6 years agoMove perlcritic files to new perlcheck directory
Andrew Dunstan [Mon, 11 Jun 2018 18:54:28 +0000 (14:54 -0400)]
Move perlcritic files to new perlcheck directory

6 years agoAdd a script to detect perl compile time errors and warnings
Andrew Dunstan [Mon, 11 Jun 2018 18:47:20 +0000 (14:47 -0400)]
Add a script to detect perl compile time errors and warnings

Also add a function that centralizes the logic for locating all our perl
files and use it in pgperlcritic and pgperltidy as well as the new
pgperlcheck.

6 years agoFix run-time partition pruning code to handle NULL values properly.
Tom Lane [Mon, 11 Jun 2018 16:08:09 +0000 (12:08 -0400)]
Fix run-time partition pruning code to handle NULL values properly.

The previous coding just ignored pruning constraints that compare a
partition key to a null-valued expression.  This is silly, since really
what we can do there is conclude that all partitions are rejected: the
pruning operator is known strict so the comparison must always fail.

This also fixes the logic to not ignore constisnull for a Const comparison
value.  That's probably an unreachable case, since the planner would
normally have simplified away a strict operator with a constant-null input.
But this code has no business assuming that.

David Rowley, per a gripe from me

Discussion: https://postgr.es/m/26279.1528670981@sss.pgh.pa.us

6 years agoMake new error code name match SQL standard more closely
Peter Eisentraut [Mon, 11 Jun 2018 15:15:28 +0000 (11:15 -0400)]
Make new error code name match SQL standard more closely

Discussion: https://www.postgresql.org/message-id/dff3d555-bea4-ac24-29b2-29521b9d08e8%402ndquadrant.com

6 years agoUpdate config.guess and config.sub
Peter Eisentraut [Mon, 11 Jun 2018 12:54:58 +0000 (08:54 -0400)]
Update config.guess and config.sub

6 years agoFix grammar in documentation related to checkpoint_flush_after
Michael Paquier [Mon, 11 Jun 2018 00:54:25 +0000 (09:54 +0900)]
Fix grammar in documentation related to checkpoint_flush_after

Reported-by: Christopher Jones
6 years agoFix a couple of bugs with replication slot advancing feature
Michael Paquier [Mon, 11 Jun 2018 00:26:13 +0000 (09:26 +0900)]
Fix a couple of bugs with replication slot advancing feature

A review of the code has showed up a couple of issues fixed by this
commit:
- Physical slots have been using the confirmed LSN position as a start
comparison point which is always 0/0, instead use the restart LSN
position (logical slots need to use the confirmed LSN position, which
was correct).
- The actual slot update was incorrect for both physical and logical
slots.  Physical slots need to use their restart_lsn as base comparison
point (confirmed_flush was used because of previous point), and logical
slots need to begin reading WAL from restart_lsn (confirmed_flush was
used as well), while confirmed_flush is compiled depending on the
decoding context and record read, and is the LSN position returned back
to the caller.
- Never return 0/0 if a slot cannot be advanced.  This way, if a slot is
advanced while the activity is idle, then the same position is returned
to the caller over and over without raising an error.  Instead return
the LSN the slot has been advanced to.  With repetitive calls, the same
position is returned hence caller can directly monitor the difference in
progress in bytes by doing simply LSN difference calculations, which
should be monotonic.

Note that as the slot is owned by the backend advancing it, then the
read of those fields is fine lock-less, while updates need to happen
while the slot mutex is held, so fix that on the way as well.  Other
locks for in-memory data of replication slots have been already fixed
previously.

Some of those issues have been pointed out by Petr and Simon during the
patch, while I noticed some of them after looking at the code.  This
also visibly takes of a recently-discovered bug causing assertion
failures which can be triggered by a two-step slot forwarding which
first advanced the slot to a WAL page boundary and secondly advanced it
to the latest position, say 'FF/FFFFFFF' to make sure that the newest
LSN is used as forward point.  It would have been nice to drop a test
for that, but the set of operators working on pg_lsn limits it, so this
is left for a future exercise.

Author: Michael Paquier
Reviewed-by: Petr Jelinek, Simon Riggs
Discussion: https://postgr.es/m/CANP8+jLyS=X-CAk59BJnsxKQfjwrmKicHQykyn52Qj-Q=9GLCw@mail.gmail.com
Discussion: https://www.postgresql.org/message-id/2840048a-1184-417a-9da8-3299d207a1d7%40postgrespro.ru

6 years agoAssorted cosmetic cleanup of run-time-partition-pruning code.
Tom Lane [Sun, 10 Jun 2018 22:24:34 +0000 (18:24 -0400)]
Assorted cosmetic cleanup of run-time-partition-pruning code.

Use "subplan" rather than "subnode" to refer to the child plans of
a partitioning Append; this seems a bit more specific and hence
clearer.  Improve assorted comments.  No non-cosmetic changes.

David Rowley and Tom Lane

Discussion: https://postgr.es/m/CAFj8pRBjrufA3ocDm8o4LPGNye9Y+pm1b9kCwode4X04CULG3g@mail.gmail.com

6 years agoRelocate partition pruning structs to a saner place.
Tom Lane [Sun, 10 Jun 2018 20:30:14 +0000 (16:30 -0400)]
Relocate partition pruning structs to a saner place.

These struct definitions were originally dropped into primnodes.h,
which is a poor choice since that's mainly intended for primitive
expression node types; these are not in that category.  What they
are is auxiliary info in Plan trees, so move them to plannodes.h.

For consistency, also relocate some related code that was apparently
placed with the aid of a dartboard.

There's no interesting code changes in this commit, just reshuffling.

David Rowley and Tom Lane

Discussion: https://postgr.es/m/CAFj8pRBjrufA3ocDm8o4LPGNye9Y+pm1b9kCwode4X04CULG3g@mail.gmail.com

6 years agoImprove run-time partition pruning to handle any stable expression.
Tom Lane [Sun, 10 Jun 2018 19:22:25 +0000 (15:22 -0400)]
Improve run-time partition pruning to handle any stable expression.

The initial coding of the run-time-pruning feature only coped with cases
where the partition key(s) are compared to Params.  That is a bit silly;
we can allow it to work with any non-Var-containing stable expression, as
long as we take special care with expressions containing PARAM_EXEC Params.
The code is hardly any longer this way, and it's considerably clearer
(IMO at least).  Per gripe from Pavel Stehule.

David Rowley, whacked around a bit by me

Discussion: https://postgr.es/m/CAFj8pRBjrufA3ocDm8o4LPGNye9Y+pm1b9kCwode4X04CULG3g@mail.gmail.com

6 years agoFix grammar in REVOKE documentation
Michael Paquier [Sun, 10 Jun 2018 13:44:17 +0000 (22:44 +0900)]
Fix grammar in REVOKE documentation

Reported-by: Erwin Brandstetter
6 years agoFix and document lock handling for in-memory replication slot data
Michael Paquier [Fri, 1 Jun 2018 18:30:55 +0000 (14:30 -0400)]
Fix and document lock handling for in-memory replication slot data

While debugging issues on HEAD for the new slot forwarding feature of
Postgres 11, some monitoring of the code surrounding in-memory slot data
has proved that the lock handling may cause inconsistent data to be read
by read-only callers of slot functions, particularly
pg_get_replication_slots() which fetches data for the system view
pg_replication_slots, or modules looking directly at slot information.

The code paths involved in those problems concern logical decoding
initialization (down to 9.4) and WAL reservation for slots (new as of
10).

A set of comments documenting all the lock handlings, particularly the
dependency with LW locks for slots and the in_use flag as well as the
internal mutex lock is added, based on a suggested by Simon Riggs.

Some of the fixed code exists down to 9.4 where WAL decoding has been
introduced, but as those race conditions are really unlikely going to
happen as those concern code paths for slot and decoding creation, just
fix the problem on HEAD.

Author: Michael Paquier

Discussion: https://postgr.es/m/20180528085747.GA27845@paquier.xyz

6 years agoLimit Parallel Hash's bucket array to MaxAllocSize.
Thomas Munro [Sun, 10 Jun 2018 08:30:25 +0000 (20:30 +1200)]
Limit Parallel Hash's bucket array to MaxAllocSize.

Make sure that we don't exceed MaxAllocSize when increasing the number of
buckets.  Perhaps later we'll remove that limit and use DSA_ALLOC_HUGE, but
for now just prevent further increases like the non-parallel code.  This
change avoids the error from bug report #15225.

Author: Thomas Munro
Reviewed-By: Tom Lane
Reported-by: Frits Jalvingh
Discussion: https://postgr.es/m/152802081668.26724.16985037679312485972%40wrigleys.postgresql.org

6 years agoFix typo in JIT README.
Peter Geoghegan [Sat, 9 Jun 2018 16:33:53 +0000 (09:33 -0700)]
Fix typo in JIT README.

Author: Daniel Gustafsson
Discussion: https://postgr.es/m/3747D478-41F9-439F-8074-AC81A5C76346@yesql.se

6 years agoTeach SHOW ALL to honor pg_read_all_settings membership
Alvaro Herrera [Fri, 8 Jun 2018 20:18:40 +0000 (16:18 -0400)]
Teach SHOW ALL to honor pg_read_all_settings membership

Also, fix the pg_settings view to display source filename and line
number when invoked by a pg_read_all_settings member.  This addition by
me (Álvaro).

Also, fix wording of the comment in GetConfigOption regarding the
restriction it implements, renaming the parameter for extra clarity.
Noted by Michaël.

These were all oversight in commit 25fff40798fc; backpatch to pg10,
where that commit first appeared.

Author: Laurenz Albe
Reviewed-by: Michaël Paquier, Álvaro Herrera
Discussion: https://postgr.es/m/1519917758.6586.8.camel@cybertec.at

6 years agoFix typo
Peter Eisentraut [Fri, 8 Jun 2018 15:55:12 +0000 (11:55 -0400)]
Fix typo

6 years agoAdd missing serial commas
Peter Eisentraut [Fri, 8 Jun 2018 03:37:09 +0000 (23:37 -0400)]
Add missing serial commas

6 years agodoc: Move some new options into better positions on man pages
Peter Eisentraut [Fri, 8 Jun 2018 03:36:04 +0000 (23:36 -0400)]
doc: Move some new options into better positions on man pages

6 years agoecpg: Document new compatibility option
Peter Eisentraut [Fri, 8 Jun 2018 03:33:24 +0000 (23:33 -0400)]
ecpg: Document new compatibility option

It's listed in --help, so it should be listed in the man page as well.

6 years agoExclude VACUUMs from RunningXactData
Simon Riggs [Thu, 7 Jun 2018 19:38:12 +0000 (20:38 +0100)]
Exclude VACUUMs from RunningXactData

GetRunningTransactionData() should ignore VACUUM procs because in some
cases they are assigned xids. This could lead to holding back xmin via
the route of passing the xid to standby and then having that hold back
xmin on master via feedback.

Backpatch to 9.1 needed, but will only do so on supported versions.
Backpatch once proven on the buildfarm.

Reported-by: Greg Stark
Author: Simon Riggs
Reviewed-by: Amit Kapila
Discussion: https://postgr.es/m/CANP8+jJBYt=4PpTfiPb0UrH1_iPhzsxKH5Op_Wec634F0ohnAw@mail.gmail.com

6 years agoFix typo in README
Magnus Hagander [Thu, 7 Jun 2018 12:40:38 +0000 (14:40 +0200)]
Fix typo in README

Author: Daniel Gustafsson <daniel@yesql.se>

6 years agoFix obsolete comment.
Heikki Linnakangas [Thu, 7 Jun 2018 06:56:22 +0000 (09:56 +0300)]
Fix obsolete comment.

The 'orig_slot' argument was removed in commit c0a8ae7be392, but that
commit forgot to update the comment.

Author: Amit Langote
Discussion: https://www.postgresql.org/message-id/194ac4bf-7b4a-c887-bf26-bc1a85ea995a@lab.ntt.co.jp

6 years agoFix function code in error report
Alvaro Herrera [Wed, 6 Jun 2018 18:46:53 +0000 (14:46 -0400)]
Fix function code in error report

This bug causes a lseek() failure to be reported as a "could not open"
failure in the error message, muddling bug reports.  I introduced this
copy-and-pasteo in commit 78e122010422.

Noticed while reviewing code for bug report #15221, from lily liang.  In
version 10 the affected function is only used by multixact.c and
commit_ts, and only in corner-case circumstances, neither of which are
involved in the reported bug (a pg_subtrans failure.)

Author: Álvaro Herrera

6 years agoFix spurious non-ASCII bytes
Peter Eisentraut [Mon, 4 Jun 2018 20:17:34 +0000 (16:17 -0400)]
Fix spurious non-ASCII bytes

6 years agoFix typo
Peter Eisentraut [Mon, 4 Jun 2018 19:34:42 +0000 (15:34 -0400)]
Fix typo

6 years agoPut new command-line options into alphabetical order
Peter Eisentraut [Mon, 4 Jun 2018 19:03:15 +0000 (15:03 -0400)]
Put new command-line options into alphabetical order

6 years agoTweak partitioning documentation wording
Alvaro Herrera [Fri, 1 Jun 2018 18:54:43 +0000 (14:54 -0400)]
Tweak partitioning documentation wording

For clarity, precision, grammar.

Author: Justin Pryzby
Reviewed-by: Amit Langote, Álvaro Herrera
Discussion: https://postgr.es/m/20180523213513.GM30060@telsasoft.com

6 years agoReconcile nodes/*funcs.c with PostgreSQL 11 work.
Noah Misch [Thu, 31 May 2018 23:07:13 +0000 (16:07 -0700)]
Reconcile nodes/*funcs.c with PostgreSQL 11 work.

This covers new fields in two outfuncs.c functions having no readfuncs.c
counterpart.  Thus, this changes only debugging output.

6 years agoFix compile-time warnings on all perl code
Andrew Dunstan [Thu, 31 May 2018 12:13:02 +0000 (08:13 -0400)]
Fix compile-time warnings on all perl code

This patch does two things. First, it silences a number of compile-time
warnings in the msvc tools files, mainly those due to the fact that in
some cases we have more than one package per file. Second it supplies a
dummy Perl library with just enough of the Windows API referred to in
our code to let it run these checks cleanly, even on Unix machines where
the code is never supposed to run. The dummy library should only be used
for that purpose, as its README notes.

6 years agoFix grammar
Alvaro Herrera [Wed, 30 May 2018 18:08:51 +0000 (14:08 -0400)]
Fix grammar

Reported-by: Pavlo Golub
Author: Michaël Paquier
Discussion: https://postgr.es/m/152741547.20180530101229@cybertec.at

6 years agoMove _bt_upgrademetapage() into critical section.
Teodor Sigaev [Wed, 30 May 2018 16:45:39 +0000 (19:45 +0300)]
Move _bt_upgrademetapage() into critical section.

Any changes on page should be done in critical section, so move
_bt_upgrademetapage into critical section. Improve comment. Found by Amit
Kapila during post-commit review of 857f9c36.

Author: Amit Kapila

6 years agoInitialize new jsonb iterator to zero
Peter Eisentraut [Tue, 29 May 2018 03:53:43 +0000 (23:53 -0400)]
Initialize new jsonb iterator to zero

Use palloc0() instead of palloc() to create a new JsonbIterator.
Otherwise, the isScalar field is sometimes not initialized.  There is
probably no impact in practice, but it's cleaner this way and it avoids
future problems.

6 years agoReturn a value from Install.pm's lcopy function
Andrew Dunstan [Mon, 28 May 2018 20:44:13 +0000 (16:44 -0400)]
Return a value from Install.pm's lcopy function

Commit 3a7cc727c was a little over eager about adding an explicit return
to this function, whose value is checked in most call sites. This change
reverses that and returns the expected value explicitly. It also adds a
check to the one call site lacking one.

6 years agodoc: mark 'replaceable' parameter for backup program listing
Bruce Momjian [Mon, 28 May 2018 18:19:45 +0000 (14:19 -0400)]
doc:  mark 'replaceable' parameter for backup program listing

Reported-by: Liudmila Mantrova
Discussion: https://postgr.es/m/f3e2c0f5-5266-d626-58d7-b77e1b29d870@postgrespro.ru

Author: Liudmila Mantrova

Backpatch-through: 9.3

6 years agodoc: adjust DECLARE docs to mention FOR UPDATE behavior
Bruce Momjian [Mon, 28 May 2018 17:16:02 +0000 (13:16 -0400)]
doc:  adjust DECLARE docs to mention FOR UPDATE behavior

Reported-by: Peter Eisentraut
Discussion: https://postgr.es/m/8dc63ba7-dc56-fc7c-fc16-4fae03e3bfe6@2ndquadrant.com

Author: Peter Eisentraut, Tom Lane, me

Backpatch-through: 9.3

6 years agoAvoid use of unportable hex constant in convutils.pm
Andrew Dunstan [Sun, 27 May 2018 14:41:19 +0000 (10:41 -0400)]
Avoid use of unportable hex constant in convutils.pm

Discussion: https://postgr.es/m/5a6d6de8-cff8-1ffb-946c-ccf381800ea1@2ndQuadrant.com

6 years agoDon't fall off the end of perl functions
Andrew Dunstan [Sun, 27 May 2018 13:08:42 +0000 (09:08 -0400)]
Don't fall off the end of perl functions

This complies with the perlcritic policy
Subroutines::RequireFinalReturn, which is a severity 4 policy. Since we
only currently check at severity level 5, the policy is raised to that
level until we move to level 4 or lower, so that any new infringements
will be caught.

A small cosmetic piece of tidying of the pgperlcritic script is
included.

Mike Blackwell

Discussion: https://postgr.es/m/CAESHdJpfFm_9wQnQ3koY3c91FoRQsO-fh02za9R3OEMndOn84A@mail.gmail.com

6 years agoDon't force a blank line before comments in perl code
Andrew Dunstan [Sun, 27 May 2018 12:53:54 +0000 (08:53 -0400)]
Don't force a blank line before comments in perl code

Suggestion from Bruce Momjian

Discussion: https://postgr.es/m/20180525190445.GA2213@momjian.us

6 years agoUpdate a couple of long-obsolete comments in pg_type.h.
Tom Lane [Sat, 26 May 2018 17:47:26 +0000 (13:47 -0400)]
Update a couple of long-obsolete comments in pg_type.h.

6 years agoFix misidentification of SQL statement type in plpgsql's exec_stmt_execsql.
Tom Lane [Fri, 25 May 2018 18:31:06 +0000 (14:31 -0400)]
Fix misidentification of SQL statement type in plpgsql's exec_stmt_execsql.

To distinguish SQL statements that are INSERT/UPDATE/DELETE from other
ones, exec_stmt_execsql looked at the post-rewrite form of the statement
rather than the original.  This is problematic because it did that only
during first execution of the statement (in a session), but the correct
answer could change later due to addition or removal of DO INSTEAD rules
during the session.  That could lead to an Assert failure, as reported
by Tushar Ahuja and Robert Haas.  In non-assert builds, there's a hazard
that we would fail to enforce STRICT behavior when we'd be expected to.
That would happen if an initially present DO INSTEAD, that replaced the
original statement with one of a different type, were removed; after that
the statement should act "normally", including strictness enforcement, but
it didn't.  (The converse case of enforcing strictness when we shouldn't
doesn't seem to be a hazard, as addition of a DO INSTEAD that changes the
statement type would always lead to acting as though the statement returned
zero rows, so that the strictness error could not fire.)

To fix, inspect the original form of the statement not the post-rewrite
form, making it valid to assume the answer can't change intra-session.
This should lead to the same answer in every case except when there is a
DO INSTEAD that changes the statement type; we will now set mod_stmt=true
anyway, while we would not have done so before.  That breaks the Assert
in the SPI_OK_REWRITTEN code path, which expected the latter behavior.
It might be all right to assert mod_stmt rather than !mod_stmt there,
but I'm not entirely convinced that that'd always hold, so just remove
the assertion altogether.

This has been broken for a long time, so back-patch to all supported
branches.

Discussion: https://postgr.es/m/CA+TgmoZUrRN4xvZe_BbBn_Xp0BDwuMEue-0OyF0fJpfvU2Yc7Q@mail.gmail.com

6 years agoRemove incorrect statement about IPC configuration on OpenBSD
Magnus Hagander [Fri, 25 May 2018 11:59:50 +0000 (13:59 +0200)]
Remove incorrect statement about IPC configuration on OpenBSD

kern.ipc.shm_use_phys is not a sysctl on OpenBSD, and SEMMAP is not
a kernel configuration option. These were probably copy pasteos from
when the documentation had a single paragraph for *BSD.

Author: Daniel Gustafsson <daniel@yesql.se>

6 years agoUpdate non-default collation tests for getObjectDescription() changes.
Tom Lane [Thu, 24 May 2018 21:41:52 +0000 (17:41 -0400)]
Update non-default collation tests for getObjectDescription() changes.

Sigh, also missed in commit b86b7bfa3.  Per buildfarm.

6 years agoUpdate sepgsql regression test output for getObjectDescription() changes.
Tom Lane [Thu, 24 May 2018 20:11:25 +0000 (16:11 -0400)]
Update sepgsql regression test output for getObjectDescription() changes.

Missed in commit b86b7bfa3.  Per buildfarm.

6 years agoImprove English wording of some other getObjectDescription() messages.
Tom Lane [Thu, 24 May 2018 18:01:10 +0000 (14:01 -0400)]
Improve English wording of some other getObjectDescription() messages.

Print columns as "column C of <relation>" rather than "<relation> column
C".  This seems to read noticeably better in English, as evidenced by the
regression test output changes, and the code change also makes it possible
for translators to adjust the phrase order in other languages.

Also change the output for OCLASS_DEFAULT from "default for %s" to
"default value for %s".  This seems to read better and is also more
consistent with the output of, for instance, getObjectTypeDescription().

Kyotaro Horiguchi, per a complaint from me

Discussion: https://postgr.es/m/20180522.182020.114074746.horiguchi.kyotaro@lab.ntt.co.jp

6 years agoImprove translatability of some getObjectDescription() messages.
Tom Lane [Thu, 24 May 2018 17:20:16 +0000 (13:20 -0400)]
Improve translatability of some getObjectDescription() messages.

Refactor some cases in getObjectDescription so that the translator has
more control over phrase order in the translated messages.  This doesn't
cause any changes in the English results.  (I was sorely tempted to
reorder "... belonging to role %s in schema %s" into "... in schema %s
belonging to role %s", but refrained.)

In principle we could back-patch this, but since translators have not
complained about these cases previously, it seems better not to thrash
the translatable strings in back branches.

Kyotaro Horiguchi, tweaked a bit by me

Discussion: https://postgr.es/m/20180522.182020.114074746.horiguchi.kyotaro@lab.ntt.co.jp

6 years agoFix objectaddress.c code for publication relations.
Tom Lane [Thu, 24 May 2018 16:38:55 +0000 (12:38 -0400)]
Fix objectaddress.c code for publication relations.

getObjectDescription and getObjectIdentity failed to schema-qualify
the name of the published table, which is bad in getObjectDescription and
unforgivable in getObjectIdentity.  Actually, getObjectIdentity failed to
emit the table's name at all unless "objname" output is requested, which
accidentally works for some (all?) extant callers but is clearly not the
intended API.  Somebody had also not gotten the memo that the output of
getObjectIdentity is not to be translated.

To fix getObjectDescription, I made it call getRelationDescription, which
required refactoring the translatable string for the case, but is more
future-proof in case we ever publish relations that aren't plain tables.
While at it, I made the English output look like "publication of table X
in publication Y"; the added "of" seems to me to make it read much better.

Back-patch to v10 where publications were introduced.

Discussion: https://postgr.es/m/20180522.182020.114074746.horiguchi.kyotaro@lab.ntt.co.jp

6 years agoProperly schema-qualify additional object types in getObjectDescription().
Tom Lane [Thu, 24 May 2018 16:07:41 +0000 (12:07 -0400)]
Properly schema-qualify additional object types in getObjectDescription().

Collations, conversions, extended statistics objects (in >= v10),
and all four types of text search objects have schema-qualified names.
getObjectDescription() ignored that and would emit just the base name of
the object, potentially producing wrong or at least highly misleading
output.  Fix it to add the schema name whenever the object is not "visible"
in the current search path, as is the rule for other schema-qualifiable
object types.

Although in common situations the output won't change, this seems to me
(tgl) to be a bug worthy of back-patching, hence do so.

Kyotaro Horiguchi, per a complaint from me

Discussion: https://postgr.es/m/20180522.182020.114074746.horiguchi.kyotaro@lab.ntt.co.jp

6 years agoPreserve information on use of git-external-diff
Andrew Dunstan [Thu, 24 May 2018 14:15:31 +0000 (23:45 +0930)]
Preserve information on use of git-external-diff

Now that the Working with git wiki page no longer suggests producing
context diffs, we should preserve the information on how to use
git-external-diff for those people who want to view context format
diffs. The most obvious place is in the script itself, so that's what's
done here.

6 years agodoc: PG 11 rel notes: add PL/pgSQL composite DDL item
Bruce Momjian [Thu, 24 May 2018 02:06:31 +0000 (22:06 -0400)]
doc:  PG 11 rel notes:  add PL/pgSQL composite DDL item

Reported-by: Tom Lane
6 years agoFix simple_prompt() to disable echo on Windows when stdin != terminal.
Tom Lane [Wed, 23 May 2018 23:04:34 +0000 (19:04 -0400)]
Fix simple_prompt() to disable echo on Windows when stdin != terminal.

If echo = false, simple_prompt() is supposed to prevent echoing the
input (for password input).  However, the Windows implementation applied
the mode change to STD_INPUT_HANDLE.  That would not have the desired
effect if stdin isn't actually the terminal, for instance if the user
is piping something into psql.  Fix it to apply the mode change to
the correct input file, so that passwords do not echo in such cases.

In passing, shorten and de-uglify this code by using #elif rather than
an #if nest and removing some duplicated code.

Back-patch to all supported versions.  To simplify that, also back-patch
the portions of commit 9daec77e1 that got rid of an unnecessary
malloc/free in the same area.

Matthew Stickney (cosmetic changes by me)

Discussion: https://postgr.es/m/502a1fff-862b-da52-1031-f68df6ed5a2d@gmail.com

6 years agoRemove configure's check for nonstandard "long long" printf modifiers.
Tom Lane [Wed, 23 May 2018 18:19:04 +0000 (14:19 -0400)]
Remove configure's check for nonstandard "long long" printf modifiers.

We used to claim to support platforms using 'q' or 'I64' as the printf
length modifier for long long int, by dint of replacing snprintf with
our own code which uses the C99 standard 'll' modifier.  But that is
only adequate if we use INT64_MODIFIER only in snprintf-based calls,
not directly with the platform's native printf or fprintf.  Which
hasn't been the case for years.  We had not noticed, partially because
of inadequate test coverage, and partially because the buildfarm is
almost completely bare of machines that won't take 'll'.  The last
one seems to have been frogmouth, which was adjusted recently so that
it will take 'll'.  We might as well just give up on the pretense
that anything else works, and save ourselves some configure cycles.

Discussion: https://postgr.es/m/13103.1526749980@sss.pgh.pa.us
Discussion: https://postgr.es/m/24769.1526772680@sss.pgh.pa.us

6 years agoFix incorrect ordering of operations in pg_resetwal and pg_rewind.
Tom Lane [Wed, 23 May 2018 14:59:55 +0000 (10:59 -0400)]
Fix incorrect ordering of operations in pg_resetwal and pg_rewind.

Commit c37b3d08c dropped its added GetDataDirectoryCreatePerm call into
the wrong place in pg_resetwal.c, namely after the chdir to DataDir.
That broke invocations using a relative path, as reported by Tushar Ahuja.
We could have left it where it was and changed the argument to be ".",
but that'd result in a rather confusing error message in event of a
failure, so re-ordering seems like a better solution.

Similarly reorder operations in pg_rewind.c.  The issue there is that
it doesn't seem like a good idea to do any actual operations before the
not-root check (on Unix) or the restricted token acquisition (on Windows).
I don't know that this is an actual bug, but I'm definitely not convinced
that it isn't, either.

Assorted other code review for c37b3d08c and da9b580d8: fix some
misspelled or otherwise badly worded comments, put the #include for
<sys/stat.h> where it actually belongs, etc.

Discussion: https://postgr.es/m/aeb9c3a7-3c3f-a57f-1a18-c8d4fcdc2a1f@enterprisedb.com

6 years agoAccept "B" in all memory-unit GUCs, and improve error messages.
Heikki Linnakangas [Wed, 23 May 2018 07:02:40 +0000 (10:02 +0300)]
Accept "B" in all memory-unit GUCs, and improve error messages.

Commit 6e7baa3227 added support for "B" unit, for specifying config options
in bytes. However, it was only accepted in GUC_UNIT_BYTE settings,
wal_segment_size and track_activity_query_size, and not e.g. in work_mem.
This patch makes it consistent, so that "B" accepted in all the same
contexts where "kB", "MB", and so forth are accepted.

Add "B" to the list of accepted units in the error hint, along with "kB",
"MB", etc.

Add an entry in the conversion table for "TB" to "B" conversion. A terabyte
is out of range for any GUC_UNIT_BYTE option, so you always get an "out of
range" error with that, but without it, you get a confusing error message
that claims that "TB" is not an accepted unit, with a hint that nevertheless
lists "TB" as an accepted unit.

Reviewed-by: Alexander Korotkov, Andres Freund
Discussion: https://www.postgresql.org/message-id/1bfe7f4a-7e22-aa6e-7b37-f4d222ed2d67@iki.fi

6 years agodoc: PG 11 release notes fix for pg_dump --create, author
Bruce Momjian [Wed, 23 May 2018 02:39:48 +0000 (22:39 -0400)]
doc:  PG 11 release notes fix for pg_dump --create, author

6 years agodoc: PG 11 release notes, add third author
Bruce Momjian [Wed, 23 May 2018 01:42:25 +0000 (21:42 -0400)]
doc:  PG 11 release notes, add third author

6 years agodoc: PG 11 release note fixes: PGhost, typo
Bruce Momjian [Wed, 23 May 2018 01:40:55 +0000 (21:40 -0400)]
doc:  PG 11 release note fixes: PGhost, typo

6 years agoWiden COPY FROM's current-line-number counter from 32 to 64 bits.
Tom Lane [Tue, 22 May 2018 17:32:52 +0000 (13:32 -0400)]
Widen COPY FROM's current-line-number counter from 32 to 64 bits.

Because the code for the HEADER option skips a line when this counter
is zero, a very long COPY FROM WITH HEADER operation would drop a line
every 2^32 lines.  A lesser but still unfortunate problem is that errors
would show a wrong input line number for errors occurring beyond the
2^31'st input line.  While such large input streams seemed impractical
when this code was first written, they're not any more.  Widening the
counter (and some associated variables) to uint64 should be enough to
prevent problems for the foreseeable future.

David Rowley

Discussion: https://postgr.es/m/CAKJS1f88yh-6wwEfO6QLEEvH3BEugOq2QX1TOja0vCauoynmOQ@mail.gmail.com

6 years agoAdd missing files to src/backend/lib/README.
Heikki Linnakangas [Tue, 22 May 2018 10:17:33 +0000 (13:17 +0300)]
Add missing files to src/backend/lib/README.

The README lists all the files available in the directory, along with short
descriptions of each, but a few newly added ones were missing. While we're
at it, reorder the list into alphabetical order.

Author: Takeshi Ideriha
Discussion: https://www.postgresql.org/message-id/4E72940DA2BF16479384A86D54D0988A56793487@G01JPEXMBKW04

6 years agoFix typo in comment.
Heikki Linnakangas [Tue, 22 May 2018 08:15:00 +0000 (11:15 +0300)]
Fix typo in comment.

6 years agoStamp 11beta1. REL_11_BETA1
Tom Lane [Mon, 21 May 2018 21:08:10 +0000 (17:08 -0400)]
Stamp 11beta1.

6 years agoUpdate SQL features list
Peter Eisentraut [Mon, 21 May 2018 19:29:22 +0000 (15:29 -0400)]
Update SQL features list

6 years agodoc: Use = after long options in documentation
Peter Eisentraut [Mon, 21 May 2018 18:54:24 +0000 (14:54 -0400)]
doc: Use = after long options in documentation

It's good for consistency and makes the examples easier to read.

6 years agodoc: Fix some trailing whitespace
Peter Eisentraut [Mon, 21 May 2018 18:49:53 +0000 (14:49 -0400)]
doc: Fix some trailing whitespace

6 years agodoc: Whitespace fixes in man pages
Peter Eisentraut [Mon, 21 May 2018 18:41:27 +0000 (14:41 -0400)]
doc: Whitespace fixes in man pages

6 years agoDoc: preliminary list of PG11 major features.
Tom Lane [Mon, 21 May 2018 16:36:59 +0000 (12:36 -0400)]
Doc: preliminary list of PG11 major features.

This might get bike-shedded a bit later, but it's better than shipping
beta1 with no list.

Jonathan Katz

Discussion: https://postgr.es/m/D73971C5-8277-44F2-95D9-C0B6E46EB55B@postgresql.org

6 years agoTranslation updates
Peter Eisentraut [Mon, 21 May 2018 16:27:42 +0000 (12:27 -0400)]
Translation updates

Source-Git-URL: git://git.postgresql.org/git/pgtranslation/messages.git
Source-Git-Hash: 3a5a71cccad5c68e01008e9e3a4f06930197a05e

6 years agoFix SQL:2008 FETCH FIRST syntax to allow parameters.
Andrew Gierth [Mon, 21 May 2018 16:02:17 +0000 (17:02 +0100)]
Fix SQL:2008 FETCH FIRST syntax to allow parameters.

OFFSET <x> ROWS FETCH FIRST <y> ROWS ONLY syntax is supposed to accept
<simple value specification>, which includes parameters as well as
literals. When this syntax was added all those years ago, it was done
inconsistently, with <x> and <y> being different subsets of the
standard syntax.

Rectify that by making <x> and <y> accept the same thing, and allowing
either a (signed) numeric literal or a c_expr there, which allows for
parameters, variables, and parenthesized arbitrary expressions.

Per bug #15200 from Lukas Eder.

Backpatch all the way, since this has been broken from the start.

Discussion: https://postgr.es/m/877enz476l.fsf@news-spur.riddles.org.uk
Discussion: http://postgr.es/m/152647780335.27204.16895288237122418685@wrigleys.postgresql.org

6 years agoUpdate key words table for version 11
Peter Eisentraut [Mon, 21 May 2018 16:14:46 +0000 (12:14 -0400)]
Update key words table for version 11

6 years agodoc: Fix some whitespace issues
Peter Eisentraut [Mon, 21 May 2018 15:41:37 +0000 (11:41 -0400)]
doc: Fix some whitespace issues

6 years agoImprove spelling of new FINALFUNC_MODIFY aggregate attribute.
Tom Lane [Mon, 21 May 2018 15:41:42 +0000 (11:41 -0400)]
Improve spelling of new FINALFUNC_MODIFY aggregate attribute.

I'd used SHARABLE as a value originally, but Peter Eisentraut points out
that dictionaries agree that SHAREABLE is the preferred spelling.
Run around and change that before it's too late.

Discussion: https://postgr.es/m/d2e1afd4-659c-50d6-1b20-7cfd3675e909@2ndquadrant.com

6 years agoDoc: fix bogus cross-reference link.
Tom Lane [Mon, 21 May 2018 15:21:08 +0000 (11:21 -0400)]
Doc: fix bogus cross-reference link.

An xref to a <para>'s ID isn't very helpful because paras don't have
names.  This causes a warning while building PDFs, though for some
reason not while building HTML.  The link arguably went to the wrong
place, too.

To fix, introduce a sub-section we can reference.

6 years agopg_basebackup: Remove short option -k
Peter Eisentraut [Mon, 21 May 2018 14:01:49 +0000 (10:01 -0400)]
pg_basebackup: Remove short option -k

-k meant --no-verify-checksums, which is the opposite of what initdb
uses -k for.  After discussion, a short option does not seem necessary,
so just keep the long option.

Discussion: https://www.postgresql.org/message-id/flat/d510f8aa-19e1-d06e-7630-ad27f7441d68%402ndquadrant.com

6 years agoFix unsafe usage of strerror(errno) within ereport().
Tom Lane [Mon, 21 May 2018 04:32:28 +0000 (00:32 -0400)]
Fix unsafe usage of strerror(errno) within ereport().

This is the converse of the unsafe-usage-of-%m problem: the reason
ereport/elog provide that format code is mainly to dodge the hazard
of errno getting changed before control reaches functions within the
arguments of the macro.  I only found one instance of this hazard,
but it's been there since 9.4 :-(.

6 years agoFix unportable usage of printf("%m").
Tom Lane [Sun, 20 May 2018 22:06:00 +0000 (18:06 -0400)]
Fix unportable usage of printf("%m").

While glibc's version of printf accepts %m, most others do not;
to be portable, we have to do it the hard way with strerror(errno).
pg_verify_checksums evidently did not get that memo.

Noted while fooling around with NetBSD-current, which generates
a compiler warning for this mistake.

6 years agoprintf("%lf") is not portable, so omit the "l".
Tom Lane [Sun, 20 May 2018 15:40:54 +0000 (11:40 -0400)]
printf("%lf") is not portable, so omit the "l".

The "l" (ell) width spec means something in the corresponding scanf usage,
but not here.  While modern POSIX says that applying "l" to "f" and other
floating format specs is a no-op, SUSv2 says it's undefined.  Buildfarm
experience says that some old compilers emit warnings about it, and at
least one old stdio implementation (mingw's "ANSI" option) actually
produces wrong answers and/or crashes.

Discussion: https://postgr.es/m/21670.1526769114@sss.pgh.pa.us
Discussion: https://postgr.es/m/c085e1da-0d64-1c15-242d-c921f32e0d5c@dunslane.net

6 years agoAssorted minor cleanups for bootstrap-data Perl scripts.
Tom Lane [Sat, 19 May 2018 20:04:47 +0000 (16:04 -0400)]
Assorted minor cleanups for bootstrap-data Perl scripts.

FindDefinedSymbol was intended to take an array of possible include
paths, but it never actually worked correctly for any but the first
array element.  Since there's no use-case for more than one path
anyway, let's just simplify this code and its callers by redefining
it as taking only one include path.

Minor other code-beautification without functional effects, except
that in one place we format the output as pgindent would do.

John Naylor

Discussion: https://postgr.es/m/CAJVSVGXM_n32hTTkircW4_K1LQFsJNb6xjs0pAP4QC0ZpyJfPQ@mail.gmail.com

6 years agoSupport platforms where strtoll/strtoull are spelled __strtoll/__strtoull.
Tom Lane [Sat, 19 May 2018 18:22:18 +0000 (14:22 -0400)]
Support platforms where strtoll/strtoull are spelled __strtoll/__strtoull.

Ancient HPUX, for one, does this.  We hadn't noticed due to the lack
of regression tests that required a working strtoll.

(I was slightly tempted to remove the other historical spelling,
strto[u]q, since it seems we have no buildfarm members testing that case.
But I refrained.)

Discussion: https://postgr.es/m/151935568942.1461.14623890240535309745@wrigleys.postgresql.org

6 years agoArrange to supply declarations for strtoll/strtoull if needed.
Tom Lane [Sat, 19 May 2018 02:42:10 +0000 (22:42 -0400)]
Arrange to supply declarations for strtoll/strtoull if needed.

Buildfarm member dromedary is still unhappy about the recently-added
ecpg "long long" tests.  The reason turns out to be that it includes
"-ansi" in its CFLAGS, and in their infinite wisdom Apple have decided
to hide the declarations of strtoll/strtoull in C89-compliant builds.
(I find it pretty curious that they hide those function declarations
when you can nonetheless declare a "long long" variable, but anyway
that is their behavior, both on dromedary's obsolete macOS version and
the newest and shiniest.)  As a result, gcc assumes these functions
return "int", leading naturally to wrong results.

(Looking at dromedary's past build results, it's evident that this
problem also breaks pg_strtouint64() on 32-bit platforms; but we
evidently have no regression tests that exercise that function with
values above 32 bits.)

To fix, supply declarations for these functions when the platform
provides the functions but not the declarations, using the same type
of mechanism as we use for some other similar cases.

Discussion: https://postgr.es/m/151935568942.1461.14623890240535309745@wrigleys.postgresql.org

6 years agoFix for globals.c- c.h must come first
Stephen Frost [Sat, 19 May 2018 01:20:27 +0000 (21:20 -0400)]
Fix for globals.c- c.h must come first

Commit da9b580 mistakenly put a system header before postgres.h (which
includes c.h).  That can cause portability issues and broke (at least)
builds with older Windows compilers.

Discovered by Mark Dilger.

Discussion: https://postgr.es/m/BF04A27A-D132-4927-A80A-BAD18695E954@gmail.com