Changeset: 32f246853ec4 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/32f246853ec4
Modified Files:
        src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java
        src/main/java/org/monetdb/jdbc/MonetResultSet.java
        src/main/java/org/monetdb/jdbc/MonetResultSetMetaData.java
Branch: default
Log Message:

Optimisation, call connection.mapClobAsVarChar() and 
connection.mapBlobAsVarBinary() outside the for-loop, as it does not change.


diffs (82 lines):

diff --git a/src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java 
b/src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java
--- a/src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java
+++ b/src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java
@@ -179,6 +179,8 @@ public class MonetPreparedStatement
                final ResultSet rs = super.getResultSet();
                if (rs != null) {
                        // System.out.println("After super.getResultSet();");
+                       final boolean mapClobAsVarChar = 
connection.mapClobAsVarChar();
+                       final boolean mapBlobAsVarBinary = 
connection.mapBlobAsVarBinary();
                        final int type_colnr = rs.findColumn("type");
                        final int digits_colnr = rs.findColumn("digits");
                        final int scale_colnr = rs.findColumn("scale");
@@ -188,13 +190,11 @@ public class MonetPreparedStatement
                        for (int i = 0; rs.next() && i < size; i++) {
                                monetdbType[i] = rs.getString(type_colnr);
                                javaType[i] = 
MonetDriver.getJdbcSQLType(monetdbType[i]);
-                               if (javaType[i] == Types.CLOB) {
-                                       if (connection.mapClobAsVarChar())
-                                               javaType[i] = Types.VARCHAR;
+                               if (javaType[i] == Types.CLOB && 
mapClobAsVarChar) {
+                                       javaType[i] = Types.VARCHAR;
                                } else
-                               if (javaType[i] == Types.BLOB) {
-                                       if (connection.mapBlobAsVarBinary())
-                                               javaType[i] = Types.VARBINARY;
+                               if (javaType[i] == Types.BLOB && 
mapBlobAsVarBinary) {
+                                       javaType[i] = Types.VARBINARY;
                                }
                                digits[i] = rs.getInt(digits_colnr);
                                scale[i] = rs.getInt(scale_colnr);
diff --git a/src/main/java/org/monetdb/jdbc/MonetResultSet.java 
b/src/main/java/org/monetdb/jdbc/MonetResultSet.java
--- a/src/main/java/org/monetdb/jdbc/MonetResultSet.java
+++ b/src/main/java/org/monetdb/jdbc/MonetResultSet.java
@@ -215,15 +215,15 @@ public class MonetResultSet
                        connection = (MonetConnection) 
statement.getConnection();
                } catch (SQLException se) { /* ignore it */ }
 
+               final boolean mapClobAsVarChar = connection != null && 
connection.mapClobAsVarChar();
+               final boolean mapBlobAsVarBinary = connection != null && 
connection.mapBlobAsVarBinary();
                for (int i = 0; i < types.length; i++) {
                        int javaSQLtype = MonetDriver.getJdbcSQLType(types[i]);
-                       if (javaSQLtype == Types.CLOB) {
-                               if (connection != null && 
connection.mapClobAsVarChar())
-                                       javaSQLtype = Types.VARCHAR;
+                       if (javaSQLtype == Types.CLOB && mapClobAsVarChar) {
+                               javaSQLtype = Types.VARCHAR;
                        } else
-                       if (javaSQLtype == Types.BLOB) {
-                               if (connection != null && 
connection.mapBlobAsVarBinary())
-                                       javaSQLtype = Types.VARBINARY;
+                       if (javaSQLtype == Types.BLOB && mapBlobAsVarBinary) {
+                               javaSQLtype = Types.VARBINARY;
                        }
                        JdbcSQLTypes[i] = javaSQLtype;
                }
diff --git a/src/main/java/org/monetdb/jdbc/MonetResultSetMetaData.java 
b/src/main/java/org/monetdb/jdbc/MonetResultSetMetaData.java
--- a/src/main/java/org/monetdb/jdbc/MonetResultSetMetaData.java
+++ b/src/main/java/org/monetdb/jdbc/MonetResultSetMetaData.java
@@ -121,17 +121,17 @@ final class MonetResultSetMetaData
                        throw new IllegalArgumentException("Inconsistent Header 
metadata");
                }
 
+               final boolean mapClobAsVarChar = connection.mapClobAsVarChar();
+               final boolean mapBlobAsVarBinary = 
connection.mapBlobAsVarBinary();
                // derive the JDBC SQL type codes from the types[] names once
                JdbcSQLTypes = new int[types.length];
                for (int i = 0; i < types.length; i++) {
                        int javaSQLtype = MonetDriver.getJdbcSQLType(types[i]);
-                       if (javaSQLtype == Types.CLOB) {
-                               if (connection.mapClobAsVarChar())
-                                       javaSQLtype = Types.VARCHAR;
+                       if (javaSQLtype == Types.CLOB && mapClobAsVarChar) {
+                               javaSQLtype = Types.VARCHAR;
                        } else
-                       if (javaSQLtype == Types.BLOB) {
-                               if (connection.mapBlobAsVarBinary())
-                                       javaSQLtype = Types.VARBINARY;
+                       if (javaSQLtype == Types.BLOB && mapBlobAsVarBinary) {
+                               javaSQLtype = Types.VARBINARY;
                        }
                        JdbcSQLTypes[i] = javaSQLtype;
                }
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to