1. 03 May, 2007 1 commit
  2. 02 May, 2007 6 commits
    • Tom Lane's avatar
      Dept. of second thoughts: add comments cautioning against using · 63735ca8
      Tom Lane authored
      ReadOrZeroBuffer to fetch pages from beyond physical EOF.  This would
      usually work, but would cause problems for md.c if writes occurred
      beyond a segment boundary when the previous segment file hadn't been
      fully extended.
      63735ca8
    • Tom Lane's avatar
      During WAL recovery, when reading a page that we intend to overwrite completely · 8c3cc86e
      Tom Lane authored
      from the WAL data, don't bother to physically read it; just have bufmgr.c
      return a zeroed-out buffer instead.  This speeds recovery significantly,
      and also avoids unnecessary failures when a page-to-be-overwritten has corrupt
      page headers on disk.  This replaces a former kluge that accomplished the
      latter by pretending zero_damaged_pages was always ON during WAL recovery;
      which was OK when the kluge was put in, but is unsafe when restoring a WAL
      log that was written with full_page_writes off.
      
      Heikki Linnakangas
      8c3cc86e
    • Tom Lane's avatar
      Fix things so that when CREATE INDEX CONCURRENTLY sets pg_index.indisvalid · 8ec94385
      Tom Lane authored
      true at the very end of its processing, the update is broadcast via a
      shared-cache-inval message for the index; without this, existing backends that
      already have relcache entries for the index might never see it become valid.
      Also, force a relcache inval on the index's parent table at the same time,
      so that any cached plans for that table are re-planned; this ensures that
      the newly valid index will be used if appropriate.  Aside from making
      C.I.C. behave more reasonably, this is necessary infrastructure for some
      aspects of the HOT patch.  Pavan Deolasee, with a little further stuff from
      me.
      8ec94385
    • Alvaro Herrera's avatar
      Use the new TimestampDifferenceExceeds API instead of timestamp_cmp_internal · 229d3380
      Alvaro Herrera authored
      and TimestampDifference, to make coding clearer.  I think this should also fix
      the failure to start workers in platforms with low resolution timers, as
      reported by Itagaki Takahiro.
      229d3380
    • Alvaro Herrera's avatar
      Fix failure to check for INVALID worker entry in the new autovacuum code, which · a115bfe3
      Alvaro Herrera authored
      could happen when a worker took to long to start and was thus "aborted" by the
      launcher.  Noticed by lionfish buildfarm member.
      a115bfe3
    • Tom Lane's avatar
      Fix oversight in PG_RE_THROW processing: it's entirely possible that there · 88f1fd29
      Tom Lane authored
      isn't any place to throw the error to.  If so, we should treat the error
      as FATAL, just as we would have if it'd been thrown outside the PG_TRY
      block to begin with.
      
      Although this is clearly a *potential* source of bugs, it is not clear
      at the moment whether it is an *actual* source of bugs; there may not
      presently be any PG_TRY blocks in code that can be reached with no outer
      longjmp catcher.  So for the moment I'm going to be conservative and not
      back-patch this.  The change breaks ABI for users of PG_RE_THROW and hence
      might create compatibility problems for loadable modules, so we should not
      put it into released branches without proof that it's needed.
      88f1fd29
  3. 01 May, 2007 2 commits
  4. 30 Apr, 2007 6 commits
    • Tom Lane's avatar
      Change the timestamps recorded in transaction commit/abort xlog records · c4320619
      Tom Lane authored
      from time_t to TimestampTz representation.  This provides full gettimeofday()
      resolution of the timestamps, which might be useful when attempting to
      do point-in-time recovery --- previously it was not possible to specify
      the stop point with sub-second resolution.  But mostly this is to get
      rid of TimestampTz-to-time_t conversion overhead during commit.  Per my
      proposal of a day or two back.
      c4320619
    • Tom Lane's avatar
      Fix oversight in my patch of yesterday: forgot to ensure that stats would · 641912b4
      Tom Lane authored
      still be forced out at backend exit.
      641912b4
    • Tom Lane's avatar
      Implement rate-limiting logic on how often backends will attempt to send · 957d08c8
      Tom Lane authored
      messages to the stats collector.  This avoids the problem that enabling
      stats_row_level for autovacuum has a significant overhead for short
      read-only transactions, as noted by Arjen van der Meijden.  We can avoid
      an extra gettimeofday call by piggybacking on the one done for WAL-logging
      xact commit or abort (although that doesn't help read-only transactions,
      since they don't WAL-log anything).
      
      In my proposal for this, I noted that we could change the WAL log entries
      for commit/abort to record full TimestampTz precision, instead of only
      time_t as at present.  That's not done in this patch, but will be committed
      separately.
      957d08c8
    • Tom Lane's avatar
      Marginal performance hack: use a dedicated routine instead of copyObject · 57b82bf3
      Tom Lane authored
      to copy nodes that are known to be Vars during plan reference adjustment.
      Saves useless memzero operation as well as the big switch in copyObject.
      57b82bf3
    • Tom Lane's avatar
      Marginal performance hack: avoid unnecessary work in expression_tree_mutator. · afaa6b98
      Tom Lane authored
      We can just palloc, instead of using makeNode, when we are going to
      overwrite the whole node anyway in the FLATCOPY macro.  Also, use
      FLATCOPY instead of copyObject for common node types Var and Const.
      afaa6b98
    • Tom Lane's avatar
      Marginal performance hack: remove the loop that used to be needed to · 39a333aa
      Tom Lane authored
      look through a freelist for a chunk of adequate size.  For a long time
      now, all elements of a given freelist have been exactly the same
      allocated size, so we don't need a loop.  Since the loop never iterated
      more than once, you'd think this wouldn't matter much, but it makes a
      noticeable savings in a simple test --- perhaps because the compiler
      isn't optimizing on a mistaken assumption that the loop would repeat.
      AllocSetAlloc is called often enough that saving even a couple of
      instructions is worthwhile.
      39a333aa
  5. 29 Apr, 2007 3 commits
  6. 28 Apr, 2007 1 commit
  7. 27 Apr, 2007 5 commits
  8. 26 Apr, 2007 8 commits
    • Tom Lane's avatar
      Fix dynahash.c to suppress hash bucket splits while a hash_seq_search() scan · a2e923a6
      Tom Lane authored
      is in progress on the same hashtable.  This seems the least invasive way to
      fix the recently-recognized problem that a split could cause the scan to
      visit entries twice or (with much lower probability) miss them entirely.
      The only field-reported problem caused by this is the "failed to re-find
      shared lock object" PANIC in COMMIT PREPARED reported by Michel Dorochevsky,
      which was caused by multiply visited entries.  However, it seems certain
      that mdsync() is vulnerable to missing required fsync's due to missed
      entries, and I am fearful that RelationCacheInitializePhase2() might be at
      risk as well.  Because of that and the generalized hazard presented by this
      bug, back-patch all the supported branches.
      
      Along the way, fix pg_prepared_statement() and pg_cursor() to not assume
      that the hashtables they are examining will stay static between calls.
      This is risky regardless of the newly noted dynahash problem, because
      hash_seq_search() has never promised to cope with deletion of table entries
      other than the just-returned one.  There may be no bug here because the only
      supported way to call these functions is via ExecMakeTableFunctionResult()
      which will cycle them to completion before doing anything very interesting,
      but it seems best to get rid of the assumption.  This affects 8.2 and HEAD
      only, since those functions weren't there earlier.
      a2e923a6
    • Neil Conway's avatar
      Another tweak for tab completion of CREATE TEMP. Instead of only · 8e90c544
      Neil Conway authored
      completing CREATE { TEMP | TEMPORARY } TABLE, we should also suggest
      VIEW and SEQUENCE. Per Greg Sabino Mullane.
      8e90c544
    • Neil Conway's avatar
      Consistency tweaks for a table in the SGML docs: we don't terminate · 16fb5da7
      Neil Conway authored
      table entries describing functions with periods.
      16fb5da7
    • Neil Conway's avatar
      Minor enhancement to psql tab completion. If we see "CREATE TEMPORARY", · 9475aa91
      Neil Conway authored
      we can complete "TABLE". The previous coding only looked for "CREATE TEMP".
      
      Note that I didn't add TEMPORARY to the list of suggested completions
      after we've seen "CREATE", since TEMP is equivalent and more concise. But
      if the user has already manually typed TEMPORARY, we may as well
      complete TABLE for them.
      9475aa91
    • Neil Conway's avatar
      Minor tweak for DISCARD ref page. · c765ca24
      Neil Conway authored
      c765ca24
    • Neil Conway's avatar
      Rename the newly-added commands for discarding session state. · 16efdb5e
      Neil Conway authored
      RESET SESSION, RESET PLANS, and RESET TEMP are now DISCARD ALL,
      DISCARD PLANS, and DISCARD TEMP, respectively. This is to avoid
      confusion with the pre-existing RESET variants: the DISCARD
      commands are not actually similar to RESET. Patch from Marko
      Kreen, with some minor editorialization.
      16efdb5e
    • Magnus Hagander's avatar
    • Magnus Hagander's avatar
      Generate "fake configure output" for pg_config, so that external builds · 2d7f4f22
      Magnus Hagander authored
      like Slony can figure out which options were enabled in the build.
      2d7f4f22
  9. 25 Apr, 2007 5 commits
  10. 24 Apr, 2007 3 commits