duckdb 0.10.1-dev9.0 → 0.10.2-dev0.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/.github/workflows/NodeJS.yml +9 -16
- package/binding.gyp +4 -1
- package/package.json +1 -1
- package/src/database.cpp +1 -0
- package/src/duckdb/extension/icu/icu-strptime.cpp +46 -4
- package/src/duckdb/extension/icu/icu-table-range.cpp +5 -0
- package/src/duckdb/extension/icu/icu-timezone.cpp +28 -4
- package/src/duckdb/extension/json/buffered_json_reader.cpp +6 -5
- package/src/duckdb/extension/json/include/buffered_json_reader.hpp +3 -3
- package/src/duckdb/extension/json/include/json_transform.hpp +2 -0
- package/src/duckdb/extension/json/json_functions/json_create.cpp +6 -0
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +8 -9
- package/src/duckdb/extension/json/json_functions.cpp +1 -2
- package/src/duckdb/extension/json/json_scan.cpp +1 -0
- package/src/duckdb/extension/parquet/column_reader.cpp +17 -1
- package/src/duckdb/extension/parquet/column_writer.cpp +151 -20
- package/src/duckdb/extension/parquet/include/column_writer.hpp +3 -4
- package/src/duckdb/extension/parquet/parquet_extension.cpp +14 -9
- package/src/duckdb/extension/parquet/parquet_timestamp.cpp +10 -0
- package/src/duckdb/extension/parquet/parquet_writer.cpp +4 -0
- package/src/duckdb/src/catalog/catalog.cpp +94 -10
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +9 -5
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +1 -0
- package/src/duckdb/src/catalog/catalog_entry/ub_duckdb_catalog_entries.cpp +16 -0
- package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +28 -0
- package/src/duckdb/src/catalog/default/default_functions.cpp +3 -0
- package/src/duckdb/src/catalog/default/default_views.cpp +3 -3
- package/src/duckdb/src/catalog/default/ub_duckdb_catalog_default_entries.cpp +5 -0
- package/src/duckdb/src/catalog/dependency_catalog_set.cpp +1 -3
- package/src/duckdb/src/catalog/dependency_manager.cpp +2 -5
- package/src/duckdb/src/catalog/ub_duckdb_catalog.cpp +10 -0
- package/src/duckdb/src/common/adbc/adbc.cpp +1 -1
- package/src/duckdb/src/common/adbc/driver_manager.cpp +2 -1
- package/src/duckdb/src/common/adbc/nanoarrow/ub_duckdb_adbc_nanoarrow.cpp +5 -0
- package/src/duckdb/src/common/adbc/ub_duckdb_adbc.cpp +3 -0
- package/src/duckdb/src/common/allocator.cpp +34 -8
- package/src/duckdb/src/common/arrow/appender/fixed_size_list_data.cpp +39 -0
- package/src/duckdb/src/common/arrow/appender/ub_duckdb_common_arrow_appender.cpp +6 -0
- package/src/duckdb/src/common/arrow/appender/union_data.cpp +2 -1
- package/src/duckdb/src/common/arrow/arrow_appender.cpp +5 -5
- package/src/duckdb/src/common/arrow/arrow_converter.cpp +17 -0
- package/src/duckdb/src/common/arrow/ub_duckdb_common_arrow.cpp +4 -0
- package/src/duckdb/src/common/compressed_file_system.cpp +1 -0
- package/src/duckdb/src/common/crypto/ub_duckdb_common_crypto.cpp +2 -0
- package/src/duckdb/src/common/enum_util.cpp +153 -13
- package/src/duckdb/src/common/enums/logical_operator_type.cpp +0 -2
- package/src/duckdb/src/common/enums/physical_operator_type.cpp +2 -2
- package/src/duckdb/src/common/enums/ub_duckdb_common_enums.cpp +12 -0
- package/src/duckdb/src/common/exception/conversion_exception.cpp +23 -0
- package/src/duckdb/src/common/exception.cpp +7 -14
- package/src/duckdb/src/common/extra_type_info.cpp +6 -5
- package/src/duckdb/src/common/gzip_file_system.cpp +5 -4
- package/src/duckdb/src/common/local_file_system.cpp +85 -10
- package/src/duckdb/src/common/operator/cast_operators.cpp +413 -305
- package/src/duckdb/src/common/operator/ub_duckdb_common_operators.cpp +4 -0
- package/src/duckdb/src/common/progress_bar/ub_duckdb_progress_bar.cpp +3 -0
- package/src/duckdb/src/common/re2_regex.cpp +2 -1
- package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +2 -2
- package/src/duckdb/src/common/row_operations/row_matcher.cpp +1 -0
- package/src/duckdb/src/common/row_operations/row_scatter.cpp +2 -2
- package/src/duckdb/src/common/row_operations/ub_duckdb_row_operations.cpp +9 -0
- package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
- package/src/duckdb/src/common/serializer/ub_duckdb_common_serializer.cpp +7 -0
- package/src/duckdb/src/common/sort/partition_state.cpp +2 -3
- package/src/duckdb/src/common/sort/ub_duckdb_sort.cpp +7 -0
- package/src/duckdb/src/common/string_util.cpp +3 -3
- package/src/duckdb/src/common/types/bit.cpp +7 -6
- package/src/duckdb/src/common/types/blob.cpp +20 -9
- package/src/duckdb/src/common/types/column/column_data_allocator.cpp +8 -6
- package/src/duckdb/src/common/types/column/column_data_collection.cpp +11 -1
- package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +5 -0
- package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +1 -1
- package/src/duckdb/src/common/types/column/ub_duckdb_common_types_column.cpp +6 -0
- package/src/duckdb/src/common/types/data_chunk.cpp +1 -1
- package/src/duckdb/src/common/types/date.cpp +1 -1
- package/src/duckdb/src/common/types/hugeint.cpp +3 -2
- package/src/duckdb/src/common/types/interval.cpp +1 -1
- package/src/duckdb/src/common/types/list_segment.cpp +2 -1
- package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +3 -9
- package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +7 -7
- package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +10 -27
- package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +168 -88
- package/src/duckdb/src/common/types/row/ub_duckdb_common_types_row.cpp +11 -0
- package/src/duckdb/src/common/types/selection_vector.cpp +1 -1
- package/src/duckdb/src/common/types/string_heap.cpp +5 -1
- package/src/duckdb/src/common/types/string_type.cpp +18 -4
- package/src/duckdb/src/common/types/time.cpp +4 -2
- package/src/duckdb/src/common/types/timestamp.cpp +32 -6
- package/src/duckdb/src/common/types/ub_duckdb_common_types.cpp +28 -0
- package/src/duckdb/src/common/types/uhugeint.cpp +3 -2
- package/src/duckdb/src/common/types/uuid.cpp +11 -0
- package/src/duckdb/src/common/types/validity_mask.cpp +4 -3
- package/src/duckdb/src/common/types/value.cpp +17 -6
- package/src/duckdb/src/common/types/vector.cpp +243 -68
- package/src/duckdb/src/common/types.cpp +7 -5
- package/src/duckdb/src/common/ub_duckdb_common.cpp +34 -0
- package/src/duckdb/src/common/value_operations/ub_duckdb_value_operations.cpp +2 -0
- package/src/duckdb/src/common/vector_operations/generators.cpp +2 -1
- package/src/duckdb/src/common/vector_operations/vector_cast.cpp +4 -4
- package/src/duckdb/src/common/vector_operations/vector_copy.cpp +2 -2
- package/src/duckdb/src/common/vector_operations/vector_hash.cpp +17 -6
- package/src/duckdb/src/core_functions/aggregate/algebraic/ub_duckdb_aggr_algebraic.cpp +5 -0
- package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +30 -6
- package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +1 -1
- package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +12 -5
- package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +2 -1
- package/src/duckdb/src/core_functions/aggregate/distributive/ub_duckdb_aggr_distributive.cpp +13 -0
- package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +2 -1
- package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +2 -9
- package/src/duckdb/src/core_functions/aggregate/holistic/ub_duckdb_aggr_holistic.cpp +5 -0
- package/src/duckdb/src/core_functions/aggregate/nested/ub_duckdb_aggr_nested.cpp +3 -0
- package/src/duckdb/src/core_functions/aggregate/regression/ub_duckdb_aggr_regr.cpp +8 -0
- package/src/duckdb/src/core_functions/function_list.cpp +1 -0
- package/src/duckdb/src/core_functions/scalar/bit/bitstring.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/bit/ub_duckdb_func_bit.cpp +2 -0
- package/src/duckdb/src/core_functions/scalar/blob/ub_duckdb_func_blob.cpp +3 -0
- package/src/duckdb/src/core_functions/scalar/date/date_diff.cpp +8 -0
- package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +22 -3
- package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +29 -7
- package/src/duckdb/src/core_functions/scalar/date/to_interval.cpp +3 -1
- package/src/duckdb/src/core_functions/scalar/date/ub_duckdb_func_date.cpp +12 -0
- package/src/duckdb/src/core_functions/scalar/debug/ub_duckdb_func_debug.cpp +2 -0
- package/src/duckdb/src/core_functions/scalar/enum/ub_duckdb_func_enum.cpp +2 -0
- package/src/duckdb/src/core_functions/scalar/generic/ub_duckdb_func_generic.cpp +9 -0
- package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +12 -8
- package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +2 -1
- package/src/duckdb/src/core_functions/scalar/list/list_reduce.cpp +6 -5
- package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +5 -3
- package/src/duckdb/src/core_functions/scalar/list/list_value.cpp +28 -12
- package/src/duckdb/src/core_functions/scalar/list/ub_duckdb_func_list.cpp +11 -0
- package/src/duckdb/src/core_functions/scalar/map/map.cpp +129 -160
- package/src/duckdb/src/core_functions/scalar/map/ub_duckdb_func_map_nested.cpp +8 -0
- package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +19 -16
- package/src/duckdb/src/core_functions/scalar/math/ub_duckdb_func_math.cpp +1 -0
- package/src/duckdb/src/core_functions/scalar/operators/bitwise.cpp +4 -4
- package/src/duckdb/src/core_functions/scalar/operators/ub_duckdb_func_ops.cpp +1 -0
- package/src/duckdb/src/core_functions/scalar/random/ub_duckdb_func_random.cpp +3 -0
- package/src/duckdb/src/core_functions/scalar/string/hex.cpp +2 -1
- package/src/duckdb/src/core_functions/scalar/string/pad.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/string/repeat.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/string/replace.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +2 -1
- package/src/duckdb/src/core_functions/scalar/string/translate.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/string/ub_duckdb_func_string.cpp +26 -0
- package/src/duckdb/src/core_functions/scalar/struct/ub_duckdb_func_struct.cpp +3 -0
- package/src/duckdb/src/core_functions/scalar/union/ub_duckdb_func_union.cpp +4 -0
- package/src/duckdb/src/core_functions/ub_duckdb_core_functions.cpp +3 -0
- package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
- package/src/duckdb/src/execution/aggregate_hashtable.cpp +1 -1
- package/src/duckdb/src/execution/column_binding_resolver.cpp +7 -1
- package/src/duckdb/src/execution/expression_executor/execute_case.cpp +2 -2
- package/src/duckdb/src/execution/expression_executor/execute_cast.cpp +2 -0
- package/src/duckdb/src/execution/expression_executor/execute_function.cpp +2 -2
- package/src/duckdb/src/execution/expression_executor/execute_operator.cpp +1 -1
- package/src/duckdb/src/execution/expression_executor/ub_duckdb_expression_executor.cpp +11 -0
- package/src/duckdb/src/execution/expression_executor.cpp +5 -2
- package/src/duckdb/src/execution/index/art/art.cpp +12 -6
- package/src/duckdb/src/execution/index/art/art_key.cpp +3 -3
- package/src/duckdb/src/execution/index/art/leaf.cpp +2 -2
- package/src/duckdb/src/execution/index/art/node16.cpp +2 -2
- package/src/duckdb/src/execution/index/art/node256.cpp +3 -3
- package/src/duckdb/src/execution/index/art/node48.cpp +5 -5
- package/src/duckdb/src/execution/index/art/prefix.cpp +1 -1
- package/src/duckdb/src/execution/index/art/ub_duckdb_art_index_execution.cpp +12 -0
- package/src/duckdb/src/execution/index/art/ub_duckdb_execution_index_art.cpp +11 -0
- package/src/duckdb/src/execution/index/fixed_size_buffer.cpp +6 -5
- package/src/duckdb/src/execution/index/ub_duckdb_execution_index.cpp +3 -0
- package/src/duckdb/src/execution/nested_loop_join/ub_duckdb_nested_loop_join.cpp +3 -0
- package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +3 -4
- package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +0 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +3 -4
- package/src/duckdb/src/execution/operator/aggregate/ub_duckdb_operator_aggregate.cpp +9 -0
- package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer.cpp +1 -1
- package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.cpp +8 -3
- package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_file_handle.cpp +1 -1
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/base_scanner.cpp +5 -5
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/column_count_scanner.cpp +2 -3
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/scanner_boundary.cpp +5 -1
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/skip_scanner.cpp +2 -2
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +151 -79
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +11 -6
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +27 -6
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +71 -18
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +22 -11
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_refinement.cpp +6 -4
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_replacement.cpp +5 -3
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/ub_duckdb_operator_csv_sniffer.cpp +7 -0
- package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine.cpp +3 -3
- package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine_cache.cpp +30 -5
- package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_file_scanner.cpp +6 -2
- package/src/duckdb/src/execution/operator/csv_scanner/table_function/global_csv_state.cpp +47 -46
- package/src/duckdb/src/execution/operator/csv_scanner/ub_duckdb_operator_csv_scanner.cpp +10 -0
- package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +102 -54
- package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +8 -1
- package/src/duckdb/src/execution/operator/filter/ub_duckdb_operator_filter.cpp +2 -0
- package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +54 -36
- package/src/duckdb/src/execution/operator/helper/physical_limit_percent.cpp +56 -32
- package/src/duckdb/src/execution/operator/helper/physical_streaming_limit.cpp +9 -13
- package/src/duckdb/src/execution/operator/helper/physical_transaction.cpp +12 -0
- package/src/duckdb/src/execution/operator/helper/physical_verify_vector.cpp +221 -0
- package/src/duckdb/src/execution/operator/helper/ub_duckdb_operator_helper.cpp +18 -0
- package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +1 -0
- package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +23 -8
- package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +8 -3
- package/src/duckdb/src/execution/operator/join/ub_duckdb_operator_join.cpp +16 -0
- package/src/duckdb/src/execution/operator/order/physical_order.cpp +2 -3
- package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +2 -7
- package/src/duckdb/src/execution/operator/order/ub_duckdb_operator_order.cpp +3 -0
- package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +451 -55
- package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +312 -150
- package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +200 -75
- package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +1 -0
- package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +6 -5
- package/src/duckdb/src/execution/operator/persistent/ub_duckdb_operator_persistent.cpp +10 -0
- package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +3 -2
- package/src/duckdb/src/execution/operator/projection/ub_duckdb_operator_projection.cpp +5 -0
- package/src/duckdb/src/execution/operator/scan/ub_duckdb_operator_scan.cpp +7 -0
- package/src/duckdb/src/execution/operator/schema/ub_duckdb_operator_schema.cpp +12 -0
- package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +25 -0
- package/src/duckdb/src/execution/operator/set/ub_duckdb_operator_set.cpp +4 -0
- package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +4 -4
- package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +2 -2
- package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +2 -2
- package/src/duckdb/src/execution/physical_plan/plan_copy_to_file.cpp +7 -17
- package/src/duckdb/src/execution/physical_plan/plan_distinct.cpp +10 -0
- package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +7 -0
- package/src/duckdb/src/execution/physical_plan/plan_limit.cpp +45 -13
- package/src/duckdb/src/execution/physical_plan/ub_duckdb_physical_plan.cpp +44 -0
- package/src/duckdb/src/execution/physical_plan_generator.cpp +5 -3
- package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +13 -12
- package/src/duckdb/src/execution/ub_duckdb_execution.cpp +15 -0
- package/src/duckdb/src/execution/window_executor.cpp +71 -61
- package/src/duckdb/src/execution/window_segment_tree.cpp +6 -6
- package/src/duckdb/src/extension_forward_decl/icu.cpp +59 -0
- package/src/duckdb/src/function/aggregate/algebraic/ub_duckdb_aggr_algebraic.cpp +5 -0
- package/src/duckdb/src/function/aggregate/distributive/first.cpp +2 -2
- package/src/duckdb/src/function/aggregate/distributive/ub_duckdb_aggr_distr.cpp +3 -0
- package/src/duckdb/src/function/aggregate/holistic/ub_duckdb_aggr_holistic.cpp +5 -0
- package/src/duckdb/src/function/aggregate/nested/ub_duckdb_aggr_nested.cpp +3 -0
- package/src/duckdb/src/function/aggregate/regression/ub_duckdb_aggr_regr.cpp +8 -0
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +3 -2
- package/src/duckdb/src/function/aggregate/ub_duckdb_func_aggr.cpp +3 -0
- package/src/duckdb/src/function/cast/array_casts.cpp +2 -4
- package/src/duckdb/src/function/cast/bit_cast.cpp +13 -13
- package/src/duckdb/src/function/cast/cast_function_set.cpp +2 -0
- package/src/duckdb/src/function/cast/decimal_cast.cpp +38 -44
- package/src/duckdb/src/function/cast/default_casts.cpp +5 -2
- package/src/duckdb/src/function/cast/enum_casts.cpp +5 -5
- package/src/duckdb/src/function/cast/list_casts.cpp +24 -14
- package/src/duckdb/src/function/cast/string_cast.cpp +48 -30
- package/src/duckdb/src/function/cast/struct_cast.cpp +2 -2
- package/src/duckdb/src/function/cast/time_casts.cpp +12 -0
- package/src/duckdb/src/function/cast/ub_duckdb_func_cast.cpp +17 -0
- package/src/duckdb/src/function/cast/union/ub_duckdb_union_cast.cpp +2 -0
- package/src/duckdb/src/function/cast/union_casts.cpp +13 -15
- package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +1 -1
- package/src/duckdb/src/function/cast_rules.cpp +2 -1
- package/src/duckdb/src/function/pragma/ub_duckdb_func_pragma.cpp +3 -0
- package/src/duckdb/src/function/scalar/bit/ub_duckdb_func_bit.cpp +2 -0
- package/src/duckdb/src/function/scalar/blob/ub_duckdb_func_blob.cpp +3 -0
- package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +7 -6
- package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +3 -3
- package/src/duckdb/src/function/scalar/compressed_materialization/ub_duckdb_func_compressed_materialization.cpp +3 -0
- package/src/duckdb/src/function/scalar/date/ub_duckdb_func_date.cpp +12 -0
- package/src/duckdb/src/function/scalar/enum/ub_duckdb_func_enum.cpp +2 -0
- package/src/duckdb/src/function/scalar/generic/ub_duckdb_func_generic.cpp +8 -0
- package/src/duckdb/src/function/scalar/generic/ub_duckdb_func_generic_main.cpp +2 -0
- package/src/duckdb/src/function/scalar/list/list_resize.cpp +3 -1
- package/src/duckdb/src/function/scalar/list/list_zip.cpp +3 -4
- package/src/duckdb/src/function/scalar/list/ub_duckdb_func_list.cpp +11 -0
- package/src/duckdb/src/function/scalar/list/ub_duckdb_func_list_nested.cpp +5 -0
- package/src/duckdb/src/function/scalar/map/ub_duckdb_func_map_nested.cpp +7 -0
- package/src/duckdb/src/function/scalar/math/ub_duckdb_func_math.cpp +4 -0
- package/src/duckdb/src/function/scalar/nested_functions.cpp +7 -3
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +1 -1
- package/src/duckdb/src/function/scalar/operators/multiply.cpp +4 -2
- package/src/duckdb/src/function/scalar/operators/subtract.cpp +9 -3
- package/src/duckdb/src/function/scalar/operators/ub_duckdb_func_ops.cpp +6 -0
- package/src/duckdb/src/function/scalar/operators/ub_duckdb_func_ops_main.cpp +5 -0
- package/src/duckdb/src/function/scalar/sequence/ub_duckdb_func_seq.cpp +2 -0
- package/src/duckdb/src/function/scalar/strftime_format.cpp +21 -20
- package/src/duckdb/src/function/scalar/string/like.cpp +14 -3
- package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -2
- package/src/duckdb/src/function/scalar/string/regexp/ub_duckdb_func_string_regexp.cpp +3 -0
- package/src/duckdb/src/function/scalar/string/regexp.cpp +6 -4
- package/src/duckdb/src/function/scalar/string/suffix.cpp +1 -1
- package/src/duckdb/src/function/scalar/string/ub_duckdb_func_string.cpp +31 -0
- package/src/duckdb/src/function/scalar/string/ub_duckdb_func_string_main.cpp +12 -0
- package/src/duckdb/src/function/scalar/struct/ub_duckdb_func_struct.cpp +4 -0
- package/src/duckdb/src/function/scalar/struct/ub_duckdb_func_struct_main.cpp +2 -0
- package/src/duckdb/src/function/scalar/system/ub_duckdb_func_system.cpp +2 -0
- package/src/duckdb/src/function/scalar/ub_duckdb_func_scalar.cpp +9 -0
- package/src/duckdb/src/function/scalar/union/ub_duckdb_func_union.cpp +4 -0
- package/src/duckdb/src/function/table/arrow/arrow_array_scan_state.cpp +28 -2
- package/src/duckdb/src/function/table/arrow/ub_duckdb_arrow_conversion.cpp +2 -0
- package/src/duckdb/src/function/table/arrow.cpp +23 -6
- package/src/duckdb/src/function/table/arrow_conversion.cpp +75 -33
- package/src/duckdb/src/function/table/copy_csv.cpp +8 -3
- package/src/duckdb/src/function/table/range.cpp +5 -0
- package/src/duckdb/src/function/table/read_csv.cpp +9 -8
- package/src/duckdb/src/function/table/read_file.cpp +1 -1
- package/src/duckdb/src/function/table/sniff_csv.cpp +5 -5
- package/src/duckdb/src/function/table/system/duckdb_columns.cpp +6 -2
- package/src/duckdb/src/function/table/system/duckdb_secrets.cpp +5 -1
- package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +3 -1
- package/src/duckdb/src/function/table/system/duckdb_settings.cpp +13 -1
- package/src/duckdb/src/function/table/system/test_all_types.cpp +64 -0
- package/src/duckdb/src/function/table/system/ub_duckdb_table_func_system.cpp +23 -0
- package/src/duckdb/src/function/table/ub_duckdb_func_table.cpp +16 -0
- package/src/duckdb/src/function/table/version/pragma_version.cpp +11 -2
- package/src/duckdb/src/function/table/version/ub_duckdb_func_table_version.cpp +2 -0
- package/src/duckdb/src/function/ub_duckdb_function.cpp +14 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +11 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/view_catalog_entry.hpp +2 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/allocator.hpp +8 -11
- package/src/duckdb/src/include/duckdb/common/arrow/appender/enum_data.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/arrow/appender/fixed_size_list_data.hpp +14 -0
- package/src/duckdb/src/include/duckdb/common/arrow/appender/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/arrow/appender/list_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/arrow/appender/varchar_data.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/bitpacking.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/bswap.hpp +6 -2
- package/src/duckdb/src/include/duckdb/common/enum_util.hpp +32 -0
- package/src/duckdb/src/include/duckdb/common/enums/catalog_lookup_behavior.hpp +21 -0
- package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +0 -1
- package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/enums/prepared_statement_mode.hpp +20 -0
- package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/exception/conversion_exception.hpp +6 -0
- package/src/duckdb/src/include/duckdb/common/exception/parser_exception.hpp +4 -0
- package/src/duckdb/src/include/duckdb/common/exception.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/file_opener.hpp +6 -5
- package/src/duckdb/src/include/duckdb/common/file_system.hpp +4 -2
- package/src/duckdb/src/include/duckdb/common/helper.hpp +7 -0
- package/src/duckdb/src/include/duckdb/common/limits.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/local_file_system.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +64 -0
- package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +34 -33
- package/src/duckdb/src/include/duckdb/common/operator/decimal_cast_operators.hpp +150 -124
- package/src/duckdb/src/include/duckdb/common/operator/integer_cast_operator.hpp +5 -5
- package/src/duckdb/src/include/duckdb/common/radix.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/sort/duckdb_pdqsort.hpp +4 -4
- package/src/duckdb/src/include/duckdb/common/types/bit.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/blob.hpp +4 -1
- package/src/duckdb/src/include/duckdb/common/types/cast_helpers.hpp +15 -13
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_allocator.hpp +5 -0
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_segment.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +4 -1
- package/src/duckdb/src/include/duckdb/common/types/selection_vector.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/types/string_heap.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +11 -4
- package/src/duckdb/src/include/duckdb/common/types/time.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +7 -2
- package/src/duckdb/src/include/duckdb/common/types/uuid.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +7 -0
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +40 -7
- package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/vector_operations/general_cast.hpp +12 -4
- package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +6 -6
- package/src/duckdb/src/include/duckdb/common/vector_operations/vector_operations.hpp +3 -2
- package/src/duckdb/src/include/duckdb/common/windows_undefs.hpp +4 -0
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +1 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/list_functions.hpp +9 -0
- package/src/duckdb/src/include/duckdb/execution/column_binding_resolver.hpp +2 -1
- package/src/duckdb/src/include/duckdb/execution/executor.hpp +10 -0
- package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/base_scanner.hpp +262 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/column_count_scanner.hpp +70 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_buffer.hpp +103 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_buffer_manager.hpp +74 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_casting.hpp +154 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_error.hpp +130 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_file_handle.hpp +60 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_file_scanner.hpp +70 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_option.hpp +155 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_reader_options.hpp +166 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_sniffer.hpp +191 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state.hpp +30 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state_machine.hpp +99 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state_machine_cache.hpp +91 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/global_csv_state.hpp +80 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/quote_rules.hpp +21 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner_boundary.hpp +93 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/skip_scanner.hpp +60 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine_options.hpp +35 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/string_value_scanner.hpp +200 -0
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit.hpp +13 -10
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit_percent.hpp +5 -11
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_streaming_limit.hpp +4 -6
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_verify_vector.hpp +51 -0
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_hash_join.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/batch_memory_manager.hpp +165 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/batch_task_manager.hpp +48 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_copy_to_file.hpp +10 -17
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +4 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +2 -0
- package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +10 -6
- package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +0 -2
- package/src/duckdb/src/include/duckdb/execution/window_executor.hpp +2 -1
- package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/cast/cast_function_set.hpp +1 -0
- package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +14 -5
- package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +27 -43
- package/src/duckdb/src/include/duckdb/function/compression_function.hpp +4 -4
- package/src/duckdb/src/include/duckdb/function/copy_function.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/function.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +1 -0
- package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +10 -4
- package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +8 -6
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +3 -3
- package/src/duckdb/src/include/duckdb/main/attached_database.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/capi/cast/from_decimal.hpp +6 -4
- package/src/duckdb/src/include/duckdb/main/capi/cast/to_decimal.hpp +17 -10
- package/src/duckdb/src/include/duckdb/main/client_config.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/client_context.hpp +17 -3
- package/src/duckdb/src/include/duckdb/main/client_context_file_opener.hpp +2 -2
- package/src/duckdb/src/include/duckdb/main/client_context_state.hpp +20 -0
- package/src/duckdb/src/include/duckdb/main/client_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/database.hpp +3 -2
- package/src/duckdb/src/include/duckdb/main/database_manager.hpp +2 -1
- package/src/duckdb/src/include/duckdb/main/extension/generated_extension_loader.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +230 -199
- package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +18 -0
- package/src/duckdb/src/include/duckdb/main/relation/read_csv_relation.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/relation/table_function_relation.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/relation.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/secret/secret_manager.hpp +4 -0
- package/src/duckdb/src/include/duckdb/main/settings.hpp +54 -10
- package/src/duckdb/src/include/duckdb/optimizer/join_order/relation_manager.hpp +2 -1
- package/src/duckdb/src/include/duckdb/optimizer/rule/ordered_aggregate_optimizer.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parallel/concurrentqueue.hpp +21 -5
- package/src/duckdb/src/include/duckdb/parallel/event.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parallel/executor_task.hpp +37 -0
- package/src/duckdb/src/include/duckdb/parallel/interrupt.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parallel/task.hpp +0 -20
- package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +4 -2
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +10 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +2 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +0 -24
- package/src/duckdb/src/include/duckdb/parser/parsed_data/comment_on_column_info.hpp +46 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/extra_drop_info.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +3 -2
- package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +3 -3
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +3 -3
- package/src/duckdb/src/include/duckdb/planner/binder.hpp +11 -4
- package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +59 -23
- package/src/duckdb/src/include/duckdb/planner/expression.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/expression_binder/column_alias_binder.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression_iterator.hpp +11 -3
- package/src/duckdb/src/include/duckdb/planner/extension_callback.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +0 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_limit.hpp +5 -9
- package/src/duckdb/src/include/duckdb/planner/subquery/rewrite_correlated_expressions.hpp +0 -15
- package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +5 -0
- package/src/duckdb/src/include/duckdb/storage/buffer/buffer_pool.hpp +40 -5
- package/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_analyze.hpp +5 -1
- package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_compress.hpp +4 -4
- package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_utils.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/algorithm/alprd.hpp +10 -8
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_analyze.hpp +5 -1
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_compress.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/bit_reader.hpp +11 -10
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/bit_utils.hpp +3 -1
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/chimp128.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/leading_zero_buffer.hpp +5 -3
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_scan.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +3 -1
- package/src/duckdb/src/include/duckdb/storage/index.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/append_state.hpp +0 -2
- package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +5 -3
- package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +5 -0
- package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +9 -2
- package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +2 -6
- package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/temporary_file_manager.hpp +169 -0
- package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +11 -1
- package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +6 -1
- package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +1 -1
- package/src/duckdb/src/include/duckdb.h +119 -67
- package/src/duckdb/src/main/appender.cpp +2 -1
- package/src/duckdb/src/main/attached_database.cpp +49 -27
- package/src/duckdb/src/main/capi/appender-c.cpp +1 -1
- package/src/duckdb/src/main/capi/cast/ub_duckdb_main_capi_cast.cpp +3 -0
- package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
- package/src/duckdb/src/main/capi/data_chunk-c.cpp +9 -1
- package/src/duckdb/src/main/capi/datetime-c.cpp +14 -8
- package/src/duckdb/src/main/capi/duckdb_value-c.cpp +29 -2
- package/src/duckdb/src/main/capi/helper-c.cpp +2 -0
- package/src/duckdb/src/main/capi/hugeint-c.cpp +2 -1
- package/src/duckdb/src/main/capi/logical_types-c.cpp +35 -1
- package/src/duckdb/src/main/capi/result-c.cpp +9 -0
- package/src/duckdb/src/main/capi/ub_duckdb_main_capi.cpp +19 -0
- package/src/duckdb/src/main/chunk_scan_state/ub_duckdb_main_chunk_scan_state.cpp +2 -0
- package/src/duckdb/src/main/client_context.cpp +133 -33
- package/src/duckdb/src/main/client_context_file_opener.cpp +8 -7
- package/src/duckdb/src/main/config.cpp +2 -0
- package/src/duckdb/src/main/connection_manager.cpp +8 -0
- package/src/duckdb/src/main/database.cpp +13 -4
- package/src/duckdb/src/main/database_manager.cpp +10 -1
- package/src/duckdb/src/main/extension/extension_helper.cpp +8 -5
- package/src/duckdb/src/main/extension/extension_install.cpp +1 -1
- package/src/duckdb/src/main/extension/ub_duckdb_main_extension.cpp +6 -0
- package/src/duckdb/src/main/prepared_statement_data.cpp +23 -6
- package/src/duckdb/src/main/query_profiler.cpp +9 -7
- package/src/duckdb/src/main/relation/read_csv_relation.cpp +17 -12
- package/src/duckdb/src/main/relation/ub_duckdb_main_relation.cpp +26 -0
- package/src/duckdb/src/main/relation/value_relation.cpp +2 -0
- package/src/duckdb/src/main/secret/secret.cpp +1 -1
- package/src/duckdb/src/main/secret/secret_manager.cpp +41 -8
- package/src/duckdb/src/main/secret/secret_storage.cpp +8 -2
- package/src/duckdb/src/main/settings/settings.cpp +42 -2
- package/src/duckdb/src/main/settings/ub_duckdb_main_settings.cpp +2 -0
- package/src/duckdb/src/main/ub_duckdb_main.cpp +25 -0
- package/src/duckdb/src/optimizer/compressed_materialization/ub_duckdb_optimizer_compressed_materialization.cpp +4 -0
- package/src/duckdb/src/optimizer/filter_combiner.cpp +20 -14
- package/src/duckdb/src/optimizer/in_clause_rewriter.cpp +5 -1
- package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +23 -11
- package/src/duckdb/src/optimizer/join_order/ub_duckdb_optimizer_join_order.cpp +12 -0
- package/src/duckdb/src/optimizer/matcher/ub_duckdb_optimizer_matcher.cpp +2 -0
- package/src/duckdb/src/optimizer/pullup/ub_duckdb_optimizer_pullup.cpp +6 -0
- package/src/duckdb/src/optimizer/pushdown/pushdown_limit.cpp +1 -1
- package/src/duckdb/src/optimizer/pushdown/ub_duckdb_optimizer_pushdown.cpp +12 -0
- package/src/duckdb/src/optimizer/remove_unused_columns.cpp +7 -6
- package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +8 -6
- package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +1 -1
- package/src/duckdb/src/optimizer/rule/ub_duckdb_optimizer_rules.cpp +16 -0
- package/src/duckdb/src/optimizer/statistics/expression/propagate_cast.cpp +71 -1
- package/src/duckdb/src/optimizer/statistics/expression/ub_duckdb_optimizer_statistics_expr.cpp +11 -0
- package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics/operator/propagate_limit.cpp +5 -1
- package/src/duckdb/src/optimizer/statistics/operator/ub_duckdb_optimizer_statistics_op.cpp +11 -0
- package/src/duckdb/src/optimizer/topn_optimizer.cpp +12 -11
- package/src/duckdb/src/optimizer/ub_duckdb_optimizer.cpp +20 -0
- package/src/duckdb/src/parallel/executor.cpp +8 -19
- package/src/duckdb/src/parallel/executor_task.cpp +6 -2
- package/src/duckdb/src/parallel/pipeline.cpp +12 -6
- package/src/duckdb/src/parallel/pipeline_executor.cpp +1 -1
- package/src/duckdb/src/parallel/pipeline_finish_event.cpp +2 -2
- package/src/duckdb/src/parallel/pipeline_initialize_event.cpp +1 -2
- package/src/duckdb/src/parallel/task_scheduler.cpp +15 -8
- package/src/duckdb/src/parallel/ub_duckdb_parallel.cpp +15 -0
- package/src/duckdb/src/parser/constraints/ub_duckdb_constraints.cpp +5 -0
- package/src/duckdb/src/parser/expression/ub_duckdb_expression.cpp +18 -0
- package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +0 -18
- package/src/duckdb/src/parser/parsed_data/comment_on_column_info.cpp +44 -0
- package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +1 -0
- package/src/duckdb/src/parser/parsed_data/extra_drop_info.cpp +2 -0
- package/src/duckdb/src/parser/parsed_data/ub_duckdb_parsed_data.cpp +24 -0
- package/src/duckdb/src/parser/parser.cpp +1 -1
- package/src/duckdb/src/parser/query_error_context.cpp +15 -1
- package/src/duckdb/src/parser/query_node/ub_duckdb_query_node.cpp +5 -0
- package/src/duckdb/src/parser/statement/export_statement.cpp +2 -1
- package/src/duckdb/src/parser/statement/relation_statement.cpp +2 -2
- package/src/duckdb/src/parser/statement/ub_duckdb_statement.cpp +25 -0
- package/src/duckdb/src/parser/tableref/pivotref.cpp +3 -3
- package/src/duckdb/src/parser/tableref/showref.cpp +2 -0
- package/src/duckdb/src/parser/tableref/ub_duckdb_parser_tableref.cpp +8 -0
- package/src/duckdb/src/parser/transform/constraint/ub_duckdb_transformer_constraint.cpp +2 -0
- package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +10 -2
- package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +7 -7
- package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +2 -1
- package/src/duckdb/src/parser/transform/expression/ub_duckdb_transformer_expression.cpp +20 -0
- package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +2 -2
- package/src/duckdb/src/parser/transform/helpers/ub_duckdb_transformer_helpers.cpp +8 -0
- package/src/duckdb/src/parser/transform/statement/transform_comment_on.cpp +3 -8
- package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +3 -1
- package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +2 -3
- package/src/duckdb/src/parser/transform/statement/ub_duckdb_transformer_statement.cpp +37 -0
- package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +16 -0
- package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +49 -32
- package/src/duckdb/src/parser/transform/tableref/ub_duckdb_transformer_tableref.cpp +8 -0
- package/src/duckdb/src/parser/ub_duckdb_parser.cpp +15 -0
- package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +11 -4
- package/src/duckdb/src/planner/binder/expression/bind_operator_expression.cpp +4 -1
- package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +71 -5
- package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +35 -1
- package/src/duckdb/src/planner/binder/expression/ub_duckdb_bind_expression.cpp +20 -0
- package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +55 -51
- package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +1 -11
- package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +2 -2
- package/src/duckdb/src/planner/binder/query_node/ub_duckdb_bind_query_node.cpp +12 -0
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +12 -6
- package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +1 -1
- package/src/duckdb/src/planner/binder/statement/bind_export.cpp +8 -2
- package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +6 -3
- package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +13 -2
- package/src/duckdb/src/planner/binder/statement/ub_duckdb_bind_statement.cpp +26 -0
- package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +15 -4
- package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +9 -2
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +93 -45
- package/src/duckdb/src/planner/binder/tableref/bind_subqueryref.cpp +6 -1
- package/src/duckdb/src/planner/binder/tableref/ub_duckdb_bind_tableref.cpp +17 -0
- package/src/duckdb/src/planner/binder.cpp +22 -23
- package/src/duckdb/src/planner/bound_result_modifier.cpp +67 -4
- package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +5 -1
- package/src/duckdb/src/planner/expression/bound_window_expression.cpp +3 -0
- package/src/duckdb/src/planner/expression/ub_duckdb_planner_expression.cpp +19 -0
- package/src/duckdb/src/planner/expression_binder/column_alias_binder.cpp +14 -9
- package/src/duckdb/src/planner/expression_binder/having_binder.cpp +17 -9
- package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +61 -37
- package/src/duckdb/src/planner/expression_binder/qualify_binder.cpp +8 -4
- package/src/duckdb/src/planner/expression_binder/ub_duckdb_expression_binders.cpp +20 -0
- package/src/duckdb/src/planner/expression_binder/where_binder.cpp +3 -2
- package/src/duckdb/src/planner/expression_iterator.cpp +73 -52
- package/src/duckdb/src/planner/filter/ub_duckdb_planner_filter.cpp +4 -0
- package/src/duckdb/src/planner/logical_operator_visitor.cpp +4 -14
- package/src/duckdb/src/planner/operator/logical_limit.cpp +14 -6
- package/src/duckdb/src/planner/operator/ub_duckdb_planner_operator.cpp +43 -0
- package/src/duckdb/src/planner/parsed_data/ub_duckdb_planner_parsed_data.cpp +2 -0
- package/src/duckdb/src/planner/planner.cpp +3 -0
- package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +46 -18
- package/src/duckdb/src/planner/subquery/rewrite_correlated_expressions.cpp +39 -33
- package/src/duckdb/src/planner/subquery/ub_duckdb_planner_subquery.cpp +4 -0
- package/src/duckdb/src/planner/ub_duckdb_planner.cpp +15 -0
- package/src/duckdb/src/storage/arena_allocator.cpp +9 -0
- package/src/duckdb/src/storage/buffer/block_handle.cpp +7 -2
- package/src/duckdb/src/storage/buffer/block_manager.cpp +7 -3
- package/src/duckdb/src/storage/buffer/buffer_pool.cpp +121 -24
- package/src/duckdb/src/storage/buffer/ub_duckdb_storage_buffer.cpp +6 -0
- package/src/duckdb/src/storage/checkpoint/ub_duckdb_storage_checkpoint.cpp +5 -0
- package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +4 -4
- package/src/duckdb/src/storage/compression/chimp/ub_duckdb_storage_compression_chimp.cpp +6 -0
- package/src/duckdb/src/storage/compression/dictionary_compression.cpp +6 -5
- package/src/duckdb/src/storage/compression/fsst.cpp +3 -2
- package/src/duckdb/src/storage/compression/rle.cpp +1 -1
- package/src/duckdb/src/storage/compression/string_uncompressed.cpp +4 -4
- package/src/duckdb/src/storage/compression/ub_duckdb_storage_compression.cpp +12 -0
- package/src/duckdb/src/storage/data_table.cpp +6 -3
- package/src/duckdb/src/storage/local_storage.cpp +5 -2
- package/src/duckdb/src/storage/metadata/metadata_manager.cpp +4 -4
- package/src/duckdb/src/storage/metadata/metadata_reader.cpp +1 -1
- package/src/duckdb/src/storage/metadata/metadata_writer.cpp +1 -1
- package/src/duckdb/src/storage/metadata/ub_duckdb_storage_metadata.cpp +4 -0
- package/src/duckdb/src/storage/partial_block_manager.cpp +1 -1
- package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +2 -0
- package/src/duckdb/src/storage/serialization/serialize_expression.cpp +3 -0
- package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +5 -29
- package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +22 -4
- package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +12 -32
- package/src/duckdb/src/storage/serialization/ub_duckdb_storage_serialization.cpp +16 -0
- package/src/duckdb/src/storage/standard_buffer_manager.cpp +29 -397
- package/src/duckdb/src/storage/statistics/string_stats.cpp +1 -1
- package/src/duckdb/src/storage/statistics/ub_duckdb_storage_statistics.cpp +10 -0
- package/src/duckdb/src/storage/storage_info.cpp +1 -1
- package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +3 -3
- package/src/duckdb/src/storage/table/column_data.cpp +7 -16
- package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +4 -1
- package/src/duckdb/src/storage/table/column_segment.cpp +68 -78
- package/src/duckdb/src/storage/table/list_column_data.cpp +1 -0
- package/src/duckdb/src/storage/table/row_group.cpp +17 -7
- package/src/duckdb/src/storage/table/row_group_collection.cpp +28 -27
- package/src/duckdb/src/storage/table/ub_duckdb_storage_table.cpp +17 -0
- package/src/duckdb/src/storage/table/update_segment.cpp +7 -7
- package/src/duckdb/src/storage/temporary_file_manager.cpp +334 -0
- package/src/duckdb/src/storage/ub_duckdb_storage.cpp +20 -0
- package/src/duckdb/src/storage/write_ahead_log.cpp +3 -2
- package/src/duckdb/src/transaction/commit_state.cpp +4 -2
- package/src/duckdb/src/transaction/duck_transaction_manager.cpp +32 -17
- package/src/duckdb/src/transaction/meta_transaction.cpp +24 -0
- package/src/duckdb/src/transaction/transaction_context.cpp +0 -9
- package/src/duckdb/src/transaction/ub_duckdb_transaction.cpp +11 -0
- package/src/duckdb/src/transaction/undo_buffer.cpp +1 -1
- package/src/duckdb/third_party/jaro_winkler/details/common.hpp +1 -1
- package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +2 -0
- package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +1032 -551
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +24122 -24304
- package/src/duckdb/third_party/mbedtls/include/mbedtls/mbedtls_config.h +0 -3
- package/src/duckdb/third_party/mbedtls/library/entropy_poll.cpp +32 -4
- package/src/duckdb/third_party/miniz/miniz_wrapper.hpp +4 -4
- package/src/duckdb/third_party/tdigest/t_digest.hpp +3 -3
- package/src/duckdb/ub_src_common_arrow_appender.cpp +2 -0
- package/src/duckdb/ub_src_common_exception.cpp +2 -0
- package/src/duckdb/ub_src_execution_operator_helper.cpp +2 -0
- package/src/duckdb/ub_src_execution_operator_persistent.cpp +0 -2
- package/src/duckdb/ub_src_execution_physical_plan.cpp +0 -2
- package/src/duckdb/ub_src_parser_parsed_data.cpp +1 -1
- package/src/duckdb/ub_src_planner_operator.cpp +0 -2
- package/src/duckdb/ub_src_storage.cpp +2 -0
- package/test/columns.test.ts +1 -1
- package/test/test_all_types.test.ts +1 -1
|
@@ -27,6 +27,32 @@
|
|
|
27
27
|
|
|
28
28
|
namespace duckdb {
|
|
29
29
|
|
|
30
|
+
UnifiedVectorFormat::UnifiedVectorFormat() : sel(nullptr), data(nullptr) {
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
UnifiedVectorFormat::UnifiedVectorFormat(UnifiedVectorFormat &&other) noexcept {
|
|
34
|
+
bool refers_to_self = other.sel == &other.owned_sel;
|
|
35
|
+
std::swap(sel, other.sel);
|
|
36
|
+
std::swap(data, other.data);
|
|
37
|
+
std::swap(validity, other.validity);
|
|
38
|
+
std::swap(owned_sel, other.owned_sel);
|
|
39
|
+
if (refers_to_self) {
|
|
40
|
+
sel = &owned_sel;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
UnifiedVectorFormat &UnifiedVectorFormat::operator=(UnifiedVectorFormat &&other) noexcept {
|
|
45
|
+
bool refers_to_self = other.sel == &other.owned_sel;
|
|
46
|
+
std::swap(sel, other.sel);
|
|
47
|
+
std::swap(data, other.data);
|
|
48
|
+
std::swap(validity, other.validity);
|
|
49
|
+
std::swap(owned_sel, other.owned_sel);
|
|
50
|
+
if (refers_to_self) {
|
|
51
|
+
sel = &owned_sel;
|
|
52
|
+
}
|
|
53
|
+
return *this;
|
|
54
|
+
}
|
|
55
|
+
|
|
30
56
|
Vector::Vector(LogicalType type_p, bool create_data, bool zero_data, idx_t capacity)
|
|
31
57
|
: vector_type(VectorType::FLAT_VECTOR), type(std::move(type_p)), data(nullptr), validity(capacity) {
|
|
32
58
|
if (create_data) {
|
|
@@ -144,11 +170,22 @@ void Vector::ResetFromCache(const VectorCache &cache) {
|
|
|
144
170
|
}
|
|
145
171
|
|
|
146
172
|
void Vector::Slice(const Vector &other, idx_t offset, idx_t end) {
|
|
173
|
+
D_ASSERT(end >= offset);
|
|
147
174
|
if (other.GetVectorType() == VectorType::CONSTANT_VECTOR) {
|
|
148
175
|
Reference(other);
|
|
149
176
|
return;
|
|
150
177
|
}
|
|
151
|
-
|
|
178
|
+
if (other.GetVectorType() != VectorType::FLAT_VECTOR) {
|
|
179
|
+
// we can slice the data directly only for flat vectors
|
|
180
|
+
// for non-flat vectors slice using a selection vector instead
|
|
181
|
+
idx_t count = end - offset;
|
|
182
|
+
SelectionVector sel(count);
|
|
183
|
+
for (idx_t i = 0; i < count; i++) {
|
|
184
|
+
sel.set_index(i, offset + i);
|
|
185
|
+
}
|
|
186
|
+
Slice(other, sel, count);
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
152
189
|
|
|
153
190
|
auto internal_type = GetType().InternalType();
|
|
154
191
|
if (internal_type == PhysicalType::STRUCT) {
|
|
@@ -624,11 +661,14 @@ Value Vector::GetValueInternal(const Vector &v_p, idx_t index_p) {
|
|
|
624
661
|
auto str = reinterpret_cast<string_t *>(data)[index];
|
|
625
662
|
return Value(str.GetString());
|
|
626
663
|
}
|
|
627
|
-
case LogicalTypeId::AGGREGATE_STATE:
|
|
628
664
|
case LogicalTypeId::BLOB: {
|
|
629
665
|
auto str = reinterpret_cast<string_t *>(data)[index];
|
|
630
666
|
return Value::BLOB(const_data_ptr_cast(str.GetData()), str.GetSize());
|
|
631
667
|
}
|
|
668
|
+
case LogicalTypeId::AGGREGATE_STATE: {
|
|
669
|
+
auto str = reinterpret_cast<string_t *>(data)[index];
|
|
670
|
+
return Value::AGGREGATE_STATE(vector->GetType(), const_data_ptr_cast(str.GetData()), str.GetSize());
|
|
671
|
+
}
|
|
632
672
|
case LogicalTypeId::BIT: {
|
|
633
673
|
auto str = reinterpret_cast<string_t *>(data)[index];
|
|
634
674
|
return Value::BIT(const_data_ptr_cast(str.GetData()), str.GetSize());
|
|
@@ -643,10 +683,16 @@ Value Vector::GetValueInternal(const Vector &v_p, idx_t index_p) {
|
|
|
643
683
|
return Value::MAP(ListType::GetChildType(type), std::move(children));
|
|
644
684
|
}
|
|
645
685
|
case LogicalTypeId::UNION: {
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
686
|
+
// Remember to pass the original index_p here so we dont slice twice when looking up the tag
|
|
687
|
+
// in case this is a dictionary vector
|
|
688
|
+
union_tag_t tag;
|
|
689
|
+
if (UnionVector::TryGetTag(*vector, index_p, tag)) {
|
|
690
|
+
auto value = UnionVector::GetMember(*vector, tag).GetValue(index_p);
|
|
691
|
+
auto members = UnionType::CopyMemberTypes(type);
|
|
692
|
+
return Value::UNION(members, tag, std::move(value));
|
|
693
|
+
} else {
|
|
694
|
+
return Value(vector->GetType());
|
|
695
|
+
}
|
|
650
696
|
}
|
|
651
697
|
case LogicalTypeId::STRUCT: {
|
|
652
698
|
// we can derive the value schema from the vector schema
|
|
@@ -831,7 +877,7 @@ void Vector::Flatten(idx_t count) {
|
|
|
831
877
|
}
|
|
832
878
|
data = buffer->GetData();
|
|
833
879
|
vector_type = VectorType::FLAT_VECTOR;
|
|
834
|
-
if (is_null) {
|
|
880
|
+
if (is_null && GetType().InternalType() != PhysicalType::ARRAY) {
|
|
835
881
|
// constant NULL, set nullmask
|
|
836
882
|
validity.EnsureWritable();
|
|
837
883
|
validity.SetAllInvalid(count);
|
|
@@ -889,15 +935,20 @@ void Vector::Flatten(idx_t count) {
|
|
|
889
935
|
break;
|
|
890
936
|
}
|
|
891
937
|
case PhysicalType::ARRAY: {
|
|
892
|
-
auto &
|
|
938
|
+
auto &original_child = ArrayVector::GetEntry(*this);
|
|
893
939
|
auto array_size = ArrayType::GetSize(GetType());
|
|
894
|
-
|
|
895
940
|
auto flattened_buffer = make_uniq<VectorArrayBuffer>(GetType(), count);
|
|
896
941
|
auto &new_child = flattened_buffer->GetChild();
|
|
897
942
|
|
|
898
|
-
//
|
|
899
|
-
if (
|
|
900
|
-
|
|
943
|
+
// Fast path: The array is a constant null
|
|
944
|
+
if (is_null) {
|
|
945
|
+
// Invalidate the parent array
|
|
946
|
+
validity.SetAllInvalid(count);
|
|
947
|
+
// Also invalidate the new child array
|
|
948
|
+
new_child.validity.SetAllInvalid(count * array_size);
|
|
949
|
+
// Attach the flattened buffer and return
|
|
950
|
+
auxiliary = shared_ptr<VectorBuffer>(flattened_buffer.release());
|
|
951
|
+
return;
|
|
901
952
|
}
|
|
902
953
|
|
|
903
954
|
// Now we need to "unpack" the child vector.
|
|
@@ -909,7 +960,8 @@ void Vector::Flatten(idx_t count) {
|
|
|
909
960
|
// | 2 |
|
|
910
961
|
// ...
|
|
911
962
|
|
|
912
|
-
|
|
963
|
+
auto child_vec = make_uniq<Vector>(original_child);
|
|
964
|
+
child_vec->Flatten(count * array_size);
|
|
913
965
|
|
|
914
966
|
// Create a selection vector
|
|
915
967
|
SelectionVector sel(count * array_size);
|
|
@@ -917,7 +969,7 @@ void Vector::Flatten(idx_t count) {
|
|
|
917
969
|
for (idx_t elem_idx = 0; elem_idx < array_size; elem_idx++) {
|
|
918
970
|
auto position = array_idx * array_size + elem_idx;
|
|
919
971
|
// Broadcast the validity
|
|
920
|
-
if (FlatVector::IsNull(
|
|
972
|
+
if (FlatVector::IsNull(*child_vec, elem_idx)) {
|
|
921
973
|
FlatVector::SetNull(new_child, position, true);
|
|
922
974
|
}
|
|
923
975
|
sel.set_index(position, elem_idx);
|
|
@@ -925,7 +977,7 @@ void Vector::Flatten(idx_t count) {
|
|
|
925
977
|
}
|
|
926
978
|
|
|
927
979
|
// Copy over the data to the new buffer
|
|
928
|
-
VectorOperations::Copy(
|
|
980
|
+
VectorOperations::Copy(*child_vec, new_child, sel, count * array_size, 0, 0);
|
|
929
981
|
auxiliary = shared_ptr<VectorBuffer>(flattened_buffer.release());
|
|
930
982
|
|
|
931
983
|
} break;
|
|
@@ -969,7 +1021,7 @@ void Vector::Flatten(const SelectionVector &sel, idx_t count) {
|
|
|
969
1021
|
break;
|
|
970
1022
|
case VectorType::FSST_VECTOR: {
|
|
971
1023
|
// create a new flat vector of this type
|
|
972
|
-
Vector other(GetType());
|
|
1024
|
+
Vector other(GetType(), count);
|
|
973
1025
|
// copy the data of this vector to the other vector, removing compression and selection vector in the process
|
|
974
1026
|
VectorOperations::Copy(*this, other, sel, count, 0, 0);
|
|
975
1027
|
// create a reference to the data in the other vector
|
|
@@ -1067,6 +1119,7 @@ void Vector::Sequence(int64_t start, int64_t increment, idx_t count) {
|
|
|
1067
1119
|
auxiliary.reset();
|
|
1068
1120
|
}
|
|
1069
1121
|
|
|
1122
|
+
// FIXME: This should ideally be const
|
|
1070
1123
|
void Vector::Serialize(Serializer &serializer, idx_t count) {
|
|
1071
1124
|
auto &logical_type = GetType();
|
|
1072
1125
|
|
|
@@ -1137,9 +1190,11 @@ void Vector::Serialize(Serializer &serializer, idx_t count) {
|
|
|
1137
1190
|
break;
|
|
1138
1191
|
}
|
|
1139
1192
|
case PhysicalType::ARRAY: {
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1193
|
+
Vector serialized_vector(*this);
|
|
1194
|
+
serialized_vector.Flatten(count);
|
|
1195
|
+
|
|
1196
|
+
auto &child = ArrayVector::GetEntry(serialized_vector);
|
|
1197
|
+
auto array_size = ArrayType::GetSize(serialized_vector.GetType());
|
|
1143
1198
|
auto child_size = array_size * count;
|
|
1144
1199
|
serializer.WriteProperty<uint64_t>(103, "array_size", array_size);
|
|
1145
1200
|
serializer.WriteObject(104, "child", [&](Serializer &object) { child.Serialize(object, child_size); });
|
|
@@ -1522,6 +1577,94 @@ void Vector::Verify(idx_t count) {
|
|
|
1522
1577
|
Verify(*this, *flat_sel, count);
|
|
1523
1578
|
}
|
|
1524
1579
|
|
|
1580
|
+
void Vector::DebugTransformToDictionary(Vector &vector, idx_t count) {
|
|
1581
|
+
if (vector.GetVectorType() != VectorType::FLAT_VECTOR) {
|
|
1582
|
+
// only supported for flat vectors currently
|
|
1583
|
+
return;
|
|
1584
|
+
}
|
|
1585
|
+
// convert vector to dictionary vector
|
|
1586
|
+
// first create an inverted vector of twice the size with NULL values every other value
|
|
1587
|
+
// i.e. [1, 2, 3] is converted into [NULL, 3, NULL, 2, NULL, 1]
|
|
1588
|
+
idx_t verify_count = count * 2;
|
|
1589
|
+
SelectionVector inverted_sel(verify_count);
|
|
1590
|
+
idx_t offset = 0;
|
|
1591
|
+
for (idx_t i = 0; i < count; i++) {
|
|
1592
|
+
idx_t current_index = count - i - 1;
|
|
1593
|
+
inverted_sel.set_index(offset++, current_index);
|
|
1594
|
+
inverted_sel.set_index(offset++, current_index);
|
|
1595
|
+
}
|
|
1596
|
+
Vector inverted_vector(vector, inverted_sel, verify_count);
|
|
1597
|
+
inverted_vector.Flatten(verify_count);
|
|
1598
|
+
// now insert the NULL values at every other position
|
|
1599
|
+
for (idx_t i = 0; i < count; i++) {
|
|
1600
|
+
FlatVector::SetNull(inverted_vector, i * 2, true);
|
|
1601
|
+
}
|
|
1602
|
+
// construct the selection vector pointing towards the original values
|
|
1603
|
+
// we start at the back, (verify_count - 1) and move backwards
|
|
1604
|
+
SelectionVector original_sel(count);
|
|
1605
|
+
offset = 0;
|
|
1606
|
+
for (idx_t i = 0; i < count; i++) {
|
|
1607
|
+
original_sel.set_index(offset++, verify_count - 1 - i * 2);
|
|
1608
|
+
}
|
|
1609
|
+
// now slice the inverted vector with the inverted selection vector
|
|
1610
|
+
vector.Slice(inverted_vector, original_sel, count);
|
|
1611
|
+
vector.Verify(count);
|
|
1612
|
+
}
|
|
1613
|
+
|
|
1614
|
+
void Vector::DebugShuffleNestedVector(Vector &vector, idx_t count) {
|
|
1615
|
+
switch (vector.GetType().id()) {
|
|
1616
|
+
case LogicalTypeId::STRUCT: {
|
|
1617
|
+
auto &entries = StructVector::GetEntries(vector);
|
|
1618
|
+
// recurse into child elements
|
|
1619
|
+
for (auto &entry : entries) {
|
|
1620
|
+
Vector::DebugShuffleNestedVector(*entry, count);
|
|
1621
|
+
}
|
|
1622
|
+
break;
|
|
1623
|
+
}
|
|
1624
|
+
case LogicalTypeId::LIST: {
|
|
1625
|
+
if (vector.GetVectorType() != VectorType::FLAT_VECTOR) {
|
|
1626
|
+
break;
|
|
1627
|
+
}
|
|
1628
|
+
auto list_entries = FlatVector::GetData<list_entry_t>(vector);
|
|
1629
|
+
idx_t child_count = 0;
|
|
1630
|
+
for (idx_t r = 0; r < count; r++) {
|
|
1631
|
+
if (FlatVector::IsNull(vector, r)) {
|
|
1632
|
+
continue;
|
|
1633
|
+
}
|
|
1634
|
+
child_count += list_entries[r].length;
|
|
1635
|
+
}
|
|
1636
|
+
if (child_count == 0) {
|
|
1637
|
+
break;
|
|
1638
|
+
}
|
|
1639
|
+
auto &child_vector = ListVector::GetEntry(vector);
|
|
1640
|
+
// reverse the order of all lists
|
|
1641
|
+
SelectionVector child_sel(child_count);
|
|
1642
|
+
idx_t position = child_count;
|
|
1643
|
+
for (idx_t r = 0; r < count; r++) {
|
|
1644
|
+
if (FlatVector::IsNull(vector, r)) {
|
|
1645
|
+
continue;
|
|
1646
|
+
}
|
|
1647
|
+
// move this list to the back
|
|
1648
|
+
position -= list_entries[r].length;
|
|
1649
|
+
for (idx_t k = 0; k < list_entries[r].length; k++) {
|
|
1650
|
+
child_sel.set_index(position + k, list_entries[r].offset + k);
|
|
1651
|
+
}
|
|
1652
|
+
// adjust the offset to this new position
|
|
1653
|
+
list_entries[r].offset = position;
|
|
1654
|
+
}
|
|
1655
|
+
child_vector.Slice(child_sel, child_count);
|
|
1656
|
+
child_vector.Flatten(child_count);
|
|
1657
|
+
ListVector::SetListSize(vector, child_count);
|
|
1658
|
+
|
|
1659
|
+
// recurse into child elements
|
|
1660
|
+
Vector::DebugShuffleNestedVector(child_vector, child_count);
|
|
1661
|
+
break;
|
|
1662
|
+
}
|
|
1663
|
+
default:
|
|
1664
|
+
break;
|
|
1665
|
+
}
|
|
1666
|
+
}
|
|
1667
|
+
|
|
1525
1668
|
//===--------------------------------------------------------------------===//
|
|
1526
1669
|
// FlatVector
|
|
1527
1670
|
//===--------------------------------------------------------------------===//
|
|
@@ -1529,7 +1672,7 @@ void FlatVector::SetNull(Vector &vector, idx_t idx, bool is_null) {
|
|
|
1529
1672
|
D_ASSERT(vector.GetVectorType() == VectorType::FLAT_VECTOR);
|
|
1530
1673
|
vector.validity.Set(idx, !is_null);
|
|
1531
1674
|
if (is_null) {
|
|
1532
|
-
auto type = vector.GetType();
|
|
1675
|
+
auto &type = vector.GetType();
|
|
1533
1676
|
auto internal_type = type.InternalType();
|
|
1534
1677
|
if (internal_type == PhysicalType::STRUCT) {
|
|
1535
1678
|
// set all child entries to null as well
|
|
@@ -1540,7 +1683,6 @@ void FlatVector::SetNull(Vector &vector, idx_t idx, bool is_null) {
|
|
|
1540
1683
|
} else if (internal_type == PhysicalType::ARRAY) {
|
|
1541
1684
|
// set the child element in the array to null as well
|
|
1542
1685
|
auto &child = ArrayVector::GetEntry(vector);
|
|
1543
|
-
D_ASSERT(child.GetVectorType() == VectorType::FLAT_VECTOR);
|
|
1544
1686
|
auto array_size = ArrayType::GetSize(type);
|
|
1545
1687
|
auto child_offset = idx * array_size;
|
|
1546
1688
|
for (idx_t i = 0; i < array_size; i++) {
|
|
@@ -1629,8 +1771,8 @@ void ConstantVector::Reference(Vector &vector, Vector &source, idx_t position, i
|
|
|
1629
1771
|
case PhysicalType::ARRAY: {
|
|
1630
1772
|
UnifiedVectorFormat vdata;
|
|
1631
1773
|
source.ToUnifiedFormat(count, vdata);
|
|
1632
|
-
|
|
1633
|
-
if (!vdata.validity.RowIsValid(
|
|
1774
|
+
auto source_idx = vdata.sel->get_index(position);
|
|
1775
|
+
if (!vdata.validity.RowIsValid(source_idx)) {
|
|
1634
1776
|
// list is null: create null value
|
|
1635
1777
|
Value null_value(source_type);
|
|
1636
1778
|
vector.Reference(null_value);
|
|
@@ -1646,7 +1788,7 @@ void ConstantVector::Reference(Vector &vector, Vector &source, idx_t position, i
|
|
|
1646
1788
|
auto array_size = ArrayType::GetSize(source_type);
|
|
1647
1789
|
SelectionVector sel(array_size);
|
|
1648
1790
|
for (idx_t i = 0; i < array_size; i++) {
|
|
1649
|
-
sel.set_index(i, array_size *
|
|
1791
|
+
sel.set_index(i, array_size * source_idx + i);
|
|
1650
1792
|
}
|
|
1651
1793
|
target_child.Slice(sel, array_size);
|
|
1652
1794
|
target_child.Flatten(array_size); // since its constant we only have to flatten this much
|
|
@@ -1691,19 +1833,19 @@ void ConstantVector::Reference(Vector &vector, Vector &source, idx_t position, i
|
|
|
1691
1833
|
// StringVector
|
|
1692
1834
|
//===--------------------------------------------------------------------===//
|
|
1693
1835
|
string_t StringVector::AddString(Vector &vector, const char *data, idx_t len) {
|
|
1694
|
-
return StringVector::AddString(vector, string_t(data, len));
|
|
1836
|
+
return StringVector::AddString(vector, string_t(data, UnsafeNumericCast<uint32_t>(len)));
|
|
1695
1837
|
}
|
|
1696
1838
|
|
|
1697
1839
|
string_t StringVector::AddStringOrBlob(Vector &vector, const char *data, idx_t len) {
|
|
1698
|
-
return StringVector::AddStringOrBlob(vector, string_t(data, len));
|
|
1840
|
+
return StringVector::AddStringOrBlob(vector, string_t(data, UnsafeNumericCast<uint32_t>(len)));
|
|
1699
1841
|
}
|
|
1700
1842
|
|
|
1701
1843
|
string_t StringVector::AddString(Vector &vector, const char *data) {
|
|
1702
|
-
return StringVector::AddString(vector, string_t(data, strlen(data)));
|
|
1844
|
+
return StringVector::AddString(vector, string_t(data, UnsafeNumericCast<uint32_t>(strlen(data))));
|
|
1703
1845
|
}
|
|
1704
1846
|
|
|
1705
1847
|
string_t StringVector::AddString(Vector &vector, const string &data) {
|
|
1706
|
-
return StringVector::AddString(vector, string_t(data.c_str(), data.size()));
|
|
1848
|
+
return StringVector::AddString(vector, string_t(data.c_str(), UnsafeNumericCast<uint32_t>(data.size())));
|
|
1707
1849
|
}
|
|
1708
1850
|
|
|
1709
1851
|
string_t StringVector::AddString(Vector &vector, string_t data) {
|
|
@@ -1737,7 +1879,7 @@ string_t StringVector::AddStringOrBlob(Vector &vector, string_t data) {
|
|
|
1737
1879
|
string_t StringVector::EmptyString(Vector &vector, idx_t len) {
|
|
1738
1880
|
D_ASSERT(vector.GetType().InternalType() == PhysicalType::VARCHAR);
|
|
1739
1881
|
if (len <= string_t::INLINE_LENGTH) {
|
|
1740
|
-
return string_t(len);
|
|
1882
|
+
return string_t(UnsafeNumericCast<uint32_t>(len));
|
|
1741
1883
|
}
|
|
1742
1884
|
if (!vector.auxiliary) {
|
|
1743
1885
|
vector.auxiliary = make_buffer<VectorStringBuffer>();
|
|
@@ -1784,7 +1926,7 @@ void StringVector::AddHeapReference(Vector &vector, Vector &other) {
|
|
|
1784
1926
|
// FSSTVector
|
|
1785
1927
|
//===--------------------------------------------------------------------===//
|
|
1786
1928
|
string_t FSSTVector::AddCompressedString(Vector &vector, const char *data, idx_t len) {
|
|
1787
|
-
return FSSTVector::AddCompressedString(vector, string_t(data, len));
|
|
1929
|
+
return FSSTVector::AddCompressedString(vector, string_t(data, UnsafeNumericCast<uint32_t>(len)));
|
|
1788
1930
|
}
|
|
1789
1931
|
|
|
1790
1932
|
string_t FSSTVector::AddCompressedString(Vector &vector, string_t data) {
|
|
@@ -1889,60 +2031,76 @@ const Vector &MapVector::GetValues(const Vector &vector) {
|
|
|
1889
2031
|
}
|
|
1890
2032
|
|
|
1891
2033
|
MapInvalidReason MapVector::CheckMapValidity(Vector &map, idx_t count, const SelectionVector &sel) {
|
|
2034
|
+
|
|
1892
2035
|
D_ASSERT(map.GetType().id() == LogicalTypeId::MAP);
|
|
1893
|
-
UnifiedVectorFormat map_vdata;
|
|
1894
2036
|
|
|
1895
|
-
|
|
1896
|
-
|
|
2037
|
+
// unify the MAP vector, which is a physical LIST vector
|
|
2038
|
+
UnifiedVectorFormat map_data;
|
|
2039
|
+
map.ToUnifiedFormat(count, map_data);
|
|
2040
|
+
auto map_entries = UnifiedVectorFormat::GetDataNoConst<list_entry_t>(map_data);
|
|
2041
|
+
auto maps_length = ListVector::GetListSize(map);
|
|
1897
2042
|
|
|
1898
|
-
|
|
2043
|
+
// unify the child vector containing the keys
|
|
1899
2044
|
auto &keys = MapVector::GetKeys(map);
|
|
1900
|
-
UnifiedVectorFormat
|
|
1901
|
-
keys.ToUnifiedFormat(
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
auto mapped_row = sel.get_index(
|
|
1906
|
-
auto map_idx =
|
|
1907
|
-
|
|
1908
|
-
if (!
|
|
2045
|
+
UnifiedVectorFormat key_data;
|
|
2046
|
+
keys.ToUnifiedFormat(maps_length, key_data);
|
|
2047
|
+
|
|
2048
|
+
for (idx_t row_idx = 0; row_idx < count; row_idx++) {
|
|
2049
|
+
|
|
2050
|
+
auto mapped_row = sel.get_index(row_idx);
|
|
2051
|
+
auto map_idx = map_data.sel->get_index(mapped_row);
|
|
2052
|
+
|
|
2053
|
+
if (!map_data.validity.RowIsValid(map_idx)) {
|
|
1909
2054
|
continue;
|
|
1910
2055
|
}
|
|
2056
|
+
|
|
1911
2057
|
value_set_t unique_keys;
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
|
|
2058
|
+
auto length = map_entries[map_idx].length;
|
|
2059
|
+
auto offset = map_entries[map_idx].offset;
|
|
2060
|
+
|
|
2061
|
+
for (idx_t child_idx = 0; child_idx < length; child_idx++) {
|
|
2062
|
+
auto key_idx = key_data.sel->get_index(offset + child_idx);
|
|
2063
|
+
|
|
2064
|
+
if (!key_data.validity.RowIsValid(key_idx)) {
|
|
1916
2065
|
return MapInvalidReason::NULL_KEY;
|
|
1917
2066
|
}
|
|
1918
|
-
|
|
1919
|
-
auto
|
|
1920
|
-
|
|
2067
|
+
|
|
2068
|
+
auto value = keys.GetValue(key_idx);
|
|
2069
|
+
auto unique = unique_keys.insert(value).second;
|
|
2070
|
+
if (!unique) {
|
|
1921
2071
|
return MapInvalidReason::DUPLICATE_KEY;
|
|
1922
2072
|
}
|
|
1923
2073
|
}
|
|
1924
2074
|
}
|
|
2075
|
+
|
|
1925
2076
|
return MapInvalidReason::VALID;
|
|
1926
2077
|
}
|
|
1927
2078
|
|
|
1928
2079
|
void MapVector::MapConversionVerify(Vector &vector, idx_t count) {
|
|
1929
|
-
auto
|
|
1930
|
-
|
|
2080
|
+
auto reason = MapVector::CheckMapValidity(vector, count);
|
|
2081
|
+
EvalMapInvalidReason(reason);
|
|
2082
|
+
}
|
|
2083
|
+
|
|
2084
|
+
void MapVector::EvalMapInvalidReason(MapInvalidReason reason) {
|
|
2085
|
+
switch (reason) {
|
|
1931
2086
|
case MapInvalidReason::VALID:
|
|
1932
|
-
|
|
1933
|
-
case MapInvalidReason::DUPLICATE_KEY:
|
|
1934
|
-
throw InvalidInputException("Map keys
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
case MapInvalidReason::
|
|
1940
|
-
throw InvalidInputException("The list of map
|
|
1941
|
-
|
|
1942
|
-
|
|
2087
|
+
return;
|
|
2088
|
+
case MapInvalidReason::DUPLICATE_KEY:
|
|
2089
|
+
throw InvalidInputException("Map keys must be unique.");
|
|
2090
|
+
case MapInvalidReason::NULL_KEY:
|
|
2091
|
+
throw InvalidInputException("Map keys can not be NULL.");
|
|
2092
|
+
case MapInvalidReason::NULL_KEY_LIST:
|
|
2093
|
+
throw InvalidInputException("The list of map keys must not be NULL.");
|
|
2094
|
+
case MapInvalidReason::NULL_VALUE_LIST:
|
|
2095
|
+
throw InvalidInputException("The list of map values must not be NULL.");
|
|
2096
|
+
case MapInvalidReason::NOT_ALIGNED:
|
|
2097
|
+
throw InvalidInputException("The map key list does not align with the map value list.");
|
|
2098
|
+
case MapInvalidReason::INVALID_PARAMS:
|
|
2099
|
+
throw InvalidInputException("Invalid map argument(s). Valid map arguments are a list of key-value pairs (MAP "
|
|
2100
|
+
"{'key1': 'val1', ...}), two lists (MAP ([1, 2], [10, 11])), or no arguments.");
|
|
2101
|
+
default:
|
|
1943
2102
|
throw InternalException("MapInvalidReason not implemented");
|
|
1944
2103
|
}
|
|
1945
|
-
}
|
|
1946
2104
|
}
|
|
1947
2105
|
|
|
1948
2106
|
//===--------------------------------------------------------------------===//
|
|
@@ -2229,17 +2387,34 @@ void UnionVector::SetToMember(Vector &union_vector, union_tag_t tag, Vector &mem
|
|
|
2229
2387
|
}
|
|
2230
2388
|
}
|
|
2231
2389
|
|
|
2232
|
-
|
|
2390
|
+
bool UnionVector::TryGetTag(const Vector &vector, idx_t index, union_tag_t &result) {
|
|
2233
2391
|
// the tag vector is always the first struct child.
|
|
2234
2392
|
auto &tag_vector = *StructVector::GetEntries(vector)[0];
|
|
2235
2393
|
if (tag_vector.GetVectorType() == VectorType::DICTIONARY_VECTOR) {
|
|
2236
2394
|
auto &child = DictionaryVector::Child(tag_vector);
|
|
2237
|
-
|
|
2395
|
+
auto &dict_sel = DictionaryVector::SelVector(tag_vector);
|
|
2396
|
+
auto mapped_idx = dict_sel.get_index(index);
|
|
2397
|
+
if (FlatVector::IsNull(child, mapped_idx)) {
|
|
2398
|
+
return false;
|
|
2399
|
+
} else {
|
|
2400
|
+
result = FlatVector::GetData<union_tag_t>(child)[mapped_idx];
|
|
2401
|
+
return true;
|
|
2402
|
+
}
|
|
2238
2403
|
}
|
|
2239
2404
|
if (tag_vector.GetVectorType() == VectorType::CONSTANT_VECTOR) {
|
|
2240
|
-
|
|
2405
|
+
if (ConstantVector::IsNull(tag_vector)) {
|
|
2406
|
+
return false;
|
|
2407
|
+
} else {
|
|
2408
|
+
result = ConstantVector::GetData<union_tag_t>(tag_vector)[0];
|
|
2409
|
+
return true;
|
|
2410
|
+
}
|
|
2411
|
+
}
|
|
2412
|
+
if (FlatVector::IsNull(tag_vector, index)) {
|
|
2413
|
+
return false;
|
|
2414
|
+
} else {
|
|
2415
|
+
result = FlatVector::GetData<union_tag_t>(tag_vector)[index];
|
|
2416
|
+
return true;
|
|
2241
2417
|
}
|
|
2242
|
-
return FlatVector::GetData<union_tag_t>(tag_vector)[index];
|
|
2243
2418
|
}
|
|
2244
2419
|
|
|
2245
2420
|
//! Raw selection vector passed in (not merged with any other selection vectors)
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
#include "duckdb/common/exception.hpp"
|
|
9
9
|
#include "duckdb/common/extra_type_info.hpp"
|
|
10
10
|
#include "duckdb/common/limits.hpp"
|
|
11
|
+
#include "duckdb/common/numeric_utils.hpp"
|
|
11
12
|
#include "duckdb/common/operator/comparison_operators.hpp"
|
|
12
13
|
#include "duckdb/common/serializer/deserializer.hpp"
|
|
13
14
|
#include "duckdb/common/serializer/serializer.hpp"
|
|
@@ -672,7 +673,7 @@ static LogicalType DecimalSizeCheck(const LogicalType &left, const LogicalType &
|
|
|
672
673
|
D_ASSERT(other_scale == 0);
|
|
673
674
|
const auto effective_width = width - scale;
|
|
674
675
|
if (other_width > effective_width) {
|
|
675
|
-
auto new_width = other_width + scale;
|
|
676
|
+
auto new_width = NumericCast<uint8_t>(other_width + scale);
|
|
676
677
|
//! Cap the width at max, if an actual value exceeds this, an exception will be thrown later
|
|
677
678
|
if (new_width > DecimalType::MaxWidth()) {
|
|
678
679
|
new_width = DecimalType::MaxWidth();
|
|
@@ -824,13 +825,14 @@ static bool CombineEqualTypes(const LogicalType &left, const LogicalType &right,
|
|
|
824
825
|
// using the max of these of the two types gives us the new decimal size
|
|
825
826
|
auto extra_width_left = DecimalType::GetWidth(left) - DecimalType::GetScale(left);
|
|
826
827
|
auto extra_width_right = DecimalType::GetWidth(right) - DecimalType::GetScale(right);
|
|
827
|
-
auto extra_width =
|
|
828
|
+
auto extra_width =
|
|
829
|
+
MaxValue<uint8_t>(NumericCast<uint8_t>(extra_width_left), NumericCast<uint8_t>(extra_width_right));
|
|
828
830
|
auto scale = MaxValue<uint8_t>(DecimalType::GetScale(left), DecimalType::GetScale(right));
|
|
829
|
-
auto width = extra_width + scale;
|
|
831
|
+
auto width = NumericCast<uint8_t>(extra_width + scale);
|
|
830
832
|
if (width > DecimalType::MaxWidth()) {
|
|
831
833
|
// if the resulting decimal does not fit, we truncate the scale
|
|
832
834
|
width = DecimalType::MaxWidth();
|
|
833
|
-
scale = width - extra_width;
|
|
835
|
+
scale = NumericCast<uint8_t>(width - extra_width);
|
|
834
836
|
}
|
|
835
837
|
result = LogicalType::DECIMAL(width, scale);
|
|
836
838
|
return true;
|
|
@@ -1168,7 +1170,7 @@ uint8_t DecimalType::MaxWidth() {
|
|
|
1168
1170
|
return DecimalWidth<hugeint_t>::max;
|
|
1169
1171
|
}
|
|
1170
1172
|
|
|
1171
|
-
LogicalType LogicalType::DECIMAL(
|
|
1173
|
+
LogicalType LogicalType::DECIMAL(uint8_t width, uint8_t scale) {
|
|
1172
1174
|
D_ASSERT(width >= scale);
|
|
1173
1175
|
auto type_info = make_shared<DecimalTypeInfo>(width, scale);
|
|
1174
1176
|
return LogicalType(LogicalTypeId::DECIMAL, std::move(type_info));
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Unity Build generated by CMake
|
|
2
|
+
#include </Users/carlo/duckdb/src/common/allocator.cpp>
|
|
3
|
+
#include </Users/carlo/duckdb/src/common/assert.cpp>
|
|
4
|
+
#include </Users/carlo/duckdb/src/common/bind_helpers.cpp>
|
|
5
|
+
#include </Users/carlo/duckdb/src/common/box_renderer.cpp>
|
|
6
|
+
#include </Users/carlo/duckdb/src/common/compressed_file_system.cpp>
|
|
7
|
+
#include </Users/carlo/duckdb/src/common/constants.cpp>
|
|
8
|
+
#include </Users/carlo/duckdb/src/common/checksum.cpp>
|
|
9
|
+
#include </Users/carlo/duckdb/src/common/cycle_counter.cpp>
|
|
10
|
+
#include </Users/carlo/duckdb/src/common/exception.cpp>
|
|
11
|
+
#include </Users/carlo/duckdb/src/common/exception_format_value.cpp>
|
|
12
|
+
#include </Users/carlo/duckdb/src/common/extra_type_info.cpp>
|
|
13
|
+
#include </Users/carlo/duckdb/src/common/file_buffer.cpp>
|
|
14
|
+
#include </Users/carlo/duckdb/src/common/file_system.cpp>
|
|
15
|
+
#include </Users/carlo/duckdb/src/common/filename_pattern.cpp>
|
|
16
|
+
#include </Users/carlo/duckdb/src/common/fsst.cpp>
|
|
17
|
+
#include </Users/carlo/duckdb/src/common/gzip_file_system.cpp>
|
|
18
|
+
#include </Users/carlo/duckdb/src/common/hive_partitioning.cpp>
|
|
19
|
+
#include </Users/carlo/duckdb/src/common/http_state.cpp>
|
|
20
|
+
#include </Users/carlo/duckdb/src/common/pipe_file_system.cpp>
|
|
21
|
+
#include </Users/carlo/duckdb/src/common/local_file_system.cpp>
|
|
22
|
+
#include </Users/carlo/duckdb/src/common/multi_file_reader.cpp>
|
|
23
|
+
#include </Users/carlo/duckdb/src/common/preserved_error.cpp>
|
|
24
|
+
#include </Users/carlo/duckdb/src/common/printer.cpp>
|
|
25
|
+
#include </Users/carlo/duckdb/src/common/radix_partitioning.cpp>
|
|
26
|
+
#include </Users/carlo/duckdb/src/common/re2_regex.cpp>
|
|
27
|
+
#include </Users/carlo/duckdb/src/common/random_engine.cpp>
|
|
28
|
+
#include </Users/carlo/duckdb/src/common/string_util.cpp>
|
|
29
|
+
#include </Users/carlo/duckdb/src/common/enum_util.cpp>
|
|
30
|
+
#include </Users/carlo/duckdb/src/common/symbols.cpp>
|
|
31
|
+
#include </Users/carlo/duckdb/src/common/tree_renderer.cpp>
|
|
32
|
+
#include </Users/carlo/duckdb/src/common/types.cpp>
|
|
33
|
+
#include </Users/carlo/duckdb/src/common/virtual_file_system.cpp>
|
|
34
|
+
#include </Users/carlo/duckdb/src/common/windows_util.cpp>
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
#include "duckdb/common/exception.hpp"
|
|
7
7
|
#include "duckdb/common/vector_operations/vector_operations.hpp"
|
|
8
8
|
#include "duckdb/common/limits.hpp"
|
|
9
|
+
#include "duckdb/common/numeric_utils.hpp"
|
|
9
10
|
|
|
10
11
|
namespace duckdb {
|
|
11
12
|
|
|
@@ -66,7 +67,7 @@ void TemplatedGenerateSequence(Vector &result, idx_t count, const SelectionVecto
|
|
|
66
67
|
auto value = (T)start;
|
|
67
68
|
for (idx_t i = 0; i < count; i++) {
|
|
68
69
|
auto idx = sel.get_index(i);
|
|
69
|
-
result_data[idx] = value + increment * idx;
|
|
70
|
+
result_data[idx] = UnsafeNumericCast<T>(value + increment * idx);
|
|
70
71
|
}
|
|
71
72
|
}
|
|
72
73
|
|
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
namespace duckdb {
|
|
8
8
|
|
|
9
9
|
bool VectorOperations::TryCast(CastFunctionSet &set, GetCastFunctionInput &input, Vector &source, Vector &result,
|
|
10
|
-
idx_t count, string *error_message, bool strict) {
|
|
10
|
+
idx_t count, string *error_message, bool strict, const bool nullify_parent) {
|
|
11
11
|
auto cast_function = set.GetCastFunction(source.GetType(), result.GetType(), input);
|
|
12
12
|
unique_ptr<FunctionLocalState> local_state;
|
|
13
13
|
if (cast_function.init_local_state) {
|
|
14
14
|
CastLocalStateParameters lparameters(input.context, cast_function.cast_data);
|
|
15
15
|
local_state = cast_function.init_local_state(lparameters);
|
|
16
16
|
}
|
|
17
|
-
CastParameters parameters(cast_function.cast_data.get(), strict, error_message, local_state.get());
|
|
17
|
+
CastParameters parameters(cast_function.cast_data.get(), strict, error_message, local_state.get(), nullify_parent);
|
|
18
18
|
return cast_function.function(source, result, count, parameters);
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -29,11 +29,11 @@ void VectorOperations::DefaultCast(Vector &source, Vector &result, idx_t count,
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
bool VectorOperations::TryCast(ClientContext &context, Vector &source, Vector &result, idx_t count,
|
|
32
|
-
string *error_message, bool strict) {
|
|
32
|
+
string *error_message, bool strict, const bool nullify_parent) {
|
|
33
33
|
auto &config = DBConfig::GetConfig(context);
|
|
34
34
|
auto &set = config.GetCastFunctions();
|
|
35
35
|
GetCastFunctionInput get_input(context);
|
|
36
|
-
return VectorOperations::TryCast(set, get_input, source, result, count, error_message, strict);
|
|
36
|
+
return VectorOperations::TryCast(set, get_input, source, result, count, error_message, strict, nullify_parent);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
void VectorOperations::Cast(ClientContext &context, Vector &source, Vector &result, idx_t count, bool strict) {
|
|
@@ -203,11 +203,11 @@ void VectorOperations::Copy(const Vector &source_p, Vector &target, const Select
|
|
|
203
203
|
auto array_size = ArrayType::GetSize(source->GetType());
|
|
204
204
|
|
|
205
205
|
// Create a selection vector for the child elements
|
|
206
|
-
SelectionVector child_sel(
|
|
206
|
+
SelectionVector child_sel(source_count * array_size);
|
|
207
207
|
for (idx_t i = 0; i < copy_count; i++) {
|
|
208
208
|
auto source_idx = sel->get_index(source_offset + i);
|
|
209
209
|
for (idx_t j = 0; j < array_size; j++) {
|
|
210
|
-
child_sel.set_index(i * array_size + j, source_idx * array_size + j);
|
|
210
|
+
child_sel.set_index((source_offset * array_size) + (i * array_size + j), source_idx * array_size + j);
|
|
211
211
|
}
|
|
212
212
|
}
|
|
213
213
|
VectorOperations::Copy(source_child, target_child, child_sel, source_count * array_size,
|