*** pgsql/src/backend/optimizer/util/pathnode.c 2009/09/12 22:12:04 1.153 --- pgsql/src/backend/optimizer/util/pathnode.c 2009/09/17 20:49:29 1.154 *************** *** 8,14 **** * * * IDENTIFICATION ! * $PostgreSQL: pgsql/src/backend/optimizer/util/pathnode.c,v 1.152 2009/06/11 14:48:59 momjian Exp $ * *------------------------------------------------------------------------- */ --- 8,14 ---- * * * IDENTIFICATION ! * $PostgreSQL: pgsql/src/backend/optimizer/util/pathnode.c,v 1.153 2009/09/12 22:12:04 tgl Exp $ * *------------------------------------------------------------------------- */ *************** distinct_col_search(int colno, List *col *** 1216,1221 **** --- 1216,1241 ---- } /* + * create_noop_path + * Creates a path equivalent to the input subpath, but having a different + * parent rel. This is used when a join is found to be removable. + */ + NoOpPath * + create_noop_path(PlannerInfo *root, RelOptInfo *rel, Path *subpath) + { + NoOpPath *pathnode = makeNode(NoOpPath); + + pathnode->path.pathtype = T_Join; /* by convention */ + pathnode->path.parent = rel; + pathnode->path.startup_cost = subpath->startup_cost; + pathnode->path.total_cost = subpath->total_cost; + pathnode->path.pathkeys = subpath->pathkeys; + pathnode->subpath = subpath; + + return pathnode; + } + + /* * create_subqueryscan_path * Creates a path corresponding to a sequential scan of a subquery, * returning the pathnode.