Today, when we evaluate properties of the expression, rules to calculate metadata are scattered across the Item class hierarchy. The goal is to move all functionality responsible for evaluation of result metadata to a central location, separated from the Item hierarchy. For each Item node there will be an associated metadata object that contain the type information (e.g., sql type, length, # of decimals, character set) for the result of the operation represented by this node. The metadata class will provide an API for accessing the type information and for determining result metadata based on the metadata of the operands of the operation. Similarly, metadata objects with type information will be associated with Field objects and values.