1. 14 Mar, 2013 6 commits
    • Tom Lane's avatar
      Minor fixes for hstore_to_json_loose(). · c2754991
      Tom Lane authored
      Fix unportable use of isdigit(), get rid of useless calculations.
      c2754991
    • Tom Lane's avatar
      Avoid inserting Result nodes that only compute identity projections. · 4387cf95
      Tom Lane authored
      The planner sometimes inserts Result nodes to perform column projections
      (ie, arbitrary scalar calculations) above plan nodes that lack projection
      logic of their own.  However, we did that even if the lower plan node was
      in fact producing the required column set already; which is a pretty common
      case given the popularity of "SELECT * FROM ...".  Measurements show that
      the useless plan node adds non-negligible overhead, especially when there
      are many columns in the result.  So add a check to avoid inserting a Result
      node unless there's something useful for it to do.
      
      There are a couple of remaining places where unnecessary Result nodes
      could get inserted, but they are (a) much less performance-critical,
      and (b) coded in such a way that it's hard to avoid inserting a Result,
      because the desired tlist is changed on-the-fly in subsequent logic.
      We'll leave those alone for now.
      
      Kyotaro Horiguchi; reviewed and further hacked on by Amit Kapila and
      Tom Lane.
      4387cf95
    • Heikki Linnakangas's avatar
      Change the way UESCAPE is lexed, to reduce the size of the flex tables. · a5ff502f
      Heikki Linnakangas authored
      The error rule used to avoid backtracking with the U&'...' UESCAPE 'x'
      syntax bloated the flex tables, so refactor that. This patch makes the error
      rule shorter, by introducing a new exclusive flex state that's entered after
      parsing U&'...'. This shrinks the postgres binary by about 220kB.
      a5ff502f
    • Heikki Linnakangas's avatar
      Add cost estimation of range @> and <@ operators. · 59d0bf9d
      Heikki Linnakangas authored
      The estimates are based on the existing lower bound histogram, and a new
      histogram of range lengths.
      
      Bump catversion, because the range length histogram now needs to be present
      in statistic slot kind 6, or you get an error on @> and <@ queries. (A
      re-ANALYZE would be enough to fix that, though)
      
      Alexander Korotkov, with some refactoring by me.
      59d0bf9d
    • Peter Eisentraut's avatar
      Add regression tests for XML mapping of domains · 788bce13
      Peter Eisentraut authored
      Pavel Stěhule
      788bce13
    • Kevin Grittner's avatar
      Fix bug in dumping prior releases due to MV REFRESH dependency checking. · a18b72ad
      Kevin Grittner authored
      Reports and suggested patches from Fujii Masao and Andrew Dunstan.
      
      Andrew Dunstan
      a18b72ad
  2. 13 Mar, 2013 1 commit
    • Tom Lane's avatar
      Introduce less-bogus handling of collations in contrib/postgres_fdw. · ed3ddf91
      Tom Lane authored
      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.
      ed3ddf91
  3. 12 Mar, 2013 6 commits
    • Tom Lane's avatar
      Fix documentation oversight. · 209f675f
      Tom Lane authored
      Mention that PlanForeignModify's result must be copiable by copyObject.
      209f675f
    • Tom Lane's avatar
      Fix contrib/postgres_fdw's handling of column defaults. · 50c19fc7
      Tom Lane authored
      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.
      50c19fc7
    • Tom Lane's avatar
      Allow default expressions to be attached to columns of foreign tables. · a0c6dfee
      Tom Lane authored
      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.
      a0c6dfee
    • Alvaro Herrera's avatar
      Fix orthotypographical mistake · 1ba01193
      Alvaro Herrera authored
      Apparently I lost some of the edits I had done on this page for commit
      0ac5ad51.
      
      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.
      1ba01193
    • Tom Lane's avatar
      Avoid row-processing-order dependency in postgres_fdw regression test. · 0247d43d
      Tom Lane authored
      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.
      0247d43d
    • Tom Lane's avatar
      Fix postgres_fdw's issues with inconsistent interpretation of data values. · cc3f281f
      Tom Lane authored
      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 f7951eef, 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.)
      cc3f281f
  4. 11 Mar, 2013 2 commits
  5. 10 Mar, 2013 7 commits
    • Andrew Dunstan's avatar
      JSON generation improvements. · 38fb4d97
      Andrew Dunstan authored
      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.
      38fb4d97
    • Peter Eisentraut's avatar
      doc: Add note about checkpoint_warning vs checkpoint_timeout · dd28c410
      Peter Eisentraut authored
      suggested by Tianyin Xu
      dd28c410
    • Peter Eisentraut's avatar
      31531325
    • Peter Eisentraut's avatar
    • Tom Lane's avatar
      Band-aid for regression test expected-results problem with timestamptz. · f7951eef
      Tom Lane authored
      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.
      f7951eef
    • Tom Lane's avatar
      Support writable foreign tables. · 21734d2f
      Tom Lane authored
      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.
      21734d2f
    • Magnus Hagander's avatar
      Report pg_hba line number and contents when users fail to log in · 7f49a67f
      Magnus Hagander authored
      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
      7f49a67f
  6. 08 Mar, 2013 3 commits
  7. 07 Mar, 2013 7 commits
  8. 06 Mar, 2013 7 commits
  9. 05 Mar, 2013 1 commit
    • Tom Lane's avatar
      Fix to_char() to use ASCII-only case-folding rules where appropriate. · 80b011ef
      Tom Lane authored
      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.
      80b011ef