Skip to content

Commit 7c2ee25

Browse files
committed
Composite attributes: Reject composite values as single bindings
1 parent dfea441 commit 7c2ee25

1 file changed

Lines changed: 9 additions & 0 deletions

File tree

‎Sources/CoreModelSQLite/AttributeValue.swift‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ internal extension AttributeValue {
4646
return .double(value)
4747
case let .decimal(value):
4848
return .text(value.description)
49+
case .composite:
50+
// A composite has no single binding: it is expanded into one binding per leaf
51+
// column by `ModelData.columnValues(for:)`. Reaching here means a composite was
52+
// used where a scalar is required, e.g. as a predicate constant.
53+
return nil
4954
}
5055
}
5156

@@ -116,6 +121,10 @@ internal extension AttributeValue {
116121
throw SQLiteDatabaseError.invalidBinding(binding, type)
117122
}
118123
self = .decimal(value)
124+
case .composite:
125+
// Composites are reassembled from their leaf columns by
126+
// `AttributeValue.decode(attribute:row:)`, never from a single binding.
127+
throw SQLiteDatabaseError.invalidBinding(binding, type)
119128
}
120129
}
121130
}

0 commit comments

Comments
 (0)