cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rick Shaw (JIRA)" <j...@apache.org>
Subject [jira] [Created] (CASSANDRA-2410) JDBC ResultSet does not honor column value typing for the CF and uses default validator for all column value types.
Date Thu, 31 Mar 2011 20:57:09 GMT
JDBC ResultSet does not honor column value typing for the CF and uses default validator for
all column value types.
-------------------------------------------------------------------------------------------------------------------

                 Key: CASSANDRA-2410
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-2410
             Project: Cassandra
          Issue Type: Bug
          Components: API
            Reporter: Rick Shaw
            Priority: Minor
             Fix For: 0.8


Assume a CF declared in CQL as :
{code}
CREATE COLUMNFAMILY TestCF(KEY utf8 PRIMARY KEY,description utf8, anumber int)
  WITH comparator = ascii AND default_validation = long;
{code}

If the {{ResultSet}} is fetched thusly:


{code}
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);

String description;
Integer anumber;

    while (rs.next())
    {
      description = rs.getString(1);
      System.out.print("description : "+ description);
      anumber = rs.getInt(2);
      System.out.print("anumber     : "+ anumber);
    }
{code}

It will immediately fail with a message of: 

{code}
org.apache.cassandra.db.marshal.MarshalException: A long is exactly 8 bytes: 16
	at org.apache.cassandra.db.marshal.LongType.getString(LongType.java:66)
	at org.apache.cassandra.cql.jdbc.TypedColumn.<init>(TypedColumn.java:45)
	at org.apache.cassandra.cql.jdbc.ColumnDecoder.makeCol(ColumnDecoder.java:158)
	at org.apache.cassandra.cql.jdbc.CassandraResultSet.next(CassandraResultSet.java:1073)
	at da.access.testing.TestJDBC.selectAll(TestJDBC.java:83)
         ...
{code}


It appears that the {{makeCol}} method of {{ColumnDecoder.java}} chooses NOT to use the {{CfDef}}
to look up the possible occurrence of a column? That's not right. Right? 

{code}
    /** constructs a typed column */
    public TypedColumn makeCol(String keyspace, String columnFamily, byte[] name, byte[] value)
    {
        CfDef cfDef = cfDefs.get(String.format("%s.%s", keyspace, columnFamily));
        AbstractType comparator = getComparator(keyspace, columnFamily, Specifier.Comparator,
cfDef);
        AbstractType validator = getComparator(keyspace, columnFamily, Specifier.Validator,
null);
        return new TypedColumn(comparator, name, validator, value);
    }
{code}





--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message