私はpostgresql 8.4ソースコードに取り組んでいます。クエリから修飾子 (where 部分) を推定する必要があります。
たとえば、クエリが次の場合: 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(2番目のforeachを使用)を取得しましたが、修飾子を取得する方法がわかりません。
ナビゲート可能なクエリ構造は次のとおりですhttp://doxygen.postgresql.org/structQuery.html