- Add Go SDK support for nullable vector columns across dense, binary, sparse, and int8 vector types
- Add nullable column constructors for vector fields: NewNullableColumnFloatVector, NewNullableColumnBinaryVector, NewNullableColumnFloat16Vector, NewNullableColumnBFloat16Vector, NewNullableColumnInt8Vector, and NewNullableColumnSparseFloatVector
- Add nullable vector response decoding in FieldDataColumn for FloatVector, BinaryVector, Float16Vector, BFloat16Vector, SparseFloatVector, and Int8Vector
- Add upsert helpers WithArrayAppend(fieldName), WithArrayRemove(fieldName), and WithFieldPartialOp(fieldName, op) for Array field partial updates
- Add Column.ValidCount() support so nullable columns can report the number of non-null rows separately from total row count
- Update Go SDK version constant to 2.6.5 and milvus-proto/go-api/v2 to v2.6.17
- Validate that vector fields added to existing collections are nullable before sending AddCollectionField requests
- Handle empty value sets in sparse vector column serialization by emitting dimension 0 to prevent panics in all-null nullable sparse vector columns
Highlights
- Adds Go SDK support for nullable vector columns across dense, binary, sparse, and int8 vector types.
- Adds Array field partial update helpers for
ARRAY_APPENDandARRAY_REMOVEin upsert requests. - Validates that vector fields added to existing collections are nullable before sending
AddCollectionFieldrequests. - Bumps the Go SDK version constant to
2.6.5and updatesmilvus-proto/go-api/v2tov2.6.17.
New Features
-
Nullable vector columns: Added nullable column constructors for vector fields:
NewNullableColumnFloatVector,NewNullableColumnBinaryVector,NewNullableColumnFloat16Vector,NewNullableColumnBFloat16Vector,NewNullableColumnInt8Vector, andNewNullableColumnSparseFloatVector. These constructors accept compact non-null vector values plusvalidData, and validate that the values length matches the valid row count. (#49848) -
Nullable vector response decoding:
FieldDataColumnnow decodes nullable vector field data usingValidDataforFloatVector,BinaryVector,Float16Vector,BFloat16Vector,SparseFloatVector, andInt8Vector. Null rows are preserved in the returned column while compact wire-format vector payloads are expanded back to row-aligned columns. (#49848) -
Array partial update operations: Added upsert helpers
WithArrayAppend(fieldName),WithArrayRemove(fieldName), andWithFieldPartialOp(fieldName, op)for Array field partial updates. Non-REPLACEfield ops are serialized intoUpsertRequest.FieldOpsand automatically enablepartial_updatefor both column-based and row-based upserts. (#49328)
Bug Fixes
-
AddCollectionField vector validation:
AddCollectionFieldnow validates options before sending the RPC and rejects vector fields added to existing collections unless the field is markednullable=true, preventing invalid schema changes from reaching the server. (#49848) -
All-null sparse vector handling: Sparse vector column serialization now handles empty value sets by emitting dimension
0, allowing all-null nullable sparse vector columns to round-trip without panics or invalid dimension calculations. (#49848) -
Nullable column row counts: Added
Column.ValidCount()support so nullable columns can report the number of non-null rows separately from total row count. Struct-array columns return their total length. (#49848)
Contributors
- @marcelo-cjl
- @weiliu1031