Uploaded image for project: 'Calcite'
  1. Calcite
  2. CALCITE-2377

view schema - SqlValidatorException: No match found for function signature

    Details

    • Type: Bug
    • Status: Open
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: 1.14.0, 1.15.0, 1.16.0
    • Fix Version/s: None
    • Component/s: core
    • Labels:
      None

      Description

       

      i want to create a view schema with mysql lexis, i write sample code like others, but follow error occurs ;

      // code placeholder
      public static void main(String[] args) throws SQLException {
      
           Properties info = new Properties();
           info.setProperty("lex", "MYSQL");
           info.setProperty("defaultNullCollation", "LAST");
      
           info.put(InternalProperty.CASE_SENSITIVE, false);
           info.put(InternalProperty.UNQUOTED_CASING, Casing.UNCHANGED);
           info.put(InternalProperty.QUOTED_CASING,Casing.UNCHANGED);
      
           Connection connection =
                   DriverManager.getConnection("jdbc:calcite:", info);
           CalciteConnection calciteConnection =
                   connection.unwrap(CalciteConnection.class);
           SchemaPlus rootSchema = calciteConnection.getRootSchema();
      
           SchemaPlus schema = rootSchema.add("test", new AbstractSchema());
           TableFunction simple =
                   TableFunctionImpl.create(Types.lookupMethod(ViewTest.class, "simple"));
           SchemaPlus s = rootSchema.add("si", new AbstractSchema());
           s.add("simple",simple);
      
           String sql = " select * from table(si.simple())";
      
           schema.add("emps_view",
                   ViewTable.viewMacro(schema,
                           sql,
                           null, Arrays.asList("test", "emps_view"), null));
      
      
           String qrySql = "select *from test.emps_view";
      
           final PreparedStatement ps = connection.prepareStatement(qrySql);
           ResultSet resultSet = ps.executeQuery();
      
           PrintUtil.output(resultSet, System.out);
       }
      
      

      error msg

      // code placeholder
      
      Exception in thread "main" java.sql.SQLException: Error while preparing statement [select *from test.emps_view]
      at org.apache.calcite.avatica.Helper.createException(Helper.java:56)
      at org.apache.calcite.avatica.Helper.createException(Helper.java:41)
      at org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement_(CalciteConnectionImpl.java:210)
      at org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement(CalciteConnectionImpl.java:192)
      at org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement(CalciteConnectionImpl.java:89)
      at org.apache.calcite.avatica.AvaticaConnection.prepareStatement(AvaticaConnection.java:168)
      at com.yunos.trout.test.calcite.view.ViewTest.main(ViewTest.java:58)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
      Caused by: org.apache.calcite.runtime.CalciteContextException: From line 1, column 25 to line 1, column 32: No match found for function signature SIMPLE()
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
      at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
      at org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:463)
      at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:803)
      at org.apache.calcite.sql.SqlUtil.newContextException(SqlUtil.java:788)
      at org.apache.calcite.sql.validate.SqlValidatorImpl.newValidationError(SqlValidatorImpl.java:4706)
      at org.apache.calcite.sql.validate.SqlValidatorImpl.handleUnresolvedFunction(SqlValidatorImpl.java:1690)
      at org.apache.calcite.sql.SqlFunction.deriveType(SqlFunction.java:278)
      at org.apache.calcite.sql.SqlFunction.deriveType(SqlFunction.java:223)
      at org.apache.calcite.sql.validate.SqlValidatorImpl$DeriveTypeVisitor.visit(SqlValidatorImpl.java:5432)
      at org.apache.calcite.sql.validate.SqlValidatorImpl$DeriveTypeVisitor.visit(SqlValidatorImpl.java:5419)
      at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:138)
      at org.apache.calcite.sql.validate.SqlValidatorImpl.deriveTypeImpl(SqlValidatorImpl.java:1606)
      at org.apache.calcite.sql.validate.ProcedureNamespace.validateImpl(ProcedureNamespace.java:53)
      at org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84)
      at org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:947)
      at org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:928)
      at org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:2975)
      at org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3219)
      at org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:60)
      at org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84)
      at org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:947)
      at org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:928)
      at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:226)
      at org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:903)
      at org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:613)
      at org.apache.calcite.prepare.CalcitePrepareImpl.parse_(CalcitePrepareImpl.java:290)
      at org.apache.calcite.prepare.CalcitePrepareImpl.analyzeView(CalcitePrepareImpl.java:268)
      at org.apache.calcite.schema.Schemas.analyzeView(Schemas.java:331)
      at org.apache.calcite.schema.impl.ViewTableMacro.apply(ViewTableMacro.java:74)
      at org.apache.calcite.jdbc.CalciteSchema.getTableBasedOnNullaryFunction(CalciteSchema.java:376)
      at org.apache.calcite.sql.validate.EmptyScope.resolve_(EmptyScope.java:145)
      at org.apache.calcite.sql.validate.EmptyScope.resolveTable(EmptyScope.java:99)
      at org.apache.calcite.sql.validate.DelegatingScope.resolveTable(DelegatingScope.java:203)
      at org.apache.calcite.sql.validate.IdentifierNamespace.resolveImpl(IdentifierNamespace.java:105)
      at org.apache.calcite.sql.validate.IdentifierNamespace.validateImpl(IdentifierNamespace.java:177)
      at org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84)
      at org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:947)
      at org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:928)
      at org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:2975)
      at org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:2960)
      at org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3219)
      at org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:60)
      at org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:84)
      at org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:947)
      at org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:928)
      at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:226)
      at org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:903)
      at org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:613)
      at org.apache.calcite.sql2rel.SqlToRelConverter.convertQuery(SqlToRelConverter.java:553)
      at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:264)
      at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:230)
      at org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:781)
      at org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:640)
      at org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:610)
      at org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:221)
      at org.apache.calcite.jdbc.CalciteConnectionImpl.prepareStatement_(CalciteConnectionImpl.java:203)
      ... 9 more
      Caused by: org.apache.calcite.sql.validate.SqlValidatorException: No match found for function signature SIMPLE()
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
      at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
      at org.apache.calcite.runtime.Resources$ExInstWithCause.ex(Resources.java:463)
      at org.apache.calcite.runtime.Resources$ExInst.ex(Resources.java:572)
      ... 63 more
      

       

       

        Attachments

          Activity

            People

            • Assignee:
              julianhyde Julian Hyde
              Reporter:
              allanspark allan spark
            • Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated: