1. 07 Oct, 2010 1 commit
    • Robert Haas's avatar
      Improve WAL reliability documentation, and add more cross-references to it. · 694c56af
      Robert Haas authored
      In particular, we are now more explicit about the fact that you may need
      wal_sync_method=fsync_writethrough for crash-safety on some platforms,
      including MaxOS X.  There's also now an explicit caution against assuming
      that the default setting of wal_sync_method is either crash-safe or best
      for performance.
      694c56af
  2. 06 Oct, 2010 2 commits
    • Tom Lane's avatar
      Reduce the memory requirement for large ispell dictionaries. · 3e5f9412
      Tom Lane authored
      This patch eliminates per-chunk palloc overhead for most small allocations
      needed in the representation of an ispell dictionary.  This saves close to
      a factor of 2 on the current Czech ispell data.  While it doesn't cover
      every last small allocation in the ispell code, we are at the point of
      diminishing returns, because about 95% of the allocations are covered
      already.
      
      Pavel Stehule, rather heavily revised by Tom
      3e5f9412
    • Tom Lane's avatar
      Clean up temporary-memory management during ispell dictionary loading. · 9b910def
      Tom Lane authored
      Add explicit initialization and cleanup functions to spell.c, and keep
      all working state in the already-existing ISpellDict struct.  This lets us
      get rid of a static variable along with some extremely shaky assumptions
      about usage of child memory contexts.
      
      This commit is just code beautification and has no impact on functionality
      or performance, but it opens the way to a less-grotty implementation of
      Pavel's memory-saving hack, which will follow shortly.
      9b910def
  3. 05 Oct, 2010 2 commits
  4. 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
  5. 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
  6. 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
  7. 29 Sep, 2010 3 commits
  8. 28 Sep, 2010 16 commits
  9. 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
  10. 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
  11. 25 Sep, 2010 3 commits
  12. 24 Sep, 2010 1 commit