Thread: update field with lf chars problem

update field with lf chars problem

From
Antoine
Date:
Hi,
We are running 8.01.102 (pg 8.1.1) and we have a quite annoying error.
We are able to insert rows that contain line feed characters (and
maybe crlf too) into a varchar(14) field but when we attempt to update
the same row via odbc we get an error. This happens even though we are
setting the field to null.
Does anyone have any info on this?
Cheers
Antoine

--
This is where I should put some witty comment.

Re: update field with lf chars problem

From
Ludek Finstrle
Date:
> We are running 8.01.102 (pg 8.1.1) and we have a quite annoying error.

It's quite old version. Is there some reason to not using newer
version?

> We are able to insert rows that contain line feed characters (and
> maybe crlf too) into a varchar(14) field but when we attempt to update
> the same row via odbc we get an error. This happens even though we are

What kind of error. The error message could clarify the problem a little
bit.

> setting the field to null.
> Does anyone have any info on this?

Not at first sight. Does LF <-> CRLF option take some effect?

Regards,

Luf

Re: update field with lf chars problem

From
Antoine
Date:
On 20/07/06, Ludek Finstrle <luf@pzkagis.cz> wrote:
> > We are running 8.01.102 (pg 8.1.1) and we have a quite annoying error.
>
> It's quite old version. Is there some reason to not using newer
> version?
>
> > We are able to insert rows that contain line feed characters (and
> > maybe crlf too) into a varchar(14) field but when we attempt to update
> > the same row via odbc we get an error. This happens even though we are
>
> What kind of error. The error message could clarify the problem a little
> bit.

The message in French is:
La mise à jour basée sur une requête a échouée car la ligne à mettre à
jour est introuvable.
Which translates roughly to English (sorry couldn't find the proper
translation):
The query-based update failed because the row to update cannot be found.

The column in question is NOT in the primary key, and this only
happens when the row is created with lf (and probably crlf) in it -
there is no problem setting it to null in other circumstances.

>
> > setting the field to null.
> > Does anyone have any info on this?
>
> Not at first sight. Does LF <-> CRLF option take some effect?

That seems to fix it. I guess I understand why... I would still
consider it a bug though - shouldn't the driver take into account the
fact that it is doing this conversion when looking for the row?
Cheers
Antoine

--
This is where I should put some witty comment.

Re: update field with lf chars problem

From
Ludek Finstrle
Date:
> >> We are able to insert rows that contain line feed characters (and
> >> maybe crlf too) into a varchar(14) field but when we attempt to update
> >> the same row via odbc we get an error. This happens even though we are
> >
> >What kind of error. The error message could clarify the problem a little
> >bit.
>
> The message in French is:
> La mise à jour basée sur une requête a échouée car la ligne à mettre
> à
> jour est introuvable.
> Which translates roughly to English (sorry couldn't find the proper
> translation):
> The query-based update failed because the row to update cannot be found.
>
> The column in question is NOT in the primary key, and this only
> happens when the row is created with lf (and probably crlf) in it -
> there is no problem setting it to null in other circumstances.
>
> >> setting the field to null.
> >> Does anyone have any info on this?
> >
> >Not at first sight. Does LF <-> CRLF option take some effect?
>
> That seems to fix it. I guess I understand why... I would still
> consider it a bug though - shouldn't the driver take into account the
> fact that it is doing this conversion when looking for the row?

When driver do the transparent LF <-> CRLF conversion it has to
change LF <-> CRLF in all statements (in all parts of statements).
If you add the rows with same setting of LF <-> CRLF so it may works ok.

BTW noone will fix 08.01 and older versions.

Regards,

Luf