@@ -374,20 +374,28 @@ make_partition_filter(Plan *subplan, Oid parent_relid,
374374CustomScan * cscan = makeNode (CustomScan );
375375Relation parent_rel ;
376376
377+ /* Currenly we don't support ON CONFLICT clauses */
378+ if (conflict_action != ONCONFLICT_NONE )
379+ ereport (ERROR ,
380+ (errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
381+ errmsg ("ON CONFLICT clause is not supported with partitioned tables" )));
382+
383+ /* Copy costs etc */
377384cscan -> scan .plan .startup_cost = subplan -> startup_cost ;
378385cscan -> scan .plan .total_cost = subplan -> total_cost ;
379386cscan -> scan .plan .plan_rows = subplan -> plan_rows ;
380387cscan -> scan .plan .plan_width = subplan -> plan_width ;
381388
389+ /* Setup methods and child plan */
382390cscan -> methods = & partition_filter_plan_methods ;
383391cscan -> custom_plans = list_make1 (subplan );
384392
393+ /* Build an appropriate target list using a cached Relation entry */
385394parent_rel = RelationIdGetRelation (parent_relid );
386- cscan -> scan .plan .targetlist = pfilter_build_tlist (parent_rel ,
387- subplan -> targetlist );
395+ cscan -> scan .plan .targetlist = pfilter_build_tlist (parent_rel ,subplan -> targetlist );
388396RelationClose (parent_rel );
389397
390- /* No relation will be scanned */
398+ /* Nophysical relation will be scanned */
391399cscan -> scan .scanrelid = 0 ;
392400cscan -> custom_scan_tlist = subplan -> targetlist ;
393401