2 new revisions:

Revision: 96d7c2da0dec
Author:   Rick Shaw <[email protected]>
Date:     Mon Nov  7 15:59:43 2011
Log:      Update POM to use version 1.0.2 of apache-cassandra-thrift, and...
http://code.google.com/a/apache-extras.org/p/cassandra-jdbc/source/detail?r=96d7c2da0dec

Revision: 306bd1b4ee88
Author:   Rick Shaw <[email protected]>
Date:     Thu Nov 17 12:13:48 2011
Log:      Issue #6. Re-repair CASSANDRA-3244
http://code.google.com/a/apache-extras.org/p/cassandra-jdbc/source/detail?r=306bd1b4ee88

==============================================================================
Revision: 96d7c2da0dec
Author:   Rick Shaw <[email protected]>
Date:     Mon Nov  7 15:59:43 2011
Log:      Update POM to use version 1.0.2 of apache-cassandra-thrift, and
apache-cassandra-clientutil JARs as dependencies.
http://code.google.com/a/apache-extras.org/p/cassandra-jdbc/source/detail?r=96d7c2da0dec

Modified:
 /pom.xml

=======================================
--- /pom.xml    Thu Oct 13 13:15:22 2011
+++ /pom.xml    Mon Nov  7 15:59:43 2011
@@ -98,7 +98,7 @@
     <dependency>
       <groupId>org.apache.cassandra</groupId>
       <artifactId>cassandra-thrift</artifactId>
-      <version>1.0.0</version>
+      <version>1.0.2</version>
       <exclusions>
         <exclusion>
           <groupId>javax.servlet</groupId>
@@ -113,7 +113,7 @@
     <dependency>
       <groupId>org.apache.cassandra</groupId>
       <artifactId>cassandra-clientutil</artifactId>
-      <version>1.0.0-rc2-SNAPSHOT</version>
+      <version>1.0.2</version>
     </dependency>
     <dependency>
       <groupId>com.google.guava</groupId>

==============================================================================
Revision: 306bd1b4ee88
Author:   Rick Shaw <[email protected]>
Date:     Thu Nov 17 12:13:48 2011
Log:      Issue #6. Re-repair CASSANDRA-3244
http://code.google.com/a/apache-extras.org/p/cassandra-jdbc/source/detail?r=306bd1b4ee88

Modified:
 /src/main/java/org/apache/cassandra/cql/jdbc/CassandraConnection.java
 /src/main/java/org/apache/cassandra/cql/jdbc/CassandraStatement.java

=======================================
--- /src/main/java/org/apache/cassandra/cql/jdbc/CassandraConnection.java Thu Oct 13 00:45:22 2011 +++ /src/main/java/org/apache/cassandra/cql/jdbc/CassandraConnection.java Thu Nov 17 12:13:48 2011
@@ -20,51 +20,17 @@
  */
 package org.apache.cassandra.cql.jdbc;

-import static org.apache.cassandra.cql.jdbc.Utils.ALWAYS_AUTOCOMMIT;
-import static org.apache.cassandra.cql.jdbc.Utils.BAD_TIMEOUT;
-import static org.apache.cassandra.cql.jdbc.Utils.NO_INTERFACE;
-import static org.apache.cassandra.cql.jdbc.Utils.NO_TRANSACTIONS;
-import static org.apache.cassandra.cql.jdbc.Utils.PROTOCOL;
-import static org.apache.cassandra.cql.jdbc.Utils.SCHEMA_MISMATCH;
-import static org.apache.cassandra.cql.jdbc.Utils.TAG_SERVER_NAME;
-import static org.apache.cassandra.cql.jdbc.Utils.TAG_DATABASE_NAME;
-import static org.apache.cassandra.cql.jdbc.Utils.TAG_PASSWORD;
-import static org.apache.cassandra.cql.jdbc.Utils.TAG_PORT_NUMBER;
-import static org.apache.cassandra.cql.jdbc.Utils.TAG_USER;
-import static org.apache.cassandra.cql.jdbc.Utils.WAS_CLOSED_CON;
-import static org.apache.cassandra.cql.jdbc.Utils.createSubName;
-import static org.apache.cassandra.cql.jdbc.Utils.determineCurrentKeyspace;
-
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.PreparedStatement;
-import java.sql.SQLClientInfoException;
-import java.sql.SQLException;
-import java.sql.SQLFeatureNotSupportedException;
-import java.sql.SQLInvalidAuthorizationSpecException;
-import java.sql.SQLNonTransientConnectionException;
-import java.sql.SQLRecoverableException;
-import java.sql.SQLSyntaxErrorException;
-import java.sql.SQLTimeoutException;
-import java.sql.SQLTransientConnectionException;
-import java.sql.SQLWarning;
-import java.sql.Statement;
-import java.util.ArrayList;
+import java.sql.*;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.Properties;
-
-import org.apache.cassandra.thrift.AuthenticationException;
-import org.apache.cassandra.thrift.AuthenticationRequest;
-import org.apache.cassandra.thrift.AuthorizationException;
-import org.apache.cassandra.thrift.Cassandra;
-import org.apache.cassandra.thrift.Compression;
-import org.apache.cassandra.thrift.CqlResult;
-import org.apache.cassandra.thrift.InvalidRequestException;
-import org.apache.cassandra.thrift.SchemaDisagreementException;
-import org.apache.cassandra.thrift.TimedOutException;
-import org.apache.cassandra.thrift.UnavailableException;
+import java.util.Set;
+import java.util.concurrent.ConcurrentSkipListSet;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.cassandra.thrift.*;
 import org.apache.thrift.TException;
 import org.apache.thrift.protocol.TBinaryProtocol;
 import org.apache.thrift.protocol.TProtocol;
@@ -72,8 +38,7 @@
 import org.apache.thrift.transport.TSocket;
 import org.apache.thrift.transport.TTransport;

-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import static org.apache.cassandra.cql.jdbc.Utils.*;

 /**
  * Implementation class for {@link Connection}.
@@ -99,9 +64,9 @@
     private Properties clientInfo = new Properties();

     /**
-     * List of all Statements that have been created by this connection
+     * Set of all Statements that have been created by this connection
      */
-    private List<Statement> statements;
+ private Set<Statement> statements = new ConcurrentSkipListSet<Statement>();

     private Cassandra.Client client;
     private TTransport transport;
@@ -119,7 +84,6 @@
      */
     public CassandraConnection(Properties props) throws SQLException
     {
-        statements = new ArrayList<Statement>();
         clientInfo = new Properties();
         url = PROTOCOL + createSubName(props);
         try
@@ -202,10 +166,13 @@
      */
     public synchronized void close() throws SQLException
     {
+        // close all statements associated with this connection upon close
+        for (Statement statement : statements)
+            statement.close();
+        statements.clear();
+
         if (isConnected())
         {
- // spec says to close all statements associated with this connection upon close
-            for (Statement statement : statements) statement.close();
             // then disconnect from the transport
             disconnect();
         }
@@ -220,22 +187,25 @@
     public Statement createStatement() throws SQLException
     {
         checkNotClosed();
-        statements.add(new CassandraStatement(this));
-        return statements.get(statements.size() - 1);
+        Statement statement = new CassandraStatement(this);
+        statements.add(statement);
+        return statement;
     }

public Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLException
     {
         checkNotClosed();
- statements.add(new CassandraStatement(this, null, resultSetType, resultSetConcurrency));
-        return statements.get(statements.size() - 1);
+ Statement statement = new CassandraStatement(this, null, resultSetType, resultSetConcurrency);
+        statements.add(statement);
+        return statement;
     }

public Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException
     {
         checkNotClosed();
- statements.add(new CassandraStatement(this, null, resultSetType, resultSetConcurrency, resultSetHoldability));
-        return statements.get(statements.size() - 1);
+ Statement statement = new CassandraStatement(this, null, resultSetType, resultSetConcurrency, resultSetHoldability);
+        statements.add(statement);
+        return statement;
     }

     public boolean getAutoCommit() throws SQLException
@@ -327,8 +297,9 @@
public PreparedStatement prepareStatement(String sql) throws SQLException
     {
         checkNotClosed();
-        statements.add(new CassandraPreparedStatement(this, sql));
-        return (PreparedStatement) statements.get(statements.size() - 1);
+ PreparedStatement statement = new CassandraPreparedStatement(this, sql);
+        statements.add(statement);
+        return statement;
     }

public PreparedStatement prepareStatement(String arg0, int arg1, int arg2) throws SQLException
@@ -441,6 +412,14 @@
         return execute(queryStr, defaultCompression);
     }

+    /**
+     * Remove a Statement from the Open Statements List
+     */
+    protected boolean removeStatement(Statement statement)
+    {
+        return statements.remove(statement);
+    }
+
     /**
      * Shutdown the remote connection
      */
=======================================
--- /src/main/java/org/apache/cassandra/cql/jdbc/CassandraStatement.java Thu Oct 13 00:45:22 2011 +++ /src/main/java/org/apache/cassandra/cql/jdbc/CassandraStatement.java Thu Nov 17 12:13:48 2011
@@ -34,7 +34,6 @@
 import java.sql.SQLTransientConnectionException;
 import java.sql.SQLWarning;
 import java.sql.Statement;
-import java.util.regex.Pattern;

 import org.apache.cassandra.thrift.CqlResult;
 import org.apache.cassandra.thrift.InvalidRequestException;
@@ -143,9 +142,12 @@

     public void close() throws SQLException
     {
+        connection.removeStatement(this);
         connection = null;
         cql = null;
     }
+
+

     private void doExecute(String sql) throws SQLException
     {

Reply via email to