Skip to content

Commit 87df59a

Browse files
author
lijunrui
committed
test(vector-search): size guard-test query vectors to the resolved index dimension
The branch's new up-front query-dimension guard validates every query against the vector column's dimension before planning and before the empty-plan early return. For an ARRAY<FLOAT> IVF_FLAT column with no explicit dimension, the resolver defaults to 128, so the dim-1 query vectors (`vec![1.0]`) in two guard tests failed loud before reaching the guards they exercise: - execute_read_empty_plan_reserved_projection_fails_loud - execute_read_filter_with_deletion_vectors_passes_guard Pin `fields.embedding.dimension = 4` and size the query vectors to match, so each test reaches its reserved-projection / deletion-vector residual guard as intended. Test-only; production behavior is unchanged.
1 parent 2607378 commit 87df59a

1 file changed

Lines changed: 9 additions & 2 deletions

File tree

crates/paimon/src/table/vector_search_builder.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4512,12 +4512,15 @@ mod tests {
45124512
("fields.embedding.pk-vector.index.type", IVF_FLAT_IDENTIFIER),
45134513
("fields.embedding.pk-vector.distance.metric", "l2"),
45144514
("deletion-vectors.enabled", "true"),
4515+
// Pin the index dimension so the query vector below matches it; the
4516+
// up-front dimension guard runs before this test's residual guard.
4517+
("fields.embedding.dimension", "4"),
45154518
]);
45164519
let filter = id_gt_filter(&table, 2);
45174520
let mut stream = table
45184521
.new_vector_search_builder()
45194522
.with_vector_column("embedding")
4520-
.with_query_vector(vec![1.0])
4523+
.with_query_vector(vec![1.0; 4])
45214524
.with_limit(5)
45224525
.with_filter(filter)
45234526
.execute_read()
@@ -4939,6 +4942,10 @@ mod tests {
49394942
("pk-vector.index.columns", "embedding"),
49404943
("fields.embedding.pk-vector.index.type", IVF_FLAT_IDENTIFIER),
49414944
("fields.embedding.pk-vector.distance.metric", "l2"),
4945+
// Pin the index dimension so the query vector below matches it; the
4946+
// up-front dimension guard runs before this test's reserved-projection
4947+
// guard, so a mismatched query would mask the error under test.
4948+
("fields.embedding.dimension", "4"),
49424949
]);
49434950
for reserved in [
49444951
ROW_ID_FIELD_NAME,
@@ -4949,7 +4956,7 @@ mod tests {
49494956
let mut builder = table.new_vector_search_builder();
49504957
builder
49514958
.with_vector_column("embedding")
4952-
.with_query_vector(vec![1.0])
4959+
.with_query_vector(vec![1.0; 4])
49534960
.with_limit(5)
49544961
.with_projection(&["id", reserved]);
49554962
let err = builder

0 commit comments

Comments
 (0)