changeset 973:32f246853ec4 default tip

Optimisation, call connection.mapClobAsVarChar() and connection.mapBlobAsVarBinary() outside the for-loop, as it does not change.
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Thu, 10 Apr 2025 19:26:59 +0200 (9 days ago)
parents f19623e0f527
children
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
diffstat 3 files changed, 18 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- 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);
--- 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;
 		}
--- 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;
 		}