On Fri, Feb 13, 2015 at 2:40 AM, Robert Haas <robertmh...@gmail.com> wrote: > > On Thu, Feb 12, 2015 at 3:52 PM, Amit Kapila <amit.kapil...@gmail.com> wrote: > >> Probably not, because many queries will scan multiple relations, and > >> we want to do all of this work just once per query. > > > > By this, do you mean to say that if there is any parallel-unsafe > > expression (function call) in query, then we won't parallelize any > > part of query, if so why is that mandatory? > > Because of stuff like set_config() and txid_current(), which will fail > outright in parallel mode. Also because the user may have defined a > function that updates some other table in the database, which will > also fail outright if called in parallel mode. Instead of failing, we > want those kinds of things to fall back to a non-parallel plan. > > > Can't we parallelize scan on a particular relation if all the expressions > > in which that relation is involved are parallel-safe > > No, because the execution of that node can be interleaved in arbitrary > fashion with all the other nodes in the plan tree. Once we've got > parallel mode active, all the related prohibitions apply to > *everything* we do thereafter, not just that one node. >
Okay, got the point. With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com