1. 30 Sep, 2010 3 commits
    • Tom Lane's avatar
      Use a separate interpreter for each calling SQL userid in plperl and pltcl. · 50595b5f
      Tom Lane authored
      There are numerous methods by which a Perl or Tcl function can subvert
      the behavior of another such function executed later; for example, by
      redefining standard functions or operators called by the target function.
      If the target function is SECURITY DEFINER, or is called by such a
      function, this means that any ordinary SQL user with Perl or Tcl language
      usage rights can do essentially anything with the privileges of the target
      function's owner.
      
      To close this security hole, create a separate Perl or Tcl interpreter for
      each SQL userid under which plperl or pltcl functions are executed within
      a session.  However, all plperlu or pltclu functions run within a session
      still share a single interpreter, since they all execute at the trust
      level of a database superuser anyway.
      
      Note: this change results in a functionality loss when libperl has been
      built without the "multiplicity" option: it's no longer possible to call
      plperl functions under different userids in one session, since such a
      libperl can't support multiple interpreters in one process.  However, such
      a libperl already failed to support concurrent use of plperl and plperlu,
      so it's likely that few people use such versions with Postgres.
      
      Security: CVE-2010-3433
      50595b5f
    • Robert Haas's avatar
      1f0eb5de
    • Tom Lane's avatar
      Update release notes for releases 9.0.1, 8.4.5, 8.3.12, 8.2.18, 8.1.22, · a5683ea0
      Tom Lane authored
      8.0.26, and 7.4.30.
      a5683ea0
  2. 29 Sep, 2010 3 commits
  3. 28 Sep, 2010 16 commits
  4. 27 Sep, 2010 2 commits
    • Robert Haas's avatar
      2ce00397
    • Tom Lane's avatar
      Improve git_changelog as per discussion with Robert Haas. · bf429ceb
      Tom Lane authored
      1. Resurrect the behavior where old commits on master will have Branch:
      labels for branches sprouted after the commit was made.  I'm still
      dubious about this mode, but if you want it, say --post-date or -p.
      
      2. Annotate the Branch: labels with the release or branch in which the
      commit was publicly released.  For example, on a release branch you could
      see
      Branch: REL8_3_STABLE Release: REL8_3_2 [92c3a8004] 2008-03-29 00:15:37 +0000
      showing that the fix was released in 8.3.2.  Commits on master will
      usually instead have notes like
      Branch: master Release: REL8_4_BR [6fc9d427] 2008-03-29 00:15:28 +0000
      showing that this commit is ancestral to release branches 8.4 and later.
      If no Release: marker appears, the commit hasn't yet made it into any
      release.
      
      3. Add support for release branches older than 7.4.
      
      4. The implementation is improved by running git log on each branch only
      back to where the branch sprouts from master.  This saves a good deal
      of time (about 50% of the runtime when generating the complete history).
      We generate the post-date-mode tags via a direct understanding that
      they should be applied to master commits made before the branch sprouted,
      rather than backing into them via matching (which isn't any too
      reliable when people used identical log messages for successive commits).
      bf429ceb
  5. 26 Sep, 2010 4 commits
    • Peter Eisentraut's avatar
      Add ALTER TYPE ... ADD/DROP/ALTER/RENAME ATTRIBUTE · e440e12c
      Peter Eisentraut authored
      Like with tables, this also requires allowing the existence of
      composite types with zero attributes.
      
      reviewed by KaiGai Kohei
      e440e12c
    • Tom Lane's avatar
      Still more tweaking of git_changelog. · 899beb78
      Tom Lane authored
      1. Don't assume there's only one candidate match; check them all and use the
      one with the closest timestamp.  Avoids funny output when someone makes
      several successive commits with the same log message, as certain people
      have been known to do.
      
      2. When the same commit (with the same SHA1) is reachable from multiple
      branch tips, don't report it for all the branches; instead report it only
      for the first such branch.  Given our development practices, this case
      arises only for commits that occurred before a given branch split off from
      master.  The original coding blamed old commits on *all* the branches,
      which isn't terribly useful; the new coding blames such a commit only on
      master.
      899beb78
    • Tom Lane's avatar
      Fix some more bugs in git_changelog. · 30d2e100
      Tom Lane authored
      1. Don't forget the last (oldest) commit on the oldest branch.
      
      2. When considering which commit to print next, if two alternatives have
      the same "distortion" score (which is actually the normal case, since
      generally the "distortion" is 0), then choose the later timestamp to
      print first.  I don't know where Robert got the idea to ignore timestamps
      and sort by branch age, but it wasn't a good idea: the resulting ordering
      of commits was just plain bizarre anywhere that some branches had many
      fewer commits than others, which is the typical situation for us.
      30d2e100
    • Tom Lane's avatar
      Minor improvements to git_changelog. · 901a5a78
      Tom Lane authored
      Avoid depending on Date::Calc, which isn't in a basic Perl installation,
      when we can equally well use Time::Local which is.  Also fix the parsing
      of timestamps to take heed of the timezone.  (It looks like cvs2git emitted
      all commit timestamps with zone GMT, so this refinement might've looked
      unnecessary when looking at converted data; but it's needed now.)
      
      Fix parsing of message bodies so that blank lines that may or may not get
      emitted by "git log" aren't confused with real data.  This avoids strange
      formatting of the oldest commit on a branch.
      
      Check child-process exit status, so that we actually notice if "git log"
      fails, and so that we don't accumulate zombie children.
      901a5a78
  6. 25 Sep, 2010 3 commits
  7. 24 Sep, 2010 4 commits
  8. 23 Sep, 2010 5 commits
    • Robert Haas's avatar
      Replace doc references to install-win32 with install-windows. · 3186560f
      Robert Haas authored
      Windows is not necessarily 32-bit, any more.
      
      As suggested by Mike Toews.
      3186560f
    • Tom Lane's avatar
      ProcessIncomingNotify *must* reset notifyInterruptOccurred when called. · a959c67c
      Tom Lane authored
      This was broken in 9.0 by careless addition of an early-exit path.
      Bug report and diagnosis by Jeff Davis.
      a959c67c
    • Tom Lane's avatar
      Prevent show_session_authorization from crashing when session_authorization · 660fbec5
      Tom Lane authored
      hasn't been set.
      
      The only known case where this can happen is when show_session_authorization
      is invoked in an autovacuum process, which is possible if an index function
      calls it, as for example in bug #5669 from Andrew Geery.  We could perhaps
      try to return a sensible value, such as the name of the cluster-owning
      superuser; but that seems like much more trouble than the case is worth,
      and in any case it could create new possible failure modes.  Simply
      returning an empty string seems like the most appropriate fix.
      
      Back-patch to all supported versions, even those before autovacuum, just
      in case there's another way to provoke this crash.
      660fbec5
    • Tom Lane's avatar
      Avoid sharing subpath list structure when flattening nested AppendRels. · ee63981c
      Tom Lane authored
      In some situations the original coding led to corrupting the child AppendRel's
      subpaths list, effectively adding other members of the parent's list to it.
      This was usually masked because we never made any further use of the child's
      list, but given the right combination of circumstances, we could do so.  The
      visible symptom would be a relation getting scanned twice, as in bug #5673
      from David Schmitt.
      
      Backpatch to 8.2, which is as far back as the risky coding appears.  The
      example submitted by David only fails in 8.4 and later, but I'm not convinced
      that there aren't any even-more-obscure cases where 8.2 and 8.3 would fail.
      ee63981c
    • Tom Lane's avatar
      Make _outPathInfo print the relid set of the path's parent rel. · 003788e8
      Tom Lane authored
      We can't actually print the parent RelOptInfo in toto, because that would
      lead to infinite recursion.  But it's safe enough to reach into the parent
      and print its identifying relids, and that makes it a whole lot easier
      to figure out what a Path represents.  Should have done this years ago.
      003788e8