Author: eevans
Date: Wed Mar  9 22:00:48 2011
New Revision: 1080028

URL: http://svn.apache.org/viewvc?rev=1080028&view=rev
Log:
update JDBC driver and tests for BytesType columns

Patch by eevans for CASSANDRA-2027

Modified:
    
cassandra/trunk/drivers/java/src/org/apache/cassandra/cql/jdbc/CassandraResultSet.java
    
cassandra/trunk/drivers/java/src/org/apache/cassandra/cql/jdbc/CassandraStatement.java
    
cassandra/trunk/drivers/java/test/org/apache/cassandra/cql/JdbcDriverTest.java
    cassandra/trunk/test/conf/cassandra.yaml

Modified: 
cassandra/trunk/drivers/java/src/org/apache/cassandra/cql/jdbc/CassandraResultSet.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/drivers/java/src/org/apache/cassandra/cql/jdbc/CassandraResultSet.java?rev=1080028&r1=1080027&r2=1080028&view=diff
==============================================================================
--- 
cassandra/trunk/drivers/java/src/org/apache/cassandra/cql/jdbc/CassandraResultSet.java
 (original)
+++ 
cassandra/trunk/drivers/java/src/org/apache/cassandra/cql/jdbc/CassandraResultSet.java
 Wed Mar  9 22:00:48 2011
@@ -25,6 +25,7 @@ import java.io.Reader;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.net.URL;
+import java.nio.ByteBuffer;
 import java.sql.Array;
 import java.sql.Blob;
 import java.sql.Clob;
@@ -360,7 +361,7 @@ class CassandraResultSet implements Resu
      */
     public byte[] getBytes(int index) throws SQLException
     {
-        return values.get(index) != null ? 
(byte[])values.get(index).getValue() : null;
+        return values.get(index) != null ? 
((ByteBuffer)values.get(index).getValue()).array() : null;
     }
 
     /**
@@ -371,7 +372,7 @@ class CassandraResultSet implements Resu
     public byte[] getBytes(String name) throws SQLException
     {
         String nameAsString = decoder.colNameAsString(keyspace, columnFamily, 
name);
-        return valueMap.get(nameAsString) != null ? 
(byte[])valueMap.get(nameAsString) : null;
+        return valueMap.get(nameAsString) != null ? 
((ByteBuffer)valueMap.get(nameAsString)).array() : null;
     }
 
     /**

Modified: 
cassandra/trunk/drivers/java/src/org/apache/cassandra/cql/jdbc/CassandraStatement.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/drivers/java/src/org/apache/cassandra/cql/jdbc/CassandraStatement.java?rev=1080028&r1=1080027&r2=1080028&view=diff
==============================================================================
--- 
cassandra/trunk/drivers/java/src/org/apache/cassandra/cql/jdbc/CassandraStatement.java
 (original)
+++ 
cassandra/trunk/drivers/java/src/org/apache/cassandra/cql/jdbc/CassandraStatement.java
 Wed Mar  9 22:00:48 2011
@@ -248,7 +248,7 @@ class CassandraStatement implements Prep
         }
         catch (InvalidRequestException e)
         {
-            throw new SQLException(e.getMessage());
+            throw new SQLException(e.getWhy());
         }
         catch (UnavailableException e)
         {

Modified: 
cassandra/trunk/drivers/java/test/org/apache/cassandra/cql/JdbcDriverTest.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/drivers/java/test/org/apache/cassandra/cql/JdbcDriverTest.java?rev=1080028&r1=1080027&r2=1080028&view=diff
==============================================================================
--- 
cassandra/trunk/drivers/java/test/org/apache/cassandra/cql/JdbcDriverTest.java 
(original)
+++ 
cassandra/trunk/drivers/java/test/org/apache/cassandra/cql/JdbcDriverTest.java 
Wed Mar  9 22:00:48 2011
@@ -55,13 +55,13 @@ public class JdbcDriverTest extends Embe
         con = 
DriverManager.getConnection("jdbc:cassandra:root/root@localhost:9170/Keyspace1");
         String[] inserts = 
         {
-//            String.format("UPDATE Standard1 SET \"%s\" = \"%s\", \"%s\" = 
\"%s\" WHERE KEY = \"jsmith\"", first, firstrec, last, lastrec),    
-            "UPDATE JdbcInteger SET 1 = 11, 2 = 22 WHERE KEY = \"jsmith\"",
-            "UPDATE JdbcInteger SET 3 = 33, 4 = 44 WHERE KEY = \"jsmith\"",
-            "UPDATE JdbcLong SET 1L = 11L, 2L = 22L WHERE KEY = \"jsmith\"",
-            "UPDATE JdbcAscii SET \"first\" = \"firstrec\", \"last\" = 
\"lastrec\" WHERE key = \"jsmith\"",
-//            String.format("UPDATE JdbcBytes SET \"%s\" = \"%s\", \"%s\" = 
\"%s\" WHERE key = \"jsmith\"", first, firstrec, last, lastrec),
-            "UPDATE JdbcUtf8 SET \"first\" = \"firstrec\", \"last\" = 
\"lastrec\" WHERE key = \"jsmith\"",
+            String.format("UPDATE Standard1 SET '%s' = '%s', '%s' = '%s' WHERE 
KEY = 'jsmith'", first, firstrec, last, lastrec),    
+            "UPDATE JdbcInteger SET 1 = 11, 2 = 22 WHERE KEY = 'jsmith'",
+            "UPDATE JdbcInteger SET 3 = 33, 4 = 44 WHERE KEY = 'jsmith'",
+            "UPDATE JdbcLong SET 1 = 11, 2 = 22 WHERE KEY = 'jsmith'",
+            "UPDATE JdbcAscii SET 'first' = 'firstrec', 'last' = 'lastrec' 
WHERE key = 'jsmith'",
+            String.format("UPDATE JdbcBytes SET '%s' = '%s', '%s' = '%s' WHERE 
key = 'jsmith'", first, firstrec, last, lastrec),
+            "UPDATE JdbcUtf8 SET 'first' = 'firstrec', 'last' = 'lastrec' 
WHERE key = 'jsmith'",
         };
         for (String q : inserts)
             executeNoResults(con, q);
@@ -73,28 +73,28 @@ public class JdbcDriverTest extends Embe
     {
         Statement stmt = con.createStatement();
         
-//        String selectQ = String.format("SELECT \"%s\", \"%s\" FROM Standard1 
WHERE KEY=\"jsmith\"", first, last);
+//        String selectQ = String.format("SELECT '%s', '%s' FROM Standard1 
WHERE KEY='jsmith'", first, last);
 //        checkResultSet(stmt.executeQuery(selectQ), "Bytes", 1, first, last);
         
-        String selectQ = "SELECT 1, 2 FROM JdbcInteger WHERE KEY=\"jsmith\"";
+        String selectQ = "SELECT 1, 2 FROM JdbcInteger WHERE KEY='jsmith'";
         checkResultSet(stmt.executeQuery(selectQ), "Int", 1, "1", "2");
         
-        selectQ = "SELECT 3, 4 FROM JdbcInteger WHERE KEY=\"jsmith\"";
+        selectQ = "SELECT 3, 4 FROM JdbcInteger WHERE KEY='jsmith'";
         checkResultSet(stmt.executeQuery(selectQ), "Int", 1, "3", "4");
         
-        selectQ = "SELECT 1, 2, 3, 4 FROM JdbcInteger WHERE KEY=\"jsmith\"";
+        selectQ = "SELECT 1, 2, 3, 4 FROM JdbcInteger WHERE KEY='jsmith'";
         checkResultSet(stmt.executeQuery(selectQ), "Int", 1, "1", "2", "3", 
"4");
         
-        selectQ = "SELECT 1L, 2L FROM JdbcLong WHERE KEY=\"jsmith\"";
+        selectQ = "SELECT 1, 2 FROM JdbcLong WHERE KEY='jsmith'";
         checkResultSet(stmt.executeQuery(selectQ), "Long", 1, "1", "2");
         
-        selectQ = "SELECT \"first\", \"last\" FROM JdbcAscii WHERE 
KEY=\"jsmith\"";
+        selectQ = "SELECT 'first', 'last' FROM JdbcAscii WHERE KEY='jsmith'";
         checkResultSet(stmt.executeQuery(selectQ), "String", 1, "first", 
"last");
         
-//        selectQ = String.format("SELECT \"%s\", \"%s\" FROM JdbcBytes WHERE 
KEY=\"jsmith\"", first, last);
+//        selectQ = String.format("SELECT '%s', '%s' FROM JdbcBytes WHERE 
KEY='jsmith'", first, last);
 //        checkResultSet(stmt.executeQuery(selectQ), "Bytes", 1, first, last);
         
-        selectQ = "SELECT \"first\", \"last\" FROM JdbcUtf8 WHERE 
KEY=\"jsmith\"";
+        selectQ = "SELECT 'first', 'last' FROM JdbcUtf8 WHERE KEY='jsmith'";
         checkResultSet(stmt.executeQuery(selectQ), "String", 1, "first", 
"last");
     }
 
@@ -102,28 +102,28 @@ public class JdbcDriverTest extends Embe
    @Test
     public void testWithPreparedStatement() throws SQLException
     {
-//        String selectQ = "SELECT \"first\", \"last\" FROM Standard1 WHERE 
KEY=\"jsmith\"";
-//        checkResultSet(executePreparedStatementWithResults(con, selectQ), 
"Bytes", 1, "first", "last");
+        String selectQ = String.format("SELECT '%s', '%s' FROM Standard1 WHERE 
KEY='jsmith'", first, last);
+        checkResultSet(executePreparedStatementWithResults(con, selectQ), 
"Bytes", 1, first, last);
         
-        String selectQ = "SELECT 1, 2 FROM JdbcInteger WHERE KEY=\"jsmith\"";
+        selectQ = "SELECT 1, 2 FROM JdbcInteger WHERE KEY='jsmith'";
         checkResultSet(executePreparedStatementWithResults(con, selectQ), 
"Int", 1, "1", "2");
         
-        selectQ = "SELECT 3, 4 FROM JdbcInteger WHERE KEY=\"jsmith\"";
+        selectQ = "SELECT 3, 4 FROM JdbcInteger WHERE KEY='jsmith'";
         checkResultSet(executePreparedStatementWithResults(con, selectQ), 
"Int", 1, "3", "4");
         
-        selectQ = "SELECT 1, 2, 3, 4 FROM JdbcInteger WHERE KEY=\"jsmith\"";
+        selectQ = "SELECT 1, 2, 3, 4 FROM JdbcInteger WHERE KEY='jsmith'";
         checkResultSet(executePreparedStatementWithResults(con, selectQ), 
"Int", 1, "1", "2", "3", "4");
         
-        selectQ = "SELECT 1L, 2L FROM JdbcLong WHERE KEY=\"jsmith\"";
+        selectQ = "SELECT 1, 2 FROM JdbcLong WHERE KEY='jsmith'";
         checkResultSet(executePreparedStatementWithResults(con, selectQ), 
"Long", 1, "1", "2");
         
-        selectQ = "SELECT \"first\", \"last\" FROM JdbcAscii WHERE 
KEY=\"jsmith\"";
+        selectQ = "SELECT 'first', 'last' FROM JdbcAscii WHERE KEY='jsmith'";
         checkResultSet(executePreparedStatementWithResults(con, selectQ), 
"String", 1, "first", "last");
         
-//        selectQ = "SELECT \"first\", \"last\" FROM JdbcBytes WHERE 
KEY=\"jsmith\"";
-//        checkResultSet(executePreparedStatementWithResults(con, selectQ), 
"Bytes", 1, "first", "last");
+        selectQ = String.format("SELECT '%s', '%s' FROM JdbcBytes WHERE 
KEY='jsmith'", first, last);
+        checkResultSet(executePreparedStatementWithResults(con, selectQ), 
"Bytes", 1, first, last);
         
-        selectQ = "SELECT \"first\", \"last\" FROM JdbcUtf8 WHERE 
KEY=\"jsmith\"";
+        selectQ = "SELECT 'first', 'last' FROM JdbcUtf8 WHERE KEY='jsmith'";
         checkResultSet(executePreparedStatementWithResults(con, selectQ), 
"String", 1, "first", "last");
     }
 
@@ -134,29 +134,34 @@ public class JdbcDriverTest extends Embe
         // the pattern: 0) a deltion, 1) ensure deletion 2) ensure deletion 
wasn't over-eager.
         String[] statements = 
         {
-//                "DELETE \"firstN\", \"lastN\" FROM Standard1 WHERE 
KEY=\"jsmith\"",
-//                "SELECT \"firstN\", \"lastN\" FROM Standard1 WHERE 
KEY=\"jsmith\"",
-//                "SELECT \"first\" FROM Standard1 WHERE KEY=\"jsmith\"",
-                
-                "DELETE 1, 3 FROM JdbcInteger WHERE KEY=\"jsmith\"",
-                "SELECT 1, 3 FROM JdbcInteger WHERE KEY=\"jsmith\"", // fails.
-                "SELECT 2, 4 FROM JdbcInteger WHERE KEY=\"jsmith\"",
-                
-                "DELETE 1L FROM JdbcLong WHERE KEY=\"jsmith\"",
-                "SELECT 1L FROM JdbcLong WHERE KEY=\"jsmith\"",
-                "SELECT 2L FROM JdbcLong WHERE KEY=\"jsmith\"",
-                
-                "DELETE \"first\" FROM JdbcAscii WHERE KEY=\"jsmith\"",
-                "SELECT \"first\" FROM JdbcAscii WHERE KEY=\"jsmith\"",
-                "SELECT \"last\" FROM JdbcAscii WHERE KEY=\"jsmith\"",
-                
-//                "DELETE \"first\" FROM JdbcBytes WHERE KEY=\"jsmith\"",
-//                "SELECT \"first\" FROM JdbcBytes WHERE KEY=\"jsmith\"",
-//                "SELECT \"last\" FROM JdbcBytes WHERE KEY=\"jsmith\"",
-                
-                "DELETE \"first\" FROM JdbcUtf8 WHERE KEY=\"jsmith\"",
-                "SELECT \"first\" FROM JdbcUtf8 WHERE KEY=\"jsmith\"",
-                "SELECT \"last\" FROM JdbcUtf8 WHERE KEY=\"jsmith\"",
+                String.format("DELETE '%s', '%s' FROM Standard1 WHERE 
KEY='jsmith'",
+                              FBUtilities.bytesToHex("firstN".getBytes()),
+                              FBUtilities.bytesToHex("lastN".getBytes())),
+                String.format("SELECT '%s', '%s' FROM Standard1 WHERE 
KEY='jsmith'",
+                              FBUtilities.bytesToHex("firstN".getBytes()),
+                              FBUtilities.bytesToHex("lastN".getBytes())),
+                String.format("SELECT '%s' FROM Standard1 WHERE KEY='jsmith'",
+                              first),
+                
+                "DELETE 1, 3 FROM JdbcInteger WHERE KEY='jsmith'",
+                "SELECT 1, 3 FROM JdbcInteger WHERE KEY='jsmith'", // fails.
+                "SELECT 2, 4 FROM JdbcInteger WHERE KEY='jsmith'",
+                
+                "DELETE 1 FROM JdbcLong WHERE KEY='jsmith'",
+                "SELECT 1 FROM JdbcLong WHERE KEY='jsmith'",
+                "SELECT 2 FROM JdbcLong WHERE KEY='jsmith'",
+                
+                "DELETE 'first' FROM JdbcAscii WHERE KEY='jsmith'",
+                "SELECT 'first' FROM JdbcAscii WHERE KEY='jsmith'",
+                "SELECT 'last' FROM JdbcAscii WHERE KEY='jsmith'",
+                
+                String.format("DELETE '%s' FROM JdbcBytes WHERE KEY='jsmith'", 
first),
+                String.format("SELECT '%s' FROM JdbcBytes WHERE KEY='jsmith'", 
first),
+                String.format("SELECT '%s' FROM JdbcBytes WHERE KEY='jsmith'", 
last),
+                
+                "DELETE 'first' FROM JdbcUtf8 WHERE KEY='jsmith'",
+                "SELECT 'first' FROM JdbcUtf8 WHERE KEY='jsmith'",
+                "SELECT 'last' FROM JdbcUtf8 WHERE KEY='jsmith'",
         };
         
         for (int i = 0; i < statements.length/3; i++) 
@@ -243,7 +248,7 @@ public class JdbcDriverTest extends Embe
             }
         }
         
-        assert actualRows == expectedRows;
+        assert actualRows == expectedRows : String.format("expected %d rows, 
got %d", expectedRows, actualRows);
     }
     
     /** executes a prepared statement */

Modified: cassandra/trunk/test/conf/cassandra.yaml
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/test/conf/cassandra.yaml?rev=1080028&r1=1080027&r2=1080028&view=diff
==============================================================================
--- cassandra/trunk/test/conf/cassandra.yaml (original)
+++ cassandra/trunk/test/conf/cassandra.yaml Wed Mar  9 22:00:48 2011
@@ -142,13 +142,6 @@ keyspaces:
         - name: JdbcAscii
           compare_with: AsciiType
           default_validation_class: AsciiType
-        
-
-        - name: Standard5
-          rows_cached: 0
-          keys_cached: 0
-          compare_with: AsciiType
-          default_validation_class: AsciiType
 
     - name: Keyspace2
       replica_placement_strategy: org.apache.cassandra.locator.SimpleStrategy


Reply via email to