This package contains the abstractions for supporting simple functions, aggregate functions, and table-returning functions in NanoDB. Additionally, this package contains many function implementations to use in SQL queries, as well as a {@link FunctionDirectory} for looking up function implementations from within the query planning and evaluation code.

Here is a brief description of the abstractions implemented in NanoDB.

Function Naming

All function names are uppercase.

Aggregate functions may support the DISTINCT keyword, e.g. "SELECT COUNT(DISTINCT a) FROM t;". In NanoDB, these invocations are mapped to a function invocation with "#DISTINCT" appended to the specified function name. For example, the example SQL will result in NanoDB resolving the invocation to the "COUNT#DISTINCT" function.