|
@@ -50,11 +50,7 @@ import org.elasticsearch.xpack.esql.core.plan.logical.LogicalPlan;
|
|
import org.elasticsearch.xpack.esql.core.plan.logical.OrderBy;
|
|
import org.elasticsearch.xpack.esql.core.plan.logical.OrderBy;
|
|
import org.elasticsearch.xpack.esql.core.tree.Source;
|
|
import org.elasticsearch.xpack.esql.core.tree.Source;
|
|
import org.elasticsearch.xpack.esql.core.type.DataType;
|
|
import org.elasticsearch.xpack.esql.core.type.DataType;
|
|
-import org.elasticsearch.xpack.esql.core.type.DateEsField;
|
|
|
|
import org.elasticsearch.xpack.esql.core.type.EsField;
|
|
import org.elasticsearch.xpack.esql.core.type.EsField;
|
|
-import org.elasticsearch.xpack.esql.core.type.InvalidMappedField;
|
|
|
|
-import org.elasticsearch.xpack.esql.core.type.KeywordEsField;
|
|
|
|
-import org.elasticsearch.xpack.esql.core.type.TextEsField;
|
|
|
|
import org.elasticsearch.xpack.esql.core.type.UnsupportedEsField;
|
|
import org.elasticsearch.xpack.esql.core.type.UnsupportedEsField;
|
|
import org.elasticsearch.xpack.esql.expression.function.UnsupportedAttribute;
|
|
import org.elasticsearch.xpack.esql.expression.function.UnsupportedAttribute;
|
|
import org.elasticsearch.xpack.esql.expression.function.aggregate.AggregateFunction;
|
|
import org.elasticsearch.xpack.esql.expression.function.aggregate.AggregateFunction;
|
|
@@ -307,13 +303,6 @@ public final class PlanNamedTypes {
|
|
of(Attribute.class, ReferenceAttribute.class, PlanNamedTypes::writeReferenceAttr, PlanNamedTypes::readReferenceAttr),
|
|
of(Attribute.class, ReferenceAttribute.class, PlanNamedTypes::writeReferenceAttr, PlanNamedTypes::readReferenceAttr),
|
|
of(Attribute.class, MetadataAttribute.class, PlanNamedTypes::writeMetadataAttr, PlanNamedTypes::readMetadataAttr),
|
|
of(Attribute.class, MetadataAttribute.class, PlanNamedTypes::writeMetadataAttr, PlanNamedTypes::readMetadataAttr),
|
|
of(Attribute.class, UnsupportedAttribute.class, PlanNamedTypes::writeUnsupportedAttr, PlanNamedTypes::readUnsupportedAttr),
|
|
of(Attribute.class, UnsupportedAttribute.class, PlanNamedTypes::writeUnsupportedAttr, PlanNamedTypes::readUnsupportedAttr),
|
|
- // EsFields
|
|
|
|
- of(EsField.class, EsField.class, PlanNamedTypes::writeEsField, PlanNamedTypes::readEsField),
|
|
|
|
- of(EsField.class, DateEsField.class, PlanNamedTypes::writeDateEsField, PlanNamedTypes::readDateEsField),
|
|
|
|
- of(EsField.class, InvalidMappedField.class, PlanNamedTypes::writeInvalidMappedField, PlanNamedTypes::readInvalidMappedField),
|
|
|
|
- of(EsField.class, KeywordEsField.class, PlanNamedTypes::writeKeywordEsField, PlanNamedTypes::readKeywordEsField),
|
|
|
|
- of(EsField.class, TextEsField.class, PlanNamedTypes::writeTextEsField, PlanNamedTypes::readTextEsField),
|
|
|
|
- of(EsField.class, UnsupportedEsField.class, PlanNamedTypes::writeUnsupportedEsField, PlanNamedTypes::readUnsupportedEsField),
|
|
|
|
// NamedExpressions
|
|
// NamedExpressions
|
|
of(NamedExpression.class, Alias.class, PlanNamedTypes::writeAlias, PlanNamedTypes::readAlias),
|
|
of(NamedExpression.class, Alias.class, PlanNamedTypes::writeAlias, PlanNamedTypes::readAlias),
|
|
// BinaryComparison
|
|
// BinaryComparison
|
|
@@ -1071,7 +1060,7 @@ public final class PlanNamedTypes {
|
|
in.readOptionalWithReader(PlanNamedTypes::readFieldAttribute),
|
|
in.readOptionalWithReader(PlanNamedTypes::readFieldAttribute),
|
|
in.readString(),
|
|
in.readString(),
|
|
DataType.readFrom(in),
|
|
DataType.readFrom(in),
|
|
- in.readEsFieldNamed(),
|
|
|
|
|
|
+ in.readNamedWriteable(EsField.class),
|
|
in.readOptionalString(),
|
|
in.readOptionalString(),
|
|
in.readEnum(Nullability.class),
|
|
in.readEnum(Nullability.class),
|
|
NameId.readFrom(in),
|
|
NameId.readFrom(in),
|
|
@@ -1084,7 +1073,7 @@ public final class PlanNamedTypes {
|
|
out.writeOptionalWriteable(fieldAttribute.parent() == null ? null : o -> writeFieldAttribute(out, fieldAttribute.parent()));
|
|
out.writeOptionalWriteable(fieldAttribute.parent() == null ? null : o -> writeFieldAttribute(out, fieldAttribute.parent()));
|
|
out.writeString(fieldAttribute.name());
|
|
out.writeString(fieldAttribute.name());
|
|
out.writeString(fieldAttribute.dataType().typeName());
|
|
out.writeString(fieldAttribute.dataType().typeName());
|
|
- out.writeNamed(EsField.class, fieldAttribute.field());
|
|
|
|
|
|
+ out.writeNamedWriteable(fieldAttribute.field());
|
|
out.writeOptionalString(fieldAttribute.qualifier());
|
|
out.writeOptionalString(fieldAttribute.qualifier());
|
|
out.writeEnum(fieldAttribute.nullable());
|
|
out.writeEnum(fieldAttribute.nullable());
|
|
fieldAttribute.id().writeTo(out);
|
|
fieldAttribute.id().writeTo(out);
|
|
@@ -1141,7 +1130,7 @@ public final class PlanNamedTypes {
|
|
return new UnsupportedAttribute(
|
|
return new UnsupportedAttribute(
|
|
Source.readFrom(in),
|
|
Source.readFrom(in),
|
|
in.readString(),
|
|
in.readString(),
|
|
- readUnsupportedEsField(in),
|
|
|
|
|
|
+ new UnsupportedEsField(in),
|
|
in.readOptionalString(),
|
|
in.readOptionalString(),
|
|
NameId.readFrom(in)
|
|
NameId.readFrom(in)
|
|
);
|
|
);
|
|
@@ -1150,111 +1139,11 @@ public final class PlanNamedTypes {
|
|
static void writeUnsupportedAttr(PlanStreamOutput out, UnsupportedAttribute unsupportedAttribute) throws IOException {
|
|
static void writeUnsupportedAttr(PlanStreamOutput out, UnsupportedAttribute unsupportedAttribute) throws IOException {
|
|
Source.EMPTY.writeTo(out);
|
|
Source.EMPTY.writeTo(out);
|
|
out.writeString(unsupportedAttribute.name());
|
|
out.writeString(unsupportedAttribute.name());
|
|
- writeUnsupportedEsField(out, unsupportedAttribute.field());
|
|
|
|
|
|
+ unsupportedAttribute.field().writeTo(out);
|
|
out.writeOptionalString(unsupportedAttribute.hasCustomMessage() ? unsupportedAttribute.unresolvedMessage() : null);
|
|
out.writeOptionalString(unsupportedAttribute.hasCustomMessage() ? unsupportedAttribute.unresolvedMessage() : null);
|
|
unsupportedAttribute.id().writeTo(out);
|
|
unsupportedAttribute.id().writeTo(out);
|
|
}
|
|
}
|
|
|
|
|
|
- // -- EsFields
|
|
|
|
-
|
|
|
|
- static EsField readEsField(PlanStreamInput in) throws IOException {
|
|
|
|
- return new EsField(
|
|
|
|
- in.readString(),
|
|
|
|
- DataType.readFrom(in),
|
|
|
|
- in.readImmutableMap(StreamInput::readString, readerFromPlanReader(PlanStreamInput::readEsFieldNamed)),
|
|
|
|
- in.readBoolean(),
|
|
|
|
- in.readBoolean()
|
|
|
|
- );
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- static void writeEsField(PlanStreamOutput out, EsField esField) throws IOException {
|
|
|
|
- out.writeString(esField.getName());
|
|
|
|
- out.writeString(esField.getDataType().typeName());
|
|
|
|
- out.writeMap(esField.getProperties(), (o, v) -> out.writeNamed(EsField.class, v));
|
|
|
|
- out.writeBoolean(esField.isAggregatable());
|
|
|
|
- out.writeBoolean(esField.isAlias());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- static DateEsField readDateEsField(PlanStreamInput in) throws IOException {
|
|
|
|
- return DateEsField.dateEsField(
|
|
|
|
- in.readString(),
|
|
|
|
- in.readImmutableMap(StreamInput::readString, readerFromPlanReader(PlanStreamInput::readEsFieldNamed)),
|
|
|
|
- in.readBoolean()
|
|
|
|
- );
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- static void writeDateEsField(PlanStreamOutput out, DateEsField dateEsField) throws IOException {
|
|
|
|
- out.writeString(dateEsField.getName());
|
|
|
|
- out.writeMap(dateEsField.getProperties(), (o, v) -> out.writeNamed(EsField.class, v));
|
|
|
|
- out.writeBoolean(dateEsField.isAggregatable());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- static InvalidMappedField readInvalidMappedField(PlanStreamInput in) throws IOException {
|
|
|
|
- return new InvalidMappedField(
|
|
|
|
- in.readString(),
|
|
|
|
- in.readString(),
|
|
|
|
- in.readImmutableMap(StreamInput::readString, readerFromPlanReader(PlanStreamInput::readEsFieldNamed))
|
|
|
|
- );
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- static void writeInvalidMappedField(PlanStreamOutput out, InvalidMappedField field) throws IOException {
|
|
|
|
- out.writeString(field.getName());
|
|
|
|
- out.writeString(field.errorMessage());
|
|
|
|
- out.writeMap(field.getProperties(), (o, v) -> out.writeNamed(EsField.class, v));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- static KeywordEsField readKeywordEsField(PlanStreamInput in) throws IOException {
|
|
|
|
- return new KeywordEsField(
|
|
|
|
- in.readString(),
|
|
|
|
- in.readImmutableMap(StreamInput::readString, readerFromPlanReader(PlanStreamInput::readEsFieldNamed)),
|
|
|
|
- in.readBoolean(),
|
|
|
|
- in.readInt(),
|
|
|
|
- in.readBoolean(),
|
|
|
|
- in.readBoolean()
|
|
|
|
- );
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- static void writeKeywordEsField(PlanStreamOutput out, KeywordEsField keywordEsField) throws IOException {
|
|
|
|
- out.writeString(keywordEsField.getName());
|
|
|
|
- out.writeMap(keywordEsField.getProperties(), (o, v) -> out.writeNamed(EsField.class, v));
|
|
|
|
- out.writeBoolean(keywordEsField.isAggregatable());
|
|
|
|
- out.writeInt(keywordEsField.getPrecision());
|
|
|
|
- out.writeBoolean(keywordEsField.getNormalized());
|
|
|
|
- out.writeBoolean(keywordEsField.isAlias());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- static TextEsField readTextEsField(PlanStreamInput in) throws IOException {
|
|
|
|
- return new TextEsField(
|
|
|
|
- in.readString(),
|
|
|
|
- in.readImmutableMap(StreamInput::readString, readerFromPlanReader(PlanStreamInput::readEsFieldNamed)),
|
|
|
|
- in.readBoolean(),
|
|
|
|
- in.readBoolean()
|
|
|
|
- );
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- static void writeTextEsField(PlanStreamOutput out, TextEsField textEsField) throws IOException {
|
|
|
|
- out.writeString(textEsField.getName());
|
|
|
|
- out.writeMap(textEsField.getProperties(), (o, v) -> out.writeNamed(EsField.class, v));
|
|
|
|
- out.writeBoolean(textEsField.isAggregatable());
|
|
|
|
- out.writeBoolean(textEsField.isAlias());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- static UnsupportedEsField readUnsupportedEsField(PlanStreamInput in) throws IOException {
|
|
|
|
- return new UnsupportedEsField(
|
|
|
|
- in.readString(),
|
|
|
|
- in.readString(),
|
|
|
|
- in.readOptionalString(),
|
|
|
|
- in.readImmutableMap(StreamInput::readString, readerFromPlanReader(PlanStreamInput::readEsFieldNamed))
|
|
|
|
- );
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- static void writeUnsupportedEsField(PlanStreamOutput out, UnsupportedEsField unsupportedEsField) throws IOException {
|
|
|
|
- out.writeString(unsupportedEsField.getName());
|
|
|
|
- out.writeString(unsupportedEsField.getOriginalType());
|
|
|
|
- out.writeOptionalString(unsupportedEsField.getInherited());
|
|
|
|
- out.writeMap(unsupportedEsField.getProperties(), (o, v) -> out.writeNamed(EsField.class, v));
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
// -- BinaryComparison
|
|
// -- BinaryComparison
|
|
|
|
|
|
static EsqlBinaryComparison readBinComparison(PlanStreamInput in, String name) throws IOException {
|
|
static EsqlBinaryComparison readBinComparison(PlanStreamInput in, String name) throws IOException {
|
|
@@ -1967,14 +1856,14 @@ public final class PlanNamedTypes {
|
|
static EsIndex readEsIndex(PlanStreamInput in) throws IOException {
|
|
static EsIndex readEsIndex(PlanStreamInput in) throws IOException {
|
|
return new EsIndex(
|
|
return new EsIndex(
|
|
in.readString(),
|
|
in.readString(),
|
|
- in.readImmutableMap(StreamInput::readString, readerFromPlanReader(PlanStreamInput::readEsFieldNamed)),
|
|
|
|
|
|
+ in.readImmutableMap(StreamInput::readString, i -> i.readNamedWriteable(EsField.class)),
|
|
(Set<String>) in.readGenericValue()
|
|
(Set<String>) in.readGenericValue()
|
|
);
|
|
);
|
|
}
|
|
}
|
|
|
|
|
|
static void writeEsIndex(PlanStreamOutput out, EsIndex esIndex) throws IOException {
|
|
static void writeEsIndex(PlanStreamOutput out, EsIndex esIndex) throws IOException {
|
|
out.writeString(esIndex.name());
|
|
out.writeString(esIndex.name());
|
|
- out.writeMap(esIndex.mapping(), (o, v) -> out.writeNamed(EsField.class, v));
|
|
|
|
|
|
+ out.writeMap(esIndex.mapping(), StreamOutput::writeNamedWriteable);
|
|
out.writeGenericValue(esIndex.concreteIndices());
|
|
out.writeGenericValue(esIndex.concreteIndices());
|
|
}
|
|
}
|
|
|
|
|