1. 11 Sep, 2014 10 commits
    • Bruce Momjian's avatar
      improve hash creation warning message · 849462a9
      Bruce Momjian authored
      This improves the wording of commit 84aa8ba1.
      
      Report by Kevin Grittner
      849462a9
    • Robert Haas's avatar
      Add missing volatile qualifier. · 68e66923
      Robert Haas authored
      Yet another silly mistake in 0709b7ee,
      again found by buildfarm member castoroides.
      68e66923
    • Heikki Linnakangas's avatar
      Fix Windows build. · 01a2bfd1
      Heikki Linnakangas authored
      I renamed a variable, but missed an #ifdef WIN32 block.
      01a2bfd1
    • Heikki Linnakangas's avatar
      Silence compiler warning on Windows. · 0ed41529
      Heikki Linnakangas authored
      David Rowley.
      0ed41529
    • Heikki Linnakangas's avatar
      Simplify calculation of Poisson distributed delays in pgbench --rate mode. · 54a2d5b3
      Heikki Linnakangas authored
      The previous coding first generated a uniform random value between 0.0 and
      1.0, then converted that to an integer between 1 and 10000, and divided that
      again by 10000. Those conversions are unnecessary; we can use the double
      value that pg_erand48() returns directly. While we're at it, put the logic
      into a helper function, getPoissonRand().
      
      The largest delay generated by the old coding was about 9.2 times the
      average, because of the way the uniformly distributed value used for the
      calculation was truncated to 1/10000 granularity. The new coding doesn't
      have such clamping. With my laptop's DBL_MIN value, the maximum delay with
      the new coding is about 700x the average. That seems acceptable - any
      reasonable pgbench session should last long enough to average that out.
      
      Backpatch to 9.4.
      54a2d5b3
    • Heikki Linnakangas's avatar
      Change the way latency is calculated with pgbench --rate option. · 02e3bcc6
      Heikki Linnakangas authored
      The reported latency values now include the "schedule lag" time, that is,
      the time between the transaction's scheduled start time and the time it
      actually started. This relates better to a model where requests arrive at a
      certain rate, and we are interested in the response time to the end user or
      application, rather than the response time of the database itself.
      
      Also, when --rate is used, include the schedule lag time in the log output.
      
      The --rate option is new in 9.4, so backpatch to 9.4. It seems better to
      make this change in 9.4, while we're still in the beta period, than ship a
      9.4 version that calculates the values differently than 9.5.
      02e3bcc6
    • Peter Eisentraut's avatar
      Handle old versions of Test::More · 75717ce8
      Peter Eisentraut authored
      Really old versions of Test::More don't support subplans, so skip the
      tests in that case.
      75717ce8
    • Peter Eisentraut's avatar
      Support older versions of "prove" · 8632ba6d
      Peter Eisentraut authored
      Apparently, older versions of "prove" (couldn't identify the exact
      version from the changelog) don't look into the t/ directory for tests
      by default, so specify it explicitly.
      8632ba6d
    • Bruce Momjian's avatar
      doc: improve configuration management section · 4c4654af
      Bruce Momjian authored
      Patch by David Johnston
      
      Backpatch through 9.4
      4c4654af
    • Bruce Momjian's avatar
      pg_upgrade: compare control version, not catalog version · acc8e416
      Bruce Momjian authored
      Also modify test for the possibility the large object value might not
      exist in the old cluster.
      
      Fix for commit e1598a15
      acc8e416
  2. 10 Sep, 2014 7 commits
  3. 09 Sep, 2014 8 commits
    • Tom Lane's avatar
      Preserve AND/OR flatness while extracting restriction OR clauses. · 1b4cc493
      Tom Lane authored
      The code I added in commit f343a880 was
      careless about preserving AND/OR flatness: it could create a structure with
      an OR node directly underneath another one.  That breaks an assumption
      that's fairly important for planning efficiency, not to mention triggering
      various Asserts (as reported by Benjamin Smith).  Add a trifle more logic
      to handle the case properly.
      1b4cc493
    • Andres Freund's avatar
      Add new psql help topics, accessible to both --help and \?. · 07c8651d
      Andres Freund authored
      Add --help=<topic> for the commandline, and \? <topic> as a backslash
      command, to show more help than the invocations without parameters
      do. "commands", "variables" and "options" currently exist as help
      topics describing, respectively, backslash commands, psql variables,
      and commandline switches. Without parameters the help commands show
      their previous topic.
      
      Some further wordsmithing or extending of the added help content might
      be needed; but there seems little benefit delaying the overall feature
      further.
      
      Author: Pavel Stehule, editorialized by many
      
      Reviewed-By: Andres Freund, Petr Jelinek, Fujii Masao, MauMau, Abhijit
          Menon-Sen and Erik Rijkers.
      
      Discussion: CAFj8pRDVGuC-nXBfe2CK8vpyzd2Dsr9GVpbrATAnZO=2YQ0s2Q@mail.gmail.com,
          CAFj8pRA54AbTv2RXDTRxiAd8hy8wxmoVLqhJDRCwEnhdd7OUkw@mail.gmail.com
      07c8651d
    • Robert Haas's avatar
      Change the spinlock primitives to function as compiler barriers. · 0709b7ee
      Robert Haas authored
      Previously, they functioned as barriers against CPU reordering but not
      compiler reordering, an odd API that required extensive use of volatile
      everywhere that spinlocks are used.  That's error-prone and has negative
      implications for performance, so change it.
      
      In theory, this makes it safe to remove many of the uses of volatile
      that we currently have in our code base, but we may find that there are
      some bugs in this effort when we do.  In the long run, though, this
      should make for much more maintainable code.
      
      Patch by me.  Review by Andres Freund.
      0709b7ee
    • Tom Lane's avatar
      Add width_bucket(anyelement, anyarray). · e80252d4
      Tom Lane authored
      This provides a convenient method of classifying input values into buckets
      that are not necessarily equal-width.  It works on any sortable data type.
      
      The choice of function name is a bit debatable, perhaps, but showing that
      there's a relationship to the SQL standard's width_bucket() function seems
      more attractive than the other proposals.
      
      Petr Jelinek, reviewed by Pavel Stehule
      e80252d4
    • Peter Eisentraut's avatar
      doc: Reflect renaming of Mac OS X to OS X · 220bb39d
      Peter Eisentraut authored
      bug #10528
      220bb39d
    • Peter Eisentraut's avatar
      Allow empty content in xml type · 57b1085d
      Peter Eisentraut authored
      The xml type previously rejected "content" that is empty or consists
      only of spaces.  But the SQL/XML standard allows that, so change that.
      The accepted values for XML "documents" are not changed.
      Reviewed-by: default avatarAli Akbar <the.apaan@gmail.com>
      57b1085d
    • Stephen Frost's avatar
      Move ALTER ... ALL IN to ProcessUtilitySlow · f0051c1a
      Stephen Frost authored
      Now that ALTER TABLE .. ALL IN TABLESPACE has replaced the previous
      ALTER TABLESPACE approach, it makes sense to move the calls down in
      to ProcessUtilitySlow where the rest of ALTER TABLE is handled.
      
      This also means that event triggers will support ALTER TABLE .. ALL
      (which was the impetus for the original change, though it has other
      good qualities also).
      
      Álvaro Herrera
      
      Back-patch to 9.4 as the original rework was.
      f0051c1a
    • Andres Freund's avatar
      Fix typo in solaris spinlock fix. · 50881036
      Andres Freund authored
      07968dbf missed part of the S_UNLOCK define when building for
      sparcv8+.
      50881036
  4. 08 Sep, 2014 3 commits
    • Andres Freund's avatar
      Fix spinlock implementation for some !solaris sparc platforms. · 07968dbf
      Andres Freund authored
      Some Sparc CPUs can be run in various coherence models, ranging from
      RMO (relaxed) over PSO (partial) to TSO (total). Solaris has always
      run CPUs in TSO mode while in userland, but linux didn't use to and
      the various *BSDs still don't. Unfortunately the sparc TAS/S_UNLOCK
      were only correct under TSO. Fix that by adding the necessary memory
      barrier instructions. On sparcv8+, which should be all relevant CPUs,
      these are treated as NOPs if the current consistency model doesn't
      require the barriers.
      
      Discussion: 20140630222854.GW26930@awork2.anarazel.de
      
      Will be backpatched to all released branches once a few buildfarm
      cycles haven't shown up problems. As I've no access to sparc, this is
      blindly written.
      07968dbf
    • Tom Lane's avatar
      Fix psql \s to work with recent libedit, and add pager support. · 750c5ee6
      Tom Lane authored
      psql's \s (print command history) doesn't work at all with recent libedit
      versions when printing to the terminal, because libedit tries to do an
      fchmod() on the target file which will fail if the target is /dev/tty.
      (We'd already noted this in the context of the target being /dev/null.)
      Even before that, it didn't work pleasantly, because libedit likes to
      encode the command history file (to ensure successful reloading), which
      renders it nigh unreadable, not to mention significantly different-looking
      depending on exactly which libedit version you have.  So let's forget using
      write_history() for this purpose, and instead print the data ourselves,
      using logic similar to that used to iterate over the history for newline
      encoding/decoding purposes.
      
      While we're at it, insert the ability to use the pager when \s is printing
      to the terminal.  This has been an acknowledged shortcoming of \s for many
      years, so while you could argue it's not exactly a back-patchable bug fix
      it still seems like a good improvement.  Anyone who's seriously annoyed
      at this can use "\s /dev/tty" or local equivalent to get the old behavior.
      
      Experimentation with this showed that the history iteration logic was
      actually rather broken when used with libedit.  It turns out that with
      libedit you have to use previous_history() not next_history() to advance
      to more recent history entries.  The easiest and most robust fix for this
      seems to be to make a run-time test to verify which function to call.
      We had not noticed this because libedit doesn't really need the newline
      encoding logic: its own encoding ensures that command entries containing
      newlines are reloaded correctly (unlike libreadline).  So the effective
      behavior with recent libedits was that only the oldest history entry got
      newline-encoded or newline-decoded.  However, because of yet other bugs in
      history_set_pos(), some old versions of libedit allowed the existing loop
      logic to reach entries besides the oldest, which means there may be libedit
      ~/.psql_history files out there containing encoded newlines in more than
      just the oldest entry.  To ensure we can reload such files, it seems
      appropriate to back-patch this fix, even though that will result in some
      incompatibility with older psql versions (ie, multiline history entries
      written by a psql with this fix will look corrupted to a psql without it,
      if its libedit is reasonably up to date).
      
      Stepan Rutz and Tom Lane
      750c5ee6
    • Tom Lane's avatar
      Documentation fix: sum(float4) returns float4, not float8. · 0640c1bf
      Tom Lane authored
      The old claim is from my commit d06ebdb8 of
      2000-07-17, but it seems to have been a plain old thinko; sum(float4) has
      been distinct from sum(float8) since Berkeley days.  Noted by KaiGai Kohei.
      
      While at it, mention the existence of sum(money), which is also of
      embarrassingly ancient vintage.
      0640c1bf
  5. 07 Sep, 2014 1 commit
  6. 06 Sep, 2014 2 commits
  7. 05 Sep, 2014 6 commits
  8. 04 Sep, 2014 3 commits