mirror of
https://github.com/hanzoai/datastore.git
synced 2026-09-26 13:55:07 +00:00
Implements several reviewer-requested changes for driver-based executable user-defined functions: - Gate the feature behind a new experimental server setting `allow_experimental_executable_udf_drivers` (disabled by default, mirroring `allow_experimental_webassembly_udf`). When disabled, no drivers are loaded into the registry and `CREATE FUNCTION ... ENGINE = DriverName(...)` throws `SUPPORT_IS_DISABLED`. - Reject driver-based `CREATE FUNCTION` when the user-defined SQL object storage is replicated: driver artifacts (dynamic config and working directory) are materialized only on the receiving replica, so the function would be unavailable on the others and after `RESTORE`. - Require `AS '...code...'` for driver-based `CREATE FUNCTION` in the parser, so an accidental omission of `AS` becomes a syntax error instead of a side-effectful create with an empty body. - Honor `IF NOT EXISTS` in the executable-UDF existence check (`UserDefinedExecutableFunctionFactory::has`) instead of throwing `FUNCTION_ALREADY_EXISTS` unconditionally. - Clear the driver registry when the driver config resolves to no files (or the feature is disabled) on `SYSTEM RELOAD CONFIG`, so removed drivers stop being usable immediately instead of lingering until restart. - Add `ASTCreateFunctionWithDriverQuery` to `isUserDefinedFunctionQuery` in `removeOnClusterClauseIfNeeded` so the new create path honors `ignore_on_cluster_for_replicated_udf_queries`. - Add `--security-opt=no-new-privileges` to the `c_function_body` driver's compile and runtime `docker run` sandboxes. - Enable `allow_experimental_executable_udf_drivers` in the stateless test configs for `04241_executable_udf_driver` and `04242_executable_udf_driver_errors`. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>