Skip to content

Commit 6dd5aec

Browse files
committed
scalar function exception handling
1 parent c279bac commit 6dd5aec

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

bindings/binding.gyp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
'target_name': 'duckdb',
4040
'dependencies': [
4141
'fetch_libduckdb',
42-
'<!(node -p "require(\'node-addon-api\').targets"):node_addon_api_except',
42+
'<!(node -p "require(\'node-addon-api\').targets"):node_addon_api_except_all',
4343
],
4444
'sources': ['src/duckdb_node_bindings.cpp'],
4545
'include_dirs': ['<(module_root_dir)/libduckdb'],

bindings/src/duckdb_node_bindings.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -692,14 +692,18 @@ struct ScalarFunctionMainData {
692692
void ScalarFunctionMainCallback(Napi::Env env, Napi::Function callback, ScalarFunctionMainContext *context, ScalarFunctionMainData *data) {
693693
if (env != nullptr) {
694694
if (callback != nullptr) {
695-
callback.Call(
696-
env.Undefined(),
697-
{
698-
CreateExternalForFunctionInfoWithoutFinalizer(env, data->info),
699-
CreateExternalForDataChunkWithoutFinalizer(env, data->input),
700-
CreateExternalForVectorWithoutFinalizer(env, data->output)
701-
}
702-
);
695+
try {
696+
callback.Call(
697+
env.Undefined(),
698+
{
699+
CreateExternalForFunctionInfoWithoutFinalizer(env, data->info),
700+
CreateExternalForDataChunkWithoutFinalizer(env, data->input),
701+
CreateExternalForVectorWithoutFinalizer(env, data->output)
702+
}
703+
);
704+
} catch (const Napi::Error &err) {
705+
duckdb_scalar_function_set_error(data->info, err.Message().c_str());
706+
}
703707
}
704708
}
705709
{

0 commit comments

Comments
 (0)