On Fri, Jul 23, 2021 at 6:55 PM Robert Haas <robertmh...@gmail.com> wrote: > > On Wed, Jul 21, 2021 at 11:55 PM Amit Kapila <amit.kapil...@gmail.com> wrote: > > I see here we have a mix of opinions from various people. Dilip seems > > to be favoring the approach where we provide some option to the user > > for partitioned tables and automatic behavior for non-partitioned > > tables but he also seems to have mild concerns about this behavior. > > OTOH, Greg and Hou-San seem to favor an approach where we can provide > > an option to the user for both partitioned and non-partitioned tables. > > I am also in favor of providing an option to the user for the sake of > > consistency in behavior and not trying to introduce a special kind of > > invalidation as it doesn't serve the purpose for partitioned tables. > > Robert seems to be in favor of automatic behavior but it is not very > > clear to me if he is fine with dealing differently for partitioned and > > non-partitioned relations. Robert, can you please provide your opinion > > on what do you think is the best way to move forward here? > > I thought we had agreed on handling partitioned and unpartitioned > tables differently, but maybe I misunderstood the discussion. >
I think for the consistency argument how about allowing users to specify a parallel-safety option for both partitioned and non-partitioned relations but for non-partitioned relations if users didn't specify, it would be computed automatically? If the user has specified parallel-safety option for non-partitioned relation then we would consider that instead of computing the value by ourselves. Another reason for hesitation to do automatically for non-partitioned relations was the new invalidation which will invalidate the cached parallel-safety for all relations in relcache for a particular database. As mentioned by Hou-San [1], it seems we need to do this whenever any function's parallel-safety is changed. OTOH, changing parallel-safety for a function is probably not that often to matter in practice which is why I think you seem to be fine with this idea. So, I think, on that premise, it is okay to go ahead with different handling for partitioned and non-partitioned relations here. [1] - https://www.postgresql.org/message-id/OS0PR01MB5716EC1D07ACCA24373C2557941B9%40OS0PR01MB5716.jpnprd01.prod.outlook.com -- With Regards, Amit Kapila.