1. 25 Jun, 2020 4 commits
  2. 24 Jun, 2020 5 commits
  3. 22 Jun, 2020 4 commits
    • Jeff Davis's avatar
      Doc fixup for hashagg_avoid_disk_plan GUC. · 7ce46156
      Jeff Davis authored
      Reported-by: Justin Pryzby
      Discussion: https://postgr.es/m/20200620220402.GZ17995@telsasoft.com
      Backport-through: 13
      7ce46156
    • Tom Lane's avatar
      Undo double-quoting of index names in non-text EXPLAIN output formats. · 63d2ac23
      Tom Lane authored
      explain_get_index_name() applied quote_identifier() to the index name.
      This is fine for text output, but the non-text output formats all have
      their own quoting conventions and would much rather start from the
      actual index name.  For example in JSON you'd get something like
      
             "Index Name": "\"My Index\"",
      
      which is surely not desirable, especially when the same does not
      happen for table names.  Hence, move the responsibility for applying
      quoting out to the callers, where it can go into already-existing
      special code paths for text format.
      
      This changes the API spec for users of explain_get_index_name_hook:
      before, they were supposed to apply quote_identifier() if necessary,
      now they should not.  Research suggests that the only publicly
      available user of the hook is hypopg, and it actually forgot to
      apply quoting anyway, so it's fine.  (In any case, there's no
      behavioral change for the output of a hook as seen in non-text
      EXPLAIN formats, so this won't break any case that programs should
      be relying on.)
      
      Digging in the commit logs, it appears that quoting was included in
      explain_get_index_name's duties when commit 604ffd28 invented it;
      and that was fine at the time because we only had text output format.
      This should have been rethought when non-text formats were invented,
      but it wasn't.
      
      This is a fairly clear bug for users of non-text EXPLAIN formats,
      so back-patch to all supported branches.
      
      Per bug #16502 from Maciek Sakrejda.  Patch by me (based on
      investigation by Euler Taveira); thanks to Julien Rouhaud for review.
      
      Discussion: https://postgr.es/m/16502-57bd1c9f913ed1d1@postgresql.org
      63d2ac23
    • Michael Paquier's avatar
      Fix inconsistent markups in catalogs.sgml · fe186b4c
      Michael Paquier authored
      Some fields related to pg_opclass and pg_opfamily were using incorrect
      markups, listing them as structname instead of structfield.
      
      Author: Fabien Coelho
      Discussion: https://postgr.es/m/alpine.DEB.2.22.394.2006210903560.859381@pseudo
      fe186b4c
    • Michael Paquier's avatar
      Add --no-index-cleanup and --no-truncate to vacuumdb. · 9550ea30
      Michael Paquier authored
      Both INDEX_CLEANUP and TRUNCATE have been available since v12, and are
      enabled by default except if respectively vacuum_index_cleanup and
      vacuum_truncate are disabled for a given relation.  This change adds
      support for disabling these options from vacuumdb.
      
      Author: Nathan Bossart
      Reviewed-by: Michael Paquier, Masahiko Sawada
      Discussion: https://postgr.es/m/6F7F17EF-B1F2-4681-8D03-BA96365717C0@amazon.com
      9550ea30
  4. 21 Jun, 2020 2 commits
  5. 20 Jun, 2020 5 commits
  6. 19 Jun, 2020 7 commits
    • Alvaro Herrera's avatar
      Ensure write failure reports no-disk-space · ae3259c5
      Alvaro Herrera authored
      A few places calling fwrite and gzwrite were not setting errno to ENOSPC
      when reporting errors, as is customary; this led to some failures being
      reported as
      "could not write file: Success"
      which makes us look silly.  Make a few of these places in pg_dump and
      pg_basebackup use our customary pattern.
      
      Backpatch-to: 9.5
      Author: Justin Pryzby <pryzby@telsasoft.com>
      Author: Tom Lane <tgl@sss.pgh.pa.us>
      Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
      Discussion: https://postgr.es/m/20200611153753.GU14879@telsasoft.com
      ae3259c5
    • Tom Lane's avatar
      Future-proof regression tests against possibly-missing posixrules file. · 2c8ef936
      Tom Lane authored
      The IANA time zone folk have deprecated use of a "posixrules" file in
      the tz database.  While for now it's our choice whether to keep
      supplying one in our own builds, installations built with
      --with-system-tzdata will soon be needing to cope with that file not
      being present, at least on some platforms.
      
      This causes a problem for the horology test, which expected the
      nonstandard POSIX zone spec "CST7CDT" to apply pre-2007 US daylight
      savings rules.  That does happen if the posixrules file supplies such
      information, but otherwise the test produces undesired results.
      To fix, add an explicit transition date rule that matches 2005 practice.
      (We could alternatively have switched the test to use some real time
      zone, but it seems useful to have coverage of this type of zone spec.)
      
      While at it, update a documentation example that also relied on
      "CST7CDT"; use a real-world zone name instead.  Also, document why
      the zone names EST5EDT, CST6CDT, MST7MDT, PST8PDT aren't subject to
      similar failures when "posixrules" is missing.
      
      Back-patch to all supported branches, since the hazard is the same
      for all.
      
      Discussion: https://postgr.es/m/1665379.1592581287@sss.pgh.pa.us
      2c8ef936
    • Alvaro Herrera's avatar
      Adjust some glossary terms · 816cbb59
      Alvaro Herrera authored
      Mostly in response to Jürgen Purtz critique of previous definitions,
      though I added many other changes.
      
      Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
      Reviewed-by: default avatarJürgen Purtz <juergen@purtz.de>
      Reviewed-by: default avatarJustin Pryzby <pryzby@telsasoft.com>
      Reviewed-by: default avatarErik Rijkers <er@xs4all.nl>
      Discussion: https://postgr.es/m/c1e06008-2132-30f4-9b38-877e8683d418@purtz.de
      816cbb59
    • Peter Geoghegan's avatar
      Fix deduplication "single value" strategy bug. · be14f884
      Peter Geoghegan authored
      It was possible for deduplication's single value strategy to mistakenly
      believe that a very small duplicate tuple counts as one of the six large
      tuples that it aims to leave behind after the page finally splits.  This
      could cause slightly suboptimal space utilization with very low
      cardinality indexes, though only under fairly narrow conditions.
      
      To fix, be particular about what kind of tuple counts as a
      maxpostingsize-capped tuple.  This avoids confusion in the event of a
      small tuple that gets "wedged" between two large tuples, where all
      tuples on the page are duplicates of the same value.
      
      Discussion: https://postgr.es/m/CAH2-Wz=Y+sgSFc-O3LpiZX-POx2bC+okec2KafERHuzdVa7-rQ@mail.gmail.com
      Backpatch: 13-, where deduplication was introduced (by commit 0d861bbb)
      be14f884
    • Fujii Masao's avatar
      Fix issues in invalidation of obsolete replication slots. · f9e9704f
      Fujii Masao authored
      This commit fixes the following issues.
      
      1. There is the case where the slot is dropped while trying to invalidate it.
          InvalidateObsoleteReplicationSlots() did not handle this case, and
          which could cause checkpoint to fail.
      
      2. InvalidateObsoleteReplicationSlots() could emit the same log message
          multiple times unnecessary. It should be logged only once.
      
      3. When marking the slot as used, we always searched the target slot from
          all the replication slots even if we already found it. This could cause
          useless waste of cycles.
      
      Back-patch to v13 where these issues were added as a part of
      max_slot_wal_keep_size code.
      
      Author: Fujii Masao
      Reviewed-by: Kyotaro Horiguchi, Alvaro Herrera
      Discussion: https://postgr.es/m/66c05b67-3396-042c-1b41-bfa6c3ddcf82@oss.nttdata.com
      f9e9704f
    • David Rowley's avatar
      Fix EXPLAIN ANALYZE for parallel HashAgg plans · 9bdb300d
      David Rowley authored
      Since 1f39bce0, HashAgg nodes have had the ability to spill to disk when
      memory consumption exceeds work_mem. That commit added new properties to
      EXPLAIN ANALYZE to show the maximum memory usage and disk usage, however,
      it didn't quite go as far as showing that information for parallel
      workers.  Since workers may have experienced something very different from
      the main process, we should show this information per worker, as is done
      in Sort.
      
      Reviewed-by: Justin Pryzby
      Reviewed-by: Jeff Davis
      Discussion: https://postgr.es/m/CAApHDvpEKbfZa18mM1TD7qV6PG+w97pwCWq5tVD0dX7e11gRJw@mail.gmail.com
      Backpatch-through: 13, where the hashagg spilling code was added.
      9bdb300d
    • Andres Freund's avatar
      Clean up includes of s_lock.h. · f2191679
      Andres Freund authored
      Users of spinlocks should use spin.h, not s_lock.h. And lwlock.h
      hasn't utilized spinlocks for quite a while.
      
      Discussion: https://postgr.es/m/20200618183041.upyrd25eosecyf3x@alap3.anarazel.de
      f2191679
  7. 18 Jun, 2020 7 commits
    • Andres Freund's avatar
      Fix deadlock danger when atomic ops are done under spinlock. · cf1234a1
      Andres Freund authored
      This was a danger only for --disable-spinlocks in combination with
      atomic operations unsupported by the current platform.
      
      While atomics.c was careful to signal that a separate semaphore ought
      to be used when spinlock emulation is active, spin.c didn't actually
      implement that mechanism. That's my (Andres') fault, it seems to have
      gotten lost during the development of the atomic operations support.
      
      Fix that issue and add test for nesting atomic operations inside a
      spinlock.
      
      Author: Andres Freund
      Discussion: https://postgr.es/m/20200605023302.g6v3ydozy5txifji@alap3.anarazel.de
      Backpatch: 9.5-
      cf1234a1
    • Andres Freund's avatar
      Add basic spinlock tests to regression tests. · 3b37a6de
      Andres Freund authored
      As s_lock_test, the already existing test for spinlocks, isn't run in
      an automated fashion (and doesn't test a normal backend environment),
      adding tests that are run as part of a normal regression run is a good
      idea. Particularly in light of several recent and upcoming spinlock
      related fixes.
      
      Currently the new tests are run as part of the pre-existing
      test_atomic_ops() test. That perhaps can be quibbled about, but for
      now seems ok.
      
      The only operations that s_lock_test tests but the new tests don't are
      the detection of a stuck spinlock and S_LOCK_FREE (which is otherwise
      unused, not implemented on all platforms, and will be removed).
      
      This currently contains a test for more than INT_MAX spinlocks (only
      run with --disable-spinlocks), to ensure the recent commit fixing a
      bug with more than INT_MAX spinlock initializations is correct. That
      test is somewhat slow, so we might want to disable it after a few
      days.
      
      It might be worth retiring s_lock_test after this. The added coverage
      of a stuck spinlock probably isn't worth the added complexity?
      
      Author: Andres Freund
      Discussion: https://postgr.es/m/20200606023103.avzrctgv7476xj7i@alap3.anarazel.de
      3b37a6de
    • Tom Lane's avatar
      Doc: document POSIX-style time zone specifications in full. · a3235a53
      Tom Lane authored
      We'd glossed over most of this complexity for years, but it's hard
      to avoid writing it all down now, so that we can explain what happens
      when there's no "posixrules" file in the IANA time zone database.
      That was at best a tiny minority situation till now, but it's likely
      to become quite common in the future, so we'd better explain it.
      
      Nonetheless, we don't really encourage people to use POSIX zone specs;
      picking a named zone is almost always what you really want, unless
      perhaps you're stuck with an out-of-date zone database.  Therefore,
      let's shove all this detail into an appendix.
      
      Patch by me; thanks to Robert Haas for help with some awkward wording.
      
      Discussion: https://postgr.es/m/1390.1562258309@sss.pgh.pa.us
      a3235a53
    • Michael Paquier's avatar
      Fix oldest xmin and LSN computation across repslots after advancing · b48df818
      Michael Paquier authored
      Advancing a replication slot did not recompute the oldest xmin and LSN
      values across replication slots, preventing resource removal like
      segments not recycled at checkpoint time.  The original commit that
      introduced the slot advancing in 9c7d06d6 never did the update of those
      oldest values, and b0afdcad removed this code.
      
      This commit adds a TAP test to check segment recycling with advancing
      for physical slots, enforcing an extra segment switch before advancing
      to check if the segment gets correctly recycled after a checkpoint.
      
      Reported-by: Andres Freund
      Reviewed-by: Alexey Kondratov, Kyptaro Horiguchi
      Discussion: https://postgr.es/m/20200609171904.kpltxxvjzislidks@alap3.anarazel.de
      Backpatch-through: 11
      b48df818
    • Peter Eisentraut's avatar
      Disallow factorial of negative numbers · 0a40563e
      Peter Eisentraut authored
      The previous implementation returned 1 for all negative numbers, which
      is not sensible under any definition.
      
      Discussion: https://www.postgresql.org/message-id/flat/6ce1df0e-86a3-e544-743a-f357ff663f68%402ndquadrant.com
      0a40563e
    • Peter Eisentraut's avatar
      Expand tests for factorial · 9d402c73
      Peter Eisentraut authored
      Move from int4 to numeric test.  (They were originally int4 functions,
      but were reimplemented for numeric in
      04a4821a.)  Add some tests for edge
      cases.
      
      Discussion: https://www.postgresql.org/message-id/flat/6ce1df0e-86a3-e544-743a-f357ff663f68%402ndquadrant.com
      9d402c73
    • Michael Paquier's avatar
      Remove reset of testtablespace from pg_regress on Windows · 2b2a070d
      Michael Paquier authored
      testtablespace is an extra path used as tablespace location in the main
      regression test suite, computed from --outputdir as defined by the
      caller of pg_regress (current directory if undefined).
      
      This special handling was introduced as of f10589e5 to be specific to
      MSVC, as we let pg_regress' Makefile handle this cleanup in other
      environments.  This moves the cleanup to the MSVC script running
      regression tests instead where needed: check, installcheck and
      upgradecheck.  I have also checked this patch on MSVC with repeated runs
      of each target.
      
      Author: Kyotaro Horiguchi, Michael Paquier
      Discussion: https://postgr.es/m/20200219.142519.437573253063431435.horikyota.ntt@gmail.com
      2b2a070d
  8. 17 Jun, 2020 6 commits