Changeset: 333bbac1e3e8 for monetdb-java URL: https://dev.monetdb.org/hg/monetdb-java/rev/333bbac1e3e8 Modified Files: src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java Branch: default Log Message:
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. diffs (32 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 @@ -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(), _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org