Skip to content

Commit 059ebf6

Browse files
committed
Add dynamic schema support based on protobuf descriptor
1 parent a0c208a commit 059ebf6

File tree

13 files changed

+930
-10
lines changed

13 files changed

+930
-10
lines changed

lib/trino-hive-formats/src/main/java/io/trino/hive/formats/line/protobuf/ProtobufDeserializerFactory.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
public class ProtobufDeserializerFactory
5454
implements LineDeserializerFactory
5555
{
56+
public static final String SERIALIZATION_CLASS = "serialization.class";
5657
private LoadingCache<String, Descriptor> cache;
5758

5859
public ProtobufDeserializerFactory(Path descriptorsDirectory, Duration updateInterval, long maximumSize)
@@ -80,15 +81,20 @@ public ProtobufDeserializer create(List<Column> columns, Map<String, String> ser
8081
throw new TrinoException(CONFIGURATION_INVALID, "No \"hive.protobufs.descriptors\" set in hive configuration");
8182
}
8283

83-
String serializationClass = serdeProperties.get("serialization.class");
84+
String serializationClass = serdeProperties.get(SERIALIZATION_CLASS);
8485
if (serializationClass == null) {
8586
throw new TrinoException(HIVE_INVALID_METADATA, "Missing serdeproperties key \"serialization.class\"");
8687
}
8788
else if (!serializationClass.matches("^[^$]+\\$[^$]+$")) {
8889
throw new TrinoException(HIVE_INVALID_METADATA, String.format("Expected serialization.class to contain {package}${protoname}, but was %s", serializationClass));
8990
}
9091

91-
return new ProtobufDeserializer(columns, cache.getUnchecked(serializationClass));
92+
return new ProtobufDeserializer(columns, getDescriptor(serializationClass));
93+
}
94+
95+
public Descriptor getDescriptor(String serializationClass)
96+
{
97+
return cache.getUnchecked(serializationClass);
9298
}
9399

94100
private static class DescriptorCacheLoader

0 commit comments

Comments
 (0)