Re: select * from mytable where myfield=null; - Mailing list pgsql-jdbc

From Dave Cramer
Subject Re: select * from mytable where myfield=null;
Date
Msg-id 1021370195.2628.46.camel@inspiron.cramers
Whole thread Raw
In response to Re: select * from mytable where myfield=null;  ("Hoanui Morangie" <hoanui@excite.com>)
List pgsql-jdbc
The solution is pretty straight forward here. For those who like the
behavior then just set the transform_null_equals = true option in the
postgresql.conf

The jdbc driver should never change the sql

Dave
On Tue, 2002-05-14 at 05:50, Hoanui Morangie wrote:
>  Hi,
>
> I understand that this behavior is a standard but agree with Bruno that it's nonsense. I have trouble with it in my
ownapplication. I use sql command like "select * from A where A.a=? and A.b=? and A.c=? and A.d=? and A.e=?". There are
fiveparameters in my query and each of them can be null! I can not create SQL command string for all possible
combinationsof null values so I have to build the query dynamically. Why then use prepared statement? 
>
> I doubt that anybody ever needed x=null in SQL command but it seems that my example is very common. There SHOULD be
someworkaround for that. But I agree that this is not topic for this list. 
>
> Hoanui
>
>
>
> --- On Mon 05/13, Barry Lind  wrote:
> > Bruno,
> >
> > No, the driver should never alter your SQL statement.  If you said '...
> > = ? ' it would be wrong to change this to ' ... is ? '.  How does the
> > driver know that you wanted this behavior.  (I know for example that
> > code I have written would break if the driver suddenly decided to try to
> > out guess what I intended).  This is the responsibility of the client
> > code to handle nulls appropriately for their application.  You will not
> > find the jdbc drivers for Oracle or MSSQL doing anything like this
> > either.
> >
> > --Barry
> >
> > Bruno Lamouret wrote:
> > > Hi, I agree with you when you say that '= null' isn't ANSI Standard.
> > > But the trouble is that the jdbc driver does this error.
> > > A query such as "select * from mytable where date=?"
> > becomes "select *
> > > from mytable where date=null"
> > > with the jdbc driver when we put a null value in the
> > preparedStatement
> > > while it should become
> > > "select * from mytable where date is null".
> > >
> > > am I right ?
> > >
> > > Thanks Bruno
> > >
> > >
> > > Barry Lind wrote:
> > >
> > >> This isn't really a jdbc question and would probably better be
> > >> addressed to pgsql-general.  The behavior you are now seeing is
> > ANSI
> > >> Standard behavior.  '= null' should always return false according
> > to
> > >> the standard.  In 7.2 this non-standard behavior was fixed.  You
> > will
> > >> see this behavior in all of the interfaces to postgres, not just
> > jdbc.
> > >>
> > >> There is a parameter in the postgresql.conf file that will revert
> > back
> > >> to the old buggy behavior (transform_null_equals = true).
> > >>
> > >> thanks,
> > >> --Barry
> > >>
> > >>
> > >> blamouret wrote:
> > >>
> > >>> Hi,
> > >>> I'm using Postgresql 7.2.1, with JBoss2.4.4. and jdk1.4
> > >>>
> > >>> Here is my table :
> > >>> id   |  date                   |   value
> > >>> -----+-------------------------+---------
> > >>>   1 | 2002-05-10 10:00:00:+02 |       5
> > >>>   2 |  (null)                 |      10
> > >>> ...
> > >>>
> > >>> With the jdbc driver, this query doesn't any result :
> > >>> Stmt = con.prepareStatement(select * from mytable where
> > date=?)
> > >>> Stmt.setNull(1,java.sql.Types.TIMESTAMP);
> > >>> Stmt.executeQuery();
> > >>>
> > >>> I think the jdbc driver transform the query on "select *
> > from mytable
> > >>> where date=null" and not "select * from mytable
> > where date is null".
> > >>>
> > >>> Il seems that select * from mytable where date=null was
> > supported by
> > >>> postgres before 7.0 version, but not with the 7.2.1
> > >>>
> > >>> How can i do ?
> > >>> thanks
> > >>> Bruno.
> > >>>
> > >>>
> > >>>
> > >>>
> > >>>
> > >>> ---------------------------(end of
> > broadcast)---------------------------
> > >>> TIP 4: Don't 'kill -9' the postmaster
> > >>>
> > >>
> > >>
> > >
> > >
> > >
> > >
> >
> >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 5: Have you checked our extensive FAQ?
> >
> > http://www.postgresql.org/users-lounge/docs/faq.html
> >
>
> ------------------------------------------------
> Join Excite! - http://www.excite.com
> The most personalized portal on the Web!




pgsql-jdbc by date:

Previous
From: "Hoanui Morangie"
Date:
Subject: Re: select * from mytable where myfield=null;
Next
From: "Marin Dimitrov"
Date:
Subject: Re: select * from mytable where myfield=null;