Обсуждение: [GENERAL] JDBC +CIDR (fwd)

Поиск
Список
Период
Сортировка

[GENERAL] JDBC +CIDR (fwd)

От
Kris Jurka
Дата:
What kind of solution can we offer for this problem?  Do we really need to
make PGobject extensions for every type?  Do we really want to force
people to have to create these for all user defined types?

Kris Jurka

---------- Forwarded message ----------
Date: Tue, 12 Oct 2004 17:54:41 +0200
From: Johann Robette <jrobette@onyme.com>
To: pgsql-sql@postgresql.org
Cc: pgsql-general@postgresql.org
Subject: [GENERAL] JDBC +CIDR

Hi,
I've a table containing a CIDR field.
I'm using an EJB to create a new record in this table.
I don't know how to pass the CIDR value. I tried by String but I get
this error :
                javax.ejb.FinderException: Find failed:
java.sql.SQLException: ERROR: operator does not exist: cidr = text
So how should I do?

Thanks in advance.

Re: [GENERAL] JDBC +CIDR (fwd)

От
Oliver Jowett
Дата:
Kris Jurka wrote:
> What kind of solution can we offer for this problem?  Do we really need to
> make PGobject extensions for every type?  Do we really want to force
> people to have to create these for all user defined types?

Well, you don't have to create a subclass, I think, if you don't mind
doing the parsing in the application:

  PGobject dummy = new PGobject();
  dummy.setType("cidr");
  dummy.setValue("192.168.0.0/24");
  statement.setObject(1, dummy, Types.OTHER);

Alternatively, does setString() + "?::cidr" work?

-O

Re: [GENERAL] JDBC +CIDR (fwd)

От
Kris Jurka
Дата:

On Fri, 22 Oct 2004, Oliver Jowett wrote:

> Kris Jurka wrote:
> > What kind of solution can we offer for this problem?  Do we really need to
> > make PGobject extensions for every type?  Do we really want to force
> > people to have to create these for all user defined types?
>
> Well, you don't have to create a subclass, I think, if you don't mind
> doing the parsing in the application:

Right, for some reason I thought PGobject was abstract.  It's still not
great to force them to include postgresql specific code in their app, but
I don't see a way around it without abandoning the goal of removing the
use oid zero.

> Alternatively, does setString() + "?::cidr" work?

In this case yes, but not in general.  The driver types it as text so this
really comes out as ?::text::cidr which is different from unknown -> cidr.
In this case an explicit cast is available, but this won't be true (by
default) of other types.  Consider:

jurka=# select '(1,2),(3,4)'::text::box;
ERROR:  cannot cast type text to box

Kris Jurka