ah this is Scala, it's a bit shorter to write On Mon, Mar 20, 2023 at 1:12 PM Julian Hyde <jhyde.apa...@gmail.com> wrote:
> What language is this? > > > On Mar 20, 2023, at 9:01 AM, Guillaume Masse < > masse.guilla...@narrative.io> wrote: > > > > Hi All, > > > > How can we register a custom udf? I found some solutions on Stackoverflow > > but they are out of date ( > > > https://stackoverflow.com/questions/44147819/adding-a-user-defined-function-to-calcite > > ) > > > > So far what I have: > > > > // top level class > > class CustomUdf { > > def foo(in: Double): Double = in + 1 > > } > > > > // somewhere else > > val typeFactory = new JavaTypeFactoryImpl() > > > > val root = CalciteSchema.createRootSchema(false) > > root.plus().add("foo", ScalarFunctionImpl.create(classOf[CustomUdf], > "foo")) > > > > val catalogReader = new CalciteCatalogReader( > > root, > > Collections.emptyList(), > > typeFactory, > > CalciteConnectionConfig.DEFAULT > > ) > > > > val operators = > > SqlLibraryOperatorTableFactory.INSTANCE.getOperatorTable( > > SqlLibrary.STANDARD, > > SqlLibrary.SPARK > > ) > > > > val sqlValidator = SqlValidatorUtil.newValidator( > > operators, > > catalogReader, > > typeFactory, > > SqlValidator.Config.DEFAULT > > ) > > > > simple expression failed to > > validate,org.apache.calcite.runtime.CalciteContextException: From line 1, > > column 1 to line 1, column 22: No match found for function signature > > toto(<NUMERIC>)) > > > > From what I saw on Stackoverflow, it looks like I need to also add the > > function to the operator table. > > > > Thanks! > > Guillaume Massé (马赛卫) >