comparePartitions compares two lists of partitions.
(engine storepb.Engine, oldPartitions, newPartitions []*storepb.TablePartitionMetadata)
| 1320 | |
| 1321 | // comparePartitions compares two lists of partitions. |
| 1322 | func comparePartitions(engine storepb.Engine, oldPartitions, newPartitions []*storepb.TablePartitionMetadata) []*PartitionDiff { |
| 1323 | var changes []*PartitionDiff |
| 1324 | |
| 1325 | oldPartMap := make(map[string]*storepb.TablePartitionMetadata) |
| 1326 | for _, part := range oldPartitions { |
| 1327 | oldPartMap[part.Name] = part |
| 1328 | } |
| 1329 | |
| 1330 | newPartMap := make(map[string]*storepb.TablePartitionMetadata) |
| 1331 | for _, part := range newPartitions { |
| 1332 | newPartMap[part.Name] = part |
| 1333 | } |
| 1334 | |
| 1335 | // Check for dropped partitions |
| 1336 | for partName, oldPart := range oldPartMap { |
| 1337 | if _, exists := newPartMap[partName]; !exists { |
| 1338 | changes = append(changes, &PartitionDiff{ |
| 1339 | Action: MetadataDiffActionDrop, |
| 1340 | OldPartition: oldPart, |
| 1341 | }) |
| 1342 | } |
| 1343 | } |
| 1344 | |
| 1345 | // Check for new and modified partitions |
| 1346 | for partName, newPart := range newPartMap { |
| 1347 | oldPart, exists := oldPartMap[partName] |
| 1348 | if !exists { |
| 1349 | changes = append(changes, &PartitionDiff{ |
| 1350 | Action: MetadataDiffActionCreate, |
| 1351 | NewPartition: newPart, |
| 1352 | }) |
| 1353 | } else if !partitionsEqual(engine, oldPart, newPart) { |
| 1354 | // Drop the old partition and recreate the new one instead of altering |
| 1355 | changes = append(changes, &PartitionDiff{ |
| 1356 | Action: MetadataDiffActionDrop, |
| 1357 | OldPartition: oldPart, |
| 1358 | }) |
| 1359 | changes = append(changes, &PartitionDiff{ |
| 1360 | Action: MetadataDiffActionCreate, |
| 1361 | NewPartition: newPart, |
| 1362 | }) |
| 1363 | } |
| 1364 | } |
| 1365 | |
| 1366 | return changes |
| 1367 | } |
| 1368 | |
| 1369 | // compareTriggers compares two lists of triggers. |
| 1370 | func compareTriggers(oldTriggers, newTriggers []*storepb.TriggerMetadata) []*TriggerDiff { |
no test coverage detected