我正在研究 postgresql 8.4 源代码。我需要从查询中推断出限定词(其中部分)。
例如,如果查询是:select name from student where age > 18
我需要知道“年龄”和“18”。
我已经把目标列表和范围列表这样取了
Query *query_idr = (Query *)linitial(querytree_list);
ListCell *l;
ListCell *tl;
foreach(l, query_idr->rtable){
Oid tab_idT = ((RangeTblEntry *) lfirst(l)) ->relid;
}
foreach(tl, query_idr->targetList){
TargetEntry *tle = (TargetEntry *) lfirst(tl);
Oid col_id = tle->resorigtbl;
}
它有效,我得到了表的 id student
(第一个 foreach)和name
列的 id(第二个 foreach),但我不明白我必须如何使用限定符。