]> granicus.if.org Git - postgresql/log
postgresql
7 years agoReplace LookupFuncNameTypeNames() with LookupFuncWithArgs()
Peter Eisentraut [Wed, 28 Dec 2016 17:00:00 +0000 (12:00 -0500)]
Replace LookupFuncNameTypeNames() with LookupFuncWithArgs()

The old function took function name and function argument list as
separate arguments.  Now that all function signatures are passed around
as ObjectWithArgs structs, this is no longer necessary and can be
replaced by a function that takes ObjectWithArgs directly.  Similarly
for aggregates and operators.

Reviewed-by: Jim Nasby <Jim.Nasby@BlueTreble.com>
Reviewed-by: Michael Paquier <michael.paquier@gmail.com>
7 years agoRemove objname/objargs split for referring to objects
Peter Eisentraut [Sat, 12 Nov 2016 17:00:00 +0000 (12:00 -0500)]
Remove objname/objargs split for referring to objects

In simpler times, it might have worked to refer to all kinds of objects
by a list of name components and an optional argument list.  But this
doesn't work for all objects, which has resulted in a collection of
hacks to place various other nodes types into these fields, which have
to be unpacked at the other end.  This makes it also weird to represent
lists of such things in the grammar, because they would have to be lists
of singleton lists, to make the unpacking work consistently.  The other
problem is that keeping separate name and args fields makes it awkward
to deal with lists of functions.

Change that by dropping the objargs field and have objname, renamed to
object, be a generic Node, which can then be flexibly assigned and
managed using the normal Node mechanisms.  In many cases it will still
be a List of names, in some cases it will be a string Value, for types
it will be the existing Typename, for functions it will now use the
existing ObjectWithArgs node type.  Some of the more obscure object
types still use somewhat arbitrary nested lists.

Reviewed-by: Jim Nasby <Jim.Nasby@BlueTreble.com>
Reviewed-by: Michael Paquier <michael.paquier@gmail.com>
7 years agoAdd operator_with_argtypes grammar rule
Peter Eisentraut [Wed, 28 Dec 2016 17:00:00 +0000 (12:00 -0500)]
Add operator_with_argtypes grammar rule

This makes the handling of operators similar to that of functions and
aggregates.

Rename node FuncWithArgs to ObjectWithArgs, to reflect the expanded use.

Reviewed-by: Jim Nasby <Jim.Nasby@BlueTreble.com>
Reviewed-by: Michael Paquier <michael.paquier@gmail.com>
7 years agoUse class_args field in opclass_drop
Peter Eisentraut [Wed, 28 Dec 2016 17:00:00 +0000 (12:00 -0500)]
Use class_args field in opclass_drop

This makes it consistent with the usage in opclass_item.

Reviewed-by: Jim Nasby <Jim.Nasby@BlueTreble.com>
Reviewed-by: Michael Paquier <michael.paquier@gmail.com>
7 years agoFix incorrect comments.
Robert Haas [Mon, 6 Mar 2017 18:10:55 +0000 (13:10 -0500)]
Fix incorrect comments.

Commit 19dc233c32f2900e57b8da4f41c0f662ab42e080 introduced these
comments.  Michael Paquier noticed that one of them had a typo, but
a bigger problem is that they were not an accurate description of
what the code was doing.

Patch by me.

7 years agoMark pg_start_backup and pg_stop_backup as parallel-restricted.
Robert Haas [Mon, 6 Mar 2017 17:41:55 +0000 (12:41 -0500)]
Mark pg_start_backup and pg_stop_backup as parallel-restricted.

They depend on backend-private state that will not be synchronized by
the parallel machinery, so they should not be marked parallel-safe.
This issue also exists in 9.6, but we obviously can't do anything
about 9.6 clusters that already exist.  Possibly this could be
back-patched so that future 9.6 clusters would come out OK, or
possibly we should back-patch some other fix, but that would need more
discussion.

David Steele, reviewed by Michael Paquier

Discussion: http://postgr.es/m/CA+TgmoYCWfO2UM-t=HUMFJyxJywLDiLL0nAJpx88LKtvBvNECw@mail.gmail.com

7 years agoFix user-after-free bug.
Robert Haas [Mon, 6 Mar 2017 17:13:06 +0000 (12:13 -0500)]
Fix user-after-free bug.

Introduced by commit aea5d298362e881b13d95a48c5ae116879237389.

Patch from Amit Kapila.  Issue discovered independently by Amit Kapila
and Ashutosh Sharma.

7 years agoReorder the asynchronous libpq calls for replication connection
Peter Eisentraut [Mon, 6 Mar 2017 14:33:26 +0000 (09:33 -0500)]
Reorder the asynchronous libpq calls for replication connection

Per libpq documentation, the initial state must be
PGRES_POLLING_WRITING.  Failing to do that appears to cause some issues
on some Windows systems.

From: Petr Jelinek <petr.jelinek@2ndquadrant.com>

7 years agoEnhance docs for ALTER TABLE lock levels of storage parms
Simon Riggs [Mon, 6 Mar 2017 11:18:12 +0000 (16:48 +0530)]
Enhance docs for ALTER TABLE lock levels of storage parms

As requested by Robert Haas

7 years agoReduce lock levels for table storage params related to planning
Simon Riggs [Mon, 6 Mar 2017 10:34:31 +0000 (16:04 +0530)]
Reduce lock levels for table storage params related to planning

The following parameters are now updateable with ShareUpdateExclusiveLock
effective_io_concurrency
parallel_workers
seq_page_cost
random_page_cost
n_distinct
n_distinct_inherited

Simon Riggs and Fabrízio Mello

7 years agoAllow partitioned tables to be dropped without CASCADE
Simon Riggs [Mon, 6 Mar 2017 10:20:53 +0000 (15:50 +0530)]
Allow partitioned tables to be dropped without CASCADE

Record partitioned table dependencies as DEPENDENCY_AUTO
rather than DEPENDENCY_NORMAL, so that DROP TABLE just works.

Remove all the tests for partitioned tables where earlier
work had deliberately avoided using CASCADE.

Amit Langote, reviewed by Ashutosh Bapat and myself

7 years agoIn rebuild_relation(), don't access an already-closed relcache entry.
Tom Lane [Sat, 4 Mar 2017 21:09:33 +0000 (16:09 -0500)]
In rebuild_relation(), don't access an already-closed relcache entry.

This reliably fails with -DRELCACHE_FORCE_RELEASE, as reported by
Andrew Dunstan, and could sometimes fail in normal operation, resulting
in a wrong persistence value being used for the transient table.
It's not immediately clear to me what effects that might have beyond
the risk of a crash while accessing OldHeap->rd_rel->relpersistence,
but it's probably not good.

Bug introduced by commit f41872d0c, and made substantially worse by
commit 85b506bbf, which added a second such access significantly
later than the heap_close.  I doubt the first reference could fail
in a production scenario, but the second one definitely could.

Discussion: https://postgr.es/m/7b52f900-0579-cda9-ae2e-de5da17090e6@2ndQuadrant.com

7 years agopg_dump: Fix ordering
Peter Eisentraut [Sat, 4 Mar 2017 19:47:27 +0000 (14:47 -0500)]
pg_dump: Fix ordering

Materialized views refresh should be last.

From: Jim Nasby <Jim.Nasby@BlueTreble.com>

7 years agoDisallow CREATE/DROP SUBSCRIPTION in transaction block
Peter Eisentraut [Sat, 4 Mar 2017 04:25:34 +0000 (23:25 -0500)]
Disallow CREATE/DROP SUBSCRIPTION in transaction block

Disallow CREATE SUBSCRIPTION and DROP SUBSCRIPTION in a transaction
block when the replication slot is to be created or dropped, since that
cannot be rolled back.

based on patch by Masahiko Sawada <sawada.mshk@gmail.com>

7 years agoFix parsing of DROP SUBSCRIPTION ... DROP SLOT
Peter Eisentraut [Sat, 4 Mar 2017 03:14:58 +0000 (22:14 -0500)]
Fix parsing of DROP SUBSCRIPTION ... DROP SLOT

It didn't actually parse before.

Reported-by: Masahiko Sawada <sawada.mshk@gmail.com>
7 years agoFix two recently introduced grammar errors in mmgr/README.
Andres Freund [Sat, 4 Mar 2017 01:54:46 +0000 (17:54 -0800)]
Fix two recently introduced grammar errors in mmgr/README.

These were introduced by me in f4e2d50c.

Reported-By: Tomas Vondra
Discussion: https://postgr.es/m/11adca69-be28-44bc-a801-64e6d53851e3@2ndquadrant.com

7 years agoFix typo
Peter Eisentraut [Fri, 3 Mar 2017 23:21:06 +0000 (18:21 -0500)]
Fix typo

7 years agodoc: Put callouts in SQL comments
Peter Eisentraut [Fri, 3 Mar 2017 20:03:03 +0000 (15:03 -0500)]
doc: Put callouts in SQL comments

This makes copy-and-pasting the SQL code easier.

From: Thomas Munro <thomas.munro@enterprisedb.com>

7 years agopsql: Add tab completion for logical replication
Peter Eisentraut [Fri, 3 Mar 2017 19:13:48 +0000 (14:13 -0500)]
psql: Add tab completion for logical replication

Add tab completion for publications and subscriptions.  Also, to be able
to get a list of subscriptions, make pg_subscription world-readable but
revoke access to subconninfo using column privileges.

From: Michael Paquier <michael.paquier@gmail.com>

7 years agoAdd RENAME support for PUBLICATIONs and SUBSCRIPTIONs
Peter Eisentraut [Fri, 3 Mar 2017 15:47:04 +0000 (10:47 -0500)]
Add RENAME support for PUBLICATIONs and SUBSCRIPTIONs

From: Petr Jelinek <petr.jelinek@2ndquadrant.com>

7 years agoFix after trigger execution in logical replication
Peter Eisentraut [Fri, 3 Mar 2017 15:05:56 +0000 (10:05 -0500)]
Fix after trigger execution in logical replication

From: Petr Jelinek <petr.jelinek@2ndquadrant.com>
Tested-by: Thom Brown <thom@linux.com>
7 years agoUse asynchronous connect API in libpqwalreceiver
Peter Eisentraut [Fri, 3 Mar 2017 14:07:22 +0000 (09:07 -0500)]
Use asynchronous connect API in libpqwalreceiver

This makes the connection attempt from CREATE SUBSCRIPTION and from
WalReceiver interruptable by the user in case the libpq connection is
hanging.  The previous coding required immediate shutdown (SIGQUIT) of
PostgreSQL in that situation.

From: Petr Jelinek <petr.jelinek@2ndquadrant.com>
Tested-by: Thom Brown <thom@linux.com>
7 years agoAllow vacuums to report oldestxmin
Simon Riggs [Fri, 3 Mar 2017 13:48:25 +0000 (19:18 +0530)]
Allow vacuums to report oldestxmin

Allow VACUUM and Autovacuum to report the oldestxmin value they
used while cleaning tables, helping to make better sense out of
the other statistics we report in various cases.

7 years agoAdd pg_current_logfile() function.
Robert Haas [Fri, 3 Mar 2017 06:02:45 +0000 (11:32 +0530)]
Add pg_current_logfile() function.

The syslogger will write out the current stderr and csvlog names, if
it's running and there are any, to a new file in the data directory
called "current_logfiles".  We take care to remove this file when it
might no longer be valid (but not at shutdown).  The function
pg_current_logfile() can be used to read the entries in the file.

Gilles Darold, reviewed and modified by Karl O.  Pinc, Michael
Paquier, and me.  Further review by Álvaro Herrera and Christoph Berg.

7 years agoNotify bgworker registrant after freeing worker slot.
Robert Haas [Fri, 3 Mar 2017 03:44:49 +0000 (09:14 +0530)]
Notify bgworker registrant after freeing worker slot.

Tom Lane observed buildfarm failures caused by the select_parallel
regression test trying to launch new parallel queries before the
worker slots used by the previous ones were freed.  Try to fix this by
having the postmaster free the worker slots before it sends the
SIGUSR1 notifications to the registering process.  This doesn't
completely eliminate the possibility that the user backend might
(correctly) observe the worker as dead before the slot is free, but I
believe it should make the window significantly narrower.

Patch by me, per complaint from Tom Lane.  Reviewed by Amit Kapila.

Discussion: http://postgr.es/m/30673.1487310734@sss.pgh.pa.us

7 years agoImprove error reporting for tuple-routing failures.
Robert Haas [Fri, 3 Mar 2017 03:37:41 +0000 (09:07 +0530)]
Improve error reporting for tuple-routing failures.

Currently, the whole row is shown without column names.  Instead,
adopt a style similar to _bt_check_unique() in ExecFindPartition()
and show the failing key: (key1, ...) = (val1, ...).

Amit Langote, per a complaint from Simon Riggs.  Reviewed by me;
I also adjusted the grammar in one of the comments.

Discussion: http://postgr.es/m/9f9dc7ae-14f0-4a25-5485-964d9bfc19bd@lab.ntt.co.jp

7 years agoCorrect old release note item
Peter Eisentraut [Thu, 2 Mar 2017 16:09:44 +0000 (11:09 -0500)]
Correct old release note item

7 years agoUpdate documentation of tsquery_phrase().
Tom Lane [Thu, 2 Mar 2017 14:34:35 +0000 (09:34 -0500)]
Update documentation of tsquery_phrase().

Missed in commit 028350f61.  Noted by Eiji Seki.

7 years agoRefactor bitmap heap scan in preparation for parallel support.
Robert Haas [Thu, 2 Mar 2017 13:17:40 +0000 (18:47 +0530)]
Refactor bitmap heap scan in preparation for parallel support.

The final patch will be less messy if the prefetching support is
a bit better isolated, so do that.

Dilip Kumar, with some changes by me.  The larger patch set of which
this is a part has been reviewed and tested by (at least) Andres
Freund, Amit Khandekar, Tushar Ahuja, Rafia Sabih, Haribabu Kommi, and
Thomas Munro.

7 years agoDon't uselessly rewrite, truncate, VACUUM, or ANALYZE partitioned tables.
Robert Haas [Thu, 2 Mar 2017 11:48:19 +0000 (17:18 +0530)]
Don't uselessly rewrite, truncate, VACUUM, or ANALYZE partitioned tables.

Also, recursively perform VACUUM and ANALYZE on partitions when the
command is applied to a partitioned table.  In passing, some related
documentation updates.

Amit Langote, reviewed by Michael Paquier, Ashutosh Bapat, and by me.

Discussion: http://postgr.es/m/47288cf1-f72c-dfc2-5ff0-4af962ae5c1b@lab.ntt.co.jp

7 years agoUpdate comments overlooked by 2f5c9d9c9cec436e55847ec580606d7e88067df6.
Robert Haas [Thu, 2 Mar 2017 11:33:50 +0000 (17:03 +0530)]
Update comments overlooked by 2f5c9d9c9cec436e55847ec580606d7e88067df6.

Tomas Vondra

7 years agoHandle unaligned SerializeSnapshot() buffer.
Noah Misch [Thu, 2 Mar 2017 05:03:27 +0000 (00:03 -0500)]
Handle unaligned SerializeSnapshot() buffer.

Likewise in RestoreSnapshot().  Do so by copying between the user buffer
and a stack buffer of known alignment.  Back-patch to 9.6, where this
last applies cleanly.  In master, the select_parallel test dies with
SIGBUS on "Oracle Solaris 10 1/13 s10s_u11wos_24a SPARC", building
32-bit with gcc 4.9.2.  In 9.6 and 9.5, the buffers in question happen
to be sufficiently-aligned, and this change is mere insurance against
future 9.6 changes or extension code compromising that.

7 years agoCreate <sect3> in the functions-xml section
Alvaro Herrera [Wed, 1 Mar 2017 22:27:24 +0000 (19:27 -0300)]
Create <sect3> in the functions-xml section

This is a small change so that a new XMLTABLE sect3 can be added easily
later.

Author: Craig Ringer
Discussion: https://postgr.es/m/CAFj8pRAgfzMD-LoSmnMGybD0WsEznLHWap8DO79+-GTRAPR4qA@mail.gmail.com

7 years agoFix timeouts in PostgresNode::psql
Peter Eisentraut [Wed, 1 Mar 2017 18:52:38 +0000 (13:52 -0500)]
Fix timeouts in PostgresNode::psql

Newer Perl or IPC::Run versions default to appending the filename to string
exceptions, e.g. the exception

    psql timed out

 is thrown as

    psql timed out at /usr/share/perl5/vendor_perl/IPC/Run.pm line 2961.

To handle this, match exceptions with !~ rather than ne.

From: Craig Ringer <craig@2ndquadrant.com>
Reviewed-by: Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>
7 years agoFix s/ITERTOR/ITERATOR/ typo in simplehash.h.
Andres Freund [Wed, 1 Mar 2017 18:17:12 +0000 (10:17 -0800)]
Fix s/ITERTOR/ITERATOR/ typo in simplehash.h.

This could lead to problem when simplehash.h is used to define two
different types of hashtable visible in the same translation unit.

Reported-By: Josh Soref
Discussion: https://postgr.es/m/CACZqfqCC7WdBAY=rQePb9-qW1rjdaTdHsV5KoVejHkDb6qrtOg@mail.gmail.com

7 years agoFix naming inconsistency
Peter Eisentraut [Wed, 1 Mar 2017 17:22:33 +0000 (12:22 -0500)]
Fix naming inconsistency

subobjid -> objsubid

From: Jim Nasby <Jim.Nasby@BlueTreble.com>

7 years agoCollect duplicate copies of oid_cmp()
Peter Eisentraut [Wed, 1 Mar 2017 16:55:28 +0000 (11:55 -0500)]
Collect duplicate copies of oid_cmp()

7 years agoMove atooid() definition to a central place
Peter Eisentraut [Wed, 1 Mar 2017 16:55:28 +0000 (11:55 -0500)]
Move atooid() definition to a central place

7 years agopsql: Add tab completion for DEALLOCATE
Peter Eisentraut [Wed, 1 Mar 2017 13:51:57 +0000 (08:51 -0500)]
psql: Add tab completion for DEALLOCATE

EXECUTE already tab-completes the list of prepared statements, but
DEALLOCATE was missing.

From: Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>

7 years agohash: Refactor and clean up bucket split code.
Robert Haas [Wed, 1 Mar 2017 09:13:38 +0000 (14:43 +0530)]
hash: Refactor and clean up bucket split code.

As with commit 30df93f698d016d086e8961aa6c6076b37ea0ef4 and commit
b0f18cb77f50a54e997d857d592f6a511617f52c, the goal here is to move all
of the related page modifications to a single section of code, in
preparation for adding write-ahead logging.

Amit Kapila, with slight changes by me.  The larger patch series of
which this is a part has been reviewed and tested by Álvaro Herrera,
Ashutosh Sharma, Mark Kirkwood, Jeff Janes, and Jesper Pedersen.

7 years agoFix assertion failure due to over-eager code deduplication.
Andres Freund [Wed, 1 Mar 2017 04:41:44 +0000 (20:41 -0800)]
Fix assertion failure due to over-eager code deduplication.

In the previous commit I'd made MemoryContextContains() use
GetMemoryChunkContext(), but that causes trouble when the passed
pointer isn't allocated in any memory context - that's probably
something we shouldn't do, but the previous commit isn't a place for a
"policy" change.

7 years agoOverhaul memory management README.
Andres Freund [Tue, 28 Feb 2017 18:36:29 +0000 (10:36 -0800)]
Overhaul memory management README.

The README was written as a "historical account", and that style
hasn't aged particularly well.  Rephrase it to describe the current
situation, instead of having various version specific comments.

This also updates the description of how allocated chunks are
associated with their corresponding context, the method of which has
changed in the preceding commit.

Author: Andres Freund
Discussion: https://postgr.es/m/20170228074420.aazv4iw6k562mnxg@alap3.anarazel.de

7 years agoReduce size of common allocation header.
Andres Freund [Tue, 28 Feb 2017 07:32:22 +0000 (23:32 -0800)]
Reduce size of common allocation header.

The new slab allocator needs different per-allocation information than
the classical aset.c.  The definition in 58b25e981 wasn't sufficiently
careful on 32 platforms with 8 byte alignment, leading to buildfarm
failures.  That's not entirely easy to fix by just adjusting the
definition.

As slab.c doesn't actually need the size part(s) of the common header,
all chunks are equally sized after all, it seems better to instead
reduce the header to the part needed by all allocators, namely which
context an allocation belongs to. That has the advantage of reducing
the overhead of slab allocations, and also allows for more flexibility
in future allocators.

To avoid spreading the logic about accessing a chunk's context around,
centralize it in GetMemoryChunkContext(), which allows to delete a
good number of lines.

A followup commit will revise the mmgr/README portion about
StandardChunkHeader, and more.

Author: Andres Freund
Discussion: https://postgr.es/m/20170228074420.aazv4iw6k562mnxg@alap3.anarazel.de

7 years agoUse proper enum constants for LockWaitPolicy
Peter Eisentraut [Tue, 28 Feb 2017 04:46:06 +0000 (23:46 -0500)]
Use proper enum constants for LockWaitPolicy

7 years agoFix incorrect variable datatype
Magnus Hagander [Tue, 28 Feb 2017 11:16:42 +0000 (12:16 +0100)]
Fix incorrect variable datatype

Both datatypes map to the same underlying one which is why it still
worked, but we should use the correct type.

Author: Kyotaro HORIGUCHI

7 years agoAllow index AMs to return either HeapTuple or IndexTuple format during IOS.
Tom Lane [Mon, 27 Feb 2017 22:20:34 +0000 (17:20 -0500)]
Allow index AMs to return either HeapTuple or IndexTuple format during IOS.

Previously, only IndexTuple format was supported for the output data of
an index-only scan.  This is fine for btree, which is just returning a
verbatim index tuple anyway.  It's not so fine for SP-GiST, which can
return reconstructed data that's much larger than a page.

To fix, extend the index AM API so that index-only scan data can be
returned in either HeapTuple or IndexTuple format.  There's other ways
we could have done it, but this way avoids an API break for index AMs
that aren't concerned with the issue, and it costs little except a couple
more fields in IndexScanDescs.

I changed both GiST and SP-GiST to use the HeapTuple method.  I'm not
very clear on whether GiST can reconstruct data that's too large for an
IndexTuple, but that seems possible, and it's not much of a code change to
fix.

Per a complaint from Vik Fearing.  Reviewed by Jason Li.

Discussion: https://postgr.es/m/49527f79-530d-0bfe-3dad-d183596afa92@2ndquadrant.fr

7 years agohash: Refactor overflow page allocation.
Robert Haas [Mon, 27 Feb 2017 17:26:34 +0000 (22:56 +0530)]
hash: Refactor overflow page allocation.

As with commit b0f18cb77f50a54e997d857d592f6a511617f52c, the goal
here is to move all of the related page modifications to a single
section of code, in preparation for adding write-ahead logging.

Amit Kapila, with slight changes by me.  The larger patch series
of which this is a part has been reviewed and tested by Álvaro
Herrera, Ashutosh Sharma, Mark Kirkwood, Jeff Janes, and Jesper
Pedersen, all of whom should also have been credited in the
previous commit message.

7 years agohash: Refactor bucket squeeze code.
Robert Haas [Mon, 27 Feb 2017 17:04:21 +0000 (22:34 +0530)]
hash: Refactor bucket squeeze code.

In preparation for adding write-ahead logging to hash indexes,
refactor _hash_freeovflpage and _hash_squeezebucket so that all
related page modifications happen in a single section of code.  The
previous coding assumed that it would be fine to move tuples one at a
time, and also that the various operations involved in freeing an
overflow page didn't necessarily all need to be done together, all
of which is true if you don't care about write-ahead logging.

Amit Kapila, with slight changes by me.

7 years agoRemove PL/Tcl's "module" facility.
Tom Lane [Mon, 27 Feb 2017 16:20:22 +0000 (11:20 -0500)]
Remove PL/Tcl's "module" facility.

PL/Tcl has long had a facility whereby Tcl code could be autoloaded from
a database table named "pltcl_modules".  However, nobody is using it, as
evidenced by the recent discovery that it's never been fixed to work with
standard_conforming_strings turned on.  Moreover, it's rather shaky from
a security standpoint, and the table design is very old and crufty (partly
because it dates from before we had TOAST).  A final problem is that
because the table-population scripts depend on the Tcl client library
Pgtcl, which we removed from the core distribution in 2004, it's
impossible to create a self-contained regression test for the feature.
Rather than try to surmount these problems, let's just remove it.

A follow-on patch will provide a way to execute user-defined
initialization code, similar to features that exist in plperl and plv8.
With that, it will be possible to implement this feature or similar ones
entirely in userspace, which is where it belongs.

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

7 years agochomp PQerrorMessage() in backend uses
Peter Eisentraut [Mon, 27 Feb 2017 13:30:06 +0000 (08:30 -0500)]
chomp PQerrorMessage() in backend uses

PQerrorMessage() returns an error message with a trailing newline, but
in backend use (dblink, postgres_fdw, libpqwalreceiver), we want to have
the error message without that for emitting via ereport().  To simplify
that, add a function pchomp() that returns a pstrdup'ed string with the
trailing newline characters removed.

7 years agoUse the new "Slab" context for some allocations in reorderbuffer.h.
Andres Freund [Mon, 27 Feb 2017 11:41:44 +0000 (03:41 -0800)]
Use the new "Slab" context for some allocations in reorderbuffer.h.

Note that this change alone does not yet fully address the performance
problems triggering this work, a large portion of the slowdown is
triggered by the tuple allocator, which isn't converted to the new
allocator.  It would be possible to do so, but using evenly sized
objects, like both the current implementation in reorderbuffer.c and
slab.c, wastes a fair amount of memory.  A later patch by Tomas will
introduce a better approach.

Author: Tomas Vondra
Reviewed-By: Andres Freund
Discussion: https://postgr.es/m/d15dff83-0b37-28ed-0809-95a5cc7292ad@2ndquadrant.com

7 years agoAdd "Slab" MemoryContext implementation for efficient equal-sized allocations.
Andres Freund [Mon, 27 Feb 2017 11:41:44 +0000 (03:41 -0800)]
Add "Slab" MemoryContext implementation for efficient equal-sized allocations.

The default general purpose aset.c style memory context is not a great
choice for allocations that are all going to be evenly sized,
especially when those objects aren't small, and have varying
lifetimes.  There tends to be a lot of fragmentation, larger
allocations always directly go to libc rather than have their cost
amortized over several pallocs.

These problems lead to the introduction of ad-hoc slab allocators in
reorderbuffer.c. But it turns out that the simplistic implementation
leads to problems when a lot of objects are allocated and freed, as
aset.c is still the underlying implementation. Especially freeing can
easily run into O(n^2) behavior in aset.c.

While the O(n^2) behavior in aset.c can, and probably will, be
addressed, custom allocators for this behavior are more efficient
both in space and time.

This allocator is for evenly sized allocations, and supports both
cheap allocations and freeing, without fragmenting significantly.  It
does so by allocating evenly sized blocks via malloc(), and carves
them into chunks that can be used for allocations.  In order to
release blocks to the OS as early as possible, chunks are allocated
from the fullest block that still has free objects, increasing the
likelihood of a block being entirely unused.

A subsequent commit uses this in reorderbuffer.c, but a further
allocator is needed to resolve the performance problems triggering
this work.

There likely are further potentialy uses of this allocator besides
reorderbuffer.c.

There's potential further optimizations of the new slab.c, in
particular the array of freelists could be replaced by a more
intelligent structure - but for now this looks more than good enough.

Author: Tomas Vondra, editorialized by Andres Freund
Reviewed-By: Andres Freund, Petr Jelinek, Robert Haas, Jim Nasby
Discussion: https://postgr.es/m/d15dff83-0b37-28ed-0809-95a5cc7292ad@2ndquadrant.com

7 years agoMake useful infrastructure from aset.c generally available.
Andres Freund [Mon, 27 Feb 2017 11:41:44 +0000 (03:41 -0800)]
Make useful infrastructure from aset.c generally available.

An upcoming patch introduces a new type of memory context. To avoid
duplicating debugging infrastructure within aset.c, move useful pieces
to memdebug.[ch].

While touching aset.c, fix printf format code in AllocFree* debug
macros.

Author: Tomas Vondra
Reviewed-By: Andres Freund
Discussion: https://postgr.es/m/b3b2245c-b37a-e1e5-ebc4-857c914bc747@2ndquadrant.com

7 years agoAdd missing progname prefix to some messages
Magnus Hagander [Sun, 26 Feb 2017 20:29:34 +0000 (21:29 +0100)]
Add missing progname prefix to some messages

Author: Michael Banck

7 years agoClarify the role of checkpoint at the begininng of base backups
Magnus Hagander [Sun, 26 Feb 2017 20:27:51 +0000 (21:27 +0100)]
Clarify the role of checkpoint at the begininng of base backups

Output a message about checkpoint starting in verbose mode of
pg_basebackup, and make the documentation state more clearly that this
happens.

Author: Michael Banck

7 years agoTAP tests for target_session_attrs connection parameter.
Robert Haas [Sun, 26 Feb 2017 18:11:23 +0000 (23:41 +0530)]
TAP tests for target_session_attrs connection parameter.

Michael Paquier

7 years agoBasic tab completion for partitioning.
Robert Haas [Sun, 26 Feb 2017 17:20:00 +0000 (22:50 +0530)]
Basic tab completion for partitioning.

Amit Langote

Discussion: http://postgr.es/m/CA+TgmobYOj=A8GesiEs_V2Wq46-_w0+7MOwPiNWC+iuzJ-uWjA@mail.gmail.com

7 years agoAllow custom and foreign scans to have shutdown callbacks.
Robert Haas [Sun, 26 Feb 2017 08:06:49 +0000 (13:36 +0530)]
Allow custom and foreign scans to have shutdown callbacks.

This is expected to be useful mostly when performing such scans in
parallel, because in that case it allows (in combination with commit
acf555bc53acb589b5a2827e65d655fa8c9adee0) nodes below a Gather to get
control just before the DSM segment goes away.

KaiGai Kohei, except that I rewrote the documentation.  Reviewed by
Claudio Freire.

Discussion: http://postgr.es/m/CADyhKSXJK0jUJ8rWv4AmKDhsUh124_rEn39eqgfC5D8fu6xVuw@mail.gmail.com

7 years agoPut back #include <windows.h> in dirmod.c.
Tom Lane [Sat, 25 Feb 2017 23:34:09 +0000 (18:34 -0500)]
Put back #include <windows.h> in dirmod.c.

I removed this in commit 9e3755ecb, reasoning that the win32.h
port-specific header file included by c.h would have provided it.
However, that's only true on native win32 builds, not Cygwin builds.

It may be that some of the other <windows.h> inclusions also need
to be put back on the same grounds; but this is the only one that
is clearly meant to be included #ifdef __CYGWIN__, so maybe this is
the extent of the problem.  Awaiting further buildfarm results.

7 years agoRemove some configure header-file checks that we weren't really using.
Tom Lane [Sat, 25 Feb 2017 23:10:09 +0000 (18:10 -0500)]
Remove some configure header-file checks that we weren't really using.

We had some AC_CHECK_HEADER tests that were really wastes of cycles,
because the code proceeded to #include those headers unconditionally
anyway, in all or a large majority of cases.  The lack of complaints
shows that those headers are available on every platform of interest,
so we might as well let configure run a bit faster by not probing
those headers at all.

I suspect that some of the tests I left alone are equally useless, but
since all the existing #includes of the remaining headers are properly
guarded, I didn't touch them.

7 years agoRemove useless duplicate inclusions of system header files.
Tom Lane [Sat, 25 Feb 2017 21:12:24 +0000 (16:12 -0500)]
Remove useless duplicate inclusions of system header files.

c.h #includes a number of core libc header files, such as <stdio.h>.
There's no point in re-including these after having read postgres.h,
postgres_fe.h, or c.h; so remove code that did so.

While at it, also fix some places that were ignoring our standard pattern
of "include postgres[_fe].h, then system header files, then other Postgres
header files".  While there's not any great magic in doing it that way
rather than system headers last, it's silly to have just a few files
deviating from the general pattern.  (But I didn't attempt to enforce this
globally, only in files I was touching anyway.)

I'd be the first to say that this is mostly compulsive neatnik-ism,
but over time it might save enough compile cycles to be useful.

7 years agopg_upgrade docs: clarify instructions on standby extensions
Bruce Momjian [Sat, 25 Feb 2017 17:59:23 +0000 (12:59 -0500)]
pg_upgrade docs:  clarify instructions on standby extensions

Previously the pg_upgrade standby upgrade instructions said not to
execute pgcrypto.sql, but it should have referenced the extension
command "CREATE EXTENSION pgcrypto".  This patch makes that doc change.

Reported-by: a private bug report
Backpatch-through: 9.4, where standby instructions were added

7 years agoSuppress compiler warnings in ecpg test on newer Windows toolchains.
Tom Lane [Fri, 24 Feb 2017 21:45:32 +0000 (16:45 -0500)]
Suppress compiler warnings in ecpg test on newer Windows toolchains.

nan_test.pgc supposed that it could unconditionally #define isnan()
and isinf() on WIN32.  This was evidently copied at some point from
src/include/port/win32.h, but nowadays there's a test on _MSC_VER
there.  Make nan_test.pgc look the same.

Per buildfarm warnings.  There's no evidence this produces anything
worse than a warning, and besides it's only a test case, so I don't
feel a need to back-patch.

7 years agoFix unportable definition of BSWAP64() macro.
Tom Lane [Fri, 24 Feb 2017 20:21:39 +0000 (15:21 -0500)]
Fix unportable definition of BSWAP64() macro.

We have a portable way of writing uint64 constants, but whoever wrote
this macro didn't know about it.

While at it, fix unsafe under-parenthesization of arguments.  That might
be moot, because there are already good reasons not to use the macro on
anything more complicated than a simple variable, but it's still poor
practice.

Per buildfarm warnings.

7 years agoMake tablesample work with partitioned tables.
Robert Haas [Fri, 24 Feb 2017 06:51:46 +0000 (12:21 +0530)]
Make tablesample work with partitioned tables.

This was an oversight in the original partitioning commit.

Amit Langote, reviewed by David Fetter

Discussion: http://postgr.es/m/59af6590-8ace-04c4-c36c-ea35d435c60e@lab.ntt.co.jp

7 years agoAdd an Assert that enum_cmp_internal() gets passed an FmgrInfo pointer.
Tom Lane [Fri, 24 Feb 2017 03:08:10 +0000 (22:08 -0500)]
Add an Assert that enum_cmp_internal() gets passed an FmgrInfo pointer.

If someone were to try to call one of the enum comparison functions
using DirectFunctionCallN, it would very likely seem to work, because
only in unusual cases does enum_cmp_internal() need to access the
typcache.  But once such a case occurred, code like that would crash
with a null pointer dereference.  To make an oversight of that sort
less likely to escape detection, add a non-bypassable Assert that
fcinfo->flinfo isn't NULL.

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

7 years agoConsistently declare timestamp variables as TimestampTz.
Tom Lane [Thu, 23 Feb 2017 20:57:08 +0000 (15:57 -0500)]
Consistently declare timestamp variables as TimestampTz.

Twiddle the replication-related code so that its timestamp variables
are declared TimestampTz, rather than the uninformative "int64" that
was previously used for meant-to-be-always-integer timestamps.
This resolves the int64-vs-TimestampTz declaration inconsistencies
introduced by commit 7c030783a, though in the opposite direction to
what was originally suggested.

This required including datatype/timestamp.h in a couple more places
than before.  I decided it would be a good idea to slim down that
header by not having it pull in <float.h> etc, as those headers are
no longer at all relevant to its purpose.  Unsurprisingly, a small number
of .c files turn out to have been depending on those inclusions, so add
them back in the .c files as needed.

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

7 years agoRemove now-dead code for !HAVE_INT64_TIMESTAMP.
Tom Lane [Thu, 23 Feb 2017 19:04:43 +0000 (14:04 -0500)]
Remove now-dead code for !HAVE_INT64_TIMESTAMP.

This is a basically mechanical removal of #ifdef HAVE_INT64_TIMESTAMP
tests and the negative-case controlled code.

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

7 years agoRemove pg_control's enableIntTimes field.
Tom Lane [Thu, 23 Feb 2017 17:23:12 +0000 (12:23 -0500)]
Remove pg_control's enableIntTimes field.

We don't need it any more.

pg_controldata continues to report that date/time type storage is
"64-bit integers", but that's now a hard-wired behavior not something
it sees in the data.  This avoids breaking pg_upgrade, and perhaps other
utilities that inspect pg_control this way.  Ditto for pg_resetwal.

I chose to remove the "bigint_timestamps" output column of
pg_control_init(), though, as that function hasn't been around long
and probably doesn't have ossified users.

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

7 years agoDe-support floating-point timestamps.
Tom Lane [Thu, 23 Feb 2017 16:40:12 +0000 (11:40 -0500)]
De-support floating-point timestamps.

Per discussion, the time has come to do this.  The handwriting has been
on the wall at least since 9.0 that this would happen someday, whenever
it got to be too much of a burden to support the float-timestamp option.
The triggering factor now is the discovery that there are multiple bugs
in the code that attempts to implement use of integer timestamps in the
replication protocol even when the server is built for float timestamps.
The internal float timestamps leak into the protocol fields in places.
While we could fix the identified bugs, there's a very high risk of
introducing more.  Trying to build a wall that would positively prevent
mixing integer and float timestamps is more complexity than we want to
undertake to maintain a long-deprecated option.  The fact that these
bugs weren't found through testing also indicates a lack of interest
in float timestamps.

This commit disables configure's --disable-integer-datetimes switch
(it'll still accept --enable-integer-datetimes, though), removes direct
references to USE_INTEGER_DATETIMES, and removes discussion of float
timestamps from the user documentation.  A considerable amount of code is
rendered dead by this, but removing that will occur as separate mop-up.

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

7 years agoFix logical replication with different encodings
Peter Eisentraut [Thu, 23 Feb 2017 16:27:59 +0000 (11:27 -0500)]
Fix logical replication with different encodings

reported by Shinoda, Noriyoshi <noriyoshi.shinoda@hpe.com>; partial
patch by Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>

7 years agoRemove deprecated COMMENT ON RULE syntax
Peter Eisentraut [Wed, 22 Feb 2017 13:45:14 +0000 (08:45 -0500)]
Remove deprecated COMMENT ON RULE syntax

This was only used for allowing upgrades from pre-7.3 instances, which
was a long time ago.

7 years agoFix contrib/pg_trgm's extraction of trigrams from regular expressions.
Tom Lane [Wed, 22 Feb 2017 20:04:07 +0000 (15:04 -0500)]
Fix contrib/pg_trgm's extraction of trigrams from regular expressions.

The logic for removing excess trigrams from the result was faulty.
It intends to avoid merging the initial and final states of the NFA,
which is necessary, but in testing whether removal of a specific trigram
would cause that, it failed to consider the combined effects of all the
state merges that that trigram's removal would cause.  This could result
in a broken final graph that would never match anything, leading to GIN
or GiST indexscans not finding anything.

To fix, add a "tentParent" field that is used only within this loop,
and set it to show state merges that we are tentatively going to do.
While examining a particular arc, we must chase up through tentParent
links as well as regular parent links (the former can only appear atop
the latter), and we must account for state init/fin flag merges that
haven't actually been done yet.

To simplify the latter, combine the separate init and fin bool fields
into a bitmap flags field.  I also chose to get rid of the "children"
state list, which seems entirely inessential.

Per bug #14563 from Alexey Isayko, which the added test cases are based on.
Back-patch to 9.3 where this code was added.

Report: https://postgr.es/m/20170222111446.1256.67547@wrigleys.postgresql.org
Discussion: https://postgr.es/m/8816.1487787594@sss.pgh.pa.us

7 years agoCorrectly handle array pseudotypes in to_json and to_jsonb
Andrew Dunstan [Wed, 22 Feb 2017 16:10:49 +0000 (11:10 -0500)]
Correctly handle array pseudotypes in to_json and to_jsonb

Columns with array pseudotypes have not been identified as arrays, so
they have been rendered as strings in the json and jsonb conversion
routines. This change allows them to be rendered as json arrays, making
it possible to deal correctly with the anyarray columns in pg_stats.

7 years agoPass the source text for a parallel query to the workers.
Robert Haas [Wed, 22 Feb 2017 06:45:17 +0000 (12:15 +0530)]
Pass the source text for a parallel query to the workers.

With this change, you can see the query that a parallel worker is
executing in pg_stat_activity, and if the worker crashes you can
see what query it was executing when it crashed.

Rafia Sabih, reviewed by Kuntal Ghosh and Amit Kapila and slightly
revised by me.

7 years agoFix incorrect typecast.
Robert Haas [Wed, 22 Feb 2017 06:35:42 +0000 (12:05 +0530)]
Fix incorrect typecast.

Ashutosh Sharma, per a report from Mithun Cy.

Discussion: http://postgr.es/m/CAD__OujgqNNnCujeFTmKpjNu+W4smS8Hbi=RcWAhf1ZUs3H4WA@mail.gmail.com

7 years agoShut down Gather's children before shutting down Gather itself.
Robert Haas [Wed, 22 Feb 2017 02:29:27 +0000 (07:59 +0530)]
Shut down Gather's children before shutting down Gather itself.

It turns out that the original shutdown order here does not work well.
Multiple people attempting to develop further parallel query patches
have discovered that they need to do cleanup before the DSM goes away,
and you can't do that if the parent node gets cleaned up first.

Patch by me, reviewed by KaiGai Kohei and Dilip Kumar.

Discussion: http://postgr.es/m/CA+TgmoY6bOc1YnhcAQnMfCBDbsJzROQ3sYxSAL-SYB5tMJcTKg@mail.gmail.com
Discussion: http://postgr.es/m/9A28C8860F777E439AA12E8AEA7694F8012AEB82@BPXM15GP.gisp.nec.co.jp
Discussion: http://postgr.es/m/CA+TgmoYuPOc=+xrG1v0fCsoLbKAab9F1ddOeaaiLMzKOiBar1Q@mail.gmail.com

7 years agodoc: Add missing comma.
Robert Haas [Wed, 22 Feb 2017 01:19:39 +0000 (06:49 +0530)]
doc: Add missing comma.

Yugo Nagata

7 years agoSuppress unused-variable warning.
Tom Lane [Tue, 21 Feb 2017 22:58:24 +0000 (17:58 -0500)]
Suppress unused-variable warning.

Rearrange so we don't have an unused variable in disable-cassert case.

Discussion: https://postgr.es/m/CAMkU=1x63f2QyFTeas83xJqD+Hm1PBuok1LrzYzS-OngDzYOVA@mail.gmail.com

7 years agoFix sloppy handling of corner-case errors in fd.c.
Tom Lane [Tue, 21 Feb 2017 22:51:27 +0000 (17:51 -0500)]
Fix sloppy handling of corner-case errors in fd.c.

Several places in fd.c had badly-thought-through handling of error returns
from lseek() and close().  The fact that those would seldom fail on valid
FDs is probably the reason we've not noticed this up to now; but if they
did fail, we'd get quite confused.

LruDelete and LruInsert actually just Assert'd that lseek never fails,
which is pretty awful on its face.

In LruDelete, we indeed can't throw an error, because that's likely to get
called during error abort and so throwing an error would probably just lead
to an infinite loop.  But by the same token, throwing an error from the
close() right after that was ill-advised, not to mention that it would've
left the LRU state corrupted since we'd already unlinked the VFD from the
list.  I also noticed that really, most of the time, we should know the
current seek position and it shouldn't be necessary to do an lseek here at
all.  As patched, if we don't have a seek position and an lseek attempt
doesn't give us one, we'll close the file but then subsequent re-open
attempts will fail (except in the somewhat-unlikely case that a
FileSeek(SEEK_SET) call comes between and allows us to re-establish a known
target seek position).  This isn't great but it won't result in any state
corruption.

Meanwhile, having an Assert instead of an honest test in LruInsert is
really dangerous: if that lseek failed, a subsequent read or write would
read or write from the start of the file, not where the caller expected,
leading to data corruption.

In both LruDelete and FileClose, if close() fails, just LOG that and mark
the VFD closed anyway.  Possibly leaking an FD is preferable to getting
into an infinite loop or corrupting the VFD list.  Besides, as far as I can
tell from the POSIX spec, it's unspecified whether or not the file has been
closed, so treating it as still open could be the wrong thing anyhow.

I also fixed a number of other places that were being sloppy about
behaving correctly when the seekPos is unknown.

Also, I changed FileSeek to return -1 with EINVAL for the cases where it
detects a bad offset, rather than throwing a hard elog(ERROR).  It seemed
pretty inconsistent that some bad-offset cases would get a failure return
while others got elog(ERROR).  It was missing an offset validity check for
the SEEK_CUR case on a closed file, too.

Back-patch to all supported branches, since all this code is fundamentally
identical in all of them.

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

7 years agoAdd tests for two-phase commit
Alvaro Herrera [Tue, 21 Feb 2017 21:20:48 +0000 (18:20 -0300)]
Add tests for two-phase commit

There's some ongoing performance work on this area, so let's make sure
we don't break things.

Extracted from a larger patch originally by Stas Kelvich.

Authors: Stas Kelvich, Nikhil Sontakke, Michael Paquier
Discussion: https://postgr.es/m/CAMGcDxfsuLLOg=h5cTg3g77Jjk-UGnt=RW7zK57zBSoFsapiWA@mail.gmail.com

7 years agoFix whitespace
Peter Eisentraut [Tue, 21 Feb 2017 20:44:07 +0000 (15:44 -0500)]
Fix whitespace

7 years agoFix typo in comment.
Fujii Masao [Tue, 21 Feb 2017 18:39:45 +0000 (03:39 +0900)]
Fix typo in comment.

neha khatri

7 years agoFix connection leak in DROP SUBSCRIPTION command.
Fujii Masao [Tue, 21 Feb 2017 18:36:02 +0000 (03:36 +0900)]
Fix connection leak in DROP SUBSCRIPTION command.

Previously the command forgot to close the connection to the publisher
when it failed to drop the replication slot.

7 years agoMake walsender always initialize the buffers.
Fujii Masao [Tue, 21 Feb 2017 18:11:58 +0000 (03:11 +0900)]
Make walsender always initialize the buffers.

Walsender uses the local buffers for each outgoing and incoming message.
Previously when creating replication slot, walsender forgot to initialize
one of them and which can cause the segmentation fault error. To fix this
issue, this commit changes walsender so that it always initialize them
before it executes the requested replication command.

Back-patch to 9.4 where replication slot was introduced.

Problem report and initial patch by Stas Kelvich, modified by me.
Report: https://www.postgresql.org/message-id/A1E9CB90-1FAC-4CAD-8DBA-9AA62A6E97C5@postgrespro.ru

7 years agoRemove confusing comment about unsupported feature.
Fujii Masao [Tue, 21 Feb 2017 17:49:42 +0000 (02:49 +0900)]
Remove confusing comment about unsupported feature.

The initial table synchronization feature has not been supported yet,
but there was the confusing header comment about it in logical/worker.c.

7 years agodoc: Update URL for plr
Peter Eisentraut [Tue, 21 Feb 2017 17:34:25 +0000 (12:34 -0500)]
doc: Update URL for plr

7 years agoUse less-generic table name in new regression test case.
Tom Lane [Tue, 21 Feb 2017 17:18:22 +0000 (12:18 -0500)]
Use less-generic table name in new regression test case.

Creating global objects named "foo" isn't an especially wise thing,
but especially not in a test script that has already used that name
for something else, and most especially not in a script that runs
in parallel with other scripts that use that name :-(

Per buildfarm.

7 years agoMake more use of castNode()
Peter Eisentraut [Tue, 21 Feb 2017 16:33:07 +0000 (11:33 -0500)]
Make more use of castNode()

7 years agoReject too-old Python versions a bit sooner.
Tom Lane [Tue, 21 Feb 2017 16:28:23 +0000 (11:28 -0500)]
Reject too-old Python versions a bit sooner.

Commit 04aad4018 added this check after the search for a Python shared
library, which seems to me to be a pretty unfriendly ordering.  The
search might fail for what are basically version-related reasons, and
in such a case it'd be better to say "your Python is too old" than
"could not find shared library for Python".

7 years agoDrop support for Python 2.3
Peter Eisentraut [Tue, 21 Feb 2017 14:27:02 +0000 (09:27 -0500)]
Drop support for Python 2.3

There is no specific reason for this right now, but keeping support for
old Python versions around indefinitely increases the maintenance
burden.  The oldest supported Python version is now Python 2.4, which is
still shipped in RHEL/CentOS 5 by default.

In configure, add a check for the required Python version and give a
friendly error message for an old version, instead of relying on an
obscure build error later on.

7 years agoSmall correction to BRIN docs
Simon Riggs [Tue, 21 Feb 2017 09:07:15 +0000 (09:07 +0000)]
Small correction to BRIN docs

Replace incorrect word "index" with "heap"

Takayuki Tsunakawa

7 years agoImprove error message for misuse of TZ, tz, OF formatting patterns.
Tom Lane [Mon, 20 Feb 2017 15:27:48 +0000 (10:27 -0500)]
Improve error message for misuse of TZ, tz, OF formatting patterns.

Be specific about which pattern is being complained of, and avoid saying
"it's not supported in to_date", which is just confusing if the error is
actually coming out of to_timestamp.  We can phrase it as "is only
supported in to_char", instead.  Also, use the term "formatting field" not
"format pattern", because other error messages in the same file prefer that
terminology.  (This isn't terribly consistent with the documentation, so
maybe we should change all these error messages?)

7 years agoFix documentation of to_char/to_timestamp TZ, tz, OF formatting patterns.
Tom Lane [Mon, 20 Feb 2017 15:05:00 +0000 (10:05 -0500)]
Fix documentation of to_char/to_timestamp TZ, tz, OF formatting patterns.

These are only supported in to_char, not in the other direction, but the
documentation failed to mention that.  Also, describe TZ/tz as printing the
time zone "abbreviation", not "name", because what they print is elsewhere
referred to that way.  Per bug #14558.

7 years agoMake src/interfaces/libpq/test clean up after itself.
Tom Lane [Sun, 19 Feb 2017 22:18:10 +0000 (17:18 -0500)]
Make src/interfaces/libpq/test clean up after itself.

It failed to remove a .o file during "make clean", and it lacked
a .gitignore file entirely.

7 years agoDept of second thoughts: rename new perl script.
Tom Lane [Sun, 19 Feb 2017 21:41:51 +0000 (16:41 -0500)]
Dept of second thoughts: rename new perl script.

It didn't take long at all for me to become irritated that the original
choice of name for this script resulted in "warning" showing up in several
places in build logs, because I tend to grep for that.  Change the script
name to avoid that.

7 years agoAdjust PL/Tcl regression test to dodge a possible bug or zone dependency.
Tom Lane [Sun, 19 Feb 2017 21:14:52 +0000 (16:14 -0500)]
Adjust PL/Tcl regression test to dodge a possible bug or zone dependency.

One case in the PL/Tcl tests is observed to fail on RHEL5 with a Turkish
time zone setting.  It's not clear if this is an old Tcl bug or something
odd about the zone data, but in any case that test is meant to see if the
Tcl [clock] command works at all, not what its corner-case behaviors are.
Therefore we have no need to test exactly which week a Sunday midnight is
considered to fall into.  Probe the following Tuesday instead.

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

7 years agoSuppress "unused variable" warnings with older versions of flex.
Tom Lane [Sun, 19 Feb 2017 18:04:30 +0000 (13:04 -0500)]
Suppress "unused variable" warnings with older versions of flex.

Versions of flex before 2.5.36 might generate code that results in an
"unused variable" warning, when using %option reentrant.  Historically
we've worked around that by specifying -Wno-error, but that's an
unsatisfying solution.  The official "fix" for this was just to insert a
dummy reference to the variable, so write a small perl script that edits
the generated C code similarly.

The MSVC side of this is untested, but the buildfarm should soon reveal
if I broke that.

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

7 years agoMake partitions automatically inherit OIDs.
Robert Haas [Sun, 19 Feb 2017 15:59:27 +0000 (21:29 +0530)]
Make partitions automatically inherit OIDs.

Previously, if the parent was specified as WITH OIDS, each child
also had to be explicitly specified as WITH OIDS.

Amit Langote, per a report from Simon Riggs.  Some additional
work on the documentation changes by me.

Discussion: http://postgr.es/m/CANP8+jJBpWocfKrbJcaf3iBt9E3U=WPE_NC8YE6rye+YJ1sYnQ@mail.gmail.com

7 years agoAdd optimizer and executor support for parallel index-only scans.
Robert Haas [Sun, 19 Feb 2017 10:23:59 +0000 (15:53 +0530)]
Add optimizer and executor support for parallel index-only scans.

Commit 5262f7a4fc44f651241d2ff1fa688dd664a34874 added similar support
for parallel index scans; this extends that work to index-only scans.
As with parallel index scans, this requires support from the index AM,
so currently parallel index-only scans will only be possible for btree
indexes.

Rafia Sabih, reviewed and tested by Rahila Syed, Tushar Ahuja,
and Amit Kapila

Discussion: http://postgr.es/m/CAOGQiiPEAs4C=TBp0XShxBvnWXuzGL2u++Hm1=qnCpd6_Mf8Fw@mail.gmail.com