Re: AbstractJdbc2Array - another patch
От | Kris Jurka |
---|---|
Тема | Re: AbstractJdbc2Array - another patch |
Дата | |
Msg-id | Pine.BSO.4.64.0711211452310.24674@leary.csoft.net обсуждение исходный текст |
Ответ на | Re: AbstractJdbc2Array - another patch (Marek Lewczuk <newsy@lewczuk.com>) |
Ответы |
Re: AbstractJdbc2Array - another patch
Re: AbstractJdbc2Array - another patch |
Список | pgsql-jdbc |
On Tue, 30 Oct 2007, Marek Lewczuk wrote: > in the attachment you can find jdbc.patch (that includes patches for a few > classes). You will see that I've added base types array types and right now > Array implementation works as should (your last test case is working, which > means that when using Array.getResultSet() returns appropriate > Array.getBaseType() and Array.getBaseTypeName()). However those changes are > not enough, there has to be more to be done in order to provide support for > user defined types, but I think that should be done later. I also think that > class TypeInfoCache must be absolutely rewritten, cause it is not prepared > for user defined types. > Attached is a revised version of your patch after I worked on it a bit. Things I've changed: 1) Looking up the array type for a base type by using typelem doesn't work because typelem is not unique. Since no code was calling getPGTypeArray, I just removed this code. 2) Fixed driver code that was relying on the array return type in AbstractJdbc2DatabaseMetaData. 3) Fixed the regression tests and added new ones to verify that array handling works. 4) Changed Array.getResultSet to use generic coding rather than hardcoding type oids for each java.sql.Types value. This allows getResultSet to be used on types that aren't known to the driver, like aclitem[]. You still can't call getArray on this type, but we're getting closer. 5) Array.getResultSet didn't respect index or offset parameters. 6) For TypeInfoCache I've added a new column to link the base and array types instead of duplicating the whole rows. 7) Code did not correctly handle a string value of NULL in arrays for 8.1 and earlier server versions. So with these changes, I think the code is pretty much ready to go, with the exception of how multidimensional results are returned. The way you wrap the arrays in Object[] makes it impossible to cast to things like Integer[][]. Also I think we should be able to return multidimensional arrays of primitive type if the "compatible" option is set to 8.2. I think you should be using java.lang.reflect.Array#newInstance to create the arrays you are returning to get the correct type instead of building them up incrementally. Kris Jurka
Вложения
В списке pgsql-jdbc по дате отправления: