c – 取限定词 – postgresql

c – 取限定词 – postgresql,第1张

概述我正在研究 postgresql 8.4源代码.我需要从查询中推断出限定符(where part). 例如,如果查询是:从学生中选择名称,其中年龄> 18 我需要知道“年龄”和“18”. 我已经以这种方式获取了目标列表和范围列表 Query *query_idr = (Query *)linitial(querytree_list);ListCell *l;ListCell *tl;fore 我正在研究 postgresql 8.4源代码.我需要从查询中推断出限定符(where part).

例如,如果查询是:从学生中选择名称,其中年龄> 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(带有第一个foreach)和ID列的ID(带有第二个foreach),但是我无法理解我必须如何使用限定符.

这是可导航的查询结构http://doxygen.postgresql.org/structQuery.html

解决方法 我怀疑你会在这里得到答案.一般来说,使用Postgresql源代码的人很可能没有足够的人来回答它这样的一般网站会有所帮助.然而,我没有留下任何这样的资源,我想回复提供一个资源列表,用于回答像这样的问题,以及我阅读文档作为有相当多经验的人在Pg上建立东西.

实质上,您要尝试的是浏览查询的解析树.在我看来,setoperations成员可能只是因为我无法想到其他任何地方,因为这可能有助于连接条件和where子句过滤器(请记住这些被计划者认为是可互换的).但是我在这方面经验不多,所以我错了.

我完全会认为pgsql-Hackers列表可能是提出这类问题的最佳位置.你可能会在那里得到更好的答案.

总结

以上是内存溢出为你收集整理的c – 取限定词 – postgresql全部内容,希望文章能够帮你解决c – 取限定词 – postgresql所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1226580.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存