1. 05 Oct, 2010 1 commit
  2. 03 Oct, 2010 1 commit
    • Tom Lane's avatar
      Behave correctly if INSERT ... VALUES is decorated with additional clauses. · 3a13f12b
      Tom Lane authored
      In versions 8.2 and up, the grammar allows attaching ORDER BY, LIMIT,
      FOR UPDATE, or WITH to VALUES, and hence to INSERT ... VALUES.  But the
      special-case code for VALUES in transformInsertStmt() wasn't expecting any
      of those, and just ignored them, leading to unexpected results.  Rather
      than complicate the special-case path, just ensure that the presence of any
      of those clauses makes us treat the query as if it had a general SELECT.
      Per report from Hitoshi Harada.
      3a13f12b
  3. 02 Oct, 2010 2 commits
    • Tom Lane's avatar
      Remove excess argument to open(2). · e77f605d
      Tom Lane authored
      Many compilers don't complain about this, but some do, and it's certainly
      wrong.  Back-patch to 8.4 where the error was introduced.
      
      Mark Kirkwood
      e77f605d
    • Tom Lane's avatar
      Throw an appropriate error if ALTER COLUMN TYPE finds a dependent trigger. · 1f0b62e8
      Tom Lane authored
      Actually making this case work, if the column is used in the trigger's
      WHEN condition, will take some new code that probably isn't appropriate
      to back-patch.  For now, just throw a FEATURE_NOT_SUPPORTED error rather
      than allowing control to reach the "unexpected object" case.  Per bug #5688
      from Daniel Grace.  Back-patch to 9.0 where the possibility of such a
      dependency was introduced.
      1f0b62e8
  4. 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
  5. 29 Sep, 2010 3 commits
  6. 28 Sep, 2010 16 commits
  7. 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
  8. 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
  9. 25 Sep, 2010 3 commits
  10. 24 Sep, 2010 4 commits
  11. 23 Sep, 2010 1 commit