Dmitry Sysolyatin created CALCITE-6494:
------------------------------------------

             Summary: MongoAdapter throws an exception if any function 
unsupported by MongoProject is used
                 Key: CALCITE-6494
                 URL: https://issues.apache.org/jira/browse/CALCITE-6494
             Project: Calcite
          Issue Type: Bug
          Components: mongodb-adapter
    Affects Versions: 1.37.0
            Reporter: Dmitry Sysolyatin


MongoAdapter throws an exception if any function unsupported by MongoProject is 
used

A simple example [1]:
{code}
@Test void testCalciteFunc() {
    assertModel(MODEL)
        .query("select CHAR_LENGTH(state) from zips")
        .runs();
  }
{code}
throws 
{code}
Suppressed: java.lang.IllegalArgumentException: Translation of 
CHAR_LENGTH(CAST(ITEM($0, 'state')):VARCHAR(2)) is not supported by MongoProject
{code}

The reason is that MongoProjectRule does not properly filter projects from 
LogicalProjects.getNamedProjects that can be used. I think the proper 
implementation of this rule should be similar to DruidProjectRule. It should 
extract input references from the project if it cannot be fully supported and 
add an additional Project on top of MongoProject.

[1] - 
https://github.com/dssysolyatin/calcite/commit/96cddae9c6516701e1aa44f7c75df5afdc497f8d




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to