1. 08 May, 2016 5 commits
  2. 07 May, 2016 8 commits
    • Tom Lane's avatar
      4768cc45
    • Tom Lane's avatar
      In new pg_dump TAP tests, remove trailing "$" from regexps using /m. · b8180884
      Tom Lane authored
      It emerges that some Perl versions before 5.8.9 have a bug with regexps
      that use the /m flag and contain "$".  This is the reason why jacana
      is still failing on HEAD, and I was able to duplicate the failure on
      prairiedog's host.  There's no real need for "$" in these patterns,
      since they are already matching through the statement-terminating
      semicolons (or matching an explicit \n in some cases).  So just
      remove it.
      
      Note: the reason jacana hasn't actually reported any failures in the
      last little while is that the way the pg_dump TAP tests are set up, any
      failure of this sort results in echoing the entire pg_dump dump output
      to stderr.  Since there were about a hundred such failures, that resulted
      in a 30MB log file which choked the buildfarm upload script.  There is
      room for improvement here :-(.
      
      Per off-list discussion with Andrew and Stephen.
      b8180884
    • Tom Lane's avatar
      Docs: improve warnings about nextval() not producing gapless sequences. · 691d99de
      Tom Lane authored
      In the documentation for nextval(), point out explicitly that INSERT ...
      ON CONFLICT will call nextval() if needed for the insertion case, whether
      or not it ends up following the ON CONFLICT path.  This seems to be a
      matter of some confusion, cf bug #14126, so let's be clear about it.
      
      Also mention the issue in the CREATE SEQUENCE reference page, since that
      is another place where people might expect such things to be covered.
      
      Minor wording improvements nearby, as well.
      
      Back-patch to 9.5 where ON CONFLICT was introduced.
      691d99de
    • Tom Lane's avatar
      Update back-branch release notes for the last few commits. · 7dc1d359
      Tom Lane authored
      OpenSSL error queue fix no longer needs to be documented under 9.6.
      7dc1d359
    • Tom Lane's avatar
      Clean up after pg_dump test runs. · 74a73b17
      Tom Lane authored
      The tmp_check directory needs to be removed by "make clean",
      and also ignored by .gitignore.
      74a73b17
    • Tom Lane's avatar
      Fix pg_upgrade to not fail when new-cluster TOAST rules differ from old. · 1a2c17f8
      Tom Lane authored
      This patch essentially reverts commit 4c6780fd, in favor of a much
      simpler solution for the case where the new cluster would choose to create
      a TOAST table but the old cluster doesn't have one: just don't create a
      TOAST table.
      
      The existing code failed in at least two different ways if the situation
      arose: (1) ALTER TABLE RESET didn't grab an exclusive lock, so that the
      lock sanity check in create_toast_table failed; (2) pg_upgrade did not
      provide a pg_type OID for the new toast table, so that the crosscheck in
      TypeCreate failed.  While both these problems were introduced by later
      patches, they show that the hack being used to cause TOAST table creation
      is overwhelmingly fragile (and untested).  I also note that before the
      TypeCreate crosscheck was added, the code would have resulted in assigning
      an indeterminate pg_type OID to the toast table, possibly causing a later
      OID conflict in that catalog; so that it didn't really work even when
      committed.
      
      If we simply don't create a TOAST table, there will only be a problem if
      the code tries to store a tuple that's wider than a page, and field
      compression isn't sufficient to get it under a page.  Given that the TOAST
      creation threshold is intended to be about a quarter of a page, it's very
      hard to believe that cross-version differences in the do-we-need-a-toast-
      table heuristic could result in an observable problem.  So let's just
      follow the old version's conclusion about whether a TOAST table is needed.
      
      (If we ever do change needs_toast_table() so much that this conclusion
      doesn't apply, we can devise a solution at that time, and hopefully do
      it in a less klugy way than 4c6780fd did.)
      
      Back-patch to 9.3, like the previous patch.
      
      Discussion: <8110.1462291671@sss.pgh.pa.us>
      1a2c17f8
    • Stephen Frost's avatar
      Disable BLOB test in pg_dump TAP tests · 0f97c722
      Stephen Frost authored
      Buildfarm member jacana appears to have an issue with running this
      test.  It's not entirely clear to me why, but rather than try to
      fight with it, just disable it for now.
      
      None of the other tests try to write out from psql directly as
      this test does, so it seems likely that the rest of the tests will
      be fine (as they have been on numerous other systems).
      0f97c722
    • Kevin Grittner's avatar
      Mitigate "snapshot too old" performance regression on NUMA · 7e3da1c4
      Kevin Grittner authored
      Limit maintenance of time to xid mapping to once per minute.  At
      least in the tested case this brings performance within 5% of when
      the feature is off, compared to several times slower without this
      patch.
      
      While there, fix comments and whitespace.
      
      Ants Aasma, with cosmetic adjustments suggested by Andres Freund
      Reviewed by Kevin Grittner and Andres Freund
      7e3da1c4
  3. 06 May, 2016 26 commits
    • Tom Lane's avatar
      First-draft release notes for 9.5.3. · eb7de00a
      Tom Lane authored
      As usual, the release notes for other branches will be made by cutting
      these down, but put them up for community review first.
      eb7de00a
    • Tom Lane's avatar
      Docs: fix alphabetization of table entries. · bbbae5ea
      Tom Lane authored
      Fabien Coelho
      bbbae5ea
    • Tom Lane's avatar
      Docs: minor copy-editing for GSSAPI/SSPI authentication docs. · 36db18ea
      Tom Lane authored
      Describe compat_realm = 0 as "disabled" not "enabled", per discussion
      with Christian Ullrich.  I failed to resist the temptation to do some
      other minor copy-editing in the same area.
      36db18ea
    • Stephen Frost's avatar
      Add test_pg_dump to @contrib_excludes · 6e243c43
      Stephen Frost authored
      The test_pg_dump extension doesn't have a C component, so we need
      to exclude it from the MSVC build system trying to figure out how
      to build it.
      
      Also add a "MODULES" line to the Makefile, as test_extensions has.
      Might not be necessary, but seems good to keep things consistent.
      
      Lastly, remove the 'installcheck' line from test_pg_dump, as that
      was causing redefinition errors, at least on my box.  This also
      makes test_pg_dump consistent with how commit_ts is set up.
      6e243c43
    • Tom Lane's avatar
      More small 9.6 release note improvements. · 76ef266a
      Tom Lane authored
      Corrections per Jeff Janes, Christian Ullrich, and Daniel Vérité.
      76ef266a
    • Stephen Frost's avatar
      Correct query in pg_dumpall:dumpRoles · c778e27e
      Stephen Frost authored
      We need to use a new branch due to the 9.5 addition of bypassrls
      when adding in the clause to exclude pg_* roles from being dumped
      by pg_dumpall.
      
      Pointed out by Noah, patch by me.
      c778e27e
    • Stephen Frost's avatar
      Remove MODULES_big from test_pg_dump · eccfeeb6
      Stephen Frost authored
      The Makefile for test_pg_dump shouldn't have a MODULES_big line
      because there's no actual compiled bit for that extension.  Hopefully
      this will fix the Windows buildfarm members which were complaining.
      
      In passing, also add the 'prove_installcheck' bit to the pg_dump and
      test_pg_dump Makefiles, to get the buildfarm members to actually run
      those tests.
      eccfeeb6
    • Robert Haas's avatar
      Minimal fix for crash bug in quals_match_foreign_key. · 68d704ed
      Robert Haas authored
      Discussion is still underway as to whether to revert the entire patch
      that added this function, but that discussion may not conclude before
      beta1.  So, in the meantime, let's do at least this much.
      
      David Rowley
      68d704ed
    • Robert Haas's avatar
      Limit maximum parallel degree to 1024. · c7ea68ff
      Robert Haas authored
      This new limit affects both the max_parallel_degree GUC and the
      parallel_degree reloption.  There may some day be a use case for using
      more than 1024 CPUs for a single query, but that's surely not the case
      right now.  Not only do not very many people have that many CPUs, but
      the code hasn't been tested at that kind of scale and is very unlikely
      to perform well, or even work at all, without a lot more work.  The
      issue addressed by commit 06bd458c is
      probably just one problem of many.
      
      The idea of a more reasonable limit here was suggested by Tom Lane;
      the value of 1024 was suggested by Amit Kapila.
      c7ea68ff
    • Tom Lane's avatar
      Improve pg_upgrade's report about failure to match up old and new tables. · 73b9952e
      Tom Lane authored
      Ordinarily, pg_upgrade shouldn't have any difficulty in matching up all
      the relations it sees in the old and new databases.  If it does, however,
      it just goes belly-up with a pretty unhelpful error message.  That seemed
      fine as long as we expected the case never to occur in the wild, but
      Alvaro reported that it had been seen in a database whose pg_largeobject
      table had somehow acquired a TOAST table.  That doesn't quite seem like
      a case that pg_upgrade actually needs to handle, but it would be good if
      the report were more diagnosable.  Hence, extend the logic to print out
      as much information as we can about the mismatch(es) before we quit.
      
      In passing, improve the readability of get_rel_infos()'s data collection
      query, which had suffered seriously from lets-not-bother-to-update-comments
      syndrome, and generally was unnecessarily disrespectful to readers.
      
      It could be argued that this is a bug fix, but given that we have so few
      reports, I don't feel a need to back-patch; at least not before this has
      baked awhile in HEAD.
      73b9952e
    • Robert Haas's avatar
      Use mul_size when multiplying by the number of parallel workers. · 06bd458c
      Robert Haas authored
      That way, if the result overflows size_t, you'll get an error instead
      of undefined behavior, which seems like a plus.  This also has the
      effect of casting the number of workers from int to Size, which is
      better because it's harder to overflow int than size_t.
      
      Dilip Kumar reported this issue and provided a patch upon which this
      patch is based, but his version did use mul_size.
      06bd458c
    • Stephen Frost's avatar
      Remove various special checks around default roles · a89505fd
      Stephen Frost authored
      Default roles really should be like regular roles, for the most part.
      This removes a number of checks that were trying to make default roles
      extra special by not allowing them to be used as regular roles.
      
      We still prevent users from creating roles in the "pg_" namespace or
      from altering roles which exist in that namespace via ALTER ROLE, as
      we can't preserve such changes, but otherwise the roles are very much
      like regular roles.
      
      Based on discussion with Robert and Tom.
      a89505fd
    • Stephen Frost's avatar
      Add TAP tests for pg_dump · 6bd356c3
      Stephen Frost authored
      This TAP test suite will create a new cluster, populate it based on
      the 'create_sql' values in the '%tests' hash, run all of the runs
      defined in the '%pgdump_runs' hash, and then for each test in the
      '%tests' hash, compare each run's output the the regular expression
      defined for the test under the 'like' and 'unlike' functions, as
      appropriate.
      
      While this test suite covers a fair bit of ground (67% of pg_dump.c
      and quite a bit of the other files in src/bin/pg_dump), there is
      still quite a bit which remains to be added to provide better code
      coverage.  Still, this is quite a bit better than we had, and has
      found a few bugs already (note that the CREATE TRANSFORM test is
      commented out, as it is currently failing).
      
      Idea for using the TAP system from Tom, though all of the code is mine.
      6bd356c3
    • Stephen Frost's avatar
      Only issue LOCK TABLE commands when necessary · e1b120a8
      Stephen Frost authored
      Reviewing the cases where we need to LOCK a given table during a dump,
      it was pointed out by Tom that we really don't need to LOCK a table if
      we are only looking to dump the ACL for it, or certain other
      components.  After reviewing the queries run for all of the component
      pieces, a list of components were determined to not require LOCK'ing
      of the table.
      
      This implements a check to avoid LOCK'ing those tables.
      
      Initial complaint from Rushabh Lathia, discussed with Robert and Tom,
      the patch is mine.
      e1b120a8
    • Stephen Frost's avatar
      pg_dump performance and other fixes · 5d589993
      Stephen Frost authored
      Do not try to dump objects which do not have ACLs when only ACLs are
      being requested.  This results in a significant performance improvement
      as we can avoid querying for further information on these objects when
      we don't need to.
      
      When limiting the components to dump for an extension, consider what
      components have been requested.  Initially, we incorrectly hard-coded
      the components of the extension objects to dump, which would mean that
      we wouldn't dump some components even with they were asked for and in
      other cases we would dump components which weren't requested.
      
      Correct defaultACLs to use 'dump_contains' instead of 'dump'.  The
      defaultACL is considered a member of the namespace and should be
      dumped based on the same set of components that the other objects in
      the schema are, not based on what we're dumping for the namespace
      itself (which might not include ACLs, if the namespace has just the
      default or initial ACL).
      
      Use DUMP_COMPONENT_ACL for from-initdb objects, to allow users to
      change their ACLs, should they wish to.  This just extends what we
      are doing for the pg_catalog namespace to objects which are not
      members of namespaces.
      
      Due to column ACLs being treated a bit differently from other ACLs
      (they are actually reset to NULL when all privileges are revoked),
      adjust the query which gathers column-level ACLs to consider all of
      the ACL-relevant columns.
      5d589993
    • Stephen Frost's avatar
      Correct pg_dump WHERE clause for functions/aggregates · 64d60c8b
      Stephen Frost authored
      The query to grab the function/aggregate information is now joining
      to pg_init_privs, so we can simplify (and correct) the WHERE clause
      used to determine if a given function's ACL has changed from the
      initial ACL on the function.
      
      Bug found by Noah, patch by me.
      64d60c8b
    • Peter Eisentraut's avatar
      Update config.guess and config.sub · e324f8ad
      Peter Eisentraut authored
      e324f8ad
    • Tom Lane's avatar
      Fix possible read past end of string in to_timestamp(). · d136d600
      Tom Lane authored
      to_timestamp() handles the TH/th format codes by advancing over two input
      characters, whatever those are.  It failed to notice whether there were
      two characters available to be skipped, making it possible to advance
      the pointer past the end of the input string and keep on parsing.
      A similar risk existed in the handling of "Y,YYY" format: it would advance
      over three characters after the "," whether or not three characters were
      available.
      
      In principle this might be exploitable to disclose contents of server
      memory.  But the security team concluded that it would be very hard to use
      that way, because the parsing loop would stop upon hitting any zero byte,
      and TH/th format codes can't be consecutive --- they have to follow some
      other format code, which would have to match whatever data is there.
      So it seems impractical to examine memory very much beyond the end of the
      input string via this bug; and the input string will always be in local
      memory not in disk buffers, making it unlikely that anything very
      interesting is close to it in a predictable way.  So this doesn't quite
      rise to the level of needing a CVE.
      
      Thanks to Wolf Roediger for reporting this bug.
      d136d600
    • Tom Lane's avatar
      Fix pgbench's parsing of double values to notice trailing garbage. · 6b8b4e4d
      Tom Lane authored
      Noted by Fabien Coelho, though this isn't exactly his proposed patch.
      (The technique used here is borrowed from the zic sources.)
      6b8b4e4d
    • Tom Lane's avatar
      Improve handling of numeric-valued variables in pgbench. · 95152994
      Tom Lane authored
      The previous coding always stored variable values as strings, doing
      conversion on-the-fly when a numeric value was needed or a number was to be
      assigned.  This was a bit inefficient and risked loss of precision for
      floating-point values.  The precision aspect had been hacked around by
      printing doubles in "%.18e" format, which is ugly and has machine-dependent
      results.  Instead, arrange to preserve an assigned numeric value in the
      original binary numeric format, converting to string only when and if
      needed.  When we do need to convert a double to string, convert in "%g"
      format with DBL_DIG precision, which is the standard way to do it and
      produces the least surprising results in most cases.
      
      The implementation supports storing both a string value and a numeric
      value for any one variable, with lazy conversion between them.  I also
      arranged for lazy re-sorting of the variable array when new variables are
      added.  That was mainly to allow a clean refactoring of putVariable()
      into two levels of subroutine, but it may allow us to save a few sorts.
      
      Discussion: <9188.1462475559@sss.pgh.pa.us>
      95152994
    • Tom Lane's avatar
      Docs: fix \crosstabview example. · daa9856f
      Tom Lane authored
      This example missed being updated when we redefined \crosstabview's
      argument processing.
      
      Daniel Vérité
      daa9856f
    • Kevin Grittner's avatar
      Fix hash index vs "snapshot too old" problemms · 2cc41acd
      Kevin Grittner authored
      Hash indexes are not WAL-logged, and so do not maintain the LSN of
      index pages.  Since the "snapshot too old" feature counts on
      detecting error conditions using the LSN of a table and all indexes
      on it, this makes it impossible to safely do early vacuuming on any
      table with a hash index, so add this to the tests for whether the
      xid used to vacuum a table can be adjusted based on
      old_snapshot_threshold.
      
      While at it, add a paragraph to the docs for old_snapshot_threshold
      which specifically mentions this and other aspects of the feature
      which may otherwise surprise users.
      
      Problem reported and patch reviewed by Amit Kapila
      2cc41acd
    • Dean Rasheed's avatar
      Fix psql's \ev and \sv commands so that they handle view reloptions. · 9b66aa00
      Dean Rasheed authored
      Commit 8eb6407a added support for
      editing and showing view definitions, but neglected to account for
      view options such as security_barrier and WITH CHECK OPTION which are
      not returned by pg_get_viewdef() and so need special handling.
      
      Author: Dean Rasheed
      Reviewed-by: Peter Eisentraut
      Discussion: http://www.postgresql.org/message-id/CAEZATCWZjCgKRyM-agE0p8ax15j9uyQoF=qew7D2xB6cF76T8A@mail.gmail.com
      9b66aa00
    • Dean Rasheed's avatar
      Move and rename fmtReloptionsArray(). · 93a8c6fd
      Dean Rasheed authored
      Move fmtReloptionsArray() from pg_dump.c to string_utils.c so that it
      is available to other frontend code. In particular psql's \ev and \sv
      commands need it to handle view reloptions. Also rename the function
      to appendReloptionsArray(), which is a more accurate description of
      what it does.
      
      Author: Dean Rasheed
      Reviewed-by: Peter Eisentraut
      Discussion: http://www.postgresql.org/message-id/CAEZATCWZjCgKRyM-agE0p8ax15j9uyQoF=qew7D2xB6cF76T8A@mail.gmail.com
      93a8c6fd
    • Tom Lane's avatar
      Further 9.6 release note improvements. · 306ff0aa
      Tom Lane authored
      Call out the major enhancements in this release as identified by
      pgsql-advocacy discussion, and rearrange some of the entries to
      make those items more prominent.  Other minor improvements per
      advice from Vitaly Burovoy, Masahiko Sawada, Peter Geoghegan,
      and Andres Freund.
      306ff0aa
    • Tom Lane's avatar
      Update time zone data files to tzdata release 2016d. · 98f158e4
      Tom Lane authored
      DST law changes in Russia (Magadan, Tomsk regions) and Venezuela.
      Historical corrections for Russia.  There are new zone names Europe/Kirov
      and Asia/Tomsk reflecting the fact that these regions now have different
      time zone histories from adjacent regions.
      98f158e4
  4. 05 May, 2016 1 commit