1. 12 Feb, 2010 6 commits
  2. 11 Feb, 2010 3 commits
  3. 10 Feb, 2010 2 commits
  4. 09 Feb, 2010 8 commits
  5. 08 Feb, 2010 9 commits
    • Tom Lane's avatar
      Create an official API function for C functions to use to check if they are · d5768dce
      Tom Lane authored
      being called as aggregates, and to get the aggregate transition state memory
      context if needed.  Use it instead of poking directly into AggState and
      WindowAggState in places that shouldn't know so much.
      
      We should have done this in 8.4, probably, but better late than never.
      
      Revised version of a patch by Hitoshi Harada.
      d5768dce
    • Heikki Linnakangas's avatar
    • Tom Lane's avatar
      Fix serious performance bug in new implementation of VACUUM FULL: · 9184cc7d
      Tom Lane authored
      cluster_rel necessarily builds an all-new toast table, so it's useless to
      then go and VACUUM FULL the toast table.
      9184cc7d
    • Bruce Momjian's avatar
    • Bruce Momjian's avatar
      Update high availability/replication documentation chart for new hot · 3ab41f02
      Bruce Momjian authored
      standby featureset.
      3ab41f02
    • Heikki Linnakangas's avatar
      Remove piece of code to zero out minRecoveryPoint when starting crash · 4cea6031
      Heikki Linnakangas authored
      recovery. It's zeroed out whenever a checkpoint is written, so the only
      scenario where the removed code did anything is when you kill archive
      recovery, remove recovery.conf, and start up the server, so that it goes
      into crash recovery instead. That's a "don't do that" scenario, but it
      seems better to not clear minRecoveryPoint but instead update it like we
      do in archive recovery, which is what will now happen.
      4cea6031
    • Tom Lane's avatar
      Remove CatalogCacheFlushRelation, and the reloidattr infrastructure that was · 9a75803b
      Tom Lane authored
      needed by nothing else.
      
      The restructuring I just finished doing on cache management exposed to me how
      silly this routine was.  Its function was to go into the catcache and blow
      away all entries related to a given relation when there was a relcache flush
      on that relation.  However, there is no point in removing a catcache entry
      if the catalog row it represents is still valid --- and if it isn't valid,
      there must have been a catcache entry flush on it, because that's triggered
      directly by heap_update or heap_delete on the catalog row.  So this routine
      accomplished nothing except to blow away valid cache entries that we'd very
      likely be wanting in the near future to help reconstruct the relcache entry.
      Dumb.
      
      On top of which, it required a subtle and easy-to-get-wrong attribute in
      syscache definitions, ie, the column containing the OID of the related
      relation if any.  Removing that is a very useful maintenance simplification.
      9a75803b
    • Tom Lane's avatar
      Remove some more dead VACUUM-FULL-only code. · 68446b2c
      Tom Lane authored
      68446b2c
    • Tom Lane's avatar
      Remove old-style VACUUM FULL (which was known for a little while as · 0a469c87
      Tom Lane authored
      VACUUM FULL INPLACE), along with a boatload of subsidiary code and complexity.
      Per discussion, the use case for this method of vacuuming is no longer large
      enough to justify maintaining it; not to mention that we don't wish to invest
      the work that would be needed to make it play nicely with Hot Standby.
      
      Aside from the code directly related to old-style VACUUM FULL, this commit
      removes support for certain WAL record types that could only be generated
      within VACUUM FULL, redirect-pointer removal in heap_page_prune, and
      nontransactional generation of cache invalidation sinval messages (the last
      being the sticking point for Hot Standby).
      
      We still have to retain all code that copes with finding HEAP_MOVED_OFF and
      HEAP_MOVED_IN flag bits on existing tuples.  This can't be removed as long
      as we want to support in-place update from pre-9.0 databases.
      0a469c87
  6. 07 Feb, 2010 3 commits
    • Tom Lane's avatar
      Work around deadlock problems with VACUUM FULL/CLUSTER on system catalogs, · 1ddc2703
      Tom Lane authored
      as per my recent proposal.
      
      First, teach IndexBuildHeapScan to not wait for INSERT_IN_PROGRESS or
      DELETE_IN_PROGRESS tuples to commit unless the index build is checking
      uniqueness/exclusion constraints.  If it isn't, there's no harm in just
      indexing the in-doubt tuple.
      
      Second, modify VACUUM FULL/CLUSTER to suppress reverifying
      uniqueness/exclusion constraint properties while rebuilding indexes of
      the target relation.  This is reasonable because these commands aren't
      meant to deal with corrupted-data situations.  Constraint properties
      will still be rechecked when an index is rebuilt by a REINDEX command.
      
      This gets us out of the problem that new-style VACUUM FULL would often
      wait for other transactions while holding exclusive lock on a system
      catalog, leading to probable deadlock because those other transactions
      need to look at the catalogs too.  Although the real ultimate cause of
      the problem is a debatable choice to release locks early after modifying
      system catalogs, changing that choice would require pretty serious
      analysis and is not something to be undertaken lightly or on a tight
      schedule.  The present patch fixes the problem in a fairly reasonable
      way and should also improve the speed of VACUUM FULL/CLUSTER a little bit.
      1ddc2703
    • Tom Lane's avatar
      Looks like we need #include <sys/stat.h> here on some · 1c05b0b4
      Tom Lane authored
      platforms.  Per buildfarm.
      1c05b0b4
    • Tom Lane's avatar
      Create a "relation mapping" infrastructure to support changing the relfilenodes · b9b8831a
      Tom Lane authored
      of shared or nailed system catalogs.  This has two key benefits:
      
      * The new CLUSTER-based VACUUM FULL can be applied safely to all catalogs.
      
      * We no longer have to use an unsafe reindex-in-place approach for reindexing
        shared catalogs.
      
      CLUSTER on nailed catalogs now works too, although I left it disabled on
      shared catalogs because the resulting pg_index.indisclustered update would
      only be visible in one database.
      
      Since reindexing shared system catalogs is now fully transactional and
      crash-safe, the former special cases in REINDEX behavior have been removed;
      shared catalogs are treated the same as non-shared.
      
      This commit does not do anything about the recently-discussed problem of
      deadlocks between VACUUM FULL/CLUSTER on a system catalog and other
      concurrent queries; will address that in a separate patch.  As a stopgap,
      parallel_schedule has been tweaked to run vacuum.sql by itself, to avoid
      such failures during the regression tests.
      b9b8831a
  7. 06 Feb, 2010 1 commit
  8. 05 Feb, 2010 8 commits