# HG changeset patch
# User Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
# Date 1568302982 -7200
# Node ID aa654804af6aafaf264c353206ee03f4556a695c
# Parent  0b8eb1df827604a175b2e0d1affa0165c9630ca3
Optimised setBytes() method. Eliminated the concatenation of 3 strings: "blob '" + hex.toString() + "'" which can be costly for large byte[] data, which has just been converted into hexString of twice its size.

diff --git a/src/main/java/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java b/src/main/java/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java
--- a/src/main/java/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java
+++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java
@@ -1260,14 +1260,16 @@ public class MonetPreparedStatement
 			return;
 		}
 
-		final StringBuilder hex = new StringBuilder(x.length * 2);
-		byte b;
-		for (int i = 0; i < x.length; i++) {
-			b = x[i];
-			hex.append(HEXES.charAt((b & 0xF0) >> 4))
-				.append(HEXES.charAt((b & 0x0F)));
+		final int len = x.length;
+		final StringBuilder hex = new StringBuilder(8 + (len * 2));
+		hex.append("blob '");	// add a casting prefix
+		// convert the bytes into hex codes
+		for (int i = 0; i < len; i++) {
+			hex.append(HEXES.charAt((x[i] & 0xF0) >> 4))
+			   .append(HEXES.charAt((x[i] & 0x0F)));
 		}
-		setValue(parameterIndex, "blob '" + hex.toString() + "'");
+		hex.append("'");	// end of hex string value
+		setValue(parameterIndex, hex.toString());
 	}
 
 	/**