1. 02 Apr, 2015 1 commit
  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 4 commits
  8. 26 Mar, 2015 7 commits
    • Heikki Linnakangas's avatar
      Minor refactoring of btree_gist code. · 8816af65
      Heikki Linnakangas authored
      The gbt_var_key_copy function was doing two different things depending on
      the boolean argument. Seems cleaner to have two separate functions.
      
      Remove unused argument from gbt_num_compress.
      8816af65
    • Heikki Linnakangas's avatar
      Fix GiST index-only scans for opclasses with different storage type. · 55b59eda
      Heikki Linnakangas authored
      We cannot use the index's tuple descriptor directly to describe the index
      tuples returned in an index-only scan. That's because the index might use
      a different datatype for the values stored on disk than the type originally
      indexed. As long as they were both pass-by-ref, it worked, but will not work
      for pass-by-value types of different sizes. I noticed this as a crash when I
      started hacking a patch to add fetch methods to btree_gist.
      55b59eda
    • Tom Lane's avatar
      Tweak __attribute__-wrapping macros for better pgindent results. · 785941cd
      Tom Lane authored
      This improves on commit bbfd7eda by
      making two simple changes:
      
      * pg_attribute_noreturn now takes parentheses, ie pg_attribute_noreturn().
      Likewise pg_attribute_unused(), pg_attribute_packed().  This reduces
      pgindent's tendency to misformat declarations involving them.
      
      * attributes are now always attached to function declarations, not
      definitions.  Previously some places were taking creative shortcuts,
      which were not merely candidates for bad misformatting by pgindent
      but often were outright wrong anyway.  (It does little good to put a
      noreturn annotation where callers can't see it.)  In any case, if
      we would like to believe that these macros can be used with non-gcc
      compilers, we should avoid gratuitous variance in usage patterns.
      
      I also went through and manually improved the formatting of a lot of
      declarations, and got rid of excessively repetitive (and now obsolete
      anyway) comments informing the reader what pg_attribute_printf is for.
      785941cd
    • Heikki Linnakangas's avatar
      Add support for index-only scans in GiST. · d04c8ed9
      Heikki Linnakangas authored
      This adds a new GiST opclass method, 'fetch', which is used to reconstruct
      the original Datum from the value stored in the index. Also, the 'canreturn'
      index AM interface function gains a new 'attno' argument. That makes it
      possible to use index-only scans on a multi-column index where some of the
      opclasses support index-only scans but some do not.
      
      This patch adds support in the box and point opclasses. Other opclasses
      can added later as follow-on patches (btree_gist would be particularly
      interesting).
      
      Anastasia Lubennikova, with additional fixes and modifications by me.
      d04c8ed9
    • Heikki Linnakangas's avatar
      Minor cleanup of GiST code, for readability. · 8fa393a6
      Heikki Linnakangas authored
      Remove the gistcentryinit function, inlining the relevant part of it into
      the only caller.
      8fa393a6
    • Tom Lane's avatar
      Suppress some unused-variable complaints in new LOCK_DEBUG code. · bed756a8
      Tom Lane authored
      Jeff Janes
      bed756a8
    • Tatsuo Ishii's avatar
      Make SyncRepWakeQueue to a static function · 656ea810
      Tatsuo Ishii authored
      It is only used in src/backend/replication/syncrep.c.
      
      Back-patch to all supported branches except 9.1 which declares the
      function as static.
      656ea810