Thank you Jeremy and thanks too for your tireless work on Sequel.

Guy

On Thursday, August 15, 2019 at 4:14:13 PM UTC+1, Jeremy Evans wrote:
>
> On Thursday, August 15, 2019 at 3:53:45 AM UTC-7, Guy Boertje wrote:
>>
>> > Do other drivers use driver-specific array types?
>>
>> I'm not sure about the driver-specific bit but I imagine that the driver 
>> designers will use a Java JDBC array type if the DB technology supports 
>> array columns or similar. I'm thinking of the newer breed of DB tech that 
>> is not tables, columns and rows for which JDBC APIs are becoming common.
>>
>> > Do all of the JDBC drivers that support array columns return an object 
>> that will respond to to_ary?
>>
>> My understanding is, the driver returns an instance of java.sql.Array, 
>> via the `getArray(column)` Jruby will wrap the result in some kind of Ruby 
>> compatible proxy. That proxy will translate the `.array` call into 
>> `getArray()` and that call will return another JRuby proxy. If that proxy 
>> is an instance of `ArrayJavaProxy` then it has a `to_ary` method returning 
>> `JavaUtil.convertJavaArrayToRubyWithNesting(context, array)`.
>> Without the call to `array` (as the postgres adapter does), AFAICT, 
>> `process_result_set` adds the proxy wrapped result of the 
>> `getArray(column)`.
>>
>> FWIW the activerecord-jdbc-adapter 
>> <https://github.com/jruby/activerecord-jdbc-adapter/blob/master/src/java/arjdbc/jdbc/RubyJdbcConnection.java#L2282>
>>  uses 
>> a arrayToRuby method on all jdbc for at least 7 years with the Postgres 
>> specific override removed in 28 Mar 2018 (array handling identical but 
>> different because "Method org.postgresql.jdbc4.Jdbc4Array.free() is not yet 
>> implemented"). Their approach is interesting as it recursive into the array 
>> but their code is in Java/JRuby so they avoid the proxy wrappers.
>>
>
> Thank you for that information, it was very help to provide context.  I've 
> tested moving the code from the jdbc/postgresql subadapter to the jdbc 
> adapter and it appears to work.  I'll push the changes to GitHub shortly.
>
> 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 sequel-talk+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sequel-talk/d92a7ec5-94fa-445e-9cb0-7140a0b54885%40googlegroups.com.

Reply via email to