1. 29 Aug, 2013 2 commits
    • Alvaro Herrera's avatar
      Make error wording more consistent · 9381cb52
      Alvaro Herrera authored
      9381cb52
    • Heikki Linnakangas's avatar
      Use a non-locking initial test in TAS_SPIN on x86_64. · b03d196b
      Heikki Linnakangas authored
      Testing done in 2011 by Tom Lane concluded that this is a win on Intel Xeons
      and AMD Opterons, but it was not changed back then, because of an old
      comment in tas() that suggested that it's a huge loss on older Opterons.
      However, didn't have separate TAS() and TAS_SPIN() macros back then, so the
      comment referred to doing a non-locked initial test even on the first
      access, in uncontended case. I don't have access to older Opterons, but I'm
      pretty sure that doing an initial unlocked test is unlikely to be a loss
      while spinning, even though it might be for the first access.
      
      We probably should do the same on 32-bit x86, but I'm afraid of changing it
      without any testing. Hence just add a note to the x86 implementation
      suggesting that we probably should do the same there.
      b03d196b
  2. 28 Aug, 2013 3 commits
    • Robert Haas's avatar
      Allow discovery of whether a dynamic background worker is running. · 090d0f20
      Robert Haas authored
      Using the infrastructure provided by this patch, it's possible either
      to wait for the startup of a dynamically-registered background worker,
      or to poll the status of such a worker without waiting.  In either
      case, the current PID of the worker process can also be obtained.
      As usual, worker_spi is updated to demonstrate the new functionality.
      
      Patch by me.  Review by Andres Freund.
      090d0f20
    • Robert Haas's avatar
      Partially restore comments discussing enum renumbering hazards. · c9e2e2db
      Robert Haas authored
      As noted by Tom Lane, commit 813fb031
      was overly optimistic about how safe it is to concurrently change
      enumsortorder values under MVCC catalog scan semantics.  Restore
      some of the previous text, with hopefully-correct adjustments for
      the new state of play.
      c9e2e2db
    • Heikki Linnakangas's avatar
      Accept multiple -I, -P, -T and -n options in pg_restore. · da85fb47
      Heikki Linnakangas authored
      We already did this for -t (--table) in 9.3, but missed the other similar
      options. For consistency, allow all of them to be specified multiple times.
      
      Unfortunately it's too late to sneak this into 9.3, so commit to master
      only.
      da85fb47
  3. 27 Aug, 2013 2 commits
  4. 26 Aug, 2013 1 commit
  5. 24 Aug, 2013 2 commits
    • Tom Lane's avatar
      Account better for planning cost when choosing whether to use custom plans. · 2aac3399
      Tom Lane authored
      The previous coding in plancache.c essentially used 10% of the estimated
      runtime as its cost estimate for planning.  This can be pretty bogus,
      especially when the estimated runtime is very small, such as in a simple
      expression plan created by plpgsql, or a simple INSERT ... VALUES.
      
      While we don't have a really good handle on how planning time compares
      to runtime, it seems reasonable to use an estimate based on the number of
      relations referenced in the query, with a rather large multiplier.  This
      patch uses 1000 * cpu_operator_cost * (nrelations + 1), so that even a
      trivial query will be charged 1000 * cpu_operator_cost for planning.
      This should address the problem reported by Marc Cousin and others that
      9.2 and up prefer custom plans in cases where the planning time greatly
      exceeds what can be saved.
      2aac3399
    • Magnus Hagander's avatar
      Don't crash when pg_xlog is empty and pg_basebackup -x is used · db4ef737
      Magnus Hagander authored
      The backup will not work (without a logarchive, and that's the whole
      point of -x) in this case, this patch just changes it to throw an
      error instead of crashing when this happens.
      
      Noticed and diagnosed by TAKATSUKA Haruka
      db4ef737
  6. 23 Aug, 2013 1 commit
    • Tom Lane's avatar
      In locate_grouping_columns(), don't expect an exact match of Var typmods. · fcf9ecad
      Tom Lane authored
      It's possible that inlining of SQL functions (or perhaps other changes?)
      has exposed typmod information not known at parse time.  In such cases,
      Vars generated by query_planner might have valid typmod values while the
      original grouping columns only have typmod -1.  This isn't a semantic
      problem since the behavior of grouping only depends on type not typmod,
      but it breaks locate_grouping_columns' use of tlist_member to locate the
      matching entry in query_planner's result tlist.
      
      We can fix this without an excessive amount of new code or complexity by
      relying on the fact that locate_grouping_columns only gets called when
      make_subplanTargetList has set need_tlist_eval == false, and that can only
      happen if all the grouping columns are simple Vars.  Therefore we only need
      to search the sub_tlist for a matching Var, and we can reasonably define a
      "match" as being a match of the Var identity fields
      varno/varattno/varlevelsup.  The code still Asserts that vartype matches,
      but ignores vartypmod.
      
      Per bug #8393 from Evan Martin.  The added regression test case is
      basically the same as his example.  This has been broken for a very long
      time, so back-patch to all supported branches.
      fcf9ecad
  7. 21 Aug, 2013 2 commits
    • Tom Lane's avatar
      Fix hash table size estimation error in choose_hashed_distinct(). · 34548763
      Tom Lane authored
      We should account for the per-group hashtable entry overhead when
      considering whether to use a hash aggregate to implement DISTINCT.  The
      comparable logic in choose_hashed_grouping() gets this right, but I think
      I omitted it here in the mistaken belief that there would be no overhead
      if there were no aggregate functions to be evaluated.  This can result in
      more than 2X underestimate of the hash table size, if the tuples being
      aggregated aren't very wide.  Per report from Tomas Vondra.
      
      This bug is of long standing, but per discussion we'll only back-patch into
      9.3.  Changing the estimation behavior in stable branches seems to carry too
      much risk of destabilizing plan choices for already-tuned applications.
      34548763
    • Bruce Momjian's avatar
      docs: Remove second 'trim' index reference · 5dcc48c2
      Bruce Momjian authored
      Per suggestion from Vik Fearing
      5dcc48c2
  8. 20 Aug, 2013 2 commits
  9. 19 Aug, 2013 7 commits
    • Tom Lane's avatar
      Be more wary of unwanted whitespace in pgstat_reset_remove_files(). · 20fe8707
      Tom Lane authored
      sscanf isn't the easiest thing to use for exact pattern checks ...
      also, don't use strncmp where strcmp will do.
      20fe8707
    • Alvaro Herrera's avatar
      Fix removal of files in pgstats directories · f9b50b7c
      Alvaro Herrera authored
      Instead of deleting all files in stats_temp_directory and the permanent
      directory on a crash, only remove those files that match the pattern of
      files we actually write in them, to avoid possibly clobbering existing
      unrelated contents of the temporary directory.  Per complaint from Jeff
      Janes, and subsequent discussion, starting at message
      CAMkU=1z9+7RsDODnT4=cDFBRBp8wYQbd_qsLcMtKEf-oFwuOdQ@mail.gmail.com
      
      Also, fix a bug in the same routine to avoid removing files from the
      permanent directory twice (instead of once from that directory and then
      from the temporary directory), also per report from Jeff Janes, in
      message
      CAMkU=1wbk947=-pAosDMX5VC+sQw9W4ttq6RM9rXu=MjNeEQKA@mail.gmail.com
      f9b50b7c
    • Heikki Linnakangas's avatar
      Rename the "fast_promote" file to just "promote". · 3619a20d
      Heikki Linnakangas authored
      This keeps the usual trigger file name unchanged from 9.2, avoiding nasty
      issues if you use a pre-9.3 pg_ctl binary with a 9.3 server or vice versa.
      The fallback behavior of creating a full checkpoint before starting up is now
      triggered by a file called "fallback_promote". That can be useful for
      debugging purposes, but we don't expect any users to have to resort to that
      and we might want to remove that in the future, which is why the fallback
      mechanism is undocumented.
      3619a20d
    • Tom Lane's avatar
      Fix qual-clause-misplacement issues with pulled-up LATERAL subqueries. · c64de21e
      Tom Lane authored
      In an example such as
      SELECT * FROM
        i LEFT JOIN LATERAL (SELECT * FROM j WHERE i.n = j.n) j ON true;
      it is safe to pull up the LATERAL subquery into its parent, but we must
      then treat the "i.n = j.n" clause as a qual clause of the LEFT JOIN.  The
      previous coding in deconstruct_recurse mistakenly labeled the clause as
      "is_pushed_down", resulting in wrong semantics if the clause were applied
      at the join node, as per an example submitted awhile ago by Jeremy Evans.
      To fix, postpone processing of such clauses until we return back up to
      the appropriate recursion depth in deconstruct_recurse.
      
      In addition, tighten the is-safe-to-pull-up checks in is_simple_subquery;
      we previously missed the possibility that the LATERAL subquery might itself
      contain an outer join that makes lateral references in lower quals unsafe.
      
      A regression test case equivalent to Jeremy's example was already in my
      commit of yesterday, but was giving the wrong results because of this
      bug.  This patch fixes the expected output for that, and also adds a
      test case for the second problem.
      c64de21e
    • Alvaro Herrera's avatar
      Fix pg_upgrade failure from servers older than 9.3 · 78e12201
      Alvaro Herrera authored
      When upgrading from servers of versions 9.2 and older, and MultiXactIds
      have been used in the old server beyond the first page (that is, 2048
      multis or more in the default 8kB-page build), pg_upgrade would set the
      next multixact offset to use beyond what has been allocated in the new
      cluster.  This would cause a failure the first time the new cluster
      needs to use this value, because the pg_multixact/offsets/ file wouldn't
      exist or wouldn't be large enough.  To fix, ensure that the transient
      server instances launched by pg_upgrade extend the file as necessary.
      
      Per report from Jesse Denardo in
      CANiVXAj4c88YqipsyFQPboqMudnjcNTdB3pqe8ReXqAFQ=HXyA@mail.gmail.com
      78e12201
    • Bruce Momjian's avatar
      release notes: remove username from 9.3 major item · 1bc5935b
      Bruce Momjian authored
      Etsuro Fujita
      1bc5935b
    • Peter Eisentraut's avatar
      Translation updates · a2f2e902
      Peter Eisentraut authored
      a2f2e902
  10. 18 Aug, 2013 4 commits
    • Kevin Grittner's avatar
      Remove relcache entry invalidation in REFRESH MATERIALIZED VIEW. · 28154bb2
      Kevin Grittner authored
      This was added as part of the attempt to support unlogged matviews
      along with a populated status.  It got missed when unlogged
      support was removed pre-commit.
      
      Noticed by Noah Misch.  Back-patched to 9.3 branch.
      28154bb2
    • Peter Eisentraut's avatar
    • Tom Lane's avatar
      Fix thinko in comment. · f1d5fce7
      Tom Lane authored
      f1d5fce7
    • Tom Lane's avatar
      Fix planner problems with LATERAL references in PlaceHolderVars. · 9e7e29c7
      Tom Lane authored
      The planner largely failed to consider the possibility that a
      PlaceHolderVar's expression might contain a lateral reference to a Var
      coming from somewhere outside the PHV's syntactic scope.  We had a previous
      report of a problem in this area, which I tried to fix in a quick-hack way
      in commit 4da6439b, but Antonin Houska
      pointed out that there were still some problems, and investigation turned
      up other issues.  This patch largely reverts that commit in favor of a more
      thoroughly thought-through solution.  The new theory is that a PHV's
      ph_eval_at level cannot be higher than its original syntactic level.  If it
      contains lateral references, those don't change the ph_eval_at level, but
      rather they create a lateral-reference requirement for the ph_eval_at join
      relation.  The code in joinpath.c needs to handle that.
      
      Another issue is that createplan.c wasn't handling nested PlaceHolderVars
      properly.
      
      In passing, push knowledge of lateral-reference checks for join clauses
      into join_clause_is_movable_to.  This is mainly so that FDWs don't need
      to deal with it.
      
      This patch doesn't fix the original join-qual-placement problem reported by
      Jeremy Evans (and indeed, one of the new regression test cases shows the
      wrong answer because of that).  But the PlaceHolderVar problems need to be
      fixed before that issue can be addressed, so committing this separately
      seems reasonable.
      9e7e29c7
  11. 16 Aug, 2013 5 commits
  12. 15 Aug, 2013 4 commits
  13. 14 Aug, 2013 4 commits
    • Tom Lane's avatar
      Remove ph_may_need from PlaceHolderInfo, with attendant simplifications. · 1b1d3d92
      Tom Lane authored
      The planner logic that attempted to make a preliminary estimate of the
      ph_needed levels for PlaceHolderVars seems to be completely broken by
      lateral references.  Fortunately, the potential join order optimization
      that this code supported seems to be of relatively little value in
      practice; so let's just get rid of it rather than trying to fix it.
      
      Getting rid of this allows fairly substantial simplifications in
      placeholder.c, too, so planning in such cases should be a bit faster.
      
      Issue noted while pursuing bugs reported by Jeremy Evans and Antonin
      Houska, though this doesn't in itself fix either of their reported cases.
      What this does do is prevent an Assert crash in the kind of query
      illustrated by the added regression test.  (I'm not sure that the plan for
      that query is stable enough across platforms to be usable as a regression
      test output ... but we'll soon find out from the buildfarm.)
      
      Back-patch to 9.3.  The problem case can't arise without LATERAL, so
      no need to touch older branches.
      1b1d3d92
    • Bruce Momjian's avatar
      docs: document TRIM "comma" syntax · 5368a23e
      Bruce Momjian authored
      This syntax is supported by the parser, but is non-standard.
      
      _Not_ backpatched to 9.3 in case we change our minds.
      5368a23e
    • Kevin Grittner's avatar
      Remove Assert that matview is not in system schema from REFRESH. · e2cd3686
      Kevin Grittner authored
      We don't want to prevent an extension which creates a matview from
      being installed in pg_catalog.
      
      Issue was raised by Hitoshi Harada.
      Backpatched to 9.3.
      e2cd3686
    • Peter Eisentraut's avatar
      Update Emacs configuration · 5e3e8e4d
      Peter Eisentraut authored
      Update emacs.samples with new configuration snippets that match pgindent
      et al. formatting more accurately and follow Emacs Lisp best practices
      better.
      
      Add .dir-locals.el with a subset of that configuration for casual
      editing and viewing.
      Reviewed-by: default avatarDimitri Fontaine <dimitri@2ndQuadrant.fr>
      Reviewed-by: default avatarNoah Misch <noah@leadboat.com>
      5e3e8e4d
  14. 13 Aug, 2013 1 commit
    • Tom Lane's avatar
      Emit a log message if output is about to be redirected away from stderr. · 3d5282c6
      Tom Lane authored
      We've seen multiple cases of people looking at the postmaster's original
      stderr output to try to diagnose problems, not realizing/remembering that
      their logging configuration is set up to send log messages somewhere else.
      This seems particularly likely to happen in prepackaged distributions,
      since many packagers patch the code to change the factory-standard logging
      configuration to something more in line with their platform conventions.
      
      In hopes of reducing confusion, emit a LOG message about this at the point
      in startup where we are about to switch log output away from the original
      stderr, providing a pointer to where to look instead.  This message will
      appear as the last thing in the original stderr output.  (We might later
      also try to emit such link messages when logging parameters are changed
      on-the-fly; but that case seems to be both noticeably harder to do nicely,
      and much less frequently a problem in practice.)
      
      Per discussion, back-patch to 9.3 but not further.
      3d5282c6