diff --git a/.github/workflows/DuckDBNodeBindingsAndAPI.yml b/.github/workflows/DuckDBNodeBindingsAndAPI.yml index 87a863b..2f1238a 100644 --- a/.github/workflows/DuckDBNodeBindingsAndAPI.yml +++ b/.github/workflows/DuckDBNodeBindingsAndAPI.yml @@ -267,10 +267,9 @@ jobs: working-directory: bindings run: pnpm run build - # Fails for unknown reasons - # - name: Bindings - Test - # working-directory: bindings - # run: pnpm test + - name: Bindings - Test + working-directory: bindings + run: pnpm test - name: API - Build working-directory: api diff --git a/bindings/src/duckdb_node_bindings.cpp b/bindings/src/duckdb_node_bindings.cpp index 28cd027..1571965 100644 --- a/bindings/src/duckdb_node_bindings.cpp +++ b/bindings/src/duckdb_node_bindings.cpp @@ -360,16 +360,17 @@ static const napi_type_tag LogicalTypeTypeTag = { }; void FinalizeLogicalType(Napi::BasicEnv, duckdb_logical_type logical_type) { - if (logical_type) { - duckdb_destroy_logical_type(&logical_type); - logical_type = nullptr; - } + duckdb_destroy_logical_type(&logical_type); } Napi::External<_duckdb_logical_type> CreateExternalForLogicalType(Napi::Env env, duckdb_logical_type logical_type) { return CreateExternal<_duckdb_logical_type>(env, LogicalTypeTypeTag, logical_type, FinalizeLogicalType); } +Napi::External<_duckdb_logical_type> CreateExternalForLogicalTypeWithoutFinalizer(Napi::Env env, duckdb_logical_type logical_type) { + return CreateExternalWithoutFinalizer<_duckdb_logical_type>(env, LogicalTypeTypeTag, logical_type); +} + duckdb_logical_type GetLogicalTypeFromExternal(Napi::Env env, Napi::Value value) { return GetDataFromExternal<_duckdb_logical_type>(env, LogicalTypeTypeTag, value, "Invalid logical type argument"); } @@ -2554,7 +2555,7 @@ class DuckDBNodeAddon : public Napi::Addon { auto env = info.Env(); auto value = GetValueFromExternal(env, info[0]); auto logical_type = duckdb_get_value_type(value); - return CreateExternalForLogicalType(env, logical_type); + return CreateExternalForLogicalTypeWithoutFinalizer(env, logical_type); } // DUCKDB_API duckdb_blob duckdb_get_blob(duckdb_value val);