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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/sequel-talk/d92a7ec5-94fa-445e-9cb0-7140a0b54885%40googlegroups.com.
