hi:
in allpath.c ,the set_plan_rel_pathlist() function has a parameter of RangeTblEntry type. what does we use this varaible to do ? i doesn't see any code in this function using it . In optimizer module, it look like that we can get most information from Query . Is it right ? so , what time use Query? what time use RangeTblEntry? Are there any rule? Kao 136 /* 137 * set_plain_rel_pathlist 138 * Build access paths for a plain relation (no subquery, no inheritance) 139 */ 140 static void 141 set_plain_rel_pathlist(Query *root, RelOptInfo *rel, RangeTblEntry *rte) 142 { 143 /* Mark rel with estimated output rows, width, etc */ 144 set_baserel_size_estimates(root, rel); 145 146 /* 147 * Generate paths and add them to the rel's pathlist. 148 * 149 * Note: add_path() will discard any paths that are dominated by another 150 * available path, keeping only those paths that are superior along at 151 * least one dimension of cost or sortedness. 152 */ 153 154 /* Consider sequential scan */ 155 add_path(rel, create_seqscan_path(root, rel)); 156 157 /* Consider TID scans */ 158 create_tidscan_paths(root, rel); 159 160 /* Consider index paths for both simple and OR index clauses */ 161 create_index_paths(root, rel); 162 163 /* create_index_paths must be done before create_or_index_paths */ 164 create_or_index_paths(root, rel); 165 166 /* Now find the cheapest of the paths for this rel */ 167 set_cheapest(rel); 168 } 169 -- |