139139aqo_set_baserel_rows_estimate (PlannerInfo * root ,RelOptInfo * rel )
140140{
141141double predicted ;
142- Oid relid ;
143- List * relids = NIL ;
142+ RangeTblEntry * rte ;
143+ List * relnames = NIL ;
144144List * selectivities = NULL ;
145145List * clauses ;
146146int fss = 0 ;
@@ -161,19 +161,24 @@ aqo_set_baserel_rows_estimate(PlannerInfo *root, RelOptInfo *rel)
161161gotodefault_estimator ;
162162}
163163
164- relid = planner_rt_fetch (rel -> relid ,root )-> relid ;
165- if (OidIsValid (relid ))
166- /* Predict for a plane table only. */
167- relids = list_make1_int (relid );
164+ rte = planner_rt_fetch (rel -> relid ,root );
165+ if (rte && OidIsValid (rte -> relid ))
166+ {
167+ String * s = makeNode (String );
168+
169+ /* Predict for a plane table. */
170+ Assert (rte -> eref && rte -> eref -> aliasname );
171+ s -> sval = pstrdup (rte -> eref -> aliasname );
172+ relnames = list_make1 (s );
173+ }
168174
169175clauses = aqo_get_clauses (root ,rel -> baserestrictinfo );
170- predicted = predict_for_relation (clauses ,selectivities ,
171- relids ,& fss );
176+ predicted = predict_for_relation (clauses ,selectivities ,relnames ,& fss );
172177rel -> fss_hash = fss ;
173178
174179list_free_deep (selectivities );
175180list_free (clauses );
176- list_free (relids );
181+ list_free (relnames );
177182
178183if (predicted >=0 )
179184{
@@ -209,8 +214,8 @@ aqo_get_parameterized_baserel_size(PlannerInfo *root,
209214List * param_clauses )
210215{
211216double predicted ;
212- Oid relid = InvalidOid ;
213- List * relids = NIL ;
217+ RangeTblEntry * rte = NULL ;
218+ List * relnames = NIL ;
214219List * allclauses = NULL ;
215220List * selectivities = NULL ;
216221ListCell * l ;
@@ -219,7 +224,7 @@ aqo_get_parameterized_baserel_size(PlannerInfo *root,
219224int * args_hash ;
220225int * eclass_hash ;
221226int current_hash ;
222- int fss = 0 ;
227+ int fss = 0 ;
223228
224229if (IsQueryDisabled ())
225230/* Fast path */
@@ -233,7 +238,7 @@ aqo_get_parameterized_baserel_size(PlannerInfo *root,
233238aqo_get_clauses (root ,rel -> baserestrictinfo ));
234239selectivities = get_selectivities (root ,allclauses ,rel -> relid ,
235240JOIN_INNER ,NULL );
236- relid = planner_rt_fetch (rel -> relid ,root )-> relid ;
241+ rte = planner_rt_fetch (rel -> relid ,root );
237242get_eclasses (allclauses ,& nargs ,& args_hash ,& eclass_hash );
238243
239244mcxt = MemoryContextSwitchTo (CacheMemoryContext );
@@ -242,7 +247,7 @@ aqo_get_parameterized_baserel_size(PlannerInfo *root,
242247current_hash = get_clause_hash (
243248((RestrictInfo * )lfirst (l ))-> clause ,
244249nargs ,args_hash ,eclass_hash );
245- cache_selectivity (current_hash ,rel -> relid ,relid ,
250+ cache_selectivity (current_hash ,rel -> relid ,rte -> relid ,
246251* ((double * )lfirst (l2 )));
247252}
248253
@@ -262,11 +267,17 @@ aqo_get_parameterized_baserel_size(PlannerInfo *root,
262267gotodefault_estimator ;
263268}
264269
265- if (OidIsValid (relid ))
266- /* Predict for a plane table only. */
267- relids = list_make1_int (relid );
270+ if (rte && OidIsValid (rte -> relid ))
271+ {
272+ String * s = makeNode (String );
273+
274+ /* Predict for a plane table. */
275+ Assert (rte -> eref && rte -> eref -> aliasname );
276+ s -> sval = pstrdup (rte -> eref -> aliasname );
277+ relnames = list_make1 (s );
278+ }
268279
269- predicted = predict_for_relation (allclauses ,selectivities ,relids ,& fss );
280+ predicted = predict_for_relation (allclauses ,selectivities ,relnames ,& fss );
270281
271282predicted_ppi_rows = predicted ;
272283fss_ppi_hash = fss ;
@@ -291,7 +302,7 @@ aqo_set_joinrel_size_estimates(PlannerInfo *root, RelOptInfo *rel,
291302List * restrictlist )
292303{
293304double predicted ;
294- List * relids ;
305+ List * relnames ;
295306List * outer_clauses ;
296307List * inner_clauses ;
297308List * allclauses ;
@@ -317,7 +328,7 @@ aqo_set_joinrel_size_estimates(PlannerInfo *root, RelOptInfo *rel,
317328gotodefault_estimator ;
318329}
319330
320- relids = get_list_of_relids (root ,rel -> relids );
331+ relnames = get_relnames (root ,rel -> relids );
321332outer_clauses = get_path_clauses (outer_rel -> cheapest_total_path ,root ,
322333& outer_selectivities );
323334inner_clauses = get_path_clauses (inner_rel -> cheapest_total_path ,root ,
@@ -328,7 +339,7 @@ aqo_set_joinrel_size_estimates(PlannerInfo *root, RelOptInfo *rel,
328339list_concat (outer_selectivities ,
329340inner_selectivities ));
330341
331- predicted = predict_for_relation (allclauses ,selectivities ,relids ,& fss );
342+ predicted = predict_for_relation (allclauses ,selectivities ,relnames ,& fss );
332343rel -> fss_hash = fss ;
333344
334345if (predicted >=0 )
@@ -359,7 +370,7 @@ aqo_get_parameterized_joinrel_size(PlannerInfo *root,
359370List * clauses )
360371{
361372double predicted ;
362- List * relids ;
373+ List * relnames ;
363374List * outer_clauses ;
364375List * inner_clauses ;
365376List * allclauses ;
@@ -385,7 +396,7 @@ aqo_get_parameterized_joinrel_size(PlannerInfo *root,
385396gotodefault_estimator ;
386397}
387398
388- relids = get_list_of_relids (root ,rel -> relids );
399+ relnames = get_relnames (root ,rel -> relids );
389400outer_clauses = get_path_clauses (outer_path ,root ,& outer_selectivities );
390401inner_clauses = get_path_clauses (inner_path ,root ,& inner_selectivities );
391402allclauses = list_concat (aqo_get_clauses (root ,clauses ),
@@ -394,7 +405,7 @@ aqo_get_parameterized_joinrel_size(PlannerInfo *root,
394405list_concat (outer_selectivities ,
395406inner_selectivities ));
396407
397- predicted = predict_for_relation (allclauses ,selectivities ,relids ,& fss );
408+ predicted = predict_for_relation (allclauses ,selectivities ,relnames ,& fss );
398409
399410predicted_ppi_rows = predicted ;
400411fss_ppi_hash = fss ;
@@ -421,13 +432,13 @@ predict_num_groups(PlannerInfo *root, Path *subpath, List *group_exprs,
421432child_fss = subpath -> parent -> fss_hash ;
422433else
423434{
424- List * relids ;
435+ List * relnames ;
425436List * clauses ;
426437List * selectivities = NIL ;
427438
428- relids = get_list_of_relids (root ,subpath -> parent -> relids );
439+ relnames = get_relnames (root ,subpath -> parent -> relids );
429440clauses = get_path_clauses (subpath ,root ,& selectivities );
430- (void )predict_for_relation (clauses ,selectivities ,relids ,& child_fss );
441+ (void )predict_for_relation (clauses ,selectivities ,relnames ,& child_fss );
431442}
432443
433444* fss = get_grouped_exprs_hash (child_fss ,group_exprs );