Changeset: 485c75b35cc9 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/485c75b35cc9
Modified Files:
        src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java
Branch: default
Log Message:

An array_size of 0 (so new String[0]) is allowed in java.


diffs (53 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
@@ -166,7 +166,7 @@ public class MonetPreparedStatement
                int countParam = 0;
                int firstParamOffset = 0;
 
-               // initialise blank finals
+               // initialise metadata arrays. size can be 0.
                monetdbType = new String[size];
                javaType = new int[size];
                digits = new int[size];
@@ -185,7 +185,7 @@ public class MonetPreparedStatement
                        final int schema_colnr = rs.findColumn("schema");
                        final int table_colnr = rs.findColumn("table");
                        final int column_colnr = rs.findColumn("column");
-                       for (int i = 0; rs.next(); i++) {
+                       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) {
@@ -357,22 +357,16 @@ public class MonetPreparedStatement
                if (rsmd == null) {
                        // first use, construct the arrays with metadata and a
                        // ResultSetMetaData object once and reuse it for all 
next calls
-                       final int rescolcount = size - paramCount;
-                       int array_size = rescolcount;
-                       if (array_size == 0) {
-                               // there are no resultset columns for this 
prepared statement
-                               // we can not create arrays of size 0, so use:
-                               array_size = 1;
-                       }
+                       final int rescolcount = size - paramCount;      // this 
can be 0
                        // create arrays for storing only the result columns 
meta data
-                       final String[] schemas = new String[array_size];
-                       final String[] tables = new String[array_size];
-                       final String[] columns = new String[array_size];
-                       final String[] types = new String[array_size];
-                       final int[] jdbcTypes = new int[array_size];
-                       final int[] lengths = new int[array_size];
-                       final int[] precisions = new int[array_size];
-                       final int[] scales = new int[array_size];
+                       final String[] schemas = new String[rescolcount];
+                       final String[] tables = new String[rescolcount];
+                       final String[] columns = new String[rescolcount];
+                       final String[] types = new String[rescolcount];
+                       final int[] jdbcTypes = new int[rescolcount];
+                       final int[] lengths = new int[rescolcount];
+                       final int[] precisions = new int[rescolcount];
+                       final int[] scales = new int[rescolcount];
                        // fill the arrays with the resultset columns metadata
                        for (int i = 0; i < rescolcount; i++) {
                                schemas[i] = schema[i];
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to