client/v2.6.4
milvus-io/milvusclient/v2.6.4May 8, 2026by congqixia
AI Summary
This Go SDK release completes struct-array support, enabling vector sub-fields and EmbeddingList/MAX_SIM search. It fixes custom gRPC DialOptions to preserve default settings.
Key Highlights
- Completes Go SDK struct-array support, especially vector sub-fields.
- Adds EmbeddingList search vector types for MAX_SIM queries.
- Adds a gRPC authority configuration for proxy-based routing.
- Fixes custom gRPC DialOptions so they no longer drop SDK defaults.
New Features
- Struct-array vector sub-field columns
- EmbeddingList search vector types
- Struct-array insert/upsert helper
- gRPC authority configuration
Full Release Notes
### Highlights - Completes Go SDK (`client/v2`) struct-array support, especially vector sub-fields and EmbeddingList/MAX_SIM search. - Fixes custom gRPC `DialOptions` so they no longer drop the SDK's default keepalive, backoff, and max receive message-size settings. ### New Features - **Struct-array vector sub-field columns**: Added vector-array column types for struct-array vector sub-fields: `ColumnFloatVectorArray`, `ColumnFloat16VectorArray`, `ColumnBFloat16VectorArray`, `ColumnBinaryVectorArray`, and `ColumnInt8VectorArray`. These support `ArrayOfVector` sub-fields inside struct arrays. (#49164) - **EmbeddingList search vector types**: Added `entity.FloatVectorArray`, `entity.Float16VectorArray`, `entity.BFloat16VectorArray`, `entity.BinaryVectorArray`, and `entity.Int8VectorArray`, dispatching them to the matching `PlaceholderType_EmbList*` values. This enables MAX_SIM / EmbeddingList search against struct-array vector sub-fields such as `clips[clip_emb]`. (#49164) - **Struct-array insert/upsert helper**: Added `WithStructArrayColumn(name, structSchema, rows)` to column-based insert/upsert options. The helper accepts `[]map[string]any` row data and infers scalar/vector sub-column types from the provided struct schema. (#49164) - **gRPC authority configuration**: Added `ClientConfig.WithGrpcAuthority(authority)` for proxy-based routing through the gRPC `:authority` header. (#49186) ### Bug Fixes - **Default gRPC dial options are preserved**: `Client.dialOptions()` now always applies `DefaultGrpcOpts` before user-provided `DialOptions`, retaining SDK defaults for keepalive, backoff, and max receive message size while still allowing caller overrides. (#49186, issue #48828) - **Struct-array schema validation**: Added `Schema.Validate()` and `StructSchema.Validate()` and wired validation into `CreateCollection`. Invalid struct-array sub-fields are rejected before the RPC, including nested array/struct fields, sparse vector sub-fields, duplicate sub-field names, and top-level-only flags such as primary key, partition key, clustering key, nullable, default value, dynamic, and autoID. (#49164, issue #49163) - **Struct-array schema round trip**: `Schema.ReadProto()` now restores `StructArrayFields`, and `ProtoMessage()` preserves `max_capacity` by propagating the parent setting to sub-fields when needed. `Array` / `ArrayOfVector` wrappers from the server are unwrapped back to user-facing scalar/vector sub-field types. (#49164) - **Struct-array write correctness**: `columnStructArray` now enforces equal lengths across sub-fields, appends a row atomically with rollback on partial sub-field failure, and serializes top-level struct-array field data as `DataType_ArrayOfStruct`. (#49164) - **Vector-array response decoding**: Query/search result decoding now handles `DataType_ArrayOfVector`, validates nil vector rows, validates payload lengths against dimension/width, rejects invalid binary vector dimensions, and preserves vector-array sub-field data in Go column types. (#49164) - **Builder error handling**: `WithStructArrayColumn` stores construction errors and returns them from `InsertRequest` / `UpsertRequest` instead of panicking during chained builder calls. (#49164) ### Contributors - @zhuwenxing - @liliu-z - @milanchovatiya-boop