1. 24 Feb, 2020 1 commit
  2. 22 Feb, 2020 3 commits
  3. 21 Feb, 2020 16 commits
  4. 20 Feb, 2020 3 commits
  5. 19 Feb, 2020 11 commits
    • Tom Lane's avatar
      Doc: discourage use of partial indexes for poor-man's-partitioning. · 6a8e5605
      Tom Lane authored
      Creating a bunch of non-overlapping partial indexes is generally
      a bad idea, so add an example saying not to do that.
      
      Back-patch to v10.  Before that, the alternative of using (real)
      partitioning wasn't available, so that the tradeoff isn't quite
      so clear cut.
      
      Discussion: https://postgr.es/m/CAKVFrvFY-f7kgwMRMiPLbPYMmgjc8Y2jjUGK_Y0HVcYAmU6ymg@mail.gmail.com
      6a8e5605
    • Tom Lane's avatar
      Remove support for upgrading extensions from "unpackaged" state. · 70a77320
      Tom Lane authored
      Andres Freund pointed out that allowing non-superusers to run
      "CREATE EXTENSION ... FROM unpackaged" has security risks, since
      the unpackaged-to-1.0 scripts don't try to verify that the existing
      objects they're modifying are what they expect.  Just attaching such
      objects to an extension doesn't seem too dangerous, but some of them
      do more than that.
      
      We could have resolved this, perhaps, by still requiring superuser
      privilege to use the FROM option.  However, it's fair to ask just what
      we're accomplishing by continuing to lug the unpackaged-to-1.0 scripts
      forward.  None of them have received any real testing since 9.1 days,
      so they may not even work anymore (even assuming that one could still
      load the previous "loose" object definitions into a v13 database).
      And an installation that's trying to go from pre-9.1 to v13 or later
      in one jump is going to have worse compatibility problems than whether
      there's a trivial way to convert their contrib modules into extension
      style.
      
      Hence, let's just drop both those scripts and the core-code support
      for "CREATE EXTENSION ... FROM".
      
      Discussion: https://postgr.es/m/20200213233015.r6rnubcvl4egdh5r@alap3.anarazel.de
      70a77320
    • Peter Eisentraut's avatar
      Fix typo · 2f9c46a3
      Peter Eisentraut authored
      Reported-by: default avatarDaniel Verite <daniel@manitou-mail.org>
      2f9c46a3
    • Tom Lane's avatar
      Fix confusion about event trigger vs. plain function in plpgsql. · 761a5688
      Tom Lane authored
      The function hash table keys made by compute_function_hashkey() failed
      to distinguish event-trigger call context from regular call context.
      This meant that once we'd successfully made a hash entry for an event
      trigger (either by validation, or by normal use as an event trigger),
      an attempt to call the trigger function as a plain function would
      find this hash entry and thereby bypass the you-can't-do-that check in
      do_compile().  Thus we'd attempt to execute the function, leading to
      strange errors or even crashes, depending on function contents and
      server version.
      
      To fix, add an isEventTrigger field to PLpgSQL_func_hashkey,
      paralleling the longstanding infrastructure for regular triggers.
      This fits into what had been pad space, so there's no risk of an ABI
      break, even assuming that any third-party code is looking at these
      hash keys.  (I considered replacing isTrigger with a PLpgSQL_trigtype
      enum field, but felt that that carried some API/ABI risk.  Maybe we
      should change it in HEAD though.)
      
      Per bug #16266 from Alexander Lakhin.  This has been broken since
      event triggers were invented, so back-patch to all supported branches.
      
      Discussion: https://postgr.es/m/16266-fcd7f838e97ba5d4@postgresql.org
      761a5688
    • Peter Eisentraut's avatar
      Set gen_random_uuid() to volatile · 2ed19a48
      Peter Eisentraut authored
      It was set to immutable.  This was a mistake in the initial
      commit (5925e554).
      Reported-by: default avatarhubert depesz lubaczewski <depesz@depesz.com>
      Discussion: https://www.postgresql.org/message-id/flat/20200218185452.GA8710%40depesz.com
      2ed19a48
    • Jeff Davis's avatar
      Minor refactor of nodeAgg.c. · 5b618e1f
      Jeff Davis authored
        * Separate calculation of hash value from the lookup.
        * Split build_hash_table() into two functions.
        * Change lookup_hash_entry() to return AggStatePerGroup. That's all
          the caller needed, anyway.
      
      These changes are to support the upcoming Disk-based Hash Aggregation
      work.
      
      Discussion: https://postgr.es/m/31f5ab871a3ad5a1a91a7a797651f20e77ac7ce3.camel%40j-davis.com
      5b618e1f
    • Jeff Davis's avatar
      logtape.c: allocate read buffer even for an empty tape. · 8021985d
      Jeff Davis authored
      Prior to this commit, the read buffer was allocated at the time the tape
      was rewound; but as an optimization, would not be allocated at all if
      the tape was empty.
      
      That optimization meant that it was valid to have a rewound tape with
      the buffer set to NULL, but only if a number of conditions were met
      and only if the API was used properly. After 7fdd919a refactored the
      code to support lazily-allocating the buffer, Coverity started
      complaining.
      
      The optimization for empty tapes doesn't seem important, so just
      allocate the buffer whether the tape has any data or not.
      
      Discussion: https://postgr.es/m/20351.1581868306%40sss.pgh.pa.us
      8021985d
    • Fujii Masao's avatar
      Fix mesurement of elapsed time during truncating heap in VACUUM. · 00749197
      Fujii Masao authored
      VACUUM may truncate heap in several batches. The activity report
      is logged for each batch, and contains the number of pages in the table
      before and after the truncation, and also the elapsed time during
      the truncation. Previously the elapsed time reported in each batch was
      the total elapsed time since starting the truncation until finishing
      each batch. For example, if the truncation was processed dividing into
      three batches, the second batch reported the accumulated time elapsed
      during both first and second batches. This is strange and confusing
      because the number of pages in the table reported together is not
      total. Instead, each batch should report the time elapsed during
      only that batch.
      
      The cause of this issue was that the resource usage snapshot was
      initialized only at the beginning of the truncation and was never
      reset later. This commit fixes the issue by changing VACUUM so that
      the resource usage snapshot is reset at each batch.
      
      Back-patch to all supported branches.
      
      Reported-by: Tatsuhito Kasahara
      Author: Tatsuhito Kasahara
      Reviewed-by: Masahiko Sawada, Fujii Masao
      Discussion: https://postgr.es/m/CAP0=ZVJsf=NvQuy+QXQZ7B=ZVLoDV_JzsVC1FRsF1G18i3zMGg@mail.gmail.com
      00749197
    • Michael Paquier's avatar
      Clean up some code, comments and docs referring to Windows 2000 and older · e2e02191
      Michael Paquier authored
      This fixes and updates a couple of comments related to outdated Windows
      versions.  Particularly, src/common/exec.c had a fallback implementation
      to read a file's line from a pipe because stdin/stdout/stderr does not
      exist in Windows 2000 that is removed to simplify src/common/ as there
      are unlikely versions of Postgres running on such platforms.
      
      Author: Michael Paquier
      Reviewed-by: Kyotaro Horiguchi, Juan José Santamaría Flecha
      Discussion: https://postgr.es/m/20191219021526.GC4202@paquier.xyz
      e2e02191
    • Amit Kapila's avatar
      Stop demanding that top xact must be seen before subxact in decoding. · e3ff789a
      Amit Kapila authored
      Manifested as
      
      ERROR:  subtransaction logged without previous top-level txn record
      
      this check forbids legit behaviours like
       - First xl_xact_assignment record is beyond reading, i.e. earlier
         restart_lsn.
       - After restart_lsn there is some change of a subxact.
       - After that, there is second xl_xact_assignment (for another subxact)
         revealing the relationship between top and first subxact.
      
      Such a transaction won't be streamed anyway because we hadn't seen it in
      full.  Saying for sure whether xact of some record encountered after
      the snapshot was deserialized can be streamed or not requires to know
      whether it wrote something before deserialization point --if yes, it
      hasn't been seen in full and can't be decoded. Snapshot doesn't have such
      info, so there is no easy way to relax the check.
      
      Reported-by: Hsu, John
      Diagnosed-by: Arseny Sher
      Author: Arseny Sher, Amit Kapila
      Reviewed-by: Amit Kapila, Dilip Kumar
      Backpatch-through: 9.5
      Discussion: https://postgr.es/m/AB5978B2-1772-4FEE-A245-74C91704ECB0@amazon.com
      e3ff789a
    • Peter Geoghegan's avatar
      Remove obsolete _bt_compare() comment. · fe9b9285
      Peter Geoghegan authored
      btbuild() has nothing to say about how NULL values compare in nbtree.
      Besides, there are _bt_compare() header comments that describe how NULL
      values are handled.
      fe9b9285
  6. 18 Feb, 2020 3 commits
  7. 17 Feb, 2020 3 commits