mirror of
https://github.com/milvus-io/milvus.git
synced 2026-07-21 18:25:44 +00:00
issue: #46953 - GenNullableFieldData only supported scalar types, causing error when partial upsert after adding nullable vector fields issue: #47160 - pickFieldData used row index directly to access Contents array without converting to data index, causing index out of range panic relate: #45993 Row-based processing had two problems: - Nullable vector handling was tightly coupled with other field types, requiring complex special-case logic - Update path was inefficient for nullable vectors: data had to be read first then updated in-place. For example, changing a valid vector to null requires shifting subsequent data since null values are not stored, which is very inefficient. Column-based processing solves both: - Each field type is processed independently, nullable vector logic is cleanly separated from other types - Nullable vectors are appended directly without read-then-update, avoiding expensive data shifting operations - Iterate over fields instead of rows when merging upsert and existing data key changes: - Remove nullable vector special handling: nullableVectorMergeContext, buildNullableVectorIdxMap, rebuildNullableVectorFieldData, etc. - Use generic column utilities: AppendFieldDataByColumn, UpdateFieldDataByColumn - Add vector type support to GenNullableFieldData - Add unit test for nullable vector upsert scenarios --------- Signed-off-by: marcelo-cjl <marcelo.chen@zilliz.com>