|
@@ -33,6 +33,7 @@ import org.elasticsearch.xcontent.XContentBuilder;
|
|
|
import org.elasticsearch.xcontent.json.JsonXContent;
|
|
|
import org.elasticsearch.xpack.core.esql.action.ColumnInfo;
|
|
|
import org.elasticsearch.xpack.esql.VerificationException;
|
|
|
+import org.elasticsearch.xpack.esql.core.type.DataType;
|
|
|
import org.elasticsearch.xpack.esql.expression.function.EsqlFunctionRegistry;
|
|
|
import org.elasticsearch.xpack.esql.parser.ParsingException;
|
|
|
import org.elasticsearch.xpack.esql.plugin.EsqlPlugin;
|
|
@@ -100,7 +101,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 ColumnInfo("x", "integer"))));
|
|
|
+ assertThat(results.columns(), equalTo(List.of(new ColumnInfoImpl("x", "integer"))));
|
|
|
assertThat(getValuesList(results).size(), equalTo(40));
|
|
|
assertThat(getValuesList(results).get(0).get(0), equalTo(1));
|
|
|
}
|
|
@@ -108,7 +109,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 ColumnInfo("x", "long"))));
|
|
|
+ assertThat(results.columns(), equalTo(List.of(new ColumnInfoImpl("x", "long"))));
|
|
|
assertThat(getValuesList(results).size(), equalTo(1));
|
|
|
assertThat(getValuesList(results).get(0).get(0), equalTo(40L));
|
|
|
}
|
|
@@ -139,12 +140,12 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
assertEquals(2, results.columns().size());
|
|
|
|
|
|
// assert column metadata
|
|
|
- ColumnInfo valuesColumn = results.columns().get(0);
|
|
|
+ ColumnInfoImpl valuesColumn = results.columns().get(0);
|
|
|
assertEquals(expectedFieldName, valuesColumn.name());
|
|
|
- assertEquals("double", valuesColumn.type());
|
|
|
- ColumnInfo groupColumn = results.columns().get(1);
|
|
|
+ assertEquals(DataType.DOUBLE, valuesColumn.type());
|
|
|
+ ColumnInfoImpl groupColumn = results.columns().get(1);
|
|
|
assertEquals(expectedGroupName, groupColumn.name());
|
|
|
- assertEquals("long", groupColumn.type());
|
|
|
+ assertEquals(DataType.LONG, groupColumn.type());
|
|
|
|
|
|
// assert column values
|
|
|
List<List<Object>> valueValues = getValuesList(results);
|
|
@@ -178,12 +179,12 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
assertEquals(2, results.columns().size());
|
|
|
|
|
|
// assert column metadata
|
|
|
- ColumnInfo groupColumn = results.columns().get(0);
|
|
|
+ ColumnInfoImpl groupColumn = results.columns().get(0);
|
|
|
assertEquals(expectedGroupName, groupColumn.name());
|
|
|
- assertEquals("long", groupColumn.type());
|
|
|
- ColumnInfo valuesColumn = results.columns().get(1);
|
|
|
+ assertEquals(DataType.LONG, groupColumn.type());
|
|
|
+ ColumnInfoImpl valuesColumn = results.columns().get(1);
|
|
|
assertEquals(expectedFieldName, valuesColumn.name());
|
|
|
- assertEquals("long", valuesColumn.type());
|
|
|
+ assertEquals(DataType.LONG, valuesColumn.type());
|
|
|
|
|
|
// assert column values
|
|
|
List<List<Object>> valueValues = getValuesList(results);
|
|
@@ -212,9 +213,9 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
|
|
|
// assert column metadata
|
|
|
assertEquals("avg(count)", results.columns().get(0).name());
|
|
|
- assertEquals("double", results.columns().get(0).type());
|
|
|
+ assertEquals(DataType.DOUBLE, results.columns().get(0).type());
|
|
|
assertEquals("time", results.columns().get(1).name());
|
|
|
- assertEquals("long", results.columns().get(1).type());
|
|
|
+ assertEquals(DataType.LONG, results.columns().get(1).type());
|
|
|
|
|
|
// assert column values
|
|
|
List<Long> expectedValues = LongStream.range(0, 40).map(i -> epoch + i).sorted().boxed().toList();
|
|
@@ -244,9 +245,9 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
|
|
|
assertThat(results.columns(), hasSize(2));
|
|
|
assertEquals("avg(count)", results.columns().get(0).name());
|
|
|
- assertEquals("double", results.columns().get(0).type());
|
|
|
+ assertEquals(DataType.DOUBLE, results.columns().get(0).type());
|
|
|
assertEquals("data", results.columns().get(1).name());
|
|
|
- assertEquals("long", results.columns().get(1).type());
|
|
|
+ assertEquals(DataType.LONG, results.columns().get(1).type());
|
|
|
|
|
|
record Group(Long data, Double avg) {}
|
|
|
List<Group> expectedGroups = List.of(new Group(1L, 42.0), new Group(2L, 44.0), new Group(99L, null), new Group(null, 12.0));
|
|
@@ -263,9 +264,9 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
|
|
|
// assert column metadata
|
|
|
assertEquals("avg(count)", results.columns().get(0).name());
|
|
|
- assertEquals("double", results.columns().get(0).type());
|
|
|
+ assertEquals(DataType.DOUBLE, results.columns().get(0).type());
|
|
|
assertEquals("color", results.columns().get(1).name());
|
|
|
- assertEquals("keyword", results.columns().get(1).type());
|
|
|
+ assertEquals(DataType.KEYWORD, results.columns().get(1).type());
|
|
|
record Group(String color, double avg) {
|
|
|
|
|
|
}
|
|
@@ -298,9 +299,9 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
|
|
|
// assert column metadata
|
|
|
assertEquals("avg", results.columns().get(0).name());
|
|
|
- assertEquals("double", results.columns().get(0).type());
|
|
|
+ assertEquals(DataType.DOUBLE, results.columns().get(0).type());
|
|
|
assertEquals("color", results.columns().get(1).name());
|
|
|
- assertEquals("keyword", results.columns().get(1).type());
|
|
|
+ assertEquals(DataType.KEYWORD, results.columns().get(1).type());
|
|
|
record Group(String color, Double avg) {
|
|
|
|
|
|
}
|
|
@@ -332,17 +333,17 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
|
|
|
// assert column metadata
|
|
|
assertEquals("a", results.columns().get(0).name());
|
|
|
- assertEquals("double", results.columns().get(0).type());
|
|
|
+ assertEquals(DataType.DOUBLE, results.columns().get(0).type());
|
|
|
assertEquals("mi", results.columns().get(1).name());
|
|
|
- assertEquals("long", results.columns().get(1).type());
|
|
|
+ assertEquals(DataType.LONG, results.columns().get(1).type());
|
|
|
assertEquals("ma", results.columns().get(2).name());
|
|
|
- assertEquals("long", results.columns().get(2).type());
|
|
|
+ assertEquals(DataType.LONG, results.columns().get(2).type());
|
|
|
assertEquals("s", results.columns().get(3).name());
|
|
|
- assertEquals("long", results.columns().get(3).type());
|
|
|
+ assertEquals(DataType.LONG, results.columns().get(3).type());
|
|
|
assertEquals("c", results.columns().get(4).name());
|
|
|
- assertEquals("long", results.columns().get(4).type());
|
|
|
+ assertEquals(DataType.LONG, results.columns().get(4).type());
|
|
|
assertEquals("color", results.columns().get(5).name());
|
|
|
- assertEquals("keyword", results.columns().get(5).type());
|
|
|
+ assertEquals(DataType.KEYWORD, results.columns().get(5).type());
|
|
|
record Group(double avg, long mi, long ma, long s, long c, String color) {}
|
|
|
List<Group> expectedGroups = List.of(
|
|
|
new Group(42, 42, 42, 420, 10, "blue"),
|
|
@@ -380,7 +381,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (EsqlQueryResponse results = run("from test | stats avg_count = avg(count) by data | keep data")) {
|
|
|
logger.info(results);
|
|
|
assertThat(results.columns().stream().map(ColumnInfo::name).toList(), contains("data"));
|
|
|
- assertThat(results.columns().stream().map(ColumnInfo::type).toList(), contains("long"));
|
|
|
+ assertThat(results.columns().stream().map(ColumnInfoImpl::type).toList(), contains(DataType.LONG));
|
|
|
assertThat(getValuesList(results), containsInAnyOrder(List.of(1L), List.of(2L)));
|
|
|
}
|
|
|
}
|
|
@@ -389,7 +390,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (EsqlQueryResponse results = run("row a = 1, b = 2 | stats count(b) by a | keep a")) {
|
|
|
logger.info(results);
|
|
|
assertThat(results.columns().stream().map(ColumnInfo::name).toList(), contains("a"));
|
|
|
- assertThat(results.columns().stream().map(ColumnInfo::type).toList(), contains("integer"));
|
|
|
+ assertThat(results.columns().stream().map(ColumnInfoImpl::type).toList(), contains(DataType.INTEGER));
|
|
|
assertThat(getValuesList(results), contains(List.of(1)));
|
|
|
}
|
|
|
}
|
|
@@ -398,7 +399,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (EsqlQueryResponse results = run("row a = 1000000000000, b = 2 | stats count(b) by a | keep a")) {
|
|
|
logger.info(results);
|
|
|
assertThat(results.columns().stream().map(ColumnInfo::name).toList(), contains("a"));
|
|
|
- assertThat(results.columns().stream().map(ColumnInfo::type).toList(), contains("long"));
|
|
|
+ assertThat(results.columns().stream().map(ColumnInfoImpl::type).toList(), contains(DataType.LONG));
|
|
|
assertThat(getValuesList(results), contains(List.of(1000000000000L)));
|
|
|
}
|
|
|
}
|
|
@@ -407,7 +408,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (EsqlQueryResponse results = run("row a = 1.0, b = 2 | stats count(b) by a | keep a")) {
|
|
|
logger.info(results);
|
|
|
assertThat(results.columns().stream().map(ColumnInfo::name).toList(), contains("a"));
|
|
|
- assertThat(results.columns().stream().map(ColumnInfo::type).toList(), contains("double"));
|
|
|
+ assertThat(results.columns().stream().map(ColumnInfoImpl::type).toList(), contains(DataType.DOUBLE));
|
|
|
assertThat(getValuesList(results), contains(List.of(1.0)));
|
|
|
}
|
|
|
}
|
|
@@ -416,7 +417,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (EsqlQueryResponse results = run("row a = \"hello\", b = 2 | stats count(b) by a | keep a")) {
|
|
|
logger.info(results);
|
|
|
assertThat(results.columns().stream().map(ColumnInfo::name).toList(), contains("a"));
|
|
|
- assertThat(results.columns().stream().map(ColumnInfo::type).toList(), contains("keyword"));
|
|
|
+ assertThat(results.columns().stream().map(ColumnInfoImpl::type).toList(), contains(DataType.KEYWORD));
|
|
|
assertThat(getValuesList(results), contains(List.of("hello")));
|
|
|
}
|
|
|
}
|
|
@@ -425,7 +426,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (EsqlQueryResponse results = run("from test | stats count(count) by data_d | keep data_d")) {
|
|
|
logger.info(results);
|
|
|
assertThat(results.columns().stream().map(ColumnInfo::name).toList(), contains("data_d"));
|
|
|
- assertThat(results.columns().stream().map(ColumnInfo::type).toList(), contains("double"));
|
|
|
+ assertThat(results.columns().stream().map(ColumnInfoImpl::type).toList(), contains(DataType.DOUBLE));
|
|
|
assertThat(getValuesList(results), containsInAnyOrder(List.of(1.0), List.of(2.0)));
|
|
|
}
|
|
|
}
|
|
@@ -435,7 +436,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (EsqlQueryResponse results = run(query)) {
|
|
|
logger.info(results);
|
|
|
assertThat(results.columns().stream().map(ColumnInfo::name).toList(), contains("d", "d2"));
|
|
|
- assertThat(results.columns().stream().map(ColumnInfo::type).toList(), contains("long", "long"));
|
|
|
+ assertThat(results.columns().stream().map(ColumnInfoImpl::type).toList(), contains(DataType.LONG, DataType.LONG));
|
|
|
assertThat(getValuesList(results), containsInAnyOrder(List.of(1L, 1L), List.of(2L, 2L)));
|
|
|
}
|
|
|
}
|
|
@@ -444,7 +445,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (EsqlQueryResponse results = run("from test | stats a = avg(count) by data | keep a")) {
|
|
|
logger.info(results);
|
|
|
assertThat(results.columns().stream().map(ColumnInfo::name).toList(), contains("a"));
|
|
|
- assertThat(results.columns().stream().map(ColumnInfo::type).toList(), contains("double"));
|
|
|
+ assertThat(results.columns().stream().map(ColumnInfoImpl::type).toList(), contains(DataType.DOUBLE));
|
|
|
assertThat(getValuesList(results), containsInAnyOrder(List.of(42d), List.of(44d)));
|
|
|
}
|
|
|
}
|
|
@@ -453,7 +454,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (EsqlQueryResponse results = run("from test | stats a = avg(count) by data | rename a as b | keep b")) {
|
|
|
logger.info(results);
|
|
|
assertThat(results.columns().stream().map(ColumnInfo::name).toList(), contains("b"));
|
|
|
- assertThat(results.columns().stream().map(ColumnInfo::type).toList(), contains("double"));
|
|
|
+ assertThat(results.columns().stream().map(ColumnInfoImpl::type).toList(), contains(DataType.DOUBLE));
|
|
|
assertThat(getValuesList(results), containsInAnyOrder(List.of(42d), List.of(44d)));
|
|
|
}
|
|
|
}
|
|
@@ -462,7 +463,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (EsqlQueryResponse results = run("from test | rename data as d | keep d, count | stats avg(count) by d")) {
|
|
|
logger.info(results);
|
|
|
assertThat(results.columns().stream().map(ColumnInfo::name).toList(), contains("avg(count)", "d"));
|
|
|
- assertThat(results.columns().stream().map(ColumnInfo::type).toList(), contains("double", "long"));
|
|
|
+ assertThat(results.columns().stream().map(ColumnInfoImpl::type).toList(), contains(DataType.DOUBLE, DataType.LONG));
|
|
|
assertThat(getValuesList(results), containsInAnyOrder(List.of(42d, 1L), List.of(44d, 2L)));
|
|
|
}
|
|
|
}
|
|
@@ -471,7 +472,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (EsqlQueryResponse results = run("from test | rename count as c | keep c, data | stats avg(c) by data")) {
|
|
|
logger.info(results);
|
|
|
assertThat(results.columns().stream().map(ColumnInfo::name).toList(), contains("avg(c)", "data"));
|
|
|
- assertThat(results.columns().stream().map(ColumnInfo::type).toList(), contains("double", "long"));
|
|
|
+ assertThat(results.columns().stream().map(ColumnInfoImpl::type).toList(), contains(DataType.DOUBLE, DataType.LONG));
|
|
|
assertThat(getValuesList(results), containsInAnyOrder(List.of(42d, 1L), List.of(44d, 2L)));
|
|
|
}
|
|
|
}
|
|
@@ -482,7 +483,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
assertEquals(1, results.columns().size());
|
|
|
assertEquals(1, getValuesList(results).size());
|
|
|
assertEquals("avg(ratio)", results.columns().get(0).name());
|
|
|
- assertEquals("double", results.columns().get(0).type());
|
|
|
+ assertEquals(DataType.DOUBLE, results.columns().get(0).type());
|
|
|
assertEquals(1, getValuesList(results).get(0).size());
|
|
|
assertEquals(0.034d, (double) getValuesList(results).get(0).get(0), 0.001d);
|
|
|
}
|
|
@@ -494,7 +495,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
assertEquals(1, results.columns().size());
|
|
|
assertEquals(1, getValuesList(results).size());
|
|
|
assertEquals("count(*)", results.columns().get(0).name());
|
|
|
- assertEquals("long", results.columns().get(0).type());
|
|
|
+ assertEquals(DataType.LONG, results.columns().get(0).type());
|
|
|
var values = getValuesList(results).get(0);
|
|
|
assertEquals(1, values.size());
|
|
|
assertEquals(40, (long) values.get(0));
|
|
@@ -507,7 +508,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
assertEquals(1, results.columns().size());
|
|
|
assertEquals(1, getValuesList(results).size());
|
|
|
assertEquals("count(*)", results.columns().get(0).name());
|
|
|
- assertEquals("long", results.columns().get(0).type());
|
|
|
+ assertEquals(DataType.LONG, results.columns().get(0).type());
|
|
|
var values = getValuesList(results).get(0);
|
|
|
assertEquals(1, values.size());
|
|
|
assertEquals(20, (long) values.get(0));
|
|
@@ -520,9 +521,9 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
assertEquals(2, results.columns().size());
|
|
|
assertEquals(1, getValuesList(results).size());
|
|
|
assertEquals("count(*)", results.columns().get(0).name());
|
|
|
- assertEquals("long", results.columns().get(0).type());
|
|
|
+ assertEquals(DataType.LONG, results.columns().get(0).type());
|
|
|
assertEquals("data", results.columns().get(1).name());
|
|
|
- assertEquals("long", results.columns().get(1).type());
|
|
|
+ assertEquals(DataType.LONG, results.columns().get(1).type());
|
|
|
var values = getValuesList(results).get(0);
|
|
|
assertEquals(2, values.size());
|
|
|
assertEquals(20, (long) values.get(0));
|
|
@@ -536,10 +537,10 @@ 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 ColumnInfo("x", "double"))), 1d);
|
|
|
+ assertEquals(50, (double) getValuesList(results).get(0).get(results.columns().indexOf(new ColumnInfoImpl("x", "double"))), 1d);
|
|
|
assertEquals(
|
|
|
43,
|
|
|
- (double) getValuesList(results).get(0).get(results.columns().indexOf(new ColumnInfo("avg_count", "double"))),
|
|
|
+ (double) getValuesList(results).get(0).get(results.columns().indexOf(new ColumnInfoImpl("avg_count", "double"))),
|
|
|
1d
|
|
|
);
|
|
|
}
|
|
@@ -549,7 +550,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 ColumnInfo("count", "long"));
|
|
|
+ var countIndex = results.columns().indexOf(new ColumnInfoImpl("count", "long"));
|
|
|
for (List<Object> values : getValuesList(results)) {
|
|
|
assertThat((Long) values.get(countIndex), greaterThan(40L));
|
|
|
}
|
|
@@ -560,7 +561,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 ColumnInfo("count", "long"));
|
|
|
+ int countIndex = results.columns().indexOf(new ColumnInfoImpl("count", "long"));
|
|
|
for (List<Object> values : getValuesList(results)) {
|
|
|
assertThat((Long) values.get(countIndex), greaterThan(40L));
|
|
|
}
|
|
@@ -571,7 +572,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 ColumnInfo("x", "long"));
|
|
|
+ int countIndex = results.columns().indexOf(new ColumnInfoImpl("x", "long"));
|
|
|
for (List<Object> values : getValuesList(results)) {
|
|
|
assertThat((Long) values.get(countIndex), greaterThan(20L));
|
|
|
}
|
|
@@ -589,7 +590,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 ColumnInfo("l", "integer"));
|
|
|
+ int countIndex = results.columns().indexOf(new ColumnInfoImpl("l", "integer"));
|
|
|
for (List<Object> values : getValuesList(results)) {
|
|
|
assertThat((Integer) values.get(countIndex), greaterThanOrEqualTo(3));
|
|
|
}
|
|
@@ -608,11 +609,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 ColumnInfo("count", "long"))));
|
|
|
- assertThat(results.columns(), hasItem(equalTo(new ColumnInfo("count_d", "double"))));
|
|
|
- assertThat(results.columns(), hasItem(equalTo(new ColumnInfo("data", "long"))));
|
|
|
- assertThat(results.columns(), hasItem(equalTo(new ColumnInfo("data_d", "double"))));
|
|
|
- assertThat(results.columns(), hasItem(equalTo(new ColumnInfo("time", "long"))));
|
|
|
+ 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"))));
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -646,7 +647,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 ColumnInfo("count", "long"), results.columns().get(countIndex));
|
|
|
+ assertEquals(new ColumnInfoImpl("count", "long"), results.columns().get(countIndex));
|
|
|
for (List<Object> values : getValuesList(results)) {
|
|
|
assertThat((Long) values.get(countIndex), greaterThanOrEqualTo(42L));
|
|
|
}
|
|
@@ -657,7 +658,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 ColumnInfo("x", "long"), new ColumnInfo("y", "long")));
|
|
|
+ assertThat(results.columns(), contains(new ColumnInfoImpl("x", "long"), new ColumnInfoImpl("y", "long")));
|
|
|
for (List<Object> values : getValuesList(results)) {
|
|
|
assertThat((Long) values.get(0), greaterThanOrEqualTo(40L));
|
|
|
assertThat(values.get(1), is(values.get(0)));
|
|
@@ -672,10 +673,10 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
assertThat(
|
|
|
results.columns(),
|
|
|
contains(
|
|
|
- new ColumnInfo("x", "long"),
|
|
|
- new ColumnInfo("y", "long"),
|
|
|
- new ColumnInfo("x2", "long"),
|
|
|
- new ColumnInfo("y2", "long")
|
|
|
+ new ColumnInfoImpl("x", "long"),
|
|
|
+ new ColumnInfoImpl("y", "long"),
|
|
|
+ new ColumnInfoImpl("x2", "long"),
|
|
|
+ new ColumnInfoImpl("y2", "long")
|
|
|
)
|
|
|
);
|
|
|
for (List<Object> values : getValuesList(results)) {
|
|
@@ -691,7 +692,10 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (var results = run("from test | eval y = count | rename count as x | keep x, y | eval z = x + y | keep x, y, z")) {
|
|
|
logger.info(results);
|
|
|
assertEquals(40, getValuesList(results).size());
|
|
|
- assertThat(results.columns(), contains(new ColumnInfo("x", "long"), new ColumnInfo("y", "long"), new ColumnInfo("z", "long")));
|
|
|
+ assertThat(
|
|
|
+ results.columns(),
|
|
|
+ contains(new ColumnInfoImpl("x", "long"), new ColumnInfoImpl("y", "long"), new ColumnInfoImpl("z", "long"))
|
|
|
+ );
|
|
|
for (List<Object> values : getValuesList(results)) {
|
|
|
assertThat((Long) values.get(0), greaterThanOrEqualTo(40L));
|
|
|
assertThat(values.get(1), is(values.get(0)));
|
|
@@ -704,7 +708,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 ColumnInfo("cnt", "long"), new ColumnInfo("data", "long")));
|
|
|
+ assertThat(results.columns(), contains(new ColumnInfoImpl("cnt", "long"), new ColumnInfoImpl("data", "long")));
|
|
|
for (List<Object> values : getValuesList(results)) {
|
|
|
assertThat(values.get(1), is(values.get(0)));
|
|
|
}
|
|
@@ -865,7 +869,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
assertEquals(1, results.columns().size());
|
|
|
assertEquals(1, getValuesList(results).size());
|
|
|
assertEquals("avg(nullsum)", results.columns().get(0).name());
|
|
|
- assertEquals("double", results.columns().get(0).type());
|
|
|
+ assertEquals(DataType.DOUBLE, results.columns().get(0).type());
|
|
|
assertEquals(1, getValuesList(results).get(0).size());
|
|
|
assertNull(getValuesList(results).get(0).get(0));
|
|
|
}
|
|
@@ -874,7 +878,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 ColumnInfo("ac", "double"), new ColumnInfo("data", "long")));
|
|
|
+ assertThat(results.columns(), contains(new ColumnInfoImpl("ac", "double"), new ColumnInfoImpl("data", "long")));
|
|
|
assertThat(getValuesList(results), contains(anyOf(contains(42.0, 1L), contains(44.0, 2L))));
|
|
|
}
|
|
|
}
|
|
@@ -882,7 +886,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 ColumnInfo("data", "long")));
|
|
|
+ assertThat(results.columns(), contains(new ColumnInfoImpl("data", "long")));
|
|
|
assertThat(getValuesList(results), contains(anyOf(contains(1L), contains(2L)), anyOf(contains(1L), contains(2L))));
|
|
|
}
|
|
|
}
|
|
@@ -891,7 +895,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 ColumnInfo("a", "integer")));
|
|
|
+ assertThat(results.columns(), contains(new ColumnInfoImpl("a", "integer")));
|
|
|
assertThat(getValuesList(results), is(empty()));
|
|
|
}
|
|
|
}
|
|
@@ -1010,7 +1014,7 @@ 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 ColumnInfo("k", "keyword"), new ColumnInfo("v", "long"))));
|
|
|
+ assertThat(results.columns(), equalTo(List.of(new ColumnInfoImpl("k", "keyword"), new ColumnInfoImpl("v", "long"))));
|
|
|
assertThat(getValuesList(results), empty());
|
|
|
}
|
|
|
}
|
|
@@ -1019,7 +1023,13 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
try (EsqlQueryResponse results = run("show info")) {
|
|
|
assertThat(
|
|
|
results.columns(),
|
|
|
- equalTo(List.of(new ColumnInfo("version", "keyword"), new ColumnInfo("date", "keyword"), new ColumnInfo("hash", "keyword")))
|
|
|
+ equalTo(
|
|
|
+ List.of(
|
|
|
+ new ColumnInfoImpl("version", "keyword"),
|
|
|
+ new ColumnInfoImpl("date", "keyword"),
|
|
|
+ new ColumnInfoImpl("hash", "keyword")
|
|
|
+ )
|
|
|
+ )
|
|
|
);
|
|
|
assertThat(getValuesList(results).size(), equalTo(1));
|
|
|
assertThat(getValuesList(results).get(0).get(0), equalTo(Build.current().version()));
|
|
@@ -1034,16 +1044,16 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
results.columns(),
|
|
|
equalTo(
|
|
|
List.of(
|
|
|
- new ColumnInfo("name", "keyword"),
|
|
|
- new ColumnInfo("synopsis", "keyword"),
|
|
|
- new ColumnInfo("argNames", "keyword"),
|
|
|
- new ColumnInfo("argTypes", "keyword"),
|
|
|
- new ColumnInfo("argDescriptions", "keyword"),
|
|
|
- new ColumnInfo("returnType", "keyword"),
|
|
|
- new ColumnInfo("description", "keyword"),
|
|
|
- new ColumnInfo("optionalArgs", "boolean"),
|
|
|
- new ColumnInfo("variadic", "boolean"),
|
|
|
- new ColumnInfo("isAggregation", "boolean")
|
|
|
+ new ColumnInfoImpl("name", "keyword"),
|
|
|
+ new ColumnInfoImpl("synopsis", "keyword"),
|
|
|
+ new ColumnInfoImpl("argNames", "keyword"),
|
|
|
+ new ColumnInfoImpl("argTypes", "keyword"),
|
|
|
+ new ColumnInfoImpl("argDescriptions", "keyword"),
|
|
|
+ new ColumnInfoImpl("returnType", "keyword"),
|
|
|
+ new ColumnInfoImpl("description", "keyword"),
|
|
|
+ new ColumnInfoImpl("optionalArgs", "boolean"),
|
|
|
+ new ColumnInfoImpl("variadic", "boolean"),
|
|
|
+ new ColumnInfoImpl("isAggregation", "boolean")
|
|
|
)
|
|
|
)
|
|
|
);
|
|
@@ -1053,7 +1063,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 ColumnInfo("data", "long"))));
|
|
|
+ assertThat(results.columns(), equalTo(List.of(new ColumnInfoImpl("data", "long"))));
|
|
|
assertThat(getValuesList(results).size(), equalTo(0));
|
|
|
}
|
|
|
}
|
|
@@ -1088,11 +1098,11 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
|
|
|
// assert column metadata
|
|
|
assertEquals("data", results.columns().get(0).name());
|
|
|
- assertEquals("long", results.columns().get(0).type());
|
|
|
+ assertEquals(DataType.LONG, results.columns().get(0).type());
|
|
|
assertEquals("count", results.columns().get(1).name());
|
|
|
- assertEquals("long", results.columns().get(1).type());
|
|
|
+ assertEquals(DataType.LONG, results.columns().get(1).type());
|
|
|
assertEquals("color", results.columns().get(2).name());
|
|
|
- assertEquals("keyword", results.columns().get(2).type());
|
|
|
+ assertEquals(DataType.KEYWORD, results.columns().get(2).type());
|
|
|
record Group(Long data, Long count, String color) {
|
|
|
Group(Long data, Long count) {
|
|
|
this(data, count, "yellow");
|
|
@@ -1139,7 +1149,7 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
|
|
|
// assert column metadata
|
|
|
assertEquals("time", results.columns().get(0).name());
|
|
|
- assertEquals("long", results.columns().get(0).type());
|
|
|
+ assertEquals(DataType.LONG, results.columns().get(0).type());
|
|
|
|
|
|
boolean sortedDesc = "desc".equals(sortOrder);
|
|
|
var expected = LongStream.range(0, 40)
|
|
@@ -1214,7 +1224,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 ColumnInfo("_id", "keyword"))));
|
|
|
+ assertThat(results.columns(), equalTo(List.of(new ColumnInfoImpl("_id", "keyword"))));
|
|
|
ListMatcher values = matchesList();
|
|
|
for (int i = 10; i < 50; i++) {
|
|
|
values = values.item(List.of(Integer.toString(i)));
|
|
@@ -1420,12 +1430,12 @@ 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 ColumnInfo("_source", "_source"), new ColumnInfo("x", "integer"))));
|
|
|
+ assertThat(resp.columns(), equalTo(List.of(new ColumnInfoImpl("_source", "_source"), new ColumnInfoImpl("x", "integer"))));
|
|
|
}
|
|
|
|
|
|
try (EsqlQueryResponse resp = run(from)) {
|
|
|
assertFalse(resp.values().hasNext());
|
|
|
- assertThat(resp.columns(), equalTo(List.of(new ColumnInfo("<no-fields>", "null"))));
|
|
|
+ assertThat(resp.columns(), equalTo(List.of(new ColumnInfoImpl("<no-fields>", "null"))));
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1450,32 +1460,38 @@ public class EsqlActionIT extends AbstractEsqlIntegTestCase {
|
|
|
assertFalse(resp.values().hasNext());
|
|
|
assertThat(
|
|
|
resp.columns(),
|
|
|
- equalTo(List.of(new ColumnInfo("name", "text"), new ColumnInfo("_source", "_source"), new ColumnInfo("x", "integer")))
|
|
|
+ equalTo(
|
|
|
+ List.of(
|
|
|
+ new ColumnInfoImpl("name", "text"),
|
|
|
+ new ColumnInfoImpl("_source", "_source"),
|
|
|
+ new ColumnInfoImpl("x", "integer")
|
|
|
+ )
|
|
|
+ )
|
|
|
);
|
|
|
}
|
|
|
|
|
|
try (EsqlQueryResponse resp = run(from)) {
|
|
|
assertFalse(resp.values().hasNext());
|
|
|
- assertThat(resp.columns(), equalTo(List.of(new ColumnInfo("name", "text"))));
|
|
|
+ assertThat(resp.columns(), equalTo(List.of(new ColumnInfoImpl("name", "text"))));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
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 ColumnInfo("_source", "_source"))));
|
|
|
+ assertThat(resp.columns(), equalTo(List.of(new ColumnInfoImpl("_source", "_source"))));
|
|
|
}
|
|
|
|
|
|
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 ColumnInfo("y", "integer"), new ColumnInfo("x", "integer"))));
|
|
|
+ assertThat(resp.columns(), equalTo(List.of(new ColumnInfoImpl("y", "integer"), new ColumnInfoImpl("x", "integer"))));
|
|
|
}
|
|
|
|
|
|
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 ColumnInfo("c", "long"))));
|
|
|
+ assertThat(resp.columns(), equalTo(List.of(new ColumnInfoImpl("c", "long"))));
|
|
|
}
|
|
|
|
|
|
try (EsqlQueryResponse resp = run(from + "| STATS c = count() | EVAL x = 123")) {
|
|
@@ -1484,7 +1500,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 ColumnInfo("c", "long"), new ColumnInfo("x", "integer"))));
|
|
|
+ assertThat(resp.columns(), equalTo(List.of(new ColumnInfoImpl("c", "long"), new ColumnInfoImpl("x", "integer"))));
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1561,7 +1577,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 ColumnInfo("data", "long")));
|
|
|
+ assertThat(results.columns(), contains(new ColumnInfoImpl("data", "long")));
|
|
|
assertThat(results.columns().size(), is(1));
|
|
|
assertThat(getValuesList(results).size(), is(docsCount));
|
|
|
for (List<Object> row : getValuesList(results)) {
|