Manjula G Kutty wrote:

>
> I'm seeing a difference in behaviour of derby from version 10.1 and 10.2.

I think this difference is ok.  See below

> ij> select id,date from inbox where id = true;
> ERROR 42X01: Syntax error: true.
> ij> select id from inbox where id = true;
> ERROR 42X01: Syntax error: true.
>
> This is the expected behaviour since the id colum is a bigint
>
[snip]

> But on 10.2 instead of giving me a syntax error the query returns
> rows..WHY?
>
The reason for the syntax error in 10.1  is not related to the column
being bigint. It is because  the type boolean  was not supported, so 
specifying "where true"  or "where false"   was not legal.   In 10.2 we
added support for this type (DERBY-499).

In a where clause you always are going to have some boolean expression,
but in 10.1 that had to be some expression  that evaluated to true or
false,   so if you wanted to specify "where true", you had to choose
some expression that was always true like "where 1=1"  or in this case
the less obvious "where 0<3".   For false in 10.1, you might choose
"where 1=0".

I don't think "where true"  adds much to to this query.  "select id from
inbox" would also return all the rows.
"delete from inbox where true" would be a much more interesting and some
days tempting prospect.

Kathey


Reply via email to