1. 11 Mar, 2008 9 commits
  2. 10 Mar, 2008 13 commits
  3. 09 Mar, 2008 2 commits
    • Tom Lane's avatar
      Remove postmaster.c's check that NBuffers is at least twice MaxBackends. · d9384a4b
      Tom Lane authored
      With the addition of multiple autovacuum workers, our choices were to delete
      the check, document the interaction with autovacuum_max_workers, or complicate
      the check to try to hide that interaction.  Since this restriction has never
      been adequate to ensure backends can't run out of pinnable buffers, it doesn't
      really have enough excuse to live to justify the second or third choices.
      Per discussion of a complaint from Andreas Kling (see also bug #3888).
      
      This commit also removes several documentation references to this restriction,
      but I'm not sure I got them all.
      d9384a4b
    • Tom Lane's avatar
      Change patternsel() so that instead of switching from a pure · f4230d29
      Tom Lane authored
      pattern-examination heuristic method to purely histogram-driven selectivity at
      histogram size 100, we compute both estimates and use a weighted average.
      The weight put on the heuristic estimate decreases linearly with histogram
      size, dropping to zero for 100 or more histogram entries.
      Likewise in ltreeparentsel().  After a patch by Greg Stark, though I
      reorganized the logic a bit to give the caller of histogram_selectivity()
      more control.
      f4230d29
  4. 08 Mar, 2008 5 commits
    • Tom Lane's avatar
      Modify prefix_selectivity() so that it will never estimate the selectivity · 422495d0
      Tom Lane authored
      of the generated range condition var >= 'foo' AND var < 'fop' as being less
      than what eqsel() would estimate for var = 'foo'.  This is intuitively
      reasonable and it gets rid of the need for some entirely ad-hoc coding we
      formerly used to reject bogus estimates.  The basic problem here is that
      if the prefix is more than a few characters long, the two boundary values
      are too close together to be distinguishable by comparison to the column
      histogram, resulting in a selectivity estimate of zero, which is often
      not very sane.  Change motivated by an example from Peter Eisentraut.
      
      Arguably this is a bug fix, but I'll refrain from back-patching it
      for the moment.
      422495d0
    • Tom Lane's avatar
      Refactor heap_page_prune so that instead of changing item states on-the-fly, · 6f10eb21
      Tom Lane authored
      it accumulates the set of changes to be made and then applies them.  It had
      to accumulate the set of changes anyway to prepare a WAL record for the
      pruning action, so this isn't an enormous change; the only new complexity is
      to not doubly mark tuples that are visited twice in the scan.  The main
      advantage is that we can substantially reduce the scope of the critical
      section in which the changes are applied, thus avoiding PANIC in foreseeable
      cases like running out of memory in inval.c.  A nice secondary advantage is
      that it is now far clearer that WAL replay will actually do the same thing
      that the original pruning did.
      
      This commit doesn't do anything about the open problem that
      CacheInvalidateHeapTuple doesn't have the right semantics for a CTID change
      caused by collapsing out a redirect pointer.  But whatever we do about that,
      it'll be a good idea to not do it inside a critical section.
      6f10eb21
    • Bruce Momjian's avatar
      Add: · cc05d051
      Bruce Momjian authored
      >
      > * Consider a function-based API for '@@' full text searches
      >
      >   http://archives.postgresql.org/pgsql-hackers/2007-11/msg00511.php
      >
      cc05d051
    • Andrew Dunstan's avatar
      Improve efficiency of attribute scanning in CopyReadAttributesCSV. · 95c238d9
      Andrew Dunstan authored
      The loop is split into two parts, inside quotes, and outside quotes, saving some instructions in both parts.
      
      Heikki Linnakangas
      95c238d9
    • Tom Lane's avatar
      Improve pglz_decompress() so that it cannot clobber memory beyond the · 9c767ad5
      Tom Lane authored
      available output buffer when presented with corrupt input.  Some testing
      suggests that this slows the decompression loop about 1%, which seems an
      acceptable price to pay for more robustness.  (Curiously, the penalty
      seems to be *less* on not-very-compressible data, which I didn't expect
      since the overhead per output byte ought to be more in the literal-bytes
      path.)
      
      Patch from Zdenek Kotala.  I fixed a corner case and did some renaming
      of variables to make the routine more readable.
      9c767ad5
  5. 07 Mar, 2008 11 commits
    • Tom Lane's avatar
      This patch addresses some issues in TOAST compression strategy that · ad434473
      Tom Lane authored
      were discussed last year, but we felt it was too late in the 8.3 cycle to
      change the code immediately.  Specifically, the patch:
      
      * Reduces the minimum datum size to be considered for compression from
      256 to 32 bytes, as suggested by Greg Stark.
      
      * Increases the required compression rate for compressed storage from
      20% to 25%, again per Greg's suggestion.
      
      * Replaces force_input_size (size above which compression is forced)
      with a maximum size to be considered for compression.  It was agreed
      that allowing large inputs to escape the minimum-compression-rate
      requirement was not bright, and that indeed we'd rather have a knob
      that acted in the other direction.  I set this value to 1MB for the
      moment, but it could use some performance studies to tune it.
      
      * Adds an early-failure path to the compressor as suggested by Jan:
      if it's been unable to find even one compressible substring in the
      first 1KB (parameterizable), assume we're looking at incompressible
      input and give up.  (Possibly this logic can be improved, but I'll
      commit it as-is for now.)
      
      * Improves the toasting heuristics so that when we have very large
      fields with attstorage 'x' or 'e', we will push those out to toast
      storage before considering inline compression of shorter fields.
      This also responds to a suggestion of Greg's, though my original
      proposal for a solution was a bit off base because it didn't fix
      the problem for large 'e' fields.
      
      There was some discussion in the earlier threads of exposing some
      of the compression knobs to users, perhaps even on a per-column
      basis.  I have not done anything about that here.  It seems to me
      that if we are changing around the parameters, we'd better get some
      experience and be sure we are happy with the design before we set
      things in stone by providing user-visible knobs.
      ad434473
    • Bruce Momjian's avatar
      Add: · 1cc52905
      Bruce Momjian authored
      >
      > * Add a function like pg_get_indexdef() that report more detailed index
      >   information
      >
      >   http://archives.postgresql.org/pgsql-bugs/2007-12/msg00166.php
      >
      1cc52905
    • Bruce Momjian's avatar
      Add: · f76eee0b
      Bruce Momjian authored
      >
      >
      > 	o Prevent autovacuum from running if an old transaction is still
      > 	  running from the last vacuum
      >
      > 	  http://archives.postgresql.org/pgsql-hackers/2007-11/msg00899.php
      >
      f76eee0b
    • Bruce Momjian's avatar
      Added to TODO: · 0323f706
      Bruce Momjian authored
      >
      > * Allow text search dictionary to filter out only stop words
      >
      >   http://archives.postgresql.org/pgsql-patches/2007-11/msg00081.php
      0323f706
    • Bruce Momjian's avatar
      Add to TODO: · 09001213
      Bruce Momjian authored
      >
      > * Consider allowing higher priority queries to have referenced buffer
      >   cache pages stay in memory longer
      >
      >   http://archives.postgresql.org/pgsql-hackers/2007-11/msg00562.php
      09001213
    • Bruce Momjian's avatar
      Add: · 3310b3c1
      Bruce Momjian authored
      >
      > * Improve referential integrity checks
      >
      >   http://archives.postgresql.org/pgsql-performance/2005-10/msg00458.php
      3310b3c1
    • Bruce Momjian's avatar
      Add item: · 4864986e
      Bruce Momjian authored
      > 	o Store per-table autovacuum settings in pg_class.reloptions.
      >
      > 	  http://archives.postgresql.org/pgsql-hackers/2007-02/msg01440.php
      > 	  http://archives.postgresql.org/pgsql-hackers/2008-01/msg00724.php
      4864986e
    • Bruce Momjian's avatar
      Add URL for: · 3c361cbe
      Bruce Momjian authored
      * Allow multiple identical NOTIFY events to always be communicated to the
        client, rather than sent as a single notification to the listener
      
        http://archives.postgresql.org/pgsql-general/2008-01/msg00057.php
      3c361cbe
    • Bruce Momjian's avatar
      Add: · 9d96b581
      Bruce Momjian authored
      > 	o Add SQLSTATE severity to PGconn return status
      >
      > 	  http://archives.postgresql.org/pgsql-interfaces/2007-11/msg00015.php
      9d96b581
    • Tom Lane's avatar
      Change hashscan.c to keep its list of active hash index scans in · 6a178266
      Tom Lane authored
      TopMemoryContext, rather than scattered through executor per-query contexts.
      This poses no danger of memory leak since the ResourceOwner mechanism
      guarantees release of no-longer-needed items.  It is needed because the
      per-query context might already be released by the time we try to clean up
      the hash scan list.  Report by ykhuang, diagnosis by Heikki.
      
      Back-patch to 8.0, where the ResourceOwner-based cleanup was introduced.
      The given test case does not fail before 8.2, probably because we rearranged
      transaction abort processing somehow; but this coding is undoubtedly risky
      so I'll patch 8.0 and 8.1 anyway.
      6a178266
    • Bruce Momjian's avatar
      Add: · b2facfd9
      Bruce Momjian authored
      > 	o Have \l+ show database size, if permissions allow
      >
      > 	  Ideally it will not generate an error for invalid permissions
      >
      b2facfd9