1. 07 5月, 2009 1 次提交
    • H
      Request XLOG switch before writing checkpoint in pg_start_backup(). Otherwise · b6ecee27
      Heikki Linnakangas 提交于
      you can end up with an unrecoverable backup if you start a new base backup
      right after finishing archive recovery. In that scenario, the redo pointer of
      the checkpoint that pg_start_backup() writes points to the XLOG segment where
      the timeline-changing end-of-archive-recovery checkpoint is. The beginning
      of that segment contains pages with the old timeline ID, and we don't accept
      that in recovery unless we find a history file covering the old timeline ID.
      If you omit pg_xlog from the base backup and clear the archive directory
      before starting the backup, there will be no such history file available.
      
      The bug is present in all versions since PITR was introduced in 8.0, but I'm
      back-patching only back to 8.2. Earlier versions didn't have XLOG switch
      records, making this fix unfeasible. Given the lack of reports until now,
      it doesn't seem worthwhile to spend more effort to fix 8.0 and 8.1.
      
      Per report and suggestion by Mikael Krantz
      b6ecee27
  2. 05 5月, 2009 1 次提交
  3. 04 5月, 2009 2 次提交
  4. 03 5月, 2009 1 次提交
    • T
      Split the release notes into a separate file for each (active) major branch, · 252d2b1e
      Tom Lane 提交于
      as per my recent proposal.  release.sgml itself is now just a stub that should
      change rarely; ideally, only once per major release to add a new include line.
      Most editing work will occur in the release-N.N.sgml files.  To update a back
      branch for a minor release, just copy the appropriate release-N.N.sgml
      file(s) into the back branch.
      
      This commit doesn't change the end-product documentation at all, only the
      source layout.  However, it makes it easy to start omitting ancient information
      from newer branches' documentation, should we ever decide to do that.
      252d2b1e
  5. 02 5月, 2009 1 次提交
    • T
      When checking for datetime field overflow, we should allow a fractional-second · d4f9678c
      Tom Lane 提交于
      part that rounds up to exactly 1.0 second.  The previous coding rejected input
      like "00:12:57.9999999999999999999999999999", with the exact number of nines
      needed to cause failure varying depending on float-timestamp option and
      possibly on platform.  Obviously this should round up to the next integral
      second, if we don't have enough precision to distinguish the value from that.
      Per bug #4789 from Robert Kruus.
      
      In passing, fix a missed check for fractional seconds in one copy of the
      "is it greater than 24:00:00" code.
      
      Broken all the way back, so patch all the way back.
      d4f9678c
  6. 26 4月, 2009 1 次提交
    • T
      Fix the handling of sub-SELECTs appearing in the arguments of an outer-level · 8f61f0b8
      Tom Lane 提交于
      aggregate function.  By definition, such a sub-SELECT cannot reference any
      variables of query levels between itself and the aggregate's semantic level
      (else the aggregate would've been assigned to that lower level instead).
      So the correct, most efficient implementation is to treat the sub-SELECT as
      being a sub-select of that outer query level, not the level the aggregate
      syntactically appears in.  Not doing so also confuses the heck out of our
      parameter-passing logic, as illustrated in bug report from Daniel Grace.
      
      Fortunately, we were already copying the whole Aggref expression up to the
      outer query level, so all that's needed is to delay SS_process_sublinks
      processing of the sub-SELECT until control returns to the outer level.
      
      This has been broken since we introduced spec-compliant treatment of
      outer aggregates in 7.4; so patch all the way back.
      8f61f0b8
  7. 25 4月, 2009 1 次提交
  8. 20 4月, 2009 1 次提交
  9. 17 4月, 2009 1 次提交
    • T
      Fix planner to restore its previous level of intelligence about pushing · 57af05af
      Tom Lane 提交于
      constants through full joins, as in
      
      	select * from tenk1 a full join tenk1 b using (unique1)
      	where unique1 = 42;
      
      which should generate a fairly cheap plan where we apply the constraint
      unique1 = 42 in each relation scan.  This had been broken by my patch of
      2008-06-27, which is now reverted in favor of a more invasive but hopefully
      less incorrect approach.  That patch was meant to prevent incorrect extraction
      of OR'd indexclauses from OR conditions above an outer join.  To do that
      correctly we need more information than the outerjoin_delay flag can provide,
      so add a nullable_relids field to RestrictInfo that records exactly which
      relations are nulled by outer joins that are underneath a particular qual
      clause.  A side benefit is that we can make the test in create_or_index_quals
      more specific: it is now smart enough to extract an OR'd indexclause into the
      outer side of an outer join, even though it must not do so in the inner side.
      The old coding couldn't distinguish these cases so it could not do either.
      57af05af
  10. 16 4月, 2009 1 次提交
  11. 10 4月, 2009 1 次提交
  12. 08 4月, 2009 1 次提交
  13. 07 4月, 2009 1 次提交
  14. 06 4月, 2009 1 次提交
  15. 04 4月, 2009 2 次提交
    • T
      Rewrite interval_hash() so that the hashcodes are equal for values that · fd8589c1
      Tom Lane 提交于
      interval_eq() considers equal.  I'm not sure how that fundamental requirement
      escaped us through multiple revisions of this hash function, but there it is;
      it's been wrong since interval_hash was first written for PG 7.1.
      Per bug #4748 from Roman Kononov.
      
      Backpatch to all supported releases.
      
      This patch changes the contents of hash indexes for interval columns.  That's
      no particular problem for PG 8.4, since we've broken on-disk compatibility
      of hash indexes already; but it will require a migration warning note in
      the next minor releases of all existing branches: "if you have any hash
      indexes on columns of type interval, REINDEX them after updating".
      fd8589c1
    • T
      Use (unsigned char) cast in argument of pg_tolower(). Maybe it works on · f7730d0e
      Tom Lane 提交于
      Windows without that, but we shouldn't put bad examples where people might
      copy them.  Also, reformat slightly to improve the odds that pgindent
      won't go nuts on this.
      f7730d0e
  16. 03 4月, 2009 2 次提交
  17. 02 4月, 2009 3 次提交
  18. 01 4月, 2009 2 次提交
  19. 31 3月, 2009 2 次提交
  20. 30 3月, 2009 1 次提交
    • T
      Fix an oversight in the support for storing/retrieving "minimal tuples" in · edc7f96c
      Tom Lane 提交于
      TupleTableSlots.  We have functions for retrieving a minimal tuple from a slot
      after storing a regular tuple in it, or vice versa; but these were implemented
      by converting the internal storage from one format to the other.  The problem
      with that is it invalidates any pass-by-reference Datums that were already
      fetched from the slot, since they'll be pointing into the just-freed version
      of the tuple.  The known problem cases involve fetching both a whole-row
      variable and a pass-by-reference value from a slot that is fed from a
      tuplestore or tuplesort object.  The added regression tests illustrate some
      simple cases, but there may be other failure scenarios traceable to the same
      bug.  Note that the added tests probably only fail on unpatched code if it's
      built with --enable-cassert; otherwise the bug leads to fetching from freed
      memory, which will not have been overwritten without additional conditions.
      
      Fix by allowing a slot to contain both formats simultaneously; which turns out
      not to complicate the logic much at all, if anything it seems less contorted
      than before.
      
      Back-patch to 8.2, where minimal tuples were introduced.
      edc7f96c
  21. 27 3月, 2009 2 次提交
  22. 25 3月, 2009 2 次提交
    • T
      Fix old thinko in pgp.h: the idea is to declare some named enum types, · 23e24976
      Tom Lane 提交于
      not global variables of anonymous enum types.  This didn't actually hurt
      much because most linkers will just merge the duplicated definitions ...
      but some will complain.  Per bug #4731 from Ceriel Jacobs.
      
      Backpatch to 8.1 --- the declarations don't exist before that.
      23e24976
    • T
      Install a search tree depth limit in GIN bulk-insert operations, to prevent · e760463c
      Tom Lane 提交于
      them from degrading badly when the input is sorted or nearly so.  In this
      scenario the tree is unbalanced to the point of becoming a mere linked list,
      so insertions become O(N^2).  The easiest and most safely back-patchable
      solution is to stop growing the tree sooner, ie limit the growth of N.  We
      might later consider a rebalancing tree algorithm, but it's not clear that
      the benefit would be worth the cost and complexity.  Per report from Sergey
      Burladyan and an earlier complaint from Heikki.
      
      Back-patch to 8.2; older versions didn't have GIN indexes.
      e760463c
  23. 19 3月, 2009 2 次提交
  24. 18 3月, 2009 1 次提交
  25. 16 3月, 2009 1 次提交
  26. 13 3月, 2009 2 次提交
  27. 12 3月, 2009 2 次提交
  28. 11 3月, 2009 1 次提交
    • A
      Remove pg_trace.h inclusion from c.h and add it to the .c files that need it. · 9a1dd6ed
      Alvaro Herrera 提交于
      Only needed in 8.3 because it's already this way in HEAD, and older branches
      did not support DTrace.  This allows external modules to compile on Linux
      machines where SystemTap support was recently added, when the required
      SystemTap headers are not present on the build machine.
      
      Approach suggested by Tom, after a RPM build trouble report by Devrim Gunduz.
      9a1dd6ed