diff options
Diffstat (limited to 'contrib/postgres_fdw/postgres_fdw.c')
-rw-r--r-- | contrib/postgres_fdw/postgres_fdw.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/contrib/postgres_fdw/postgres_fdw.c b/contrib/postgres_fdw/postgres_fdw.c index 9369cfc2656..5699252091b 100644 --- a/contrib/postgres_fdw/postgres_fdw.c +++ b/contrib/postgres_fdw/postgres_fdw.c @@ -1582,6 +1582,7 @@ postgresPlanForeignModify(PlannerInfo *root, Relation rel; StringInfoData sql; List *targetAttrs = NIL; + List *withCheckOptionList = NIL; List *returningList = NIL; List *retrieved_attrs = NIL; bool doNothing = false; @@ -1631,6 +1632,13 @@ postgresPlanForeignModify(PlannerInfo *root, } /* + * Extract the relevant WITH CHECK OPTION list if any. + */ + if (plan->withCheckOptionLists) + withCheckOptionList = (List *) list_nth(plan->withCheckOptionLists, + subplan_index); + + /* * Extract the relevant RETURNING list if any. */ if (plan->returningLists) @@ -1655,12 +1663,14 @@ postgresPlanForeignModify(PlannerInfo *root, { case CMD_INSERT: deparseInsertSql(&sql, rte, resultRelation, rel, - targetAttrs, doNothing, returningList, + targetAttrs, doNothing, + withCheckOptionList, returningList, &retrieved_attrs); break; case CMD_UPDATE: deparseUpdateSql(&sql, rte, resultRelation, rel, - targetAttrs, returningList, + targetAttrs, + withCheckOptionList, returningList, &retrieved_attrs); break; case CMD_DELETE: @@ -2046,7 +2056,9 @@ postgresBeginForeignInsert(ModifyTableState *mtstate, /* Construct the SQL command string. */ deparseInsertSql(&sql, rte, resultRelation, rel, targetAttrs, doNothing, - resultRelInfo->ri_returningList, &retrieved_attrs); + resultRelInfo->ri_WithCheckOptions, + resultRelInfo->ri_returningList, + &retrieved_attrs); /* Construct an execution state. */ fmstate = create_foreign_modify(mtstate->ps.state, |