Hi Dmitry,

I think `SqlLibraryOperators` is designed to extend the standard operator
table, instead of
overriding. There is already an operator in `SqlStdOperatorTable`[1], the
error shows
that the parser still picks the one in `SqlStdOperatorTable`.

Besides that, '||' is hardcoded in the parser[2]. Hence it's not resolved
from the operator
table.

In my opinion, if you want to extends '||' to support ARRAY, you may need
to change the
definition in `SqlStdOperatorTable`[1] to achieve that.

[1]
https://github.com/apache/calcite/blob/main/core/src/main/java/org/apache/calcite/sql/fun/SqlStdOperatorTable.java#L263
[2]
https://github.com/apache/calcite/blob/main/core/src/main/codegen/templates/Parser.jj#L7174

Dmitry Sysolyatin <[email protected]> 于2022年4月28日周四 18:15写道:

> Hi!
> I want the operator '||' to work with arrays not only with strings.
> Array concatenation logic was already implemented in ARRAY_CONCAT function.
> But if I add a new binary operator:
>  -
>
> https://github.com/apache/calcite/commit/6f35521aa67378ab0756fe074cda375e17c7ce96
>
> Added test still fails with the same error as before:
> Cannot apply '||' to arguments of type '<INTEGER ARRAY> || <INTEGER
> ARRAY>'. Supported form(s): '<STRING> || <STRING>'
>
> What I am doing wrong?
>


-- 

Best,
Benchao Li

Reply via email to