Thread: Re: [GENERAL] Invalid unicode in COPY problem

Re: [GENERAL] Invalid unicode in COPY problem

From
"John Hansen"
Date:
Tatsuo Ishii wrote:
> Sent: Sunday, May 08, 2005 12:01 PM
> To: linux@alteeve.com
> Cc: pgsql-general@postgresql.org; pgsql-hackers@postgresql.org
> Subject: Re: [HACKERS] [GENERAL] Invalid unicode in COPY problem
>
> We have developed patches which relaxes the character
> validation so that PostgreSQL accepts invalid characters. It
> works like this:

That is just plain 100% wrong!!
Under no circumstances should there be invalid data in a database.
And if you're trying to make a database of invalid data, then at
least encode it using a valid encoding.

In fact, I've proposed strengthening the validation routines for UTF-8.

... John

Re: [GENERAL] Invalid unicode in COPY problem

From
Tom Lane
Date:
"John Hansen" <john@geeknet.com.au> writes:
> Tatsuo Ishii wrote:
>> We have developed patches which relaxes the character
>> validation so that PostgreSQL accepts invalid characters.

> That is just plain 100% wrong!!

That was my first reaction too.  Why would this be a good idea?
If someone does want an encoding-agnostic database, they can
set it as SQL_ASCII.

            regards, tom lane

Re: [GENERAL] Invalid unicode in COPY problem

From
Tatsuo Ishii
Date:
> Tatsuo Ishii wrote:
> > Sent: Sunday, May 08, 2005 12:01 PM
> > To: linux@alteeve.com
> > Cc: pgsql-general@postgresql.org; pgsql-hackers@postgresql.org
> > Subject: Re: [HACKERS] [GENERAL] Invalid unicode in COPY problem
> >
> > We have developed patches which relaxes the character
> > validation so that PostgreSQL accepts invalid characters. It
> > works like this:
>
> That is just plain 100% wrong!!
>
> Under no circumstances should there be invalid data in a database.
> And if you're trying to make a database of invalid data, then at
> least encode it using a valid encoding.
>
> In fact, I've proposed strengthening the validation routines for UTF-8.

Actually I myself thought as you are before. Later I found that it was
not so good idea. People already have invalid encoded data in their
precious database and have very hard time to migrate to newer version
of PostgreSQL because of encoding validation.

Think about this kind of situation:

There is a table t1(member_id integer primary key, member_name text,
address text, phone text, email text). I have to reach each member by
either adress, phone or email. Unfortunately some of address field
have wrong encoded data. In this case I will use phone or email to
reach them.

Now I need to upgrade to newer PostgreSQL within 1 day. I know I have
to fix wrong encoded field but it will take more than 1 day. So I
would like to import the data first then fix wrong encoded field on
running database since I can reach members by phone or email even with
wrong encoded address field...

I saw this kind of situation in the real world and that's why we
developed the patches.
--
Tatsuo Ishii

Re: [GENERAL] Invalid unicode in COPY problem

From
Madison Kelly
Date:
John Hansen wrote:
> Tatsuo Ishii wrote:
>
>>We have developed patches which relaxes the character
>>validation so that PostgreSQL accepts invalid characters. It
>>works like this:
>
>
> That is just plain 100% wrong!!
> Under no circumstances should there be invalid data in a database.
> And if you're trying to make a database of invalid data, then at
> least encode it using a valid encoding.
>
> In fact, I've proposed strengthening the validation routines for UTF-8.
>
> ... John
>

   Under most circumstances I would agree with you completely. In my
case though I have to decide between risking a loss of a user's data or
attempt to store the file name in some manner that would return the same
name used by the file system.

   The user (or one of his/her users in the case of an admin) may be
completely unaware of the file name being an invalid unicode name. The
file itself though may still be quite valid and contain information
worthy of backing up. I could notify the user/admin that the name is not
valid but there is no way I could rely on the name being changed. Given
the choices, I would prefer to attempt to store/use the file name with
the invalid unicode character than simply ignore the file.

   Is there a way to store the name in raw binary? If so, would this not
be safe because to postgresql it should no longer matter what data is or
represents, right? Maybe there is a third option I am not yet concidering?

Madison

--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Madison Kelly (Digimer)
TLE-BU, The Linux Experience; Back Up
http://tle-bu.thelinuxexperience.com
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Re: [GENERAL] Invalid unicode in COPY problem

From
Tino Wildenhain
Date:
Am Sonntag, den 08.05.2005, 14:30 +0900 schrieb Tatsuo Ishii:
...
> Actually I myself thought as you are before. Later I found that it was
> not so good idea. People already have invalid encoded data in their
> precious database and have very hard time to migrate to newer version
> of PostgreSQL because of encoding validation.
...
> Now I need to upgrade to newer PostgreSQL within 1 day. I know I have
> to fix wrong encoded field but it will take more than 1 day. So I
> would like to import the data first then fix wrong encoded field on
> running database since I can reach members by phone or email even with
> wrong encoded address field...

Well, if you are so in a hurry you better not migrate. Postgres is
proud of validating the input and to have no invalid data. So if
you have invalid data, better fix it.

> I saw this kind of situation in the real world and that's why we
> developed the patches.

Why not developing a helper for contrib to help reencoding the
database instead?

Regards
Tino


Re: [GENERAL] Invalid unicode in COPY problem

From
Oliver Jowett
Date:
Madison Kelly wrote:

>   Is there a way to store the name in raw binary?

Yes: bytea.

-O