Some functionality is applicable to a type regardless of a specific DataTypeDescriptor's attributes, thus methods for that functionality can be declared on TypeId instead of DataTypeDescriptor.

Some functionality on the other hand needs the attribute information as well, say the display length of a type is a function of its length/precision&scale and its underlying SQL type.

The TypeCompiler/TypeId split was due to an early plan to have a execute-only version of the technology, this never happened as there was no demand for it. One of the benefits of a SQL engine is the ability to execute arbitrary queries, which would not be available in an execute only version. Code cleanup could be done here which probably would decrease the footrprint of derby.

TypeCompiler (last edited 2009-09-20 22:11:57 by localhost)