db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mamta Satoor" <msat...@gmail.com>
Subject Re: Should COLLATION attribute related code go in BasicDatabase?
Date Thu, 15 Mar 2007 08:55:32 GMT
I have a review package almost ready for COLLATION attribute. Hoping to post
it at somepoint during the day.

Mamta


On 3/14/07, Mamta Satoor <msatoor@gmail.com> wrote:
>
> Ok, so I spent some time trying to move COLLATION attribute code from
> DataDictionaryImpl.boot to DataValueFactoryImpl.boot. I thought I could
> simply put following piece of code in DataValueFactoryImpl.boot method and
> the Property.COLLATION will get saved in the properties conglomerate. That
> is not happening
>        if (create) {
>            String userDefinedCollation = properties.getProperty(
> Attribute.COLLATION);
>            if (userDefinedCollation == null)
>             userDefinedCollation = Property.UCS_BASIC_COLLATION ;
>            else {//Invalid value handling
>             if (!userDefinedCollation.equalsIgnoreCase(
> Property.UCS_BASIC_COLLATION)
>               && !userDefinedCollation.equalsIgnoreCase(
> Property.TERRITORY_BASED_COLLATION ))
>              throw StandardException.newException(
> SQLState.INVALID_COLLATION, userDefinedCollation);
>             }
>             properties.setProperty(Property.COLLATION
> ,userDefinedCollation);
>       }
>
> I verified that property is not getting  put in properties conglomerate by
> trying following after database creation
> VALUES SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.collation')
> The above sql returns null rather than returning UCS_BASIC or
> TERRITORY_BASED_COLLATION. The other properties in Derby get saved by going
> through TransactionControllerInstance.setProperty method but I can't use
> that because Store module has not been booted yet and hence I get a
> TransactionControllerInstance.
>
> One way to get around this is to let BasicDatabase do the COLLATION
> attribute reading and putting the property in PropertyConglomerate through
> TransactionControllerInstance.setProperty. And then BaseDatabase can call
> a method on DataValueFactory to set the collator which should be used for
> collation if user has requested territory based collation, ie going back to
> what I had proposed in my first mail in this thread.
>
> Any feedback? May be there is another way to read COLLATION attibute and
> save it in DataValueFactory.boot which I am not aware of.
>
> thanks,
> Mamta
>
>  On 3/13/07, Mamta Satoor <msatoor@gmail.com> wrote:
> >
> > That's right. The code to read COLLATION attribute can simply live in
> > DataValueFactory.boot rather than in BasicDatabase.boot method. I will
> > work on what's outline in this email thread.
> >
> > thanks,
> > Mamta
> >
> >
> >  On 3/13/07, Daniel John Debrunner <djd@apache.org > wrote:
> > >
> > > Mamta Satoor wrote:
> > > > Hi,
> > > >
> > > > Based on the discussion in DERBY-2336 (Enable collation based
> > > ordering
> > > > for CHAR data type.), we want to move towards making
> > > DataValueFactory
> > > > keep track of locale related stuff. In order to move in that
> > > direction,
> > > > I think the knowledge that user has requested territory based
> > > collation
> > > > should also go in DataValueFactory.
> > >
> > > I wonder if all the collation attribute related code should be self
> > > contained in DataValueFactory?
> > >
> > > Dan.
> > >
> > >
> > >
> >
>

Mime
View raw message