Thread

  1. Re: [PATCH] Optionally record Plan IDs to track plan changes for a query

    Андрей Казачков <andrey.kazachkov@tantorlabs.ru> — 2025-12-25T14:27:19Z

      
        Dear PostgreSQL Hackers,
      
      
         
      
      
        I’d like to propose a follow-up fix for a crash caused by jumbling of empty
      
      
        array fields in Plan structures that was introduced in the v5-0003 patch.
      
      
         
      
      
        For your convenience, I attached a minimal reproducible example:
      
      
        ```
      
      
        create table foo as select i as num from generate_series(1, 1000) i;
      
      
        set compute_plan_id to true;
      
      
         
      
      
        -- server closed the connection unexpectedly
      
      
        explain (costs off, verbose)
      
      
        select min(num) from foo;
      
      
        ```
      
      
        In this case the scalar aggregate operator `min(num)` is expressed as an Agg
      
      
        node with an empty array of GROUP BY attributes. The jumble logic can’t handle
      
      
        emptiness and terminates the backend. Similar behavior could happen during
      
      
        jumbling an arbitrary plan node which contains an array.
      
      
         
      
      
        Patchset overview:
      
      
        v6-0001
      
      
        -----------
      
      
        Aggregates changes from v5-0001..v5-0003 and rebases onto master
      
      
        commit b39013b7b1b116b5d9be51f0919b472b58b3a28d.
      
      
         
      
      
        v6-0002
      
      
        -----------
      
      
        Fixes the lack of empty-array handling during jumbling (originally applies on
      
      
        top of v6-0000). For anyone testing on the v5 versions, v6-0001 can be easily
      
      
        applied on top of v5-0003.
      
      
         
      
      
        --
      
      
        Sincerely, Andrey Kazachkov