]> granicus.if.org Git - postgresql/log
postgresql
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

6 years agoHot-fix ecpg regression test for missing ecpg_config.h inclusion.
Tom Lane [Fri, 18 May 2018 23:03:32 +0000 (19:03 -0400)]
Hot-fix ecpg regression test for missing ecpg_config.h inclusion.

I don't think this is really the best long-term answer, and in
particular it doesn't fix the pre-existing hazard in sqltypes.h.
But for the moment let's just try to make the buildfarm green again.

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

6 years agoFurther adjust comment in get_partition_dispatch_recurse.
Robert Haas [Fri, 18 May 2018 20:09:14 +0000 (16:09 -0400)]
Further adjust comment in get_partition_dispatch_recurse.

In editing 09b12d52db1cf1a4c72d876f3fb6c9d06919e51a I made it wrong;
fix that and try to more clearly explain the situation.

Patch by me, reviewed by David Rowley and Amit Langote

Discussion: http://postgr.es/m/CA+TgmobAq+mA5hzm0a5OS38qQY5758DDDGqa3sBJN4hvir-H9w@mail.gmail.com

6 years agoAdd some test coverage for ecpg's "long long" support.
Tom Lane [Fri, 18 May 2018 17:04:59 +0000 (13:04 -0400)]
Add some test coverage for ecpg's "long long" support.

This will only actually exercise the "long long" code paths on platforms
where "long" is 32 bits --- otherwise, the SQL bigint type maps to
plain "long", and we will test that code path instead.  But that's
probably sufficient coverage, and anyway we weren't testing either
code path before.

Dang Minh Huong, tweaked a bit by me

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

6 years agoRecognize that MSVC can support strtoll() and strtoull().
Tom Lane [Fri, 18 May 2018 16:52:28 +0000 (12:52 -0400)]
Recognize that MSVC can support strtoll() and strtoull().

This is needed for full support of "long long" variables in ecpg, but
the previous patch for bug #15080 (commits 51057feaa et al) missed it.
In MSVC versions where the functions don't exist under those names,
we can nonetheless use _strtoi64() and _strtoui64().

Like the previous patch, back-patch all the way.

Dang Minh Huong

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

6 years agoSmall improvement for plpgsql regression test.
Tom Lane [Fri, 18 May 2018 16:10:19 +0000 (12:10 -0400)]
Small improvement for plpgsql regression test.

Use DISCARD PLANS instead of a reconnect to force reconstruction of
a cached plan; this corresponds more nearly to what people might
actually do in practice.

6 years agoFix error message on short read of pg_control
Magnus Hagander [Fri, 18 May 2018 15:52:18 +0000 (17:52 +0200)]
Fix error message on short read of pg_control

Instead of saying "error: success", indicate that we got a working read
but it was too short.

6 years agoMSVC builds must use a separate stamp file for copying generated headers.
Tom Lane [Fri, 18 May 2018 15:53:18 +0000 (11:53 -0400)]
MSVC builds must use a separate stamp file for copying generated headers.

Commit bad51a49a tried to use a shortcut with just one stamp file
recording the actions of generating the pg_*_d.h headers and copying
them to the src/include/catalog/ directory.  That doesn't work in all
scenarios though, so we must use two stamp files like the Makefiles do.

John Naylor

Discussion: https://postgr.es/m/CANFyU944GdHr=puPbA78STnqr=8kgMrGF-VDHck6aO_-qNDALg@mail.gmail.com

6 years agoPrevent possibly spurious error when running perl -cw
Andrew Dunstan [Fri, 18 May 2018 14:46:38 +0000 (10:46 -0400)]
Prevent possibly spurious error when running perl -cw

6 years agoMessage wording and pluralization improvements
Peter Eisentraut [Fri, 18 May 2018 03:05:27 +0000 (23:05 -0400)]
Message wording and pluralization improvements

6 years agoFix whitespace
Peter Eisentraut [Wed, 9 May 2018 18:25:04 +0000 (14:25 -0400)]
Fix whitespace

6 years agodoc: fix description of backward_scan
Andrew Gierth [Thu, 17 May 2018 20:23:48 +0000 (21:23 +0100)]
doc: fix description of backward_scan

The description of the index property backward_scan was incorrect and
misleading; rectify.

Backpatch to 9.6 where the amutils functionality was introduced.

6 years agodoc: fix PG 11 attribution
Bruce Momjian [Thu, 17 May 2018 18:23:22 +0000 (14:23 -0400)]
doc:  fix PG 11 attribution

6 years agoMake numeric power() handle NaNs according to the modern POSIX spec.
Tom Lane [Thu, 17 May 2018 15:10:50 +0000 (11:10 -0400)]
Make numeric power() handle NaNs according to the modern POSIX spec.

In commit 6bdf1303b, we ensured that power()/^ for float8 would honor
the NaN behaviors specified by POSIX standards released in this century,
ie NaN ^ 0 = 1 and 1 ^ NaN = 1.  However, numeric_power() was not
touched and continued to follow the once-common behavior that every
case involving NaN input produces NaN.  For consistency, let's switch
the numeric behavior to the modern spec in the same release that ensures
that behavior for float8.

(Note that while 6bdf1303b was initially back-patched, we later undid
that, concluding that any behavioral change should appear only in v11.)

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

6 years agodoc: PG 11 release notes adjustments
Bruce Momjian [Thu, 17 May 2018 00:36:22 +0000 (20:36 -0400)]
doc:  PG 11 release notes adjustments

6 years agoDetoast plpgsql variables if they might live across a transaction boundary.
Tom Lane [Wed, 16 May 2018 18:56:52 +0000 (14:56 -0400)]
Detoast plpgsql variables if they might live across a transaction boundary.

Up to now, it's been safe for plpgsql to store TOAST pointers in its
variables because the ActiveSnapshot for whatever query called the plpgsql
function will surely protect such TOAST values from being vacuumed away,
even if the owning table rows are committed dead.  With the introduction of
procedures, that assumption is no longer good in "non atomic" executions
of plpgsql code.  We adopt the slightly brute-force solution of detoasting
all TOAST pointers at the time they are stored into variables, if we're in
a non-atomic context, just in case the owning row goes away.

Some care is needed to avoid long-term memory leaks, since plpgsql tends
to run with CurrentMemoryContext pointing to its call-lifespan context,
but we shouldn't assume that no memory is leaked by heap_tuple_fetch_attr.
In plpgsql proper, we can do the detoasting work in the "eval_mcontext".

Most of the code thrashing here is due to the need to add this capability
to expandedrecord.c as well as plpgsql proper.  In expandedrecord.c,
we can't assume that the caller's context is short-lived, so make use of
the short-term sub-context that was already invented for checking domain
constraints.  In view of this repurposing, it seems good to rename that
variable and associated code from "domain_check_cxt" to "short_term_cxt".

Peter Eisentraut and Tom Lane

Discussion: https://postgr.es/m/5AC06865.9050005@anastigmatix.net

6 years agoFix misprocessing of equivalence classes involving record_eq().
Tom Lane [Wed, 16 May 2018 17:46:09 +0000 (13:46 -0400)]
Fix misprocessing of equivalence classes involving record_eq().

canonicalize_ec_expression() is supposed to agree with coerce_type() as to
whether a RelabelType should be inserted to make a subexpression be valid
input for the operators of a given opclass.  However, it did the wrong
thing with named-composite-type inputs to record_eq(): it put in a
RelabelType to RECORDOID, which the parser doesn't.  In some cases this was
harmless because all code paths involving a particular equivalence class
did the same thing, but in other cases this would result in failing to
recognize a composite-type expression as being a member of an equivalence
class that it actually is a member of.  The most obvious bad effect was to
fail to recognize that an index on a composite column could provide the
sort order needed for a mergejoin on that column, as reported by Teodor
Sigaev.  I think there might be other, subtler, cases that result in
misoptimization.  It also seems possible that an unwanted RelabelType
would sometimes get into an emitted plan --- but because record_eq and
friends don't examine the declared type of their input expressions, that
would not create any visible problems.

To fix, just treat RECORDOID as if it were a polymorphic type, which in
some sense it is.  We might want to consider formalizing that a bit more
someday, but for the moment this seems to be the only place where an
IsPolymorphicType() test ought to include RECORDOID as well.

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

Discussion: https://postgr.es/m/a6b22369-e3bf-4d49-f59d-0c41d3551e81@sigaev.ru

6 years agoPass the correct PlannerInfo to PlanForeignModify/PlanDirectModify.
Robert Haas [Wed, 16 May 2018 15:32:38 +0000 (11:32 -0400)]
Pass the correct PlannerInfo to PlanForeignModify/PlanDirectModify.

Previously, we passed the toplevel PlannerInfo, but we actually want
to pass the relevant subroot.  One problem with passing the toplevel
PlannerInfo is that the FDW which wants to push down an UPDATE or
DELETE against a join won't find the relevant joinrel there.
As of commit 1bc0100d270e5bcc980a0629b8726a32a497e788, postgres_fdw
tries to do exactly this and can be made to fail an assertion as a
result.

It's possible that this should be regarded as a bug fix and
back-patched to earlier releases, but for lack of a test case that
fails in earlier releases, no back-patch for now.

Etsuro Fujita, reviewed by Amit Langote.

Discussion: http://postgr.es/m/5AF43E02.30000@lab.ntt.co.jp

6 years agoImprove comment in get_partition_dispatch_recurse.
Robert Haas [Wed, 16 May 2018 14:46:55 +0000 (10:46 -0400)]
Improve comment in get_partition_dispatch_recurse.

David Rowley, reviewed by Amit Langote, and revised a bit by me.

Discussion: http://postgr.es/m/CAKJS1f9yyimYyFzbHM4EwE+tkj4jvrHqSH0H4S4Kbas=UFpc9Q@mail.gmail.com

6 years agodocs: add space in PG 11 release notes, huge/large
Bruce Momjian [Wed, 16 May 2018 00:03:42 +0000 (20:03 -0400)]
docs:  add space in PG 11 release notes, huge/large

Reported-by: Tatsuo Ishii
6 years agodocs: PG 11 rel notes, 'ps' display/background worker item
Bruce Momjian [Tue, 15 May 2018 23:57:40 +0000 (19:57 -0400)]
docs:  PG 11 rel notes, 'ps' display/background worker item

6 years agodoc: adjust Extended Query PG 11 release note item
Bruce Momjian [Tue, 15 May 2018 23:12:16 +0000 (19:12 -0400)]
doc:  adjust Extended Query PG 11 release note item

Reported-by: Tatsuo Ishii
6 years agodocs: update PG 11 release notes based on feedback
Bruce Momjian [Tue, 15 May 2018 19:55:53 +0000 (15:55 -0400)]
docs:  update PG 11 release notes based on feedback

6 years agoFix type checking for support functions of parallel VARIADIC aggregates.
Tom Lane [Tue, 15 May 2018 19:06:53 +0000 (15:06 -0400)]
Fix type checking for support functions of parallel VARIADIC aggregates.

The impact of VARIADIC on the combine/serialize/deserialize support
functions of an aggregate wasn't thought through carefully.  There is
actually no impact, because variadicity isn't passed through to these
functions (and it doesn't seem like it would need to be).  However,
lookup_agg_function was mistakenly told to check things as though it were
passed through.  The net result was that it was impossible to declare an
aggregate that had both VARIADIC input and parallelism support functions.

In passing, fix a runtime check in nodeAgg.c for the combine function's
strictness to make its error message agree with the creation-time check.
The previous message was actually backwards, and it doesn't seem like
there's a good reason to have two versions of this message text anyway.

Back-patch to 9.6 where parallel aggregation was introduced.

Alexey Bashtanov; message fix by me

Discussion: https://postgr.es/m/f86dde87-fef4-71eb-0480-62754aaca01b@imap.cc

6 years agodoc: clarify SCRAM channel binding
Bruce Momjian [Tue, 15 May 2018 00:45:35 +0000 (20:45 -0400)]
doc:  clarify SCRAM channel binding

Discussion: https://postgr.es/m/20180514231020.GB1600@paquier.xyz

Reviewed-by: Michael Paquier
6 years agodoc: update PG 11 release notes with suggested changes
Bruce Momjian [Mon, 14 May 2018 20:41:49 +0000 (16:41 -0400)]
doc:  update PG 11 release notes with suggested changes

6 years agoDon't allow partitioned index on foreign-table partitions
Alvaro Herrera [Mon, 14 May 2018 17:09:32 +0000 (13:09 -0400)]
Don't allow partitioned index on foreign-table partitions

Creating indexes on foreign tables is already forbidden, but local
partitioned indexes (commit 8b08f7d4820f) forgot to check for them.  Add
a preliminary check to prevent wasting time.

Another school of thought says to allow the index to be created if it's
not a unique index; but it's possible to do better in the future (enable
indexing of foreign tables, somehow), so we avoid painting ourselves in
a corner by rejecting all cases, to avoid future grief (a.k.a. backward
incompatible changes).

Reported-by: Arseny Sher
Author: Amit Langote, Álvaro Herrera
Discussion: https://postgr.es/m/87sh71cakz.fsf@ars-thinkpad

6 years agoFix file paths in comments
Magnus Hagander [Mon, 14 May 2018 16:59:43 +0000 (18:59 +0200)]
Fix file paths in comments

Author: Daniel Gustafsson <daniel@yesql.se>

6 years agopsql: have \d show FKs on partitioned tables
Alvaro Herrera [Mon, 14 May 2018 15:43:14 +0000 (11:43 -0400)]
psql: have \d show FKs on partitioned tables

Commit 3de241dba86f missed to update psql to display foreign keys on
partitioned tables.  Add that.

Reported-by: Amit Langote
Author: Amit Langote
Reviewed-by: Álvaro Herrera
Discussion: https://postgr.es/m/a66879e5-636f-d4dd-b4a4-92bdca5a828f@lab.ntt.co.jp

6 years agoDoc: fix minor release-note typo.
Tom Lane [Mon, 14 May 2018 16:08:02 +0000 (12:08 -0400)]
Doc: fix minor release-note typo.

Liudmila Mantrova

Discussion: https://postgr.es/m/d13458be-c4b9-0fd8-f333-c8de4d0c9120@postgrespro.ru

6 years agodoc: update PG 11 rel. notes for ALTER TABLE's non-null default
Bruce Momjian [Sun, 13 May 2018 00:46:37 +0000 (20:46 -0400)]
doc:  update PG 11 rel. notes for ALTER TABLE's non-null default

Reported-by: Peter Geoghegan
6 years agodocs: Rework sections on partition pruning/exclusion
Alvaro Herrera [Sat, 12 May 2018 15:08:17 +0000 (12:08 -0300)]
docs: Rework sections on partition pruning/exclusion

Explain partition pruning more thoroughly, in a section above the one
that explains constraint exclusion, since the new feature is the one
that will be used more extensively from now on.  Move some of the
material from the constraint exclusion subsection to the one on
partition pruning, so that we can explain the legacy method by
explaining the differences with the new one instead of repeating it.

Author: David Rowley, Álvaro Herrera
Reviewed-by: Amit Langote, David G. Johnston, Justin Pryzby
Discussion: https://postgr.es/m/CAKJS1f8PECxEi1YQ9nhVtshtfOMHUzAMm_Zp4gGCOCnMPjEKJA@mail.gmail.com

6 years agoDoc: fix overenthusiastic markup.
Tom Lane [Fri, 11 May 2018 21:19:21 +0000 (17:19 -0400)]
Doc: fix overenthusiastic markup.

I get "WARNING: nested link may be undefined in output: <xref @linkend =
'pgbench'> nested inside parent element link" from this.

Also remove some trailing whitespace.

6 years agodocs: more PG 11 markup and email suggestions
Bruce Momjian [Fri, 11 May 2018 21:06:22 +0000 (17:06 -0400)]
docs:  more PG 11 markup and email suggestions

6 years agodoc: markup for PG 11 release notes and included email tips
Bruce Momjian [Fri, 11 May 2018 18:47:26 +0000 (14:47 -0400)]
doc:  markup for PG 11 release notes and included email tips

6 years agodocs: initial draft of PG 11 release notes
Bruce Momjian [Fri, 11 May 2018 14:54:03 +0000 (10:54 -0400)]
docs:  initial draft of PG 11 release notes

6 years agodocs: clarify that CREATE TABLE ... _AS_ can be parallelized
Bruce Momjian [Fri, 11 May 2018 02:37:26 +0000 (22:37 -0400)]
docs:  clarify that CREATE TABLE ... _AS_ can be parallelized

CREATE TABLE without AS doesn't have anything to parallelize.

6 years agoVarious improvements of skipping index scan during vacuum technics
Teodor Sigaev [Thu, 10 May 2018 10:31:47 +0000 (13:31 +0300)]
Various improvements of skipping index scan during vacuum technics

- Change vacuum_cleanup_index_scale_factor GUC to PGC_USERSET.
  vacuum_cleanup_index_scale_factor GUC was defined as PGC_SIGHUP.  But this
  GUC affects not only autovacuum.  So it might be useful to change it from user
  session in order to influence manually runned VACUUM.
- Add missing tab-complete support for vacuum_cleanup_index_scale_factor
  reloption.
- Fix condition for B-tree index cleanup.
  Zero value of vacuum_cleanup_index_scale_factor means that user wants B-tree
  index cleanup to be never skipped.
- Documentation and comment improvements

Authors: Justin Pryzby, Alexander Korotkov, Liudmila Mantrova
Reviewed by: all authors and Robert Haas
Discussion: https://www.postgresql.org/message-id/flat/20180502023025.GD7631%40telsasoft.com

6 years agodoc: Restrictions on InitPlans in parallel queries relaxed.
Robert Haas [Wed, 9 May 2018 19:15:03 +0000 (15:15 -0400)]
doc: Restrictions on InitPlans in parallel queries relaxed.

This updates the documentation for changes originally made in commit
e89a71fb449af2ef74f47be1175f99956cf21524.

Patch by me, reviewed (but not entirely endorsed) by Amit Kapila.

Discussion: http://postgr.es/m/CA+Tgmoa+vupW8V_gBonz6hU7WwN2zJ=UTsVWCVB+rN6vaaXfZw@mail.gmail.com

6 years agoUpdate time zone data files to tzdata release 2018e.
Tom Lane [Wed, 9 May 2018 17:55:27 +0000 (13:55 -0400)]
Update time zone data files to tzdata release 2018e.

DST law changes in North Korea.  Redefinition of "daylight savings" in
Ireland, as well as for some past years in Namibia and Czechoslovakia.
Additional historical corrections for Czechoslovakia.

With this change, the IANA database models Irish timekeeping as following
"standard time" in summer, and "daylight savings" in winter, so that the
daylight savings offset is one hour behind standard time not one hour
ahead.  This does not change their UTC offset (+1:00 in summer, 0:00 in
winter) nor their timezone abbreviations (IST in summer, GMT in winter),
though now "IST" is more correctly read as "Irish Standard Time" not "Irish
Summer Time".  However, the "is_dst" column in the pg_timezone_names view
will now be true in winter and false in summer for the Europe/Dublin zone.

Similar changes were made for Namibia between 1994 and 2017, and for
Czechoslovakia between 1946 and 1947.

So far as I can find, no Postgres internal logic cares about which way
tm_isdst is reported; in particular, since commit b2cbced9e we do not
rely on it to decide how to interpret ambiguous timestamps during DST
transitions.  So I don't think this change will affect any Postgres
behavior other than the timezone-view outputs.

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

6 years agopgstatindex, pageinspect: handle partitioned indexes
Alvaro Herrera [Wed, 9 May 2018 17:03:43 +0000 (14:03 -0300)]
pgstatindex, pageinspect: handle partitioned indexes

Commit 8b08f7d4820f failed to update these modules to at least give
non-broken error messages for partitioned indexes.  Add appropriate
error support to them.

Peter G. was complaining about a problem of unfriendly error messages;
while we haven't fixed that yet, subsequent discussion let to discovery
of these unhandled cases.

Author: Michaël Paquier
Reported-by: Peter Geoghegan
Discussion: https://postgr.es/m/CAH2-WzkOKptQiE51Bh4_xeEHhaBwHkZkGtKizrFMgEkfUuRRQg@mail.gmail.com

6 years agopgstatindex: HASH -> hash
Alvaro Herrera [Wed, 9 May 2018 16:44:50 +0000 (13:44 -0300)]
pgstatindex: HASH -> hash

Fix the lone error message in the whole source tree to use capitalized
HASH when referring to hash indexes, making it look like all the other
messages.

Someday it would be good to standardize 'B-Tree', 'B-tree', 'btree', and
random other spellings, too, but that's a larger patch ...

Author: Álvaro Herrera

6 years agoAdd relkind 'I' to catalog.sgml's list relkinds
Alvaro Herrera [Wed, 9 May 2018 16:32:50 +0000 (13:32 -0300)]
Add relkind 'I' to catalog.sgml's list relkinds

Commit 8b08f7d4820f added a relkind for local partitioned indexes, but
failed to add it to pg_class's list of possible relkinds.  Repair.

Author: Peter Geoghegan, Michaël Paquier
Discussion: https://postgr.es/m/CAH2-WzkOKptQiE51Bh4_xeEHhaBwHkZkGtKizrFMgEkfUuRRQg@mail.gmail.com

6 years agoFix assorted partition pruning bugs
Alvaro Herrera [Wed, 9 May 2018 13:51:23 +0000 (10:51 -0300)]
Fix assorted partition pruning bugs

match_clause_to_partition_key failed to consider COERCION_PATH_ARRAYCOERCE
cases in scalar-op-array expressions, so it was possible to crash the
server easily.  To handle this case properly (ie. prune partitions) we
would need to run a bit of executor code during planning.  Maybe it can
be improved, but for now let's just not crash.  Add a test case that
used to trigger the crash.
Author: Michaël Paquier

match_clause_to_partition_key failed to indicate that operators that
don't have a commutator in a btree opclass are unsupported.  It is
possible for this to cause a crash later if such an operator is used in
a scalar-op-array expression.  Add a test case that used to the crash.
Author: Amit Langote

One caller of gen_partprune_steps_internal in
match_clause_to_partition_key was too optimistic about the former never
returning an empty step list.  Rid it of its innocence.  (Having fixed
the bug above, I no longer know how to exploit this, so no test case for
it, but it remained a bug.)  Revise code flow a little bit, for
succintness.
Author: Álvaro Herrera

Reported-by: Marina Polyakova
Reviewed-by: Michaël Paquier
Reviewed-by: Amit Langote
Reviewed-by: Álvaro Herrera
Discussion: https://postgr.es/m/ff8f9bfa485ff961d6bb43e54120485b@postgrespro.ru

6 years agoRestrict vertical tightness to parentheses in Perl code
Andrew Dunstan [Wed, 9 May 2018 14:14:46 +0000 (10:14 -0400)]
Restrict vertical tightness to parentheses in Perl code

The vertical tightness settings collapse vertical whitespace between
opening and closing brackets (parentheses, square brakets and braces).
This can make data structures in particular harder to read, and is not
very consistent with our style in non-Perl code. This patch restricts
that setting to parentheses only, and reformats all the perl code
accordingly. Not applying this to parentheses has some unfortunate
effects, so the consensus is to keep the setting for parentheses and not
for the others.

The diff for this patch does highlight some places where structures
should have trailing commas. They can be added manually, as there is no
automatic tool to do so.

Discussion: https://postgr.es/m/a2f2b87c-56be-c070-bfc0-36288b4b41c1@2ndQuadrant.com

6 years agoperltidy some recent code changes before changing perltidy settings
Andrew Dunstan [Wed, 9 May 2018 14:04:17 +0000 (10:04 -0400)]
perltidy some recent code changes before changing perltidy settings

6 years agoMake gen_partprune_steps static
Alvaro Herrera [Wed, 9 May 2018 13:40:21 +0000 (10:40 -0300)]
Make gen_partprune_steps static

There's no need to export this function, so don't.  Michaël didn't
actually write the patch, but we list him as first author because with a
trivial one like this, intellectual authorship is as important (if not
more) as bit shovelling.

Author: Michaël Paquier, Amit Langote
Discussion: https://postgr.es/m/c91299c4-199b-0f16-339b-a29d6d2a39ee@lab.ntt.co.jp