leborchuk commented on code in PR #1524:
URL: https://github.com/apache/cloudberry/pull/1524#discussion_r2681387965


##########
src/backend/gpopt/translate/CTranslatorRelcacheToDXL.cpp:
##########
@@ -3147,18 +3147,36 @@ 
CTranslatorRelcacheToDXL::RetrieveStorageTypeForPartitionedTable(Relation rel)
                                                "Queries with partitions of 
greenplum_fdw are not supported"));
                        }
                        GPOS_DELETE(fdw_name_str);
+
+                       // Check for mixed storage before continuing
+                       // If we already encountered non-foreign partitions, 
mark as mixed
+                       if (rel_storage_type != 
IMDRelation::ErelstorageSentinel &&
+                               rel_storage_type != 
IMDRelation::ErelstorageForeign)
+                       {
+                               // Already have non-foreign partition(s), now 
found foreign → mixed
+                               rel_storage_type = 
IMDRelation::ErelstorageMixedPartitioned;
+                       }
+                       else if (rel_storage_type == 
IMDRelation::ErelstorageSentinel)
+                       {
+                               // First partition is foreign
+                               rel_storage_type = 
IMDRelation::ErelstorageForeign;
+                       }
                        continue;
                }
                all_foreign = false;
                if (rel_storage_type == IMDRelation::ErelstorageSentinel)
                {
                        rel_storage_type = child_storage;
                }
-
+               else if (rel_storage_type == IMDRelation::ErelstorageForeign)
+               {
+                       // Previously had foreign partition(s), now found 
non-foreign → mixed
+                       rel_storage_type = 
IMDRelation::ErelstorageMixedPartitioned;
+               }
                // mark any partitioned table with supported partitions of 
mixed storage types,
                // this is more conservative for certain skans (eg: we can't do 
an index scan if any
                // partition is ao, we must only do a sequential or bitmap scan)
-               if (rel_storage_type != child_storage)
+               else if (rel_storage_type != child_storage)

Review Comment:
   Sorry, but in which cases this logic failed? For me it should always set 
ErelstorageMixedPartitioned in a case of mixed storage options



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to