@@ -313,7 +313,6 @@ ExecInitPartitionInfo(ModifyTableState *mtstate,
313
313
MemoryContext oldContext ;
314
314
AttrNumber * part_attnos = NULL ;
315
315
bool found_whole_row ;
316
- bool equalTupdescs ;
317
316
318
317
/*
319
318
* We locked all the partitions in ExecSetupPartitionTupleRouting
@@ -361,10 +360,6 @@ ExecInitPartitionInfo(ModifyTableState *mtstate,
361
360
(node != NULL &&
362
361
node -> onConflictAction != ONCONFLICT_NONE ));
363
362
364
- /* if tuple descs are identical, we don't need to map the attrs */
365
- equalTupdescs = equalTupleDescs (RelationGetDescr (partrel ),
366
- RelationGetDescr (firstResultRel ));
367
-
368
363
/*
369
364
* Build WITH CHECK OPTION constraints for the partition. Note that we
370
365
* didn't build the withCheckOptionList for partitions within the planner,
@@ -405,21 +400,18 @@ ExecInitPartitionInfo(ModifyTableState *mtstate,
405
400
/*
406
401
* Convert Vars in it to contain this partition's attribute numbers.
407
402
*/
408
- if (!equalTupdescs )
409
- {
410
- part_attnos =
411
- convert_tuples_by_name_map (RelationGetDescr (partrel ),
412
- RelationGetDescr (firstResultRel ),
413
- gettext_noop ("could not convert row type" ));
414
- wcoList = (List * )
415
- map_variable_attnos ((Node * ) wcoList ,
416
- firstVarno , 0 ,
417
- part_attnos ,
418
- RelationGetDescr (firstResultRel )-> natts ,
419
- RelationGetForm (partrel )-> reltype ,
420
- & found_whole_row );
421
- /* We ignore the value of found_whole_row. */
422
- }
403
+ part_attnos =
404
+ convert_tuples_by_name_map (RelationGetDescr (partrel ),
405
+ RelationGetDescr (firstResultRel ),
406
+ gettext_noop ("could not convert row type" ));
407
+ wcoList = (List * )
408
+ map_variable_attnos ((Node * ) wcoList ,
409
+ firstVarno , 0 ,
410
+ part_attnos ,
411
+ RelationGetDescr (firstResultRel )-> natts ,
412
+ RelationGetForm (partrel )-> reltype ,
413
+ & found_whole_row );
414
+ /* We ignore the value of found_whole_row. */
423
415
424
416
foreach (ll , wcoList )
425
417
{
@@ -464,25 +456,22 @@ ExecInitPartitionInfo(ModifyTableState *mtstate,
464
456
*/
465
457
returningList = linitial (node -> returningLists );
466
458
467
- if (!equalTupdescs )
468
- {
469
- /*
470
- * Convert Vars in it to contain this partition's attribute numbers.
471
- */
472
- if (part_attnos == NULL )
473
- part_attnos =
474
- convert_tuples_by_name_map (RelationGetDescr (partrel ),
475
- RelationGetDescr (firstResultRel ),
476
- gettext_noop ("could not convert row type" ));
477
- returningList = (List * )
478
- map_variable_attnos ((Node * ) returningList ,
479
- firstVarno , 0 ,
480
- part_attnos ,
481
- RelationGetDescr (firstResultRel )-> natts ,
482
- RelationGetForm (partrel )-> reltype ,
483
- & found_whole_row );
484
- /* We ignore the value of found_whole_row. */
485
- }
459
+ /*
460
+ * Convert Vars in it to contain this partition's attribute numbers.
461
+ */
462
+ if (part_attnos == NULL )
463
+ part_attnos =
464
+ convert_tuples_by_name_map (RelationGetDescr (partrel ),
465
+ RelationGetDescr (firstResultRel ),
466
+ gettext_noop ("could not convert row type" ));
467
+ returningList = (List * )
468
+ map_variable_attnos ((Node * ) returningList ,
469
+ firstVarno , 0 ,
470
+ part_attnos ,
471
+ RelationGetDescr (firstResultRel )-> natts ,
472
+ RelationGetForm (partrel )-> reltype ,
473
+ & found_whole_row );
474
+ /* We ignore the value of found_whole_row. */
486
475
487
476
leaf_part_rri -> ri_returningList = returningList ;
488
477
@@ -583,33 +572,30 @@ ExecInitPartitionInfo(ModifyTableState *mtstate,
583
572
* target relation (firstVarno).
584
573
*/
585
574
onconflset = (List * ) copyObject ((Node * ) node -> onConflictSet );
586
- if (!equalTupdescs )
587
- {
588
- if (part_attnos == NULL )
589
- part_attnos =
590
- convert_tuples_by_name_map (RelationGetDescr (partrel ),
591
- RelationGetDescr (firstResultRel ),
592
- gettext_noop ("could not convert row type" ));
593
- onconflset = (List * )
594
- map_variable_attnos ((Node * ) onconflset ,
595
- INNER_VAR , 0 ,
596
- part_attnos ,
597
- RelationGetDescr (firstResultRel )-> natts ,
598
- RelationGetForm (partrel )-> reltype ,
599
- & found_whole_row );
600
- /* We ignore the value of found_whole_row. */
601
- onconflset = (List * )
602
- map_variable_attnos ((Node * ) onconflset ,
603
- firstVarno , 0 ,
604
- part_attnos ,
605
- RelationGetDescr (firstResultRel )-> natts ,
606
- RelationGetForm (partrel )-> reltype ,
607
- & found_whole_row );
608
- /* We ignore the value of found_whole_row. */
609
-
610
- /* Finally, adjust this tlist to match the partition. */
611
- onconflset = adjust_partition_tlist (onconflset , map );
612
- }
575
+ if (part_attnos == NULL )
576
+ part_attnos =
577
+ convert_tuples_by_name_map (RelationGetDescr (partrel ),
578
+ RelationGetDescr (firstResultRel ),
579
+ gettext_noop ("could not convert row type" ));
580
+ onconflset = (List * )
581
+ map_variable_attnos ((Node * ) onconflset ,
582
+ INNER_VAR , 0 ,
583
+ part_attnos ,
584
+ RelationGetDescr (firstResultRel )-> natts ,
585
+ RelationGetForm (partrel )-> reltype ,
586
+ & found_whole_row );
587
+ /* We ignore the value of found_whole_row. */
588
+ onconflset = (List * )
589
+ map_variable_attnos ((Node * ) onconflset ,
590
+ firstVarno , 0 ,
591
+ part_attnos ,
592
+ RelationGetDescr (firstResultRel )-> natts ,
593
+ RelationGetForm (partrel )-> reltype ,
594
+ & found_whole_row );
595
+ /* We ignore the value of found_whole_row. */
596
+
597
+ /* Finally, adjust this tlist to match the partition. */
598
+ onconflset = adjust_partition_tlist (onconflset , map );
613
599
614
600
/*
615
601
* Build UPDATE SET's projection info. The user of this
@@ -637,25 +623,22 @@ ExecInitPartitionInfo(ModifyTableState *mtstate,
637
623
List * clause ;
638
624
639
625
clause = copyObject ((List * ) node -> onConflictWhere );
640
- if (!equalTupdescs )
641
- {
642
- clause = (List * )
643
- map_variable_attnos ((Node * ) clause ,
644
- INNER_VAR , 0 ,
645
- part_attnos ,
646
- RelationGetDescr (firstResultRel )-> natts ,
647
- RelationGetForm (partrel )-> reltype ,
648
- & found_whole_row );
649
- /* We ignore the value of found_whole_row. */
650
- clause = (List * )
651
- map_variable_attnos ((Node * ) clause ,
652
- firstVarno , 0 ,
653
- part_attnos ,
654
- RelationGetDescr (firstResultRel )-> natts ,
655
- RelationGetForm (partrel )-> reltype ,
656
- & found_whole_row );
657
- /* We ignore the value of found_whole_row. */
658
- }
626
+ clause = (List * )
627
+ map_variable_attnos ((Node * ) clause ,
628
+ INNER_VAR , 0 ,
629
+ part_attnos ,
630
+ RelationGetDescr (firstResultRel )-> natts ,
631
+ RelationGetForm (partrel )-> reltype ,
632
+ & found_whole_row );
633
+ /* We ignore the value of found_whole_row. */
634
+ clause = (List * )
635
+ map_variable_attnos ((Node * ) clause ,
636
+ firstVarno , 0 ,
637
+ part_attnos ,
638
+ RelationGetDescr (firstResultRel )-> natts ,
639
+ RelationGetForm (partrel )-> reltype ,
640
+ & found_whole_row );
641
+ /* We ignore the value of found_whole_row. */
659
642
leaf_part_rri -> ri_onConflict -> oc_WhereClause =
660
643
ExecInitQual ((List * ) clause , & mtstate -> ps );
661
644
}
0 commit comments