duckdb 0.8.1-dev96.0 → 0.8.1
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 +8 -8
- package/package.json +3 -1
- package/src/duckdb/extension/icu/icu-datepart.cpp +1 -1
- package/src/duckdb/extension/icu/icu-extension.cpp +1 -1
- package/src/duckdb/extension/icu/icu-makedate.cpp +5 -4
- package/src/duckdb/extension/icu/icu-strptime.cpp +1 -1
- package/src/duckdb/extension/icu/third_party/icu/i18n/nfsubs.cpp +0 -2
- package/src/duckdb/extension/json/buffered_json_reader.cpp +23 -14
- package/src/duckdb/extension/json/include/buffered_json_reader.hpp +6 -6
- package/src/duckdb/extension/json/include/json_common.hpp +12 -2
- package/src/duckdb/extension/json/include/json_scan.hpp +5 -2
- package/src/duckdb/extension/json/json_functions/json_contains.cpp +5 -0
- package/src/duckdb/extension/json/json_functions/json_create.cpp +10 -10
- package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +2 -2
- package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +2 -2
- package/src/duckdb/extension/json/json_functions/json_structure.cpp +5 -3
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +11 -11
- package/src/duckdb/extension/json/json_functions/read_json.cpp +2 -1
- package/src/duckdb/extension/json/json_functions.cpp +6 -3
- package/src/duckdb/extension/json/json_scan.cpp +43 -27
- package/src/duckdb/extension/parquet/column_reader.cpp +5 -1
- package/src/duckdb/extension/parquet/include/decode_utils.hpp +6 -0
- package/src/duckdb/extension/parquet/parquet-extension.cpp +26 -1
- package/src/duckdb/src/catalog/catalog.cpp +5 -17
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +7 -1
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +121 -0
- package/src/duckdb/src/catalog/catalog_search_path.cpp +49 -12
- package/src/duckdb/src/catalog/default/default_types.cpp +9 -84
- package/src/duckdb/src/common/adbc/adbc.cpp +118 -12
- package/src/duckdb/src/common/adbc/driver_manager.cpp +0 -20
- package/src/duckdb/src/common/arrow/arrow_converter.cpp +11 -12
- package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +4 -3
- package/src/duckdb/src/common/exception.cpp +4 -1
- package/src/duckdb/src/common/exception_format_value.cpp +24 -15
- package/src/duckdb/src/common/multi_file_reader.cpp +3 -0
- package/src/duckdb/src/common/random_engine.cpp +1 -1
- package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +5 -4
- package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +44 -7
- package/src/duckdb/src/common/types/time.cpp +2 -8
- package/src/duckdb/src/common/types/timestamp.cpp +37 -1
- package/src/duckdb/src/common/types/value.cpp +1 -0
- package/src/duckdb/src/common/types.cpp +4 -0
- package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
- package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
- package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +30 -33
- package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +52 -65
- package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
- package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +39 -40
- package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
- package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
- package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
- package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +88 -100
- package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
- package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
- package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +37 -38
- package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
- package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +44 -80
- package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
- package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +104 -122
- package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +57 -93
- package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +22 -23
- package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +18 -19
- package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
- package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
- package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
- package/src/duckdb/src/core_functions/function_list.cpp +1 -0
- package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +3 -0
- package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +14 -0
- package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +23 -6
- package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +1 -2
- package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +3 -0
- package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -3
- package/src/duckdb/src/execution/index/art/art.cpp +80 -7
- package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +20 -1
- package/src/duckdb/src/execution/index/art/leaf.cpp +11 -11
- package/src/duckdb/src/execution/index/art/leaf_segment.cpp +10 -0
- package/src/duckdb/src/execution/index/art/node.cpp +48 -35
- package/src/duckdb/src/execution/index/art/node16.cpp +3 -0
- package/src/duckdb/src/execution/index/art/node256.cpp +1 -0
- package/src/duckdb/src/execution/index/art/node4.cpp +3 -0
- package/src/duckdb/src/execution/index/art/node48.cpp +2 -0
- package/src/duckdb/src/execution/index/art/prefix.cpp +2 -0
- package/src/duckdb/src/execution/join_hashtable.cpp +2 -0
- package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +26 -9
- package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +5 -2
- package/src/duckdb/src/execution/operator/helper/physical_set.cpp +5 -1
- package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +3 -6
- package/src/duckdb/src/execution/operator/projection/physical_tableinout_function.cpp +1 -0
- package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +8 -3
- package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +0 -1
- package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +29 -3
- package/src/duckdb/src/execution/reservoir_sample.cpp +18 -4
- package/src/duckdb/src/function/aggregate/distributive/count.cpp +159 -21
- package/src/duckdb/src/function/aggregate/distributive/first.cpp +67 -74
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +7 -7
- package/src/duckdb/src/function/cast/list_casts.cpp +2 -4
- package/src/duckdb/src/function/pragma/pragma_queries.cpp +33 -23
- package/src/duckdb/src/function/scalar/list/list_extract.cpp +1 -1
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +1 -1
- package/src/duckdb/src/function/scalar/string/regexp/regexp_util.cpp +6 -2
- package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +2 -2
- package/src/duckdb/src/function/table/arrow.cpp +2 -2
- package/src/duckdb/src/function/table/checkpoint.cpp +3 -0
- package/src/duckdb/src/function/table/read_csv.cpp +15 -17
- package/src/duckdb/src/function/table/repeat.cpp +3 -0
- package/src/duckdb/src/function/table/repeat_row.cpp +8 -1
- package/src/duckdb/src/function/table/system/pragma_storage_info.cpp +4 -4
- package/src/duckdb/src/function/table/system/test_vector_types.cpp +81 -25
- package/src/duckdb/src/function/table/table_scan.cpp +2 -2
- package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +0 -3
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +11 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +8 -2
- package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +97 -0
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_appender.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_converter.hpp +2 -3
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_options.hpp +8 -1
- package/src/duckdb/src/include/duckdb/common/arrow/result_arrow_wrapper.hpp +0 -1
- package/src/duckdb/src/include/duckdb/common/bit_utils.hpp +16 -22
- package/src/duckdb/src/include/duckdb/common/exception.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/types/time.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +4 -14
- package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +92 -57
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
- package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +9 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +2 -6
- package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +16 -36
- package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +10 -4
- package/src/duckdb/src/include/duckdb/execution/index/art/fixed_size_allocator.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/index/art/leaf_segment.hpp +2 -0
- package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +13 -3
- package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +1 -0
- package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +9 -30
- package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
- package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +4 -2
- package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -1
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +3 -2
- package/src/duckdb/src/include/duckdb/main/attached_database.hpp +4 -1
- package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +3 -1
- package/src/duckdb/src/include/duckdb/main/config.hpp +5 -0
- package/src/duckdb/src/include/duckdb/main/database_manager.hpp +1 -0
- package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +142 -136
- package/src/duckdb/src/include/duckdb/main/query_result.hpp +6 -0
- package/src/duckdb/src/include/duckdb/main/settings.hpp +19 -0
- package/src/duckdb/src/include/duckdb/optimizer/unnest_rewriter.hpp +4 -0
- package/src/duckdb/src/include/duckdb/parallel/meta_pipeline.hpp +12 -3
- package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +0 -2
- package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +5 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +6 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +5 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +5 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +6 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +4 -0
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/byte_reader.hpp +4 -0
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/in_memory_block_manager.hpp +13 -13
- package/src/duckdb/src/include/duckdb/storage/index.hpp +4 -2
- package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +0 -6
- package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table_storage_info.hpp +0 -2
- package/src/duckdb/src/main/attached_database.cpp +8 -0
- package/src/duckdb/src/main/capi/arrow-c.cpp +4 -4
- package/src/duckdb/src/main/capi/config-c.cpp +2 -5
- package/src/duckdb/src/main/client_context.cpp +4 -3
- package/src/duckdb/src/main/config.cpp +2 -0
- package/src/duckdb/src/main/database.cpp +1 -0
- package/src/duckdb/src/main/database_manager.cpp +21 -0
- package/src/duckdb/src/main/query_result.cpp +6 -2
- package/src/duckdb/src/main/settings/settings.cpp +41 -6
- package/src/duckdb/src/optimizer/unnest_rewriter.cpp +27 -16
- package/src/duckdb/src/parallel/executor.cpp +38 -14
- package/src/duckdb/src/parallel/meta_pipeline.cpp +17 -3
- package/src/duckdb/src/parser/column_definition.cpp +5 -8
- package/src/duckdb/src/parser/parsed_data/create_info.cpp +0 -3
- package/src/duckdb/src/parser/parser.cpp +95 -35
- package/src/duckdb/src/parser/transform/expression/transform_function.cpp +1 -0
- package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +3 -0
- package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +0 -2
- package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +0 -3
- package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +3 -0
- package/src/duckdb/src/parser/transformer.cpp +0 -2
- package/src/duckdb/src/planner/bind_context.cpp +3 -4
- package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +0 -2
- package/src/duckdb/src/planner/binder/expression/bind_positional_reference_expression.cpp +8 -3
- package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +31 -15
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +0 -27
- package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +18 -1
- package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +0 -25
- package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -114
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +6 -1
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +5 -0
- package/src/duckdb/src/planner/bound_result_modifier.cpp +14 -0
- package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +6 -5
- package/src/duckdb/src/planner/expression/bound_default_expression.cpp +7 -1
- package/src/duckdb/src/planner/expression.cpp +3 -0
- package/src/duckdb/src/planner/expression_binder.cpp +3 -2
- package/src/duckdb/src/planner/operator/logical_distinct.cpp +5 -4
- package/src/duckdb/src/planner/operator/logical_pivot.cpp +14 -2
- package/src/duckdb/src/planner/planner.cpp +5 -15
- package/src/duckdb/src/storage/data_table.cpp +10 -8
- package/src/duckdb/src/storage/index.cpp +13 -0
- package/src/duckdb/src/storage/storage_manager.cpp +6 -0
- package/src/duckdb/src/storage/table/column_data.cpp +7 -3
- package/src/duckdb/src/storage/table/list_column_data.cpp +5 -4
- package/src/duckdb/src/storage/table/row_group.cpp +4 -3
- package/src/duckdb/src/storage/table/row_group_collection.cpp +6 -3
- package/src/duckdb/src/storage/table/standard_column_data.cpp +4 -3
- package/src/duckdb/src/storage/table/struct_column_data.cpp +4 -3
- package/src/duckdb/src/storage/wal_replay.cpp +4 -5
- package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +0 -1
- package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +0 -14
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +12828 -12956
- package/src/duckdb/third_party/zstd/compress/zstd_compress.cpp +3 -0
- package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_cwksp.h +4 -0
- package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +5 -5
- package/src/duckdb/ub_src_parser_transform_statement.cpp +0 -2
- package/test/extension.test.ts +11 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_database_info.hpp +0 -46
- package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +0 -27
@@ -274,7 +274,7 @@ static void ExportStateAggregateSerialize(FieldWriter &writer, const FunctionDat
|
|
274
274
|
const AggregateFunction &function) {
|
275
275
|
throw NotImplementedException("FIXME: export state serialize");
|
276
276
|
}
|
277
|
-
static unique_ptr<FunctionData> ExportStateAggregateDeserialize(
|
277
|
+
static unique_ptr<FunctionData> ExportStateAggregateDeserialize(PlanDeserializationState &state, FieldReader &reader,
|
278
278
|
AggregateFunction &bound_function) {
|
279
279
|
throw NotImplementedException("FIXME: export state deserialize");
|
280
280
|
}
|
@@ -283,7 +283,7 @@ static void ExportStateScalarSerialize(FieldWriter &writer, const FunctionData *
|
|
283
283
|
const ScalarFunction &function) {
|
284
284
|
throw NotImplementedException("FIXME: export state serialize");
|
285
285
|
}
|
286
|
-
static unique_ptr<FunctionData> ExportStateScalarDeserialize(
|
286
|
+
static unique_ptr<FunctionData> ExportStateScalarDeserialize(PlanDeserializationState &state, FieldReader &reader,
|
287
287
|
ScalarFunction &bound_function) {
|
288
288
|
throw NotImplementedException("FIXME: export state deserialize");
|
289
289
|
}
|
@@ -206,8 +206,8 @@ unique_ptr<FunctionData> ArrowTableFunction::ArrowScanBind(ClientContext &contex
|
|
206
206
|
throw InvalidInputException("arrow_scan: released schema passed");
|
207
207
|
}
|
208
208
|
if (schema.dictionary) {
|
209
|
-
res->arrow_convert_data
|
210
|
-
|
209
|
+
auto logical_type = GetArrowLogicalType(schema, res->arrow_convert_data, col_idx);
|
210
|
+
res->arrow_convert_data[col_idx] = make_uniq<ArrowConvertData>(std::move(logical_type));
|
211
211
|
return_types.emplace_back(GetArrowLogicalType(*schema.dictionary, res->arrow_convert_data, col_idx));
|
212
212
|
} else {
|
213
213
|
return_types.emplace_back(GetArrowLogicalType(schema, res->arrow_convert_data, col_idx));
|
@@ -32,6 +32,9 @@ static unique_ptr<FunctionData> CheckpointBind(ClientContext &context, TableFunc
|
|
32
32
|
optional_ptr<AttachedDatabase> db;
|
33
33
|
auto &db_manager = DatabaseManager::Get(context);
|
34
34
|
if (!input.inputs.empty()) {
|
35
|
+
if (input.inputs[0].IsNull()) {
|
36
|
+
throw BinderException("Database cannot be NULL");
|
37
|
+
}
|
35
38
|
auto &db_name = StringValue::Get(input.inputs[0]);
|
36
39
|
db = db_manager.GetDatabase(context, db_name);
|
37
40
|
if (!db) {
|
@@ -378,8 +378,8 @@ private:
|
|
378
378
|
//! Current File Number
|
379
379
|
idx_t file_number = 0;
|
380
380
|
idx_t max_tuple_end = 0;
|
381
|
-
//!
|
382
|
-
//!
|
381
|
+
//! The vector stores positions where threads ended the last line they read in the CSV File, and the set stores
|
382
|
+
//! Positions where they started reading the first line.
|
383
383
|
vector<vector<idx_t>> tuple_end;
|
384
384
|
vector<set<idx_t>> tuple_start;
|
385
385
|
//! Tuple end to batch
|
@@ -424,6 +424,7 @@ bool ParallelCSVGlobalState::Finished() {
|
|
424
424
|
|
425
425
|
void ParallelCSVGlobalState::Verify() {
|
426
426
|
// All threads are done, we run some magic sweet verification code
|
427
|
+
lock_guard<mutex> parallel_lock(main_mutex);
|
427
428
|
if (running_threads == 0) {
|
428
429
|
D_ASSERT(tuple_end.size() == tuple_start.size());
|
429
430
|
for (idx_t i = 0; i < tuple_start.size(); i++) {
|
@@ -559,15 +560,13 @@ bool ParallelCSVGlobalState::Next(ClientContext &context, const ReadCSVData &bin
|
|
559
560
|
}
|
560
561
|
void ParallelCSVGlobalState::UpdateVerification(VerificationPositions positions, idx_t file_number_p, idx_t batch_idx) {
|
561
562
|
lock_guard<mutex> parallel_lock(main_mutex);
|
562
|
-
if (positions.
|
563
|
-
|
564
|
-
max_tuple_end = positions.end_of_last_line;
|
565
|
-
}
|
566
|
-
tuple_end_to_batch[file_number_p][positions.end_of_last_line] = batch_idx;
|
567
|
-
batch_to_tuple_end[file_number_p][batch_idx] = tuple_end[file_number_p].size();
|
568
|
-
tuple_start[file_number_p].insert(positions.beginning_of_first_line);
|
569
|
-
tuple_end[file_number_p].push_back(positions.end_of_last_line);
|
563
|
+
if (positions.end_of_last_line > max_tuple_end) {
|
564
|
+
max_tuple_end = positions.end_of_last_line;
|
570
565
|
}
|
566
|
+
tuple_end_to_batch[file_number_p][positions.end_of_last_line] = batch_idx;
|
567
|
+
batch_to_tuple_end[file_number_p][batch_idx] = tuple_end[file_number_p].size();
|
568
|
+
tuple_start[file_number_p].insert(positions.beginning_of_first_line);
|
569
|
+
tuple_end[file_number_p].push_back(positions.end_of_last_line);
|
571
570
|
}
|
572
571
|
|
573
572
|
void ParallelCSVGlobalState::UpdateLinesRead(CSVBufferRead &buffer_read, idx_t file_idx) {
|
@@ -690,17 +689,14 @@ static void ParallelReadCSVFunction(ClientContext &context, TableFunctionInput &
|
|
690
689
|
}
|
691
690
|
if (csv_local_state.csv_reader->finished) {
|
692
691
|
auto verification_updates = csv_local_state.csv_reader->GetVerificationPositions();
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
csv_local_state.csv_reader->buffer->local_batch_index);
|
697
|
-
}
|
692
|
+
csv_global_state.UpdateVerification(verification_updates,
|
693
|
+
csv_local_state.csv_reader->buffer->buffer->GetFileNumber(),
|
694
|
+
csv_local_state.csv_reader->buffer->local_batch_index);
|
698
695
|
csv_global_state.UpdateLinesRead(*csv_local_state.csv_reader->buffer, csv_local_state.csv_reader->file_idx);
|
699
696
|
auto has_next = csv_global_state.Next(context, bind_data, csv_local_state.csv_reader);
|
700
697
|
if (csv_local_state.csv_reader) {
|
701
698
|
csv_local_state.csv_reader->linenr = 0;
|
702
699
|
}
|
703
|
-
|
704
700
|
if (!has_next) {
|
705
701
|
csv_global_state.DecrementThread();
|
706
702
|
break;
|
@@ -1117,6 +1113,7 @@ void BufferedCSVReaderOptions::Deserialize(FieldReader &reader) {
|
|
1117
1113
|
|
1118
1114
|
static void CSVReaderSerialize(FieldWriter &writer, const FunctionData *bind_data_p, const TableFunction &function) {
|
1119
1115
|
auto &bind_data = bind_data_p->Cast<ReadCSVData>();
|
1116
|
+
writer.WriteString(function.extra_info);
|
1120
1117
|
writer.WriteList<string>(bind_data.files);
|
1121
1118
|
writer.WriteRegularSerializableList<LogicalType>(bind_data.csv_types);
|
1122
1119
|
writer.WriteList<string>(bind_data.csv_names);
|
@@ -1133,8 +1130,9 @@ static void CSVReaderSerialize(FieldWriter &writer, const FunctionData *bind_dat
|
|
1133
1130
|
}
|
1134
1131
|
}
|
1135
1132
|
|
1136
|
-
static unique_ptr<FunctionData> CSVReaderDeserialize(
|
1133
|
+
static unique_ptr<FunctionData> CSVReaderDeserialize(PlanDeserializationState &state, FieldReader &reader,
|
1137
1134
|
TableFunction &function) {
|
1135
|
+
function.extra_info = reader.ReadRequired<string>();
|
1138
1136
|
auto result_data = make_uniq<ReadCSVData>();
|
1139
1137
|
result_data->files = reader.ReadRequiredList<string>();
|
1140
1138
|
result_data->csv_types = reader.ReadRequiredSerializableList<LogicalType, LogicalType>();
|
@@ -23,6 +23,9 @@ static unique_ptr<FunctionData> RepeatBind(ClientContext &context, TableFunction
|
|
23
23
|
auto &inputs = input.inputs;
|
24
24
|
return_types.push_back(inputs[0].type());
|
25
25
|
names.push_back(inputs[0].ToString());
|
26
|
+
if (inputs[1].IsNull()) {
|
27
|
+
throw BinderException("Repeat second parameter cannot be NULL");
|
28
|
+
}
|
26
29
|
return make_uniq<RepeatFunctionData>(inputs[0], inputs[1].GetValue<int64_t>());
|
27
30
|
}
|
28
31
|
|
@@ -25,7 +25,14 @@ static unique_ptr<FunctionData> RepeatRowBind(ClientContext &context, TableFunct
|
|
25
25
|
return_types.push_back(inputs[input_idx].type());
|
26
26
|
names.push_back("column" + std::to_string(input_idx));
|
27
27
|
}
|
28
|
-
|
28
|
+
auto entry = input.named_parameters.find("num_rows");
|
29
|
+
if (entry == input.named_parameters.end()) {
|
30
|
+
throw BinderException("repeat_rows requires num_rows to be specified");
|
31
|
+
}
|
32
|
+
if (inputs.empty()) {
|
33
|
+
throw BinderException("repeat_rows requires at least one column to be specified");
|
34
|
+
}
|
35
|
+
return make_uniq<RepeatRowFunctionData>(inputs, entry->second.GetValue<int64_t>());
|
29
36
|
}
|
30
37
|
|
31
38
|
static unique_ptr<GlobalTableFunctionState> RepeatRowInit(ClientContext &context, TableFunctionInitInput &input) {
|
@@ -22,7 +22,7 @@ struct PragmaStorageFunctionData : public TableFunctionData {
|
|
22
22
|
}
|
23
23
|
|
24
24
|
TableCatalogEntry &table_entry;
|
25
|
-
|
25
|
+
vector<ColumnSegmentInfo> column_segments_info;
|
26
26
|
};
|
27
27
|
|
28
28
|
struct PragmaStorageOperatorData : public GlobalTableFunctionState {
|
@@ -82,7 +82,7 @@ static unique_ptr<FunctionData> PragmaStorageInfoBind(ClientContext &context, Ta
|
|
82
82
|
Binder::BindSchemaOrCatalog(context, qname.catalog, qname.schema);
|
83
83
|
auto &table_entry = Catalog::GetEntry<TableCatalogEntry>(context, qname.catalog, qname.schema, qname.name);
|
84
84
|
auto result = make_uniq<PragmaStorageFunctionData>(table_entry);
|
85
|
-
result->
|
85
|
+
result->column_segments_info = table_entry.GetColumnSegmentInfo();
|
86
86
|
return std::move(result);
|
87
87
|
}
|
88
88
|
|
@@ -95,8 +95,8 @@ static void PragmaStorageInfoFunction(ClientContext &context, TableFunctionInput
|
|
95
95
|
auto &data = data_p.global_state->Cast<PragmaStorageOperatorData>();
|
96
96
|
idx_t count = 0;
|
97
97
|
auto &columns = bind_data.table_entry.GetColumns();
|
98
|
-
while (data.offset < bind_data.
|
99
|
-
auto &entry = bind_data.
|
98
|
+
while (data.offset < bind_data.column_segments_info.size() && count < STANDARD_VECTOR_SIZE) {
|
99
|
+
auto &entry = bind_data.column_segments_info[data.offset++];
|
100
100
|
|
101
101
|
idx_t col_idx = 0;
|
102
102
|
// row_group_id
|
@@ -6,8 +6,8 @@ namespace duckdb {
|
|
6
6
|
|
7
7
|
// FLAT, CONSTANT, DICTIONARY, SEQUENCE
|
8
8
|
struct TestVectorBindData : public TableFunctionData {
|
9
|
-
LogicalType
|
10
|
-
bool all_flat;
|
9
|
+
vector<LogicalType> types;
|
10
|
+
bool all_flat = false;
|
11
11
|
};
|
12
12
|
|
13
13
|
struct TestVectorTypesData : public GlobalTableFunctionState {
|
@@ -19,16 +19,41 @@ struct TestVectorTypesData : public GlobalTableFunctionState {
|
|
19
19
|
};
|
20
20
|
|
21
21
|
struct TestVectorInfo {
|
22
|
-
TestVectorInfo(const LogicalType &
|
22
|
+
TestVectorInfo(const vector<LogicalType> &types, const map<LogicalTypeId, TestType> &test_type_map,
|
23
23
|
vector<unique_ptr<DataChunk>> &entries)
|
24
|
-
:
|
24
|
+
: types(types), test_type_map(test_type_map), entries(entries) {
|
25
25
|
}
|
26
26
|
|
27
|
-
const LogicalType &
|
27
|
+
const vector<LogicalType> &types;
|
28
28
|
const map<LogicalTypeId, TestType> &test_type_map;
|
29
29
|
vector<unique_ptr<DataChunk>> &entries;
|
30
30
|
};
|
31
31
|
|
32
|
+
struct TestGeneratedValues {
|
33
|
+
public:
|
34
|
+
void AddColumn(vector<Value> values) {
|
35
|
+
if (!column_values.empty() && column_values[0].size() != values.size()) {
|
36
|
+
throw InternalException("Size mismatch when adding a column to TestGeneratedValues");
|
37
|
+
}
|
38
|
+
column_values.push_back(std::move(values));
|
39
|
+
}
|
40
|
+
|
41
|
+
const Value &GetValue(idx_t row, idx_t column) const {
|
42
|
+
return column_values[column][row];
|
43
|
+
}
|
44
|
+
|
45
|
+
idx_t Rows() const {
|
46
|
+
return column_values.empty() ? 0 : column_values[0].size();
|
47
|
+
}
|
48
|
+
|
49
|
+
idx_t Columns() const {
|
50
|
+
return column_values.size();
|
51
|
+
}
|
52
|
+
|
53
|
+
private:
|
54
|
+
vector<vector<Value>> column_values;
|
55
|
+
};
|
56
|
+
|
32
57
|
struct TestVectorFlat {
|
33
58
|
static constexpr const idx_t TEST_VECTOR_CARDINALITY = 3;
|
34
59
|
|
@@ -75,14 +100,25 @@ struct TestVectorFlat {
|
|
75
100
|
return result;
|
76
101
|
}
|
77
102
|
|
103
|
+
static TestGeneratedValues GenerateValues(TestVectorInfo &info) {
|
104
|
+
// generate the values for each column
|
105
|
+
TestGeneratedValues generated_values;
|
106
|
+
for (auto &type : info.types) {
|
107
|
+
generated_values.AddColumn(GenerateValues(info, type));
|
108
|
+
}
|
109
|
+
return generated_values;
|
110
|
+
}
|
111
|
+
|
78
112
|
static void Generate(TestVectorInfo &info) {
|
79
|
-
|
80
|
-
for (idx_t cur_row = 0; cur_row < result_values.
|
113
|
+
auto result_values = GenerateValues(info);
|
114
|
+
for (idx_t cur_row = 0; cur_row < result_values.Rows(); cur_row += STANDARD_VECTOR_SIZE) {
|
81
115
|
auto result = make_uniq<DataChunk>();
|
82
|
-
result->Initialize(Allocator::DefaultAllocator(),
|
83
|
-
auto cardinality = MinValue<idx_t>(STANDARD_VECTOR_SIZE, result_values.
|
84
|
-
for (idx_t
|
85
|
-
|
116
|
+
result->Initialize(Allocator::DefaultAllocator(), info.types);
|
117
|
+
auto cardinality = MinValue<idx_t>(STANDARD_VECTOR_SIZE, result_values.Rows() - cur_row);
|
118
|
+
for (idx_t c = 0; c < info.types.size(); c++) {
|
119
|
+
for (idx_t i = 0; i < cardinality; i++) {
|
120
|
+
result->data[c].SetValue(i, result_values.GetValue(cur_row + i, c));
|
121
|
+
}
|
86
122
|
}
|
87
123
|
result->SetCardinality(cardinality);
|
88
124
|
info.entries.push_back(std::move(result));
|
@@ -92,13 +128,15 @@ struct TestVectorFlat {
|
|
92
128
|
|
93
129
|
struct TestVectorConstant {
|
94
130
|
static void Generate(TestVectorInfo &info) {
|
95
|
-
auto values = TestVectorFlat::GenerateValues(info
|
131
|
+
auto values = TestVectorFlat::GenerateValues(info);
|
96
132
|
for (idx_t cur_row = 0; cur_row < TestVectorFlat::TEST_VECTOR_CARDINALITY; cur_row += STANDARD_VECTOR_SIZE) {
|
97
133
|
auto result = make_uniq<DataChunk>();
|
98
|
-
result->Initialize(Allocator::DefaultAllocator(),
|
134
|
+
result->Initialize(Allocator::DefaultAllocator(), info.types);
|
99
135
|
auto cardinality = MinValue<idx_t>(STANDARD_VECTOR_SIZE, TestVectorFlat::TEST_VECTOR_CARDINALITY - cur_row);
|
100
|
-
|
101
|
-
|
136
|
+
for (idx_t c = 0; c < info.types.size(); c++) {
|
137
|
+
result->data[c].SetValue(0, values.GetValue(0, c));
|
138
|
+
result->data[c].SetVectorType(VectorType::CONSTANT_VECTOR);
|
139
|
+
}
|
102
140
|
result->SetCardinality(cardinality);
|
103
141
|
|
104
142
|
info.entries.push_back(std::move(result));
|
@@ -160,9 +198,11 @@ struct TestVectorSequence {
|
|
160
198
|
static void Generate(TestVectorInfo &info) {
|
161
199
|
#if STANDARD_VECTOR_SIZE > 2
|
162
200
|
auto result = make_uniq<DataChunk>();
|
163
|
-
result->Initialize(Allocator::DefaultAllocator(),
|
201
|
+
result->Initialize(Allocator::DefaultAllocator(), info.types);
|
164
202
|
|
165
|
-
|
203
|
+
for (idx_t c = 0; c < info.types.size(); c++) {
|
204
|
+
GenerateVector(info, info.types[c], result->data[c]);
|
205
|
+
}
|
166
206
|
result->SetCardinality(3);
|
167
207
|
info.entries.push_back(std::move(result));
|
168
208
|
#endif
|
@@ -195,11 +235,23 @@ struct TestVectorDictionary {
|
|
195
235
|
static unique_ptr<FunctionData> TestVectorTypesBind(ClientContext &context, TableFunctionBindInput &input,
|
196
236
|
vector<LogicalType> &return_types, vector<string> &names) {
|
197
237
|
auto result = make_uniq<TestVectorBindData>();
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
238
|
+
for (idx_t i = 0; i < input.inputs.size(); i++) {
|
239
|
+
string name = "test_vector";
|
240
|
+
if (i > 0) {
|
241
|
+
name += to_string(i + 1);
|
242
|
+
}
|
243
|
+
auto &input_val = input.inputs[i];
|
244
|
+
names.emplace_back(name);
|
245
|
+
return_types.push_back(input_val.type());
|
246
|
+
result->types.push_back(input_val.type());
|
247
|
+
}
|
248
|
+
for (auto &entry : input.named_parameters) {
|
249
|
+
if (entry.first == "all_flat") {
|
250
|
+
result->all_flat = BooleanValue::Get(entry.second);
|
251
|
+
} else {
|
252
|
+
throw InternalException("Unrecognized named parameter for test_vector_types");
|
253
|
+
}
|
254
|
+
}
|
203
255
|
return std::move(result);
|
204
256
|
}
|
205
257
|
|
@@ -215,7 +267,7 @@ unique_ptr<GlobalTableFunctionState> TestVectorTypesInit(ClientContext &context,
|
|
215
267
|
test_type_map.insert(make_pair(test_type.type.id(), std::move(test_type)));
|
216
268
|
}
|
217
269
|
|
218
|
-
TestVectorInfo info(bind_data.
|
270
|
+
TestVectorInfo info(bind_data.types, test_type_map, result->entries);
|
219
271
|
TestVectorFlat::Generate(info);
|
220
272
|
TestVectorConstant::Generate(info);
|
221
273
|
TestVectorDictionary::Generate(info);
|
@@ -243,8 +295,12 @@ void TestVectorTypesFunction(ClientContext &context, TableFunctionInput &data_p,
|
|
243
295
|
}
|
244
296
|
|
245
297
|
void TestVectorTypesFun::RegisterFunction(BuiltinFunctions &set) {
|
246
|
-
|
247
|
-
|
298
|
+
TableFunction test_vector_types("test_vector_types", {LogicalType::ANY}, TestVectorTypesFunction,
|
299
|
+
TestVectorTypesBind, TestVectorTypesInit);
|
300
|
+
test_vector_types.varargs = LogicalType::ANY;
|
301
|
+
test_vector_types.named_parameters["all_flat"] = LogicalType::BOOLEAN;
|
302
|
+
|
303
|
+
set.AddFunction(std::move(test_vector_types));
|
248
304
|
}
|
249
305
|
|
250
306
|
} // namespace duckdb
|
@@ -417,7 +417,7 @@ static void TableScanSerialize(FieldWriter &writer, const FunctionData *bind_dat
|
|
417
417
|
writer.WriteString(bind_data.table.schema.catalog.GetName());
|
418
418
|
}
|
419
419
|
|
420
|
-
static unique_ptr<FunctionData> TableScanDeserialize(
|
420
|
+
static unique_ptr<FunctionData> TableScanDeserialize(PlanDeserializationState &state, FieldReader &reader,
|
421
421
|
TableFunction &function) {
|
422
422
|
auto schema_name = reader.ReadRequired<string>();
|
423
423
|
auto table_name = reader.ReadRequired<string>();
|
@@ -426,7 +426,7 @@ static unique_ptr<FunctionData> TableScanDeserialize(ClientContext &context, Fie
|
|
426
426
|
auto result_ids = reader.ReadRequiredList<row_t>();
|
427
427
|
auto catalog_name = reader.ReadField<string>(INVALID_CATALOG);
|
428
428
|
|
429
|
-
auto &catalog_entry = Catalog::GetEntry<TableCatalogEntry>(context, catalog_name, schema_name, table_name);
|
429
|
+
auto &catalog_entry = Catalog::GetEntry<TableCatalogEntry>(state.context, catalog_name, schema_name, table_name);
|
430
430
|
if (catalog_entry.type != CatalogType::TABLE_ENTRY) {
|
431
431
|
throw SerializationException("Cant find table for %s.%s", schema_name, table_name);
|
432
432
|
}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
#ifndef DUCKDB_VERSION
|
2
|
-
#define DUCKDB_VERSION "0.8.1
|
2
|
+
#define DUCKDB_VERSION "0.8.1"
|
3
3
|
#endif
|
4
4
|
#ifndef DUCKDB_SOURCE_ID
|
5
|
-
#define DUCKDB_SOURCE_ID "
|
5
|
+
#define DUCKDB_SOURCE_ID "6536a77232"
|
6
6
|
#endif
|
7
7
|
#include "duckdb/function/table/system_functions.hpp"
|
8
8
|
#include "duckdb/main/database.hpp"
|
@@ -229,9 +229,6 @@ public:
|
|
229
229
|
DUCKDB_API static LogicalType GetType(ClientContext &context, const string &catalog_name, const string &schema,
|
230
230
|
const string &name);
|
231
231
|
|
232
|
-
static bool TypeExists(ClientContext &context, const string &catalog_name, const string &schema,
|
233
|
-
const string &name);
|
234
|
-
|
235
232
|
template <class T>
|
236
233
|
optional_ptr<T> GetEntry(ClientContext &context, const string &schema_name, const string &name,
|
237
234
|
OnEntryNotFound if_not_found, QueryErrorContext error_context = QueryErrorContext()) {
|
@@ -39,6 +39,8 @@ public:
|
|
39
39
|
|
40
40
|
TableFunction GetScanFunction(ClientContext &context, unique_ptr<FunctionData> &bind_data) override;
|
41
41
|
|
42
|
+
vector<ColumnSegmentInfo> GetColumnSegmentInfo() override;
|
43
|
+
|
42
44
|
TableStorageInfo GetStorageInfo(ClientContext &context) override;
|
43
45
|
|
44
46
|
bool IsDuckTable() const override {
|
@@ -37,9 +37,13 @@ class TableFunction;
|
|
37
37
|
struct FunctionData;
|
38
38
|
|
39
39
|
class TableColumnInfo;
|
40
|
-
|
40
|
+
struct ColumnSegmentInfo;
|
41
41
|
class TableStorageInfo;
|
42
42
|
|
43
|
+
class LogicalGet;
|
44
|
+
class LogicalProjection;
|
45
|
+
class LogicalUpdate;
|
46
|
+
|
43
47
|
//! A table catalog entry
|
44
48
|
class TableCatalogEntry : public StandardEntry {
|
45
49
|
public:
|
@@ -99,9 +103,15 @@ public:
|
|
99
103
|
|
100
104
|
DUCKDB_API static string ColumnsToSQL(const ColumnList &columns, const vector<unique_ptr<Constraint>> &constraints);
|
101
105
|
|
106
|
+
//! Returns a list of segment information for this table, if exists
|
107
|
+
virtual vector<ColumnSegmentInfo> GetColumnSegmentInfo();
|
108
|
+
|
102
109
|
//! Returns the storage info of this table
|
103
110
|
virtual TableStorageInfo GetStorageInfo(ClientContext &context) = 0;
|
104
111
|
|
112
|
+
virtual void BindUpdateConstraints(LogicalGet &get, LogicalProjection &proj, LogicalUpdate &update,
|
113
|
+
ClientContext &context);
|
114
|
+
|
105
115
|
protected:
|
106
116
|
// This is used to serialize the entry by #Serialize(Serializer& ). It is virtual to allow
|
107
117
|
// Custom catalog implementations to override the default implementation. We can not make
|
@@ -35,14 +35,16 @@ private:
|
|
35
35
|
static string WriteOptionallyQuoted(const string &input);
|
36
36
|
};
|
37
37
|
|
38
|
+
enum class CatalogSetPathType { SET_SCHEMA, SET_SCHEMAS };
|
39
|
+
|
38
40
|
//! The schema search path, in order by which entries are searched if no schema entry is provided
|
39
41
|
class CatalogSearchPath {
|
40
42
|
public:
|
41
43
|
DUCKDB_API explicit CatalogSearchPath(ClientContext &client_p);
|
42
44
|
CatalogSearchPath(const CatalogSearchPath &other) = delete;
|
43
45
|
|
44
|
-
DUCKDB_API void Set(CatalogSearchEntry new_value,
|
45
|
-
DUCKDB_API void Set(vector<CatalogSearchEntry> new_paths,
|
46
|
+
DUCKDB_API void Set(CatalogSearchEntry new_value, CatalogSetPathType set_type);
|
47
|
+
DUCKDB_API void Set(vector<CatalogSearchEntry> new_paths, CatalogSetPathType set_type);
|
46
48
|
DUCKDB_API void Reset();
|
47
49
|
|
48
50
|
DUCKDB_API const vector<CatalogSearchEntry> &Get();
|
@@ -56,9 +58,13 @@ public:
|
|
56
58
|
DUCKDB_API vector<string> GetSchemasForCatalog(const string &catalog);
|
57
59
|
DUCKDB_API vector<string> GetCatalogsForSchema(const string &schema);
|
58
60
|
|
61
|
+
DUCKDB_API bool SchemaInSearchPath(ClientContext &context, const string &catalog_name, const string &schema_name);
|
62
|
+
|
59
63
|
private:
|
60
64
|
void SetPaths(vector<CatalogSearchEntry> new_paths);
|
61
65
|
|
66
|
+
string GetSetName(CatalogSetPathType set_type);
|
67
|
+
|
62
68
|
private:
|
63
69
|
ClientContext &context;
|
64
70
|
vector<CatalogSearchEntry> paths;
|
@@ -0,0 +1,97 @@
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
2
|
+
// DuckDB
|
3
|
+
//
|
4
|
+
// duckdb/catalog/default/builtin_types/types.hpp
|
5
|
+
//
|
6
|
+
//
|
7
|
+
//===----------------------------------------------------------------------===//
|
8
|
+
// This file is generated by scripts/generate_builtin_types.py
|
9
|
+
|
10
|
+
#pragma once
|
11
|
+
|
12
|
+
#include "duckdb/common/types.hpp"
|
13
|
+
#include "duckdb/common/array.hpp"
|
14
|
+
|
15
|
+
namespace duckdb {
|
16
|
+
|
17
|
+
struct DefaultType {
|
18
|
+
const char *name;
|
19
|
+
LogicalTypeId type;
|
20
|
+
};
|
21
|
+
|
22
|
+
using builtin_type_array = std::array<DefaultType, 70>;
|
23
|
+
|
24
|
+
static constexpr const builtin_type_array BUILTIN_TYPES{{
|
25
|
+
{"decimal", LogicalTypeId::DECIMAL},
|
26
|
+
{"dec", LogicalTypeId::DECIMAL},
|
27
|
+
{"numeric", LogicalTypeId::DECIMAL},
|
28
|
+
{"time", LogicalTypeId::TIME},
|
29
|
+
{"date", LogicalTypeId::DATE},
|
30
|
+
{"timestamp", LogicalTypeId::TIMESTAMP},
|
31
|
+
{"datetime", LogicalTypeId::TIMESTAMP},
|
32
|
+
{"timestamp_us", LogicalTypeId::TIMESTAMP},
|
33
|
+
{"timestamp_ms", LogicalTypeId::TIMESTAMP_MS},
|
34
|
+
{"timestamp_ns", LogicalTypeId::TIMESTAMP_NS},
|
35
|
+
{"timestamp_s", LogicalTypeId::TIMESTAMP_SEC},
|
36
|
+
{"timestamptz", LogicalTypeId::TIMESTAMP_TZ},
|
37
|
+
{"timetz", LogicalTypeId::TIME_TZ},
|
38
|
+
{"interval", LogicalTypeId::INTERVAL},
|
39
|
+
{"varchar", LogicalTypeId::VARCHAR},
|
40
|
+
{"bpchar", LogicalTypeId::VARCHAR},
|
41
|
+
{"string", LogicalTypeId::VARCHAR},
|
42
|
+
{"char", LogicalTypeId::VARCHAR},
|
43
|
+
{"nvarchar", LogicalTypeId::VARCHAR},
|
44
|
+
{"text", LogicalTypeId::VARCHAR},
|
45
|
+
{"blob", LogicalTypeId::BLOB},
|
46
|
+
{"bytea", LogicalTypeId::BLOB},
|
47
|
+
{"varbinary", LogicalTypeId::BLOB},
|
48
|
+
{"binary", LogicalTypeId::BLOB},
|
49
|
+
{"hugeint", LogicalTypeId::HUGEINT},
|
50
|
+
{"int128", LogicalTypeId::HUGEINT},
|
51
|
+
{"bigint", LogicalTypeId::BIGINT},
|
52
|
+
{"oid", LogicalTypeId::BIGINT},
|
53
|
+
{"long", LogicalTypeId::BIGINT},
|
54
|
+
{"int8", LogicalTypeId::BIGINT},
|
55
|
+
{"int64", LogicalTypeId::BIGINT},
|
56
|
+
{"ubigint", LogicalTypeId::UBIGINT},
|
57
|
+
{"uint64", LogicalTypeId::UBIGINT},
|
58
|
+
{"integer", LogicalTypeId::INTEGER},
|
59
|
+
{"int", LogicalTypeId::INTEGER},
|
60
|
+
{"int4", LogicalTypeId::INTEGER},
|
61
|
+
{"signed", LogicalTypeId::INTEGER},
|
62
|
+
{"integral", LogicalTypeId::INTEGER},
|
63
|
+
{"int32", LogicalTypeId::INTEGER},
|
64
|
+
{"uinteger", LogicalTypeId::UINTEGER},
|
65
|
+
{"uint32", LogicalTypeId::UINTEGER},
|
66
|
+
{"smallint", LogicalTypeId::SMALLINT},
|
67
|
+
{"int2", LogicalTypeId::SMALLINT},
|
68
|
+
{"short", LogicalTypeId::SMALLINT},
|
69
|
+
{"int16", LogicalTypeId::SMALLINT},
|
70
|
+
{"usmallint", LogicalTypeId::USMALLINT},
|
71
|
+
{"uint16", LogicalTypeId::USMALLINT},
|
72
|
+
{"tinyint", LogicalTypeId::TINYINT},
|
73
|
+
{"int1", LogicalTypeId::TINYINT},
|
74
|
+
{"utinyint", LogicalTypeId::UTINYINT},
|
75
|
+
{"uint8", LogicalTypeId::UTINYINT},
|
76
|
+
{"struct", LogicalTypeId::STRUCT},
|
77
|
+
{"row", LogicalTypeId::STRUCT},
|
78
|
+
{"list", LogicalTypeId::LIST},
|
79
|
+
{"map", LogicalTypeId::MAP},
|
80
|
+
{"union", LogicalTypeId::UNION},
|
81
|
+
{"bit", LogicalTypeId::BIT},
|
82
|
+
{"bitstring", LogicalTypeId::BIT},
|
83
|
+
{"boolean", LogicalTypeId::BOOLEAN},
|
84
|
+
{"bool", LogicalTypeId::BOOLEAN},
|
85
|
+
{"logical", LogicalTypeId::BOOLEAN},
|
86
|
+
{"uuid", LogicalTypeId::UUID},
|
87
|
+
{"guid", LogicalTypeId::UUID},
|
88
|
+
{"enum", LogicalTypeId::ENUM},
|
89
|
+
{"null", LogicalTypeId::SQLNULL},
|
90
|
+
{"float", LogicalTypeId::FLOAT},
|
91
|
+
{"real", LogicalTypeId::FLOAT},
|
92
|
+
{"float4", LogicalTypeId::FLOAT},
|
93
|
+
{"double", LogicalTypeId::DOUBLE},
|
94
|
+
{"float8", LogicalTypeId::DOUBLE}
|
95
|
+
}};
|
96
|
+
|
97
|
+
} // namespace duckdb
|
@@ -19,7 +19,7 @@ struct ArrowAppendData;
|
|
19
19
|
//! The ArrowAppender class can be used to incrementally construct an arrow array by appending data chunks into it
|
20
20
|
class ArrowAppender {
|
21
21
|
public:
|
22
|
-
DUCKDB_API ArrowAppender(vector<LogicalType> types, idx_t initial_capacity, ArrowOptions options
|
22
|
+
DUCKDB_API ArrowAppender(vector<LogicalType> types, idx_t initial_capacity, ArrowOptions options);
|
23
23
|
DUCKDB_API ~ArrowAppender();
|
24
24
|
|
25
25
|
//! Append a data chunk to the underlying arrow array
|
@@ -18,9 +18,8 @@ namespace duckdb {
|
|
18
18
|
|
19
19
|
struct ArrowConverter {
|
20
20
|
DUCKDB_API static void ToArrowSchema(ArrowSchema *out_schema, const vector<LogicalType> &types,
|
21
|
-
const vector<string> &names, const
|
22
|
-
|
23
|
-
DUCKDB_API static void ToArrowArray(DataChunk &input, ArrowArray *out_array, ArrowOptions options = ArrowOptions());
|
21
|
+
const vector<string> &names, const ArrowOptions &options);
|
22
|
+
DUCKDB_API static void ToArrowArray(DataChunk &input, ArrowArray *out_array, ArrowOptions options);
|
24
23
|
};
|
25
24
|
|
26
25
|
} // namespace duckdb
|
@@ -13,6 +13,13 @@ namespace duckdb {
|
|
13
13
|
enum ArrowOffsetSize { REGULAR, LARGE };
|
14
14
|
|
15
15
|
struct ArrowOptions {
|
16
|
-
ArrowOffsetSize offset_size
|
16
|
+
explicit ArrowOptions(ArrowOffsetSize offset_size_p) : offset_size(offset_size_p) {
|
17
|
+
}
|
18
|
+
ArrowOptions(ArrowOffsetSize offset_size_p, string timezone_p) : offset_size(offset_size_p), time_zone(timezone_p) {
|
19
|
+
}
|
20
|
+
ArrowOptions() {
|
21
|
+
}
|
22
|
+
ArrowOffsetSize offset_size = ArrowOffsetSize::REGULAR;
|
23
|
+
string time_zone = "UTC";
|
17
24
|
};
|
18
25
|
} // namespace duckdb
|