1. 03 Sep, 2011 1 commit
    • Tom Lane's avatar
      Rearrange planner to save the whole PlannerInfo (subroot) for a subquery. · b3aaf908
      Tom Lane authored
      Formerly, set_subquery_pathlist and other creators of plans for subqueries
      saved only the rangetable and rowMarks lists from the lower-level
      PlannerInfo.  But there's no reason not to remember the whole PlannerInfo,
      and indeed this turns out to simplify matters in a number of places.
      
      The immediate reason for doing this was so that the subroot will still be
      accessible when we're trying to extract column statistics out of an
      already-planned subquery.  But now that I've done it, it seems like a good
      code-beautification effort in its own right.
      
      I also chose to get rid of the transient subrtable and subrowmark fields in
      SubqueryScan nodes, in favor of having setrefs.c look up the subquery's
      RelOptInfo.  That required changing all the APIs in setrefs.c to pass
      PlannerInfo not PlannerGlobal, which was a large but quite mechanical
      transformation.
      
      One side-effect not foreseen at the beginning is that this finally broke
      inheritance_planner's assumption that replanning the same subquery RTE N
      times would necessarily give interchangeable results each time.  That
      assumption was always pretty risky, but now we really have to make a
      separate RTE for each instance so that there's a place to carry the
      separate subroots.
      b3aaf908
  2. 02 Sep, 2011 4 commits
  3. 01 Sep, 2011 19 commits
  4. 31 Aug, 2011 2 commits
    • Tom Lane's avatar
      Improve eqjoinsel's ndistinct clamping to work for multiple levels of join. · 97930cf5
      Tom Lane authored
      This patch fixes an oversight in my commit
      7f3eba30 of 2008-10-23.  That patch
      accounted for baserel restriction clauses that reduced the number of rows
      coming out of a table (and hence the number of possibly-distinct values of
      a join variable), but not for join restriction clauses that might have been
      applied at a lower level of join.  To account for the latter, look up the
      sizes of the min_lefthand and min_righthand inputs of the current join,
      and clamp with those in the same way as for the base relations.
      
      Noted while investigating a complaint from Ben Chobot, although this in
      itself doesn't seem to explain his report.
      
      Back-patch to 8.4; previous versions used different estimation methods
      for which this heuristic isn't relevant.
      97930cf5
    • Heikki Linnakangas's avatar
      The replication status values in pg_stat_replication was changed to · 5cfe33fe
      Heikki Linnakangas authored
      lowercase earlier, but documentation was not updated. Update the docs.
      
      Fujii Masao
      5cfe33fe
  5. 30 Aug, 2011 9 commits
    • Tom Lane's avatar
      Fix not-backwards-compatible pg_upgrade test for prepared transactions. · 731ebb64
      Tom Lane authored
      There's no reason for this test to use the undocumented pg_prepared_xact()
      function, when it can use the stable API pg_prepared_xacts instead.
      Fixes breakage against 8.3, as reported by Justin Arnold.
      731ebb64
    • Tom Lane's avatar
      Fix a missed case in code for "moving average" estimate of reltuples. · 5bba65de
      Tom Lane authored
      It is possible for VACUUM to scan no pages at all, if the visibility map
      shows that all pages are all-visible.  In this situation VACUUM has no new
      information to report about the relation's tuple density, so it wasn't
      changing pg_class.reltuples ... but it updated pg_class.relpages anyway.
      That's wrong in general, since there is no evidence to justify changing the
      density ratio reltuples/relpages, but it's particularly bad if the previous
      state was relpages=reltuples=0, which means "unknown tuple density".
      We just replaced "unknown" with "zero".  ANALYZE would eventually recover
      from this, but it could take a lot of repetitions of ANALYZE to do so if
      the relation size is much larger than the maximum number of pages ANALYZE
      will scan, because of the moving-average behavior introduced by commit
      b4b6923e.
      
      The only known situation where we could have relpages=reltuples=0 and yet
      the visibility map asserts everything's visible is immediately following
      a pg_upgrade.  It might be advisable for pg_upgrade to try to preserve the
      relpages/reltuples statistics; but in any case this code is wrong on its
      own terms, so fix it.  Per report from Sergey Koposov.
      
      Back-patch to 8.4, where the visibility map was introduced, same as the
      previous change.
      5bba65de
    • Peter Eisentraut's avatar
      Clean up pg_regress --help output · b83bb97f
      Peter Eisentraut authored
      Put options listing in a less random order, fix capitalization, and
      some typos.
      b83bb97f
    • Peter Eisentraut's avatar
      Some markup cleanup to deconfuse the find_gt_lt tool · aeabbcce
      Peter Eisentraut authored
      Josh Kupershmidt
      aeabbcce
    • Robert Haas's avatar
    • Robert Haas's avatar
      Add --if-exists option to dropdb and dropuser. · 7fe33a51
      Robert Haas authored
      Josh Kupershmidt, with some further editing by me.
      7fe33a51
    • Andrew Dunstan's avatar
      Detect out of date flex in MSVC builds. · 94478aa8
      Andrew Dunstan authored
      Per recent discussion, following a report from Quan Zongliang.
      The same logic is used as in pgbison.pl.
      94478aa8
    • Robert Haas's avatar
      Fix parsing of time string followed by yesterday/today/tomorrow. · 8a3d33c8
      Robert Haas authored
      Previously, 'yesterday 04:00:00'::timestamp didn't do the same thing as
      '04:00:00 yesterday'::timestamp, and the return value from the latter
      was midnight rather than the specified time.
      
      Dean Rasheed, with some stylistic changes
      8a3d33c8
    • Robert Haas's avatar
      Remove some tabs from README file. · eab2ef61
      Robert Haas authored
      Some of the ASCII art expected 8-space tab stops, and some of it
      expected 4-space tab stops.
      
      Per report from YAMAMOTO Takashi.
      eab2ef61
  6. 29 Aug, 2011 5 commits
    • Tom Lane's avatar
      Fix concat_ws() to not insert a separator after leading NULL argument(s). · a5b7640b
      Tom Lane authored
      Per bug #6181 from Itagaki Takahiro.  Also do some marginal code cleanup
      and improve error handling.
      a5b7640b
    • Tom Lane's avatar
      Use a non-locking test in TAS_SPIN() on all IA64 platforms. · be1e8053
      Tom Lane authored
      Per my testing, this works just as well with gcc as it does with HP's
      compiler; and there is no reason to think that the effect doesn't occur
      with icc, either.
      
      Also, rewrite the header comment about enforcing sequencing around spinlock
      operations, per Robert's gripe that it was misleading.
      be1e8053
    • Robert Haas's avatar
      Improve spinlock performance for HP-UX, ia64, non-gcc. · c01c25fb
      Robert Haas authored
      At least on this architecture, it's very important to spin on a
      non-atomic instruction and only retry the atomic once it appears
      that it will succeed.  To fix this, split TAS() into two macros:
      TAS(), for trying to grab the lock the first time, and TAS_SPIN(),
      for spinning until we get it.  TAS_SPIN() defaults to same as TAS(),
      but we can override it when we know there's a better way.
      
      It's likely that some of the other cases in s_lock.h require
      similar treatment, but this is the only one we've got conclusive
      evidence for at present.
      c01c25fb
    • Tom Lane's avatar
      Actually, all of parallel restore's limitations should be tested earlier. · 6e1f1fee
      Tom Lane authored
      On closer inspection, whining in restore_toc_entries_parallel is really
      much too late for any user-facing error case.  The right place to do it
      is at the start of RestoreArchive(), before we've done anything interesting
      (suh as trying to DROP all the targets ...)
      
      Back-patch to 8.4, where parallel restore was introduced.
      6e1f1fee
    • Tom Lane's avatar
      Be more user-friendly about unsupported cases for parallel pg_restore. · d6e7abe4
      Tom Lane authored
      If we are unable to do a parallel restore because the input file is stdin
      or is otherwise unseekable, we should complain and fail immediately, not
      after having done some of the restore.  Complaining once per thread isn't
      so cool either, and the messages should be worded to make it clear this is
      an unsupported case not some weird race-condition bug.  Per complaint from
      Lonni Friedman.
      
      Back-patch to 8.4, where parallel restore was introduced.
      d6e7abe4