Re: Shouldn't non-MULTIBYTE backend refuse to start in MB database? - Mailing list pgsql-hackers

From Tatsuo Ishii
Subject Re: Shouldn't non-MULTIBYTE backend refuse to start in MB database?
Date
Msg-id 20010216111439L.t-ishii@sra.co.jp
Whole thread Raw
In response to Re: Shouldn't non-MULTIBYTE backend refuse to start in MB database?  (Peter Eisentraut <peter_e@gmx.net>)
Responses Re: Shouldn't non-MULTIBYTE backend refuse to start in MB database?  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
> Tom Lane writes:
> 
> > Oh, I see.  So the question still remains: can a MULTIBYTE-aware backend
> > ever use a sort order different from strcmp() order?  (That is, not as
> > a result of LOCALE, but just because of the non-SQL-ASCII encoding.)
> 
> According to the code, no, because varstr_cmp() doesn't pay attention to
> the multibyte status.  Presumably strcmp() and strcoll() don't either.

Right.

> > Actually there are more complicated cases that would depend on more
> > features of the encoding than just sort order.  Consider
> >
> >     CREATE INDEX fooi ON foo (upper(field1));
> >
> > Operations involving this index will misbehave if the behavior of
> > upper() ever differs between MULTIBYTE-aware and non-MULTIBYTE-aware
> > code.  That seems pretty likely for encodings like LATIN2...
> 
> Of course in the most general case this is a problem, because a function
> can be implemented totally differently depending on any old #ifdef or
> other external factors.
> 
> If the multibyte users think this check is okay, then I don't mind, since
> it's usually what the users would want anyway.  I'm just pointing out the
> technical issues.

Right. However, Tom's point is a little bit different, I guess.

As far as I know, most builtin functions taking string data types as
their aruguments would behave same with/without MULTIBYTE.  As far as
I know exceptions include:

char_length
quote_ident
quote_literal
ascii
to_ascii

So, for example, 

CREATE INDEX fooi ON foo (char_length(field1));

would behave differently with/without MULTIBYTE if the encoding for
the database is not "single byte type".
--
Tatsuo Ishii


pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Apology for ODBC mistakes
Next
From: Tom Lane
Date:
Subject: Re: Shouldn't non-MULTIBYTE backend refuse to start in MB database?