Retire obsolete collection identity before replacement agreement

This commit is contained in:
2026-10-24 00:51:10 +00:00
parent d2e20a304a
commit 146e7e56d9
8 changed files with 242 additions and 43 deletions

View File

@@ -148,21 +148,29 @@ func resolveCollectionPolicy(
result.policy.explicitMode = declaredMode
result.policy.explicitModePresent = true
result.policy.modeLocation = cloneLocation(declaredModeLocation)
result.operation = declaredMode
} else if lower != nil && lower.explicitModePresent {
result.policy.explicitMode = lower.explicitMode
result.policy.explicitModePresent = true
result.policy.modeLocation = cloneLocation(lower.modeLocation)
result.operation = lower.explicitMode
} else if len(result.effectiveIdentityFields) != 0 {
result.operation = sequenceModeUpsert
} else {
result.operation = sequenceModeReplace
}
result.operation = collectionOperationMode(declaredMode, result.policy.explicitMode, len(result.effectiveIdentityFields) != 0)
return result, nil
}
func collectionOperationMode(current, retained sequenceMode, identified bool) sequenceMode {
if current != 0 {
return current
}
if retained != 0 {
return retained
}
if identified {
return sequenceModeUpsert
}
return sequenceModeReplace
}
func cloneSequenceDeclarations(declarations []sequenceDeclarationSpec) []sequenceDeclarationSpec {
if declarations == nil {
return nil