|
@@ -128,7 +128,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
|
|
|
public void testProjectConstant() {
|
|
|
try (EsqlQueryResponse results = run("from test | eval x = 1 | keep x")) {
|
|
|
- assertThat(results.columns(), equalTo(List.of(new ColumnInfoImpl("x", "integer"))));
|
|
|
+ assertThat(results.columns(), equalTo(List.of(new ColumnInfoImpl("x", "integer", null))));
|
|
|
assertThat(getValuesList(results).size(), equalTo(40));
|
|
|
assertThat(getValuesList(results).get(0).get(0), equalTo(1));
|
|
|
}
|
|
@@ -136,7 +136,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
|
|
|
public void testStatsOverConstant() {
|
|
|
try (EsqlQueryResponse results = run("from test | eval x = 1 | stats x = count(x)")) {
|
|
|
- assertThat(results.columns(), equalTo(List.of(new ColumnInfoImpl("x", "long"))));
|
|
|
+ assertThat(results.columns(), equalTo(List.of(new ColumnInfoImpl("x", "long", null))));
|
|
|
assertThat(getValuesList(results).size(), equalTo(1));
|
|
|
assertThat(getValuesList(results).get(0).get(0), equalTo(40L));
|
|
|
}
|
|
@@ -564,10 +564,14 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
logger.info(results);
|
|
|
assertEquals(1, getValuesList(results).size());
|
|
|
assertEquals(2, getValuesList(results).get(0).size());
|
|
|
- assertEquals(50, (double) getValuesList(results).get(0).get(results.columns().indexOf(new ColumnInfoImpl("x", "double"))), 1d);
|
|
|
+ assertEquals(
|
|
|
+ 50,
|
|
|
+ (double) getValuesList(results).get(0).get(results.columns().indexOf(new ColumnInfoImpl("x", "double", null))),
|
|
|
+ 1d
|
|
|
+ );
|
|
|
assertEquals(
|
|
|
43,
|
|
|
- (double) getValuesList(results).get(0).get(results.columns().indexOf(new ColumnInfoImpl("avg_count", "double"))),
|
|
|
+ (double) getValuesList(results).get(0).get(results.columns().indexOf(new ColumnInfoImpl("avg_count", "double", null))),
|
|
|
1d
|
|
|
);
|
|
|
}
|
|
@@ -577,7 +581,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (EsqlQueryResponse results = run("from test | where count > 40")) {
|
|
|
logger.info(results);
|
|
|
assertEquals(30, getValuesList(results).size());
|
|
|
- var countIndex = results.columns().indexOf(new ColumnInfoImpl("count", "long"));
|
|
|
+ var countIndex = results.columns().indexOf(new ColumnInfoImpl("count", "long", null));
|
|
|
for (List<Object> values : getValuesList(results)) {
|
|
|
assertThat((Long) values.get(countIndex), greaterThan(40L));
|
|
|
}
|
|
@@ -588,7 +592,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (EsqlQueryResponse results = run("from test | keep count | where count > 40")) {
|
|
|
logger.info(results);
|
|
|
assertEquals(30, getValuesList(results).size());
|
|
|
- int countIndex = results.columns().indexOf(new ColumnInfoImpl("count", "long"));
|
|
|
+ int countIndex = results.columns().indexOf(new ColumnInfoImpl("count", "long", null));
|
|
|
for (List<Object> values : getValuesList(results)) {
|
|
|
assertThat((Long) values.get(countIndex), greaterThan(40L));
|
|
|
}
|
|
@@ -599,7 +603,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (EsqlQueryResponse results = run("from test | eval x = count / 2 | where x > 20")) {
|
|
|
logger.info(results);
|
|
|
assertEquals(30, getValuesList(results).size());
|
|
|
- int countIndex = results.columns().indexOf(new ColumnInfoImpl("x", "long"));
|
|
|
+ int countIndex = results.columns().indexOf(new ColumnInfoImpl("x", "long", null));
|
|
|
for (List<Object> values : getValuesList(results)) {
|
|
|
assertThat((Long) values.get(countIndex), greaterThan(20L));
|
|
|
}
|
|
@@ -617,7 +621,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (EsqlQueryResponse results = run("row a = null | sort a")) {
|
|
|
logger.info(results);
|
|
|
assertEquals(1, getValuesList(results).size());
|
|
|
- int countIndex = results.columns().indexOf(new ColumnInfoImpl("a", "null"));
|
|
|
+ int countIndex = results.columns().indexOf(new ColumnInfoImpl("a", "null", null));
|
|
|
assertThat(results.columns().stream().map(ColumnInfo::name).toList(), contains("a"));
|
|
|
assertThat(results.columns().stream().map(ColumnInfoImpl::type).toList(), contains(DataType.NULL));
|
|
|
assertNull(getValuesList(results).getFirst().get(countIndex));
|
|
@@ -628,7 +632,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (EsqlQueryResponse results = run("row a = null | stats by a")) {
|
|
|
logger.info(results);
|
|
|
assertEquals(1, getValuesList(results).size());
|
|
|
- int countIndex = results.columns().indexOf(new ColumnInfoImpl("a", "null"));
|
|
|
+ int countIndex = results.columns().indexOf(new ColumnInfoImpl("a", "null", null));
|
|
|
assertThat(results.columns().stream().map(ColumnInfo::name).toList(), contains("a"));
|
|
|
assertThat(results.columns().stream().map(ColumnInfoImpl::type).toList(), contains(DataType.NULL));
|
|
|
assertNull(getValuesList(results).getFirst().get(countIndex));
|
|
@@ -639,7 +643,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (EsqlQueryResponse results = run("from test | eval l = length(color)")) {
|
|
|
logger.info(results);
|
|
|
assertThat(getValuesList(results), hasSize(40));
|
|
|
- int countIndex = results.columns().indexOf(new ColumnInfoImpl("l", "integer"));
|
|
|
+ int countIndex = results.columns().indexOf(new ColumnInfoImpl("l", "integer", null));
|
|
|
for (List<Object> values : getValuesList(results)) {
|
|
|
assertThat((Integer) values.get(countIndex), greaterThanOrEqualTo(3));
|
|
|
}
|
|
@@ -658,11 +662,11 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (EsqlQueryResponse results = run("from test | eval newCount = count + 1 | where newCount > 1")) {
|
|
|
logger.info(results);
|
|
|
assertEquals(40, getValuesList(results).size());
|
|
|
- assertThat(results.columns(), hasItem(equalTo(new ColumnInfoImpl("count", "long"))));
|
|
|
- assertThat(results.columns(), hasItem(equalTo(new ColumnInfoImpl("count_d", "double"))));
|
|
|
- assertThat(results.columns(), hasItem(equalTo(new ColumnInfoImpl("data", "long"))));
|
|
|
- assertThat(results.columns(), hasItem(equalTo(new ColumnInfoImpl("data_d", "double"))));
|
|
|
- assertThat(results.columns(), hasItem(equalTo(new ColumnInfoImpl("time", "long"))));
|
|
|
+ assertThat(results.columns(), hasItem(equalTo(new ColumnInfoImpl("count", "long", null))));
|
|
|
+ assertThat(results.columns(), hasItem(equalTo(new ColumnInfoImpl("count_d", "double", null))));
|
|
|
+ assertThat(results.columns(), hasItem(equalTo(new ColumnInfoImpl("data", "long", null))));
|
|
|
+ assertThat(results.columns(), hasItem(equalTo(new ColumnInfoImpl("data_d", "double", null))));
|
|
|
+ assertThat(results.columns(), hasItem(equalTo(new ColumnInfoImpl("time", "long", null))));
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -696,7 +700,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
assertEquals(40, getValuesList(results).size());
|
|
|
assertEquals(1, results.columns().stream().filter(c -> c.name().equals("count")).count());
|
|
|
int countIndex = results.columns().size() - 1;
|
|
|
- assertEquals(new ColumnInfoImpl("count", "long"), results.columns().get(countIndex));
|
|
|
+ assertEquals(new ColumnInfoImpl("count", "long", null), results.columns().get(countIndex));
|
|
|
for (List<Object> values : getValuesList(results)) {
|
|
|
assertThat((Long) values.get(countIndex), greaterThanOrEqualTo(42L));
|
|
|
}
|
|
@@ -707,7 +711,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (var results = run("from test | eval y = count | rename count as x | keep x, y")) {
|
|
|
logger.info(results);
|
|
|
assertEquals(40, getValuesList(results).size());
|
|
|
- assertThat(results.columns(), contains(new ColumnInfoImpl("x", "long"), new ColumnInfoImpl("y", "long")));
|
|
|
+ assertThat(results.columns(), contains(new ColumnInfoImpl("x", "long", null), new ColumnInfoImpl("y", "long", null)));
|
|
|
for (List<Object> values : getValuesList(results)) {
|
|
|
assertThat((Long) values.get(0), greaterThanOrEqualTo(40L));
|
|
|
assertThat(values.get(1), is(values.get(0)));
|
|
@@ -722,10 +726,10 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
assertThat(
|
|
|
results.columns(),
|
|
|
contains(
|
|
|
- new ColumnInfoImpl("x", "long"),
|
|
|
- new ColumnInfoImpl("y", "long"),
|
|
|
- new ColumnInfoImpl("x2", "long"),
|
|
|
- new ColumnInfoImpl("y2", "long")
|
|
|
+ new ColumnInfoImpl("x", "long", null),
|
|
|
+ new ColumnInfoImpl("y", "long", null),
|
|
|
+ new ColumnInfoImpl("x2", "long", null),
|
|
|
+ new ColumnInfoImpl("y2", "long", null)
|
|
|
)
|
|
|
);
|
|
|
for (List<Object> values : getValuesList(results)) {
|
|
@@ -743,7 +747,11 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
assertEquals(40, getValuesList(results).size());
|
|
|
assertThat(
|
|
|
results.columns(),
|
|
|
- contains(new ColumnInfoImpl("x", "long"), new ColumnInfoImpl("y", "long"), new ColumnInfoImpl("z", "long"))
|
|
|
+ contains(
|
|
|
+ new ColumnInfoImpl("x", "long", null),
|
|
|
+ new ColumnInfoImpl("y", "long", null),
|
|
|
+ new ColumnInfoImpl("z", "long", null)
|
|
|
+ )
|
|
|
);
|
|
|
for (List<Object> values : getValuesList(results)) {
|
|
|
assertThat((Long) values.get(0), greaterThanOrEqualTo(40L));
|
|
@@ -757,7 +765,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (var results = run("from test | eval cnt = count | rename count as data | keep cnt, data")) {
|
|
|
logger.info(results);
|
|
|
assertEquals(40, getValuesList(results).size());
|
|
|
- assertThat(results.columns(), contains(new ColumnInfoImpl("cnt", "long"), new ColumnInfoImpl("data", "long")));
|
|
|
+ assertThat(results.columns(), contains(new ColumnInfoImpl("cnt", "long", null), new ColumnInfoImpl("data", "long", null)));
|
|
|
for (List<Object> values : getValuesList(results)) {
|
|
|
assertThat(values.get(1), is(values.get(0)));
|
|
|
}
|
|
@@ -927,7 +935,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
public void testFromStatsLimit() {
|
|
|
try (EsqlQueryResponse results = run("from test | stats ac = avg(count) by data | limit 1")) {
|
|
|
logger.info(results);
|
|
|
- assertThat(results.columns(), contains(new ColumnInfoImpl("ac", "double"), new ColumnInfoImpl("data", "long")));
|
|
|
+ assertThat(results.columns(), contains(new ColumnInfoImpl("ac", "double", null), new ColumnInfoImpl("data", "long", null)));
|
|
|
assertThat(getValuesList(results), contains(anyOf(contains(42.0, 1L), contains(44.0, 2L))));
|
|
|
}
|
|
|
}
|
|
@@ -935,7 +943,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
public void testFromLimit() {
|
|
|
try (EsqlQueryResponse results = run("from test | keep data | limit 2")) {
|
|
|
logger.info(results);
|
|
|
- assertThat(results.columns(), contains(new ColumnInfoImpl("data", "long")));
|
|
|
+ assertThat(results.columns(), contains(new ColumnInfoImpl("data", "long", null)));
|
|
|
assertThat(getValuesList(results), contains(anyOf(contains(1L), contains(2L)), anyOf(contains(1L), contains(2L))));
|
|
|
}
|
|
|
}
|
|
@@ -944,7 +952,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (EsqlQueryResponse results = run("from test | keep data | drop data | eval a = 1")) {
|
|
|
logger.info(results);
|
|
|
assertThat(results.columns(), hasSize(1));
|
|
|
- assertThat(results.columns(), contains(new ColumnInfoImpl("a", "integer")));
|
|
|
+ assertThat(results.columns(), contains(new ColumnInfoImpl("a", "integer", null)));
|
|
|
assertThat(getValuesList(results), is(empty()));
|
|
|
}
|
|
|
}
|
|
@@ -1233,7 +1241,10 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
public void testEmptyIndex() {
|
|
|
assertAcked(client().admin().indices().prepareCreate("test_empty").setMapping("k", "type=keyword", "v", "type=long").get());
|
|
|
try (EsqlQueryResponse results = run("from test_empty")) {
|
|
|
- assertThat(results.columns(), equalTo(List.of(new ColumnInfoImpl("k", "keyword"), new ColumnInfoImpl("v", "long"))));
|
|
|
+ assertThat(
|
|
|
+ results.columns(),
|
|
|
+ equalTo(List.of(new ColumnInfoImpl("k", "keyword", null), new ColumnInfoImpl("v", "long", null)))
|
|
|
+ );
|
|
|
assertThat(getValuesList(results), empty());
|
|
|
}
|
|
|
}
|
|
@@ -1244,9 +1255,9 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
results.columns(),
|
|
|
equalTo(
|
|
|
List.of(
|
|
|
- new ColumnInfoImpl("version", "keyword"),
|
|
|
- new ColumnInfoImpl("date", "keyword"),
|
|
|
- new ColumnInfoImpl("hash", "keyword")
|
|
|
+ new ColumnInfoImpl("version", "keyword", null),
|
|
|
+ new ColumnInfoImpl("date", "keyword", null),
|
|
|
+ new ColumnInfoImpl("hash", "keyword", null)
|
|
|
)
|
|
|
)
|
|
|
);
|
|
@@ -1259,7 +1270,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
|
|
|
public void testInWithNullValue() {
|
|
|
try (EsqlQueryResponse results = run("from test | where null in (data, 2) | keep data")) {
|
|
|
- assertThat(results.columns(), equalTo(List.of(new ColumnInfoImpl("data", "long"))));
|
|
|
+ assertThat(results.columns(), equalTo(List.of(new ColumnInfoImpl("data", "long", null))));
|
|
|
assertThat(getValuesList(results).size(), equalTo(0));
|
|
|
}
|
|
|
}
|
|
@@ -1420,7 +1431,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
|
|
|
public void testLoadId() {
|
|
|
try (EsqlQueryResponse results = run("from test metadata _id | keep _id | sort _id ")) {
|
|
|
- assertThat(results.columns(), equalTo(List.of(new ColumnInfoImpl("_id", "keyword"))));
|
|
|
+ assertThat(results.columns(), equalTo(List.of(new ColumnInfoImpl("_id", "keyword", null))));
|
|
|
ListMatcher values = matchesList();
|
|
|
for (int i = 10; i < 50; i++) {
|
|
|
values = values.item(List.of(Integer.toString(i)));
|
|
@@ -1629,12 +1640,15 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
|
|
|
try (EsqlQueryResponse resp = run(from + "METADATA _source | EVAL x = 123")) {
|
|
|
assertFalse(resp.values().hasNext());
|
|
|
- assertThat(resp.columns(), equalTo(List.of(new ColumnInfoImpl("_source", "_source"), new ColumnInfoImpl("x", "integer"))));
|
|
|
+ assertThat(
|
|
|
+ resp.columns(),
|
|
|
+ equalTo(List.of(new ColumnInfoImpl("_source", "_source", null), new ColumnInfoImpl("x", "integer", null)))
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
try (EsqlQueryResponse resp = run(from)) {
|
|
|
assertFalse(resp.values().hasNext());
|
|
|
- assertThat(resp.columns(), equalTo(List.of(new ColumnInfoImpl("<no-fields>", "null"))));
|
|
|
+ assertThat(resp.columns(), equalTo(List.of(new ColumnInfoImpl("<no-fields>", "null", null))));
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1664,9 +1678,9 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
resp.columns(),
|
|
|
equalTo(
|
|
|
List.of(
|
|
|
- new ColumnInfoImpl("name", "text"),
|
|
|
- new ColumnInfoImpl("_source", "_source"),
|
|
|
- new ColumnInfoImpl("x", "integer")
|
|
|
+ new ColumnInfoImpl("name", "text", null),
|
|
|
+ new ColumnInfoImpl("_source", "_source", null),
|
|
|
+ new ColumnInfoImpl("x", "integer", null)
|
|
|
)
|
|
|
)
|
|
|
);
|
|
@@ -1674,26 +1688,29 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
|
|
|
try (EsqlQueryResponse resp = run(from)) {
|
|
|
assertFalse(resp.values().hasNext());
|
|
|
- assertThat(resp.columns(), equalTo(List.of(new ColumnInfoImpl("name", "text"))));
|
|
|
+ assertThat(resp.columns(), equalTo(List.of(new ColumnInfoImpl("name", "text", null))));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void assertEmptyIndexQueries(String from) {
|
|
|
try (EsqlQueryResponse resp = run(from + "METADATA _source | KEEP _source | LIMIT 1")) {
|
|
|
assertFalse(resp.values().hasNext());
|
|
|
- assertThat(resp.columns(), equalTo(List.of(new ColumnInfoImpl("_source", "_source"))));
|
|
|
+ assertThat(resp.columns(), equalTo(List.of(new ColumnInfoImpl("_source", "_source", null))));
|
|
|
}
|
|
|
|
|
|
try (EsqlQueryResponse resp = run(from + "| EVAL y = 1 | KEEP y | LIMIT 1 | EVAL x = 1")) {
|
|
|
assertFalse(resp.values().hasNext());
|
|
|
- assertThat(resp.columns(), equalTo(List.of(new ColumnInfoImpl("y", "integer"), new ColumnInfoImpl("x", "integer"))));
|
|
|
+ assertThat(
|
|
|
+ resp.columns(),
|
|
|
+ equalTo(List.of(new ColumnInfoImpl("y", "integer", null), new ColumnInfoImpl("x", "integer", null)))
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
try (EsqlQueryResponse resp = run(from + "| STATS c = count()")) {
|
|
|
assertTrue(resp.values().hasNext());
|
|
|
Iterator<Object> row = resp.values().next();
|
|
|
assertThat(row.next(), equalTo((long) 0));
|
|
|
- assertThat(resp.columns(), equalTo(List.of(new ColumnInfoImpl("c", "long"))));
|
|
|
+ assertThat(resp.columns(), equalTo(List.of(new ColumnInfoImpl("c", "long", null))));
|
|
|
}
|
|
|
|
|
|
try (EsqlQueryResponse resp = run(from + "| STATS c = count() | EVAL x = 123")) {
|
|
@@ -1702,7 +1719,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
assertThat(row.next(), equalTo((long) 0));
|
|
|
assertThat(row.next(), equalTo(123));
|
|
|
assertFalse(row.hasNext());
|
|
|
- assertThat(resp.columns(), equalTo(List.of(new ColumnInfoImpl("c", "long"), new ColumnInfoImpl("x", "integer"))));
|
|
|
+ assertThat(resp.columns(), equalTo(List.of(new ColumnInfoImpl("c", "long", null), new ColumnInfoImpl("x", "integer", null))));
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1779,7 +1796,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
|
|
|
private void assertNoNestedDocuments(String query, int docsCount, long minValue, long maxValue) {
|
|
|
try (EsqlQueryResponse results = run(query)) {
|
|
|
- assertThat(results.columns(), contains(new ColumnInfoImpl("data", "long")));
|
|
|
+ assertThat(results.columns(), contains(new ColumnInfoImpl("data", "long", null)));
|
|
|
assertThat(results.columns().size(), is(1));
|
|
|
assertThat(getValuesList(results).size(), is(docsCount));
|
|
|
for (List<Object> row : getValuesList(results)) {
|