Will do!

> On Jul 19, 2014, at 11:22 AM, Robert Stupp <sn...@snazy.de> wrote:
> 
> Can you submit a ticket in C* JIRA at issues.apache.org?
> 
> --
> Sent from my iPhone 
> 
>> Am 19.07.2014 um 16:45 schrieb Karl Rieb <karl.r...@gmail.com>:
>> 
>> Ben! I think I have an idea of exactly where the bug is!
>> 
>> I did some more searching and discovered the difference that causes some 
>> tables to produce the wrong type and others to be okay: the tables with the 
>> wrong type reverse the ordering of the timestamp column. 
>> 
>> The bug is in org.apache.cassandra.transport.DataType:fromType(AbstractType):
>> 
>>     public static Pair<DataType, Object> fromType(AbstractType type)
>>     {
>>         // For CQL3 clients, ReversedType is an implementation detail and 
>> they
>>         // shouldn't have to care about it.
>>         if (type instanceof ReversedType)
>>             type = ((ReversedType)type).baseType;
>>         // For compatibility sake, we still return DateType as the timestamp 
>> type in resultSet metadata (#5723)
>>         else if (type instanceof DateType)
>>             type = TimestampType.instance;
>> 
>>         DataType dt = dataTypeMap.get(type);
>>         if (dt == null)
>>         {
>>             if (type.isCollection())
>>             {
>>                 if (type instanceof ListType)
>>                 {
>>                     return Pair.<DataType, Object>create(LIST, 
>> ((ListType)type).elements);
>>                 }
>>                 else if (type instanceof MapType)
>>                 {
>>                     MapType mt = (MapType)type;
>>                     return Pair.<DataType, Object>create(MAP, 
>> Arrays.asList(mt.keys, mt.values));
>>                 }
>>                 else
>>                 {
>>                     assert type instanceof SetType;
>>                     return Pair.<DataType, Object>create(SET, 
>> ((SetType)type).elements);
>>                 }
>>             }
>>             return Pair.<DataType, Object>create(CUSTOM, type.toString());
>>         }
>>         else
>>         {
>>             return Pair.create(dt, null);
>>         }
>>     }
>> 
>> The issue is the "else if", which does not check the base type of the 
>> reversed column:
>> 
>>         if (type instanceof ReversedType)
>>             type = ((ReversedType)type).baseType;
>>         // For compatibility sake, we still return DateType as the timestamp 
>> type in resultSet metadata (#5723)
>>         else if (type instanceof DateType)
>>             type = TimestampType.instance;
>> 
>> The "else" should be removed to make it just:
>> 
>>         if (type instanceof ReversedType)
>>             type = ((ReversedType)type).baseType;
>>         // For compatibility sake, we still return DateType as the timestamp 
>> type in resultSet metadata (#5723)
>>         if (type instanceof DateType)
>>             type = TimestampType.instance;
>> 
>> This way we do a check for DataType on the base type of reversed columns!  
>> 
>> I applied the fix to my 2.0.9 cassandra node and the errors go away!!!!!
>> 
>> Could you guys please make this single-word fix?
>> 
>> -Karl
>> 
>> 
>> 
>>> On Fri, Jul 18, 2014 at 1:30 PM, Ben Hood <0x6e6...@gmail.com> wrote:
>>> On Fri, Jul 18, 2014 at 3:03 PM, Karl Rieb <karl.r...@gmail.com> wrote:
>>> > Why is the protocol ID correct for some tables but not others?
>>> 
>>> I have no idea.
>>> 
>>> > Why does it work when I do a clean install on a new 2.0.x cluster?
>>> 
>>> I still have no idea.
>>> 
>>> > The bug seems to be on the Cassandra side and the clients seem to just be 
>>> > providing patches to these issues.
>>> 
>>> It was reported to the Cassandra list, but there was no answer,
>>> potentially because the query was sent to the wrong list, but I don't
>>> really know. Maybe it should have gone into Jira, but it's unclear as
>>> to whether this is a client or a server issue.
>>> 
>>> In any case, it didn't look like the server behavior was going to
>>> change any time soon, so we just took the pragmatic approach in gocql
>>> and worked around the issue.
>>> 
>>> > I will post to the Datastax java driver mailing list and see if they are 
>>> > willing to add a patch.
>>> 
>>> That sounds like a good idea, seeing as the workaround has been tested 
>>> before.
>>> 
>>> Sorry to be of little help to you.
>> 

Reply via email to