On Mon, Dec 21, 2020 at 09:42:47AM -0800, Andres Freund wrote: > On 2020-12-20 15:54:31 -0800, Peter Geoghegan wrote: > > On Sun, Dec 20, 2020 at 3:13 PM Andres Freund <and...@anarazel.de> wrote: > > > Hm. Do I understand correctly that this problem is hit solely because > > > the parallel mode code relies on there already have been a transaction > > > snapshot set, thus avoiding the error? And that the code normally only > > > works because GetTransactionSnapshot() will already have been called > > > somewhere, before EnterParallelMode()? > > > > It seems unlikely that InitializeParallelDSM() was ever intended to be > > run in a background worker. > > IDK, the environment in a bgworker shouldn't be that different from the > normal query environment in a normal connection. And it's far from > insane to want to be able to run a paralell query in a bgworker (and I > *think* I have seen that work before). This case here seems more like > an accidental dependency than anything to me, once that could perhaps > even hint at problems in normal backends too.
Yeah. SPI_execute("TRUNCATE foo", false, 0) has no trouble doing a parallel index build in a bgworker. Let's ignore intention and be pleased about that.