1. 02 Apr, 2015 11 commits
    • Robert Haas's avatar
      Improve pgbench error reporting. · e41beea0
      Robert Haas authored
      This would have been worth doing on general principle anyway, but the
      recent addition of an expression syntax to pgbench makes it an even
      better idea than it would have been otherwise.
      
      Fabien Coelho
      e41beea0
    • Robert Haas's avatar
      05cce2f9
    • Robert Haas's avatar
      After a crash, don't restart workers with BGW_NEVER_RESTART. · b3a5e76e
      Robert Haas authored
      Amit Khandekar
      b3a5e76e
    • Robert Haas's avatar
      Use abbreviated keys for faster sorting of numeric datums. · abd94bca
      Robert Haas authored
      Andrew Gierth, reviewed by Peter Geoghegan, with further tweaks by me.
      abd94bca
    • Alvaro Herrera's avatar
      autovacuum: Fix polarity of "wraparound" variable · 00ee6c76
      Alvaro Herrera authored
      Commit 0d831389 inadvertently reversed the meaning of the
      wraparound variable.  This causes vacuums which are not required for
      wraparound to wait for locks to be acquired, and what is worse, it
      allows wraparound vacuums to skip locked pages.
      
      Bug reported by Jeff Janes in
      http://www.postgresql.org/message-id/CAMkU=1xmTEiaY=5oMHsSQo5vd9V1Ze4kNLL0qN2eH0P_GXOaYw@mail.gmail.com
      Analysis and patch by Kyotaro HORIGUCHI
      00ee6c76
    • Robert Haas's avatar
      Add missing calls to DatumGetUInt32. · c02ef232
      Robert Haas authored
      These were inadvertently ommitted from the commit that introduced
      abbreviated keys, commit 4ea51cdf.
      
      Peter Geoghegan
      c02ef232
    • Andres Freund's avatar
      Define integer limits independently from the system definitions. · 62e2a8dc
      Andres Freund authored
      In 83ff1618 we defined integer limits iff they're not provided by the
      system. That turns out not to be the greatest idea because there's
      different ways some datatypes can be represented. E.g. on OSX PG's 64bit
      datatype will be a 'long int', but OSX unconditionally uses 'long
      long'. That disparity then can lead to warnings, e.g. around printf
      formats.
      
      One way to fix that would be to back int64 using stdint.h's
      int64_t. While a good idea it's not that easy to implement. We would
      e.g. need to include stdint.h in our external headers, which we don't
      today. Also computing the correct int64 printf formats in that case is
      nontrivial.
      
      Instead simply prefix the integer limits with PG_ and define them
      unconditionally. I've adjusted all the references to them in code, but
      not the ones in comments; the latter seems unnecessary to me.
      
      Discussion: 20150331141423.GK4878@alap3.anarazel.de
      62e2a8dc
    • Alvaro Herrera's avatar
      psql: fix \connect with URIs and conninfo strings · e146ca68
      Alvaro Herrera authored
      This is the second try at this, after fcef1617 failed miserably and
      had to be reverted: as it turns out, libpq cannot depend on libpgcommon
      after all. Instead of shuffling code in the master branch, make that one
      just like 9.4 and accept the duplication.  (This was all my own mistake,
      not the patch submitter's).
      
      psql was already accepting conninfo strings as the first parameter in
      \connect, but the way it worked wasn't sane; some of the other
      parameters would get the previous connection's values, causing it to
      connect to a completely unexpected server or, more likely, not finding
      any server at all because of completely wrong combinations of
      parameters.
      
      Fix by explicitely checking for a conninfo-looking parameter in the
      dbname position; if one is found, use its complete specification rather
      than mix with the other arguments.  Also, change tab-completion to not
      try to complete conninfo/URI-looking "dbnames" and document that
      conninfos are accepted as first argument.
      
      There was a weak consensus to backpatch this, because while the behavior
      of using the dbname as a conninfo is nowhere documented for \connect, it
      is reasonable to expect that it works because it does work in many other
      contexts.  Therefore this is backpatched all the way back to 9.0.
      
      Author: David Fetter, Andrew Dunstan.  Some editorialization by me
      (probably earning a Gierth's "Sloppy" badge in the process.)
      Reviewers: Andrew Gierth, Erik Rijkers, Pavel Stěhule, Stephen Frost,
      Robert Haas, Andrew Dunstan.
      e146ca68
    • Robert Haas's avatar
      Fix another bug in DSM_CREATE_NULL_IF_MAXSEGMENTS handling. · f272098e
      Robert Haas authored
      Amit Kapila
      f272098e
    • Robert Haas's avatar
      Revert "psql: fix \connect with URIs and conninfo strings" · 4cd639ba
      Robert Haas authored
      This reverts commit fcef1617, about
      which both the buildfarm and my local machine are very unhappy.
      4cd639ba
    • Simon Riggs's avatar
      Correct comment to use RS_EPHEMERAL · 7dae3cf6
      Simon Riggs authored
      7dae3cf6
  2. 01 Apr, 2015 5 commits
    • Alvaro Herrera's avatar
      psql: fix \connect with URIs and conninfo strings · fcef1617
      Alvaro Herrera authored
      psql was already accepting conninfo strings as the first parameter in
      \connect, but the way it worked wasn't sane; some of the other
      parameters would get the previous connection's values, causing it to
      connect to a completely unexpected server or, more likely, not finding
      any server at all because of completely wrong combinations of
      parameters.
      
      Fix by explicitely checking for a conninfo-looking parameter in the
      dbname position; if one is found, use its complete specification rather
      than mix with the other arguments.  Also, change tab-completion to not
      try to complete conninfo/URI-looking "dbnames" and document that
      conninfos are accepted as first argument.
      
      There was a weak consensus to backpatch this, because while the behavior
      of using the dbname as a conninfo is nowhere documented for \connect, it
      is reasonable to expect that it works because it does work in many other
      contexts.  Therefore this is backpatched all the way back to 9.0.
      
      To implement this, routines previously private to libpq have been
      duplicated so that psql can decide what looks like a conninfo/URI
      string.  In back branches, just duplicate the same code all the way back
      to 9.2, where URIs where introduced; 9.0 and 9.1 have a simpler version.
      In master, the routines are moved to src/common and renamed.
      
      Author: David Fetter, Andrew Dunstan.  Some editorialization by me
      (probably earning a Gierth's "Sloppy" badge in the process.)
      Reviewers: Andrew Gierth, Erik Rijkers, Pavel Stěhule, Stephen Frost,
      Robert Haas, Andrew Dunstan.
      fcef1617
    • Bruce Momjian's avatar
      pg_upgrade: call 'postgres' binary to get data directory location · a0efc714
      Bruce Momjian authored
      This matches the binary 'pg_ctl' calls.  Previously we called the
      'postmaster'.
      
      Report by Christoph Berg
      a0efc714
    • Tom Lane's avatar
      Provide real selectivity estimators for inet/cidr operators. · 89840d7d
      Tom Lane authored
      This patch fills in the formerly-stub networksel() and networkjoinsel()
      estimation functions.  Those are used for << <<= >> >>= and && operators
      on inet/cidr types.  The estimation is not perfect, certainly, because
      we rely on the existing statistics collected for the inet btree operators.
      But it's a long way better than nothing, and it's not clear that asking
      ANALYZE to collect separate stats for these operators would be a win.
      
      Emre Hasegeli, with reviews from Dilip Kumar and Heikki Linnakangas,
      and some further hacking by me
      89840d7d
    • Heikki Linnakangas's avatar
      Move inet/cidr GiST opclass functions to correct place in header file. · f770870d
      Heikki Linnakangas authored
      They were accidentally placed under the GIN heading.
      
      Andreas Karlsson
      f770870d
    • Tom Lane's avatar
      Fix incorrect markup in documentation of window frame clauses. · f6caf5ac
      Tom Lane authored
      You're required to write either RANGE or ROWS to start a frame clause,
      but the documentation incorrectly implied this is optional.  Noted by
      David Johnston.
      f6caf5ac
  3. 31 Mar, 2015 6 commits
  4. 30 Mar, 2015 9 commits
    • Andrew Dunstan's avatar
      Run pg_upgrade and pg_resetxlog with restricted token on Windows · fa1e5afa
      Andrew Dunstan authored
      As with initdb these programs need to run with a restricted token, and
      if they don't pg_upgrade will fail when run as a user with Adminstrator
      privileges.
      
      Backpatch to all live branches. On the development branch the code is
      reorganized so that the restricted token code is now in a single
      location. On the stable bramches a less invasive change is made by
      simply copying the relevant code to pg_upgrade.c and pg_resetxlog.c.
      
      Patches and bug report from Muhammad Asif Naeem, reviewed by Michael
      Paquier, slightly edited by me.
      fa1e5afa
    • Tom Lane's avatar
      Fix bogus concurrent use of _hash_getnewbuf() in bucket split code. · ed9cc2b5
      Tom Lane authored
      _hash_splitbucket() obtained the base page of the new bucket by calling
      _hash_getnewbuf(), but it held no exclusive lock that would prevent some
      other process from calling _hash_getnewbuf() at the same time.  This is
      contrary to _hash_getnewbuf()'s API spec and could in fact cause failures.
      In practice, we must only call that function while holding write lock on
      the hash index's metapage.
      
      An additional problem was that we'd already modified the metapage's bucket
      mapping data, meaning that failure to extend the index would leave us with
      a corrupt index.
      
      Fix both issues by moving the _hash_getnewbuf() call to just before we
      modify the metapage in _hash_expandtable().
      
      Unfortunately there's still a large problem here, which is that we could
      also incur ENOSPC while trying to get an overflow page for the new bucket.
      That would leave the index corrupt in a more subtle way, namely that some
      index tuples that should be in the new bucket might still be in the old
      one.  Fixing that seems substantially more difficult; even preallocating as
      many pages as we could possibly need wouldn't entirely guarantee that the
      bucket split would complete successfully.  So for today let's just deal
      with the base case.
      
      Per report from Antonin Houska.  Back-patch to all active branches.
      ed9cc2b5
    • Alvaro Herrera's avatar
      Change array_offset to return subscripts, not offsets · 97690ea6
      Alvaro Herrera authored
      ... and rename it and its sibling array_offsets to array_position and
      array_positions, to account for the changed behavior.
      
      Having the functions return subscripts better matches existing practice,
      and is better suited to using the result value as a subscript into the
      array directly.  For one-based arrays, the new definition is identical
      to what was originally committed.
      
      (We use the term "subscript" in the documentation, which is what we use
      whenever we talk about arrays; but the functions themselves are named
      using the word "position" to match the standard-defined POSITION()
      functions.)
      
      Author: Pavel Stěhule
      Behavioral problem noted by Dean Rasheed.
      97690ea6
    • Alvaro Herrera's avatar
      Fix lost persistence setting during REINDEX INDEX · 08536301
      Alvaro Herrera authored
      ReindexIndex() trusts a parser-built RangeVar with the persistence to
      use for the new copy of the index; but the parser naturally does not
      know what's the persistence of the original index.  To find out the
      correct persistence, grab it from relcache.
      
      This bug was introduced by commit 85b506bb, and therefore no
      backpatch is necessary.
      
      Bug reported by Thom Brown, analysis and patch by Michael Paquier; test
      case provided by Fabrízio de Royes Mello.
      08536301
    • Tom Lane's avatar
      Be more careful about printing constants in ruleutils.c. · 542320c2
      Tom Lane authored
      The previous coding in get_const_expr() tried to avoid quoting integer,
      float, and numeric literals if at all possible.  While that looks nice,
      it means that dumped expressions might re-parse to something that's
      semantically equivalent but not the exact same parsetree; for example
      a FLOAT8 constant would re-parse as a NUMERIC constant with a cast to
      FLOAT8.  Though the result would be the same after constant-folding,
      this is problematic in certain contexts.  In particular, Jeff Davis
      pointed out that this could cause unexpected failures in ALTER INHERIT
      operations because of child tables having not-exactly-equivalent CHECK
      expressions.  Therefore, favor correctness over legibility and dump
      such constants in quotes except in the limited cases where they'll
      be interpreted as the same type even without any casting.
      
      This results in assorted small changes in the regression test outputs,
      and will affect display of user-defined views and rules similarly.
      The odds of that causing problems in the field seem non-negligible;
      given the lack of previous complaints, it seems best not to change
      this in the back branches.
      542320c2
    • Tom Lane's avatar
      Fix rare core dump in BackendIdGetTransactionIds(). · 701dcc98
      Tom Lane authored
      BackendIdGetTransactionIds() neglected the possibility that the PROC
      pointer in a ProcState array entry is null.  In current usage, this could
      only crash if the other backend had exited since pgstat_read_current_status
      saw it as active, which is a pretty narrow window.  But it's reachable in
      the field, per bug #12918 from Vladimir Borodin.
      
      Back-patch to 9.4 where the faulty code was introduced.
      701dcc98
    • Heikki Linnakangas's avatar
      Add index-only scan support to range type GiST opclass. · 0633a60f
      Heikki Linnakangas authored
      Andreas Karlsson
      0633a60f
    • Tom Lane's avatar
      Clean up all the cruft after a pg_rewind test run. · 1c41e2a9
      Tom Lane authored
      regress_log temp directory was properly .gitignore'd, which may explain
      why it got left out of the "make clean" action.
      1c41e2a9
    • Tom Lane's avatar
      Fix multiple bugs and infelicities in pg_rewind. · c67f366f
      Tom Lane authored
      Bugs all spotted by Coverity, including wrong realloc() size request
      and memory leaks.  Cosmetic improvements by me.
      
      The usage of the global variable "filemap" here is still pretty awful,
      but at least I got rid of the gratuitous aliasing in several routines
      (which was helping to annoy Coverity, as well as being a bug risk).
      c67f366f
  5. 29 Mar, 2015 4 commits
    • Tom Lane's avatar
      Add vacuum_delay_point call in compute_index_stats's per-sample-row loop. · e4cbfd67
      Tom Lane authored
      Slow functions in index expressions might cause this loop to take long
      enough to make it worth being cancellable.  Probably it would be enough
      to call CHECK_FOR_INTERRUPTS here, but for consistency with other
      per-sample-row loops in this file, let's use vacuum_delay_point.
      
      Report and patch by Jeff Janes.  Back-patch to all supported branches.
      e4cbfd67
    • Tom Lane's avatar
      Make ginbuild's funcCtx be independent of its tmpCtx. · 1601830e
      Tom Lane authored
      Previously the funcCtx was a child of the tmpCtx, but that was broken
      by commit eaa5808e, which made
      MemoryContextReset() delete, not reset, child contexts.  The behavior of
      having a tmpCtx reset also clear the other context seems rather dubious
      anyway, so let's just disentangle them.  Per report from Erik Rijkers.
      
      In passing, fix badly-inaccurate comments about these contexts.
      1601830e
    • Tom Lane's avatar
      Remove a couple other vestigial yylex() declarations. · 9a8e2331
      Tom Lane authored
      These were workarounds for a long-gone flex bug; all supported versions
      of flex emit an extern declaration as expected.
      9a8e2331
    • Tom Lane's avatar
      Minor code cleanups in pgbench expression support. · e9dd03c0
      Tom Lane authored
      Get rid of unnecessary expr_yylex declaration (we haven't supported
      flex 2.5.4 in a long time, and even if we still did, the declaration in
      pgbench.h makes this one unnecessary and inappropriate).  Fix copyright
      dates, improve some layout choices, etc.
      e9dd03c0
  6. 28 Mar, 2015 4 commits
    • Tom Lane's avatar
      Better fix for misuse of Float8GetDatumFast(). · 2c33e0fb
      Tom Lane authored
      We can use that macro as long as we put the value into a local variable.
      Commit 735cd612 was not wrong on its own terms, but I think this way
      looks nicer, and it should save a few cycles on 32-bit machines.
      2c33e0fb
    • Andrew Dunstan's avatar
      Add a pager_min_lines setting to psql · 7655f4cc
      Andrew Dunstan authored
      If set, the pager will not be used unless this many lines are to be
      displayed, even if that is more than the screen depth. Default is zero,
      meaning it's disabled.
      
      There is probably more work to be done in giving the user control over
      when the pager is used, particularly when wide output forces use of the
      pager regardless of how many lines there are, but this is a start.
      7655f4cc
    • Andrew Dunstan's avatar
      Use standard librart sqrt function in pg_stat_statements · cfe12763
      Andrew Dunstan authored
      The stddev calculation included a faster but unportable sqrt function.
      This is not worth the extra effort, and won't work everywhere. If the
      standard library function is good enough for the SQL function it
      should be good enough here too.
      cfe12763
    • Heikki Linnakangas's avatar
      Add index-only scan support to inet GiST opclass. · 3a20b0e7
      Heikki Linnakangas authored
      Andreas Karlsson
      3a20b0e7
  7. 27 Mar, 2015 1 commit