leborchuk commented on code in PR #1524:
URL: https://github.com/apache/cloudberry/pull/1524#discussion_r2693358878
##########
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:
Quite cumbersome for me logic here. I missed continue in a case of Foreign
partition. Yep, now understood all, thank you.
--
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]