Calcite allows function to be overridden at validation step. To be more specific, users can provide their SqlOperatorTable, and, at validation step, their SqlOperatorTable will be called (method: lookupOperatorOverloads) to get a overriding function. However, so far, SqlOperator (e.g., +, - , *, etc.) does not have this mechanism yet.
Since other systems (e.g., Apache Drill) would have more flexible type-checks for SqlOperator's operands, this mechanism is necessary for those systems to pass through the validation step.