Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
<dep.okhttp.version>4.12.0</dep.okhttp.version>
<dep.jdbi3.version>3.4.0</dep.jdbi3.version>
<dep.oracle.version>19.3.0.0</dep.oracle.version>
<dep.drift.version>1.40</dep.drift.version>
<dep.drift.version>1.43</dep.drift.version>
<!-- Changing joda version changes tzdata which must match deployed JVM tzdata
Do not change this without also making sure it matches -->
<dep.joda.version>2.12.7</dep.joda.version>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;

/***
Expand All @@ -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(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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<MetadataUpdates> jsonCodec;

@Inject
public MetadataUpdatesCodec(JsonCodec<MetadataUpdates> 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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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<Split> jsonCodec;

@Inject
public SplitCodec(JsonCodec<Split> 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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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<TableWriteInfo> jsonCodec;

@Inject
public TableWriteInfoCodec(JsonCodec<TableWriteInfo> 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
Expand Down
18 changes: 16 additions & 2 deletions presto-thrift-spec/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,23 @@
<configuration>
<classes>
<class>com.facebook.presto.execution.TaskStatus</class>
<class>com.facebook.presto.execution.TaskInfo</class>
<class>com.facebook.presto.server.TaskUpdateRequest</class>
</classes>
<customCodecs>
<codec>com.facebook.presto.server.thrift.SplitCodec</codec>
<codec>com.facebook.presto.server.thrift.TableWriteInfoCodec</codec>
<codec>com.facebook.presto.server.thrift.MetadataUpdatesCodec</codec>
<codec>com.facebook.drift.codec.utils.DurationToMillisThriftCodec</codec>
<codec>com.facebook.drift.codec.utils.DataSizeToBytesThriftCodec</codec>
<codec>com.facebook.drift.codec.utils.JodaDateTimeToEpochMillisThriftCodec</codec>
<codec>com.facebook.drift.codec.utils.LocaleToLanguageTagCodec</codec>
<codec>com.facebook.drift.codec.internal.builtin.OptionalIntThriftCodec</codec>
<codec>com.facebook.drift.codec.internal.builtin.OptionalLongThriftCodec</codec>
<codec>com.facebook.drift.codec.internal.builtin.OptionalDoubleThriftCodec</codec>
</customCodecs>
<recursive>true</recursive>
<outputFile>target/thrift/presto-internal-${project.version}.thrift</outputFile>
<outputFile>target/thrift/presto-thrift-protocol.thrift</outputFile>
</configuration>
</execution>
</executions>
Expand All @@ -70,7 +84,7 @@
<configuration>
<artifacts>
<artifact>
<file>target/thrift/presto-internal-${project.version}.thrift</file>
<file>target/thrift/presto-thrift-protocol.thrift</file>
<type>thrift</type>
</artifact>
</artifacts>
Expand Down
Loading