presto-jdbc-java6 icon indicating copy to clipboard operation
presto-jdbc-java6 copied to clipboard

Unrecognized field "arguments" (class com.facebook.presto.jdbc.client.ClientTypeSignature)

Open polo-language opened this issue 8 years ago • 1 comments

Error on executing the query "SHOW CATALOGS".

Connection connection = DriverManager.getConnection(connectionUrl, username, password);
Statement statement = connection.createStatement();
statement.executeQuery("SHOW CATALOGS");

This project has the following three known properties in ClientTypeSignature.java:

@JsonCreator
    public ClientTypeSignature(
            @JsonProperty("rawType") String rawType,
            @JsonProperty("typeArguments") List<ClientTypeSignature> typeArguments,
            @JsonProperty("literalArguments") List<Object> literalArguments)
    {

Whereas the main presto project has the additional field "arguments":

@JsonCreator
    public ClientTypeSignature(
            @JsonProperty("rawType") String rawType,
            @JsonProperty("typeArguments") List<ClientTypeSignature> typeArguments,
            @JsonProperty("literalArguments") List<Object> literalArguments,
            @JsonProperty("arguments") List<ClientTypeSignatureParameter> arguments)
    {

Stack trace:

java.sql.SQLException: Error executing query
  at com.facebook.presto.jdbc.PrestoStatement.execute(PrestoStatement.java:211)
  at com.facebook.presto.jdbc.PrestoStatement.executeQuery(PrestoStatement.java:55)
  ...
Caused by: java.lang.RuntimeException: Error parse result at http://<host>:<port>/v1/statement/20160801_172719_00019_9fisq/1 returned an invalid response: Unrecognized field "arguments" (class com.facebook.presto.jdbc.client.ClientTypeSignature), not marked as ignorable (3 known properties: "rawType", "typeArguments", "literalArguments"])
 at [Source: com.facebook.presto.jdbc.internal.org.apache.http.nio.entity.ContentInputStream@2e412d4; line: 1, column: 479] (through reference chain: java.util.ArrayList[0]->com.facebook.presto.jdbc.client.ClientTypeSignature["arguments"])
  at com.facebook.presto.jdbc.ApacheQueryHttpClient.requestFailedException(ApacheQueryHttpClient.java:186)
  at com.facebook.presto.jdbc.ApacheQueryHttpClient.parseResult(ApacheQueryHttpClient.java:243)
  at com.facebook.presto.jdbc.ApacheQueryHttpClient.execute(ApacheQueryHttpClient.java:148)
  at com.facebook.presto.jdbc.client.UniversalStatementClient.advance(UniversalStatementClient.java:114)
  at com.facebook.presto.jdbc.PrestoResultSet.getColumns(PrestoResultSet.java:1717)
  at com.facebook.presto.jdbc.PrestoResultSet.<init>(PrestoResultSet.java:139)
  at com.facebook.presto.jdbc.PrestoStatement.execute(PrestoStatement.java:179)
  ... 11 more
Caused by: com.facebook.presto.jdbc.internal.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "arguments" (class com.facebook.presto.jdbc.client.ClientTypeSignature), not marked as ignorable (3 known properties: "rawType", "typeArguments", "literalArguments"])
 at [Source: com.facebook.presto.jdbc.internal.org.apache.http.nio.entity.ContentInputStream@2e412d4; line: 1, column: 479] (through reference chain: java.util.ArrayList[0]->com.facebook.presto.jdbc.client.ClientTypeSignature["arguments"])
  at com.facebook.presto.jdbc.internal.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:51)
  at com.facebook.presto.jdbc.internal.jackson.databind.DeserializationContext.reportUnknownProperty(DeserializationContext.java:744)
  at com.facebook.presto.jdbc.internal.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:915)
  at com.facebook.presto.jdbc.internal.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1306)
  at com.facebook.presto.jdbc.internal.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1284)
  at com.facebook.presto.jdbc.internal.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:211)
  at com.facebook.presto.jdbc.internal.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:362)
  at com.facebook.presto.jdbc.internal.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1064)
  at com.facebook.presto.jdbc.internal.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:264)
  at com.facebook.presto.jdbc.internal.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:124)
  at com.facebook.presto.jdbc.internal.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:538)
  at com.facebook.presto.jdbc.internal.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:344)
  at com.facebook.presto.jdbc.internal.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1064)
  at com.facebook.presto.jdbc.internal.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:264)
  at com.facebook.presto.jdbc.internal.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:124)
  at com.facebook.presto.jdbc.internal.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:232)
  at com.facebook.presto.jdbc.internal.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:206)
  at com.facebook.presto.jdbc.internal.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:25)
  at com.facebook.presto.jdbc.internal.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:538)
  at com.facebook.presto.jdbc.internal.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:344)
  at com.facebook.presto.jdbc.internal.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1064)
  at com.facebook.presto.jdbc.internal.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:264)
  at com.facebook.presto.jdbc.internal.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:124)
  at com.facebook.presto.jdbc.internal.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3066)
  at com.facebook.presto.jdbc.internal.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2207)
  at com.facebook.presto.jdbc.ApacheQueryHttpClient.parseResult(ApacheQueryHttpClient.java:240)

polo-language avatar Aug 01 '16 17:08 polo-language

I think the http client should ignore unknown fields to allow forward compatibility.

ArturGajowy avatar Aug 01 '16 18:08 ArturGajowy