[ https://issues.apache.org/jira/browse/CALCITE-6383?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
ASF GitHub Bot updated CALCITE-6383: ------------------------------------ Labels: pull-request-available (was: ) > The class SameOperandTypeChecker is incorrectly documented > ---------------------------------------------------------- > > Key: CALCITE-6383 > URL: https://issues.apache.org/jira/browse/CALCITE-6383 > Project: Calcite > Issue Type: Bug > Components: core > Affects Versions: 1.36.0 > Reporter: Mihai Budiu > Priority: Minor > Labels: pull-request-available > > The SameOperandTypeChecker claims that it checks whether operands have the > same type (the class name suggests this, as does the JavaDoc). > {code:java} > /** > * Parameter type-checking strategy where all operand types must be the same. > */ > public class SameOperandTypeChecker implements SqlSingleOperandTypeChecker { > {code} > But the code does something this: > {code:java} > for (int i : operandList) { > if (prev >= 0) { > if (!SqlTypeUtil.isComparable(types[i], types[prev])) { > {code} > The documentation for isComparable says: > {code:java} > /** > * Returns whether two types are comparable. They need to be scalar types of > * the same family, or struct types whose fields are pairwise comparable. > {code} > Thus the class only checks that the operands have the same type *family*, not > the same *type*. > I am not sure what the right fix is, though, since changing the class name > would be a pretty big breaking change. But I suspect this confusion is a > source of a few bugs. An instance is [CALCITE-6382] -- This message was sent by Atlassian Jira (v8.20.10#820010)