Changeset: 763150ec0a0a for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java?cmd=changeset;node=763150ec0a0a
Modified Files:
        src/main/java/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java
Branch: default
Log Message:

Improve constructor by preventing NPE when rs == null and
 use findColumn() outside the for-loop so it is done only once.


diffs (41 lines):

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
@@ -150,18 +150,26 @@ public class MonetPreparedStatement
 
                // fill the arrays
                ResultSet rs = super.getResultSet();
-               for (int i = 0; rs.next(); i++) {
-                       monetdbType[i] = rs.getString("type");
-                       javaType[i] = MonetDriver.getJavaType(monetdbType[i]);
-                       digits[i] = rs.getInt("digits");
-                       scale[i] = rs.getInt("scale");
-                       if (rscolcnt == 3)
-                               continue;
-                       schema[i] = rs.getString("schema");
-                       table[i] = rs.getString("table");
-                       column[i] = rs.getString("column");
+               if (rs != null) {
+                       int type_colnr = rs.findColumn("type");
+                       int digits_colnr = rs.findColumn("digits");
+                       int scale_colnr = rs.findColumn("scale");
+                       int schema_colnr = rs.findColumn("schema");
+                       int table_colnr = rs.findColumn("table");
+                       int column_colnr = rs.findColumn("column");
+                       for (int i = 0; rs.next(); i++) {
+                               monetdbType[i] = rs.getString(type_colnr);
+                               javaType[i] = 
MonetDriver.getJavaType(monetdbType[i]);
+                               digits[i] = rs.getInt(digits_colnr);
+                               scale[i] = rs.getInt(scale_colnr);
+                               if (rscolcnt == 3)
+                                       continue;
+                               schema[i] = rs.getString(schema_colnr);
+                               table[i] = rs.getString(table_colnr);
+                               column[i] = rs.getString(column_colnr);
+                       }
+                       rs.close();
                }
-               rs.close();
 
                // PreparedStatements are by default poolable
                poolable = true;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to