Re: Retrieving Alias Name
От | Julien Rouhaud |
---|---|
Тема | Re: Retrieving Alias Name |
Дата | |
Msg-id | CAOBaU_ae1s_XYU_a-AFeGnFrfy=b0MXEzVBHRWEkoK9Qiq7XGQ@mail.gmail.com обсуждение исходный текст |
Ответ на | Retrieving Alias Name (Walter Cai <walter@cs.washington.edu>) |
Список | pgsql-hackers |
On Tue, Feb 26, 2019 at 10:48 PM Walter Cai <walter@cs.washington.edu> wrote: > > I'm currently using a (very rough) scheme to retrieve relation names from a PlannerInfo, and a RelOptInfo struct: > > PlannerInfo *root > RelOptInfo *inner_rel > > //... > > RangeTblEntry *rte; > int x = -1; > while ((x = bms_next_member(inner_rel->relids, x)) >= 0) > { > rte = root->simple_rte_array[x]; > if (rte->rtekind == RTE_RELATION) > { > char *rel_name = get_rel_name(rte->relid); > // do stuff... > } > } > > However, I now realize it would be better to access aliases as they appear in the SQL query. For instance, if the querycontains "... FROM rel_name AS rel_alias ..." I would like to retrieve `rel_alias` instead of `rel_name`. > > Is it possible to derive the alias in a similar way? You can use rte->eref->aliasname, which will contain the alias is one was provided, otherwise the original name. You can see RangeTblEntry comment in include/nodes/parsenodes.h for more details.
В списке pgsql-hackers по дате отправления: