我正在使用 C 在 PostgreSQL 中为自己制作一个 FDW(外国数据包装器)。
它看起来工作很初级,但我有一个问题。
当我通过 psql 向它传递如下查询时:
select * from FOREIGN_TABLE_A where COL1=1 and COL2=1;
...然后 FDW 忽略第二个搜索谓词(COL2=1)
。
如何让 PostgreSQL 使用我的第二个搜索谓词?
我尝试调试,但 PostgreSQL 从未返回任何有用的结果。
是否有任何规则允许 PostgreSQL 在 FDW 中使用多个谓词GetForeignRelSize()
,GetForeignPaths()
或者GetForeignPlan()
?
由您的外部数据包装器来推动所有
WHERE
条件。条件作为to和
WHERE
的一部分传递。 是的. 看来您的代码仅使用该列表的第一个元素。RelOptInfo *baserel
GetForeignRelSize
GetForeignPaths
baserel->baserestrictinfo
List *
RestrictInfo *