Skip to content

Commit f246efa

Browse files
committed
multi-type fields
1 parent cf48733 commit f246efa

File tree

4 files changed

+15
-14
lines changed

4 files changed

+15
-14
lines changed

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/type/EsField.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,10 +124,6 @@ public static Reader<? extends EsField> getReader(String name) {
124124
private final boolean isAlias;
125125
private final TimeSeriesFieldType timeSeriesFieldType;
126126

127-
public EsField(String name, DataType esDataType, Map<String, EsField> properties, boolean aggregatable) {
128-
this(name, esDataType, properties, aggregatable, false, TimeSeriesFieldType.UNKNOWN);
129-
}
130-
131127
public EsField(
132128
String name,
133129
DataType esDataType,

x-pack/plugin/esql-core/src/main/java/org/elasticsearch/xpack/esql/core/type/MultiTypeEsField.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,6 @@ public class MultiTypeEsField extends EsField {
3333

3434
private final Map<String, Expression> indexToConversionExpressions;
3535

36-
public MultiTypeEsField(String name, DataType dataType, boolean aggregatable, Map<String, Expression> indexToConversionExpressions) {
37-
super(name, dataType, Map.of(), aggregatable);
38-
this.indexToConversionExpressions = indexToConversionExpressions;
39-
}
40-
4136
public MultiTypeEsField(
4237
String name,
4338
DataType dataType,
@@ -99,7 +94,13 @@ public static MultiTypeEsField resolveFrom(
9994
indexToConversionExpressions.put(indexName, convertExpr);
10095
}
10196
}
102-
return new MultiTypeEsField(invalidMappedField.getName(), resolvedDataType, false, indexToConversionExpressions);
97+
return new MultiTypeEsField(
98+
invalidMappedField.getName(),
99+
resolvedDataType,
100+
false,
101+
indexToConversionExpressions,
102+
invalidMappedField.getTimeSeriesFieldType()
103+
);
103104
}
104105

105106
@Override

x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/analysis/Analyzer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1768,7 +1768,8 @@ private Expression resolveConvertFunction(ConvertFunction convert, List<FieldAtt
17681768
fa.fieldName().string(),
17691769
convertExpression.dataType(),
17701770
false,
1771-
indexToConversionExpressions
1771+
indexToConversionExpressions,
1772+
fa.field().getTimeSeriesFieldType()
17721773
);
17731774
return createIfDoesNotAlreadyExist(fa, multiTypeEsField, unionFieldAttributes);
17741775
}

x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/type/MultiTypeEsFieldTests.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,21 +72,24 @@ protected MultiTypeEsField createTestInstance() {
7272
DataType dataType = randomFrom(types());
7373
DataType toType = toString ? DataType.KEYWORD : dataType;
7474
Map<String, Expression> indexToConvertExpressions = randomConvertExpressions(name, toString, dataType);
75-
return new MultiTypeEsField(name, toType, false, indexToConvertExpressions);
75+
EsField.TimeSeriesFieldType tsType = randomFrom(EsField.TimeSeriesFieldType.values());
76+
return new MultiTypeEsField(name, toType, false, indexToConvertExpressions, tsType);
7677
}
7778

7879
@Override
7980
protected MultiTypeEsField mutateInstance(MultiTypeEsField instance) throws IOException {
8081
String name = instance.getName();
8182
DataType dataType = instance.getDataType();
8283
Map<String, Expression> indexToConvertExpressions = instance.getIndexToConversionExpressions();
83-
switch (between(0, 2)) {
84+
EsField.TimeSeriesFieldType tsType = instance.getTimeSeriesFieldType();
85+
switch (between(0, 3)) {
8486
case 0 -> name = randomAlphaOfLength(name.length() + 1);
8587
case 1 -> dataType = randomValueOtherThan(dataType, () -> randomFrom(DataType.types()));
8688
case 2 -> indexToConvertExpressions = mutateConvertExpressions(name, dataType, indexToConvertExpressions);
89+
case 3 -> tsType = randomValueOtherThan(tsType, () -> randomFrom(EsField.TimeSeriesFieldType.values()));
8790
default -> throw new IllegalArgumentException();
8891
}
89-
return new MultiTypeEsField(name, dataType, false, indexToConvertExpressions);
92+
return new MultiTypeEsField(name, dataType, false, indexToConvertExpressions, tsType);
9093
}
9194

9295
@Override

0 commit comments

Comments
 (0)