Norman Jordan created CALCITE-6550: -------------------------------------- Summary: Improve SQL function overloading Key: CALCITE-6550 URL: https://issues.apache.org/jira/browse/CALCITE-6550 Project: Calcite Issue Type: Improvement Components: core Reporter: Norman Jordan Assignee: Norman Jordan
All SQL functions across all SQL libraries as well as the standard functions are used as keys in a Map (in the class {*}RexImpTable{*}). The hashcode and equals methods currently only look at the name, kind and class. [https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/sql/SqlOperator.java#L424] [https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/sql/SqlOperator.java#L439] This causes a few problems: * Some functions may have the same name and kind but different sets of parameters * Two different SQL libraries may have functions with the same name and kind (and even parameters) but have different implementations. The current work around is to create new anonymous classes when needed to avoid collisions in the Map. Here is an example. https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/sql/fun/SqlLibraryOperators.java#L578 The hashcode and equals methods should consider more information, such as the parameters as well as some way to differentiate similar functions in different libraries. -- This message was sent by Atlassian Jira (v8.20.10#820010)