Skip to content

Commit 36c26a5

Browse files
committed
Add test for null dimensions
1 parent 12fb39c commit 36c26a5

File tree

1 file changed

+47
-15
lines changed

1 file changed

+47
-15
lines changed

x-pack/plugin/esql/src/internalClusterTest/java/org/elasticsearch/xpack/esql/DenseVectorFieldTypeIT.java

Lines changed: 47 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -127,9 +127,55 @@ public void testRetrieveDenseVectorFieldData() {
127127
}
128128
}
129129

130+
public void testNonIndexedDenseVectorField() throws IOException {
131+
createIndexWithDenseVector("no_dense_vectors");
132+
133+
int numDocs = randomIntBetween(10, 100);
134+
IndexRequestBuilder[] docs = new IndexRequestBuilder[numDocs];
135+
for (int i = 0; i < numDocs; i++) {
136+
docs[i] = prepareIndex("no_dense_vectors").setId("" + i).setSource("id", String.valueOf(i));
137+
}
138+
139+
indexRandom(true, docs);
140+
141+
var query = """
142+
FROM no_dense_vectors
143+
| KEEP id, vector
144+
""";
145+
146+
try (var resp = run(query)) {
147+
List<List<Object>> valuesList = EsqlTestUtils.getValuesList(resp);
148+
assertEquals(numDocs, valuesList.size());
149+
valuesList.forEach(value -> {
150+
assertEquals(2, value.size());
151+
Integer id = (Integer) value.get(0);
152+
assertNotNull(id);
153+
Object vector = value.get(1);
154+
assertNull(vector);
155+
});
156+
}
157+
}
158+
130159
@Before
131160
public void setup() throws IOException {
132-
var indexName = "test";
161+
createIndexWithDenseVector("test");
162+
163+
int numDims = randomIntBetween(32, 64) * 2; // min 64, even number
164+
int numDocs = randomIntBetween(10, 100);
165+
IndexRequestBuilder[] docs = new IndexRequestBuilder[numDocs];
166+
for (int i = 0; i < numDocs; i++) {
167+
List<Float> vector = new ArrayList<>(numDims);
168+
for (int j = 0; j < numDims; j++) {
169+
vector.add(randomFloat());
170+
}
171+
docs[i] = prepareIndex("test").setId("" + i).setSource("id", String.valueOf(i), "vector", vector);
172+
indexedVectors.put(i, vector);
173+
}
174+
175+
indexRandom(true, docs);
176+
}
177+
178+
private void createIndexWithDenseVector(String indexName) throws IOException {
133179
var client = client().admin().indices();
134180
XContentBuilder mapping = XContentFactory.jsonBuilder()
135181
.startObject()
@@ -159,19 +205,5 @@ public void setup() throws IOException {
159205
.setMapping(mapping)
160206
.setSettings(settingsBuilder.build());
161207
assertAcked(CreateRequest);
162-
163-
int numDims = randomIntBetween(32, 64) * 2; // min 64, even number
164-
int numDocs = randomIntBetween(10, 100);
165-
IndexRequestBuilder[] docs = new IndexRequestBuilder[numDocs];
166-
for (int i = 0; i < numDocs; i++) {
167-
List<Float> vector = new ArrayList<>(numDims);
168-
for (int j = 0; j < numDims; j++) {
169-
vector.add(randomFloat());
170-
}
171-
docs[i] = prepareIndex("test").setId("" + i).setSource("id", String.valueOf(i), "vector", vector);
172-
indexedVectors.put(i, vector);
173-
}
174-
175-
indexRandom(true, docs);
176208
}
177209
}

0 commit comments

Comments
 (0)