1. 29 May, 2012 1 commit
    • Tom Lane's avatar
      Eliminate some more O(N^2) behaviors in pg_dump/pg_restore. · c89bdf76
      Tom Lane authored
      This patch fixes three places (which AFAICT is all of them) where runtime
      was O(N^2) in the number of TOC entries, by using an index array to replace
      linear searches of the TOC list.  This performance issue is a bit less bad
      than those recently fixed, because it depends on the number of items dumped
      not the number in the source database, so the problem can be dodged by
      doing partial dumps.
      
      The previous coding already had an instance of one of the two index arrays
      needed, but it was only calculated in parallel-restore cases; now we need
      it all the time.  I also chose to move the arrays into the ArchiveHandle
      data structure, to make this code a bit more ready for the day that we
      try to sling multiple ArchiveHandles around in pg_dump or pg_restore.
      
      Since we still need some server-side work before pg_dump can really cope
      nicely with tens of thousands of tables, there's probably little point in
      back-patching.
      c89bdf76
  2. 28 May, 2012 1 commit
    • Peter Eisentraut's avatar
      libpq: URI parsing fixes · 2d612abd
      Peter Eisentraut authored
      Drop special handling of host component with slashes to mean
      Unix-domain socket.  Specify it as separate parameter or using
      percent-encoding now.
      
      Allow omitting username, password, and port even if the corresponding
      designators are present in URI.
      
      Handle percent-encoding in query parameter keywords.
      
      Alex Shulgin
      
      some documentation improvements by myself
      2d612abd
  3. 27 May, 2012 9 commits
  4. 26 May, 2012 1 commit
    • Tom Lane's avatar
      Prevent synchronized scanning when systable_beginscan chooses a heapscan. · 532fe28d
      Tom Lane authored
      The only interesting-for-performance case wherein we force heapscan here
      is when we're rebuilding the relcache init file, and the only such case
      that is likely to be examining a catalog big enough to be syncscanned is
      RelationBuildTupleDesc.  But the early-exit optimization in that code gets
      broken if we start the scan at a random place within the catalog, so that
      allowing syncscan is actually a big deoptimization if pg_attribute is large
      (at least for the normal case where the rows for core system catalogs have
      never been changed since initdb).  Hence, prevent syncscan here.  Per my
      testing pursuant to complaints from Jeff Frost and Greg Sabino Mullane,
      though neither of them seem to have actually hit this specific problem.
      
      Back-patch to 8.3, where syncscan was introduced.
      532fe28d
  5. 25 May, 2012 5 commits
  6. 24 May, 2012 6 commits
  7. 23 May, 2012 5 commits
  8. 22 May, 2012 12 commits