1. 10 May, 2006 3 commits
  2. 09 May, 2006 2 commits
  3. 08 May, 2006 2 commits
    • Bruce Momjian's avatar
      Build server libpgport with all non-FRONTEND object files. This is to · 3cd77da3
      Bruce Momjian authored
      fix a Win32 bug where pipe.c included a file that used FRONTEND, but it
      wasn't on the server-build list.
      3cd77da3
    • Tom Lane's avatar
      Rewrite btree vacuuming to fold the former bulkdelete and cleanup operations · 5749f6ef
      Tom Lane authored
      into a single mostly-physical-order scan of the index.  This requires some
      ticklish interlocking considerations, but should create no material
      performance impact on normal index operations (at least given the
      already-committed changes to make scans work a page at a time).  VACUUM
      itself should get significantly faster in any index that's degenerated to a
      very nonlinear page order.  Also, we save one pass over the index entirely,
      except in the case where there were no deletions to do and so only one pass
      happened anyway.
      
      Original patch by Heikki Linnakangas, rework by Tom Lane.
      5749f6ef
  4. 07 May, 2006 2 commits
    • Tom Lane's avatar
      Rewrite btree index scans to work a page at a time in all cases (both · 09cb5c0e
      Tom Lane authored
      btgettuple and btgetmulti).  This eliminates the problem of "re-finding" the
      exact stopping point, since the stopping point is effectively always a page
      boundary, and index items are never moved across pre-existing page boundaries.
      A small penalty is that the keys_are_unique optimization is effectively
      disabled (and, therefore, is removed in this patch), causing us to apply
      _bt_checkkeys() to at least one more tuple than necessary when looking up a
      unique key.  However, the advantages for non-unique cases seem great enough to
      accept this tradeoff.  Aside from simplifying and (sometimes) speeding up the
      indexscan code, this will allow us to reimplement btbulkdelete as a largely
      sequential scan instead of index-order traversal, thereby significantly
      reducing the cost of VACUUM.  Those changes will come in a separate patch.
      
      Original patch by Heikki Linnakangas, rework by Tom Lane.
      09cb5c0e
    • Bruce Momjian's avatar
  5. 06 May, 2006 6 commits
  6. 05 May, 2006 6 commits
  7. 04 May, 2006 4 commits
    • Tom Lane's avatar
      Don't try to compile SSL CRL support if local SSL installation hasn't · 1e3496f2
      Tom Lane authored
      got it.  Per buildfarm failure on 'canary'.
      1e3496f2
    • Tom Lane's avatar
      Code review for contrib/pg_freespacemap. Add a storedpages column to · a43974c6
      Tom Lane authored
      pg_freespacemap_relations --- while one could theoretically get that
      number by counting rows in pg_freespacemap_pages, it's surely the hard
      way to do it.  Avoid expensive and inconvenient conversion to and from
      text format.  Minor code and docs cleanup.
      a43974c6
    • Tom Lane's avatar
      Simplify relcache startup sequence. With the new design of InitPostgres · 46287bd6
      Tom Lane authored
      it's not necessary to have three separate calls anymore.  This patch also
      fixes things so we don't try to read pg_internal.init until after we've
      obtained lock on the target database; which was fairly harmless, but it's
      certainly cleaner this way.
      46287bd6
    • Tom Lane's avatar
      Rethink the locking mechanisms used for CREATE/DROP/RENAME DATABASE. · 52667d56
      Tom Lane authored
      The former approach used ExclusiveLock on pg_database, which being a
      cluster-wide lock meant only one of these operations could proceed at
      a time; worse, it also blocked all incoming connections in ReverifyMyDatabase.
      Now that we have LockSharedObject(), we can use locks of different types
      applied to databases considered as objects.  This allows much more
      flexible management of the interlocking: two CREATE DATABASEs need not
      block each other, and need not block connections except to the template
      database being used.  Similarly DROP DATABASE doesn't block unrelated
      operations.  The locking used in flatfiles.c is also much narrower in
      scope than before.  Per recent proposal.
      52667d56
  8. 03 May, 2006 4 commits
    • Tom Lane's avatar
      Create a syscache for pg_database-indexed-by-oid, and make use of it · cb98e6fb
      Tom Lane authored
      in various places that were previously doing ad hoc pg_database searches.
      This may speed up database-related privilege checks a little bit, but
      the main motivation is to eliminate the performance reason for having
      ReverifyMyDatabase do such a lot of stuff (viz, avoiding repeat scans
      of pg_database during backend startup).  The locking reason for having
      that routine is about to go away, and it'd be good to have the option
      to break it up.
      cb98e6fb
    • Teodor Sigaev's avatar
      5320c6cf
    • Teodor Sigaev's avatar
      Fix typo noticed by Alvaro Herrera · 2a58f3bf
      Teodor Sigaev authored
      2a58f3bf
    • Tom Lane's avatar
      Fix calculation of plan node extParams to account for the possibility that one · f4923880
      Tom Lane authored
      initPlan sets a parameter for another.  This could not (I think) happen before
      8.1, but it's possible now because the initPlans generated by MIN/MAX
      optimization might themselves use initPlans.  We attach those initPlans as
      siblings of the MIN/MAX ones, not children, to avoid duplicate computation
      when multiple MIN/MAX aggregates are present; so this leads to the case of an
      initPlan needing the result of a sibling initPlan, which is not possible with
      ordinary query nesting.  Hadn't been noticed because in most contexts having
      too much stuff listed in extParam is fairly harmless.  Fixes "plan should not
      reference subplan's variable" bug reported by Catalin Pitis.
      f4923880
  9. 02 May, 2006 7 commits
  10. 01 May, 2006 1 commit
    • Tom Lane's avatar
      Provide a namespace.c function for lookup of an operator with exact · a65a4942
      Tom Lane authored
      input datatypes given, and use this before trying OpernameGetCandidates.
      This is faster than the old method when there's an exact match, and it
      does not seem materially slower when there's not.  And it definitely
      makes some of the callers cleaner, because they didn't really want to
      know about a list of candidates anyway.  Per discussion with Atsushi Ogawa.
      a65a4942
  11. 30 Apr, 2006 3 commits