@@ -381,14 +381,16 @@ scan_result_parts_storage(ResultPartsStorage *parts_storage, Oid partid)
381381}
382382
383383/* Refresh PartRelationInfo for the partition in storage */
384- void
384+ PartRelationInfo *
385385refresh_result_parts_storage (ResultPartsStorage * parts_storage ,Oid partid )
386386{
387387if (partid == PrelParentRelid (parts_storage -> prel ))
388388{
389389close_pathman_relation_info (parts_storage -> prel );
390390parts_storage -> prel = get_pathman_relation_info (partid );
391391shout_if_prel_is_invalid (partid ,parts_storage -> prel ,PT_ANY );
392+
393+ return parts_storage -> prel ;
392394}
393395else
394396{
@@ -398,12 +400,14 @@ refresh_result_parts_storage(ResultPartsStorage *parts_storage, Oid partid)
398400 (const void * )& partid ,
399401HASH_FIND ,NULL );
400402
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 ;
407411}
408412}
409413
@@ -543,7 +547,7 @@ select_partition_for_insert(ResultPartsStorage *parts_storage,
543547if ((nparts == 0 || result == NULL )&& !PrelIsFresh (prel ))
544548{
545549/* 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 );
547551}
548552
549553/* This partition is a parent itself */
@@ -557,6 +561,8 @@ select_partition_for_insert(ResultPartsStorage *parts_storage,
557561/* Repeat with a new dispatch */
558562result = NULL ;
559563}
564+
565+ Assert (prel );
560566}
561567/* Loop until we get some result */
562568while (result == NULL );