Ah yes, thanks for the update. I had overlooked that you applied the converter also for binding. It is only needed for fetching, as your binding isn't really a client side two way conversion utility - that was the whole point of it.
You can of course throw exceptions for all other operations. But then again, eventually, you will want to read the `ip_address` value, and you'll run into an exception being thrown from one of the get() methods. I do wonder if perhaps re-implementing the ATON / NTOA conversion functions in Java wouldn't be a more straightforward solution here? Thanks, Lukas On Wed, Jun 26, 2019 at 11:02 PM jbai via jOOQ User Group < [email protected]> wrote: > So I debugged a bit more using a where EVENTS.IP_ADDRESS.eq("4.2.2.1") > condition and identified an issue in my > Binding's set(BindingSetStatementContext<String> ctx) method. > > Here's how I originally defined that method: > > @Override > public void set(BindingSetStatementContext<String> ctx) throws SQLException > { > ctx.statement().setString(ctx.index(), > Objects.toString(ctx.convert(converter()).value(), null)); > } > > > I need to provide a String representation of the value to > ctx.statement.setString(). The string value I ultimately want to provide is > "4.2.2.1". However, > using Objects.toString(ctx.convert(converter()).value(), null) produces a > string like "[B@329910d0". This kind of string is what you get when > calling toString() on a byte[]. > > I felt like I didn't need to involve the converter at all since the ctx > already has the String value I want to pass to setString, so I just did > this: > > @Override > public void set(BindingSetStatementContext<String> ctx) throws SQLException { > ctx.statement().setString(ctx.index(), ctx.value()); > } > > > So now my where conditions are working with this Binding. Here's the > updated state of it with more overridden methods simply throwing > SQLFeatureNotSupportExceptions: > > package com.example; > > > import java.sql.*; > import org.jooq.*; > > public class Inet6AtonBinding implements Binding<byte[], String> { > > @Override > public Converter<byte[], String> converter() { > return new Converter<byte[], String>() { > @Override > public String from(byte[] bytes) { > return new String(bytes); > } > > @Override > public byte[] to(String string) { > return string.getBytes(); > } > > @Override > public Class<byte[]> fromType() { > return byte[].class; > } > > @Override > public Class<String> toType() { > return String.class; > } > }; > } > > @Override > public void sql(BindingSQLContext<String> ctx) throws SQLException { > ctx.render().sql("INET6_ATON(?)"); > } > > @Override > public void register(BindingRegisterContext<String> ctx) throws > SQLException { > throw new SQLFeatureNotSupportedException(); > } > > @Override > public void set(BindingSetStatementContext<String> ctx) throws SQLException > { > ctx.statement().setString(ctx.index(), ctx.value()); > } > > @Override > public void get(BindingGetResultSetContext<String> ctx) throws SQLException > { > throw new SQLFeatureNotSupportedException(); > } > > @Override > public void get(BindingGetStatementContext<String> ctx) throws SQLException > { > throw new SQLFeatureNotSupportedException(); > } > > @Override > public void set(BindingSetSQLOutputContext<String> ctx) throws SQLException > { > throw new SQLFeatureNotSupportedException(); > } > > @Override > public void get(BindingGetSQLInputContext<String> ctx) throws SQLException { > throw new SQLFeatureNotSupportedException(); > } > } > > > Interested to hear any feedback about my choice to throw exceptions for > most of the overridden methods and my approach of not using the converter > at all. > > On Wednesday, June 26, 2019 at 12:09:37 AM UTC-7, Lukas Eder wrote: >> >> >> >> On Wed, Jun 26, 2019 at 3:31 AM John Bai <[email protected]> wrote: >> >>> >>> When I pretty print the SQL from a select with a >>> .where(EVENTS.IP_ADDRESS.eq("4.2.2.1")) following these instructions, I see >>> this: >>> >>> where ( >>> `events`.`ip_address` = INET6_ATON(?) >>> ) >>> >>> What do I need to change in order to get this working? Thanks! >>> >> >> >> That looks like what I understood you wanted. What's not working about >> this? >> > -- > You received this message because you are subscribed to the Google Groups > "jOOQ User Group" 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/jooq-user/1aa3f828-5db3-479a-bd84-02c80818922e%40googlegroups.com > <https://groups.google.com/d/msgid/jooq-user/1aa3f828-5db3-479a-bd84-02c80818922e%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "jOOQ User Group" 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/jooq-user/CAB4ELO6FcBMFwbK9UQZZBJ54%2BQYpze18KZ8pZ2BUoZh-u8nCMw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
