duckdb 0.7.2-dev2995.0 → 0.7.2-dev3117.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/binding.gyp +1 -0
- package/package.json +1 -1
- package/src/duckdb/extension/json/include/json_deserializer.hpp +1 -0
- package/src/duckdb/extension/json/include/json_serializer.hpp +8 -1
- package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +1 -3
- package/src/duckdb/extension/json/json_functions/json_structure.cpp +3 -3
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +3 -2
- package/src/duckdb/extension/parquet/parquet-extension.cpp +9 -7
- package/src/duckdb/src/common/enum_util.cpp +5908 -0
- package/src/duckdb/src/common/enums/expression_type.cpp +216 -4
- package/src/duckdb/src/common/enums/join_type.cpp +6 -5
- package/src/duckdb/src/common/enums/physical_operator_type.cpp +2 -0
- package/src/duckdb/src/common/exception.cpp +1 -1
- package/src/duckdb/src/common/exception_format_value.cpp +2 -2
- package/src/duckdb/src/common/multi_file_reader.cpp +14 -0
- package/src/duckdb/src/common/serializer/binary_deserializer.cpp +143 -0
- package/src/duckdb/src/common/serializer/binary_serializer.cpp +160 -0
- package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +3 -3
- package/src/duckdb/src/common/types.cpp +11 -10
- package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +4 -4
- package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +2 -1
- package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +2 -3
- package/src/duckdb/src/execution/aggregate_hashtable.cpp +3 -3
- package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
- package/src/duckdb/src/execution/operator/aggregate/grouped_aggregate_data.cpp +2 -2
- package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +3 -2
- package/src/duckdb/src/execution/operator/helper/physical_streaming_sample.cpp +2 -1
- package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +2 -1
- package/src/duckdb/src/execution/operator/join/physical_comparison_join.cpp +2 -1
- package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +165 -0
- package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +1 -1
- package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +9 -7
- package/src/duckdb/src/execution/partitionable_hashtable.cpp +2 -2
- package/src/duckdb/src/execution/physical_plan/plan_copy_to_file.cpp +25 -4
- package/src/duckdb/src/execution/physical_plan/plan_sample.cpp +2 -1
- package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +5 -4
- package/src/duckdb/src/function/table/copy_csv.cpp +85 -29
- package/src/duckdb/src/function/table/read_csv.cpp +17 -11
- package/src/duckdb/src/function/table/system/duckdb_settings.cpp +2 -1
- package/src/duckdb/src/function/table/system/duckdb_types.cpp +2 -1
- package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
- package/src/duckdb/src/include/duckdb/common/enum_util.hpp +958 -0
- package/src/duckdb/src/include/duckdb/common/enums/join_type.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/exception.hpp +4 -4
- package/src/duckdb/src/include/duckdb/common/exception_format_value.hpp +3 -2
- package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +44 -0
- package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +93 -0
- package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +92 -0
- package/src/duckdb/src/include/duckdb/common/serializer/format_deserializer.hpp +7 -3
- package/src/duckdb/src/include/duckdb/common/serializer/format_serializer.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_segment.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/vector.hpp +61 -14
- package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +3 -2
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/distinct_aggregate_data.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/grouped_aggregate_data.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_hash_aggregate.hpp +3 -3
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_copy_to_file.hpp +68 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +2 -0
- package/src/duckdb/src/include/duckdb/execution/partitionable_hashtable.hpp +3 -3
- package/src/duckdb/src/include/duckdb/execution/radix_partitioned_hashtable.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/copy_function.hpp +32 -4
- package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +4 -2
- package/src/duckdb/src/include/duckdb/main/config.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/database.hpp +1 -3
- package/src/duckdb/src/include/duckdb/main/database_path_and_type.hpp +24 -0
- package/src/duckdb/src/include/duckdb/main/relation/setop_relation.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/sample_options.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/expression_binder/base_select_binder.hpp +2 -0
- package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +2 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_aggregate.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/query_node/bound_select_node.hpp +1 -1
- package/src/duckdb/src/include/duckdb/verification/deserialized_statement_verifier_v2.hpp +26 -0
- package/src/duckdb/src/include/duckdb/verification/statement_verifier.hpp +1 -0
- package/src/duckdb/src/main/client_context.cpp +1 -0
- package/src/duckdb/src/main/client_verify.cpp +1 -0
- package/src/duckdb/src/main/database.cpp +11 -23
- package/src/duckdb/src/main/database_path_and_type.cpp +23 -0
- package/src/duckdb/src/main/relation/join_relation.cpp +2 -1
- package/src/duckdb/src/main/relation/setop_relation.cpp +2 -3
- package/src/duckdb/src/parser/expression/window_expression.cpp +1 -1
- package/src/duckdb/src/parser/parsed_data/sample_options.cpp +2 -2
- package/src/duckdb/src/parser/query_node/select_node.cpp +1 -1
- package/src/duckdb/src/parser/result_modifier.cpp +2 -2
- package/src/duckdb/src/parser/statement/select_statement.cpp +0 -44
- package/src/duckdb/src/parser/tableref/joinref.cpp +3 -3
- package/src/duckdb/src/parser/tableref.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_function.cpp +3 -3
- package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +6 -0
- package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +4 -1
- package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +7 -0
- package/src/duckdb/src/planner/operator/logical_aggregate.cpp +1 -1
- package/src/duckdb/src/planner/operator/logical_comparison_join.cpp +2 -2
- package/src/duckdb/src/verification/deserialized_statement_verifier.cpp +2 -1
- package/src/duckdb/src/verification/deserialized_statement_verifier_v2.cpp +20 -0
- package/src/duckdb/src/verification/statement_verifier.cpp +3 -0
- package/src/duckdb/ub_src_common.cpp +2 -2
- package/src/duckdb/ub_src_common_serializer.cpp +4 -2
- package/src/duckdb/ub_src_execution_operator_persistent.cpp +2 -0
- package/src/duckdb/ub_src_main.cpp +2 -0
- package/src/duckdb/src/common/serializer/enum_serializer.cpp +0 -1180
- package/src/duckdb/src/common/vector.cpp +0 -12
- package/src/duckdb/src/include/duckdb/common/serializer/enum_serializer.hpp +0 -113
package/binding.gyp
CHANGED
@@ -135,6 +135,7 @@
|
|
135
135
|
"src/duckdb/ub_src_transaction.cpp",
|
136
136
|
"src/duckdb/src/verification/copied_statement_verifier.cpp",
|
137
137
|
"src/duckdb/src/verification/deserialized_statement_verifier.cpp",
|
138
|
+
"src/duckdb/src/verification/deserialized_statement_verifier_v2.cpp",
|
138
139
|
"src/duckdb/src/verification/external_statement_verifier.cpp",
|
139
140
|
"src/duckdb/src/verification/no_operator_caching_verifier.cpp",
|
140
141
|
"src/duckdb/src/verification/parsed_statement_verifier.cpp",
|
package/package.json
CHANGED
@@ -24,12 +24,19 @@ private:
|
|
24
24
|
// Either adds a value to the current object with the current tag, or appends it to the current array
|
25
25
|
void PushValue(yyjson_mut_val *val);
|
26
26
|
|
27
|
-
public:
|
28
27
|
explicit JsonSerializer(yyjson_mut_doc *doc, bool skip_if_null, bool skip_if_empty)
|
29
28
|
: doc(doc), stack({yyjson_mut_obj(doc)}), skip_if_null(skip_if_null), skip_if_empty(skip_if_empty) {
|
30
29
|
serialize_enum_as_string = true;
|
31
30
|
}
|
32
31
|
|
32
|
+
public:
|
33
|
+
template <class T>
|
34
|
+
static yyjson_mut_val *Serialize(T &value, yyjson_mut_doc *doc, bool skip_if_null, bool skip_if_empty) {
|
35
|
+
JsonSerializer serializer(doc, skip_if_null, skip_if_empty);
|
36
|
+
value.FormatSerialize(serializer);
|
37
|
+
return serializer.GetRootObject();
|
38
|
+
}
|
39
|
+
|
33
40
|
yyjson_mut_val *GetRootObject() {
|
34
41
|
D_ASSERT(stack.size() == 1); // or we forgot to pop somewhere
|
35
42
|
return stack.front();
|
@@ -98,9 +98,7 @@ static void JsonSerializeFunction(DataChunk &args, ExpressionState &state, Vecto
|
|
98
98
|
throw NotImplementedException("Only SELECT statements can be serialized to json!");
|
99
99
|
}
|
100
100
|
auto &select = statement->Cast<SelectStatement>();
|
101
|
-
auto
|
102
|
-
select.FormatSerialize(serializer);
|
103
|
-
auto json = serializer.GetRootObject();
|
101
|
+
auto json = JsonSerializer::Serialize(select, doc, info.skip_if_null, info.skip_if_empty);
|
104
102
|
|
105
103
|
yyjson_mut_arr_append(statements_arr, json);
|
106
104
|
}
|
@@ -3,6 +3,7 @@
|
|
3
3
|
#include "json_executors.hpp"
|
4
4
|
#include "json_scan.hpp"
|
5
5
|
#include "json_transform.hpp"
|
6
|
+
#include "duckdb/common/enum_util.hpp"
|
6
7
|
|
7
8
|
namespace duckdb {
|
8
9
|
|
@@ -300,7 +301,7 @@ bool JSONStructureNode::EliminateCandidateFormats(idx_t count, Vector &string_ve
|
|
300
301
|
success = TryParse<TryParseTimeStamp, timestamp_t>(string_vector, format, count);
|
301
302
|
break;
|
302
303
|
default:
|
303
|
-
throw InternalException("No date/timestamp formats for %s",
|
304
|
+
throw InternalException("No date/timestamp formats for %s", EnumUtil::ToString(type));
|
304
305
|
}
|
305
306
|
if (success) {
|
306
307
|
while (formats.size() > i) {
|
@@ -457,8 +458,7 @@ static inline yyjson_mut_val *ConvertStructure(const JSONStructureNode &node, yy
|
|
457
458
|
case LogicalTypeId::STRUCT:
|
458
459
|
return ConvertStructureObject(node, doc);
|
459
460
|
default:
|
460
|
-
|
461
|
-
return yyjson_mut_strncpy(doc, type_string.c_str(), type_string.length());
|
461
|
+
return yyjson_mut_str(doc, EnumUtil::ToChars(desc.type));
|
462
462
|
}
|
463
463
|
}
|
464
464
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
#include "json_transform.hpp"
|
2
2
|
|
3
3
|
#include "duckdb/common/types.hpp"
|
4
|
+
#include "duckdb/common/enum_util.hpp"
|
4
5
|
#include "duckdb/execution/expression_executor.hpp"
|
5
6
|
#include "duckdb/function/scalar/nested_functions.hpp"
|
6
7
|
#include "json_functions.hpp"
|
@@ -266,7 +267,7 @@ bool JSONTransform::GetStringVector(yyjson_val *vals[], const idx_t count, const
|
|
266
267
|
if (!val || unsafe_yyjson_is_null(val)) {
|
267
268
|
validity.SetInvalid(i);
|
268
269
|
} else if (options.strict_cast && !unsafe_yyjson_is_str(val)) {
|
269
|
-
options.error_message = StringUtil::Format("Unable to cast '%s' to " +
|
270
|
+
options.error_message = StringUtil::Format("Unable to cast '%s' to " + EnumUtil::ToString(target.id()),
|
270
271
|
JSONCommon::ValToString(val, 50));
|
271
272
|
options.object_index = i;
|
272
273
|
return false;
|
@@ -343,7 +344,7 @@ static bool TransformFromStringWithFormat(yyjson_val *vals[], Vector &result, co
|
|
343
344
|
case LogicalTypeId::TIMESTAMP:
|
344
345
|
return TransformStringWithFormat<TryParseTimeStamp, timestamp_t>(string_vector, format, count, result, options);
|
345
346
|
default:
|
346
|
-
throw InternalException("No date/timestamp formats for %s",
|
347
|
+
throw InternalException("No date/timestamp formats for %s", EnumUtil::ToString(result.GetType().id()));
|
347
348
|
}
|
348
349
|
}
|
349
350
|
|
@@ -304,6 +304,9 @@ public:
|
|
304
304
|
parquet_options.file_row_number = BooleanValue::Get(kv.second);
|
305
305
|
}
|
306
306
|
}
|
307
|
+
if (parquet_options.file_options.auto_detect_hive_partitioning) {
|
308
|
+
parquet_options.file_options.hive_partitioning = MultiFileReaderOptions::AutoDetectHivePartitioning(files);
|
309
|
+
}
|
307
310
|
return ParquetScanBindInternal(context, std::move(files), return_types, names, parquet_options);
|
308
311
|
}
|
309
312
|
|
@@ -665,14 +668,13 @@ unique_ptr<LocalFunctionData> ParquetWriteInitializeLocal(ExecutionContext &cont
|
|
665
668
|
}
|
666
669
|
|
667
670
|
//===--------------------------------------------------------------------===//
|
668
|
-
//
|
671
|
+
// Execution Mode
|
669
672
|
//===--------------------------------------------------------------------===//
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
return false;
|
673
|
+
CopyFunctionExecutionMode ParquetWriteExecutionMode(bool preserve_insertion_order, bool supports_batch_index) {
|
674
|
+
if (!preserve_insertion_order) {
|
675
|
+
return CopyFunctionExecutionMode::PARALLEL_COPY_TO_FILE;
|
674
676
|
}
|
675
|
-
return
|
677
|
+
return CopyFunctionExecutionMode::REGULAR_COPY_TO_FILE;
|
676
678
|
}
|
677
679
|
|
678
680
|
unique_ptr<TableRef> ParquetScanReplacement(ClientContext &context, const string &table_name,
|
@@ -714,7 +716,7 @@ void ParquetExtension::Load(DuckDB &db) {
|
|
714
716
|
function.copy_to_sink = ParquetWriteSink;
|
715
717
|
function.copy_to_combine = ParquetWriteCombine;
|
716
718
|
function.copy_to_finalize = ParquetWriteFinalize;
|
717
|
-
function.
|
719
|
+
function.execution_mode = ParquetWriteExecutionMode;
|
718
720
|
function.copy_from_bind = ParquetScanFunction::ParquetReadBind;
|
719
721
|
function.copy_from_function = scan_fun.functions[0];
|
720
722
|
|