1. 14 Sep, 2009 1 commit
  2. 13 Sep, 2009 4 commits
    • Tom Lane's avatar
      Write psql's ~/.psql_history file using history_truncate_file() and · e97281c4
      Tom Lane authored
      append_history(), if libreadline is new enough to have those functions
      (they seem to be present at least since 4.2; but libedit may not have them).
      This gives significantly saner behavior when two or more sessions overlap in
      their use of the history file; although having two sessions exit at just the
      same time is still perilous to your history.  The behavior of \s remains
      unchanged, ie, overwrite whatever was there.
      Per bug #5052 from Marek Wójtowicz.
      e97281c4
    • Peter Eisentraut's avatar
      Fix Unicode support in PL/Python · eb62398f
      Peter Eisentraut authored
      Check calls of PyUnicode_AsEncodedString() for NULL return, probably
      because the encoding name is not known.  Add special treatment for
      SQL_ASCII, which Python definitely does not know.
      
      Since using SQL_ASCII produces errors in the regression tests when
      non-ASCII characters are involved, we have to put back various regression
      test result variants.
      eb62398f
    • Peter Eisentraut's avatar
      6689ce3e
    • Heikki Linnakangas's avatar
      Don't error out if recycling or removing an old WAL segment fails at the end · 7f2a10fe
      Heikki Linnakangas authored
      of checkpoint. Although the checkpoint has been written to WAL at that point
      already, so that all data is safe, and we'll retry removing the WAL segment at
      the next checkpoint, if such a failure persists we won't be able to remove any
      other old WAL segments either and will eventually run out of disk space. It's
      better to treat the failure as non-fatal, and move on to clean any other WAL
      segment and continue with any other end-of-checkpoint cleanup.
      
      We don't normally expect any such failures, but on Windows it can happen with
      some anti-virus or backup software that lock files without FILE_SHARE_DELETE
      flag.
      
      Also, the loop in pgrename() to retry when the file is locked was broken. If a
      file is locked on Windows, you get ERROR_SHARE_VIOLATION, not
      ERROR_ACCESS_DENIED, at least on modern versions. Fix that, although I left
      the check for ERROR_ACCESS_DENIED in there as well (presumably it was correct
      in some environment), and added ERROR_LOCK_VIOLATION to be consistent with
      similar checks in pgwin32_open(). Reduce the timeout on the loop from 30s to
      10s, on the grounds that since it's been broken, we've effectively had a
      timeout of 0s and no-one has complained, so a smaller timeout is actually
      closer to the old behavior. A longer timeout would mean that if recycling a
      WAL file fails because it's locked for some reason, InstallXLogFileSegment()
      will hold ControlFileLock for longer, potentially blocking other backends, so
      a long timeout isn't totally harmless.
      
      While we're at it, set errno correctly in pgrename().
      
      Backpatch to 8.2, which is the oldest version supported on Windows. The xlog.c
      changes would make sense on other platforms and thus on older versions as
      well, but since there's no such locking issues on other platforms, it's not
      worth it.
      7f2a10fe
  3. 12 Sep, 2009 7 commits
    • Joe Conway's avatar
      plug dblink resource leak · d6119d80
      Joe Conway authored
      dblink generates orphaned connections when called with a connection string,
      fail_on_error = true, and an ERROR occurs. Discovery and patch by
      Tatsuhito Kasahara. Introduced in 8.4.
      d6119d80
    • Peter Eisentraut's avatar
      Add Unicode support in PL/Python · 4ab6ebf3
      Peter Eisentraut authored
      PL/Python now accepts Unicode objects where it previously only accepted string
      objects (for example, as return value).  Unicode objects are converted to the
      PostgreSQL server encoding as necessary.
      
      This change is also necessary for future Python 3 support, which treats all
      strings as Unicode objects.
      
      Since this removes the error conditions that the plpython_unicode test file
      tested for, the alternative result files are no longer necessary.
      4ab6ebf3
    • Tom Lane's avatar
      Rewrite the planner's handling of materialized plan types so that there is · 9bb34281
      Tom Lane authored
      an explicit model of rescan costs being different from first-time costs.
      The costing of Material nodes in particular now has some visible relationship
      to the actual runtime behavior, where before it was essentially fantasy.
      This also fixes up a couple of places where different materialized plan types
      were treated differently for no very good reason (probably just oversights).
      
      A couple of the regression tests are affected, because the planner now chooses
      to put the other relation on the inside of a nestloop-with-materialize.
      So far as I can see both changes are sane, and the planner is now more
      consistently following the expectation that it should prefer to materialize
      the smaller of two relations.
      
      Per a recent discussion with Robert Haas.
      9bb34281
    • Tom Lane's avatar
      Improve GRANT reference page's description of object ownership · 5f1b32dd
      Tom Lane authored
      privileges by mentioning the possibility of granting membership in
      the owning role.
      5f1b32dd
    • Tom Lane's avatar
      Install a hopefully-temporary workaround for Snow Leopard readdir() bug. · 325aeb4a
      Tom Lane authored
      If Apple doesn't fix that reasonably soon, we'll have to consider
      back-patching a workaround; but for now, just hack it in HEAD so that
      we can get buildfarm reports on HEAD from OS X machines.
      Per Jan Otto.
      325aeb4a
    • Peter Eisentraut's avatar
    • Tom Lane's avatar
      Fix assertion failure when a SELECT DISTINCT ON expression is volatile. · d5a4b69c
      Tom Lane authored
      In this case we generate two PathKey references to the expression (one for
      DISTINCT and one for ORDER BY) and they really need to refer to the same
      EquivalenceClass.  However get_eclass_for_sort_expr was being overly paranoid
      and creating two different EC's.  Correct behavior is to use the SortGroupRef
      index to decide whether two references to volatile expressions that are
      equal() (ie textually equivalent) should be considered the same.
      
      Backpatch to 8.4.  Possibly this should be changed in 8.3 as well, but
      I'll refrain in the absence of evidence of a visible failure in that branch.
      
      Per bug #5049.
      d5a4b69c
  4. 11 Sep, 2009 2 commits
  5. 10 Sep, 2009 3 commits
  6. 09 Sep, 2009 2 commits
    • Peter Eisentraut's avatar
      Fix/improve bytea and boolean support in PL/Python · 3ab8b7fa
      Peter Eisentraut authored
      Before, PL/Python converted data between SQL and Python by going
      through a C string representation.  This broke for bytea in two ways:
      
      - On input (function parameters), you would get a Python string that
        contains bytea's particular external representation with backslashes
        etc., instead of a sequence of bytes, which is what you would expect
        in a Python environment.  This problem is exacerbated by the new
        bytea output format.
      
      - On output (function return value), null bytes in the Python string
        would cause truncation before the data gets stored into a bytea
        datum.
      
      This is now fixed by converting directly between the PostgreSQL datum
      and the Python representation.
      
      The required generalized infrastructure also allows for other
      improvements in passing:
      
      - When returning a boolean value, the SQL datum is now true if and
        only if Python considers the value that was passed out of the
        PL/Python function to be true.  Previously, this determination was
        left to the boolean data type input function.  So, now returning
        'foo' results in true, because Python considers it true, rather than
        false because PostgreSQL considers it false.
      
      - On input, we can convert the integer and float types directly to
        their Python equivalents without having to go through an
        intermediate string representation.
      
      original patch by Caleb Welton, with updates by myself
      3ab8b7fa
    • Tom Lane's avatar
      Fix bug with WITH RECURSIVE immediately inside WITH RECURSIVE. 99% of the · 255f66ef
      Tom Lane authored
      code was already okay with this, but the hack that obtained the output
      column types of a recursive union in advance of doing real parse analysis
      of the recursive union forgot to handle the case where there was an inner
      WITH clause available to the non-recursive term.  Best fix seems to be to
      refactor so that we don't need the "throwaway" parse analysis step at all.
      Instead, teach the transformSetOperationStmt code to set up the CTE's output
      column information after it's processed the non-recursive term normally.
      Per report from David Fetter.
      255f66ef
  7. 08 Sep, 2009 4 commits
    • Tom Lane's avatar
      Remove any -arch switches given in ExtUtils::Embed's ldopts from our · d69a419e
      Tom Lane authored
      perl_embed_ldflags setting.  On OS X it seems that ExtUtils::Embed is
      trying to force a universal binary to be built, but you need to specify
      that a lot further upstream if you want Postgres built that way; the only
      result of including -arch in perl_embed_ldflags is some warnings at the
      plperl.so link step.  Per my complaint and Jan Otto's suggestion.
      d69a419e
    • Tom Lane's avatar
      Add a boolean GUC parameter "bonjour" to control whether a Bonjour-enabled · eeb6cb14
      Tom Lane authored
      build actually attempts to advertise itself via Bonjour.  Formerly it always
      did so, which meant that packagers had to decide for their users whether
      this behavior was wanted or not.  The default is "off" to be on the safe
      side, though this represents a change in the default behavior of a
      Bonjour-enabled build.  Per discussion.
      eeb6cb14
    • Tom Lane's avatar
      Replace use of the long-deprecated Bonjour API DNSServiceRegistrationCreate · 59b9f3d3
      Tom Lane authored
      with the not-so-deprecated DNSServiceRegister.  This patch shouldn't change
      any user-visible behavior, it just gets rid of a deprecation warning in
      --with-bonjour builds.  The new code will fail on OS X releases before 10.3,
      but it seems unlikely that anyone will want to run Postgres 8.5 on 10.2.
      59b9f3d3
    • Tom Lane's avatar
      Remove outside-the-scanner references to "yyleng". · 4d3456e8
      Tom Lane authored
      It seems the flex developers have decided to change yyleng from int to size_t.
      This has already happened in the latest release of OS X, and will start
      happening elsewhere once the next release of flex appears.  Rather than trying
      to divine how it's declared in any particular build, let's just remove the one
      existing not-very-necessary external usage.
      
      Back-patch to all supported branches; not so much because users in the field
      are likely to care about building old branches with cutting-edge flex, as
      to keep OSX-based buildfarm members from having problems with old branches.
      4d3456e8
  8. 07 Sep, 2009 1 commit
  9. 06 Sep, 2009 1 commit
  10. 05 Sep, 2009 2 commits
  11. 04 Sep, 2009 4 commits
    • Tom Lane's avatar
    • Tom Lane's avatar
      Remove pgstat's discrimination against MsgVacuum and MsgAnalyze messages. · 47ef623c
      Tom Lane authored
      Formerly, these message types would be discarded unless there was already
      a stats hash table entry for the target table.  However, the intent of
      saving hash table space for unused tables was subverted by the fact that
      the physical I/O done by the vacuum or analyze would result in an immediately
      following tabstat message, which would create the hash table entry anyway.
      All that we had left was surprising loss of statistical data, as in a recent
      complaint from Jaime Casanova.
      
      It seems unlikely that a real database would have many tables that go totally
      untouched over the long haul, so the consensus is that this "optimization"
      serves little purpose anyhow.  Remove it, and just create the hash table
      entry on demand in all cases.
      47ef623c
    • Heikki Linnakangas's avatar
      Tigthen binary receive functions so that they reject values that the text · 7be39bb0
      Heikki Linnakangas authored
      input functions don't accept either. While the backend can handle such
      values fine, they can cause trouble in clients and in pg_dump/restore.
      
      This is followup to the original issue on time datatype reported by Andrew
      McNamara a while ago. Like that one, none of these seem worth
      back-patching.
      7be39bb0
    • Heikki Linnakangas's avatar
      Fix encoding handling in xml binary input function. If the XML header didn't · 237859e4
      Heikki Linnakangas authored
      specify an encoding explicitly, we used to treat it as being in database
      encoding when we parsed it, but then perform a UTF-8 -> database encoding
      conversion on it, which was completely bogus. It's now consistently treated as
      UTF-8.
      237859e4
  12. 03 Sep, 2009 9 commits
    • Tom Lane's avatar
      1608489b
    • Tom Lane's avatar
      Make LOAD of an already-loaded library into a no-op, instead of attempting · 602a9ef5
      Tom Lane authored
      to unload and re-load the library.
      
      The difficulty with unloading a library is that we haven't defined safe
      protocols for doing so.  In particular, there's no safe mechanism for
      getting out of a "hook" function pointer unless libraries are unloaded
      in reverse order of loading.  And there's no mechanism at all for undefining
      a custom GUC variable, so GUC would be left with a pointer to an old value
      that might or might not still be valid, and very possibly wouldn't be in
      the same place anymore.
      
      While the unload and reload behavior had some usefulness in easing
      development of new loadable libraries, it's of no use whatever to normal
      users, so just disabling it isn't giving up that much.  Someday we might
      care to expend the effort to develop safe unload protocols; but even if
      we did, there'd be little certainty that every third-party loadable module
      was following them, so some security restrictions would still be needed.
      
      Back-patch to 8.2; before that, LOAD was superuser-only anyway.
      
      Security: unprivileged users could crash backend.  CVE not assigned yet
      602a9ef5
    • Tom Lane's avatar
      Disallow RESET ROLE and RESET SESSION AUTHORIZATION inside security-definer · 187e5d89
      Tom Lane authored
      functions.
      
      This extends the previous patch that forbade SETting these variables inside
      security-definer functions.  RESET is equally a security hole, since it
      would allow regaining privileges of the caller; furthermore it can trigger
      Assert failures and perhaps other internal errors, since the code is not
      expecting these variables to change in such contexts.  The previous patch
      did not cover this case because assign hooks don't really have enough
      information, so move the responsibility for preventing this into guc.c.
      
      Problem discovered by Heikki Linnakangas.
      
      Security: no CVE assigned yet, extends CVE-2007-6600
      187e5d89
    • Tom Lane's avatar
      Install a workaround for a longstanding gcc bug that allows SIGFPE traps · d0a368c6
      Tom Lane authored
      to occur for division by zero, even though the code is carefully avoiding
      that.  All available evidence is that the only functions affected are
      int24div, int48div, and int28div, so patch just those three functions to
      include a "return" after the ereport() call.
      
      Backpatch to 8.4 so that the fix can be tested in production builds.
      For older branches our recommendation will continue to be to use -O1
      on affected platforms (which are mostly non-mainstream anyway).
      d0a368c6
    • Michael Meskes's avatar
      Fixed incorrect memory management. · fc193739
      Michael Meskes authored
      fc193739
    • Michael Meskes's avatar
      Removed some variables no longer needed. · 2720c570
      Michael Meskes authored
      2720c570
    • Michael Meskes's avatar
      fe35c8e1
    • Tom Lane's avatar
      Update time zone data files to tzdata release 2009l: DST law changes in · 49d960c4
      Tom Lane authored
      Egypt, Mauritius, Bangladesh.
      49d960c4
    • Tom Lane's avatar
      Remove initdb's rather gratuitous check to see if the backend created a · b02c32e1
      Tom Lane authored
      flat password file, because it never will anymore.  We had managed to
      miss this during the recent flat-file-ectomy because it only happens if
      --pwfile or --pwprompt is specified to initdb.  Apparently, few hackers
      use those.  Reported by Erik Rijkers.
      b02c32e1