Description
If the case-when expression has two branches which returns string literal,redundant white space will append to the short string literal after the ReduceExpressionsRule. For example:
case when id>0 then 'a' else 'abc' end
will actually be convert to
case when id>0 then 'a ' else 'abc' end
The reason is that the type of 'a' is CHAR(1),but CHAR(3) for 'abc',so the return type of the case-when is CHAR(3). The RexBuilder#ensureType() method append a cast convertion for 'a' to cast it to CHAR(3) type.The ReduceExpressionsRule execute the cast convertion which fill two whilte space to 'a'.
Attachments
Issue Links
- is related to
-
CALCITE-1199 Incorrect trimming of CHAR when performing cast to VARCHAR
- Closed
-
CALCITE-2321 The type of a union of CHAR columns of different lengths should be VARCHAR (based on a conformance setting)
- Closed
- relates to
-
CALCITE-4590 Incorrect query result with fixed-length string
- Open