Re: [HACKERS] Parallel Append implementation

Amit Khandekar <amitdkhan.pg@gmail.com>

From: Amit Khandekar <amitdkhan.pg@gmail.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: amul sul <sulamul@gmail.com>, Rajkumar Raghuwanshi <rajkumar.raghuwanshi@enterprisedb.com>, Rafia Sabih <rafia.sabih@enterprisedb.com>, Amit Kapila <amit.kapila16@gmail.com>, Andres Freund <andres@anarazel.de>, Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2017-12-06T10:21:13Z
Lists: pgsql-hackers
On 6 December 2017 at 04:01, Robert Haas <robertmhaas@gmail.com> wrote:
> On Tue, Nov 28, 2017 at 6:02 AM, amul sul <sulamul@gmail.com> wrote:
>> Here are the changes I did on v21 patch to handle crash reported by Rajkumar[1]:
>>
>> diff --git a/src/backend/executor/nodeAppend.c
>> b/src/backend/executor/nodeAppend.c
>> index e3b17cf0e2..e0ee918808 100644
>> --- a/src/backend/executor/nodeAppend.c
>> +++ b/src/backend/executor/nodeAppend.c
>> @@ -479,9 +479,12 @@ choose_next_subplan_for_worker(AppendState *node)
>>             pstate->pa_next_plan = append->first_partial_plan;
>>         else
>>             pstate->pa_next_plan++;
>> -       if (pstate->pa_next_plan == node->as_whichplan)
>> +
>> +       if (pstate->pa_next_plan == node->as_whichplan ||
>> +           (pstate->pa_next_plan == append->first_partial_plan &&
>> +            append->first_partial_plan >= node->as_nplans))
>>         {
>> -           /* We've tried everything! */
>> +           /* We've tried everything or there were no partial plans */
>>             pstate->pa_next_plan = INVALID_SUBPLAN_INDEX;
>>             LWLockRelease(&pstate->pa_lock);
>>             return false;
>
> I changed this around a little, added a test case, and committed this.

Thanks Robert !

The crash that is reported on pgsql-committers, is being discussed on
that list itself.

>
> --
> Robert Haas
> EnterpriseDB: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company



-- 
Thanks,
-Amit Khandekar
EnterpriseDB Corporation
The Postgres Database Company


Commits

  1. Update parallel.sgml for Parallel Append

  2. Support Parallel Append plan nodes.

  3. Remove BufFile's isTemp flag.

  4. Improve comments for parallel executor estimation functions.

  5. Separate reinitialization of shared parallel-scan state from ExecReScan.

  6. Eat XIDs more efficiently in recovery TAP test.

  7. Avoid syntax error on platforms that have neither LOCALE_T nor ICU.

  8. Preparatory refactoring for parallel merge join support.