@@ -381,14 +381,16 @@ scan_result_parts_storage(ResultPartsStorage *parts_storage, Oid partid)
381
381
}
382
382
383
383
/* Refresh PartRelationInfo for the partition in storage */
384
- void
384
+ PartRelationInfo *
385
385
refresh_result_parts_storage (ResultPartsStorage * parts_storage , Oid partid )
386
386
{
387
387
if (partid == PrelParentRelid (parts_storage -> prel ))
388
388
{
389
389
close_pathman_relation_info (parts_storage -> prel );
390
390
parts_storage -> prel = get_pathman_relation_info (partid );
391
391
shout_if_prel_is_invalid (partid , parts_storage -> prel , PT_ANY );
392
+
393
+ return parts_storage -> prel ;
392
394
}
393
395
else
394
396
{
@@ -398,12 +400,14 @@ refresh_result_parts_storage(ResultPartsStorage *parts_storage, Oid partid)
398
400
(const void * ) & partid ,
399
401
HASH_FIND , NULL );
400
402
401
- if (rri_holder && rri_holder -> prel )
402
- {
403
- close_pathman_relation_info (rri_holder -> prel );
404
- rri_holder -> prel = get_pathman_relation_info (partid );
405
- shout_if_prel_is_invalid (partid , rri_holder -> prel , PT_ANY );
406
- }
403
+ /* We must have entry (since we got 'prel' from it) */
404
+ Assert (rri_holder && rri_holder -> prel );
405
+
406
+ close_pathman_relation_info (rri_holder -> prel );
407
+ rri_holder -> prel = get_pathman_relation_info (partid );
408
+ shout_if_prel_is_invalid (partid , rri_holder -> prel , PT_ANY );
409
+
410
+ return rri_holder -> prel ;
407
411
}
408
412
}
409
413
@@ -543,7 +547,7 @@ select_partition_for_insert(ResultPartsStorage *parts_storage,
543
547
if ((nparts == 0 || result == NULL ) && !PrelIsFresh (prel ))
544
548
{
545
549
/* Try building a new 'prel' for this relation */
546
- refresh_result_parts_storage (parts_storage , parent_relid );
550
+ prel = refresh_result_parts_storage (parts_storage , parent_relid );
547
551
}
548
552
549
553
/* This partition is a parent itself */
@@ -557,6 +561,8 @@ select_partition_for_insert(ResultPartsStorage *parts_storage,
557
561
/* Repeat with a new dispatch */
558
562
result = NULL ;
559
563
}
564
+
565
+ Assert (prel );
560
566
}
561
567
/* Loop until we get some result */
562
568
while (result == NULL );
0 commit comments