* create_subqueryscan_path * Creates a path corresponding to a scan of a subquery, * returning the pathnode. */
| 3041 | * returning the pathnode. |
| 3042 | */ |
| 3043 | SubqueryScanPath * |
| 3044 | create_subqueryscan_path(PlannerInfo *root, RelOptInfo *rel, Path *subpath, |
| 3045 | List *pathkeys, CdbPathLocus locus, Relids required_outer) |
| 3046 | { |
| 3047 | SubqueryScanPath *pathnode = makeNode(SubqueryScanPath); |
| 3048 | |
| 3049 | pathnode->path.pathtype = T_SubqueryScan; |
| 3050 | pathnode->path.parent = rel; |
| 3051 | pathnode->path.pathtarget = rel->reltarget; |
| 3052 | pathnode->path.param_info = get_baserel_parampathinfo(root, rel, |
| 3053 | required_outer); |
| 3054 | pathnode->path.parallel_aware = false; |
| 3055 | pathnode->path.parallel_safe = rel->consider_parallel && |
| 3056 | subpath->parallel_safe; |
| 3057 | pathnode->path.parallel_workers = subpath->parallel_workers; |
| 3058 | pathnode->path.pathkeys = pathkeys; |
| 3059 | pathnode->subpath = subpath; |
| 3060 | |
| 3061 | pathnode->path.locus = locus; |
| 3062 | pathnode->path.motionHazard = subpath->motionHazard; |
| 3063 | pathnode->path.barrierHazard = subpath->barrierHazard; |
| 3064 | pathnode->path.rescannable = false; |
| 3065 | pathnode->path.sameslice_relids = NULL; |
| 3066 | |
| 3067 | pathnode->required_outer = bms_copy(required_outer); |
| 3068 | cost_subqueryscan(pathnode, root, rel, pathnode->path.param_info); |
| 3069 | |
| 3070 | return pathnode; |
| 3071 | } |
| 3072 | |
| 3073 | /* |
| 3074 | * create_functionscan_path |
no test coverage detected