Yes, should be true, and yes, all values in a CHAR_ARRAY should be the same width (with null byte padding). Although at the type level we don't know how big the CHAR is, we do know that it's a fixed width. At the next level up in the stack, PDatum & Expression, we do know the length, though. For example, for columns we know based on getByteSize.

We use this isFixedWidth to determine whether or not to put a separator/terminal byte after the value in the row key. For CHAR types, we don't need to do that, but can instead use a fixed offset.

Point me to the code that's causing problems. It's likely that the getByteSize on the expression should be used instead of on the type.