From: | Haribabu Kommi <kommi(dot)haribabu(at)gmail(dot)com> |
---|---|
To: | Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> |
Cc: | Robert Haas <robertmhaas(at)gmail(dot)com>, Anastasia Lubennikova <a(dot)lubennikova(at)postgrespro(dot)ru>, Anastasia Lubennikova <lubennikovaav(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>, Rahila Syed <rahilasyed(dot)90(at)gmail(dot)com> |
Subject: | Re: Parallel Index Scans |
Date: | 2017-01-18 00:55:47 |
Message-ID: | CAJrrPGdHxbOFNkia0qvK9b_PREgnSs6C3pUvrg9hzEz9Dv9ipw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Mon, Jan 16, 2017 at 11:11 PM, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
wrote:
>
> Changed as per suggestion.
>
>
> I have also rebased the optimizer/executor support patch
> (parallel_index_opt_exec_support_v4.patch) and added a test case in
> it.
Thanks for the patch. Here are comments found during review.
parallel_index_scan_v4.patch:
+ amtarget = (char *) ((void *) target) + offset;
The above calcuation can be moved after NULL check?
+ * index_beginscan_parallel - join parallel index scan
The name and the description doesn't sync properly, any better description?
+ BTPARALLEL_DONE,
+ BTPARALLEL_IDLE
+} PS_State;
The order of above two enum values can be changed according to their use.
+ /* Check if the scan for current scan keys is finished */
+ if (so->arrayKeyCount < btscan->btps_arrayKeyCount)
+ *status = false;
I didn't clearly understand, in which scenario the arrayKeyCount is less
than btps_arrayKeyCount?
+BlockNumber
+_bt_parallel_seize(IndexScanDesc scan, bool *status)
The return value of the above function is validated only in _bt_first
function, but in other cases it is not. From the function description,
it is possible to return P_NONE for the workers also with status as
true. I feel it is better to handle the P_NONE case internally only
so that callers just check for the status. Am i missing anything?
+extern BlockNumber _bt_parallel_seize(IndexScanDesc scan, bool *status);
+extern void _bt_parallel_release(IndexScanDesc scan, BlockNumber
scan_page);
Any better names for the above functions, as these function will provide/set
the next page that needs to be read.
parallel_index_opt_exec_support_v4.patch:
+#include "access/parallel.h"
Why is it required to be include nbtree.c? i didn't find
any code changes in the patch.
+ /* reset (parallel) index scan */
+ if (node->iss_ScanDesc)
+ {
Why this if check required? There is an assert check in later function
calls.
Regards,
Hari Babu
Fujitsu Australia
From | Date | Subject | |
---|---|---|---|
Next Message | Michael Paquier | 2017-01-18 01:35:01 | Re: Re: Clarifying "server starting" messaging in pg_ctl start without --wait |
Previous Message | Tomas Vondra | 2017-01-18 00:11:55 | Re: PoC: Grouped base relation |