Skip to content

Commit cd6db04

Browse files
committed
Migrate away from ExtensionUtil
Following duckdb/duckdb#17772
1 parent 1a54695 commit cd6db04

File tree

2 files changed

+26
-40
lines changed

2 files changed

+26
-40
lines changed

src/include/netquack_extension.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ namespace duckdb
1010
class NetquackExtension : public Extension
1111
{
1212
public:
13-
void Load (DuckDB &db) override;
13+
void Load (ExtensionLoader &loader) override;
1414
std::string Name () override;
1515
std::string Version () const override;
1616
};

src/netquack_extension.cpp

Lines changed: 25 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
#include "duckdb/common/exception.hpp"
99
#include "duckdb/common/string_util.hpp"
1010
#include "duckdb/function/scalar_function.hpp"
11-
#include "duckdb/main/extension_util.hpp"
1211
#include "duckdb/parser/parsed_data/create_scalar_function_info.hpp"
1312
#include "functions/extract_domain.hpp"
1413
#include "functions/extract_extension.hpp"
@@ -27,103 +26,100 @@
2726
namespace duckdb
2827
{
2928
// Load the extension into the database
30-
static void LoadInternal (DatabaseInstance &instance)
29+
static void LoadInternal (ExtensionLoader &loader)
3130
{
32-
ExtensionUtil::RegisterExtension (
33-
instance,
34-
"netquack",
35-
{ "Parsing, extracting, and analyzing domains, URIs, and paths with ease." });
36-
31+
loader.SetDescription("Parsing, extracting, and analyzing domains, URIs, and paths with ease.");
32+
3733
auto netquack_extract_domain_function = ScalarFunction (
3834
"extract_domain",
3935
{ LogicalType::VARCHAR },
4036
LogicalType::VARCHAR,
4137
ExtractDomainFunction);
42-
ExtensionUtil::RegisterFunction (instance, netquack_extract_domain_function);
38+
loader.RegisterFunction (netquack_extract_domain_function);
4339

4440
auto netquack_update_suffixes_function = ScalarFunction (
4541
"update_suffixes",
4642
{},
4743
LogicalType::VARCHAR,
4844
netquack::UpdateSuffixesFunction);
49-
ExtensionUtil::RegisterFunction (instance, netquack_update_suffixes_function);
45+
loader.RegisterFunction (netquack_update_suffixes_function);
5046

5147
auto netquack_extract_path_function = ScalarFunction (
5248
"extract_path",
5349
{ LogicalType::VARCHAR },
5450
LogicalType::VARCHAR,
5551
ExtractPathFunction);
56-
ExtensionUtil::RegisterFunction (instance, netquack_extract_path_function);
52+
loader.RegisterFunction (netquack_extract_path_function);
5753

5854
auto netquack_extract_schema_function = ScalarFunction (
5955
"extract_schema",
6056
{ LogicalType::VARCHAR },
6157
LogicalType::VARCHAR,
6258
ExtractSchemaFunction);
63-
ExtensionUtil::RegisterFunction (instance, netquack_extract_schema_function);
59+
loader.RegisterFunction (netquack_extract_schema_function);
6460

6561
auto netquack_extract_host_function = ScalarFunction (
6662
"extract_host",
6763
{ LogicalType::VARCHAR },
6864
LogicalType::VARCHAR,
6965
ExtractHostFunction);
70-
ExtensionUtil::RegisterFunction (instance, netquack_extract_host_function);
66+
loader.RegisterFunction (netquack_extract_host_function);
7167

7268
auto netquack_extract_query_string_function = ScalarFunction (
7369
"extract_query_string",
7470
{ LogicalType::VARCHAR },
7571
LogicalType::VARCHAR,
7672
ExtractQueryStringFunction);
77-
ExtensionUtil::RegisterFunction (instance, netquack_extract_query_string_function);
73+
loader.RegisterFunction (netquack_extract_query_string_function);
7874

7975
auto netquack_extract_tld_function = ScalarFunction (
8076
"extract_tld",
8177
{ LogicalType::VARCHAR },
8278
LogicalType::VARCHAR,
8379
ExtractTLDFunction);
84-
ExtensionUtil::RegisterFunction (instance, netquack_extract_tld_function);
80+
loader.RegisterFunction (netquack_extract_tld_function);
8581

8682
auto netquack_extract_subdomain_function = ScalarFunction (
8783
"extract_subdomain",
8884
{ LogicalType::VARCHAR },
8985
LogicalType::VARCHAR,
9086
ExtractSubDomainFunction);
91-
ExtensionUtil::RegisterFunction (instance, netquack_extract_subdomain_function);
87+
loader.RegisterFunction (netquack_extract_subdomain_function);
9288

9389
auto netquack_extract_port_function = ScalarFunction (
9490
"extract_port",
9591
{ LogicalType::VARCHAR },
9692
LogicalType::VARCHAR,
9793
ExtractPortFunction);
98-
ExtensionUtil::RegisterFunction (instance, netquack_extract_port_function);
94+
loader.RegisterFunction (netquack_extract_port_function);
9995

10096
auto netquack_extract_extension_function = ScalarFunction (
10197
"extract_extension",
10298
{ LogicalType::VARCHAR },
10399
LogicalType::VARCHAR,
104100
ExtractExtensionFunction);
105-
ExtensionUtil::RegisterFunction (instance, netquack_extract_extension_function);
101+
loader.RegisterFunction (netquack_extract_extension_function);
106102

107103
auto netquack_update_tranco_function = ScalarFunction (
108104
"update_tranco",
109105
{ LogicalType::BOOLEAN },
110106
LogicalType::VARCHAR,
111107
netquack::UpdateTrancoListFunction);
112-
ExtensionUtil::RegisterFunction (instance, netquack_update_tranco_function);
108+
loader.RegisterFunction (netquack_update_tranco_function);
113109

114110
auto get_tranco_rank_function = ScalarFunction (
115111
"get_tranco_rank",
116112
{ LogicalType::VARCHAR },
117113
LogicalType::VARCHAR,
118114
netquack::GetTrancoRankFunction);
119-
ExtensionUtil::RegisterFunction (instance, get_tranco_rank_function);
115+
loader.RegisterFunction (get_tranco_rank_function);
120116

121117
auto get_tranco_rank_category_function = ScalarFunction (
122118
"get_tranco_rank_category",
123119
{ LogicalType::VARCHAR },
124120
LogicalType::VARCHAR,
125121
netquack::GetTrancoRankCategoryFunction);
126-
ExtensionUtil::RegisterFunction (instance, get_tranco_rank_category_function);
122+
loader.RegisterFunction (get_tranco_rank_category_function);
127123

128124
auto ipcalc_function = TableFunction (
129125
"ipcalc",
@@ -133,7 +129,7 @@ namespace duckdb
133129
nullptr,
134130
netquack::IPCalcFunc::InitLocal);
135131
ipcalc_function.in_out_function = netquack::IPCalcFunc::Function;
136-
ExtensionUtil::RegisterFunction (instance, ipcalc_function);
132+
loader.RegisterFunction (ipcalc_function);
137133

138134
auto version_function = TableFunction (
139135
"netquack_version",
@@ -142,12 +138,12 @@ namespace duckdb
142138
netquack::VersionFunc::Bind,
143139
netquack::VersionFunc::InitGlobal,
144140
netquack::VersionFunc::InitLocal);
145-
ExtensionUtil::RegisterFunction (instance, version_function);
141+
loader.RegisterFunction (version_function);
146142
}
147143

148-
void NetquackExtension::Load (DuckDB &db)
144+
void NetquackExtension::Load (ExtensionLoader &loader)
149145
{
150-
LoadInternal (*db.instance);
146+
LoadInternal (loader);
151147
}
152148
std::string NetquackExtension::Name ()
153149
{
@@ -164,20 +160,10 @@ namespace duckdb
164160
}
165161
} // namespace duckdb
166162

167-
extern "C"
168-
{
169-
DUCKDB_EXTENSION_API void netquack_init (duckdb::DatabaseInstance &db)
170-
{
171-
duckdb::DuckDB db_wrapper (db);
172-
db_wrapper.LoadExtension<duckdb::NetquackExtension> ();
173-
}
174163

175-
DUCKDB_EXTENSION_API const char *netquack_version ()
176-
{
177-
return duckdb::DuckDB::LibraryVersion ();
178-
}
179-
}
164+
extern "C" {
180165

181-
#ifndef DUCKDB_EXTENSION_MAIN
182-
#error DUCKDB_EXTENSION_MAIN not defined
183-
#endif
166+
DUCKDB_CPP_EXTENSION_ENTRY(netquack, loader) {
167+
duckdb::LoadInternal(loader);
168+
}
169+
}

0 commit comments

Comments
 (0)