db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mamta Satoor" <msat...@gmail.com>
Subject DERBY-1478 : Making the correct collation type available in CreateTableNode for character string type columns
Date Wed, 04 Apr 2007 19:07:31 GMT

I just finished committing a patch (revision 525568) which has added
collation type and collation derivation to DataTypeDescriptor and there are
apis to set and get those values out of DTDs.

As a next step on language based ordering Jira entry, I want to tackle
CREATE TABLE. Create table should pick up the collation requested by the
user at create database time and use that for character string type columns.
I have not though much about it and going to start researching into it. But
what is coming to my mind is that I can write a new api in DataDictionary to
return the right collation type (UCS_BASIC/TERRITORY_BASED) for user defined
tables and CREATE TABLE will use that collation type to set into DTDs.

I am not sure if that will cause a problem with system tables because I
don't know if system table creation goes through CREATE TABLE node. If they
do not, then I think what I am suggesting will work. System table creations
will need to make another api call on DataDictionary which will return the
collation type for character string types associated with system schema,
which is always UCS_BASIC. Another alternative is to hard code UCS_BASIC for
system table columns wherever they get created but I think it will be better
to have one central location to get both user and system collation types.

So, 2 new apis in DataDictionary
public int getCollationTypeForPersistentUserCharacterColumns() - this will
return value based on collation property
public int getCollationTypeForPersistentSystemCharacterColumns() - this will
return hard coded UCS_BASIC.

One improvement could be to have a single api in DataDictionary and pass the
user schema vs system schema flag to it and have DataDictionary check that
flag and return the correct collation.
public int getCollationType(boolean systemSchema) - if systemSchema true
then return UCS_BASIC, if systemSchema false, then return collation type
based on collation property.

Does anyone have an opinion on if I am on the right track?


View raw message