1. 28 May, 2014 7 commits
    • Tom Lane's avatar
      Fix stack clobber in new uuid-ossp code. · 2103218d
      Tom Lane authored
      The V5 (SHA1 hashing) code wrote 20 bytes into a 16-byte local variable.
      This had accidentally failed to fail in my testing and Matteo's, but
      buildfarm results exposed the problem.
      2103218d
    • Magnus Hagander's avatar
      Ensure cleanup in case of early errors in streaming base backups · 8232d6df
      Magnus Hagander authored
      Move the code that sends the initial status information as well as the
      calculation of paths inside the ENSURE_ERROR_CLEANUP block. If this code
      failed, we would "leak" a counter of number of concurrent backups, thereby
      making the system always believe it was in backup mode. This could happen
      if the sending failed (which it probably never did given that the small
      amount of data to send would never cause a flush) or if the psprintf calls
      ran out of memory. Both are very low risk, but all operations after
      do_pg_start_backup should be protected.
      8232d6df
    • Bruce Momjian's avatar
      c6763156
    • Tom Lane's avatar
      pg_lsn should not be marked typispreferred. · ec3357a3
      Tom Lane authored
      In general it's not a good idea for built-in types in the 'U' category
      to be marked preferred; they could draw behavior away from user-defined
      types with similarly-named operators.  pg_lsn is probably at low risk
      of that right now given the lack of casts between it and other types,
      but that doesn't make this marking OK.
      
      Ordinarily we'd bump catversion when changing any predefined catalog
      contents like this, but since we're past beta1, the costs of a forced
      initdb seem to outweigh the benefits of guaranteed behavioral consistency.
      There's not any known behavioral impact today anyway --- this is more
      in the nature of being sure there's not problems in future.
      
      Per an off-list complaint from Thomas Fanghaenel.
      ec3357a3
    • Tom Lane's avatar
      Fix obsolete config-module-exclusion logic in vcregress.pl. · 86000311
      Tom Lane authored
      The recent addition of regression tests to uuid-ossp exposed the fact
      that the MSVC build system wasn't being consistent about whether it was
      building/testing that contrib module, ie, it would try to test the module
      even when it hadn't built it.  The same hazard was latent for sslinfo.
      
      For the moment I just copied the more up-to-date logic from point A to
      point B, but this is screaming for refactoring.
      
      Per buildfarm results.
      86000311
    • Tom Lane's avatar
      Propagate system identifier generation improvement into pg_resetxlog. · 4bcb3946
      Tom Lane authored
      Commit 5035701e improved xlog.c's method
      for creating a database system identifier, but I neglected to fix the
      copy of that code appearing in pg_resetxlog.c.  Spotted by Andres Freund.
      4bcb3946
    • Bruce Momjian's avatar
      doc: improve ssl_ecdh_curve descriptions · 49cf2cd8
      Bruce Momjian authored
      Patch by Marko Kreen
      49cf2cd8
  2. 27 May, 2014 3 commits
    • Tom Lane's avatar
      Support BSD and e2fsprogs UUID libraries alongside OSSP UUID library. · b8cc8f94
      Tom Lane authored
      Allow the contrib/uuid-ossp extension to be built atop any one of these
      three popular UUID libraries.  (The extension's name is now arguably a
      misnomer, but we'll keep it the same so as not to cause unnecessary
      compatibility issues for users.)
      
      We would not normally consider a change like this post-beta1, but the issue
      has been forced by our upgrade to autoconf 2.69, whose more rigorous header
      checks are causing OSSP's header files to be rejected on some platforms.
      It's been foreseen for some time that we'd have to move away from depending
      on OSSP UUID due to lack of upstream maintenance, so this is a down payment
      on that problem.
      
      While at it, add some simple regression tests, in hopes of catching any
      major incompatibilities between the three implementations.
      
      Matteo Beccati, with some further hacking by me
      b8cc8f94
    • Robert Haas's avatar
      worker_spi: Initialize bgw_notify_pid in all cases. · 616afee1
      Robert Haas authored
      Commit 090d0f20 added new code showing
      how it can be useful to set bgw_notify_pid to a non-zero value, but it
      failed to make sure that the existing call to RegisterBackgroundWorker
      initialized the new field at all.
      
      Report and patch by Shigeru Hanada.
      616afee1
    • Tom Lane's avatar
      Avoid unportable usage of sscanf(UINT64_FORMAT). · 9d7ded0f
      Tom Lane authored
      On Mingw, it seems that scanf() doesn't necessarily accept the same format
      codes that printf() does, and in particular it may fail to recognize %llu
      even though printf() does.  Since configure only probes printf() behavior
      while setting up the INT64_FORMAT macros, this means it's unsafe to use
      those macros with scanf().  We had only one instance of such a coding
      pattern, in contrib/pg_stat_statements, so change that code to avoid
      the problem.
      
      Per buildfarm warnings.  Back-patch to 9.0 where the troublesome code
      was introduced.
      
      Michael Paquier
      9d7ded0f
  3. 26 May, 2014 2 commits
  4. 25 May, 2014 3 commits
    • Heikki Linnakangas's avatar
      Fix error when trying to delete page with half-dead left sibling. · 8da31837
      Heikki Linnakangas authored
      The new page deletion code didn't cope with the case the target page's
      right sibling was marked half-dead. It failed a sanity check which checked
      that the downlinks in the parent page match the lower level, because a
      half-dead page has no downlink. To cope, check for that condition, and
      just give up on the deletion if it happens. The vacuum will finish the
      deletion of the half-dead page when it gets there, and on the next vacuum
      after that the empty can be deleted.
      
      Reported by Jeff Janes.
      8da31837
    • Tom Lane's avatar
      Allow total number of transactions in pgbench to exceed INT_MAX. · 9a65fb35
      Tom Lane authored
      Change the total-transactions counters from int32 to int64 to accommodate
      cases where we do more than 2^31 transactions during a run.  This patch
      does not change the INT_MAX limit on explicit "-t" parameters, but it
      does allow the product of the -t and -c parameters to exceed INT_MAX, or
      allow a -T limit that is large enough that more than 2^31 transactions
      can be completed.  While pgbench did not actually fail in such cases,
      it did print an incorrect total-transactions count, and some of the
      derived numbers such as TPS would have been wrong as well.
      
      Tomas Vondra
      9a65fb35
    • Andres Freund's avatar
      Don't allocate memory inside an Assert() iff in a critical section. · 9fa93530
      Andres Freund authored
      HeapTupleHeaderGetCmax() asserts that it is only used if the tuple has
      been updated by the current transaction. That check is correct and
      sensible but requires allocating memory if xmax is a multixact. When
      wal_level is set to logical cmax needs to be included in a wal record
      , generated inside a critical section, which can trigger the assertion
      added in 4a170ee9.
      
      Reported-By: Steve Singer
      9fa93530
  5. 24 May, 2014 1 commit
    • Andres Freund's avatar
      Silence a couple of spurious valgrind warnings in inval.c. · 0564bbe7
      Andres Freund authored
      Define padding bytes in SharedInvalidationMessage structs to be
      defined. Otherwise the sinvaladt.c ringbuffer, which is accessed by
      multiple processes, will cause spurious valgrind warnings about
      undefined memory being used. That's because valgrind remembers the
      undefined bytes from the last local process's store, not realizing
      that another process has written since, filling the previously
      uninitialized bytes.
      0564bbe7
  6. 23 May, 2014 2 commits
  7. 22 May, 2014 4 commits
  8. 21 May, 2014 2 commits
  9. 20 May, 2014 2 commits
    • Bruce Momjian's avatar
      doc: 9.4 release notes update for pg_bench line limit item · 6a61308f
      Bruce Momjian authored
      Report by David Johnston
      6a61308f
    • Tom Lane's avatar
      Prevent auto_explain from changing the output of a user's EXPLAIN. · e416830a
      Tom Lane authored
      Commit af7914c6, which introduced the
      EXPLAIN (TIMING) option, for some reason coded explain.c to look at
      planstate->instrument->need_timer rather than es->timing to decide
      whether to print timing info.  However, the former flag might get set
      as a result of contrib/auto_explain wanting timing information.  We
      certainly don't want activation of auto_explain to change user-visible
      statement behavior, so fix that.
      
      Also fix an independent bug introduced in the same patch: in the code
      path for a never-executed node with a machine-friendly output format,
      if timing was selected, it would fail to print the Actual Rows and Actual
      Loops items.
      
      Per bug #10404 from Tomonari Katsumata.  Back-patch to 9.2 where the
      faulty code was introduced.
      e416830a
  10. 19 May, 2014 9 commits
  11. 18 May, 2014 2 commits
    • Tom Lane's avatar
      Ooops, I broke initdb with that last patch. · 0c19aaba
      Tom Lane authored
      That's what I get for not fully retesting the final version of the patch.
      The replace_allowed cross-check needs an additional special case for
      bootstrapping.
      0c19aaba
    • Tom Lane's avatar
      Fix two ancient memory-leak bugs in relcache.c. · 078b2ed2
      Tom Lane authored
      RelationCacheInsert() ignored the possibility that hash_search(HASH_ENTER)
      might find a hashtable entry already present for the same OID.  However,
      that can in fact occur during recursive relcache load scenarios.  When it
      did happen, we overwrote the pointer to the pre-existing Relation, causing
      a session-lifespan leakage of that entire structure.  As far as is known,
      the pre-existing Relation would always have reference count zero by the
      time we arrive back at the outer insertion, so add code that deletes the
      pre-existing Relation if so.  If by some chance its refcount is positive,
      elog a WARNING and allow the pre-existing Relation to be leaked as before.
      
      Also, AttrDefaultFetch() was sloppy about leaking the cstring form of the
      pg_attrdef.adbin value it's copying into the relcache structure.  This is
      only a query-lifespan leakage, and normally not very significant, but it
      adds up during CLOBBER_CACHE testing.
      
      These bugs are of very ancient vintage, but I'll refrain from back-patching
      since there's no evidence that these leaks amount to anything in ordinary
      usage.
      078b2ed2
  12. 17 May, 2014 3 commits
    • Tom Lane's avatar
      Make fallback implementation of pg_memory_barrier() work. · 44cd47c1
      Tom Lane authored
      The fallback implementation involves acquiring and releasing a spinlock
      variable that is otherwise unreferenced --- not even to the extent of
      initializing it.  This accidentally fails to fail on platforms where
      spinlocks should be initialized to zeroes, but elsewhere it results in
      a "stuck spinlock" failure during startup.
      
      I griped about this last July, and put in a hack that worked for gcc
      on HPPA, but didn't get around to fixing the general case.  Per the
      discussion back then, the best thing to do seems to be to initialize
      dummy_spinlock in main.c.
      44cd47c1
    • Tom Lane's avatar
      Fix a bunch of functions that were declared static then defined not-static. · c1907f0c
      Tom Lane authored
      Per testing with a compiler that whines about this.
      c1907f0c
    • Tom Lane's avatar
      Fix unaligned accesses in DecodeUpdate(). · 6c42b2b1
      Tom Lane authored
      The xl_heap_header_len structures in an XLOG_HEAP_UPDATE record aren't
      necessarily aligned adequately.  The regular replay function for these
      records is aware of that, but decode.c didn't get the memo.  I'm not
      sure why the buildfarm failed to catch this; the test_decoding test
      certainly blows up real good on my old HPPA box.
      
      Also, I'm pretty sure that the address arithmetic was wrong for the
      case of XLOG_HEAP_CONTAINS_OLD and not XLOG_HEAP_CONTAINS_NEW_TUPLE,
      though this apparently can't happen when logical decoding is active.
      6c42b2b1