Hi,
We used to face the same problem overriding the default behavior including operand type checker of a standard operator. If you are using Calcite as an individual planner (or other circumstances you are not taking the Calcite's default planner tool org.apache.calcite.prepare.PlannerImpl) and using built-in validator implementation (org.apache.calcite.sql.validate.SqlValidatorImpl), you should set validator.setIdentifierExpansion(true) after creating your own validator, this way the overrided operators would be retained by relational algebras. Best, Hongze At 2019-02-07 08:24:00, "Michael Mior" <mm...@apache.org> wrote: >There are two main steps you'd have to take here. Firstly, you'd have >to change the operand types accepted by CONCAT in SqlStdOperatorTable. >Second, you'd have to redefine the CONCAT method in RexImpTable to >something that actually builds the string instead of just using >String.concat. > >Unfortunately, I don't think you can override the behaviour of >built-in operators without making your build of Calcite. >-- >Michael Mior >mm...@apache.org > >Le mer. 6 févr. 2019 à 17:07, Paul Trepagnier <p...@trepagnier.org> a écrit : >> >> I am using Calcite to try to be a federated database server for a BI tool. >> This BI tool is sending queries that I cannot change at the source. So, I >> am trying to do some customizations within Calcite to handle these >> queries. >> >> For instance, one of the queries tries to do a sql concatenate between a >> string and an integer. Calcite throws an exception for >> this: org.apache.calcite.sql.validate.SqlValidatorException: Cannot apply >> '||' to arguments of type '<VARCHAR> || <INTEGER>'. Supported form(s): >> '<STRING> || <STRING>' >> >> Is there an easy way to override the behavior of the concatenate operator? >> I am new to Calcite, so I do not know what my options are for customizing >> the planning/validation behavior. If someone is able to point me in the >> right direction, I would greatly appreciate it. >> >> Thank you for any help you can provide, >> >> Paul