[ 
https://issues.apache.org/jira/browse/CALCITE-2282?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16825653#comment-16825653
 ] 

Lai Zhou commented on CALCITE-2282:
-----------------------------------

[~danny0405], it's the way how I override the built-in operators:

In Parser.jj
{code:java}
| <LIKE> { op = SqlStdOperatorTable.LIKE; } 
| <SIMILAR> <TO> { op = SqlStdOperatorTable.SIMILAR_TO; }
| <RLIKE> { op = HiveSqlOperatorTable.RLIKE; }
| <REGEXP> { op = HiveSqlOperatorTable.REGEXP; } )
{code}
{code:java}
| <PLUS> { return SqlStdOperatorTable.PLUS; } 
| <MINUS> { return SqlStdOperatorTable.MINUS; } 
| <STAR> { return HiveSqlOperatorTable.MULTIPLY; } 
| <SLASH> { return HiveSqlOperatorTable.DIVIDE; }{code}
The default DIVIDE operator in SqlStdOperatorTable is not ok for real buisiness.

Consider the follow sql:

select 2/5 ,  the result is 0. But we expect 0.4.

[~julianhyde], Now the only way to custom the DIVIDE operator is to rewrite the 
Parser.jj.

I didn't find the way as [~zhztheplayer] said to to use custom operator table 
without changing the parser for this use case.

 

> Allow OperatorTable to be pluggable in the parser
> -------------------------------------------------
>
>                 Key: CALCITE-2282
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2282
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>            Reporter: Sudheesh Katkam
>            Priority: Major
>         Attachments: CALCITE-2282.patch.txt
>
>
> SqlAbstractParserImpl [hardcodes OperatorTable to 
> SqlStdOperatorTable|https://github.com/apache/calcite/blob/8327e674e7f0a768d124fa37fd75cda4b8a35bb6/core/src/main/java/org/apache/calcite/sql/parser/SqlAbstractParserImpl.java#L334|https://github.com/apache/calcite/blob/8327e674e7f0a768d124fa37fd75cda4b8a35bb6/core/src/main/java/org/apache/calcite/sql/parser/SqlAbstractParserImpl.java#L334].
>  Make this pluggable via a protected method.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to