On Thu, Jun 14, 2018 at 9:54 PM, Tom Lane <t...@sss.pgh.pa.us> wrote: > Rajkumar Raghuwanshi <rajkumar.raghuwan...@enterprisedb.com> writes: >> I am getting a server crash for below test case. > >> postgres=# CREATE TABLE test( c1 int, c2 int, c3 text) partition by >> range(c1); >> CREATE TABLE >> postgres=# create table test_p1 partition of test for values from >> (minvalue) to (0); >> CREATE TABLE >> postgres=# create table test_p2 partition of test for values from (0) to >> (maxvalue); >> CREATE TABLE >> postgres=# >> postgres=# select (select max((select t1.c2 from test t1 where t1.c1 = >> t2.c1))) from test t2; >> server closed the connection unexpectedly > > Reproduced here. The assert seems to be happening because > add_paths_to_append_rel is trying to create a parallel path for > an appendrel that is marked consider_parallel = false. > > This appears to be the fault of commit ab7271677, whose authors I've cc'd: > the stanza starting at about allpaths.c:1672 is bullheadedly creating a > parallel path whether that's allowed or not. Fixing it might be as simple > as adding "rel->consider_parallel" to the conditions there. >
Yeah, or perhaps disallow creation of any partial paths at the first place like in attached. This will save us some work as well. -- With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com
fix_pa_path_generation_v1.patch
Description: Binary data