SMALLINT vs short or... int?
От | Tomisław Kityński |
---|---|
Тема | SMALLINT vs short or... int? |
Дата | |
Msg-id | 47B4304F.5060204@wp.pl обсуждение исходный текст |
Ответы |
Re: SMALLINT vs short or... int?
|
Список | pgsql-jdbc |
Hello! I found a problem with datatype conversion between SMALLINT and short. I have noticed in archives that this problem should have been already solved (there were some patches available), but this the problem is still present in 8.2-504.jdbc3 jar I have been using. It didn't help to upgrade to 8.3-603.jdbc4 (as I switched to Java 6.0, I did the same with jdbc driver, that's why I use jdbc4 now and not jdbc3 as before). I checked out the sources from repository yesterday (2008-02-14) and build the driver with ant, but the problem persists. The problem is above mentioned type conversion. According to documentation psql's SMALLINT is int2 (just as short integer) and also java.sql.Types have SMALLINT constant. I've noticed in the driver code, there are places, where SMALLINT is converted to short (what is correct, I believe). But when I call getObject on ResultSet instance on the the column that is declared as SMALLINT i get an instance of Integer. This is really a problem for me, as I use returned value's class for reflection, namely obtaining a setter method with appropriate column name AND type. I have method signature like this: setXXX(Short):void, but java reflection can't find this, as getObject returns Integer, so actually getDeclaredMethod uses Integer for the formal parameter (and not Short, as it would be expected). I tracked the problem down, fixed, and now the driver seems to work okay. I created a patch, so please consider applying it. If this is not the correct mailing list (I was not sure if the others are more appropriate), then please point me to the correct one. This is the patch (in switch clause there we SMALLINT and INTEGER case sticked together, so conversion for SMALLINT worked the same way as for INTEGER): Best regards, Tomislaw Kitynski Index: AbstractJdbc2ResultSet.java =================================================================== RCS file: /cvsroot/jdbc/pgjdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java,v retrieving revision 1.101 diff -r1.101 AbstractJdbc2ResultSet.java 122a123 > return new Short(getShort(columnIndex));
В списке pgsql-jdbc по дате отправления: