1. 28 4月, 2012 3 次提交
    • P
      05dd9fb1
    • T
      Fix printing of whole-row Vars at top level of a SELECT targetlist. · d6f7d4fd
      Tom Lane 提交于
      Normally whole-row Vars are printed as "tabname.*".  However, that does not
      work at top level of a targetlist, because per SQL standard the parser will
      think that the "*" should result in column-by-column expansion; which is
      not at all what a whole-row Var implies.  We used to just print the table
      name in such cases, which works most of the time; but it fails if the table
      name matches a column name available anywhere in the FROM clause.  This
      could lead for instance to a view being interpreted differently after dump
      and reload.  Adding parentheses doesn't fix it, but there is a reasonably
      simple kluge we can use instead: attach a no-op cast, so that the "*" isn't
      syntactically at top level anymore.  This makes the printing of such
      whole-row Vars a lot more consistent with other Vars, and may indeed fix
      more cases than just the reported one; I'm suspicious that cases involving
      schema qualification probably didn't work properly before, either.
      
      Per bug report and fix proposal from Abbas Butt, though this patch is quite
      different in detail from his.
      
      Back-patch to all supported versions.
      d6f7d4fd
    • B
      Add options to git_changelog for use in major release note creation: · 993ce4e6
      Bruce Momjian 提交于
      	--details-after
      	--master-only
      	--oldest-first
      993ce4e6
  2. 27 4月, 2012 6 次提交
    • T
      Fix syslogger's rotation disable/re-enable logic. · 537b2669
      Tom Lane 提交于
      If it fails to open a new log file, the syslogger assumes there's something
      wrong with its parameters (such as log_directory), and stops attempting
      automatic time-based or size-based log file rotations.  Sending it SIGHUP
      is supposed to start that up again.  However, the original coding for that
      was really bogus, involving clobbering a couple of GUC variables and hoping
      that SIGHUP processing would restore them.  Get rid of that technique in
      favor of maintaining a separate flag showing we've turned rotation off.
      Per report from Mark Kirkwood.
      
      Also, the syslogger will automatically attempt to create the log_directory
      directory if it doesn't exist, but that was only happening at startup.
      For consistency and ease of use, it should do the same whenever the value
      of log_directory is changed by SIGHUP.
      
      Back-patch to all supported branches.
      537b2669
    • R
      Prevent index-only scans from returning wrong answers under Hot Standby. · 3424bff9
      Robert Haas 提交于
      The alternative of disallowing index-only scans in HS operation was
      discussed, but the consensus was that it was better to treat marking
      a page all-visible as a recovery conflict for snapshots that could still
      fail to see XIDs on that page.  We may in the future try to soften this,
      so that we simply force index scans to do heap fetches in cases where
      this may be an issue, rather than throwing a hard conflict.
      3424bff9
    • T
      Improve documentation around historical calendar rules. · 92df2203
      Tom Lane 提交于
      Get rid of section 8.5.6 (Date/Time Internals), which appears to confuse
      people more than it helps, and anyway discussion of Postgres' internal
      datetime calculation methods seems pretty out of place here.  Instead,
      make datatype.sgml just say that we follow the Gregorian calendar (a bit
      of specification not previously present anywhere in that chapter :-()
      and link to the History of Units appendix for more info.  Do some mild
      editorialization on that appendix, too, to make it clearer that we are
      following proleptic Gregorian calendar rules rather than anything more
      historically accurate.
      
      Per a question from Florence Cousin and subsequent discussion in
      pgsql-docs.
      92df2203
    • T
      Fix oversight in recent parameterized-path patch. · 7c85aa39
      Tom Lane 提交于
      bitmap_scan_cost_est() has to be able to cope with a BitmapOrPath, but
      I'd taken a shortcut that didn't work for that case.  Noted by Heikki.
      Add some regression tests since this area is evidently under-covered.
      7c85aa39
    • P
      PL/Python: Accept strings in functions returning composite types · ba3e4157
      Peter Eisentraut 提交于
      Before 9.1, PL/Python functions returning composite types could return
      a string and it would be parsed using record_in.  The 9.1 changes made
      PL/Python only expect dictionaries, tuples, or objects supporting
      getattr as output of composite functions, resulting in a regression
      and a confusing error message, as the strings were interpreted as
      sequences and the code for transforming lists to database tuples was
      used.  Fix this by treating strings separately as before, before
      checking for the other types.
      
      The reason why it's important to support string to database tuple
      conversion is that trigger functions on tables with composite columns
      get the composite row passed in as a string (from record_out).
      Without supporting converting this back using record_in, this makes it
      impossible to implement pass-through behavior for these columns, as
      PL/Python no longer accepts strings for composite values.
      
      A better solution would be to fix the code that transforms composite
      inputs into Python objects to produce dictionaries that would then be
      correctly interpreted by the Python->PostgreSQL counterpart code.  But
      that would be too invasive to backpatch to 9.1, and it is too late in
      the 9.2 cycle to attempt it.  It should be revisited in the future,
      though.
      
      Reported as bug #6559 by Kirill Simonov.
      
      Jan Urbański
      ba3e4157
    • P
      psql: Tab completion updates · cc71ceab
      Peter Eisentraut 提交于
      Add/complete support for:
      
      - ALTER DOMAIN / VALIDATE CONSTRAINT
      - ALTER DOMAIN / RENAME
      - ALTER DOMAIN / RENAME CONSTRAINT
      - ALTER TABLE / RENAME CONSTRAINT
      cc71ceab
  3. 26 4月, 2012 6 次提交
    • T
      Modify create_index regression test to avoid intermittent failures. · d6d5f67b
      Tom Lane 提交于
      We have been seeing intermittent buildfarm failures due to a query
      sometimes not using an index-only scan plan, because a background
      auto-ANALYZE prevented the table's all-visible bits from being set
      immediately, thereby causing the estimated cost of an index-only scan
      to go up considerably.  Adjust the test case so that a bitmap index scan is
      preferred instead, which serves equally well for the purpose the test case
      is actually meant for.  (Of course, it would be better to eliminate the
      interference from auto-ANALYZE, but I see no low-risk way to do that,
      so any such fix will have to be left for 9.3 or later.)
      d6d5f67b
    • T
      Fix planner's handling of RETURNING lists in writable CTEs. · 9fa82c98
      Tom Lane 提交于
      setrefs.c failed to do "rtoffset" adjustment of Vars in RETURNING lists,
      which meant they were left with the wrong varnos when the RETURNING list
      was in a subquery.  That was never possible before writable CTEs, of
      course, but now it's broken.  The executor fails to notice any problem
      because ExecEvalVar just references the ecxt_scantuple for any normal
      varno; but EXPLAIN breaks when the varno is wrong, as illustrated in a
      recent complaint from Bartosz Dmytrak.
      
      Since the eventual rtoffset of the subquery is not known at the time
      we are preparing its plan node, the previous scheme of executing
      set_returning_clause_references() at that time cannot handle this
      adjustment.  Fortunately, it turns out that we don't really need to do it
      that way, because all the needed information is available during normal
      setrefs.c execution; we just have to dig it out of the ModifyTable node.
      So, do that, and get rid of the kluge of early setrefs processing of
      RETURNING lists.  (This is a little bit of a cheat in the case of inherited
      UPDATE/DELETE, because we are not passing a "root" struct that corresponds
      exactly to what the subplan was built with.  But that doesn't matter, and
      anyway this is less ugly than early setrefs processing was.)
      
      Back-patch to 9.1, where the problem became possible to hit.
      9fa82c98
    • T
      Fix edge-case behavior of pg_next_dst_boundary(). · c62b8eaa
      Tom Lane 提交于
      Due to rather sloppy thinking (on my part, I'm afraid) about the
      appropriate behavior for boundary conditions, pg_next_dst_boundary() gave
      undefined, platform-dependent results when the input time is exactly the
      last recorded DST transition time for the specified time zone, as a result
      of fetching values one past the end of its data arrays.
      
      Change its specification to be that it always finds the next DST boundary
      *after* the input time, and adjust code to match that.  The sole existing
      caller, DetermineTimeZoneOffset, doesn't actually care about this
      distinction, since it always uses a probe time earlier than the instant
      that it does care about.  So it seemed best to me to change the API to make
      the result=1 and result=0 cases more consistent, specifically to ensure
      that the "before" outputs always describe the state at the given time,
      rather than hacking the code to obey the previous API comment exactly.
      
      Per bug #6605 from Sergey Burladyan.  Back-patch to all supported versions.
      c62b8eaa
    • R
      Remove prototype for nonexistent function. · ca1e1a8d
      Robert Haas 提交于
      ca1e1a8d
    • T
      Another trivial comment-typo fix. · 9873001e
      Tom Lane 提交于
      9873001e
    • P
      PL/Python: Improve error messages · 65ca8e68
      Peter Eisentraut 提交于
      65ca8e68
  4. 25 4月, 2012 3 次提交
  5. 24 4月, 2012 6 次提交
    • R
      Casts to or from a domain type are ignored; warn and document. · 3ce7f18e
      Robert Haas 提交于
      Prohibiting this outright would break dumps taken from older versions
      that contain such casts, which would create far more pain than is
      justified here.
      
      Per report by Jaime Casanova and subsequent discussion.
      3ce7f18e
    • R
      Another typographical correction. · e4f06b70
      Robert Haas 提交于
      Noted by Guillaume Smet.
      e4f06b70
    • R
      Lots of doc corrections. · 5d4b60f2
      Robert Haas 提交于
      Josh Kupershmidt
      5d4b60f2
    • R
      Rearrange lazy_scan_heap to avoid visibility map race conditions. · 7ab9b2f3
      Robert Haas 提交于
      We must set the visibility map bit before releasing our exclusive lock
      on the heap page; otherwise, someone might clear the heap page bit
      before we set the visibility map bit, leading to a situation where the
      visibility map thinks the page is all-visible but it's really not.
      
      This problem has existed since 8.4, but it wasn't critical before we
      had index-only scans, since the worst case scenario was that the page
      wouldn't get vacuumed until the next scan_all vacuum.
      
      Along the way, a couple of minor, related improvements: (1) if we
      pause the heap scan to do an index vac cycle, release any visibility
      map page we're holding, since really long-running pins are not good
      for a variety of reasons; and (2) warn if we see a page that's marked
      all-visible in the visibility map but not on the page level, since
      that should never happen any more (it was allowed in previous
      releases, but not in 9.2).
      7ab9b2f3
    • R
      Reduce hash size for compute_array_stats, compute_tsvector_stats. · 85efd5f0
      Robert Haas 提交于
      The size is only a hint, but a big hint chews up a lot of memory without
      apparently improving performance much.
      
      Analysis and patch by Noah Misch.
      85efd5f0
    • R
      Minor improvements for CHECK NO INHERIT documentation. · 9d435d57
      Robert Haas 提交于
      Fix typo spotted by Thom Brown, and improve wording in another area
      where Thom spotted a typo.
      9d435d57
  6. 23 4月, 2012 1 次提交
  7. 21 4月, 2012 3 次提交
    • T
      Use fuzzy not exact cost comparison for the final tie-breaker in add_path. · 33e99153
      Tom Lane 提交于
      Instead of an exact cost comparison, use a fuzzy comparison with 1e-10
      delta after all other path metrics have proved equal.  This is to avoid
      having platform-specific roundoff behaviors determine the choice when
      two paths are really the same to our cost estimators.  Adjust the
      recently-added test case that made it obvious we had a problem here.
      33e99153
    • A
      Recast "ONLY" column CHECK constraints as NO INHERIT · 09ff76fc
      Alvaro Herrera 提交于
      The original syntax wasn't universally loved, and it didn't allow its
      usage in CREATE TABLE, only ALTER TABLE.  It now works everywhere, and
      it also allows using ALTER TABLE ONLY to add an uninherited CHECK
      constraint, per discussion.
      
      The pg_constraint column has accordingly been renamed connoinherit.
      
      This commit partly reverts some of the changes in
      61d81bd2, particularly some pg_dump and
      psql bits, because now pg_get_constraintdef includes the necessary NO
      INHERIT within the constraint definition.
      
      Author: Nikhil Sontakke
      Some tweaks by me
      09ff76fc
    • T
      Adjust join_search_one_level's handling of clauseless joins. · 1f036300
      Tom Lane 提交于
      For an initial relation that lacks any join clauses (that is, it has to be
      cartesian-product-joined to the rest of the query), we considered only
      cartesian joins with initial rels appearing later in the initial-relations
      list.  This creates an undesirable dependency on FROM-list order.  We would
      never fail to find a plan, but perhaps we might not find the best available
      plan.  Noted while discussing the logic with Amit Kapila.
      
      Improve the comments a bit in this area, too.
      
      Arguably this is a bug fix, but given the lack of complaints from the
      field I'll refrain from back-patching.
      1f036300
  8. 20 4月, 2012 2 次提交
    • T
      Revise parameterized-path mechanism to fix assorted issues. · 5b7b5518
      Tom Lane 提交于
      This patch adjusts the treatment of parameterized paths so that all paths
      with the same parameterization (same set of required outer rels) for the
      same relation will have the same rowcount estimate.  We cache the rowcount
      estimates to ensure that property, and hopefully save a few cycles too.
      Doing this makes it practical for add_path_precheck to operate without
      a rowcount estimate: it need only assume that paths with different
      parameterizations never dominate each other, which is close enough to
      true anyway for coarse filtering, because normally a more-parameterized
      path should yield fewer rows thanks to having more join clauses to apply.
      
      In add_path, we do the full nine yards of comparing rowcount estimates
      along with everything else, so that we can discard parameterized paths that
      don't actually have an advantage.  This fixes some issues I'd found with
      add_path rejecting parameterized paths on the grounds that they were more
      expensive than not-parameterized ones, even though they yielded many fewer
      rows and hence would be cheaper once subsequent joining was considered.
      
      To make the same-rowcounts assumption valid, we have to require that any
      parameterized path enforce *all* join clauses that could be obtained from
      the particular set of outer rels, even if not all of them are useful for
      indexing.  This is required at both base scans and joins.  It's a good
      thing anyway since the net impact is that join quals are checked at the
      lowest practical level in the join tree.  Hence, discard the original
      rather ad-hoc mechanism for choosing parameterization joinquals, and build
      a better one that has a more principled rule for when clauses can be moved.
      The original rule was actually buggy anyway for lack of knowledge about
      which relations are part of an outer join's outer side; getting this right
      requires adding an outer_relids field to RestrictInfo.
      5b7b5518
    • P
      Untabify DSSSL and XSL files and add to check-tabs target · cd1f4db4
      Peter Eisentraut 提交于
      Like with SGML files, using tabs in these files is confusing and
      unnecessary.
      cd1f4db4
  9. 18 4月, 2012 10 次提交