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