You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ca...@codespot.com on 2015/01/19 15:16:40 UTC
[cassandra-jdbc] push by adejanov...@gmail.com - Fix issue 101 :
correct handling of timestamp types in collections on 2015-01-19 14:16 GMT
Revision: eff6bbd2586c
Author: Alexander Dejanovski <ad...@gmail.com>
Date: Mon Jan 19 14:10:24 2015 UTC
Log: Fix issue 101 : correct handling of timestamp types in collections
https://code.google.com/a/apache-extras.org/p/cassandra-jdbc/source/detail?r=eff6bbd2586c
Modified:
/build.properties.default
/src/main/java/org/apache/cassandra/cql/jdbc/CassandraDriver.java
/src/main/java/org/apache/cassandra/cql/jdbc/CassandraResultSet.java
/src/main/java/org/apache/cassandra/cql/jdbc/MetadataResultSets.java
/src/main/java/org/apache/cassandra/cql/jdbc/TypedColumn.java
/src/test/java/org/apache/cassandra/cql/jdbc/CollectionsTest.java
=======================================
--- /build.properties.default Tue Nov 1 16:05:39 2011 UTC
+++ /build.properties.default Mon Jan 19 14:10:24 2015 UTC
@@ -3,5 +3,5 @@
# Cassandra database to test with
cassandra.host=localhost
-cassandra.rpc.port=9170
+cassandra.rpc.port=9160
=======================================
--- /src/main/java/org/apache/cassandra/cql/jdbc/CassandraDriver.java Thu
Apr 18 19:21:03 2013 UTC
+++ /src/main/java/org/apache/cassandra/cql/jdbc/CassandraDriver.java Mon
Jan 19 14:10:24 2015 UTC
@@ -41,11 +41,11 @@
*/
public class CassandraDriver implements Driver
{
- public static final int DVR_MAJOR_VERSION = 1;
+ public static final int DVR_MAJOR_VERSION = 2;
- public static final int DVR_MINOR_VERSION = 2;
+ public static final int DVR_MINOR_VERSION = 1;
- public static final int DVR_PATCH_VERSION = 4;
+ public static final int DVR_PATCH_VERSION = 1;
public static final String DVR_NAME = "Cassandra JDBC Driver";
=======================================
--- /src/main/java/org/apache/cassandra/cql/jdbc/CassandraResultSet.java
Wed Oct 15 10:03:58 2014 UTC
+++ /src/main/java/org/apache/cassandra/cql/jdbc/CassandraResultSet.java
Mon Jan 19 14:10:24 2015 UTC
@@ -1174,10 +1174,26 @@
String[] split = valueType.substring(index + 1,
valueType.length() - 1).split(",");
if (split.length > 1)
{
- keyType = TypesMap.getTypeForComparator(split[0]);
- validator = TypesMap.getTypeForComparator(split[1]);
+
if(split[0].equals("org.apache.cassandra.db.marshal.TimestampType")){
+ keyType =
TypesMap.getTypeForComparator("org.apache.cassandra.db.marshal.DateType");
+ }else{
+ keyType = TypesMap.getTypeForComparator(split[0]);
+ }
+
+
if(split[1].equals("org.apache.cassandra.db.marshal.TimestampType")){
+ validator =
TypesMap.getTypeForComparator("org.apache.cassandra.db.marshal.DateType");
+ }else{
+ validator = TypesMap.getTypeForComparator(split[1]);
+ }
+
+ }
+ else {
+
if(split[0].equals("org.apache.cassandra.db.marshal.TimestampType")){
+ validator =
TypesMap.getTypeForComparator("org.apache.cassandra.db.marshal.DateType");
+ }else{
+ validator = TypesMap.getTypeForComparator(split[0]);
+ }
}
- else validator = TypesMap.getTypeForComparator(split[0]);
}
}
=======================================
--- /src/main/java/org/apache/cassandra/cql/jdbc/TypedColumn.java Thu Apr
18 19:21:03 2013 UTC
+++ /src/main/java/org/apache/cassandra/cql/jdbc/TypedColumn.java Mon Jan
19 14:10:24 2015 UTC
@@ -70,7 +70,7 @@
case SET:
value =
SetMaker.getInstance(valueType).compose(column.value);
break;
- case MAP:
+ case MAP:
value = MapMaker.getInstance(keyType,
valueType).compose(column.value);
break;
default:
=======================================
--- /src/test/java/org/apache/cassandra/cql/jdbc/CollectionsTest.java Wed
Oct 15 10:03:58 2014 UTC
+++ /src/test/java/org/apache/cassandra/cql/jdbc/CollectionsTest.java Mon
Jan 19 14:10:24 2015 UTC
@@ -23,6 +23,7 @@
import static org.junit.Assert.*;
import java.util.ArrayList;
+import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
@@ -103,7 +104,7 @@
// Create the target Table (CF)
- String createTable = "CREATE TABLE testcollection (" + " k int
PRIMARY KEY," + " L list<bigint>," + " M map<double, boolean>," + " S
set<text>" + ") ;";
+ String createTable = "CREATE TABLE testcollection (" + " k int
PRIMARY KEY," + " L list<bigint>," + " M map<double, boolean>, M2 map<text,
timestamp>, S set<text>" + ") ;";
if (LOG.isDebugEnabled()) LOG.debug("createTable = '{}'",
createTable);
stmt.execute(createTable);
@@ -379,6 +380,40 @@
if (LOG.isDebugEnabled()) LOG.debug("m (prepared)= '{}'\n", myObj);
}
+
+ @Test
+ public void testWriteReadTimestampMap() throws Exception
+ {
+ if (LOG.isDebugEnabled())
LOG.debug("Test: 'testWriteReadTimestampMap'\n");
+
+ Statement statement = con.createStatement();
+
+ // add some items to the set
+ String sql = "insert into testcollection(k,M2) values(?,?)" ;
+ Map<String,Date> is = new HashMap<String, Date>();
+ is.put("K"+System.currentTimeMillis(),new Date());
+ PreparedStatement ps = con.prepareStatement(sql);
+
+ {
+ ps.setInt(1,1);
+ ps.setObject(2,is, java.sql.Types.OTHER);
+ ps.executeUpdate();
+ }
+ ResultSet result = statement.executeQuery("SELECT * FROM
testcollection WHERE k = 1;");
+ result.next();
+
+ assertEquals(1, result.getInt("k"));
+ //Object myObj = result.getObject("m");
+ Map<String,Date> map = (Map<String,Date>)result.getObject("m2");
+ //Map<Double,Boolean> myMap = (Map<Double,Boolean>) myObj;
+ assertEquals(1, map.size());
+ if (LOG.isDebugEnabled()) LOG.debug("map key : " + map);
+
+
+
+
+ }
+
private CassandraResultSetExtras extras(ResultSet result) throws
Exception