Commit Graph
23881 Commits
Author SHA1 Message Date
Spade AandGitHub 24c87e93c0 feat: impl StructArray -- support creating index for scalar fields (#46599)
issue: https://github.com/milvus-io/milvus/issues/42148

This PR enable struct sub scalar fields to create nested index. The
nested means treating elements in array (we know that all fields in
array of struct are actually array) as separate documents.

The index is used by Struct to speed up Match expression as well as
Element-filter expression. This PR only enable Match expression to be
optmized by index and leave Element-filter expression in the following
PR.
Now, MatchExpr executes sub-expr by using offset inputs. To make it
support index, it also needs to support brute force without offset
inputs, so this PR:
1. enable struct scalar fields to create nested index
2. enable match expr to support brute force without offset input
3. enable match expr to support index

---------

Signed-off-by: SpadeA <tangchenjie1210@gmail.com>
Signed-off-by: SpadeA-Tang <tangchenjie1210@gmail.com>
2026-01-14 16:53:27 +08:00
cqy123456andGitHub eb63a363bd enhance: support minhash function in DIDO (#45322)
issue : https://github.com/milvus-io/milvus/issues/41746
This PR adds MinHash "DIDO" (Data In, Data Out) support to Milvus, which
allows computing MinHash signatures on-the-fly during search operations
instead of requiring pre-stored vectors.

  Key changes:
- Implemented SIMD-optimized C++ MinHash computation (AVX2/AVX512 for
x86, NEON/SVE for ARM)
- Added runtime CPU detection and function hooks to automatically select
the best SIMD implementation
- Integrated MinHash computation into search pipeline (brute force
search, growing segment search)
- Added support for LSH-based MinHash search with configurable band
width and bit width parameters
- Enabled direct text-to-signature conversion during query execution,
reducing storage overhead

This enables efficient text deduplication and similarity search without
storing pre-computed MinHash vectors.

Signed-off-by: cqy123456 <qianya.cheng@zilliz.com>
2026-01-14 14:19:27 +08:00
Spade AandGitHub a8e3d65851 enhance: optimize ngram inverted index by iterative ngram phase 1 execution (#46917)
issue: https://github.com/milvus-io/milvus/issues/46813

---------

Signed-off-by: SpadeA <tangchenjie1210@gmail.com>
2026-01-14 14:11:27 +08:00
jiamingli-makerandGitHub 3e7d9d4a12 test: refine partition insert testcases and add all-datatype case (#47000)
\kind improvement
\assign @yanliang567 

- Skip duplicated partition insert tests:
- test_insert_default_partition (covered by
test_milvus_client_insert_partition)
- test_insert_partition_not_existed (covered by
test_milvus_client_insert_not_exist_partition_name)

- Fix the docstring of
test_milvus_client_insert_not_exist_partition_name to correctly describe
insert behavior with a non-existent partition.

- Strengthen assertions for partition insert tests:

  - Verify total entity count after inserting into multiple partitions.

  - Validate returned primary key IDs when inserting with explicit IDs.

- Fix mismatched test expectations in
`test_insert_auto_id_false_same_values` by aligning the docstring with
actual behavior.
- Add test_insert_all_datatype_collection to validate insert behavior
for collections containing all supported data types using row-based
client insert.

Signed-off-by: zilliz <jiaming.li@zilliz.com>
2026-01-14 11:53:29 +08:00
jiamingli-makerandGitHub 6e2a3abc2f test: fix insert case labels, add field-name mismatch test (#46998)
/kind improvement
/assign @yanliang567 

**PR Summary**

- Skip duplicated client insert tests already covered by existing cases
(e.g. insert after client closed, missing vector field, auto-ID
scenarios).
- Fix test docstrings to accurately describe vector field missing and
vector data type mismatch behaviors.
- Migrate a client insert test (`test_insert_field_name_not_match`).
- Fix CaseLabel tagging to keep consistent with the original ORM-based
testcases.

Signed-off-by: zilliz <jiaming.li@zilliz.com>
2026-01-14 11:51:26 +08:00
junjiejiangjjjandGitHub b9752362d1 feat: Add highlight scores (#47017)
https://github.com/milvus-io/milvus/issues/46994

Signed-off-by: junjie.jiang <junjie.jiang@zilliz.com>
2026-01-14 10:45:27 +08:00
marcelo-cjlandGitHub 2b556dcac7 fix: support nullable vector fields for DiskAnn index (#46846)
issue: #46834 
relate: #45993 

Save valid_data file during DiskAnn index build to fix bitset size
mismatch error when searching with nullable vector fields.

---------

Signed-off-by: marcelo-cjl <marcelo.chen@zilliz.com>
2026-01-14 10:11:27 +08:00
wei liuandGitHub 5d31fca0f5 fix: Improve snapshot restore and RefIndex loading reliability (#46883)
issue: #44358

- Change RestoreSnapshot API to return jobID instead of collectionID,
making the async restore pattern more explicit
- Refactor RestoreData to accept snapshotName instead of snapshotData,
moving the ReadSnapshotData call inside for better encapsulation
- Remove synchronous wait loop from restoreSnapshotV2AckCallback to
avoid blocking the WAL callback
- Implement per-collection RefIndex loading state
(Pending/Loaded/Failed) replacing the global refIndexLoadDone channel
- Add background loader retry mechanism for failed RefIndex loads
- Fix recyclePendingSnapshots to keep catalog record when S3 cleanup
fails, allowing retry in next GC cycle
- Add snapshotMeta.Close() method and call it during server shutdown
- Add SnapshotRefIndexLoadInterval configuration parameter
- Update e2e tests to explicitly wait for restore completion

Signed-off-by: Wei Liu <wei.liu@zilliz.com>
2026-01-13 21:53:27 +08:00
Zhen YeandGitHub 74434dc9ab fix: use revision as streaming service discovery global version (#47022)
issue: #47016

- the node id of mixcoord may roll back, so it doesn't promise monotonic
incresing.
- use the revision of session to promise it strongly.

Signed-off-by: chyezh <chyezh@outlook.com>
2026-01-13 20:29:27 +08:00
sparknackandGitHub f09f47f65c enhance: make DefaultValueChunk multi-cells to save memory usage (#46000)
issue: #45999 

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
- Core invariant: DefaultValueChunkTranslator assumes a constant
per-value byte size (value_size()) for a field and therefore models
default-value storage as multiple deterministic, fixed-size cells
(num_cells(), cell_id_of(uid) == uid). A single contiguous
primary_buffer_ is built (optionally persisted to mmap) and sliced
per-cell; this invariant enables safe sharing of the same underlying
bytes across multiple Chunk views.
- Removed/simplified logic: per-field direct file_path writes and
duplicated make_chunk write paths were collapsed into a buffer-first
flow (ChunkBuffer + create_chunk_buffer + make_chunk_from_buffer). This
removes redundant per-field mmap/write code and allows multiple Chunk
instances to reuse a shared ChunkBuffer/ChunkMmapGuard instead of
performing independent writes.
- Why no data loss or regression: byte layout, alignment, padding and
per-row content are preserved because create_chunk_buffer implements the
same alignment/padding and writes identical bytes previously produced by
the direct make_chunk path; make_chunk_from_buffer constructs Chunk
views over those same bytes. DefaultValueChunkTranslator uses
deterministic math (total_rows_, num_rows_until_chunk_,
primary_cell_rows_) to slice rows—no rows are dropped, reordered, or
altered. Concrete code paths: callers that used create_group_chunk →
per-field make_chunk now use create_group_chunk → create_chunk_buffer →
make_chunk_from_buffer; DefaultValueChunkTranslator’s get_cells(),
estimated_byte_size_of_cell(), and value_size() produce the same
observable outputs as before for single-cell cases and correct per-cell
outputs for multi-cell cases.
- Enhancement / scope: adds multi-cell default-value chunks and optional
mmap-backed persistence plus shared-memory ChunkBuffer support. Changes
touch DefaultValueChunkTranslator (multi-cell behavior, value_size(),
primary_buffer_, mmap_dir_path_), ChunkWriter (ChunkBuffer,
create_chunk_buffer, make_chunk_from_buffer), and
ChunkedSegmentSealedImpl (per-field mmap decision and mmap_dir_path
propagation); comprehensive tests (mmap/non-mmap, nullable,
multi/single-cell) validate correctness.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Shawn Wang <shawn.wang@zilliz.com>
2026-01-13 19:53:27 +08:00
XiaofanandGitHub a37e395295 fix: Remove unnecessary Signed-off-by line from PR body in mgit (#47030)
issue: #47029

Signed-off-by: xiaofanluan <xiaofan.luan@zilliz.com>
2026-01-13 19:19:53 +08:00
cai.zhangandGitHub 209ba4ad35 fix: Ensure all futures complete on exception to prevent use-after-free crash (#46959)
issue: #46958

---------

Signed-off-by: Cai Zhang <cai.zhang@zilliz.com>
2026-01-13 18:05:27 +08:00
Zhen YeandGitHub 7dbfaa487e enhance: avoid extra memory copy for logging from C++, add benchmark (#46991)
issue: #45640

Low log operation, concurrency = 24, log size ranging from 10 bytes to
128 bytes, with no I/O pressure:
BenchmarkGlog-12 96 11075869 ns/op 19092 B/op 32 allocs/op
BenchmarkZapAsyncLog4KB-12 51 20600912 ns/op 574172 B/op 16040 allocs/op
BenchmarkZapAsyncLog4MB-12 52 19306323 ns/op 575164 B/op 16042 allocs/op

Moderate log operation, concurrency = 24, log size ranging from 10 bytes
to 4 KB, under low I/O pressure:

BenchmarkGlog-12 100 11167773 ns/op 19257 B/op 32 allocs/op
BenchmarkZapAsyncLog4KB-12 31 35078185 ns/op 573914 B/op 16040 allocs/op
BenchmarkZapAsyncLog4MB-12 49 24192142 ns/op 569985 B/op 16033 allocs/op

High log operation, concurrency = 24, log size ranging from 10 bytes to
1 MB, under high I/O pressure:

BenchmarkGlog-12 6 395734217 ns/op 23962 B/op 42 allocs/op
BenchmarkZapAsyncLog4KB-12 5 520454474 ns/op 577532 B/op 16062 allocs/op
BenchmarkZapAsyncLog4MB-12 6 203577753 ns/op 766194 B/op 18472 allocs/op

---------

Signed-off-by: chyezh <chyezh@outlook.com>
2026-01-13 17:57:27 +08:00
XuanYang-cnandGitHub 7a070132bb feat: implement KMS key revocation deny read/write (#45936)
Adds KMS key state monitoring and deny reading/writing for abnormal kms

Key Changes:
- Add KeyManager in RootCoord for periodic KMS state polling
- Integrate KeyManager with QuotaCenter for access denial
- Implement revocation checks in Proxy SimpleLimiter

Access Denial:
- Revoked keys: Release collections + deny DML/DQL (DDL still allowed)
- Manual LoadCollection required after key recovery

See also: #45117, #44981, #45242

---------

Signed-off-by: yangxuan <xuan.yang@zilliz.com>
2026-01-13 11:43:28 +08:00
junjiejiangjjjandGitHub 7b1efc7f63 fix: Fix the issue where alterFunction cannot be invoked when multiple functions become invalid (#46984)
https://github.com/milvus-io/milvus/issues/46949

Signed-off-by: junjie.jiang <junjie.jiang@zilliz.com>
2026-01-13 10:57:28 +08:00
cai.zhangandGitHub ff96c5e9f7 fix: Fix GetCredentialInfo not caching RPC response (#46944)
issue: #46941

---------

Signed-off-by: Cai Zhang <cai.zhang@zilliz.com>
2026-01-13 10:45:26 +08:00
b79a655f1c feat: [ExternalTable Part1] Enable create external collection (#46886)
issue: #45881

- Add ExternalSource and ExternalSpec fields to collection schema
- Add ExternalField mapping for field schema to map external columns
- Implement ValidateExternalCollectionSchema() to enforce restrictions:
  - No primary key (virtual PK generated automatically)
  - No dynamic fields, partition keys, clustering keys, or auto ID
  - No text match or function features
  - All user fields must have external_field mapping
- Return virtual PK schema for external collections in
GetPrimaryFieldSchema()
- Skip primary key validation for external collections during creation
- Add comprehensive unit tests and integration tests
- Add design document and user guide

---------

Signed-off-by: Wei Liu <wei.liu@zilliz.com>
Co-authored-by: sunby <sunbingyi1992@gmail.com>
2026-01-13 10:15:27 +08:00
marcelo-cjlandGitHub dcdd897809 fix: skip index creation for nullable vector fields with insufficient valid rows (#46903)
issue: #46890 
related: #45993

Add null_count to binlog metadata and use it to calculate valid rows for
nullable vector fields. Skip index creation when valid rows are less
than MinSegmentNumRowsToEnableIndex.

Signed-off-by: marcelo-cjl <marcelo.chen@zilliz.com>
2026-01-13 10:11:27 +08:00
yihao.daiandGitHub 30d8f9804a fix: Fix shard interceptor incorrectly skip flushallmsg (#47003)
issue: https://github.com/milvus-io/milvus/issues/46799

Signed-off-by: bigsheeper <yihao.dai@zilliz.com>
2026-01-13 10:07:26 +08:00
congqixiaandGitHub b9e9c54843 fix: add valid range validation for collection TTL (#46997)
Related to #46716

Add range validation for collection TTL to prevent invalid values:
- TTL must be greater than or equal to -1 and at most 3155760000 seconds
(100 years)
- Remove redundant TTL validation in alterCollectionTask.PreExecute
- Add unit tests covering boundary cases

---------

Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
2026-01-12 22:13:28 +08:00
XiaofanandGitHub e338728c34 fix: some minor bugs on insertion/deletion path (#46810)
issue: #46809
fix several minor bugs on insertion path

Signed-off-by: xiaofanluan <xiaofan.luan@zilliz.com>
2026-01-12 20:27:27 +08:00
congqixiaandGitHub d8f1186b54 enhance: add storage version upgrade compaction policy (#46990)
Related to #46988

This PR introduces an automated compaction mechanism to upgrade segments
from older storage formats (StorageV1/V2) to newer versions
(StorageV2/V3) without manual intervention.

Key changes:
- Add storageVersionUpgradePolicy to automatically identify and trigger
compaction for segments with outdated storage versions
- Implement token-bucket rate limiting (default: 3 tasks per 120
seconds) to prevent resource contention during upgrades
- Add TriggerTypeStorageVersionUpgrade to compaction trigger types
- Add StorageV3 constant for Loon manifest format support
- Add configuration parameters:
- dataCoord.compaction.storageVersion.enabled (default: true)
- dataCoord.compaction.storageVersion.rateLimitTokens (default: 3)
- dataCoord.compaction.storageVersion.rateLimitInterval (default: 120s)

The policy filters segments based on:
- Healthy and flushed state
- Not currently compacting or importing
- Not L0 level segments
- Storage version differs from target version

Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
2026-01-12 19:57:27 +08:00
sthuangandGitHub be8e8a274d feat: add storage version label to DataCoordNumSegments metric (#46929)
related: https://github.com/milvus-io/milvus/issues/46928

Add segment_storage_version label to track segment counts by storage
version (V1=0, V2=2). This enables monitoring segment distribution
across different storage formats.

Changes:
- Add segmentStorageVersionLabelName constant in metrics.go
- Update DataCoordNumSegments GaugeVec with new label
- Update segMetricMutation struct to track storage version dimension
- Update all WithLabelValues calls in meta.go
- Add unit tests for the new label

Signed-off-by: shaoting-huang <shaoting.huang@zilliz.com>
2026-01-12 19:53:27 +08:00
224c03b969 fix: groupby dynamic field failed to return correct results(#46605) (#46985)
related: #46605

Signed-off-by: MrPresent-Han <chun.han@gmail.com>
Co-authored-by: MrPresent-Han <chun.han@gmail.com>
2026-01-12 19:41:26 +08:00
Spade AandGitHub fc1b77c734 fix: change error log to info (#46955)
issue: https://github.com/milvus-io/milvus/issues/45590

---------

Signed-off-by: SpadeA <tangchenjie1210@gmail.com>
2026-01-12 17:13:27 +08:00
Spade AandGitHub c86ea98b8b fix: revert pre-filter bitset usage for ngram (#46987)
issue: https://github.com/milvus-io/milvus/issues/46813
Pre-filter bitset is for batch size while ngram used it as segment size
bitset.
Revert it first.

Signed-off-by: SpadeA <tangchenjie1210@gmail.com>
2026-01-12 17:01:27 +08:00
congqixiaandGitHub f6f0f34372 enhance: use StorageV3 to mark loon manifest segment info (#46976)
Related to #44956

Introduce StorageV3 constant to distinguish loon manifest format from
StorageV2 packed writer format. When UseLoonFFI is enabled, segments are
now marked with StorageVersion=3 instead of 2.

The V3 format currently shares most V2 logic paths since the underlying
storage format is similar. In a future refactor, V3-specific logic will
be separated from the V2 code path for better readability.

Changes:
- Add StorageV3 constant (value=3) in Go and C++ code
- Set StorageVersion=3 when UseLoonFFI is enabled for:
- Compaction params
- Import segments allocation
- Write buffer growing segments
- Streaming node segment allocation
- Add V3 support to existing V2 code paths (read/write/sync)
- Separate V2 and V3 writer creation in NewBinlogRecordWriter

Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
2026-01-12 16:51:27 +08:00
XiaofanandGitHub 5fb7c4024a feat: Add mgit intelligent Git workflow tool for Milvus development (#46970)
issue: #46969

Signed-off-by: (Checked)

Signed-off-by: xiaofanluan <xiaofan.luan@zilliz.com>
2026-01-12 16:49:32 +08:00
sparknackandGitHub 2ea16b2f6d enhance: add caching layer resource management for streaming node (#46465)
issue: #41435

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added segment resource tracking and automatic memory/disk accounting
during inserts, deletes, loads and reopen.
  * Exposed a configuration to set interim index memory expansion rate.
* Added explicit loaded-resource charge/refund operations and Bloom
filter resource lifecycle management.

* **Bug Fixes**
* Ensured consistent memory-size vs. row-count calculations across
segment operations.
* Improved resource refunding and cleanup when segments are released or
closed.

* **Tests**
* Added comprehensive resource-tracking and concurrency tests, plus
Bloom filter accounting tests.

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Shawn Wang <shawn.wang@zilliz.com>
2026-01-12 15:47:27 +08:00
Zhen YeandGitHub 670f2cc5e8 enhance: streaming service is enabled until the streaming node number is reached (#46981)
issue: #46980

Signed-off-by: chyezh <chyezh@outlook.com>
2026-01-12 14:47:26 +08:00
sthuangandGitHub 7bcd3b1061 enhance: add security controls for /expr endpoin (#46753)
related: https://github.com/milvus-io/milvus/issues/46442

core changes:
- Add  config (default: false) to disable /expr endpoint by default
- On Proxy nodes, require root user authentication via HTTP Basic Auth
when enabled
- On non-Proxy nodes, keep original auth parameter behavior for backward
compatibility
- Add HasRegistered() and AuthBypass to expr package for node type
detection

---------

Signed-off-by: shaoting-huang <shaoting.huang@zilliz.com>
2026-01-12 11:11:27 +08:00
jiamingli-makerandGitHub 2a647751b1 test: add insert testcases for binary vector and none datatype (#46964)
/kind improvement
/assign @yanliang567 

**PR Summary**

- migrate Binary vector insert with schema dimension mismatch.
- migrate insert with None data.
- add `test_milvus_client_insert_binary_default` to cover BINARY_VECTOR,
which was not included in `test_milvus_client_insert_default` (covered
FLOAT_VECTOR, FLOAT16_VECTOR, BFLOAT16_VECTOR, and INT8_VECTOR

Signed-off-by: zilliz <jiaming.li@zilliz.com>
2026-01-12 09:47:27 +08:00
aoiasdandGitHub 88e761adc9 enhance: save BM25 stats to the disk while loading the segment (#46468)
Add a thread pool to load BM25 stats and save them to local disk during
loading, reducing peak memory usage.
relate: https://github.com/milvus-io/milvus/issues/41424

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
- Core invariant: sealed-segment BM25 statistics are immutable and may
be persisted to disk independently from growing-segment stats; IDF state
is reconstructed by combining persisted sealed stats (preloaded from
disk) with in-memory growing stats at runtime (preloadSealed +
RegisterGrowing).
- Capability added: asynchronous BM25 loading via a dedicated
BM25LoadPool (config key common.threadCoreCoefficient.bm25Load and param
BM25LoadThreadCoreCoefficient) — delegator.loadBM25Stats is executed on
the pool to load sealed BM25 stats and call idfOracle.RegisterSealed,
reducing peak memory during segment load.
- Logic removed/simplified and why: the previous single Register(segID,
stats, state) + background local-writer/spool loop was split into
RegisterGrowing (in-memory) and RegisterSealed (sealed + on-disk
persistence) and the localloop removed; RegisterSealed writes sealed
stats directly (ToLocal) and uses singleflight to deduplicate,
eliminating redundant spooling and lifecycle complexity while clarifying
sealed vs growing flows.
- Why this does NOT introduce data loss or behavior regression: sealed
stats are still written and reloaded (RegisterSealed persists to
dirPath; preloadSealed merges disk and memory on first load), growing
segments continue to register in-memory via RegisterGrowing,
loadSegments now defers sealed BM25 handling to loadBM25Stats but still
registers sealed candidates after load, and tests were updated to
reflect RegisterSealed/RegisterGrowing usage—so
serialization/deserialization, preload semantics, and test coverage
preserve existing persisted state and runtime behavior.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Signed-off-by: aoiasd <zhicheng.yue@zilliz.com>
2026-01-09 19:29:26 +08:00
Li LiuandGitHub 7411e904b6 enhance: support search_by_pk for BM25 (#46937)
issue: #39157

Signed-off-by: Li Liu <li.liu@zilliz.com>
2026-01-09 18:59:26 +08:00
jiamingli-makerandGitHub 156e8280f4 test: Fix and add insert tests for auto_id (#46956)
/kind improvement

**PR Summary**

- Add auto_id parameter to test_insert_with_dataframe_values and ensure
consistent failure behavior.

- Skip duplicated auto_id list insert tests
(`test_insert_auto_id_true_list_data`,
`test_insert_auto_id_true_with_list_values`) that covered by
`test_insert_auto_id_true`.

- Fix test_insert_auto_id_true by validating generated primary keys and
their types.

- Add negative test to verify insert fails when providing primary keys
with auto_id=True.

Signed-off-by: zilliz <jiaming.li@zilliz.com>
2026-01-09 18:33:25 +08:00
zhuwenxingandGitHub 4242ef9c0b test: add empty struct array test coverage for bulk writer (#46926)
## Summary
- Remove xfail marker from
`test_import_struct_array_with_local_bulk_writer` as the related
pymilvus issue is fixed
- Add test coverage for empty struct_array in bulk writer tests

## Changes
1. Remove `@pytest.mark.xfail(reason="issue:
https://github.com/milvus-io/pymilvus/issues/3050")` marker
2. Add 10% probability to generate empty `struct_array` (`[]`) in test
data
3. Add logging for empty array count to track test coverage

## Related PRs
- pymilvus fix: https://github.com/milvus-io/pymilvus/pull/3182

## Test Plan
- [x] Tested with Milvus 2.6.8 and pymilvus fix
- [x] Both PARQUET and JSON formats pass
- [x] Empty struct arrays are correctly written, imported, and queried

---------

Signed-off-by: zhuwenxing <wenxing.zhu@zilliz.com>
2026-01-09 18:05:29 +08:00
6a1ce9eee6 enhance: bump milvus-storage and use subtree fs to remove bucket name concatenation (#46866)
Related to #46617

Bump milvus-storage version from 839a8e5 to 2ab2904, which introduces
subtree filesystem support. This allows removing manual bucket name
concatenation logic across the codebase as the storage layer now handles
path prefixing internally.

Changes:
- Remove bucket name prefix logic in datanode, querynode, and storage
layers
- Simplify FileManager::GetRemoteIndexFilePrefixV2()
- Rename CColumnGroups API to CColumnSplits to align with upstream
- Update DiskFileManagerTest paths for new directory structure
- Add FFI packed reader/writer unit tests


Co-authored-by: Wei Liu <wei.liu@zilliz.com>

---------

Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
Co-authored-by: Wei Liu <wei.liu@zilliz.com>
2026-01-09 14:51:25 +08:00
yanliang567andGitHub 6b2076e00d test: Fix issue when searching with empty sparse vector (#46940)
related issue: #46755

Signed-off-by: yanliang567 <yanliang.qiao@zilliz.com>
2026-01-09 14:09:25 +08:00
sparknackandGitHub e45db3dce6 fix: milvus-common update (#46641)
issue: #41435

- fix: avoid double destruction with placement new

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Pull Request Summary

**Bug Fix: milvus-common dependency update to address double destruction
with placement new**

- **Root Cause Resolution:** Updates the milvus-common library
dependency from commit 4d7781d to fbe5cf7 to fix a double destruction
issue that occurs when placement new is used for object construction.
The upstream fix ensures proper lifecycle management of objects
constructed with placement new semantics, preventing accidental
re-destruction of objects allocated in pre-allocated memory regions.

- **No Logic Changes in Milvus Core:** This PR contains only a
CMakeLists.txt version bump in
`internal/core/thirdparty/milvus-common/CMakeLists.txt`; no Milvus
codebase logic is modified, removed, or simplified. The fix is entirely
contained within the milvus-common library dependency fetched during the
build process.

- **Data Integrity and Behavior Preservation:** No behavior regression
or data loss is introduced. The change is a pure dependency update to
pull in an upstream bug fix. All memory management and object lifecycle
handling improvements are confined to the milvus-common library,
remaining transparent to Milvus core operations.

- **Issue Resolution:** Addresses issue #41435 by integrating the
corrected milvus-common version that prevents double destruction bugs
occurring in code paths that use placement new for memory-efficient
object construction.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Signed-off-by: Shawn Wang <shawn.wang@zilliz.com>
2026-01-09 11:11:25 +08:00
XuanYang-cnandGitHub c3d9547938 test: Increase PyMilvus version to 2.7.0rc100 for master branch (#46912)
Automated daily bump from pymilvus master branch. Updates
tests/python_client/requirements.txt.

Signed-off-by: XuanYang-cn <xuan.yang@zilliz.com>
2026-01-09 10:55:31 +08:00
yihao.daiandGitHub 9cf231353f enhance: Allow import into global cluster with a single primary (#46909)
issue: https://github.com/milvus-io/milvus/issues/44123

Signed-off-by: bigsheeper <yihao.dai@zilliz.com>
2026-01-09 10:47:25 +08:00
Zhen YeandGitHub bf9943c855 enhance: remove redundant etcd put operation when update segment info (#46793)
issue: #46747

Signed-off-by: chyezh <chyezh@outlook.com>
2026-01-09 10:41:25 +08:00
4065c86040 fix: is_null_expr crash on indexed-json field(#46614) (#46923)
related: #46614

Signed-off-by: MrPresent-Han <chun.han@gmail.com>
Co-authored-by: MrPresent-Han <chun.han@gmail.com>
2026-01-08 21:23:26 +08:00
congqixiaandGitHub 0bb2d746b9 enhance: Enable split by average size policy by default in storage v2 (#46908)
Related to #44257

Enable the splitByAvgSize policy by default for storage v2, which
optimizes data layout by splitting columns based on average size rather
than fixed boundaries.

Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
2026-01-08 19:47:26 +08:00
nicoandGitHub a43fc2de0b test: update error message (#46801)
Signed-off-by: nico <cheng.yuan@zilliz.com>
2026-01-08 18:57:25 +08:00
marcelo-cjlandGitHub 9e726e82d9 fix: improve error messages for nullable vector field operations (#46798)
issue: #46779 
related: #45993 

Return clear error when using is null/is not null filter on vector
fields
Return clear error when search by IDs with all null vectors
Fix nq mismatch when search by IDs with mixed null/valid vectors

Signed-off-by: marcelo-cjl <marcelo.chen@zilliz.com>
2026-01-08 17:45:25 +08:00
yihao.daiandGitHub bc415c4017 fix: Fix the unstable ut TestGlobalScheduler (#46915)
issue: https://github.com/milvus-io/milvus/issues/46913

Signed-off-by: bigsheeper <yihao.dai@zilliz.com>
2026-01-08 17:15:25 +08:00
zhuwenxingandGitHub 2c0e43780b test: Fix flaky test_job_import_binlog_file_type by waiting for index building (#46864)
/kind improvement

The test was flaky because sort compaction may not complete within the
sleep time. Instead of relying on sleep, wait for index building to
complete after flush, which ensures sort compaction is done before
getting binlog files.

Signed-off-by: zhuwenxing <wenxing.zhu@zilliz.com>
2026-01-08 16:41:29 +08:00
qixuanandGitHub 27b106babf test: add field case about float scalar datatype supports floating-point (#46830)
related issue: #42126

---------

Signed-off-by: qixuan <673771573@qq.com>
2026-01-08 16:39:31 +08:00
zhuwenxingandGitHub 3b12286369 test: use minio_bucket parameter in bulk insert TEI tests (#46862)
/kind improvement

Replace hardcoded "milvus-bucket" with minio_bucket fixture parameter in
testcases

Signed-off-by: zhuwenxing <wenxing.zhu@zilliz.com>
2026-01-08 16:31:26 +08:00