Mamta Satoor wrote:
Dan, I understand your concern about changes required in many places in the code to make sure that we get write instance of character datatype ie SQLChar vs CollatorSQLChar. But I don't understand your following comment
"My first thought is that this doesn't scale and doesn't seem like an OO
solution. To think ahead this means any addition collation style will
also add four new datatypes, which means there could easily be sixteen
or more datatypes to represent the characters. Each datatype will come
with some code cost, classes and/or methods per type."
For any additional collation styles, CollatorSQLChar will just need to be instantiated with proper RuleBasedCollator object for that collation style. We wouldn't need to create 4 new datatype for every new collation style introduced in Derby. Can you elaborate more on what you mean by your comment above.

A type within Derby is made of up of more that the class that represents its value. A type compiler, data type object, methods in DataValueFactory that return that type. All of these would have to setup so that the new internal types for a specific collation can be handled.

I'm guessing at how you plan to implement this, but assume that a case-insensitive collation is later added based on lower:

1) need new format identifiers, since current plan is to define type+collation only by format identifier

 2) thus two options at the CollatorSQLChar level
a) have a variable per instance that defines the format id (additional runtime overhead) b) new class that extends CollatorSQLChar and returns different format id (additional footprint)

3) 1 leads to new methods in DataValueFactory to get a DataValueDescriptor of the correct type, e.g. I assume you are planning to add getLocaleChar(String val) etc., now need getLowerChar(String val) etc.

4) More logic and/or classes in the compilation and type system to handle these new types that I haven't thought in detail about.

Now some of the code could be shared, but this approach would make it so that adding a new collation has to go create four new internal types and ensure all code handles them correctly.

HTH,
Dan.


Reply via email to