# HG changeset patch # User Martin van Dinther <martin.van.dinther@monetdbsolutions.com> # Date 1744306019 -7200 # Node ID 32f246853ec4a8bcd88f13eb7c99c6d0a3bc17a0 # Parent f19623e0f52714fd674ae422567ed0229d27deb4 Optimisation, call connection.mapClobAsVarChar() and connection.mapBlobAsVarBinary() outside the for-loop, as it does not change. 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; }