blob: 4fc97eee155f5d4e6e05376116b61f3e49585411 [file]
= Custom SQL Functions
:javaFile: {javaCodeDir}/SqlAPI.java
The SQL Engine can extend the SQL functions' set, defined by the ANSI-99 specification, via the addition of custom SQL functions written in Java.
A custom SQL function is just a public static method marked by the `@QuerySqlFunction` annotation.
////
TODO looks like it's unsupported in C#
////
[source,java]
----
include::{javaFile}[tags=sql-function-example, indent=0]
----
The class that owns the custom SQL function has to be registered in the `CacheConfiguration`.
To do that, use the `setSqlFunctionClasses(...)` method.
[source,java]
----
include::{javaFile}[tags=sql-function-config, indent=0]
----
Once you have deployed a cache with the above configuration, you can call the custom function from within SQL queries:
[source,java]
----
include::{javaFile}[tags=sql-function-query, indent=0]
----
NOTE: Classes registered with `CacheConfiguration.setSqlFunctionClasses(...)` must be added to the classpath of all the nodes where the defined custom functions might be executed. Otherwise, you will get a `ClassNotFoundException` error when trying to execute the custom function.