Thread: Error when comparing an integer to an empty string.
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
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.
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)
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
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
> > 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