On 2016/01/27 21:23, Rushabh Lathia wrote:
> If I understood correctly, above documentation means, that if FDW have
> DMLPushdown APIs that is enough. But in reality thats not the case, we
> need ExecForeignInsert, ExecForeignUpdate, or ExecForeignDelete in case
> DML is not pushable.
>
> And here fact is DMLPushdown APIs are optional for FDW, so that if FDW
> don't have DMLPushdown APIs they can still very well perform the DML
> operations using ExecForeignInsert, ExecForeignUpdate, or
> ExecForeignDelete.
I agree with you. I guess I was wrong. sorry.
> So documentation should be like:
>
> If the IsForeignRelUpdatable pointer is set to NULL, foreign tables are
> assumed to be insertable, updatable, or deletable if the FDW provides
> ExecForeignInsert, ExecForeignUpdate, or ExecForeignDelete respectively,
>
> If FDW provides DMLPushdown APIs and the DML are pushable to the foreign
> server, then FDW still needs ExecForeignInsert, ExecForeignUpdate, or
> ExecForeignDelete for the non-pushable DML operation.
>
> What's your opinion ?
I agree that we should add this to the documentation, too.
BTW, if I understand correctly, I think we should also modify
relation_is_updatabale() accordingly. Am I right?
Best regards,
Etsuro Fujita