Skip to content

Commit 211e4a2

Browse files
committed
vendor: Update vendored sources to duckdb/duckdb@0eb1bab
support large dictionary value and constant vector creation in the C API (duckdb/duckdb#17064) Fix sqlite3 api wrapper link + remove R-CMD-check + add more nightly tests (duckdb/duckdb#17095)
1 parent 76c2274 commit 211e4a2

File tree

5 files changed

+68
-3
lines changed

5 files changed

+68
-3
lines changed

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-dev2395"
2+
#define DUCKDB_PATCH_VERSION "0-dev2405"
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-dev2395"
11+
#define DUCKDB_VERSION "v1.3.0-dev2405"
1212
#endif
1313
#ifndef DUCKDB_SOURCE_ID
14-
#define DUCKDB_SOURCE_ID "ce69651242"
14+
#define DUCKDB_SOURCE_ID "0eb1bab6fd"
1515
#endif
1616
#include "duckdb/function/table/system_functions.hpp"
1717
#include "duckdb/main/database.hpp"

src/duckdb/src/include/duckdb.h

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2913,6 +2913,18 @@ DUCKDB_C_API void duckdb_data_chunk_set_size(duckdb_data_chunk chunk, idx_t size
29132913
// Vector Interface
29142914
//===--------------------------------------------------------------------===//
29152915

2916+
/*!
2917+
Creates a flat vector.
2918+
2919+
*/
2920+
DUCKDB_C_API duckdb_vector duckdb_create_vector(duckdb_logical_type type, idx_t capacity);
2921+
2922+
/*!
2923+
Destroys the vector and de-allocates all memory allocated for that vector, if unused else where.
2924+
2925+
*/
2926+
DUCKDB_C_API void duckdb_destroy_vector(duckdb_vector *vector);
2927+
29162928
/*!
29172929
Retrieves the column type of the specified vector.
29182930
@@ -3060,6 +3072,17 @@ The resulting vector happens to be a dictionary vector.
30603072
*/
30613073
DUCKDB_C_API void duckdb_slice_vector(duckdb_vector vector, duckdb_selection_vector selection, idx_t len);
30623074

3075+
/*!
3076+
Copies the value from `value` to `vector`.
3077+
*/
3078+
DUCKDB_C_API void duckdb_vector_reference_value(duckdb_vector vector, duckdb_value value);
3079+
3080+
/*!
3081+
References the `from` vector in the `to` vector, this makes take shared ownership of the values buffer
3082+
3083+
*/
3084+
DUCKDB_C_API void duckdb_vector_reference_vector(duckdb_vector to_vector, duckdb_vector from_vector);
3085+
30633086
//===--------------------------------------------------------------------===//
30643087
// Validity Mask Functions
30653088
//===--------------------------------------------------------------------===//

src/duckdb/src/include/duckdb/main/capi/extension_api.hpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,11 @@ typedef struct {
476476
char *(*duckdb_value_to_string)(duckdb_value value);
477477
// An API to create new vector types
478478

479+
duckdb_vector (*duckdb_create_vector)(duckdb_logical_type type, idx_t capacity);
480+
void (*duckdb_destroy_vector)(duckdb_vector *vector);
479481
void (*duckdb_slice_vector)(duckdb_vector vector, duckdb_selection_vector selection, idx_t len);
482+
void (*duckdb_vector_reference_value)(duckdb_vector vector, duckdb_value value);
483+
void (*duckdb_vector_reference_vector)(duckdb_vector to_vector, duckdb_vector from_vector);
480484
duckdb_selection_vector (*duckdb_create_selection_vector)(idx_t size);
481485
void (*duckdb_destroy_selection_vector)(duckdb_selection_vector vector);
482486
sel_t *(*duckdb_selection_vector_get_data_ptr)(duckdb_selection_vector vector);
@@ -896,7 +900,11 @@ inline duckdb_ext_api_v1 CreateAPIv1() {
896900
result.duckdb_destroy_instance_cache = duckdb_destroy_instance_cache;
897901
result.duckdb_append_default_to_chunk = duckdb_append_default_to_chunk;
898902
result.duckdb_value_to_string = duckdb_value_to_string;
903+
result.duckdb_create_vector = duckdb_create_vector;
904+
result.duckdb_destroy_vector = duckdb_destroy_vector;
899905
result.duckdb_slice_vector = duckdb_slice_vector;
906+
result.duckdb_vector_reference_value = duckdb_vector_reference_value;
907+
result.duckdb_vector_reference_vector = duckdb_vector_reference_vector;
900908
result.duckdb_create_selection_vector = duckdb_create_selection_vector;
901909
result.duckdb_destroy_selection_vector = duckdb_destroy_selection_vector;
902910
result.duckdb_selection_vector_get_data_ptr = duckdb_selection_vector_get_data_ptr;

src/duckdb/src/include/duckdb_extension.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -549,7 +549,11 @@ typedef struct {
549549

550550
// An API to create new vector types
551551
#ifdef DUCKDB_EXTENSION_API_VERSION_UNSTABLE
552+
duckdb_vector (*duckdb_create_vector)(duckdb_logical_type type, idx_t capacity);
553+
void (*duckdb_destroy_vector)(duckdb_vector *vector);
552554
void (*duckdb_slice_vector)(duckdb_vector vector, duckdb_selection_vector selection, idx_t len);
555+
void (*duckdb_vector_reference_value)(duckdb_vector vector, duckdb_value value);
556+
void (*duckdb_vector_reference_vector)(duckdb_vector to_vector, duckdb_vector from_vector);
553557
duckdb_selection_vector (*duckdb_create_selection_vector)(idx_t size);
554558
void (*duckdb_destroy_selection_vector)(duckdb_selection_vector vector);
555559
sel_t *(*duckdb_selection_vector_get_data_ptr)(duckdb_selection_vector vector);
@@ -981,7 +985,11 @@ typedef struct {
981985
#define duckdb_value_to_string duckdb_ext_api.duckdb_value_to_string
982986

983987
// Version unstable_new_vector_types
988+
#define duckdb_create_vector duckdb_ext_api.duckdb_create_vector
989+
#define duckdb_destroy_vector duckdb_ext_api.duckdb_destroy_vector
984990
#define duckdb_slice_vector duckdb_ext_api.duckdb_slice_vector
991+
#define duckdb_vector_reference_value duckdb_ext_api.duckdb_vector_reference_value
992+
#define duckdb_vector_reference_vector duckdb_ext_api.duckdb_vector_reference_vector
985993
#define duckdb_create_selection_vector duckdb_ext_api.duckdb_create_selection_vector
986994
#define duckdb_destroy_selection_vector duckdb_ext_api.duckdb_destroy_selection_vector
987995
#define duckdb_selection_vector_get_data_ptr duckdb_ext_api.duckdb_selection_vector_get_data_ptr

src/duckdb/src/main/capi/data_chunk-c.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,20 @@ void duckdb_data_chunk_reset(duckdb_data_chunk chunk) {
4646
dchunk->Reset();
4747
}
4848

49+
duckdb_vector duckdb_create_vector(duckdb_logical_type type, idx_t capacity) {
50+
auto dtype = reinterpret_cast<duckdb::LogicalType *>(type);
51+
auto vector = new duckdb::Vector(*dtype, capacity);
52+
return reinterpret_cast<duckdb_vector>(vector);
53+
}
54+
55+
void duckdb_destroy_vector(duckdb_vector *vector) {
56+
if (vector && *vector) {
57+
auto dvector = reinterpret_cast<duckdb::Vector *>(*vector);
58+
delete dvector;
59+
*vector = nullptr;
60+
}
61+
}
62+
4963
idx_t duckdb_data_chunk_get_column_count(duckdb_data_chunk chunk) {
5064
if (!chunk) {
5165
return 0;
@@ -226,3 +240,15 @@ void duckdb_slice_vector(duckdb_vector dict, duckdb_selection_vector selection,
226240
auto dselection = reinterpret_cast<duckdb::SelectionVector *>(selection);
227241
ddict->Slice(*dselection, len);
228242
}
243+
244+
void duckdb_vector_reference_value(duckdb_vector vector, duckdb_value value) {
245+
auto dvector = reinterpret_cast<duckdb::Vector *>(vector);
246+
auto dvalue = reinterpret_cast<duckdb::Value *>(value);
247+
dvector->Reference(*dvalue);
248+
}
249+
250+
void duckdb_vector_reference_vector(duckdb_vector to_vector, duckdb_vector from_vector) {
251+
auto dto_vector = reinterpret_cast<duckdb::Vector *>(to_vector);
252+
auto dfrom_vector = reinterpret_cast<duckdb::Vector *>(from_vector);
253+
dto_vector->Reference(*dfrom_vector);
254+
}

0 commit comments

Comments
 (0)