1. 13 Oct, 2010 5 commits
  2. 12 Oct, 2010 3 commits
    • Tom Lane's avatar
      Remove some unnecessary tests of pgstat_track_counts. · f4d242ef
      Tom Lane authored
      We may as well make pgstat_count_heap_scan() and related macros just count
      whenever rel->pgstat_info isn't null.  Testing pgstat_track_counts buys
      nothing at all in the normal case where that flag is ON; and when it's OFF,
      the pgstat_info link will be null, so it's still a useless test.
      
      This change is unlikely to buy any noticeable performance improvement,
      but a cycle shaved is a cycle earned; and my investigations earlier today
      convinced me that we're down to the point where individual instructions in
      the inner execution loops are starting to matter.
      f4d242ef
    • Alvaro Herrera's avatar
      Fix typo · 82659e04
      Alvaro Herrera authored
      82659e04
    • Tom Lane's avatar
      Fix plpython so that it again honors typmod while assigning to tuple fields. · 09130e58
      Tom Lane authored
      This was broken in 9.0 while improving plpython's conversion behavior for
      bytea and boolean.  Per bug report from maizi.
      09130e58
  3. 11 Oct, 2010 2 commits
    • Tom Lane's avatar
      Fix assorted bugs in GIN's WAL replay logic. · 4016bdef
      Tom Lane authored
      The original coding was quite sloppy about handling the case where
      XLogReadBuffer fails (because the page has since been deleted).  This
      would result in either "bad buffer id: 0" or an Assert failure during
      replay, if indeed the page were no longer there.  In a couple of places
      it also neglected to check whether the change had already been applied,
      which would probably result in corrupted index contents.  I believe that
      bug #5703 is an instance of the first problem.  These issues could show up
      without replication, but only if you were unfortunate enough to crash
      between modification of a GIN index and the next checkpoint.
      
      Back-patch to 8.2, which is as far back as GIN has WAL support.
      4016bdef
    • Tom Lane's avatar
      Improve the planner's simplification of NOT constructs. · 220e45bf
      Tom Lane authored
      This patch merges the responsibility for NOT-flattening into
      eval_const_expressions' processing.  It wasn't done that way originally
      because prepqual.c is far older than eval_const_expressions.  But putting
      this work into eval_const_expressions saves one pass over the qual trees,
      and in fact saves even more than that because we can exploit the knowledge
      that the subexpressions have already been recursively simplified.  Doing it
      this way also lets us do it uniformly over all expressions, whereas
      prepqual.c formerly just did it at top level to save cycles.  That should
      improve the planner's ability to recognize logically-equivalent constructs.
      
      While at it, also add the ability to fold a NOT into BooleanTest and
      NullTest constructs (the latter only for the scalar-datatype case).
      
      Per discussion of bug #5702.
      220e45bf
  4. 10 Oct, 2010 3 commits
    • Tom Lane's avatar
      Teach psql to do tab completion for names of psql variables. · b48b9cb3
      Tom Lane authored
      Completion is supported in the context of \set and when interpolating
      a variable value using :foo etc.
      
      In passing, fix some places in tab-complete.c that weren't following
      project style for comment formatting.
      
      Pavel Stehule, reviewed by Itagaki Takahiro
      b48b9cb3
    • Tom Lane's avatar
      Support triggers on views. · 2ec993a7
      Tom Lane authored
      This patch adds the SQL-standard concept of an INSTEAD OF trigger, which
      is fired instead of performing a physical insert/update/delete.  The
      trigger function is passed the entire old and/or new rows of the view,
      and must figure out what to do to the underlying tables to implement
      the update.  So this feature can be used to implement updatable views
      using trigger programming style rather than rule hacking.
      
      In passing, this patch corrects the names of some columns in the
      information_schema.triggers view.  It seems the SQL committee renamed
      them somewhere between SQL:99 and SQL:2003.
      
      Dean Rasheed, reviewed by Bernd Helmle; some additional hacking by me.
      2ec993a7
    • Peter Eisentraut's avatar
      Extensive ECPG documentation improvements · f7b15b50
      Peter Eisentraut authored
      Satoshi Nagayasu, reviewed and revised by Peter Eisentraut
      
      Since this introduces new refentries that we probably don't want to publish as
      man pages, tweak man page stylesheet to omit man pages without manvolnum
      element.
      
      Peter Eisentraut
      f7b15b50
  5. 09 Oct, 2010 1 commit
  6. 08 Oct, 2010 6 commits
  7. 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
  8. 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
  9. 05 Oct, 2010 2 commits
  10. 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
  11. 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
  12. 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
  13. 29 Sep, 2010 3 commits
  14. 28 Sep, 2010 6 commits