Re: JDBC and inet type - Mailing list pgsql-general

From Tim Smith
Subject Re: JDBC and inet type
Date
Msg-id CA+HuS5E_dOczfAKnrO_2yLfrA2sXOiNLF6FkJCnOpFUPXW310Q@mail.gmail.com
Whole thread Raw
In response to Re: JDBC and inet type  (Bill Moran <wmoran@potentialtech.com>)
List pgsql-general
Great, thanks!

On 4 December 2015 at 12:17, Bill Moran <wmoran@potentialtech.com> wrote:
> On Fri, 4 Dec 2015 09:41:24 +0000
> Tim Smith <randomdev4+postgres@gmail.com> wrote:
>
>> When I use "preparedStatement.setString(5,ip);" to send values to a
>> stored function, it obviously gets sent to postgres as "character
>> varying".
>>
>> Postgres obviously complains loudly and says " Hint: No function
>> matches the given name and argument types. You might need to add
>> explicit type casts.".
>>
>> What is the appropriate workaround ?
>
> You can define param 5 as varchar in your query, as Rob suggests:
>
> CREATE FUNCTION some_function(int, int, int, int, int, varchar) ...
>
> Then cast the 5th parameter to INET within your function.
>
> You can also cast the value in your SQL.
>
> sql = "SELECT some_function($, $, $, $, $::INET)"; ...
>
> You could also create an Inet class in Java and implement the
> SQLData interface, then use setObject() instead of setString().
> It doesn't appear as if anyone has done this yet, but it would
> be nice if it were incluced in the JDBC driver.
>
> The first answer is probably best for stored procedures, as it
> simplifies things down the road. The second solution is more
> universal, as it works for non-function-calling SQL as well.
> The third solution is probably _really_ the correct one, from
> a pedantic standpoint, but it's a bit more work to implement.
>
> --
> Bill Moran


pgsql-general by date:

Previous
From: Craig Ringer
Date:
Subject: Re: BDR: ALTER statement hanging
Next
From: Tony Nelson
Date:
Subject: Interrupted streaming replication