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