Tom Lane [Wed, 13 Mar 2013 23:46:31 +0000 (19:46 -0400)]     Introduce less-bogus handling of collations in contrib/postgres_fdw.
 
 Treat expressions as being remotely executable only if all collations used
 in them are determined by Vars of the foreign table.  This means that, if
 the foreign server gets different answers than we do, it's the user's fault
 for not having marked the foreign table columns with collations equivalent
 to the remote table's.  This rule allows most simple expressions such as
 "var < 'constant'" to be sent to the remote side, because the constant
 isn't determining the collation (the Var's collation would win).  There's
 still room for improvement, but it's hard to see how to do it without a
 lot more knowledge and/or assumptions about what the remote side will do.
 
 
    Tom Lane [Tue, 12 Mar 2013 23:06:43 +0000 (19:06 -0400)]     Fix documentation oversight.
 
 Mention that PlanForeignModify's result must be copiable by copyObject.
 
 
    Tom Lane [Tue, 12 Mar 2013 22:58:13 +0000 (18:58 -0400)]     Fix contrib/postgres_fdw's handling of column defaults.
 
 Adopt the position that only locally-defined defaults matter.  Any defaults
 defined in the remote database do not affect insertions performed through
 a foreign table (unless they are for columns not known to the foreign
 table).  While it'd arguably be more useful to permit remote defaults to be
 used, making that work in a consistent fashion requires far more work than
 seems possible for 9.3.
 
 
    Tom Lane [Tue, 12 Mar 2013 21:37:07 +0000 (17:37 -0400)]     Allow default expressions to be attached to columns of foreign tables.
 
 There's still some discussion about exactly how postgres_fdw ought to
 handle this case, but there seems no debate that we want to allow defaults
 to be used for inserts into foreign tables.  So remove the core-code
 restrictions that prevented it.
 
 While at it, get rid of the special grammar productions for CREATE FOREIGN
 TABLE, and instead add explicit FEATURE_NOT_SUPPORTED error checks for the
 disallowed cases.  This makes the grammar a shade smaller, and more
 importantly results in much more intelligible error messages for
 unsupported cases.  It's also one less thing to fix if we ever start
 supporting constraints on foreign tables.
 
 
    Alvaro Herrera [Tue, 12 Mar 2013 14:57:22 +0000 (11:57 -0300)]     Fix orthotypographical mistake
  Apparently I lost some of the edits I had done on this page for commit 
0ac5ad5134. 
 Per note from Etsuro Fujita, although I didn't use his patch. 
 Make some of the wording in the affected section a bit more complete,
 too.  
  Tom Lane [Tue, 12 Mar 2013 14:47:04 +0000 (10:47 -0400)]     Avoid row-processing-order dependency in postgres_fdw regression test.
 
 A test intended to provoke an error on the remote side was coded in such
 a way that multiple rows should be updated, so the output would vary
 depending on which one was processed first.  Per buildfarm.
 
 
    Tom Lane [Tue, 12 Mar 2013 01:31:28 +0000 (21:31 -0400)]     Fix postgres_fdw's issues with inconsistent interpretation of data values.
  For datatypes whose output formatting depends on one or more GUC settings,
 we have to worry about whether the other server will interpret the value
 the same way it was meant.  pg_dump has been aware of this hazard for a
 long time, but postgres_fdw needs to deal with it too.  To fix data
 retrieval from the remote server, set the necessary remote GUC settings at
 connection startup.  (We were already assuming that settings made then
 would persist throughout the remote session.)  To fix data transmission to
 the remote server, temporarily force the relevant GUCs to the right values
 when we're about to convert any data values to text for transmission. 
 This is all pretty grotty, and not very cheap either.  It's tempting to
 think of defining one uber-GUC that would override any settings that might
 render printed data values unportable.  But of course, older remote servers
 wouldn't know any such thing and would still need this logic. 
 While at it, revert commit 
f7951eef89be78c50ea2241f593d76dfefe176c9, since
 this provides a real fix.  (The timestamptz given in the error message
 returned from the "remote" server will now reliably be shown in UTC.)  
  Tom Lane [Mon, 11 Mar 2013 18:26:05 +0000 (14:26 -0400)]     Avoid generating bad remote SQL for INSERT ... DEFAULT VALUES.
 
 "INSERT INTO foo() VALUES ()" is invalid syntax, so don't do that.
 
 
    Tom Lane [Mon, 11 Mar 2013 16:00:24 +0000 (12:00 -0400)]     Fix thinko in matview patch.
 
 "break" instead of "continue" suppressed view expansion for views appearing
 later in the range table.  Per report from Erikjan Rijkers.
 
 While at it, improve the associated comment a bit.
 
 
    Andrew Dunstan [Sun, 10 Mar 2013 21:35:36 +0000 (17:35 -0400)]     JSON generation improvements.
 
 This adds the following:
 
     json_agg(anyrecord) -> json
     to_json(any) -> json
     hstore_to_json(hstore) -> json (also used as a cast)
     hstore_to_json_loose(hstore) -> json
 
 The last provides heuristic treatment of numbers and booleans.
 
 Also, in json generation, if any non-builtin type has a cast to json,
 that function is used instead of the type's output function.
 
 Andrew Dunstan, reviewed by Steve Singer.
 
 Catalog version bumped.
 
 
    Peter Eisentraut [Sun, 10 Mar 2013 21:16:18 +0000 (17:16 -0400)]     doc: Add note about checkpoint_warning vs checkpoint_timeout
 
 suggested by Tianyin Xu
 
 
    Peter Eisentraut [Sun, 10 Mar 2013 20:54:27 +0000 (16:54 -0400)]     pg_ctl: Adjust nls.mk for split out of wait_error.c
 
 
    Peter Eisentraut [Sun, 10 Mar 2013 20:53:04 +0000 (16:53 -0400)]     pg_basebackup: Add missing newlines to several error messages
 
 
    Tom Lane [Sun, 10 Mar 2013 19:07:38 +0000 (15:07 -0400)]     Band-aid for regression test expected-results problem with timestamptz.
 
 We probably need to tell the remote server to use specific timezone and
 datestyle settings, and maybe other things.  But for now let's just hack
 the postgres_fdw regression test to not provoke failures when run in
 non-EST5EDT environments.  Per buildfarm.
 
 
    Tom Lane [Sun, 10 Mar 2013 18:14:53 +0000 (14:14 -0400)]     Support writable foreign tables.
 
 This patch adds the core-system infrastructure needed to support updates
 on foreign tables, and extends contrib/postgres_fdw to allow updates
 against remote Postgres servers.  There's still a great deal of room for
 improvement in optimization of remote updates, but at least there's basic
 functionality there now.
 
 KaiGai Kohei, reviewed by Alexander Korotkov and Laurenz Albe, and rather
 heavily revised by Tom Lane.
 
 
    Magnus Hagander [Sun, 10 Mar 2013 14:54:37 +0000 (15:54 +0100)]     Report pg_hba line number and contents when users fail to log in
 
 Instead of just reporting which user failed to log in, log both the
 line number in the active pg_hba.conf file (which may not match reality
 in case the file has been edited and not reloaded) and the contents of
 the matching line (which will always be correct), to make it easier
 to debug incorrect pg_hba.conf files.
 
 The message to the client remains unchanged and does not include this
 information, to prevent leaking security sensitive information.
 
 Reviewed by Tom Lane and Dean Rasheed
 
 
    Heikki Linnakangas [Fri, 8 Mar 2013 15:12:38 +0000 (17:12 +0200)]     Forgot catversion bump in the SP-GiST adjacent support patch.
 
 
    Heikki Linnakangas [Fri, 8 Mar 2013 13:03:19 +0000 (15:03 +0200)]     SP-GiST support of the range adjacent operator -|-
 
 Alexander Korotkov, reviewed by Jeff Davis.
 
 
    Heikki Linnakangas [Fri, 8 Mar 2013 09:21:44 +0000 (11:21 +0200)]     Remove unnecessary #ifdef FRONTEND check to choose between strdup and pstrdup.
 
 The libpgcommon patch made that unnecessary, palloc and friends are now
 available in frontend programs too, mapped to plain old malloc.
 
 As pointed out by Alvaro Herrera.
 
 
    Kevin Grittner [Thu, 7 Mar 2013 17:39:36 +0000 (11:39 -0600)]     Fix typo in docs for ALTER MATERIALIZED VIEW.
 
 Fujii Masao
 
 
    Tom Lane [Thu, 7 Mar 2013 16:51:03 +0000 (11:51 -0500)]     Fix infinite-loop risk in fixempties() stage of regex compilation.
  The previous coding of this function could get into situations where it
 would never terminate, because successive passes would re-add EMPTY arcs
 that had been removed by the previous pass.  Rewrite the function
 completely using a new algorithm that is guaranteed to terminate, and
 also seems to be usually faster than the old one.  Per Tcl bugs 
3604074 and 
3606683. 
 Tom Lane and Don Porter  
  Heikki Linnakangas [Thu, 7 Mar 2013 10:18:41 +0000 (12:18 +0200)]     Fix tli history file fetching, broken by the archive after crash recevery patch.
 
 If we were about to enter archive recovery after crash recovery, we scanned
 the archive for the latest tli history file, and set the recovery target
 timeline to that. However, when we actually tried to read the history file,
 we would not fetch the file from the archive, because we were not in archive
 recovery yet.
 
 To fix, make readTimeLineHistory and existsTimeLineHistory to always fetch
 the file from archive if archive recovery is requested, even if we're not in
 archive recovery yet.
 
 Backpatch to 9.2. Mitsumasa KONDO
 
 
    Tom Lane [Thu, 7 Mar 2013 04:47:38 +0000 (23:47 -0500)]     Arrange to cache FdwRoutine structs in foreign tables' relcache entries.
 
 This saves several catalog lookups per reference.  It's not all that
 exciting right now, because we'd managed to minimize the number of places
 that need to fetch the data; but the upcoming writable-foreign-tables patch
 needs this info in a lot more places.
 
 
    Peter Eisentraut [Thu, 7 Mar 2013 04:45:16 +0000 (23:45 -0500)]     Add fe_memutils.c to nls.mk where used
 
 
    Robert Haas [Thu, 7 Mar 2013 01:52:06 +0000 (20:52 -0500)]     Code beautification for object-access hook machinery.
 
 KaiGai Kohei
 
 
    Peter Eisentraut [Thu, 7 Mar 2013 01:25:25 +0000 (20:25 -0500)]     Adjust nls.mk for split out of wait_error.c
 
 
    Tom Lane [Wed, 6 Mar 2013 23:20:51 +0000 (18:20 -0500)]     Fix missing #include in commands/matview.h.
 
 It needs parsenodes.h to be compilable regardless of previous headers.
 
 
    Kevin Grittner [Wed, 6 Mar 2013 23:15:34 +0000 (17:15 -0600)]     WAL-log the extension of a new empty MV heap which is being populated.
 
 This page with no tuples is used to distinguish an MV containing a
 zero-row resultset of its backing query from an MV which has not
 been populated by its backing query.  Unless WAL-logged, recovery
 and hot standby don't work correctly with what should be an empty
 but scannable materialized view.
 
 Fixes bugs reported by Fujii Masao in testing MVs on hot standby.
 
 
    Kevin Grittner [Wed, 6 Mar 2013 21:35:59 +0000 (15:35 -0600)]     Add docs for pg_matviews, which were missed in the initial MV commit.
 
 
    Kevin Grittner [Wed, 6 Mar 2013 15:51:49 +0000 (09:51 -0600)]     Fix broken pg_dump for 9.0 and 9.1 caused by the MV patch.
 
 Per report and suggestion from Bernd Helmle
 
 
    Andrew Dunstan [Wed, 6 Mar 2013 14:53:38 +0000 (09:53 -0500)]     Fix message typo.
 
 
    Peter Eisentraut [Wed, 6 Mar 2013 04:22:12 +0000 (23:22 -0500)]     pg_ctl: Add comma to message
 
 
    Andrew Dunstan [Wed, 6 Mar 2013 00:24:29 +0000 (19:24 -0500)]     Remove dependency on the DLL of pythonxx.def file.
 
 This confused Cygwin's make because of the colon in the path. The
 DLL isn't likely to change under us so preserving the dependency
 doesn't gain us much, and it's useful to be able to do a native
 Windows build with the Cygwin mingw toolset.
 
 Noah Misch.
 
 
    Tom Lane [Tue, 5 Mar 2013 18:02:30 +0000 (13:02 -0500)]     Fix to_char() to use ASCII-only case-folding rules where appropriate.
 
 formatting.c used locale-dependent case folding rules in some code paths
 where the result isn't supposed to be locale-dependent, for example
 to_char(timestamp, 'DAY').  Since the source data is always just ASCII
 in these cases, that usually didn't matter ... but it does matter in
 Turkish locales, which have unusual treatment of "i" and "I".  To confuse
 matters even more, the misbehavior was only visible in UTF8 encoding,
 because in single-byte encodings we used pg_toupper/pg_tolower which
 don't have locale-specific behavior for ASCII characters.  Fix by providing
 intentionally ASCII-only case-folding functions and using these where
 appropriate.  Per bug #7913 from Adnan Dursun.  Back-patch to all active
 branches, since it's been like this for a long time.
 
 
    Kevin Grittner [Tue, 5 Mar 2013 11:32:03 +0000 (05:32 -0600)]     Bump catversion because of new function in the materialized view patch.
 
 
    Tom Lane [Mon, 4 Mar 2013 20:13:31 +0000 (15:13 -0500)]     Fix overflow check in tm2timestamp (this time for sure).
  I fixed this code back in commit 
841b4a2d5, but didn't think carefully
 enough about the behavior near zero, which meant it improperly rejected
 1999-12-31 24:00:00.  Per report from Magnus Hagander.  
  Peter Eisentraut [Mon, 4 Mar 2013 03:17:08 +0000 (22:17 -0500)]     psql: Let \l accept a pattern
 
 reviewed by Satoshi Nagayasu
 
 
    Kevin Grittner [Mon, 4 Mar 2013 00:38:44 +0000 (18:38 -0600)]     Remove accidentally-committed .orig file.
 
 
    Tom Lane [Mon, 4 Mar 2013 00:32:12 +0000 (19:32 -0500)]     Fix map_sql_value_to_xml_value() to treat domains like their base types.
 
 This was already the case for domains over arrays, but not for domains
 over certain built-in types such as boolean.  The special formatting
 rules for those types should apply to domains over them as well.
 Per discussion.
 
 While this is a bug fix, it's also a behavioral change that seems likely
 to trip up some applications.  So no back-patch.
 
 Pavel Stehule
 
 
    Kevin Grittner [Mon, 4 Mar 2013 00:23:31 +0000 (18:23 -0600)]     Add a materialized view relations.
 
 A materialized view has a rule just like a view and a heap and
 other physical properties like a table.  The rule is only used to
 populate the table, references in queries refer to the
 materialized data.
 
 This is a minimal implementation, but should still be useful in
 many cases.  Currently data is only populated "on demand" by the
 CREATE MATERIALIZED VIEW and REFRESH MATERIALIZED VIEW statements.
 It is expected that future releases will add incremental updates
 with various timings, and that a more refined concept of defining
 what is "fresh" data will be developed.  At some point it may even
 be possible to have queries use a materialized in place of
 references to underlying tables, but that requires the other
 above-mentioned features to be working first.
 
 Much of the documentation work by Robert Haas.
 Review by Noah Misch, Thom Brown, Robert Haas, Marko Tiikkaja
 Security review by KaiGai Kohei, with a decision on how best to
 implement sepgsql still pending.
 
 
    Tom Lane [Mon, 4 Mar 2013 00:05:47 +0000 (19:05 -0500)]     Get rid of any toast table when converting a table to a view.
 
 Also make sure other fields of the view's pg_class entry are appropriate
 for a view; it shouldn't have relfrozenxid set for instance.
 
 This ancient omission isn't believed to have any serious consequences in
 versions 8.4-9.2, so no backpatch.  But let's fix it before it does bite
 us in some serious way.  It's just luck that the case doesn't cause
 problems for autovacuum.  (It did cause problems in 8.3, but that's out
 of support.)
 
 Andres Freund
 
 
    Tom Lane [Sun, 3 Mar 2013 22:39:58 +0000 (17:39 -0500)]     Fix SQL function execution to be safe with long-lived FmgrInfos.
 
 fmgr_sql had been designed on the assumption that the FmgrInfo it's called
 with has only query lifespan.  This is demonstrably unsafe in connection
 with range types, as shown in bug #7881 from Andrew Gierth.  Fix things
 so that we re-generate the function's cache data if the (sub)transaction
 it was made in is no longer active.
 
 Back-patch to 9.2.  This might be needed further back, but it's not clear
 whether the case can realistically arise without range types, so for now
 I'll desist from back-patching further.
 
 
    Peter Eisentraut [Sun, 3 Mar 2013 13:58:34 +0000 (08:58 -0500)]     doc: Small tweak for consistency
 
 submitted by "Lyle"
 
 
    Peter Eisentraut [Sun, 3 Mar 2013 13:49:49 +0000 (08:49 -0500)]     doc: A few awkward phrasing fixes
 
 Josh Kupershmidt
 
 
    Peter Eisentraut [Sat, 2 Mar 2013 03:43:47 +0000 (22:43 -0500)]     Exclude utils/probes.h and pg_trace.h from cpluspluscheck
 
 They can include sys/sdt.h from SystemTap, which itself contains C++
 code and so won't compile with a C++ compiler under extern "C" linkage.
 
 
    Tom Lane [Sat, 2 Mar 2013 02:33:34 +0000 (21:33 -0500)]     Eliminate memory leaks in plperl's spi_prepare() function.
 
 Careless use of TopMemoryContext for I/O function data meant that repeated
 use of spi_prepare and spi_freeplan would leak memory at the session level,
 as per report from Christian Schröder.  In addition, spi_prepare
 leaked a lot of transient data within the current plperl function's SPI
 Proc context, which would be a problem for repeated use of spi_prepare
 within a single plperl function call; and it wasn't terribly careful
 about releasing permanent allocations in event of an error, either.
 
 In passing, clean up some copy-and-pasteos in query-lookup error messages.
 
 Alex Hunsaker and Tom Lane
 
 
    Alvaro Herrera [Thu, 28 Feb 2013 19:29:17 +0000 (16:29 -0300)]     Improve pg_upgrade commentary on multixact change
 
 Per gripe from Andres Freund
 
 
    Andrew Dunstan [Thu, 28 Feb 2013 00:13:07 +0000 (19:13 -0500)]     Flush stderr and stdout in isolation tester.
 
 This is a possibly vain attempt to fix a buffering issue
 observed for some MSVC builds.
 
 
    Heikki Linnakangas [Wed, 27 Feb 2013 19:50:15 +0000 (21:50 +0200)]     Remove spurious "the", and add a missing one.
 
 Thom Brown and me.
 
 
    Heikki Linnakangas [Wed, 27 Feb 2013 19:31:41 +0000 (21:31 +0200)]     Fix MSVC build.
 
 The new file in src/port needs to be listed in Mkvcbuild.pm as well.
 
 
    Heikki Linnakangas [Wed, 27 Feb 2013 19:27:01 +0000 (21:27 +0200)]     Fix typo in "pg_xlogdump --help" and error message.
 
 Fujii Masao and me.
 
 
    Heikki Linnakangas [Wed, 27 Feb 2013 17:17:07 +0000 (19:17 +0200)]     Cannot use WL_SOCKET_WRITEABLE without WL_SOCKET_READABLE.
 
 In copy-out mode, the frontend should not send any messages until the
 backend has finished streaming, by sending a CopyDone message. I'm not sure
 if it would be legal for the client to send a new query before receiving the
 CopyDone message from the backend, but trying to support that would require
 bigger changes to the backend code structure.
 
 Fixes an assertion failure reported by Fujii Masao.
 
 
    Heikki Linnakangas [Wed, 27 Feb 2013 16:42:40 +0000 (18:42 +0200)]     Add standard file header comment to quotes.c.
 
 
    Heikki Linnakangas [Wed, 27 Feb 2013 16:17:21 +0000 (18:17 +0200)]     Add support for piping COPY to/from an external program.
 
 This includes backend "COPY TO/FROM PROGRAM '...'" syntax, and corresponding
 psql \copy syntax. Like with reading/writing files, the backend version is
 superuser-only, and in the psql version, the program is run in the client.
 
 In the passing, the psql \copy STDIN/STDOUT syntax is subtly changed: if you
 the stdin/stdout is quoted, it's now interpreted as a filename. For example,
 "\copy foo from 'stdin'" now reads from a file called 'stdin', not from
 standard input. Before this, there was no way to specify a filename called
 stdin, stdout, pstdin or pstdout.
 
 This creates a new function in pgport, wait_result_to_str(), which can
 be used to convert the exit status of a process, as returned by wait(3),
 to a human-readable string.
 
 Etsuro Fujita, reviewed by Amit Kapila.
 
 
    Tom Lane [Wed, 27 Feb 2013 15:40:03 +0000 (10:40 -0500)]     Add missing error check in regexp parser.
 
 parseqatom() failed to check for an error return (NULL result) from its
 recursive call to parsebranch(), and in consequence could crash with a
 null-pointer dereference after an error return.  This bug has been there
 since day one, but wasn't noticed before, probably because most error cases
 in parsebranch() didn't actually lead to returning NULL.  Add the missing
 error check, and also tweak parsebranch() to exit in a less indirect
 fashion after a call to parseqatom() fails.
 
 Report by Tomasz Karlik, fix by me.
 
 
    Tom Lane [Tue, 26 Feb 2013 20:58:34 +0000 (15:58 -0500)]     Add missing .gitignore file.
 
 
    Tom Lane [Tue, 26 Feb 2013 20:50:22 +0000 (15:50 -0500)]     Clean up "stopgap" implementation of timestamptz_to_str().
 
 Use correct type for "result", fix bogus strftime argument, don't use
 unnecessary static variables, improve comments.
 
 Andres Freund and Tom Lane
 
 
    Tom Lane [Tue, 26 Feb 2013 20:27:30 +0000 (15:27 -0500)]     Install headers from the new src/include/common subdirectory.
  This got missed in commit 
8396447cdbdff0b62914748de2fec04281dc9114. 
 Andres Freund  
  Heikki Linnakangas [Tue, 26 Feb 2013 17:30:15 +0000 (19:30 +0200)]     Remove the check for COPY TO STDIN and COPY FROM STDOUT from ecpg.
 
 The backend grammar treats STDIN and STDOUT completely interchangeable, so
 that the above accepted. Arguably that was a mistake the backend grammar,
 but it's not ecpg's business to second guess that.
 
 
    Peter Eisentraut [Mon, 25 Feb 2013 22:58:14 +0000 (17:58 -0500)]     doc: Fix markup typo
 
 
    Heikki Linnakangas [Mon, 25 Feb 2013 17:53:04 +0000 (19:53 +0200)]     Only quote libpq connection string values that need quoting.
 
 There's no harm in excessive quoting per se, but it makes the strings nicer
 to read. The values can get quite unwieldy, when they're first quoted within
 within single-quotes when included in the connection string, and then all
 the single-quotes are escaped when the connection string is passed as a
 shell argument.
 
 
    Heikki Linnakangas [Mon, 25 Feb 2013 17:39:10 +0000 (19:39 +0200)]     Add -d option to pg_dumpall, for specifying a connection string.
 
 Like with pg_basebackup and pg_receivexlog, it's a bit strange to call the
 option -d/--dbname, when in fact you cannot pass a database name in it.
 
 Original patch by Amit Kapila, heavily modified by me.
 
 
    Heikki Linnakangas [Mon, 25 Feb 2013 17:39:04 +0000 (19:39 +0200)]     Add -d/--dbname option to pg_dump.
 
 You could already pass a database name just by passing it as the last
 option, without -d. This is an alias for that, like the -d/--dbname option
 in psql and many other client applications. For consistency.
 
 
    Andrew Dunstan [Mon, 25 Feb 2013 17:00:53 +0000 (12:00 -0500)]     Redo MSVC build implementation for pg_xlogdump.
 
 The previous commit didn't work on MSVC editions earlier than
 Visual Studio 2011, apparently. This works by copying files into the
 contrib directory, and making provision to clean them up, which should
 work on all editions.
 
 
    Heikki Linnakangas [Mon, 25 Feb 2013 12:48:27 +0000 (14:48 +0200)]     Add -d option to pg_basebackup and pg_receivexlog, for connection string.
 
 Without this, there's no way to pass arbitrary libpq connection parameters
 to these applications. It's a bit strange that the option is called
 -d/--dbname, when in fact you can *not* pass a database name in it, but it's
 consistent with other client applications where a connection string is also
 passed using -d.
 
 Original patch by Amit Kapila, heavily modified by me.
 
 
    Andrew Dunstan [Mon, 25 Feb 2013 01:28:42 +0000 (20:28 -0500)]     Provide MSVC build setup for pg_xlogdump.
 
 
    Peter Eisentraut [Sun, 24 Feb 2013 20:38:07 +0000 (15:38 -0500)]     doc: Remove PostgreSQL version number from xml2 deprecation notice
 
 It is obviously no longer true.
 
 
    Tom Lane [Sun, 24 Feb 2013 13:58:00 +0000 (08:58 -0500)]     Fix build of contrib/pg_xlogdump.
 
 rmgrdesc.c is not auto-generated now, though it apparently was the last
 time the Makefile was updated.
 
 
    Peter Eisentraut [Sun, 24 Feb 2013 04:30:14 +0000 (23:30 -0500)]     Correct tense in log message
 
 
    Tom Lane [Sat, 23 Feb 2013 17:20:48 +0000 (12:20 -0500)]     Rename postgres_fdw's use_remote_explain option to use_remote_estimate.
 
 The new name was originally my typo, but per discussion it seems like a
 better name anyway.  So make the code match the docs, not vice versa.
 
 
    Peter Eisentraut [Sat, 23 Feb 2013 05:28:33 +0000 (00:28 -0500)]     doc: Add more compatibility information for triggers
 
 Louis-Claude Canon and Josh Kupershmidt
 
 
    Peter Eisentraut [Sat, 23 Feb 2013 04:33:07 +0000 (23:33 -0500)]     Add quotes to messages
 
 
    Alvaro Herrera [Fri, 22 Feb 2013 21:56:42 +0000 (18:56 -0300)]     contrib/Makefile also needs updated
 
 Erik Rijkers
 
 
    Alvaro Herrera [Fri, 22 Feb 2013 21:52:59 +0000 (18:52 -0300)]     Fix some typos and grammatical mistakes
 
 ... as well a update copyrights statements to 2013.
 
 Noted by Thom Brown and Peter Geoghegan
 
 
    Alvaro Herrera [Fri, 22 Feb 2013 20:03:22 +0000 (17:03 -0300)]     Fix copy-and-pasteo
 
 Harmless, but it's certainly better like this.
 
 Noticed by Andres Freund
 
 
    Alvaro Herrera [Fri, 22 Feb 2013 19:46:24 +0000 (16:46 -0300)]     Add pg_xlogdump contrib program
 
 This program relies on rm_desc backend routines and the xlogreader
 infrastructure to emit human-readable rendering of WAL records.
 
 Author: Andres Freund, with many reworks by Álvaro
 Reviewed (in a much earlier version) by Peter Eisentraut
 
 
    Tom Lane [Fri, 22 Feb 2013 15:56:06 +0000 (10:56 -0500)]     Fix some planning oversights in postgres_fdw.
 
 Include eval costs of local conditions in remote-estimate mode, and don't
 assume the remote eval cost is zero in local-estimate mode.  (The best
 we can do with that at the moment is to assume a seqscan, which may well
 be wildly pessimistic ... but zero won't do at all.)
 
 To get a reasonable local estimate, we need to know the relpages count
 for the remote rel, so improve the ANALYZE code to fetch that rather
 than just setting the foreign table's relpages field to zero.
 
 
    Alvaro Herrera [Fri, 22 Feb 2013 14:51:15 +0000 (11:51 -0300)]     Blind attempt at fixing the non-MSVC Windows builds
 
 Apparently, they need -DBUILDING_DLL for the Assert() declarations to
 work correctly.
 
 
    Tom Lane [Fri, 22 Feb 2013 14:21:50 +0000 (09:21 -0500)]     Fix whole-row references in postgres_fdw.
 
 The optimization to not retrieve unnecessary columns wasn't smart enough.
 Noted by Thom Brown.
 
 
    Tom Lane [Fri, 22 Feb 2013 12:30:21 +0000 (07:30 -0500)]     Change postgres_fdw to show casts as casts, not underlying function calls.
 
 On reflection this method seems to be exposing an unreasonable amount of
 implementation detail.  It wouldn't matter when talking to a remote server
 of the identical Postgres version, but it seems likely to make things worse
 not better if the remote is a different version with different casting
 infrastructure.  Instead adopt ruleutils.c's policy of regurgitating the
 cast as it was originally specified; including not showing it at all, if
 it was implicit to start with.  (We must do that because for some datatypes
 explicit and implicit casts have different semantics.)
 
 
    Tom Lane [Fri, 22 Feb 2013 11:36:09 +0000 (06:36 -0500)]     Get rid of postgres_fdw's assumption that remote type OIDs match ours.
 
 The only place we depended on that was in sending numeric type OIDs in
 PQexecParams; but we can replace that usage with explicitly casting
 each Param symbol in the query string, so that the types are specified
 to the remote by name not OID.  This makes no immediate difference but
 will be essential if we ever hope to support use of non-builtin types.
 
 
    Heikki Linnakangas [Fri, 22 Feb 2013 11:07:02 +0000 (13:07 +0200)]     Fix thinko in previous commit.
 
 We must still initialize minRecoveryPoint if we start straight with archive
 recovery, e.g when recovering from a normal base backup taken with
 pg_start/stop_backup. Otherwise we never consider the system consistent.
 
 
    Tom Lane [Fri, 22 Feb 2013 11:03:46 +0000 (06:03 -0500)]     Adjust postgres_fdw's search path handling.
 
 Set the remote session's search path to exactly "pg_catalog" at session
 start, then schema-qualify only names that aren't in that schema.  This
 greatly reduces clutter in the generated SQL commands, as seen in the
 regression test changes.  Per discussion.
 
 Also, rethink use of FirstNormalObjectId as the "built-in object" cutoff
 --- FirstBootstrapObjectId is safer, since the former will accept
 objects in information_schema for instance.
 
 
    Heikki Linnakangas [Fri, 22 Feb 2013 09:43:04 +0000 (11:43 +0200)]     If recovery.conf is created after "pg_ctl stop -m i", do crash recovery.
 
 If you create a base backup using an atomic filesystem snapshot, and try to
 perform PITR starting from that base backup, or if you just kill a master
 server and create recovery.conf to put it into standby mode, we don't know
 how far we need to recover before reaching consistency. Normally in crash
 recovery, we replay all the WAL present in pg_xlog, and assume that we're
 consistent after that. And normally in archive recovery, minRecoveryPoint,
 backupEndRequired, or backupEndPoint is set in the control file, indicating
 how far we need to replay to reach consistency. But if the server was
 previously up and running normally, and you kill -9 it or take an atomic
 filesystem snapshot, none of those fields are set in the control file.
 
 The solution is to perform crash recovery first, replaying all the WAL in
 pg_xlog. After that's done, we assume that the system is consistent like in
 normal crash recovery, and switch to archive recovery mode after that.
 
 Per report from Kyotaro HORIGUCHI. In his scenario, recovery.conf was
 created after "pg_ctl stop -m i". I'm not sure we need to support that exact
 scenario, but we should support backing up using a filesystem snapshot,
 which looks identical.
 
 This issue goes back to at least 9.0, where hot standby was introduced and
 we started to track when consistency is reached. In 9.1 and 9.2, we would
 open up for hot standby too early, and queries could briefly see an
 inconsistent state. But 9.2 made it more visible, as we started to PANIC if
 we see a reference to a non-existing page during recovery, if we've already
 reached consistency. This is a fairly big patch, so back-patch to 9.2 only,
 where the issue is more visible. We can consider back-patching further after
 this has received some more testing in 9.2 and master.
 
 
    Alvaro Herrera [Fri, 22 Feb 2013 01:46:17 +0000 (22:46 -0300)]     Move relpath() to libpgcommon
 
 This enables non-backend code, such as pg_xlogdump, to use it easily.
 The previous location, in src/backend/catalog/catalog.c, made that
 essentially impossible because that file depends on many backend-only
 facilities; so this needs to live separately.
 
 
    Alvaro Herrera [Thu, 21 Feb 2013 14:46:46 +0000 (11:46 -0300)]     Remove useless variable
 
 Per Jeff Janes
 
 
    Tom Lane [Thu, 21 Feb 2013 14:28:42 +0000 (09:28 -0500)]     Need to decorate XactIsoLevel as PGDLLIMPORT for postgres_fdw.
 
 Per buildfarm.
 
 
    Tom Lane [Thu, 21 Feb 2013 11:43:15 +0000 (06:43 -0500)]     Teach MSVC build system about postgres_fdw.
 
 Per buildfarm.
 
 
    Tom Lane [Thu, 21 Feb 2013 10:26:23 +0000 (05:26 -0500)]     Add postgres_fdw contrib module.
 
 There's still a lot of room for improvement, but it basically works,
 and we need this to be present before we can do anything much with the
 writable-foreign-tables patch.  So let's commit it and get on with testing.
 
 Shigeru Hanada, reviewed by KaiGai Kohei and Tom Lane
 
 
    Heikki Linnakangas [Wed, 20 Feb 2013 15:08:54 +0000 (17:08 +0200)]     Fix pg_dumpall with database names containing =
 
 If a database name contained a '=' character, pg_dumpall failed. The problem
 was in the way pg_dumpall passes the database name to pg_dump on the
 command line. If it contained a '=' character, pg_dump would interpret it
 as a libpq connection string instead of a plain database name.
 
 To fix, pass the database name to pg_dump as a connection string,
 "dbname=foo", with the database name escaped if necessary.
 
 Back-patch to all supported branches.
 
 
    Heikki Linnakangas [Wed, 20 Feb 2013 14:22:47 +0000 (16:22 +0200)]     Don't pass NULL to fprintf, if a bogus connection string is given to pg_dump.
 
 Back-patch to all supported branches.
 
 
    Heikki Linnakangas [Wed, 20 Feb 2013 10:30:59 +0000 (12:30 +0200)]     Fix yet another typo in comment.
 
 Etsuro Fujita
 
 
    Alvaro Herrera [Mon, 18 Feb 2013 21:53:32 +0000 (18:53 -0300)]     Move ExceptionalCondition back to postgres.h
 
 It needs to be defined in the backend even when assertions are not
 enabled.  It's cleaner to put it back, than create a separate #ifdef
 section in c.h.
 
 Per trouble report from Jeff Janes
 
 
    Alvaro Herrera [Mon, 18 Feb 2013 20:56:08 +0000 (17:56 -0300)]     Split pgstat file in smaller pieces
 
 We now write one file per database and one global file, instead of
 having the whole thing in a single huge file.  This reduces the I/O that
 must be done when partial data is required -- which is all the time,
 because each process only needs information on its own database anyway.
 Also, the autovacuum launcher does not need data about tables and
 functions in each database; having the global stats for all DBs is
 enough.
 
 Catalog version bumped because we have a new subdir under PGDATA.
 
 Author: Tomas Vondra.  Some rework by Álvaro
 Testing by Jeff Janes
 Other discussion by Heikki Linnakangas, Tom Lane.
 
 
    Peter Eisentraut [Mon, 18 Feb 2013 04:45:36 +0000 (23:45 -0500)]     Add ALTER ROLE ALL SET command
 
 This generalizes the existing ALTER ROLE ... SET and ALTER DATABASE
 ... SET functionality to allow creating settings that apply to all users
 in all databases.
 
 reviewed by Pavel Stehule
 
 
    Bruce Momjian [Sat, 16 Feb 2013 23:52:50 +0000 (18:52 -0500)]     Warn about initdb using mount-points
 
 Add code to detect and warn about trying to initdb or create pg_xlog on
 mount points.
 
 
    Heikki Linnakangas [Fri, 15 Feb 2013 17:33:31 +0000 (19:33 +0200)]     Better fix for "unarchived WAL files get deleted on crash recovery" bug.
  Revert my earlier fix for the bug that unarchived WAL files get deleted on
 crash recovery, commit 
c9cc7e05c6d82a9781883a016c70d95aa4923122. We create
 a .done file for files streamed or restored from archive, so the WAL file
 recycling logic used during normal operation works just as well during
 archive recovery. 
 Per Fujii Masao's suggestion.  
  Simon Riggs [Wed, 8 Aug 2012 22:58:49 +0000 (23:58 +0100)]     Force archive_status of .done for xlogs created by dearchival/replication.
  This is a forward-patch of commit 
6f4b8a4f4f7a2d683ff79ab59d3693714b965e3d,
 applied to 9.2 back in August. The plan was to do something else in master,
 but it looks like it's not going to happen, so let's just apply the 9.2
 solution to master as well. 
 Fujii Masao  
  Heikki Linnakangas [Fri, 15 Feb 2013 15:25:16 +0000 (17:25 +0200)]     Don't delete unarchived WAL files during crash recovery.
 
 Bug reported by Jehan-Guillaume (ioguix) de Rorthais. This was introduced
 with the change to keep WAL files restored from archive in pg_xlog, in 9.2.
 
 
    Peter Eisentraut [Fri, 15 Feb 2013 02:40:05 +0000 (21:40 -0500)]     pgindent: Fix order in instructions
 
 The previous order of steps didn't literally work, because git clean
 -fdx would delete the downloaded typedefs.list.  Also, pgindent needs to
 be called with a path when one is in at the top of the build tree.