Thread: Error when comparing an integer to an empty string.

Error when comparing an integer to an empty string.

From
David Pradier
Date:
Hi!

I'm new on this list, my name is David Pradier, and i'm french.

I'm currently trying the new postgresql 7.3rc1, and i've noticed that if
i compared an integer to an empty string, i ran in an error.

Example :
=# select nom_comm from operation where id_operation = '';
ERROR:  pg_atoi: zero-length string

\d operation gives :
id_operation | integer | not null default nextval('"operation_type_id_operation_seq"'::text)

Is this a bug or a feature of the new 7.3 version ?
Is there a purpose ?

Thanks for your help.

Best regards,
David.
-- 
dpradier@apartia.fr


Re: Error when comparing an integer to an empty string.

From
Bruno Wolff III
Date:
On Thu, Nov 21, 2002 at 17:30:10 +0100, David Pradier <dpradier@apartia.fr> wrote:
> Hi!
> 
> I'm new on this list, my name is David Pradier, and i'm french.
> 
> I'm currently trying the new postgresql 7.3rc1, and i've noticed that if
> i compared an integer to an empty string, i ran in an error.
> 
> Is this a bug or a feature of the new 7.3 version ?
> Is there a purpose ?

What number do you expect '' to represent?

Probably you either want to use:
= '0'
or
is null
depending on what you are really trying to do.


Re: Error when comparing an integer to an empty string.

From
Louis-David Mitterrand
Date:
On Thu, Nov 21, 2002 at 11:07:55AM -0600, Bruno Wolff III wrote:
> On Thu, Nov 21, 2002 at 17:30:10 +0100,
>   David Pradier <dpradier@apartia.fr> wrote:
> > Hi!
> > 
> > I'm new on this list, my name is David Pradier, and i'm french.
> > 
> > I'm currently trying the new postgresql 7.3rc1, and i've noticed that if
> > i compared an integer to an empty string, i ran in an error.
> > 
> > Is this a bug or a feature of the new 7.3 version ?
> > Is there a purpose ?
> 
> What number do you expect '' to represent?
> 
> Probably you either want to use:
> = '0'
> or
> is null
> depending on what you are really trying to do.

The point David was trying to make is: 

with 7.2:
template1=# select 1 = ''; ?column? ---------- f(1 row)


with 7.3rc1:
template1=# select 1 = '';ERROR:  pg_atoi: zero-length string


Is this change of behavior intentional?

-- HIPPOLYTE: Trézène m'obéit. Les campagnes de Crète           Offrent au fils de Phèdre une riche retraite.
                             (Phèdre, J-B Racine, acte 2, scène 2)
 


Re: Error when comparing an integer to an empty string.

From
Neil Conway
Date:
Louis-David Mitterrand <vindex@apartia.org> writes:
> with 7.2:
> 
>     template1=# select 1 = '';
>      ?column? 
>     ----------
>      f
>     (1 row)
> 
> 
> with 7.3rc1:
> 
>     template1=# select 1 = '';
>     ERROR:  pg_atoi: zero-length string
> 
> 
> Is this change of behavior intentional?

Yes.

I raised it as a possible point of backwards incompatibility at the
time the change was made, but the consensus was that this behavior was
worth getting rid of.

Cheers,

Neil

-- 
Neil Conway <neilc@samurai.com> || PGP Key ID: DB3C29FC



Re: Error when comparing an integer to an empty string.

From
Tom Lane
Date:
Louis-David Mitterrand <vindex@apartia.org> writes:
> The point David was trying to make is: 
> with 7.2:
>     template1=# select 1 = '';
>      ?column? 
>     ----------
>      f
>     (1 row)

> with 7.3rc1:
>     template1=# select 1 = '';
>     ERROR:  pg_atoi: zero-length string

> Is this change of behavior intentional?

Yes.
        regards, tom lane


Re: Error when comparing an integer to an empty string.

From
David Pradier
Date:
> > i compared an integer to an empty string, i ran in an error.
> > Is this a bug or a feature of the new 7.3 version ?
> > Is there a purpose ?
> 
> What number do you expect '' to represent?
> Probably you either want to use:
> = '0'
> or
> is null
> depending on what you are really trying to do.

It's because it comes from a perl building of the request.
Typically : '$youpee'
When $youpee is undef, it's no problem in 7.2, and the request returns
false.
Now it raises an error.
(Ok, i've understood it was on purpose ; i give these info only for the
background :-)

Best regards,
David

-- 
dpradier@apartia.fr