Skip to content
Snippets Groups Projects
  1. May 03, 2012
  2. May 02, 2012
  3. May 01, 2012
    • Peter Eisentraut's avatar
      Remove dead ports · f2f9439f
      Peter Eisentraut authored
      Remove the following ports:
      
      - dgux
      - nextstep
      - sunos4
      - svr4
      - ultrix4
      - univel
      
      These are obsolete and not worth rescuing.  In most cases, there is
      circumstantial evidence that they wouldn't work anymore anyway.
      f2f9439f
  4. Apr 30, 2012
    • Tom Lane's avatar
      Converge all SQL-level statistics timing values to float8 milliseconds. · 809e7e21
      Tom Lane authored
      This patch adjusts the core statistics views to match the decision already
      taken for pg_stat_statements, that values representing elapsed time should
      be represented as float8 and measured in milliseconds.  By using float8,
      we are no longer tied to a specific maximum precision of timing data.
      (Internally, it's still microseconds, but we could now change that without
      needing changes at the SQL level.)
      
      The columns affected are
      pg_stat_bgwriter.checkpoint_write_time
      pg_stat_bgwriter.checkpoint_sync_time
      pg_stat_database.blk_read_time
      pg_stat_database.blk_write_time
      pg_stat_user_functions.total_time
      pg_stat_user_functions.self_time
      pg_stat_xact_user_functions.total_time
      pg_stat_xact_user_functions.self_time
      
      The first four of these are new in 9.2, so there is no compatibility issue
      from changing them.  The others require a release note comment that they
      are now double precision (and can show a fractional part) rather than
      bigint as before; also their underlying statistics functions now match
      the column definitions, instead of returning bigint microseconds.
      809e7e21
    • Peter Eisentraut's avatar
      Mark ReThrowError() with attribute noreturn · 26471a51
      Peter Eisentraut authored
      All related functions were already so marked.
      26471a51
    • Tom Lane's avatar
      Rename I/O timing statistics columns to blk_read_time and blk_write_time. · 1dd89ead
      Tom Lane authored
      This seems more consistent with the pre-existing choices for names of
      other statistics columns.  Rename assorted internal identifiers to match.
      1dd89ead
  5. Apr 29, 2012
  6. Apr 27, 2012
    • Robert Haas's avatar
      Prevent index-only scans from returning wrong answers under Hot Standby. · 3424bff9
      Robert Haas authored
      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
  7. Apr 26, 2012
    • Tom Lane's avatar
      Fix planner's handling of RETURNING lists in writable CTEs. · 9fa82c98
      Tom Lane authored
      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
  8. Apr 25, 2012
  9. Apr 24, 2012
  10. Apr 21, 2012
    • Alvaro Herrera's avatar
      Recast "ONLY" column CHECK constraints as NO INHERIT · 09ff76fc
      Alvaro Herrera authored
      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
  11. Apr 19, 2012
    • Tom Lane's avatar
      Revise parameterized-path mechanism to fix assorted issues. · 5b7b5518
      Tom Lane authored
      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
  12. Apr 18, 2012
  13. Apr 14, 2012
    • Robert Haas's avatar
      pg_size_pretty(numeric) · 4a2d7ad7
      Robert Haas authored
      The output of the new pg_xlog_location_diff function is of type numeric,
      since it could theoretically overflow an int8 due to signedness; this
      provides a convenient way to format such values.
      
      Fujii Masao, with some beautification by me.
      4a2d7ad7
  14. Apr 13, 2012
    • Peter Eisentraut's avatar
      Rename bytea_agg to string_agg and add delimiter argument · c0cc526e
      Peter Eisentraut authored
      Per mailing list discussion, we would like to keep the bytea functions
      parallel to the text functions, so rename bytea_agg to string_agg,
      which already exists for text.
      
      Also, to satisfy the rule that we don't want aggregate functions of
      the same name with a different number of arguments, add a delimiter
      argument, just like string_agg for text already has.
      c0cc526e
  15. Apr 08, 2012
    • Heikki Linnakangas's avatar
      Do stack-depth checking in all postmaster children. · ef3883d1
      Heikki Linnakangas authored
      We used to only initialize the stack base pointer when starting up a regular
      backend, not in other processes. In particular, autovacuum workers can run
      arbitrary user code, and without stack-depth checking, infinite recursion
      in e.g an index expression will bring down the whole cluster.
      
      The comment about PL/Java using set_stack_base() is not yet true. As the
      code stands, PL/java still modifies the stack_base_ptr variable directly.
      However, it's been discussed in the PL/Java mailing list that it should be
      changed to use the function, because PL/Java is currently oblivious to the
      register stack used on Itanium. There's another issues with PL/Java, namely
      that the stack base pointer it sets is not really the base of the stack, it
      could be something close to the bottom of the stack. That's a separate issue
      that might need some further changes to this code, but that's a different
      story.
      
      Backpatch to all supported releases.
      ef3883d1
  16. Apr 06, 2012
  17. Apr 05, 2012
  18. Apr 03, 2012
  19. Mar 31, 2012
  20. Mar 29, 2012
    • Heikki Linnakangas's avatar
      Inherit max_safe_fds to child processes in EXEC_BACKEND mode. · 5762a4d9
      Heikki Linnakangas authored
      Postmaster sets max_safe_fds by testing how many open file descriptors it
      can open, and that is normally inherited by all child processes at fork().
      Not so on EXEC_BACKEND, ie. Windows, however. Because of that, we
      effectively ignored max_files_per_process on Windows, and always assumed
      a conservative default of 32 simultaneous open files. That could have an
      impact on performance, if you need to access a lot of different files
      in a query. After this patch, the value is passed to child processes by
      save/restore_backend_variables() among many other global variables.
      
      It has been like this forever, but given the lack of complaints about it,
      I'm not backpatching this.
      5762a4d9
    • Andrew Dunstan's avatar
      Remove now redundant pgpipe code. · d2c1740d
      Andrew Dunstan authored
      d2c1740d
  21. Mar 27, 2012
    • Tom Lane's avatar
      Add some infrastructure for contrib/pg_stat_statements. · a40fa613
      Tom Lane authored
      Add a queryId field to Query and PlannedStmt.  This is not used by the
      core backend, except for being copied around at appropriate times.
      It's meant to allow plug-ins to track a particular query forward from
      parse analysis to execution.
      
      The queryId is intentionally not dumped into stored rules (and hence this
      commit doesn't bump catversion).  You could argue that choice either way,
      but it seems better that stored rule strings not have any dependency
      on plug-ins that might or might not be present.
      
      Also, add a post_parse_analyze_hook that gets invoked at the end of
      parse analysis (but only for top-level analysis of complete queries,
      not cases such as analyzing a domain's default-value expression).
      This is mainly meant to be used to compute and assign a queryId,
      but it could have other applications.
      
      Peter Geoghegan
      a40fa613
    • Robert Haas's avatar
      New GUC, track_iotiming, to track I/O timings. · 40b9b957
      Robert Haas authored
      Currently, the only way to see the numbers this gathers is via
      EXPLAIN (ANALYZE, BUFFERS), but the plan is to add visibility through
      the stats collector and pg_stat_statements in subsequent patches.
      
      Ants Aasma, reviewed by Greg Smith, with some further changes by me.
      40b9b957
  22. Mar 26, 2012
    • Robert Haas's avatar
      Code cleanup for heap_freeze_tuple. · 7386089d
      Robert Haas authored
      It used to be case that lazy vacuum could call this function with only
      a shared lock on the buffer, but neither lazy vacuum nor any other
      code path does that any more.  Simplify the code accordingly and clean
      up some related, obsolete comments.
      7386089d
    • Tom Lane's avatar
      Replace empty locale name with implied value in CREATE DATABASE and initdb. · c7cea267
      Tom Lane authored
      setlocale() accepts locale name "" as meaning "the locale specified by the
      process's environment variables".  Historically we've accepted that for
      Postgres' locale settings, too.  However, it's fairly unsafe to store an
      empty string in a new database's pg_database.datcollate or datctype fields,
      because then the interpretation could vary across postmaster restarts,
      possibly resulting in index corruption and other unpleasantness.
      
      Instead, we should expand "" to whatever it means at the moment of calling
      CREATE DATABASE, which we can do by saving the value returned by
      setlocale().
      
      For consistency, make initdb set up the initial lc_xxx parameter values the
      same way.  initdb was already doing the right thing for empty locale names,
      but it did not replace non-empty names with setlocale results.  On a
      platform where setlocale chooses to canonicalize the spellings of locale
      names, this would result in annoying inconsistency.  (It seems that popular
      implementations of setlocale don't do such canonicalization, which is a
      pity, but the POSIX spec certainly allows it to be done.)  The same risk
      of inconsistency leads me to not venture back-patching this, although it
      could certainly be seen as a longstanding bug.
      
      Per report from Jeff Davis, though this is not his proposed patch.
      c7cea267
  23. Mar 24, 2012
    • Tom Lane's avatar
      Fix planner's handling of outer PlaceHolderVars within subqueries. · 8279eb41
      Tom Lane authored
      For some reason, in the original coding of the PlaceHolderVar mechanism
      I had supposed that PlaceHolderVars couldn't propagate into subqueries.
      That is of course entirely possible.  When it happens, we need to treat
      an outer-level PlaceHolderVar much like an outer Var or Aggref, that is
      SS_replace_correlation_vars() needs to replace the PlaceHolderVar with
      a Param, and then when building the finished SubPlan we have to provide
      the PlaceHolderVar expression as an actual parameter for the SubPlan.
      The handling of the contained expression is a bit delicate but it can be
      treated exactly like an Aggref's expression.
      
      In addition to the missing logic in subselect.c, prepjointree.c was failing
      to search subqueries for PlaceHolderVars that need their relids adjusted
      during subquery pullup.  It looks like everyplace else that touches
      PlaceHolderVars got it right, though.
      
      Per report from Mark Murawski.  In 9.1 and HEAD, queries affected by this
      oversight would fail with "ERROR: Upper-level PlaceHolderVar found where
      not expected".  But in 9.0 and 8.4, you'd silently get possibly-wrong
      answers, since the value transmitted into the subquery wouldn't go to null
      when it should.
      8279eb41
  24. Mar 23, 2012
    • Tom Lane's avatar
      Code review for protransform patches. · 0339047b
      Tom Lane authored
      Fix loss of previous expression-simplification work when a transform
      function fires: we must not simply revert to untransformed input tree.
      Instead build a dummy FuncExpr node to pass to the transform function.
      This has the additional advantage of providing a simpler, more uniform
      API for transform functions.
      
      Move documentation to a somewhat less buried spot, relocate some
      poorly-placed code, be more wary of null constants and invalid typmod
      values, add an opr_sanity check on protransform function signatures,
      and some other minor cosmetic adjustments.
      
      Note: although this patch touches pg_proc.h, no need for catversion
      bump, because the changes are cosmetic and don't actually change the
      intended catalog contents.
      0339047b
  25. Mar 21, 2012
  26. Mar 20, 2012
    • Tom Lane's avatar
      Restructure SELECT INTO's parsetree representation into CreateTableAsStmt. · 9dbf2b7d
      Tom Lane authored
      Making this operation look like a utility statement seems generally a good
      idea, and particularly so in light of the desire to provide command
      triggers for utility statements.  The original choice of representing it as
      SELECT with an IntoClause appendage had metastasized into rather a lot of
      places, unfortunately, so that this patch is a great deal more complicated
      than one might at first expect.
      
      In particular, keeping EXPLAIN working for SELECT INTO and CREATE TABLE AS
      subcommands required restructuring some EXPLAIN-related APIs.  Add-on code
      that calls ExplainOnePlan or ExplainOneUtility, or uses
      ExplainOneQuery_hook, will need adjustment.
      
      Also, the cases PREPARE ... SELECT INTO and CREATE RULE ... SELECT INTO,
      which formerly were accepted though undocumented, are no longer accepted.
      The PREPARE case can be replaced with use of CREATE TABLE AS EXECUTE.
      The CREATE RULE case doesn't seem to have much real-world use (since the
      rule would work only once before failing with "table already exists"),
      so we'll not bother with that one.
      
      Both SELECT INTO and CREATE TABLE AS still return a command tag of
      "SELECT nnnn".  There was some discussion of returning "CREATE TABLE nnnn",
      but for the moment backwards compatibility wins the day.
      
      Andres Freund and Tom Lane
      9dbf2b7d
Loading