Skip to content

Commit c90ff1f

Browse files
validate both metadata and data in the results
1 parent 4767c6e commit c90ff1f

File tree

1 file changed

+58
-4
lines changed

1 file changed

+58
-4
lines changed

x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/RestEsqlTestCase.java

Lines changed: 58 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -968,11 +968,48 @@ public void testTopLevelFilterBoolMerged() throws IOException {
968968
}
969969

970970
public void testWideIndexWithFieldsTrimmed() throws IOException {
971-
createWideIndex(10000);
971+
createLoadIndexWithFieldAndDocumentCounts(10000, 1); // create an index with 10k fields and 1 document
972972
var query = requestObjectBuilder().query(format(null, "from {}", testIndexName()));
973973
Map<String, Object> result = runEsql(query);
974974
var columns = as(result.get("columns"), List.class);
975+
var values = as(result.get("values"), List.class);
975976
assertEquals(WIDE_INDEX_DEFAULT_FIELD_NUMBER, columns.size());
977+
assertEquals(1, values.size());
978+
979+
query = requestObjectBuilder().query(format(null, "from {} | keep f1, f2", testIndexName()));
980+
result = runEsql(query);
981+
columns = as(result.get("columns"), List.class);
982+
values = as(result.get("values"), List.class);
983+
assertEquals(2, columns.size());
984+
assertEquals(1, values.size());
985+
986+
query = requestObjectBuilder().query(format(null, "from {} | drop f1, f2", testIndexName()));
987+
result = runEsql(query);
988+
columns = as(result.get("columns"), List.class);
989+
values = as(result.get("values"), List.class);
990+
assertEquals(9998, columns.size());
991+
assertEquals(1, values.size());
992+
993+
query = requestObjectBuilder().query(format(null, "from {} | where f1 > 0", testIndexName()));
994+
result = runEsql(query);
995+
columns = as(result.get("columns"), List.class);
996+
values = as(result.get("values"), List.class);
997+
assertEquals(10000, columns.size());
998+
assertEquals(1, values.size());
999+
1000+
query = requestObjectBuilder().query(format(null, "from {} | eval x = 0", testIndexName()));
1001+
result = runEsql(query);
1002+
columns = as(result.get("columns"), List.class);
1003+
values = as(result.get("values"), List.class);
1004+
assertEquals(10001, columns.size());
1005+
assertEquals(1, values.size());
1006+
1007+
query = requestObjectBuilder().query(format(null, "from {} | stats max(f1)", testIndexName()));
1008+
result = runEsql(query);
1009+
columns = as(result.get("columns"), List.class);
1010+
values = as(result.get("values"), List.class);
1011+
assertEquals(1, columns.size());
1012+
assertEquals(1, values.size());
9761013
}
9771014

9781015
private static String queryWithComplexFieldNames(int field) {
@@ -1540,16 +1577,33 @@ protected void indexTimestampData(int shards) throws IOException {
15401577
Assert.assertEquals("{\"errors\":false}", EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8));
15411578
}
15421579

1543-
private static void createWideIndex(int fieldNumber) throws IOException {
1544-
String settings = String.format("\"settings\":{\"index.mapping.total_fields.limit\":%d}", fieldNumber);
1580+
private static void createLoadIndexWithFieldAndDocumentCounts(int fieldCount, int documentCount) throws IOException {
1581+
String settings = String.format("\"settings\":{\"index.mapping.total_fields.limit\":%d}", fieldCount);
15451582
StringBuilder mappings = new StringBuilder();
15461583
mappings.append(String.format("\"mappings\": { \"properties\": {\"f%d\": {\"type\" : \"integer\"}", 1));
1547-
for (int i = 2; i <= fieldNumber; i++) {
1584+
for (int i = 2; i <= fieldCount; i++) {
15481585
mappings.append(String.format(", \"f%d\":{\"type\" : \"integer\"}", i));
15491586
}
15501587
mappings.append("}}");
15511588
Request request = new Request("PUT", "/" + testIndexName());
15521589
request.setJsonEntity("{" + settings + ", " + mappings + "}");
15531590
assertEquals(200, client().performRequest(request).getStatusLine().getStatusCode());
1591+
1592+
if (documentCount > 0) {
1593+
request = new Request("POST", "/" + testIndexName() + "/_bulk");
1594+
request.addParameter("refresh", "true");
1595+
1596+
StringBuilder bulk = new StringBuilder();
1597+
for (int i = 1; i <= documentCount; i++) {
1598+
bulk.append("{\"index\":{}}\n");
1599+
bulk.append(String.format("{\"f%d\":%d", 1, 1));
1600+
for (int j = 2; j <= fieldCount; j++) {
1601+
bulk.append(String.format(",\"f%d\":%d", j, j));
1602+
}
1603+
bulk.append("}\n");
1604+
}
1605+
request.setJsonEntity(bulk.toString());
1606+
assertEquals(200, client().performRequest(request).getStatusLine().getStatusCode());
1607+
}
15541608
}
15551609
}

0 commit comments

Comments
 (0)