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

Extend getColumnClassName() by also checking the connection's typeMap for Class 
names for types url and inet. Similar code as used in getParameterClassName().
Improve ParameterMetaData.isSigned() to return more correct value in case the 
parameter type is oid or ptr. Similar code as used in 
ResultSetMetaData.isSigned().
Improve ParameterMetaData.getParameterMode() to return 
ParameterMetaData.parameterModeIn as we currently only support INput parameters 
for prepared statements.


diffs (75 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
@@ -45,7 +45,7 @@ import java.util.Map;
  *
  * This implementation of the PreparedStatement interface uses the
  * capabilities of the MonetDB/SQL backend to prepare and execute
- * queries.  The backend takes care of finding the '?'s in the input and
+ * statements.  The backend takes care of finding the '?'s in the input and
  * returns the types it expects for them.
  *
  * An example of a server response on a prepare query is:
@@ -690,7 +690,15 @@ public class MonetPreparedStatement
                         */
                        @Override
                        public String getColumnClassName(int column) throws 
SQLException {
-                               return 
MonetResultSet.getClassForType(getColumnType(column)).getName();
+                               String typeName = getColumnTypeName(column);
+                               Map<String,Class<?>> map = 
getConnection().getTypeMap();
+                               Class<?> c;
+                               if (map.containsKey(typeName)) {
+                                       c = (Class)map.get(typeName);
+                               } else {
+                                       c = 
MonetResultSet.getClassForType(getColumnType(column));
+                               }
+                               return c.getName();
                        }
 
                        /**
@@ -789,7 +797,6 @@ public class MonetPreparedStatement
                                        if (column[i] == null)
                                                cnt++;
                                }
-
                                return cnt;
                        }
 
@@ -828,11 +835,18 @@ public class MonetPreparedStatement
                                        case Types.TINYINT:
                                        case Types.SMALLINT:
                                        case Types.INTEGER:
-                                       case Types.BIGINT:
                                        case Types.REAL:
                                        case Types.FLOAT:
                                        case Types.DOUBLE:
                                                return true;
+                                       case Types.BIGINT:
+                                               String monettype = 
getParameterTypeName(param);
+                                               if (monettype != null) {
+                                                       if 
("oid".equals(monettype)
+                                                        || 
"ptr".equals(monettype))
+                                                               return false;
+                                               }
+                                               return true;
                                        case Types.BIT: // we don't use type 
BIT, it's here for completeness
                                        case Types.BOOLEAN:
                                        case Types.DATE:
@@ -940,7 +954,7 @@ public class MonetPreparedStatement
 
                        /**
                         * Retrieves the designated parameter's mode.
-                        * For MonetDB/SQL this is currently always unknown.
+                        * For MonetDB/SQL we currently only support INput 
parameters.
                         *
                         * @param param - the first parameter is 1, the second 
is 2, ...
                         * @return mode of the parameter; one of
@@ -952,7 +966,7 @@ public class MonetPreparedStatement
                         */
                        @Override
                        public int getParameterMode(int param) throws 
SQLException {
-                               return ParameterMetaData.parameterModeUnknown;
+                               return ParameterMetaData.parameterModeIn;
                        }
                };
        }
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to