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]