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"
2726namespace 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