Estou fazendo um FDW (Foreign Data Wrapper) no PostgreSQL para mim usando C.
Parece estar funcionando rudimentarmente, mas tenho um problema.
Quando passo uma consulta como a seguinte via psql:
select * from FOREIGN_TABLE_A where COL1=1 and COL2=1;
...então o FDW ignora o segundo predicado de pesquisa (COL2=1)
.
Como posso fazer o PostgreSQL usar meu segundo predicado de pesquisa?
Tentei depurar, mas o PostgreSQL nunca retornou nenhum resultado útil.
Existem regras para permitir que o PostgreSQL use vários predicados em um FDW GetForeignRelSize()
em GetForeignPaths()
ou GetForeignPlan()
?
Cabe ao seu wrapper de dados externo eliminar todas as
WHERE
condições.As
WHERE
condições são passadas como parte deRelOptInfo *baserel
toGetForeignRelSize
eGetForeignPaths
.baserel->baserestrictinfo
é umList *
deRestrictInfo *
. Parece que o seu código usa apenas o primeiro elemento dessa lista.