Skip to content

Commit 430ad85

Browse files
committed
vendor: Update vendored sources to duckdb/duckdb@92a5b7b
Unify function list (duckdb/duckdb#17168) Internal duckdb/duckdb#4667: 2025b TimeZone Data (duckdb/duckdb#17160) [InvokeCI] Add missing pipe to run instruction (duckdb/duckdb#17163) README: Fix to building link (duckdb/duckdb#17161)
1 parent 6b2ad60 commit 430ad85

File tree

6 files changed

+55
-73
lines changed

6 files changed

+55
-73
lines changed

src/duckdb/extension/core_functions/core_functions_extension.cpp

Lines changed: 1 addition & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -3,52 +3,11 @@
33

44
#include "core_functions/function_list.hpp"
55
#include "duckdb/main/extension_util.hpp"
6-
#include "duckdb/function/register_function_list_helper.hpp"
7-
#include "duckdb/parser/parsed_data/create_aggregate_function_info.hpp"
8-
#include "duckdb/parser/parsed_data/create_scalar_function_info.hpp"
96

107
namespace duckdb {
118

12-
template <class T>
13-
static void FillExtraInfo(const StaticFunctionDefinition &function, T &info) {
14-
info.internal = true;
15-
info.alias_of = function.alias_of;
16-
FillFunctionDescriptions(function, info);
17-
info.on_conflict = OnCreateConflict::ALTER_ON_CONFLICT;
18-
}
19-
209
void LoadInternal(DuckDB &db) {
21-
auto functions = StaticFunctionDefinition::GetFunctionList();
22-
for (idx_t i = 0; functions[i].name; i++) {
23-
auto &function = functions[i];
24-
if (function.get_function || function.get_function_set) {
25-
// scalar function
26-
ScalarFunctionSet result;
27-
if (function.get_function) {
28-
result.AddFunction(function.get_function());
29-
} else {
30-
result = function.get_function_set();
31-
}
32-
result.name = function.name;
33-
CreateScalarFunctionInfo info(result);
34-
FillExtraInfo(function, info);
35-
ExtensionUtil::RegisterFunction(*db.instance, std::move(info));
36-
} else if (function.get_aggregate_function || function.get_aggregate_function_set) {
37-
// aggregate function
38-
AggregateFunctionSet result;
39-
if (function.get_aggregate_function) {
40-
result.AddFunction(function.get_aggregate_function());
41-
} else {
42-
result = function.get_aggregate_function_set();
43-
}
44-
result.name = function.name;
45-
CreateAggregateFunctionInfo info(result);
46-
FillExtraInfo(function, info);
47-
ExtensionUtil::RegisterFunction(*db.instance, std::move(info));
48-
} else {
49-
throw InternalException("Do not know how to register function of this type");
50-
}
51-
}
10+
FunctionList::RegisterExtensionFunctions(*db.instance, CoreFunctionList::GetFunctionList());
5211
}
5312

5413
void CoreFunctionsExtension::Load(DuckDB &db) {

src/duckdb/extension/core_functions/function_list.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ static const StaticFunctionDefinition core_functions[] = {
405405
FINAL_FUNCTION
406406
};
407407

408-
const StaticFunctionDefinition *StaticFunctionDefinition::GetFunctionList() {
408+
const StaticFunctionDefinition *CoreFunctionList::GetFunctionList() {
409409
return core_functions;
410410
}
411411

src/duckdb/extension/core_functions/include/core_functions/function_list.hpp

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,18 @@
11
//===----------------------------------------------------------------------===//
22
// DuckDB
33
//
4-
// duckdb/core_functions/function_list.hpp
4+
// extension/core_functions/include/core_functions/function_list.hpp
55
//
66
//
77
//===----------------------------------------------------------------------===//
88

99
#pragma once
1010

11-
#include "duckdb.hpp"
11+
#include "duckdb/function/function_list.hpp"
1212

1313
namespace duckdb {
1414

15-
typedef ScalarFunction (*get_scalar_function_t)();
16-
typedef ScalarFunctionSet (*get_scalar_function_set_t)();
17-
typedef AggregateFunction (*get_aggregate_function_t)();
18-
typedef AggregateFunctionSet (*get_aggregate_function_set_t)();
19-
20-
struct StaticFunctionDefinition {
21-
const char *name;
22-
const char *alias_of;
23-
const char *parameters;
24-
const char *description;
25-
const char *example;
26-
const char *categories;
27-
get_scalar_function_t get_function;
28-
get_scalar_function_set_t get_function_set;
29-
get_aggregate_function_t get_aggregate_function;
30-
get_aggregate_function_set_t get_aggregate_function_set;
31-
15+
struct CoreFunctionList {
3216
static const StaticFunctionDefinition *GetFunctionList();
3317
};
3418

src/duckdb/src/function/register_function_list.cpp

Lines changed: 46 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,51 @@
44
#include "duckdb/function/register_function_list_helper.hpp"
55
#include "duckdb/parser/parsed_data/create_aggregate_function_info.hpp"
66
#include "duckdb/parser/parsed_data/create_scalar_function_info.hpp"
7+
#include "duckdb/main/extension_util.hpp"
78

89
namespace duckdb {
910

10-
template <class T>
11+
struct MainRegisterContext {
12+
MainRegisterContext(Catalog &catalog, CatalogTransaction transaction) : catalog(catalog), transaction(transaction) {
13+
}
14+
15+
Catalog &catalog;
16+
CatalogTransaction transaction;
17+
};
18+
19+
struct MainRegister {
20+
template <class T>
21+
static void FillExtraInfo(T &info) {
22+
}
23+
24+
template <class T>
25+
static void RegisterFunction(MainRegisterContext &context, T &info) {
26+
context.catalog.CreateFunction(context.transaction, info);
27+
}
28+
};
29+
30+
struct ExtensionRegister {
31+
template <class T>
32+
static void FillExtraInfo(T &info) {
33+
info.on_conflict = OnCreateConflict::ALTER_ON_CONFLICT;
34+
}
35+
36+
template <class T>
37+
static void RegisterFunction(DatabaseInstance &db, T &info) {
38+
ExtensionUtil::RegisterFunction(db, std::move(info));
39+
}
40+
};
41+
42+
template <class OP, class T>
1143
static void FillExtraInfo(const StaticFunctionDefinition &function, T &info) {
1244
info.internal = true;
1345
info.alias_of = function.alias_of;
1446
FillFunctionDescriptions(function, info);
47+
OP::FillExtraInfo(info);
1548
}
1649

17-
static void RegisterFunctionList(Catalog &catalog, CatalogTransaction transaction,
18-
const StaticFunctionDefinition *functions) {
50+
template <class OP, class REGISTER_CONTEXT>
51+
static void RegisterFunctionList(REGISTER_CONTEXT &context, const StaticFunctionDefinition *functions) {
1952
for (idx_t i = 0; functions[i].name; i++) {
2053
auto &function = functions[i];
2154
if (function.get_function || function.get_function_set) {
@@ -28,8 +61,8 @@ static void RegisterFunctionList(Catalog &catalog, CatalogTransaction transactio
2861
}
2962
result.name = function.name;
3063
CreateScalarFunctionInfo info(result);
31-
FillExtraInfo(function, info);
32-
catalog.CreateFunction(transaction, info);
64+
FillExtraInfo<OP>(function, info);
65+
OP::RegisterFunction(context, info);
3366
} else if (function.get_aggregate_function || function.get_aggregate_function_set) {
3467
// aggregate function
3568
AggregateFunctionSet result;
@@ -40,16 +73,21 @@ static void RegisterFunctionList(Catalog &catalog, CatalogTransaction transactio
4073
}
4174
result.name = function.name;
4275
CreateAggregateFunctionInfo info(result);
43-
FillExtraInfo(function, info);
44-
catalog.CreateFunction(transaction, info);
76+
FillExtraInfo<OP>(function, info);
77+
OP::RegisterFunction(context, info);
4578
} else {
4679
throw InternalException("Do not know how to register function of this type");
4780
}
4881
}
4982
}
5083

84+
void FunctionList::RegisterExtensionFunctions(DatabaseInstance &db, const StaticFunctionDefinition *functions) {
85+
RegisterFunctionList<ExtensionRegister>(db, functions);
86+
}
87+
5188
void FunctionList::RegisterFunctions(Catalog &catalog, CatalogTransaction transaction) {
52-
RegisterFunctionList(catalog, transaction, FunctionList::GetInternalFunctionList());
89+
MainRegisterContext context(catalog, transaction);
90+
RegisterFunctionList<MainRegister>(context, FunctionList::GetInternalFunctionList());
5391
}
5492

5593
} // namespace duckdb

src/duckdb/src/function/table/version/pragma_version.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#ifndef DUCKDB_PATCH_VERSION
2-
#define DUCKDB_PATCH_VERSION "0-dev2609"
2+
#define DUCKDB_PATCH_VERSION "0-dev2620"
33
#endif
44
#ifndef DUCKDB_MINOR_VERSION
55
#define DUCKDB_MINOR_VERSION 3
@@ -8,10 +8,10 @@
88
#define DUCKDB_MAJOR_VERSION 1
99
#endif
1010
#ifndef DUCKDB_VERSION
11-
#define DUCKDB_VERSION "v1.3.0-dev2609"
11+
#define DUCKDB_VERSION "v1.3.0-dev2620"
1212
#endif
1313
#ifndef DUCKDB_SOURCE_ID
14-
#define DUCKDB_SOURCE_ID "3a7ccad262"
14+
#define DUCKDB_SOURCE_ID "92a5b7b32f"
1515
#endif
1616
#include "duckdb/function/table/system_functions.hpp"
1717
#include "duckdb/main/database.hpp"

src/duckdb/src/include/duckdb/function/function_list.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ struct CatalogTransaction;
3636
struct FunctionList {
3737
static const StaticFunctionDefinition *GetInternalFunctionList();
3838
static void RegisterFunctions(Catalog &catalog, CatalogTransaction transaction);
39+
static void RegisterExtensionFunctions(DatabaseInstance &db, const StaticFunctionDefinition *functions);
3940
};
4041

4142
} // namespace duckdb

0 commit comments

Comments
 (0)