1. 07 May, 2007 3 commits
  2. 05 May, 2007 9 commits
    • Magnus Hagander's avatar
      Check return code from strxfrm on Windows since it has a · 343a9a27
      Magnus Hagander authored
      non-standard way of indicating errors, so we don't try to
      allocate INT_MAX bytes to store a result in.
      343a9a27
    • Bruce Momjian's avatar
      Done: · 4835df30
      Bruce Momjian authored
      < Last updated:		Sat May  5 10:47:39 EDT 2007
      > Last updated:		Sat May  5 11:39:57 EDT 2007
      < * Flush cached query plans when the dependent objects change,
      <   when the cardinality of parameters changes dramatically, or
      > * -Flush cached query plans when the dependent objects change or
      <
      <   A more complex solution would be to save multiple plans for different
      <   cardinality and use the appropriate plan based on the EXECUTE values.
      <
      < * Track dependencies in function bodies and recompile/invalidate
      <
      <   This is particularly important for references to temporary tables
      <   in PL/PgSQL because PL/PgSQL caches query plans.  The only workaround
      <   in PL/PgSQL is to use EXECUTE.  One complexity is that a function
      <   might itself drop and recreate dependent tables, causing it to
      <   invalidate its own query plan.
      <
      < * Invalidate prepared queries, like INSERT, when the table definition
      > * -Track dependencies in function bodies and recompile/invalidate
      > * -Invalidate prepared queries, like INSERT, when the table definition
      4835df30
    • Bruce Momjian's avatar
      Move item: · dc9d3947
      Bruce Momjian authored
      < * Invalidate prepared queries, like INSERT, when the table definition
      <   is altered
      >
      > * Invalidate prepared queries, like INSERT, when the table definition
      >   is altered
      dc9d3947
    • Bruce Momjian's avatar
      Done: · b573fec8
      Bruce Momjian authored
      > 	o -Allow multiple vacuums so large tables do not starve small
      b573fec8
    • Bruce Momjian's avatar
      Wording update to FAQ_DEV.. · aec9dc0e
      Bruce Momjian authored
      aec9dc0e
    • Bruce Momjian's avatar
    • Bruce Momjian's avatar
      6488275b
    • Bruce Momjian's avatar
      1b57f0e3
    • Bruce Momjian's avatar
      Done: · 71f8127b
      Bruce Momjian authored
      > * -Allow ORDER BY ... LIMIT # to select high/low value without sort or
      <
      <   Right now, if no index exists, ORDER BY ... LIMIT # requires we sort
      <   all values to return the high/low value.  Instead The idea is to do a
      <   sequential scan to find the high/low value, thus avoiding the sort.
      <   MIN/MAX already does this, but not for LIMIT > 1.
      <
      71f8127b
  3. 04 May, 2007 6 commits
  4. 03 May, 2007 4 commits
  5. 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
  6. 01 May, 2007 2 commits
  7. 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
  8. 29 Apr, 2007 3 commits
  9. 28 Apr, 2007 1 commit