1. 12 Sep, 2014 8 commits
    • Stephen Frost's avatar
      Add unicode_{column|header|border}_style to psql · a2dabf0e
      Stephen Frost authored
      With the unicode linestyle, this adds support to control if the
      column, header, or border style should be single or double line
      unicode characters.  The default remains 'single'.
      
      In passing, clean up the border documentation and address some
      minor formatting/spelling issues.
      
      Pavel Stehule, with some additional changes by me.
      a2dabf0e
    • Stephen Frost's avatar
      Handle border = 3 in expanded mode · 82962838
      Stephen Frost authored
      In psql, expanded mode was not being displayed correctly when using
      the normal ascii or unicode linestyles and border set to '3'.  Now,
      per the documentation, border '3' is really only sensible for HTML
      and LaTeX formats, however, that's no excuse for ascii/unicode to
      break in that case, and provisions had been made for psql to cleanly
      handle this case (and it did, in non-expanded mode).
      
      This was broken when ascii/unicode was initially added a good five
      years ago because print_aligned_vertical_line wasn't passed in the
      border setting being used by print_aligned_vertical but instead was
      given the whole printTableContent.  There really isn't a good reason
      for vertical_line to have the entire printTableContent structure, so
      just pass in the printTextFormat and border setting (similar to how
      this is handled in horizontal_line).
      
      Pointed out by Pavel Stehule, fix by me.
      
      Back-patch to all currently-supported versions.
      82962838
    • Heikki Linnakangas's avatar
      Support Subject Alternative Names in SSL server certificates. · acd08d76
      Heikki Linnakangas authored
      This patch makes libpq check the server's hostname against DNS names listed
      in the X509 subjectAltName extension field in the server certificate. This
      allows the same certificate to be used for multiple domain names. If there
      are no SANs in the certificate, the Common Name field is used, like before
      this patch. If both are given, the Common Name is ignored. That is a bit
      surprising, but that's the behavior mandated by the relevant RFCs, and it's
      also what the common web browsers do.
      
      This also adds a libpq_ngettext helper macro to allow plural messages to be
      translated in libpq. Apparently this happened to be the first plural message
      in libpq, so it was not needed before.
      
      Alexey Klyukin, with some kibitzing by me.
      acd08d76
    • Heikki Linnakangas's avatar
      Fix GIN data page split ratio calculation. · 774a78ff
      Heikki Linnakangas authored
      The code that tried to split a page at 75/25 ratio, when appending to the
      end of an index, was buggy in two ways. First, there was a silly typo that
      caused it to just fill the left page as full as possible. But the logic as
      it was intended wasn't correct either, and would actually have given a ratio
      closer to 60/40 than 75/25.
      
      Gaetano Mendola spotted the typo. Backpatch to 9.4, where this code was added.
      774a78ff
    • Tom Lane's avatar
      Fix power_var_int() for large integer exponents. · 1d352325
      Tom Lane authored
      The code for raising a NUMERIC value to an integer power wasn't very
      careful about large powers.  It got an outright wrong answer for an
      exponent of INT_MIN, due to failure to consider overflow of the Abs(exp)
      operation; which is fixable by using an unsigned rather than signed
      exponent value after that point.  Also, even though the number of
      iterations of the power-computation loop is pretty limited, it's easy for
      the repeated squarings to result in ridiculously enormous intermediate
      values, which can take unreasonable amounts of time/memory to process,
      or even overflow the internal "weight" field and so produce a wrong answer.
      We can forestall misbehaviors of that sort by bailing out as soon as the
      weight value exceeds what will fit in int16, since then the final answer
      must overflow (if exp > 0) or underflow (if exp < 0) the packed numeric
      format.
      
      Per off-list report from Pavel Stehule.  Back-patch to all supported
      branches.
      1d352325
    • Tom Lane's avatar
      Fix JSON regression tests. · e3ec0728
      Tom Lane authored
      Commit 95d737ff neglected to update
      expected/json_1.out.  Per buildfarm.
      e3ec0728
    • Peter Eisentraut's avatar
      Fix vacuumdb --analyze-in-stages --all order · da24813c
      Peter Eisentraut authored
      When running vacuumdb --analyze-in-stages --all, it needs to run the
      first stage across all databases before the second one, instead of
      running all stages in a database before processing the next one.
      
      Also respect the --quiet option with --analyze-in-stages.
      da24813c
    • Stephen Frost's avatar
      Add 'ignore_nulls' option to row_to_json · 95d737ff
      Stephen Frost authored
      Provide an option to skip NULL values in a row when generating a JSON
      object from that row with row_to_json.  This can reduce the size of the
      JSON object in cases where columns are NULL without really reducing the
      information in the JSON object.
      
      This also makes row_to_json into a single function with default values,
      rather than having multiple functions.  In passing, change array_to_json
      to also be a single function with default values (we don't add an
      'ignore_nulls' option yet- it's not clear that there is a sensible
      use-case there, and it hasn't been asked for in any case).
      
      Pavel Stehule
      95d737ff
  2. 11 Sep, 2014 12 commits
  3. 10 Sep, 2014 7 commits
  4. 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
  5. 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
  6. 07 Sep, 2014 1 commit
  7. 06 Sep, 2014 1 commit