[
https://issues.apache.org/jira/browse/THRIFT-1470?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
James E. King III closed THRIFT-1470.
-------------------------------------
Resolution: Duplicate
Assignee: James E. King III
Fix Version/s: 0.9
> Thrift generates wrong Erlang specs out of the Cassandra interface
> ------------------------------------------------------------------
>
> Key: THRIFT-1470
> URL: https://issues.apache.org/jira/browse/THRIFT-1470
> Project: Thrift
> Issue Type: Bug
> Components: Erlang - Compiler
> Affects Versions: 0.8
> Environment: OSX Snow Leopard, Thrift 0.8, Cassandra 1.0.5, Erlang
> R14B04
> Reporter: Roberto Ostinelli
> Assignee: James E. King III
> Priority: Major
> Fix For: 0.9
>
>
> I'm building an Erlang CQL client for Cassandra
> (https://github.com/ostinelli/erlcassa). I've generated the Erlang Thrift
> code with the command:
> thrift --gen erl cassandra/interface/cassandra.thrift
> One of the generate files, cassandra_types.hrl, seems to have incorrect
> record definitions. To be more precise:
> -record(cqlMetadata, {name_types = dict:new() :: dict(),
> value_types = dict:new() :: dict(),
> default_name_type = undefined :: string(),
> default_value_type = undefined :: string()}).
> -record(column, {name = undefined :: string(),
> value = undefined :: string(),
> timestamp = undefined :: integer(),
> ttl = undefined :: integer()}).
> These two records specify string() in name and value columns, but the real
> returned values from Cassandra are binary(). Not sure about it, but every
> time there's a string() specification in this file, it really seems that it
> should be binary(), which is what Thrift calls return from Cassandra.
> Also, the default_name_type and default_value_type of cqlMetadata can
> actually be undefined (when the record first gets created, these are not
> specified and hence are undefined).
> These specs being incorrect, Dialyzer complains while performing checks on
> code built on top of these specs.
> Here are the specs corrected in a way that make Dialyzer pass the tests:
> https://github.com/ostinelli/erlcassa/blob/master/include/cassandra_types.hrl
> Yet again, many of the string() specs on the cassandra_types.hrl file have
> been left untouched as I've not has the chance to dig if changes are needed.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)