On Wednesday, August 14, 2019 at 2:23:16 AM UTC-7, Guy Boertje wrote:
>
> Hi,
>
> I have a question regarding the generic type conversion for JDBC Array
> types.
>
> The java examples I've seen do a further getArray call on the object
> returned by resultset.getArray(column)
>
> java.sql.Array array = rs.getArray(columnIndex);
> if (array == null) {
> return true;
> }
> Object o = array.getArray();
>
> It looks like the postgres jdbc adapter does the correct thing.
>
> # Return PostgreSQL array types as ruby Arrays instead of
> # JDBC PostgreSQL driver-specific array type. Only used if the
> # database does not have a conversion proc for the type.
> ARRAY_METHOD = Object.new
> def ARRAY_METHOD.call(r, i)
> if v = r.getArray(i)
> v.array.to_ary
> end
> end
>
> However, it looks like the generic jdbc adapter only calls getArray(column)
>
> %w'Object Array String Time Date Timestamp BigDecimal Blob Bytes
> Clob'.each do |meth|
> x = convertors[meth.to_sym] = Object.new
> class_eval("def x.call(r, i) r.get#{meth}(i) end", __FILE__,
> __LINE__)
> end
>
> Before I create an issue in github, I wanted to check if there is a reason
> for not making the postgres specific handling the default for all of JDBC.
>
The documentation for the PostgreSQL method mentions that it is because the
JDBC PostgreSQL driver uses a driver-specific array type. Do other drivers
use driver-specific array types? Do all of the JDBC drivers that support
array columns return an object that will respond to to_ary?
Thanks,
Jeremy
--
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/sequel-talk/a92864d0-cd60-4e35-b250-4a12401be41c%40googlegroups.com.