On Fri, 23 Apr 2004, Stephan Szabo wrote:
> On Fri, 23 Apr 2004, Shachar Shemesh wrote:
>
> > Stephan Szabo wrote:
> >
> > >I've tried just changing the parser to unconditionally casefold to upper.
> > >First thing that happens is that initdb breaks. In addition, you have
> > >potential issues with comparisons against the catalog's versions of
> > >standard functions as such if you allow the case folding to be changed
> > >after the catalogs are setup.
> > >
> > >
> > That's not the migration path I was thinking of.
> >
> > What I was thinking of was:
> > 1. Have a setting, probably per-session. Per database works too.
> > 2. Aside from the folder upper and folder lower, have a third option.
> > This is "fold upper, if fails, fold lower. If succeeds, issue a
> > warning". This should allow programs that rely on the folding (such as
> > initdb) to be debugged during the transition period.
>
> If you can do this in a clean fashion without tromping all around the
> code, that'd be reasonable, however, istm that you'd need to either
> pre-fold both directions from the given identifier string and pass an
> extra copy around or pass the original identifier and its quoted status
> and fold on use. I think either of these are likely to be very intrusive
> for what essentially amounts to a transitional feature.
>
> In addition, I'm not sure that this would always work in any case, since
> some of those usages may be quoted identifiers that were once generated
> from a case-folded string (for example, looking up a name in the catalogs
> and quoting it).
To clarify, I'm thinking about things where an application had gotten a
quoted name and is now trying to use it where the object's canonical name
was changed due to quoting changes. This only happens when quoting
is inconsistently applied, but that's most of the problem.