1. 22 Apr, 2015 4 commits
    • Stephen Frost's avatar
      Pull in tableoid for inheiritance with rowMarks · 4ccc5bd2
      Stephen Frost authored
      As noted by Etsuro Fujita [1] and Dean Rasheed[2],
      cb1ca4d8 changed ExecBuildAuxRowMark()
      to always look for the tableoid in the target list, but didn't also
      change preprocess_targetlist() to always include the tableoid.  This
      resulted in errors with soon-to-be-added RLS with inheritance tests,
      and errors when using inheritance with foreign tables.
      
      Authors: Etsuro Fujita and Dean Rasheed (independently)
      
      Minor word-smithing on the comments by me.
      
      [1] 552CF0B6.8010006@lab.ntt.co.jp
      [2] CAEZATCVmFUfUOwwhnBTcgi6AquyjQ0-1fyKd0T3xBWJvn+xsFA@mail.gmail.com
      4ccc5bd2
    • Heikki Linnakangas's avatar
      Make the pg_rewind regression tests more robust on slow systems. · 54a16df0
      Heikki Linnakangas authored
      There were a couple of hard-coded sleeps in the tests: to wait for standby
      to catch up with master, and to wait for promotion with "pg_ctl promote"
      to complete. Instead of a fixed, hard-coded sleep, poll the server with a
      query once a second. This isn't ideal either, and I wish we had a better
      solution for real-world applications too, but this should fix the
      immediate problem.
      
      Patch by Michael Paquier, with some editing by me.
      54a16df0
    • Andres Freund's avatar
      Rename pg_replication_slot's new active_in to active_pid. · cef939c3
      Andres Freund authored
      In d811c037 active_in was added but discussion since showed that
      active_pid is preferred as a name.
      
      Discussion: CAMsr+YFKgZca5_7_ouaMWxA5PneJC9LNViPzpDHusaPhU9pA7g@mail.gmail.com
      cef939c3
    • Heikki Linnakangas's avatar
  2. 21 Apr, 2015 5 commits
  3. 20 Apr, 2015 2 commits
  4. 18 Apr, 2015 1 commit
  5. 17 Apr, 2015 2 commits
    • Stephen Frost's avatar
      Fix typo in relcache's equalPolicy() · ab6d1cd2
      Stephen Frost authored
      The USING policies were not being checked for differences as the same
      policy was being passed in to both sides of the equal().  This could
      result in backends not realizing that a policy had been changed, if
      none of the other attributes had been changed.
      
      Fix by passing to equal() the policy1 and policy2 using quals for
      comparison.
      
      No need to back-patch as this is not yet released.  Noticed while
      testing changes to RLS proposed by Dean Rasheed.
      ab6d1cd2
    • Alvaro Herrera's avatar
      Add new target modulescheck in vcregress.pl · 4cb7d671
      Alvaro Herrera authored
      This allows an MSVC build to run regression tests related to modules in
      src/test/modules.
      
      Author: Michael Paquier
      Reviewed by: Andrew Dunstan
      4cb7d671
  6. 16 Apr, 2015 5 commits
    • Bruce Momjian's avatar
      pg_upgrade: document need for text search files to be copied · 2e5d52a6
      Bruce Momjian authored
      Report by CJ Estel
      
      Backpatch through 9.4
      2e5d52a6
    • Alvaro Herrera's avatar
      MSVC: install src/test/modules together with contrib · 22d00532
      Alvaro Herrera authored
      These modules have to be installed so that the testing module can access
      them.  (We don't have that yet, but will soon have it.)
      
      Author: Michael Paquier
      Reviewed by: Andrew Dunstan
      22d00532
    • Heikki Linnakangas's avatar
      Fix assertion failure in logical decoding. · e2999abc
      Heikki Linnakangas authored
      Logical decoding set SnapshotData's regd_count field to avoid the
      snapshot manager from prematurely freeing snapshots that are generated
      by the decoding system. That was always an abuse of the field, as it was
      never supposed to be used outside the snapshot manager. Commit 94028691
      made snapshot manager's tracking of the snapshots smarter, and that scheme
      fell apart. The snapshot manager got confused and hit the assertion, when
      a snapshot that was marked with regd_count==1 was not found in the heap,
      where the snapshot manager tracks registered the snapshots.
      
      To fix, don't abuse the regd_count field like that. Logical decoding still
      abuses the active_count field for similar purposes, but that's currently
      harmless.
      
      The assertion failure was first reported by Michael Paquier
      e2999abc
    • Alvaro Herrera's avatar
      MSVC: Include modules of src/test/modules in build · 90898af3
      Alvaro Herrera authored
      commit_ts, being only a module used for test purposes, is ignored in the
      process for now.
      
      Author: Michael Paquier
      Reviewed by: Andrew Dunstan
      90898af3
    • Heikki Linnakangas's avatar
      b5e384e3
  7. 15 Apr, 2015 4 commits
    • Heikki Linnakangas's avatar
      Error out in pg_rewind if lstat() fails. · b5e560c2
      Heikki Linnakangas authored
      A "file not found" is expected if the source server is running, so don't
      complain about that. But any other error is definitely not expected.
      b5e560c2
    • Heikki Linnakangas's avatar
      Minor cleanup of pg_rewind. · 41457fcf
      Heikki Linnakangas authored
      Update comments and function names to use the terms "source" and "target"
      consistently. Some places were calling them remote and local instead, which
      was confusing.
      
      Fix incorrect comment in extractPageInfo on database creation record - it
      was wrong on what happens for databases created in the target that don't
      exist in source.
      41457fcf
    • Heikki Linnakangas's avatar
      Shut down test servers after pg_rewind regression tests. · 0d8a22a9
      Heikki Linnakangas authored
      Now that the test servers are initialized twice in each .pl script,
      the single END block is not enough to stop them. Add a new clean_rewind_test
      function that is called at the end of each test.
      
      Michael Paquier
      0d8a22a9
    • Heikki Linnakangas's avatar
      Fix logic to skip checkpoint if no records have been inserted. · 3d80a1e0
      Heikki Linnakangas authored
      After the WAL format changes, the calculation of the size of a checkpoint
      record became incorrect. Instead of trying to fix the math, check that the
      previous record, i.e. the xl_prev value that we'd write for the next
      record, matches the last checkpoint's redo pointer. That way it's not
      dependent on the size of the checkpoint record at all.
      
      The old logic was actually slightly wrong all along: if the previous
      checkpoint record crossed a page boundary, the page headers threw off the
      record size calculation, and the checkpoint was not skipped. The new
      checkpoint would not cross a page boundary, so this only resulted in at
      most one extra checkpoint after the system became idle. The new logic fixes
      that. (It's not worth fixing in backbranches).
      
      However, it makes some sense to try to keep the latest checkpoint contained
      fully in a page, or at least in a single WAL segment, just on general
      robustness grounds. If something goes awfully wrong, it's more likely that
      you can recover the latest WAL segment, than the last two WAL segments. So
      I added an extra check that the checkpoint is not skipped if the previous
      checkpoint crossed a WAL segment.
      
      Reported by Jeff Janes.
      3d80a1e0
  8. 14 Apr, 2015 8 commits
    • Peter Eisentraut's avatar
    • Peter Eisentraut's avatar
      Integrate pg_upgrade_support module into backend · 30982be4
      Peter Eisentraut authored
      Previously, these functions were created in a schema "binary_upgrade",
      which was deleted after pg_upgrade was finished.  Because we don't want
      to keep that schema around permanently, move them to pg_catalog but
      rename them with a binary_upgrade_... prefix.
      
      The provided functions are only small wrappers around global variables
      that were added specifically for pg_upgrade use, so keeping the module
      separate does not create any modularity.
      
      The functions still check that they are only called in binary upgrade
      mode, so it is not possible to call these during normal operation.
      Reviewed-by: default avatarMichael Paquier <michael.paquier@gmail.com>
      30982be4
    • Heikki Linnakangas's avatar
      Optimize pg_comp_crc32c_sse42 routine slightly, and also use it on x86. · 936546dc
      Heikki Linnakangas authored
      Eliminate the separate 'len' variable from the loops, and also use the 4
      byte instruction. This shaves off a few more cycles. Even though this
      routine that uses the special SSE 4.2 instructions is much faster than a
      generic routine, it's still a hot spot, so let's make it as fast as
      possible.
      
      Change the configure test to not test _mm_crc32_u64. That variant is only
      available in the 64-bit x86-64 architecture, not in 32-bit x86. Modify
      pg_comp_crc32c_sse42 so that it only uses _mm_crc32_u64 on x86-64. With
      these changes, the SSE accelerated CRC-32C implementation can also be used
      on 32-bit x86 systems.
      
      This also fixes the 32-bit MSVC build.
      936546dc
    • Heikki Linnakangas's avatar
      Oops, fix misspelled #endif · b73e7a07
      Heikki Linnakangas authored
      I hope this fixes the Windows builfarm failures.
      b73e7a07
    • Heikki Linnakangas's avatar
      Try to fix the CRC-32C autoconf magic for icc compiler. · b4eb2d16
      Heikki Linnakangas authored
      On gcc and clang, the _mm_crc32_u8 and _mm_crc32_u64 intrinsics are not
      defined at all, when not building with -msse4.2. But on icc, they are.
      So we cannot assume that if those intrinsics are defined, we can always use
      them safely, we might still need the runtime check.
      
      To fix, check if the __SSE_4_2__ preprocessor symbol is defined. That's
      supposed to be defined only when the compiler is targeting a processor that
      has SSE 4.2 support.
      
      Per buildfarm members fulmar and okapi.
      b4eb2d16
    • Alvaro Herrera's avatar
      Fix typo in comment · 0a52fafc
      Alvaro Herrera authored
      SLRU_SEGMENTS_PER_PAGE -> SLRU_PAGES_PER_SEGMENT
      
      I introduced this ancient typo in subtrans.c and later propagated it to
      multixact.c.  I fixed the latter in f741300c, but only back to 9.3;
      backpatch to all supported branches for consistency.
      0a52fafc
    • Heikki Linnakangas's avatar
      Use Intel SSE 4.2 CRC instructions where available. · 3dc2d62d
      Heikki Linnakangas authored
      Modern x86 and x86-64 processors with SSE 4.2 support have special
      instructions, crc32b and crc32q, for calculating CRC-32C. They greatly
      speed up CRC calculation.
      
      Whether the instructions can be used or not depends on the compiler and the
      target architecture. If generation of SSE 4.2 instructions is allowed for
      the target (-msse4.2 flag on gcc and clang), use them. If they are not
      allowed by default, but the compiler supports the -msse4.2 flag to enable
      them, compile just the CRC-32C function with -msse4.2 flag, and check at
      runtime whether the processor we're running on supports it. If it doesn't,
      fall back to the slicing-by-8 algorithm. (With the common defaults on
      current operating systems, the runtime-check variant is what you get in
      practice.)
      
      Abhijit Menon-Sen, heavily modified by me, reviewed by Andres Freund.
      3dc2d62d
    • Heikki Linnakangas's avatar
      Reorganize our CRC source files again. · 4f700bcd
      Heikki Linnakangas authored
      Now that we use CRC-32C in WAL and the control file, the "traditional" and
      "legacy" CRC-32 variants are not used in any frontend programs anymore.
      Move the code for those back from src/common to src/backend/utils/hash.
      
      Also move the slicing-by-8 implementation (back) to src/port. This is in
      preparation for next patch that will add another implementation that uses
      Intel SSE 4.2 instructions to calculate CRC-32C, where available.
      4f700bcd
  9. 13 Apr, 2015 8 commits
    • Peter Eisentraut's avatar
      pgbench: Attempt fix build on Windows · d577bb86
      Peter Eisentraut authored
      d577bb86
    • Alvaro Herrera's avatar
      Remove duplicated word in README · b5213e14
      Alvaro Herrera authored
      b5213e14
    • Peter Eisentraut's avatar
      81134af3
    • Heikki Linnakangas's avatar
      Fix pg_rewind regression tests in VPATH builds · b22a36a6
      Heikki Linnakangas authored
      Should call just "pg_rewind", instead of "./pg_rewind". The tests are called
      so that PATH contains the temporariy installation bin dir.
      
      Per report from Alvaro Herrera
      b22a36a6
    • Heikki Linnakangas's avatar
      Refactor and fix TAP tests of pg_rewind · 53ba1077
      Heikki Linnakangas authored
      * Don't pass arguments to prove, since that's not supported on perl 5.8
      which is the minimum version supported by the TAP tests. Refactor the
      test files themselves to run the tests twice, in both local and remote mode.
      
      * Use eq rather than == for string comparison. This thinko caused the remote
      versions of the tests to never run.
      
      * Add "use strict" and "use warnings", and fix warnings that that produced.
      
      * Increase the delay after standby promotion, to make the tests more robust.
      
      * In remote mode, the connection string to the promoted standby was
      incorrect, leading to connection errors.
      
      Patch by Michael Paquier, to address Peter Eisentraut's report.
      53ba1077
    • Heikki Linnakangas's avatar
      Don't archive bogus recycled or preallocated files after timeline switch. · b2a5545b
      Heikki Linnakangas authored
      After a timeline switch, we would leave behind recycled WAL segments that
      are in the future, but on the old timeline. After promotion, and after they
      become old enough to be recycled again, we would notice that they don't have
      a .ready or .done file, create a .ready file for them, and archive them.
      That's bogus, because the files contain garbage, recycled from an older
      timeline (or prealloced as zeros). We shouldn't archive such files.
      
      This could happen when we're following a timeline switch during replay, or
      when we switch to new timeline at end-of-recovery.
      
      To fix, whenever we switch to a new timeline, scan the data directory for
      WAL segments on the old timeline, but with a higher segment number, and
      remove them. Those don't belong to our timeline history, and are most
      likely bogus recycled or preallocated files. They could also be valid files
      that we streamed from the primary ahead of time, but in any case, they're
      not needed to recover to the new timeline.
      b2a5545b
    • Fujii Masao's avatar
      Silence gettext warning about '\r' escape sequence in translatable string. · 1f94bec7
      Fujii Masao authored
      gettext was unhappy about the commit b216ad7b because it revealed
      the problem that internationalized messages may contain '\r' escape
      sequence in pg_rewind. This commit moves '\r' to a separate printf() call.
      
      Michael Paquier, bug reported by Peter Eisentraut
      1f94bec7
    • Peter Eisentraut's avatar
      emacs: Set indent-tabs-mode in perl-mode · 442663f1
      Peter Eisentraut authored
      This matches existing practice, but makes the setup complete and
      consistent with the C code setup.
      442663f1
  10. 12 Apr, 2015 1 commit