Thread: How to prohibit parallel scan through tableam?

How to prohibit parallel scan through tableam?

From
Konstantin Knizhnik
Date:
Hi hackers,

I wonder how it is possible to prohibit parallel scan for the external 
storage accessed through tableam?
For example if I want to implement specialized tableam for fast access 
to temp tables, how can I inform optimizer that
parallel scan is not possible (because table data is local to the backend)?

Thanks in advance,

-- 
Konstantin Knizhnik
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company




Re: How to prohibit parallel scan through tableam?

From
Rafia Sabih
Date:


On Wed, 27 Nov 2019 at 12:33, Konstantin Knizhnik <k.knizhnik@postgrespro.ru> wrote:
Hi hackers,

I wonder how it is possible to prohibit parallel scan for the external
storage accessed through tableam?
For example if I want to implement specialized tableam for fast access
to temp tables, how can I inform optimizer that
parallel scan is not possible (because table data is local to the backend)?

 How about setting parallel_setup_cost to disable_cost in costsize.c for your specific scan method.

--
Regards,
Rafia Sabih

Re: How to prohibit parallel scan through tableam?

From
Konstantin Knizhnik
Date:


On 27.11.2019 15:12, Rafia Sabih wrote:


On Wed, 27 Nov 2019 at 12:33, Konstantin Knizhnik <k.knizhnik@postgrespro.ru> wrote:
Hi hackers,

I wonder how it is possible to prohibit parallel scan for the external
storage accessed through tableam?
For example if I want to implement specialized tableam for fast access
to temp tables, how can I inform optimizer that
parallel scan is not possible (because table data is local to the backend)?

 How about setting parallel_setup_cost to disable_cost in costsize.c for your specific scan method.

How can I do it if i just implementing my AM and not going to change any postgres code?

-- 
Konstantin Knizhnik
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company 

Re: How to prohibit parallel scan through tableam?

From
Rafia Sabih
Date:


On Wed, 27 Nov 2019 at 12:33, Konstantin Knizhnik <k.knizhnik@postgrespro.ru> wrote:
Hi hackers,

I wonder how it is possible to prohibit parallel scan for the external
storage accessed through tableam?
For example if I want to implement specialized tableam for fast access
to temp tables, how can I inform optimizer that
parallel scan is not possible (because table data is local to the backend)?

One moment, isn't that parallel scans are already restricted for temp tables, or I have misunderstood something here...? 
 


--
Regards,
Rafia Sabih

Re: How to prohibit parallel scan through tableam?

From
Andres Freund
Date:
Hi,

On 2019-11-27 14:33:42 +0300, Konstantin Knizhnik wrote:
> I wonder how it is possible to prohibit parallel scan for the external
> storage accessed through tableam?
> For example if I want to implement specialized tableam for fast access to
> temp tables, how can I inform optimizer that
> parallel scan is not possible (because table data is local to the backend)?

I don't think there currently is a good way to do so - but it shouldn't
be hard to add that capability.

Greetings,

Andres Freund



Re: How to prohibit parallel scan through tableam?

From
Andres Freund
Date:
Hi,

On 2019-11-27 16:10:20 +0300, Konstantin Knizhnik wrote:
> On 27.11.2019 15:12, Rafia Sabih wrote:
> > On Wed, 27 Nov 2019 at 12:33, Konstantin Knizhnik
> > <k.knizhnik@postgrespro.ru <mailto:k.knizhnik@postgrespro.ru>> wrote:
> > 
> >     Hi hackers,
> > 
> >     I wonder how it is possible to prohibit parallel scan for the
> >     external
> >     storage accessed through tableam?
> >     For example if I want to implement specialized tableam for fast
> >     access
> >     to temp tables, how can I inform optimizer that
> >     parallel scan is not possible (because table data is local to the
> >     backend)?
> > 
> >  How about setting parallel_setup_cost to disable_cost in costsize.c for
> > your specific scan method.
> 
> How can I do it if i just implementing my AM and not going to change any
> postgres code?

I think a set_rel_pathlist hook that prevents parallel paths from being
considered would be your best bet for now. But I encourage you to
suggest a patch to tableam to support it properly in future releases.

Greetings,

Andres Freund