1. 23 Jul, 2011 1 commit
    • Tom Lane's avatar
      Rethink behavior of CREATE OR REPLACE during CREATE EXTENSION. · 988cccc6
      Tom Lane authored
      The original implementation simply did nothing when replacing an existing
      object during CREATE EXTENSION.  The folly of this was exposed by a report
      from Marc Munro: if the existing object belongs to another extension, we
      are left in an inconsistent state.  We should insist that the object does
      not belong to another extension, and then add it to the current extension
      if not already a member.
      988cccc6
  2. 22 Jul, 2011 1 commit
    • Robert Haas's avatar
      Unbreak unlogged tables. · 6f1be5a6
      Robert Haas authored
      I broke this in commit 5da79169, which
      was obviously insufficiently well tested.  Add some regression tests
      in the hope of making future slip-ups more likely to be noticed.
      6f1be5a6
  3. 21 Jul, 2011 3 commits
    • Bruce Momjian's avatar
      In pg_upgrade, add C comment about why we don't try to do shared file · 43aa40e1
      Bruce Momjian authored
      writes for logging.
      43aa40e1
    • Tom Lane's avatar
      Fix PQsetvalue() to avoid possible crash when adding a new tuple. · a9f0dbc3
      Tom Lane authored
      PQsetvalue unnecessarily duplicated the logic in pqAddTuple, and didn't
      duplicate it exactly either --- pqAddTuple does not care what is in the
      tuple-pointer array positions beyond the last valid entry, whereas the
      code in PQsetvalue assumed such positions would contain NULL.  This led
      to possible crashes if PQsetvalue was applied to a PGresult that had
      previously been enlarged with pqAddTuple, for instance one built from a
      server query.  Fix by relying on pqAddTuple instead of duplicating logic,
      and not assuming anything about the contents of res->tuples[res->ntups].
      
      Back-patch to 8.4, where PQsetvalue was introduced.
      
      Andrew Chernow
      a9f0dbc3
    • Tom Lane's avatar
      Make xpath() do something useful with XPath expressions that return scalars. · 0ce7676a
      Tom Lane authored
      Previously, xpath() simply returned an empty array if the expression did
      not yield a node set.  This is useless for expressions that return scalars,
      such as one with name() at the top level.  Arrange to return the scalar
      value as a single-element xml array, instead.  (String values will be
      suitably escaped.)
      
      This change will also cause xpath_exists() to return true, not false,
      for such expressions.
      
      Florian Pflug, reviewed by Radoslaw Smogura
      0ce7676a
  4. 20 Jul, 2011 7 commits
    • Tom Lane's avatar
      Ensure that xpath() escapes special characters in string values. · aaf15e5c
      Tom Lane authored
      Without this it's possible for the output to not be legal XML, as
      illustrated by the added regression test cases.
      
      NB: this change will need to be called out as an incompatibility in the
      9.2 release notes, since it's possible somebody was relying on the old
      behavior, even though it's clearly wrong.
      
      Florian Pflug, reviewed by Radoslaw Smogura
      aaf15e5c
    • Bruce Momjian's avatar
      In pg_upgrade, fix the -l/log option to work on Windows. · 17a16eeb
      Bruce Momjian authored
      Also, double-quote the log file name in all places, to allow (on all
      platforms) log file names with spaces.
      
      Back patch to 9.0 and 9.1.
      17a16eeb
    • Bruce Momjian's avatar
      6b43fdde
    • Robert Haas's avatar
      Support SECURITY LABEL on databases, tablespaces, and roles. · 463f2625
      Robert Haas authored
      This requires a new shared catalog, pg_shseclabel.
      
      Along the way, fix the security_label regression tests so that they
      don't monkey with the labels of any pre-existing objects.  This is
      unlikely to matter in practice, since only the label for the "dummy"
      provider was being manipulated.  But this way still seems cleaner.
      
      KaiGai Kohei, with fairly extensive hacking by me.
      463f2625
    • Tom Lane's avatar
      Rewrite libxml error handling to be more robust. · cacd42d6
      Tom Lane authored
      libxml reports some errors (like invalid xmlns attributes) via the error
      handler hook, but still returns a success indicator to the library caller.
      This causes us to miss some errors that are important to report.  Since the
      "generic" error handler hook doesn't know whether the message it's getting
      is for an error, warning, or notice, stop using that and instead start
      using the "structured" error handler hook, which gets enough information
      to be useful.
      
      While at it, arrange to save and restore the error handler hook setting in
      each libxml-using function, rather than assuming we can set and forget the
      hook.  This should improve the odds of working nicely with third-party
      libraries that also use libxml.
      
      In passing, volatile-ize some local variables that get modified within
      PG_TRY blocks.  I noticed this while testing with an older gcc version
      than I'd previously tried to compile xml.c with.
      
      Florian Pflug and Tom Lane, with extensive review/testing by Noah Misch
      cacd42d6
    • Robert Haas's avatar
      Improve sepgsql and SECURITY LABEL documentation. · d79a601f
      Robert Haas authored
      KaiGai Kohei, based on feedback from Yeb Havinga, with some
      corrections by me.
      d79a601f
    • Robert Haas's avatar
      Minor improvement to pg_seclabel documentation. · 550cd074
      Robert Haas authored
      This is a bit more consistent with the way pg_description is
      documented, and also include a useful cross-link.
      550cd074
  5. 19 Jul, 2011 12 commits
    • Alvaro Herrera's avatar
      Make isolationtester more robust on locked commands · c8dfc892
      Alvaro Herrera authored
      Noah Misch diagnosed the buildfarm problems in the isolation tests
      partly as failure to differentiate backends properly; the old code was
      using backend IDs, which is not good enough because a new backend might
      use an already used ID.  Use PIDs instead.
      
      Also, the code was purposely careless about other concurrent activity,
      because it isn't expected; and in fact, it doesn't affect the vast
      majority of the time.  However, it can be observed that autovacuum can
      block tables for long enough to cause sporadic failures.  The new code
      accounts for that by ignoring locks held by processes not explicitly
      declared in our spec file.
      
      Author: Noah Misch
      c8dfc892
    • Alvaro Herrera's avatar
      Increase deadlock_timeout to 100ms in FK isolation tests · d6db0e4e
      Alvaro Herrera authored
      The previous value of 20ms is dangerously close to the time actually
      spent just waiting for the deadlock to happen, so on occasion it causes
      the test to fail simply because the other session didn't get to run
      early enough, not managing to cause the deadlock that needs to be
      detected.  With this new value, it's expected that most machines on
      normal load will be able to pass the test.
      
      Author: Noah Misch
      d6db0e4e
    • Alvaro Herrera's avatar
      Add expected regress output on stricter isolation levels · a0eae1a2
      Alvaro Herrera authored
      These new files allow the new FK tests on isolationtester to pass on the
      serializable and repeatable read isolation levels (which are untested
      by the buildfarm).
      
      Author: Kevin Grittner
      Reviewed by Noah Misch
      a0eae1a2
    • Simon Riggs's avatar
      Remove O(N^2) performance issue with multiple SAVEPOINTs. · 7cb71228
      Simon Riggs authored
      Subtransaction locks now released en masse at main commit, rather than
      repeatedly re-scanning for locks as we ascend the nested transaction tree.
      Split transaction state TBLOCK_SUBEND into two states, TBLOCK_SUBCOMMIT
      and TBLOCK_SUBRELEASE to allow the commit path to be optimised using
      the existing code in ResourceOwnerRelease() which appears to have been
      intended for this usage, judging from comments therein.
      7cb71228
    • Robert Haas's avatar
      Some refinement for the "fast path" lock patch. · 8e5ac74c
      Robert Haas authored
      1. In GetLockStatusData, avoid initializing instance before we've ensured
      that the array is large enough.  Otherwise, if repalloc moves the block
      around, we're hosed.
      
      2. Add the word "Relation" to the name of some identifiers, to avoid
      assuming that the fast-path mechanism will only ever apply to relations
      (though these particular parts certainly will).  Some of the macros
      could possibly use similar treatment, but the names are getting awfully
      long already.
      
      3. Add a missing word to comment in AtPrepare_Locks().
      8e5ac74c
    • Robert Haas's avatar
      Remove superfluous variable. · cdd61237
      Robert Haas authored
      Reported by Peter Eisentraut.
      cdd61237
    • Simon Riggs's avatar
      6ba77bce
    • Simon Riggs's avatar
      4bd8ed31
    • Peter Eisentraut's avatar
      Fix typo · 6307fff3
      Peter Eisentraut authored
      6307fff3
    • Peter Eisentraut's avatar
      Put inline declaration before return type · bf6be7af
      Peter Eisentraut authored
      gcc -Wextra complains that the other way around is obsolescent, and
      this was the only place where it was written in this order.
      bf6be7af
    • Peter Eisentraut's avatar
      30f85453
    • Simon Riggs's avatar
      Cascading replication feature for streaming log-based replication. · 52861058
      Simon Riggs authored
      Standby servers can now have WALSender processes, which can work with
      either WALReceiver or archive_commands to pass data. Fully updated
      docs, including new conceptual terms of sending server, upstream and
      downstream servers. WALSenders terminated when promote to master.
      
      Fujii Masao, review, rework and doc rewrite by Simon Riggs
      52861058
  6. 18 Jul, 2011 8 commits
  7. 17 Jul, 2011 2 commits
    • Tom Lane's avatar
      Further thoughts about temp_file_limit patch. · 9473bb96
      Tom Lane authored
      Move FileClose's decrement of temporary_files_size up, so that it will be
      executed even if elog() throws an error.  This is reasonable since if the
      unlink() fails, the fact the file is still there is not our fault, and we
      are going to forget about it anyhow.  So we won't count it against
      temp_file_limit anymore.
      
      Update fileSize and temporary_files_size correctly in FileTruncate.
      We probably don't have any places that truncate temp files, but fd.c
      surely should not assume that.
      9473bb96
    • Tom Lane's avatar
      Add temp_file_limit GUC parameter to constrain temporary file space usage. · 23e5b16c
      Tom Lane authored
      The limit is enforced against the total amount of temp file space used by
      each session.
      
      Mark Kirkwood, reviewed by Cédric Villemain and Tatsuo Ishii
      23e5b16c
  8. 16 Jul, 2011 5 commits
    • Tom Lane's avatar
      Improve make_subplanTargetList to avoid including Vars unnecessarily. · 1bc16a94
      Tom Lane authored
      If a Var was used only in a GROUP BY expression, the previous
      implementation would include the Var by itself (as well as the expression)
      in the generated targetlist.  This wouldn't affect the efficiency of the
      scan/join part of the plan at all, but it could result in passing
      unnecessarily-wide rows through sorting and grouping steps.  It turns out
      to take only a little more code, and not noticeably more time, to generate
      a tlist without such redundancy, so let's do that.  Per a recent gripe from
      HarmeekSingh Bedi.
      1bc16a94
    • Tom Lane's avatar
      Replace errdetail("%s", ...) with errdetail_internal("%s", ...). · 1af37ec9
      Tom Lane authored
      There may be some other places where we should use errdetail_internal,
      but they'll have to be evaluated case-by-case.  This commit just hits
      a bunch of places where invoking gettext is obviously a waste of cycles.
      1af37ec9
    • Tom Lane's avatar
      Use errdetail_internal() for SSI transaction cancellation details. · 3ee7c871
      Tom Lane authored
      Per discussion, these seem too technical to be worth translating.
      
      Kevin Grittner
      3ee7c871
    • Tom Lane's avatar
      Add an errdetail_internal() ereport auxiliary routine. · ed7ed767
      Tom Lane authored
      This function supports untranslated detail messages, in the same way that
      errmsg_internal supports untranslated primary messages.  We've needed this
      for some time IMO, but discussion of some cases in the SSI code provided
      the impetus to actually add it.
      
      Kevin Grittner, with minor adjustments by me
      ed7ed767
    • Magnus Hagander's avatar
      Fix SSPI login when multiple roundtrips are required · 0886dde5
      Magnus Hagander authored
      This fixes SSPI login failures showing "The function
      requested is not supported", often showing up when connecting
      to localhost. The reason was not properly updating the SSPI
      handle when multiple roundtrips were required to complete the
      authentication sequence.
      
      Report and analysis by Ahmed Shinwari, patch by Magnus Hagander
      0886dde5
  9. 15 Jul, 2011 1 commit