我如何从postgresql中的OID获取表名?

时间:2014-09-16 10:00:45

标签: postgresql postgresql-9.3

我尝试使用函数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)

1 个答案:

答案 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));
}