diff --git a/pom.xml b/pom.xml index 4f55cf8066d9a..61ce11b4f1c25 100644 --- a/pom.xml +++ b/pom.xml @@ -52,7 +52,7 @@ 4.12.0 3.4.0 19.3.0.0 - 1.40 + 1.43 2.12.7 diff --git a/presto-main-base/src/main/java/com/facebook/presto/server/thrift/CustomCodecUtils.java b/presto-main-base/src/main/java/com/facebook/presto/server/thrift/CustomCodecUtils.java index a6e4b7a32df5e..483c0c3def17d 100644 --- a/presto-main-base/src/main/java/com/facebook/presto/server/thrift/CustomCodecUtils.java +++ b/presto-main-base/src/main/java/com/facebook/presto/server/thrift/CustomCodecUtils.java @@ -17,7 +17,6 @@ import com.facebook.drift.TException; import com.facebook.drift.codec.metadata.DefaultThriftTypeReference; import com.facebook.drift.codec.metadata.FieldKind; -import com.facebook.drift.codec.metadata.ThriftCatalog; import com.facebook.drift.codec.metadata.ThriftFieldExtractor; import com.facebook.drift.codec.metadata.ThriftFieldMetadata; import com.facebook.drift.codec.metadata.ThriftStructMetadata; @@ -34,7 +33,6 @@ import java.util.Optional; import static com.facebook.drift.annotations.ThriftField.Requiredness.NONE; -import static com.google.common.base.Preconditions.checkNotNull; import static java.lang.String.format; /*** @@ -44,12 +42,8 @@ public class CustomCodecUtils { private CustomCodecUtils() {} - public static ThriftStructMetadata createSyntheticMetadata(ThriftCatalog thriftCatalog, short fieldId, String fieldName, Class originalType, Class referencedType) + public static ThriftStructMetadata createSyntheticMetadata(short fieldId, String fieldName, Class originalType, Class referencedType, ThriftType thriftType) { - checkNotNull(thriftCatalog.getThriftType(referencedType), "Can not find corresponding thrift type for type %s", referencedType); - - ThriftType thriftType = thriftCatalog.getThriftType(referencedType); - ThriftFieldMetadata fieldMetaData = new ThriftFieldMetadata( fieldId, false, false, NONE, ImmutableMap.of(), diff --git a/presto-main-base/src/main/java/com/facebook/presto/server/thrift/MetadataUpdatesCodec.java b/presto-main-base/src/main/java/com/facebook/presto/server/thrift/MetadataUpdatesCodec.java index d53fe9986a01f..f14ddf4295513 100644 --- a/presto-main-base/src/main/java/com/facebook/presto/server/thrift/MetadataUpdatesCodec.java +++ b/presto-main-base/src/main/java/com/facebook/presto/server/thrift/MetadataUpdatesCodec.java @@ -14,9 +14,9 @@ package com.facebook.presto.server.thrift; import com.facebook.airlift.json.JsonCodec; +import com.facebook.drift.codec.CodecThriftType; import com.facebook.drift.codec.ThriftCodec; import com.facebook.drift.codec.metadata.ThriftCatalog; -import com.facebook.drift.codec.metadata.ThriftStructMetadata; import com.facebook.drift.codec.metadata.ThriftType; import com.facebook.drift.protocol.TProtocolReader; import com.facebook.drift.protocol.TProtocolWriter; @@ -35,26 +35,27 @@ public class MetadataUpdatesCodec private static final short METADATA_UPDATES_DATA_FIELD_ID = 1; private static final String METADATA_UPDATES_DATA_FIELD_NAME = "metadataUpdates"; private static final String METADATA_UPDATES_STRUCT_NAME = "MetadataUpdates"; + private static final ThriftType SYNTHETIC_STRUCT_TYPE = ThriftType.struct(createSyntheticMetadata(METADATA_UPDATES_DATA_FIELD_ID, METADATA_UPDATES_DATA_FIELD_NAME, MetadataUpdates.class, String.class, ThriftType.STRING)); - private final ThriftCatalog thriftCatalog; - private final ThriftType syntheticStructType; private final JsonCodec jsonCodec; @Inject public MetadataUpdatesCodec(JsonCodec jsonCodec, ThriftCatalog thriftCatalog) { this.jsonCodec = requireNonNull(jsonCodec, "jsonCodec is null"); - this.thriftCatalog = requireNonNull(thriftCatalog, "thriftCatalog is null"); - - ThriftStructMetadata structMetadata = createSyntheticMetadata(thriftCatalog, METADATA_UPDATES_DATA_FIELD_ID, METADATA_UPDATES_DATA_FIELD_NAME, MetadataUpdates.class, String.class); - this.syntheticStructType = ThriftType.struct(structMetadata); + thriftCatalog.addThriftType(SYNTHETIC_STRUCT_TYPE); + } - thriftCatalog.addThriftType(syntheticStructType); + @CodecThriftType + public static ThriftType getThriftType() + { + return SYNTHETIC_STRUCT_TYPE; } + @Override public ThriftType getType() { - return syntheticStructType; + return SYNTHETIC_STRUCT_TYPE; } @Override diff --git a/presto-main-base/src/main/java/com/facebook/presto/server/thrift/SplitCodec.java b/presto-main-base/src/main/java/com/facebook/presto/server/thrift/SplitCodec.java index 911b094aebf46..e47fdcf9b3e19 100644 --- a/presto-main-base/src/main/java/com/facebook/presto/server/thrift/SplitCodec.java +++ b/presto-main-base/src/main/java/com/facebook/presto/server/thrift/SplitCodec.java @@ -14,9 +14,9 @@ package com.facebook.presto.server.thrift; import com.facebook.airlift.json.JsonCodec; +import com.facebook.drift.codec.CodecThriftType; import com.facebook.drift.codec.ThriftCodec; import com.facebook.drift.codec.metadata.ThriftCatalog; -import com.facebook.drift.codec.metadata.ThriftStructMetadata; import com.facebook.drift.codec.metadata.ThriftType; import com.facebook.drift.protocol.TProtocolReader; import com.facebook.drift.protocol.TProtocolWriter; @@ -35,26 +35,27 @@ public class SplitCodec private static final short SPLIT_DATA_FIELD_ID = 1; private static final String SPLIT_DATA_FIELD_NAME = "split"; private static final String SPLIT_DATA_STRUCT_NAME = "Split"; + private static final ThriftType SYNTHETIC_STRUCT_TYPE = ThriftType.struct(createSyntheticMetadata(SPLIT_DATA_FIELD_ID, SPLIT_DATA_FIELD_NAME, Split.class, String.class, ThriftType.STRING)); - private final ThriftCatalog thriftCatalog; - private final ThriftType syntheticStructType; private final JsonCodec jsonCodec; @Inject public SplitCodec(JsonCodec jsonCodec, ThriftCatalog thriftCatalog) { this.jsonCodec = requireNonNull(jsonCodec, "jsonCodec is null"); - this.thriftCatalog = requireNonNull(thriftCatalog, "thriftCatalog is null"); - - ThriftStructMetadata structMetadata = createSyntheticMetadata(thriftCatalog, SPLIT_DATA_FIELD_ID, SPLIT_DATA_FIELD_NAME, Split.class, String.class); - this.syntheticStructType = ThriftType.struct(structMetadata); + thriftCatalog.addThriftType(SYNTHETIC_STRUCT_TYPE); + } - thriftCatalog.addThriftType(syntheticStructType); + @CodecThriftType + public static ThriftType getThriftType() + { + return SYNTHETIC_STRUCT_TYPE; } + @Override public ThriftType getType() { - return syntheticStructType; + return SYNTHETIC_STRUCT_TYPE; } @Override diff --git a/presto-main-base/src/main/java/com/facebook/presto/server/thrift/TableWriteInfoCodec.java b/presto-main-base/src/main/java/com/facebook/presto/server/thrift/TableWriteInfoCodec.java index 9b6953ca8055f..50754a0593bae 100644 --- a/presto-main-base/src/main/java/com/facebook/presto/server/thrift/TableWriteInfoCodec.java +++ b/presto-main-base/src/main/java/com/facebook/presto/server/thrift/TableWriteInfoCodec.java @@ -14,9 +14,9 @@ package com.facebook.presto.server.thrift; import com.facebook.airlift.json.JsonCodec; +import com.facebook.drift.codec.CodecThriftType; import com.facebook.drift.codec.ThriftCodec; import com.facebook.drift.codec.metadata.ThriftCatalog; -import com.facebook.drift.codec.metadata.ThriftStructMetadata; import com.facebook.drift.codec.metadata.ThriftType; import com.facebook.drift.protocol.TProtocolReader; import com.facebook.drift.protocol.TProtocolWriter; @@ -35,26 +35,27 @@ public class TableWriteInfoCodec private static final short TABLE_WRITE_INFO_DATA_FIELD_ID = 1; private static final String TABLE_WRITE_INFO_DATA_FIELD_NAME = "tableWriteInfo"; private static final String TABLE_WRITE_INFO_STRUCT_NAME = "TableWriteInfo"; + private static final ThriftType SYNTHETIC_STRUCT_TYPE = ThriftType.struct(createSyntheticMetadata(TABLE_WRITE_INFO_DATA_FIELD_ID, TABLE_WRITE_INFO_DATA_FIELD_NAME, TableWriteInfo.class, String.class, ThriftType.STRING)); - private final ThriftCatalog thriftCatalog; - private final ThriftType syntheticStructType; private final JsonCodec jsonCodec; @Inject public TableWriteInfoCodec(JsonCodec jsonCodec, ThriftCatalog thriftCatalog) { this.jsonCodec = requireNonNull(jsonCodec, "jsonCodec is null"); - this.thriftCatalog = requireNonNull(thriftCatalog, "thriftCatalog is null"); - - ThriftStructMetadata structMetadata = createSyntheticMetadata(thriftCatalog, TABLE_WRITE_INFO_DATA_FIELD_ID, TABLE_WRITE_INFO_DATA_FIELD_NAME, TableWriteInfo.class, String.class); - this.syntheticStructType = ThriftType.struct(structMetadata); + thriftCatalog.addThriftType(SYNTHETIC_STRUCT_TYPE); + } - thriftCatalog.addThriftType(syntheticStructType); + @CodecThriftType + public static ThriftType getThriftType() + { + return SYNTHETIC_STRUCT_TYPE; } + @Override public ThriftType getType() { - return syntheticStructType; + return SYNTHETIC_STRUCT_TYPE; } @Override diff --git a/presto-thrift-spec/pom.xml b/presto-thrift-spec/pom.xml index b1981b53a653d..3219b48d6645f 100644 --- a/presto-thrift-spec/pom.xml +++ b/presto-thrift-spec/pom.xml @@ -50,9 +50,23 @@ com.facebook.presto.execution.TaskStatus + com.facebook.presto.execution.TaskInfo + com.facebook.presto.server.TaskUpdateRequest + + com.facebook.presto.server.thrift.SplitCodec + com.facebook.presto.server.thrift.TableWriteInfoCodec + com.facebook.presto.server.thrift.MetadataUpdatesCodec + com.facebook.drift.codec.utils.DurationToMillisThriftCodec + com.facebook.drift.codec.utils.DataSizeToBytesThriftCodec + com.facebook.drift.codec.utils.JodaDateTimeToEpochMillisThriftCodec + com.facebook.drift.codec.utils.LocaleToLanguageTagCodec + com.facebook.drift.codec.internal.builtin.OptionalIntThriftCodec + com.facebook.drift.codec.internal.builtin.OptionalLongThriftCodec + com.facebook.drift.codec.internal.builtin.OptionalDoubleThriftCodec + true - target/thrift/presto-internal-${project.version}.thrift + target/thrift/presto-thrift-protocol.thrift @@ -70,7 +84,7 @@ - target/thrift/presto-internal-${project.version}.thrift + target/thrift/presto-thrift-protocol.thrift thrift