[
https://issues.apache.org/jira/browse/CALCITE-6383?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mihai Budiu resolved CALCITE-6383.
----------------------------------
Fix Version/s: 1.38.0
Resolution: Fixed
Resolved in
https://github.com/apache/calcite/commit/f55c59ab32d1222c3828eebd33190e3bcc1f855d
> 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
> Fix For: 1.38.0
>
>
> 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)