changeset 883:333bbac1e3e8

Optimise getParameterMetaData(). We can compute the number of parameters now, so avoid to go through all entries in column[] to test if it is a parameter.
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Wed, 03 Apr 2024 14:10:15 +0200 (12 months ago)
parents cd6e5449fb1a
children 1956d8ba5ad3
files src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java
diffstat 1 files changed, 10 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java
+++ b/src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java
@@ -464,18 +464,16 @@ public class MonetPreparedStatement
 			final int[] jdbcTypes = new int[array_size];
 			final int[] precisions = new int[array_size];
 			final int[] scales = new int[array_size];
-			int param = 1;	// parameters in JDBC start from 1
-			// now fill the arrays with only the parameters metadata
-			for (int i = 0; i < size; i++) {
-				/* when column[i] == null it is a parameter,
-				   when column[i] != null it is a result column of the prepared query */
-				if (column[i] != null)
-					continue;
-				types[param] = monetdbType[i];
-				jdbcTypes[param] = javaType[i];
-				precisions[param] = digits[i];
-				scales[param] = scale[i];
-				param++;
+			if (paramCount > 0) {
+				// fill the arrays with the parameters metadata
+				int param = 1;	// parameters in JDBC start from 1
+				for (int i = paramStartIndex; i < size && param <= paramCount; i++) {
+					types[param] = monetdbType[i];
+					jdbcTypes[param] = javaType[i];
+					precisions[param] = digits[i];
+					scales[param] = scale[i];
+					param++;
+				}
 			}
 
 			pmd = new MonetParameterMetaData((MonetConnection) getConnection(),