Repository: incubator-trafodion
Updated Branches:
  refs/heads/master f42450f75 -> e0ee8e430


Statement for metadata should be closed with connection

Statement for metadata should be closed with connection


Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/7de9b968
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/7de9b968
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/7de9b968

Branch: refs/heads/master
Commit: 7de9b9684864ee23bed5118f5e02a4b03b9bb43a
Parents: acadd04
Author: gabriel <[email protected]>
Authored: Sat Oct 28 19:53:03 2017 +0800
Committer: gabriel <[email protected]>
Committed: Sat Oct 28 20:10:13 2017 +0800

----------------------------------------------------------------------
 .../java/org/trafodion/jdbc/t4/T4DatabaseMetaData.java    | 10 ++++++++--
 .../main/java/org/trafodion/jdbc/t4/TrafT4Connection.java |  8 +++++---
 2 files changed, 13 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/7de9b968/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4DatabaseMetaData.java
----------------------------------------------------------------------
diff --git 
a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4DatabaseMetaData.java 
b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4DatabaseMetaData.java
index a35b8e3..ffd9ae3 100644
--- 
a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4DatabaseMetaData.java
+++ 
b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4DatabaseMetaData.java
@@ -27,6 +27,8 @@ import java.sql.ResultSet;
 import java.sql.RowIdLifetime;
 import java.sql.SQLException;
 import java.sql.Types;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.logging.Level;
 import java.util.logging.LogRecord;
 
@@ -69,6 +71,7 @@ import java.util.logging.LogRecord;
  */
 public class T4DatabaseMetaData extends TrafT4Handle implements 
java.sql.DatabaseMetaData {
 
+       private Map<String, TrafT4Statement> stmtMap_ = new 
ConcurrentHashMap<String, TrafT4Statement>(16);
        // 
----------------------------------------------------------------------
        // First, a variety of minor information about the target database.
 
@@ -5636,7 +5639,7 @@ public class T4DatabaseMetaData extends TrafT4Handle 
implements java.sql.Databas
                        hashcode = -hashcode;
 
                }
-               String stmtLabel = "STMT_CATALOG_" + hashcode + 1000;
+               String stmtLabel = "STMT_CA_" + catalogAPI  + hashcode + 1000;
                if (stmtLabel.length() > 17) {
                        stmtLabel = stmtLabel.substring(0, 17);
 
@@ -5764,7 +5767,10 @@ public class T4DatabaseMetaData extends TrafT4Handle 
implements java.sql.Databas
                        }
 
                        TrafT4Desc[] outputDesc = 
InterfaceStatement.NewDescArray(gcr_.m_p3);
-
+                       if (!this.stmtMap_.containsKey(stmtLabel) || 
this.stmtMap_.get(stmtLabel).isClosed()) {
+                               //Initialize a statement for MD queries, and 
this stmt will be removed while closing connection          +                   
           // Initialize a statement for MD queries, and this stmt will be
+                               this.stmtMap_.put(stmtLabel, new 
TrafT4Statement(this.connection_, stmtLabel));
+                       }
                        resultSet_ = new TrafT4ResultSet(this, outputDesc, 
gcr_.m_p2, true);
                        resultSet_.proxySyntax_ = gcr_.proxySyntax;
                        break;

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/7de9b968/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Connection.java
----------------------------------------------------------------------
diff --git 
a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Connection.java 
b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Connection.java
index 2a8e381..178f034 100644
--- a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Connection.java
+++ b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4Connection.java
@@ -68,6 +68,7 @@ import javax.sql.PooledConnection;
  */
 public class TrafT4Connection extends PreparedStatementManager implements 
java.sql.Connection {
 
+       private T4DatabaseMetaData metaData_;
        /**
         * Validates the connection by clearing warnings and verifying that the
         * Connection is still open.
@@ -306,7 +307,7 @@ public class TrafT4Connection extends 
PreparedStatementManager implements java.s
 
                validateConnection();
 
-               return new T4DatabaseMetaData(this);
+               return this.metaData_;
        }
 
        public int getTransactionIsolation() throws SQLException {
@@ -1644,6 +1645,7 @@ public class TrafT4Connection extends 
PreparedStatementManager implements java.s
                if (props_.getSPJEnv()) {
                        ic_.enableProxySyntax(this);
                }
+               this.metaData_ = new T4DatabaseMetaData(this);
        }
        
        private ArrayList<String> createAddressList(T4Properties t4props) {
@@ -1859,11 +1861,11 @@ public class TrafT4Connection extends 
PreparedStatementManager implements java.s
        }
 
        public Clob createClob() throws SQLException {
-        return new TrafT4Clob(this, null, null);
+               return new TrafT4Clob(this, null, null);
        }
 
        public Blob createBlob() throws SQLException {
-        return new TrafT4Blob(this, null, null);
+               return new TrafT4Blob(this, null, null);
        }
 
        public NClob createNClob() throws SQLException {

Reply via email to