1. 25 Oct, 2019 1 commit
    • Michael Paquier's avatar
      Handle interrupts within a transaction context in REINDEX CONCURRENTLY · 8270a0d9
      Michael Paquier authored
      Phases 2 (building the new index) and 3 (validating the new index)
      checked for interrupts outside a transaction context, having as
      consequence to not release session-level locks taken on the parent
      relation and the old and new indexes processed.  This could for example
      be triggered with statement_timeout and a bad timing, and would issue
      confusing error messages when shutting down the session still holding
      the locks (note that an assertion failure would be triggered first), on
      top of more issues with concurrent sessions trying to take a lock that
      would interfere with the SHARE UPDATE EXCLUSIVE locks hold here.
      
      This moves all the interruption checks inside a transaction context.
      Note that I have manually tested all interruptions to make sure that
      invalid indexes can be cleaned up properly.  Partition indexes still
      have issues on their own with some missing dependency handling, which
      will be dealt with in a follow-up patch.
      
      Reported-by: Justin Pryzby
      Author: Michael Paquier
      Discussion: https://postgr.es/m/20191013025145.GC4475@telsasoft.com
      Backpatch-through: 12
      8270a0d9
  2. 24 Oct, 2019 3 commits
  3. 23 Oct, 2019 6 commits
  4. 22 Oct, 2019 2 commits
  5. 21 Oct, 2019 9 commits
  6. 20 Oct, 2019 1 commit
  7. 19 Oct, 2019 5 commits
  8. 18 Oct, 2019 5 commits
  9. 17 Oct, 2019 3 commits
  10. 16 Oct, 2019 5 commits
    • Thomas Munro's avatar
      Fix bug that could try to freeze running multixacts. · 6bda2af0
      Thomas Munro authored
      Commits 801c2dc7 and 801c2dc7 made it possible for vacuum to
      try to freeze a multixact that is still running.  That was
      prevented by a check, but raised an error.  Repair.
      
      Back-patch all the way.
      
      Author: Nathan Bossart, Jeremy Schneider
      Reported-by: Jeremy Schneider
      Reviewed-by: Jim Nasby, Thomas Munro
      Discussion: https://postgr.es/m/DAFB8AFF-2F05-4E33-AD7F-FF8B0F760C17%40amazon.com
      6bda2af0
    • Alvaro Herrera's avatar
      Fix crash when reporting CREATE INDEX progress · 0d21f919
      Alvaro Herrera authored
      A race condition can make us try to dereference a NULL pointer to the
      PGPROC struct of a process that's already finished.  That results in
      crashes during REINDEX CONCURRENTLY and CREATE INDEX CONCURRENTLY.
      
      This was introduced in ab0dfc96, so backpatch to pg12.
      
      Reported by: Justin Pryzby
      Reviewed-by: Michaël Paquier
      Discussion: https://postgr.es/m/20191012004446.GT10470@telsasoft.com
      0d21f919
    • Tomas Vondra's avatar
      Improve the check for pg_catalog.unknown data type in pg_upgrade · a524f50d
      Tomas Vondra authored
      The pg_upgrade check for pg_catalog.unknown type when upgrading from 9.6
      had a couple of issues with domains and composite types - it detected
      even composite types unused in objects with storage. So for example this
      was enough to trigger an unnecessary pg_upgrade failure:
      
        CREATE TYPE unknown_composite AS (u pg_catalog.unknown)
      
      On the other hand, this only happened with composite types directly on
      the pg_catalog.unknown data type, but not with a domain. So this was not
      detected
      
        CREATE DOMAIN unknown_domain AS pg_catalog.unknown;
        CREATE TYPE unknown_composite_2 AS (u unknown_domain);
      
      unlike the first example. These false positives and inconsistencies are
      unfortunate, but what's worse we've failed to detected objects using the
      pg_catalog.unknown type through a domain. So we missed cases like this
      
        CREATE TABLE t (u unknown_composite_2);
      
      The consequence is clusters broken after a pg_upgrade.
      
      This fixes these false positives and false negatives by using the same
      recursive CTE introduced by eaf900e842 for sql_identifier. Backpatch all
      the way to 10, where the of pg_catalog.unknown data type was restricted.
      
      Author: Tomas Vondra
      Backpatch-to: 10-
      Discussion: https://postgr.es/m/16045-673e8fa6b5ace196%40postgresql.org
      a524f50d
    • Tomas Vondra's avatar
      Improve the check for pg_catalog.line data type in pg_upgrade · 8d48e6a7
      Tomas Vondra authored
      The pg_upgrade check for pg_catalog.line data type when upgrading from
      9.3 had a couple of issues with domains and composite types. Firstly, it
      triggered false positives for composite types unused in objects with
      storage. This was enough to trigger an unnecessary pg_upgrade failure:
      
        CREATE TYPE line_composite AS (l pg_catalog.line)
      
      On the other hand, this only happened with composite types directly on
      the pg_catalog.line data type, but not with a domain. So this was not
      detected
      
        CREATE DOMAIN line_domain AS pg_catalog.line;
        CREATE TYPE line_composite_2 AS (l line_domain);
      
      unlike the first example. These false positives and inconsistencies are
      unfortunate, but what's worse we've failed to detected objects using the
      pg_catalog.line data type through a domain. So we missed cases like this
      
        CREATE TABLE t (l line_composite_2);
      
      The consequence is clusters broken after a pg_upgrade.
      
      This fixes these false positives and false negatives by using the same
      recursive CTE introduced by eaf900e842 for sql_identifier. 9.3 did not
      support domains on composite types, but we can still have multi-level
      composite types.
      
      Backpatch all the way to 9.4, where the format for pg_catalog.line data
      type changed.
      
      Author: Tomas Vondra
      Backpatch-to: 9.4-
      Discussion: https://postgr.es/m/16045-673e8fa6b5ace196%40postgresql.org
      8d48e6a7
    • Andres Freund's avatar
      Replace alter_table.sql test usage of event triggers. · ae5cae54
      Andres Freund authored
      The test in 93765bd9 added an event trigger to ensure that the
      tested table rewrites do not get optimized away (as happened in the
      past). But doing so would require running the tests in isolation, as
      otherwise the trigger might also fire in concurrent sessions, causing
      test failures there.
      
      Reported-By: Tom Lane
      Discussion: https://postgr.es/m/3328.1570740683@sss.pgh.pa.us
      Backpatch: 12, just as 93765bd9
      ae5cae54