Changeset: 0e21097f438b for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/0e21097f438b
Modified Files:
        src/main/java/org/monetdb/jdbc/MonetConnection.java
Branch: default
Log Message:

Reduce the number of MonetDatabaseMetaData objects created via getMetaData() to 
maximum 1 per connection as it can be reused.


diffs (30 lines):

diff --git a/src/main/java/org/monetdb/jdbc/MonetConnection.java 
b/src/main/java/org/monetdb/jdbc/MonetConnection.java
--- a/src/main/java/org/monetdb/jdbc/MonetConnection.java
+++ b/src/main/java/org/monetdb/jdbc/MonetConnection.java
@@ -147,6 +147,9 @@ public class MonetConnection
        /** The last set query timeout on the server as used by Statement, 
PreparedStatement and CallableStatement */
        protected int lastSetQueryTimeout;      // 0 means no timeout, which is 
the default on the server
 
+       /** A cache to reduce the number of DatabaseMetaData objects created by 
getMetaData() to maximum 1 per connection */
+       private DatabaseMetaData dbmd;
+
 
        /**
         * Constructor of a Connection for MonetDB. At this moment the
@@ -586,10 +589,14 @@ public class MonetConnection
         */
        @Override
        public DatabaseMetaData getMetaData() throws SQLException {
+               // for debug: System.out.println("calling getMetaData()");
                if (lang != LANG_SQL)
                        throw new SQLException("This method is only supported 
in SQL mode", "M0M04");
-
-               return new MonetDatabaseMetaData(this);
+               if (dbmd == null) {
+                       // first use, construct it once and reuse it for all 
next calls
+                       dbmd = new MonetDatabaseMetaData(this);
+               }
+               return dbmd;
        }
 
        /**
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to