Overview
Kuiper 1.2.0 added external function to map existing REST, gRPC or msgpackrpc services into user defined functions by configuration. It is an easy to use extension method to complement plugin. It is more recommened than plugin extension for all scenarios except performance critical scenario. External function can be defined in a batch by a json file and one or multiple schema files (only support protobuf format now). It is possible to hot reload by CLI or REST API. Addionally, http options are supported in the proto schema to better define the REST services.
A new type of source table was added in this release. It works as a snapshot at the current time point for the source. Users can use it as a lookup dictionary or referenced state by joining it with a stream.
We also added a new SQL expression: case expression to evaluates a list of conditions and returns one of multiple possible result expressions. Several enhanements were also added to the built-in functions. And the wildcard is now supported as the parameter of user defined functions. Finally, we fixed several issues for both the product and document.
Features & fixes
- Support external function to invoke exiting services in SQL by configuration only
- Implement [external function](https://github.com/emqx/kuiper/blob/master/docs/en_US/extension/external_func.md#external-function) configuration parsing and execution of REST services, gRPC services and msgpackrpc services
- Support protobuf as the schema type, support [google http api](https://github.com/emqx/kuiper/blob/master/docs/en_US/extension/external_func.md#http-options) options in the protobuf to better define the REST services
- Support table type to represent the current state of the stream
- Support [table](https://github.com/emqx/kuiper/blob/master/docs/en_US/sqls/tables.md) type, statements and management CLI/REST API
- Add [file source](https://github.com/emqx/kuiper/blob/master/docs/en_US/rules/sources/file.md) which is typically used as a static table
- Allow to use existing source type as a continuous table
- Support [case expression](https://github.com/emqx/kuiper/blob/master/docs/en_US/sqls/query_language_elements.md#case-expression)
- Support * as parameter of custom functions
- Support string parameter for [json functions](https://github.com/emqx/kuiper/blob/master/docs/en_US/sqls/built-in_functions.md#json-functions)
- Allow bigint, float and string as the parameter of format_time function
- Rename "reengine_field" to "kuiper_field" for non-specified fields
- Build
- Fix a permission problem when injecting configuration through mouted volumes by Docker
- Add check for markdown directory
- Add check for deb/rpm
- Update tdengine version
- Fixes
- Avoid printing password in logs
- Let meta fields ignore cases
- Fix problems when joining without stream name in the field ref
- Fix alias for same field names in multiple stream problem
- Fix access subfolder failure problem in absolute mode
- Fix stream describe problem for multi-level embedded structs
- Documentation fixes
- Fix some broken links
- Fix several typos
- Update json expression doc
Thanks
- jrtitus provides several fixes for the documentation
- tmactao provides a fix for the documentation