我尝试使用函数get_rel_name(OID)来获取表名,但输出为NULL,有人可以告诉我为什么以及如何在postgresql的后端获取表名?谢谢。
for (rti = 1; rti < root->simple_rel_array_size; rti++)
{
RelOptInfo *rel = root->simple_rel_array[rti];
printf("rel->relid=%d %s \n",rel->relid, get_rel_name(rel->relid));
}
在下面的函数中的src / backend / optimizer / path / costsize.c中。
void
cost_seqscan(Path *path, PlannerInfo *root,
RelOptInfo *baserel, ParamPathInfo *param_info)
答案 0 :(得分:0)
我明白了,应该是
for (rti = 1; rti < root->simple_rel_array_size; rti++)
{
RangeTblEntry *rte=root->simple_rte_array[rti];
printf("table name is %s \n",get_rel_name(rte->relid));
}