duckdb 0.7.2-dev3353.0 → 0.7.2-dev3402.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/duckdb/extension/json/buffered_json_reader.cpp +2 -3
- package/src/duckdb/extension/json/include/json_functions.hpp +5 -1
- package/src/duckdb/extension/json/include/json_scan.hpp +1 -0
- package/src/duckdb/extension/json/include/json_transform.hpp +2 -2
- package/src/duckdb/extension/json/json-extension.cpp +7 -3
- package/src/duckdb/extension/json/json_functions/copy_json.cpp +16 -5
- package/src/duckdb/extension/json/json_functions/json_create.cpp +220 -93
- package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +2 -2
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +283 -117
- package/src/duckdb/extension/json/json_functions/read_json.cpp +8 -6
- package/src/duckdb/extension/json/json_functions.cpp +17 -15
- package/src/duckdb/extension/json/json_scan.cpp +8 -4
- package/src/duckdb/extension/parquet/column_reader.cpp +6 -2
- package/src/duckdb/extension/parquet/include/parquet_reader.hpp +1 -2
- package/src/duckdb/extension/parquet/include/parquet_writer.hpp +2 -2
- package/src/duckdb/extension/parquet/include/string_column_reader.hpp +1 -0
- package/src/duckdb/extension/parquet/include/thrift_tools.hpp +3 -5
- package/src/duckdb/extension/parquet/parquet-extension.cpp +2 -4
- package/src/duckdb/extension/parquet/parquet_reader.cpp +11 -22
- package/src/duckdb/extension/parquet/parquet_statistics.cpp +5 -0
- package/src/duckdb/extension/parquet/parquet_writer.cpp +4 -4
- package/src/duckdb/src/common/file_system.cpp +13 -20
- package/src/duckdb/src/common/serializer/buffered_file_writer.cpp +2 -2
- package/src/duckdb/src/execution/index/art/art.cpp +3 -1
- package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +0 -1
- package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +2 -2
- package/src/duckdb/src/execution/operator/persistent/parallel_csv_reader.cpp +1 -1
- package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +1 -2
- package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +4 -5
- package/src/duckdb/src/execution/physical_plan/plan_copy_to_file.cpp +1 -1
- package/src/duckdb/src/function/cast/cast_function_set.cpp +89 -25
- package/src/duckdb/src/function/pragma/pragma_queries.cpp +20 -15
- package/src/duckdb/src/function/table/copy_csv.cpp +4 -5
- package/src/duckdb/src/function/table/read_csv.cpp +6 -5
- package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
- package/src/duckdb/src/include/duckdb/common/file_opener.hpp +0 -1
- package/src/duckdb/src/include/duckdb/common/file_system.hpp +7 -6
- package/src/duckdb/src/include/duckdb/common/opener_file_system.hpp +118 -0
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_writer.hpp +1 -2
- package/src/duckdb/src/include/duckdb/common/types/type_map.hpp +19 -1
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/base_csv_reader.hpp +3 -2
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_line_info.hpp +1 -0
- package/src/duckdb/src/include/duckdb/main/client_data.hpp +4 -0
- package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +5 -5
- package/src/duckdb/src/main/client_context.cpp +0 -4
- package/src/duckdb/src/main/client_data.cpp +19 -0
- package/src/duckdb/src/main/database.cpp +4 -1
- package/src/duckdb/src/main/extension/extension_install.cpp +5 -6
- package/src/duckdb/src/main/extension/extension_load.cpp +11 -16
- package/src/duckdb/src/main/settings/settings.cpp +2 -3
@@ -38,7 +38,7 @@ const vector<string> ExtensionHelper::PathComponents() {
|
|
38
38
|
return vector<string> {".duckdb", "extensions", GetVersionDirectoryName(), DuckDB::Platform()};
|
39
39
|
}
|
40
40
|
|
41
|
-
string ExtensionHelper::ExtensionDirectory(DBConfig &config, FileSystem &fs
|
41
|
+
string ExtensionHelper::ExtensionDirectory(DBConfig &config, FileSystem &fs) {
|
42
42
|
#ifdef WASM_LOADABLE_EXTENSIONS
|
43
43
|
static_assertion(0, "ExtensionDirectory functionality is not supported in duckdb-wasm");
|
44
44
|
#endif
|
@@ -49,7 +49,7 @@ string ExtensionHelper::ExtensionDirectory(DBConfig &config, FileSystem &fs, Fil
|
|
49
49
|
// convert random separators to platform-canonic
|
50
50
|
extension_directory = fs.ConvertSeparators(extension_directory);
|
51
51
|
// expand ~ in extension directory
|
52
|
-
extension_directory = fs.ExpandPath(extension_directory
|
52
|
+
extension_directory = fs.ExpandPath(extension_directory);
|
53
53
|
if (!fs.DirectoryExists(extension_directory)) {
|
54
54
|
auto sep = fs.PathSeparator();
|
55
55
|
auto splits = StringUtil::Split(extension_directory, sep);
|
@@ -66,7 +66,7 @@ string ExtensionHelper::ExtensionDirectory(DBConfig &config, FileSystem &fs, Fil
|
|
66
66
|
}
|
67
67
|
}
|
68
68
|
} else { // otherwise default to home
|
69
|
-
string home_directory = fs.GetHomeDirectory(
|
69
|
+
string home_directory = fs.GetHomeDirectory();
|
70
70
|
// exception if the home directory does not exist, don't create whatever we think is home
|
71
71
|
if (!fs.DirectoryExists(home_directory)) {
|
72
72
|
throw IOException("Can't find the home directory at '%s'\nSpecify a home directory using the SET "
|
@@ -90,8 +90,7 @@ string ExtensionHelper::ExtensionDirectory(DBConfig &config, FileSystem &fs, Fil
|
|
90
90
|
string ExtensionHelper::ExtensionDirectory(ClientContext &context) {
|
91
91
|
auto &config = DBConfig::GetConfig(context);
|
92
92
|
auto &fs = FileSystem::GetFileSystem(context);
|
93
|
-
|
94
|
-
return ExtensionDirectory(config, fs, opener);
|
93
|
+
return ExtensionDirectory(config, fs);
|
95
94
|
}
|
96
95
|
|
97
96
|
bool ExtensionHelper::CreateSuggestions(const string &extension_name, string &message) {
|
@@ -118,7 +117,7 @@ void ExtensionHelper::InstallExtension(DBConfig &config, FileSystem &fs, const s
|
|
118
117
|
// Install is currently a no-op
|
119
118
|
return;
|
120
119
|
#endif
|
121
|
-
string local_path = ExtensionDirectory(config, fs
|
120
|
+
string local_path = ExtensionDirectory(config, fs);
|
122
121
|
InstallExtensionInternal(config, nullptr, fs, local_path, extension, force_install);
|
123
122
|
}
|
124
123
|
|
@@ -44,24 +44,22 @@ static void ComputeSHA256FileSegment(FileHandle *handle, const idx_t start, cons
|
|
44
44
|
ComputeSHA256String(file_content, res);
|
45
45
|
}
|
46
46
|
|
47
|
-
bool ExtensionHelper::TryInitialLoad(DBConfig &config,
|
47
|
+
bool ExtensionHelper::TryInitialLoad(DBConfig &config, FileSystem &fs, const string &extension,
|
48
48
|
ExtensionInitResult &result, string &error) {
|
49
49
|
if (!config.options.enable_external_access) {
|
50
50
|
throw PermissionException("Loading external extensions is disabled through configuration");
|
51
51
|
}
|
52
|
-
VirtualFileSystem fallback_file_system; // config may not contain one yet
|
53
|
-
auto &fs = config.file_system ? *config.file_system : fallback_file_system;
|
54
52
|
auto filename = fs.ConvertSeparators(extension);
|
55
53
|
|
56
54
|
// shorthand case
|
57
55
|
if (!ExtensionHelper::IsFullPath(extension)) {
|
58
|
-
string local_path =
|
59
|
-
|
56
|
+
string local_path =
|
57
|
+
!config.options.extension_directory.empty() ? config.options.extension_directory : fs.GetHomeDirectory();
|
60
58
|
|
61
59
|
// convert random separators to platform-canonic
|
62
60
|
local_path = fs.ConvertSeparators(local_path);
|
63
61
|
// expand ~ in extension directory
|
64
|
-
local_path = fs.ExpandPath(local_path
|
62
|
+
local_path = fs.ExpandPath(local_path);
|
65
63
|
auto path_components = PathComponents();
|
66
64
|
for (auto &path_ele : path_components) {
|
67
65
|
local_path = fs.JoinPath(local_path, path_ele);
|
@@ -201,20 +199,17 @@ bool ExtensionHelper::TryInitialLoad(DBConfig &config, FileOpener *opener, const
|
|
201
199
|
return true;
|
202
200
|
}
|
203
201
|
|
204
|
-
ExtensionInitResult ExtensionHelper::InitialLoad(DBConfig &config,
|
202
|
+
ExtensionInitResult ExtensionHelper::InitialLoad(DBConfig &config, FileSystem &fs, const string &extension) {
|
205
203
|
string error;
|
206
204
|
ExtensionInitResult result;
|
207
|
-
if (!TryInitialLoad(config,
|
205
|
+
if (!TryInitialLoad(config, fs, extension, result, error)) {
|
208
206
|
if (!ExtensionHelper::AllowAutoInstall(extension)) {
|
209
207
|
throw IOException(error);
|
210
208
|
}
|
211
209
|
// the extension load failed - try installing the extension
|
212
|
-
|
213
|
-
throw InternalException("Attempting to install an extension without a file system");
|
214
|
-
}
|
215
|
-
ExtensionHelper::InstallExtension(config, *config.file_system, extension, false);
|
210
|
+
ExtensionHelper::InstallExtension(config, fs, extension, false);
|
216
211
|
// try loading again
|
217
|
-
if (!TryInitialLoad(config,
|
212
|
+
if (!TryInitialLoad(config, fs, extension, result, error)) {
|
218
213
|
throw IOException(error);
|
219
214
|
}
|
220
215
|
}
|
@@ -242,12 +237,12 @@ string ExtensionHelper::GetExtensionName(const string &original_name) {
|
|
242
237
|
return ExtensionHelper::ApplyExtensionAlias(splits.front());
|
243
238
|
}
|
244
239
|
|
245
|
-
void ExtensionHelper::LoadExternalExtension(DatabaseInstance &db,
|
240
|
+
void ExtensionHelper::LoadExternalExtension(DatabaseInstance &db, FileSystem &fs, const string &extension) {
|
246
241
|
if (db.ExtensionIsLoaded(extension)) {
|
247
242
|
return;
|
248
243
|
}
|
249
244
|
|
250
|
-
auto res = InitialLoad(DBConfig::GetConfig(db),
|
245
|
+
auto res = InitialLoad(DBConfig::GetConfig(db), fs, extension);
|
251
246
|
auto init_fun_name = res.basename + "_init";
|
252
247
|
|
253
248
|
ext_init_fun_t init_fun;
|
@@ -264,7 +259,7 @@ void ExtensionHelper::LoadExternalExtension(DatabaseInstance &db, FileOpener *op
|
|
264
259
|
}
|
265
260
|
|
266
261
|
void ExtensionHelper::LoadExternalExtension(ClientContext &context, const string &extension) {
|
267
|
-
LoadExternalExtension(DatabaseInstance::GetDatabase(context), FileSystem::
|
262
|
+
LoadExternalExtension(DatabaseInstance::GetDatabase(context), FileSystem::GetFileSystem(context), extension);
|
268
263
|
}
|
269
264
|
|
270
265
|
string ExtensionHelper::ExtractExtensionPrefixFromPath(const string &path) {
|
@@ -735,9 +735,8 @@ void LogQueryPathSetting::SetLocal(ClientContext &context, const Value &input) {
|
|
735
735
|
// empty path: clean up query writer
|
736
736
|
client_data.log_query_writer = nullptr;
|
737
737
|
} else {
|
738
|
-
client_data.log_query_writer =
|
739
|
-
|
740
|
-
BufferedFileWriter::DEFAULT_OPEN_FLAGS, client_data.file_opener.get());
|
738
|
+
client_data.log_query_writer = make_uniq<BufferedFileWriter>(FileSystem::GetFileSystem(context), path,
|
739
|
+
BufferedFileWriter::DEFAULT_OPEN_FLAGS);
|
741
740
|
}
|
742
741
|
}
|
743
742
|
|