Skip to content

Commit

Permalink
Refactor cdbpath_motion_for_parallel_join() by outer join inner style
Browse files Browse the repository at this point in the history
We have separated join locus function for non-parallel and parallel
mode into cdbpath_motion_for_join() which handles for locus whose
parallel_workers is 0 and cdbpath_motion_for_parallel_join() which
handles others.

A lot of logic are meaningless in cdbpath_motion_for_parallel_join():
  1.Writeable operations for join.
  2.Both sides's locus parallel_workers are no more than one.
  3.Some locus couldn't participate parallel join yet now.

We have done the job for SegmentGeneralWorkers as outer side join
with other locus as inner side, but lack for other types.
Refactoring that to keep codes clear.
Some wrong logic are found and left CBDB_PARALLEL_FIXME to remind us
to resolve them in upcoming fixes.

Main changes:
SingleQE join SegmentGeneralWorkers.
SingleQE join Partitioned(workers>1), except HashedOJ.
SegmentGeneral as outer, Assert(false).
Partitioned(workers>1) join SegmentGeneral.
Partitioned(workers>1) join SegmentGeneralWorkers.
Partitioned(workers>1) join SingleQE.
Partitioned join Partitioned are handled as cdbpath_motion_for_join().
Remove all if conditions for inner side locus.

Authored-by: Zhang Mingli avamingli@gmail.com
  • Loading branch information
avamingli committed Oct 8, 2023
1 parent b966aac commit 41b0295
Show file tree
Hide file tree
Showing 3 changed files with 226 additions and 455 deletions.
Loading

0 comments on commit 41b0295

Please sign in to comment.