Mamta Satoor wrote:

What I am proposing is to change the comparable method from type 1 to type
2. The reason for this is comparable method for character types should also
check the collation type and derivation while deciding whether the method
should return true or false. But since the collation information is not
associated with TypeId, we need to pass the TypeDescriptors of both the
types that need to be compared. In order to do this, I propose the
comparable method to change as follows

boolean    comparable(
      DataTypeDescriptor leftType,
      DataTypeDescriptor rightType,
      boolean forEquals,
      ClassFactory cf);

This change would require that all the implementation of TC change and all
the callers of this method should change too.

I spent some time looking at this approach and it seems pretty well contained: a search for "comparable" in the codeline shows that aside from the TypeCompiler classes themselves, only a few other files would be affected. I tried to think some of alternative approaches but none seemed as contained as the one you suggest here.

----

On a completely different note, while looking at the relevant classes I noticed that we instantiate the non-collator character types (ex. SQLChar) in the "getNull()" method of TypeId. Do you have plans to update that piece of code to account for collator types? Are any changes needed there? I searched the wiki page for "TypeId" but nothing came up.

And similarly, we instantiate the non-collator character types in the XMLSerialize() method of iapi/types/XML.java. While XML values themselves are not orderable/comparable with any other values (and thus collation should not be a problem), the result of an XMLSERIALIZE operator is a normal SQL character value, which can be compared. So will the code in XML.XMLSerialize() have to be updated to account for collation? My guess is that XMLSERIALIZE can be characterized in the same way as the CHAR and VARCHAR functions (number 6 on the wiki page):

  [XMLSERIALIZE] behavior can be defined as similar to CAST ie, the result
  character string of [XMLSERIALIZE] will have the same collation as current
  schema's character set. The collation derivation will be implicit.

Does that sound right?

Sorry if that's a tad off-topic...

Army

Reply via email to