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
|
@@ -401,7 +401,7 @@ inline std::pair<PDQIterator, bool> partition_right_branchless(const PDQIterator
|
|
|
401
401
|
|
|
402
402
|
// Fill the offset blocks.
|
|
403
403
|
if (left_split >= block_size) {
|
|
404
|
-
for (
|
|
404
|
+
for (unsigned char i = 0; i < block_size;) {
|
|
405
405
|
offsets_l[num_l] = i++;
|
|
406
406
|
num_l += !comp(*first, pivot, constants);
|
|
407
407
|
++first;
|
|
@@ -428,7 +428,7 @@ inline std::pair<PDQIterator, bool> partition_right_branchless(const PDQIterator
|
|
|
428
428
|
++first;
|
|
429
429
|
}
|
|
430
430
|
} else {
|
|
431
|
-
for (
|
|
431
|
+
for (unsigned char i = 0; i < left_split;) {
|
|
432
432
|
offsets_l[num_l] = i++;
|
|
433
433
|
num_l += !comp(*first, pivot, constants);
|
|
434
434
|
++first;
|
|
@@ -436,7 +436,7 @@ inline std::pair<PDQIterator, bool> partition_right_branchless(const PDQIterator
|
|
|
436
436
|
}
|
|
437
437
|
|
|
438
438
|
if (right_split >= block_size) {
|
|
439
|
-
for (
|
|
439
|
+
for (unsigned char i = 0; i < block_size;) {
|
|
440
440
|
offsets_r[num_r] = ++i;
|
|
441
441
|
num_r += comp(*--last, pivot, constants);
|
|
442
442
|
offsets_r[num_r] = ++i;
|
|
@@ -455,7 +455,7 @@ inline std::pair<PDQIterator, bool> partition_right_branchless(const PDQIterator
|
|
|
455
455
|
num_r += comp(*--last, pivot, constants);
|
|
456
456
|
}
|
|
457
457
|
} else {
|
|
458
|
-
for (
|
|
458
|
+
for (unsigned char i = 0; i < right_split;) {
|
|
459
459
|
offsets_r[num_r] = ++i;
|
|
460
460
|
num_r += comp(*--last, pivot, constants);
|
|
461
461
|
}
|
|
@@ -113,7 +113,7 @@ template <class T>
|
|
|
113
113
|
string Bit::NumericToBit(T numeric) {
|
|
114
114
|
auto bit_len = sizeof(T) + 1;
|
|
115
115
|
auto buffer = make_unsafe_uniq_array<char>(bit_len);
|
|
116
|
-
string_t output_str(buffer.get(), bit_len);
|
|
116
|
+
string_t output_str(buffer.get(), UnsafeNumericCast<uint32_t>(bit_len));
|
|
117
117
|
Bit::NumericToBit(numeric, output_str);
|
|
118
118
|
return output_str.GetString();
|
|
119
119
|
}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
#include "duckdb/common/types.hpp"
|
|
13
13
|
|
|
14
14
|
namespace duckdb {
|
|
15
|
+
struct CastParameters;
|
|
15
16
|
|
|
16
17
|
//! The Blob class is a static class that holds helper functions for the Blob type.
|
|
17
18
|
class Blob {
|
|
@@ -35,13 +36,15 @@ public:
|
|
|
35
36
|
DUCKDB_API static string ToString(string_t blob);
|
|
36
37
|
|
|
37
38
|
//! Returns the blob size of a string -> blob conversion
|
|
38
|
-
DUCKDB_API static bool TryGetBlobSize(string_t str, idx_t &result_size,
|
|
39
|
+
DUCKDB_API static bool TryGetBlobSize(string_t str, idx_t &result_size, CastParameters ¶meters);
|
|
39
40
|
DUCKDB_API static idx_t GetBlobSize(string_t str);
|
|
41
|
+
DUCKDB_API static idx_t GetBlobSize(string_t str, CastParameters ¶meters);
|
|
40
42
|
//! Convert a string to a blob. This function should ONLY be called after calling GetBlobSize, since it does NOT
|
|
41
43
|
//! perform data validation.
|
|
42
44
|
DUCKDB_API static void ToBlob(string_t str, data_ptr_t output);
|
|
43
45
|
//! Convert a string object to a blob
|
|
44
46
|
DUCKDB_API static string ToBlob(string_t str);
|
|
47
|
+
DUCKDB_API static string ToBlob(string_t str, CastParameters ¶meters);
|
|
45
48
|
|
|
46
49
|
// base 64 conversion functions
|
|
47
50
|
//! Returns the string size of a blob -> base64 conversion
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
#pragma once
|
|
10
10
|
|
|
11
11
|
#include "duckdb/common/common.hpp"
|
|
12
|
+
#include "duckdb/common/numeric_utils.hpp"
|
|
12
13
|
#include "duckdb/common/types/string_type.hpp"
|
|
13
14
|
#include "duckdb/common/types/decimal.hpp"
|
|
14
15
|
#include "duckdb/common/types/interval.hpp"
|
|
@@ -32,7 +33,7 @@ public:
|
|
|
32
33
|
template <class SIGNED, class UNSIGNED>
|
|
33
34
|
static int SignedLength(SIGNED value) {
|
|
34
35
|
int sign = -(value < 0);
|
|
35
|
-
UNSIGNED unsigned_value = (value ^ sign) - sign;
|
|
36
|
+
UNSIGNED unsigned_value = UnsafeNumericCast<UNSIGNED>((value ^ sign) - sign);
|
|
36
37
|
return UnsignedLength(unsigned_value) - sign;
|
|
37
38
|
}
|
|
38
39
|
|
|
@@ -43,16 +44,16 @@ public:
|
|
|
43
44
|
// Integer division is slow so do it for a group of two digits instead
|
|
44
45
|
// of for every digit. The idea comes from the talk by Alexandrescu
|
|
45
46
|
// "Three Optimization Tips for C++".
|
|
46
|
-
auto index =
|
|
47
|
+
auto index = NumericCast<unsigned>((value % 100) * 2);
|
|
47
48
|
value /= 100;
|
|
48
49
|
*--ptr = duckdb_fmt::internal::data::digits[index + 1];
|
|
49
50
|
*--ptr = duckdb_fmt::internal::data::digits[index];
|
|
50
51
|
}
|
|
51
52
|
if (value < 10) {
|
|
52
|
-
*--ptr =
|
|
53
|
+
*--ptr = NumericCast<char>('0' + value);
|
|
53
54
|
return ptr;
|
|
54
55
|
}
|
|
55
|
-
auto index =
|
|
56
|
+
auto index = NumericCast<unsigned>(value * 2);
|
|
56
57
|
*--ptr = duckdb_fmt::internal::data::digits[index + 1];
|
|
57
58
|
*--ptr = duckdb_fmt::internal::data::digits[index];
|
|
58
59
|
return ptr;
|
|
@@ -61,7 +62,7 @@ public:
|
|
|
61
62
|
template <class SIGNED, class UNSIGNED>
|
|
62
63
|
static string_t FormatSigned(SIGNED value, Vector &vector) {
|
|
63
64
|
int sign = -(value < 0);
|
|
64
|
-
UNSIGNED unsigned_value = UNSIGNED(value ^ sign) - sign;
|
|
65
|
+
UNSIGNED unsigned_value = UnsafeNumericCast<UNSIGNED>(UNSIGNED(value ^ sign) - sign);
|
|
65
66
|
int length = UnsignedLength<UNSIGNED>(unsigned_value) - sign;
|
|
66
67
|
string_t result = StringVector::EmptyString(vector, length);
|
|
67
68
|
auto dataptr = result.GetDataWriteable();
|
|
@@ -239,7 +240,7 @@ struct HugeintToStringCast {
|
|
|
239
240
|
// the remainder is small (i.e. less than 10000000000000000)
|
|
240
241
|
ptr = NumericHelper::FormatUnsigned<uint64_t>(remainder, ptr);
|
|
241
242
|
|
|
242
|
-
int format_length = startptr - ptr;
|
|
243
|
+
int format_length = UnsafeNumericCast<int>(startptr - ptr);
|
|
243
244
|
// pad with zero
|
|
244
245
|
for (int i = format_length; i < 17; i++) {
|
|
245
246
|
*--ptr = '0';
|
|
@@ -399,9 +400,9 @@ struct DateToStringCast {
|
|
|
399
400
|
ptr[0] = '-';
|
|
400
401
|
if (date[i] < 10) {
|
|
401
402
|
ptr[1] = '0';
|
|
402
|
-
ptr[2] = '0' + date[i];
|
|
403
|
+
ptr[2] = '0' + UnsafeNumericCast<char>(date[i]);
|
|
403
404
|
} else {
|
|
404
|
-
auto index =
|
|
405
|
+
auto index = UnsafeNumericCast<idx_t>(date[i] * 2);
|
|
405
406
|
ptr[1] = duckdb_fmt::internal::data::digits[index];
|
|
406
407
|
ptr[2] = duckdb_fmt::internal::data::digits[index + 1];
|
|
407
408
|
}
|
|
@@ -429,7 +430,7 @@ struct TimeToStringCast {
|
|
|
429
430
|
}
|
|
430
431
|
trailing_zeros++;
|
|
431
432
|
}
|
|
432
|
-
return trailing_zeros;
|
|
433
|
+
return UnsafeNumericCast<int32_t>(trailing_zeros);
|
|
433
434
|
}
|
|
434
435
|
|
|
435
436
|
static idx_t Length(int32_t time[], char micro_buffer[]) {
|
|
@@ -456,9 +457,9 @@ struct TimeToStringCast {
|
|
|
456
457
|
D_ASSERT(value >= 0 && value <= 99);
|
|
457
458
|
if (value < 10) {
|
|
458
459
|
ptr[0] = '0';
|
|
459
|
-
ptr[1] = '0' + value;
|
|
460
|
+
ptr[1] = '0' + UnsafeNumericCast<char>(value);
|
|
460
461
|
} else {
|
|
461
|
-
auto index =
|
|
462
|
+
auto index = UnsafeNumericCast<unsigned>(value * 2);
|
|
462
463
|
ptr[0] = duckdb_fmt::internal::data::digits[index];
|
|
463
464
|
ptr[1] = duckdb_fmt::internal::data::digits[index + 1];
|
|
464
465
|
}
|
|
@@ -494,7 +495,7 @@ struct IntervalToStringCast {
|
|
|
494
495
|
}
|
|
495
496
|
|
|
496
497
|
static void FormatTwoDigits(int64_t value, char buffer[], idx_t &length) {
|
|
497
|
-
TimeToStringCast::FormatTwoDigits(buffer + length, value);
|
|
498
|
+
TimeToStringCast::FormatTwoDigits(buffer + length, UnsafeNumericCast<int32_t>(value));
|
|
498
499
|
length += 2;
|
|
499
500
|
}
|
|
500
501
|
|
|
@@ -566,7 +567,8 @@ struct IntervalToStringCast {
|
|
|
566
567
|
FormatTwoDigits(sec, buffer, length);
|
|
567
568
|
if (micros != 0) {
|
|
568
569
|
buffer[length++] = '.';
|
|
569
|
-
auto trailing_zeros =
|
|
570
|
+
auto trailing_zeros =
|
|
571
|
+
TimeToStringCast::FormatMicros(UnsafeNumericCast<uint32_t>(micros), buffer + length);
|
|
570
572
|
length += 6 - trailing_zeros;
|
|
571
573
|
}
|
|
572
574
|
} else if (length == 0) {
|
|
@@ -56,6 +56,9 @@ public:
|
|
|
56
56
|
}
|
|
57
57
|
return total_size;
|
|
58
58
|
}
|
|
59
|
+
idx_t AllocationSize() const {
|
|
60
|
+
return allocated_size;
|
|
61
|
+
}
|
|
59
62
|
|
|
60
63
|
public:
|
|
61
64
|
void AllocateData(idx_t size, uint32_t &block_id, uint32_t &offset, ChunkManagementState *chunk_state);
|
|
@@ -99,6 +102,8 @@ private:
|
|
|
99
102
|
bool shared = false;
|
|
100
103
|
//! Lock used in case this ColumnDataAllocator is shared across threads
|
|
101
104
|
mutex lock;
|
|
105
|
+
//! Total allocated size
|
|
106
|
+
idx_t allocated_size = 0;
|
|
102
107
|
};
|
|
103
108
|
|
|
104
109
|
} // namespace duckdb
|
|
@@ -63,6 +63,8 @@ public:
|
|
|
63
63
|
|
|
64
64
|
//! The size (in bytes) of this ColumnDataCollection
|
|
65
65
|
idx_t SizeInBytes() const;
|
|
66
|
+
//! The allocation size (in bytes) of this ColumnDataCollection - this property is cached
|
|
67
|
+
idx_t AllocationSize() const;
|
|
66
68
|
|
|
67
69
|
//! Get the allocator
|
|
68
70
|
DUCKDB_API Allocator &GetAllocator() const;
|
package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_segment.hpp
CHANGED
|
@@ -126,7 +126,10 @@ public:
|
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
idx_t ChunkCount() const;
|
|
129
|
+
//! Get the total *used* size (not cached)
|
|
129
130
|
idx_t SizeInBytes() const;
|
|
131
|
+
//! Get the currently allocated size in bytes (cached)
|
|
132
|
+
idx_t AllocationSize() const;
|
|
130
133
|
|
|
131
134
|
void FetchChunk(idx_t chunk_idx, DataChunk &result);
|
|
132
135
|
void FetchChunk(idx_t chunk_idx, DataChunk &result, const vector<column_t> &column_ids);
|
|
@@ -34,9 +34,12 @@ struct TupleDataPinState {
|
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
struct CombinedListData {
|
|
37
|
+
CombinedListData() : combined_validity(STANDARD_VECTOR_SIZE) {
|
|
38
|
+
}
|
|
37
39
|
UnifiedVectorFormat combined_data;
|
|
38
|
-
list_entry_t combined_list_entries[STANDARD_VECTOR_SIZE];
|
|
39
40
|
buffer_ptr<SelectionData> selection_data;
|
|
41
|
+
list_entry_t combined_list_entries[STANDARD_VECTOR_SIZE];
|
|
42
|
+
ValidityMask combined_validity;
|
|
40
43
|
};
|
|
41
44
|
|
|
42
45
|
struct TupleDataVectorFormat {
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
#pragma once
|
|
10
10
|
|
|
11
11
|
#include "duckdb/common/common.hpp"
|
|
12
|
+
#include "duckdb/common/numeric_utils.hpp"
|
|
12
13
|
#include "duckdb/common/types.hpp"
|
|
13
14
|
#include "duckdb/common/vector_size.hpp"
|
|
14
15
|
|
|
@@ -83,7 +84,7 @@ public:
|
|
|
83
84
|
}
|
|
84
85
|
|
|
85
86
|
inline void set_index(idx_t idx, idx_t loc) {
|
|
86
|
-
sel_vector[idx] = loc;
|
|
87
|
+
sel_vector[idx] = UnsafeNumericCast<sel_t>(loc);
|
|
87
88
|
}
|
|
88
89
|
inline void swap(idx_t i, idx_t j) {
|
|
89
90
|
sel_t tmp = sel_vector[i];
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
#include "duckdb/common/assert.hpp"
|
|
12
12
|
#include "duckdb/common/constants.hpp"
|
|
13
13
|
#include "duckdb/common/helper.hpp"
|
|
14
|
+
#include "duckdb/common/numeric_utils.hpp"
|
|
14
15
|
|
|
15
16
|
#include <cstring>
|
|
16
17
|
|
|
@@ -58,10 +59,14 @@ public:
|
|
|
58
59
|
value.pointer.ptr = (char *)data; // NOLINT
|
|
59
60
|
}
|
|
60
61
|
}
|
|
61
|
-
|
|
62
|
+
|
|
63
|
+
string_t(const char *data)
|
|
64
|
+
: string_t(data,
|
|
65
|
+
UnsafeNumericCast<uint32_t>(strlen(data))) { // NOLINT: Allow implicit conversion from `const char*`
|
|
62
66
|
}
|
|
63
67
|
string_t(const string &value)
|
|
64
|
-
: string_t(value.c_str(),
|
|
68
|
+
: string_t(value.c_str(),
|
|
69
|
+
UnsafeNumericCast<uint32_t>(value.size())) { // NOLINT: Allow implicit conversion from `const char*`
|
|
65
70
|
}
|
|
66
71
|
|
|
67
72
|
bool IsInlined() const {
|
|
@@ -130,6 +135,8 @@ public:
|
|
|
130
135
|
}
|
|
131
136
|
|
|
132
137
|
void Verify() const;
|
|
138
|
+
void VerifyUTF8() const;
|
|
139
|
+
void VerifyCharacters() const;
|
|
133
140
|
void VerifyNull() const;
|
|
134
141
|
|
|
135
142
|
struct StringComparisonOperators {
|
|
@@ -165,8 +172,8 @@ public:
|
|
|
165
172
|
}
|
|
166
173
|
// compare up to shared length. if still the same, compare lengths
|
|
167
174
|
static bool GreaterThan(const string_t &left, const string_t &right) {
|
|
168
|
-
const uint32_t left_length = left.GetSize();
|
|
169
|
-
const uint32_t right_length = right.GetSize();
|
|
175
|
+
const uint32_t left_length = UnsafeNumericCast<uint32_t>(left.GetSize());
|
|
176
|
+
const uint32_t right_length = UnsafeNumericCast<uint32_t>(right.GetSize());
|
|
170
177
|
const uint32_t min_length = std::min<uint32_t>(left_length, right_length);
|
|
171
178
|
|
|
172
179
|
#ifndef DUCKDB_DEBUG_NO_INLINE
|
|
@@ -26,7 +26,7 @@ public:
|
|
|
26
26
|
DUCKDB_API static dtime_t FromCString(const char *buf, idx_t len, bool strict = false);
|
|
27
27
|
DUCKDB_API static bool TryConvertTime(const char *buf, idx_t len, idx_t &pos, dtime_t &result, bool strict = false);
|
|
28
28
|
DUCKDB_API static bool TryConvertTimeTZ(const char *buf, idx_t len, idx_t &pos, dtime_tz_t &result,
|
|
29
|
-
bool strict = false);
|
|
29
|
+
bool &has_offset, bool strict = false);
|
|
30
30
|
// No hour limit
|
|
31
31
|
DUCKDB_API static bool TryConvertInterval(const char *buf, idx_t len, idx_t &pos, dtime_t &result,
|
|
32
32
|
bool strict = false);
|
|
@@ -137,14 +137,19 @@ public:
|
|
|
137
137
|
DUCKDB_API static timestamp_t GetCurrentTimestamp();
|
|
138
138
|
|
|
139
139
|
//! Convert the epoch (in sec) to a timestamp
|
|
140
|
-
DUCKDB_API static timestamp_t
|
|
140
|
+
DUCKDB_API static timestamp_t FromEpochSecondsPossiblyInfinite(int64_t s);
|
|
141
|
+
DUCKDB_API static timestamp_t FromEpochSeconds(int64_t s);
|
|
141
142
|
//! Convert the epoch (in ms) to a timestamp
|
|
143
|
+
DUCKDB_API static timestamp_t FromEpochMsPossiblyInfinite(int64_t ms);
|
|
142
144
|
DUCKDB_API static timestamp_t FromEpochMs(int64_t ms);
|
|
143
145
|
//! Convert the epoch (in microseconds) to a timestamp
|
|
144
146
|
DUCKDB_API static timestamp_t FromEpochMicroSeconds(int64_t micros);
|
|
145
147
|
//! Convert the epoch (in nanoseconds) to a timestamp
|
|
146
|
-
DUCKDB_API static timestamp_t
|
|
148
|
+
DUCKDB_API static timestamp_t FromEpochNanoSecondsPossiblyInfinite(int64_t nanos);
|
|
149
|
+
DUCKDB_API static timestamp_t FromEpochNanoSeconds(int64_t nanos);
|
|
147
150
|
|
|
151
|
+
//! Try convert a timestamp to epoch (in nanoseconds)
|
|
152
|
+
DUCKDB_API static bool TryGetEpochNanoSeconds(timestamp_t timestamp, int64_t &result);
|
|
148
153
|
//! Convert the epoch (in seconds) to a timestamp
|
|
149
154
|
DUCKDB_API static int64_t GetEpochSeconds(timestamp_t timestamp);
|
|
150
155
|
//! Convert the epoch (in ms) to a timestamp
|
|
@@ -28,6 +28,9 @@ public:
|
|
|
28
28
|
//! Convert a hugeint object to a uuid style string
|
|
29
29
|
static void ToString(hugeint_t input, char *buf);
|
|
30
30
|
|
|
31
|
+
//! Convert a uhugeint_t object to a uuid value
|
|
32
|
+
static hugeint_t FromUHugeint(uhugeint_t input);
|
|
33
|
+
|
|
31
34
|
//! Convert a hugeint object to a uuid style string
|
|
32
35
|
static hugeint_t GenerateRandomUUID(RandomEngine &engine);
|
|
33
36
|
static hugeint_t GenerateRandomUUID();
|
|
@@ -38,6 +38,8 @@ public:
|
|
|
38
38
|
DUCKDB_API explicit Value(LogicalType type = LogicalType::SQLNULL);
|
|
39
39
|
//! Create an INTEGER value
|
|
40
40
|
DUCKDB_API Value(int32_t val); // NOLINT: Allow implicit conversion from `int32_t`
|
|
41
|
+
//! Create a BOOLEAN value
|
|
42
|
+
explicit DUCKDB_API Value(bool val);
|
|
41
43
|
//! Create a BIGINT value
|
|
42
44
|
DUCKDB_API Value(int64_t val); // NOLINT: Allow implicit conversion from `int64_t`
|
|
43
45
|
//! Create a FLOAT value
|
|
@@ -188,6 +190,9 @@ public:
|
|
|
188
190
|
DUCKDB_API static Value BIT(const_data_ptr_t data, idx_t len);
|
|
189
191
|
DUCKDB_API static Value BIT(const string &data);
|
|
190
192
|
|
|
193
|
+
//! Creates an aggregate state
|
|
194
|
+
DUCKDB_API static Value AGGREGATE_STATE(const LogicalType &type, const_data_ptr_t data, idx_t len);
|
|
195
|
+
|
|
191
196
|
template <class T>
|
|
192
197
|
T GetValue() const;
|
|
193
198
|
template <class T>
|
|
@@ -555,6 +560,8 @@ DUCKDB_API date_t Value::GetValueUnsafe() const;
|
|
|
555
560
|
template <>
|
|
556
561
|
DUCKDB_API dtime_t Value::GetValueUnsafe() const;
|
|
557
562
|
template <>
|
|
563
|
+
DUCKDB_API dtime_tz_t Value::GetValueUnsafe() const;
|
|
564
|
+
template <>
|
|
558
565
|
DUCKDB_API timestamp_t Value::GetValueUnsafe() const;
|
|
559
566
|
template <>
|
|
560
567
|
DUCKDB_API interval_t Value::GetValueUnsafe() const;
|
|
@@ -20,6 +20,14 @@
|
|
|
20
20
|
namespace duckdb {
|
|
21
21
|
|
|
22
22
|
struct UnifiedVectorFormat {
|
|
23
|
+
DUCKDB_API UnifiedVectorFormat();
|
|
24
|
+
// disable copy constructors
|
|
25
|
+
UnifiedVectorFormat(const UnifiedVectorFormat &other) = delete;
|
|
26
|
+
UnifiedVectorFormat &operator=(const UnifiedVectorFormat &) = delete;
|
|
27
|
+
//! enable move constructors
|
|
28
|
+
DUCKDB_API UnifiedVectorFormat(UnifiedVectorFormat &&other) noexcept;
|
|
29
|
+
DUCKDB_API UnifiedVectorFormat &operator=(UnifiedVectorFormat &&) noexcept;
|
|
30
|
+
|
|
23
31
|
const SelectionVector *sel;
|
|
24
32
|
data_ptr_t data;
|
|
25
33
|
ValidityMask validity;
|
|
@@ -205,6 +213,11 @@ public:
|
|
|
205
213
|
// Setters
|
|
206
214
|
DUCKDB_API void SetVectorType(VectorType vector_type);
|
|
207
215
|
|
|
216
|
+
// Transform vector to an equivalent dictionary vector
|
|
217
|
+
static void DebugTransformToDictionary(Vector &vector, idx_t count);
|
|
218
|
+
// Transform vector to an equivalent nested vector
|
|
219
|
+
static void DebugShuffleNestedVector(Vector &vector, idx_t count);
|
|
220
|
+
|
|
208
221
|
private:
|
|
209
222
|
//! Returns the [index] element of the Vector as a Value.
|
|
210
223
|
static Value GetValue(const Vector &v, idx_t index);
|
|
@@ -295,6 +308,16 @@ struct DictionaryVector {
|
|
|
295
308
|
};
|
|
296
309
|
|
|
297
310
|
struct FlatVector {
|
|
311
|
+
static void VerifyFlatVector(const Vector &vector) {
|
|
312
|
+
#ifdef DUCKDB_DEBUG_NO_SAFETY
|
|
313
|
+
D_ASSERT(vector.GetVectorType() == VectorType::FLAT_VECTOR);
|
|
314
|
+
#else
|
|
315
|
+
if (vector.GetVectorType() != VectorType::FLAT_VECTOR) {
|
|
316
|
+
throw InternalException("Operation requires a flat vector but a non-flat vector was encountered");
|
|
317
|
+
}
|
|
318
|
+
#endif
|
|
319
|
+
}
|
|
320
|
+
|
|
298
321
|
static inline data_ptr_t GetData(Vector &vector) {
|
|
299
322
|
return ConstantVector::GetData(vector);
|
|
300
323
|
}
|
|
@@ -316,15 +339,15 @@ struct FlatVector {
|
|
|
316
339
|
return FlatVector::GetData<T>(vector)[idx];
|
|
317
340
|
}
|
|
318
341
|
static inline const ValidityMask &Validity(const Vector &vector) {
|
|
319
|
-
|
|
342
|
+
VerifyFlatVector(vector);
|
|
320
343
|
return vector.validity;
|
|
321
344
|
}
|
|
322
345
|
static inline ValidityMask &Validity(Vector &vector) {
|
|
323
|
-
|
|
346
|
+
VerifyFlatVector(vector);
|
|
324
347
|
return vector.validity;
|
|
325
348
|
}
|
|
326
|
-
static inline void SetValidity(Vector &vector, ValidityMask &new_validity) {
|
|
327
|
-
|
|
349
|
+
static inline void SetValidity(Vector &vector, const ValidityMask &new_validity) {
|
|
350
|
+
VerifyFlatVector(vector);
|
|
328
351
|
vector.validity.Initialize(new_validity);
|
|
329
352
|
}
|
|
330
353
|
DUCKDB_API static void SetNull(Vector &vector, idx_t idx, bool is_null);
|
|
@@ -437,7 +460,15 @@ struct FSSTVector {
|
|
|
437
460
|
DUCKDB_API static idx_t GetCount(Vector &vector);
|
|
438
461
|
};
|
|
439
462
|
|
|
440
|
-
enum class MapInvalidReason : uint8_t {
|
|
463
|
+
enum class MapInvalidReason : uint8_t {
|
|
464
|
+
VALID,
|
|
465
|
+
NULL_KEY_LIST,
|
|
466
|
+
NULL_KEY,
|
|
467
|
+
DUPLICATE_KEY,
|
|
468
|
+
NULL_VALUE_LIST,
|
|
469
|
+
NOT_ALIGNED,
|
|
470
|
+
INVALID_PARAMS
|
|
471
|
+
};
|
|
441
472
|
|
|
442
473
|
struct MapVector {
|
|
443
474
|
DUCKDB_API static const Vector &GetKeys(const Vector &vector);
|
|
@@ -446,6 +477,7 @@ struct MapVector {
|
|
|
446
477
|
DUCKDB_API static Vector &GetValues(Vector &vector);
|
|
447
478
|
DUCKDB_API static MapInvalidReason
|
|
448
479
|
CheckMapValidity(Vector &map, idx_t count, const SelectionVector &sel = *FlatVector::IncrementalSelectionVector());
|
|
480
|
+
DUCKDB_API static void EvalMapInvalidReason(MapInvalidReason reason);
|
|
449
481
|
DUCKDB_API static void MapConversionVerify(Vector &vector, idx_t count);
|
|
450
482
|
};
|
|
451
483
|
|
|
@@ -494,8 +526,9 @@ struct UnionVector {
|
|
|
494
526
|
DUCKDB_API static const Vector &GetTags(const Vector &v);
|
|
495
527
|
DUCKDB_API static Vector &GetTags(Vector &v);
|
|
496
528
|
|
|
497
|
-
//!
|
|
498
|
-
|
|
529
|
+
//! Try to get the tag at the specific flat index of the union vector. Returns false if the tag is NULL.
|
|
530
|
+
//! This will handle and map the index properly for constant and dictionary vectors internally.
|
|
531
|
+
DUCKDB_API static bool TryGetTag(const Vector &vector, idx_t index, union_tag_t &tag);
|
|
499
532
|
|
|
500
533
|
//! Get the member vector of a union vector by index
|
|
501
534
|
DUCKDB_API static const Vector &GetMember(const Vector &vector, idx_t member_index);
|
|
@@ -382,7 +382,7 @@ public:
|
|
|
382
382
|
static constexpr const LogicalTypeId ROW_TYPE = LogicalTypeId::BIGINT;
|
|
383
383
|
|
|
384
384
|
// explicitly allowing these functions to be capitalized to be in-line with the remaining functions
|
|
385
|
-
DUCKDB_API static LogicalType DECIMAL(
|
|
385
|
+
DUCKDB_API static LogicalType DECIMAL(uint8_t width, uint8_t scale); // NOLINT
|
|
386
386
|
DUCKDB_API static LogicalType VARCHAR_COLLATION(string collation); // NOLINT
|
|
387
387
|
DUCKDB_API static LogicalType LIST(const LogicalType &child); // NOLINT
|
|
388
388
|
DUCKDB_API static LogicalType STRUCT(child_list_t<LogicalType> children); // NOLINT
|
|
@@ -13,12 +13,20 @@
|
|
|
13
13
|
|
|
14
14
|
namespace duckdb {
|
|
15
15
|
|
|
16
|
+
struct VectorTryCastData {
|
|
17
|
+
VectorTryCastData(Vector &result_p, CastParameters ¶meters) : result(result_p), parameters(parameters) {
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
Vector &result;
|
|
21
|
+
CastParameters ¶meters;
|
|
22
|
+
bool all_converted = true;
|
|
23
|
+
};
|
|
24
|
+
|
|
16
25
|
struct HandleVectorCastError {
|
|
17
26
|
template <class RESULT_TYPE>
|
|
18
|
-
static RESULT_TYPE Operation(string error_message, ValidityMask &mask, idx_t idx,
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
all_converted = false;
|
|
27
|
+
static RESULT_TYPE Operation(string error_message, ValidityMask &mask, idx_t idx, VectorTryCastData &cast_data) {
|
|
28
|
+
HandleCastError::AssignError(error_message, cast_data.parameters);
|
|
29
|
+
cast_data.all_converted = false;
|
|
22
30
|
mask.SetInvalid(idx);
|
|
23
31
|
return NullValue<RESULT_TYPE>();
|
|
24
32
|
}
|
|
@@ -254,7 +254,7 @@ private:
|
|
|
254
254
|
|
|
255
255
|
for (idx_t i = 0; i < (constant ? 1 : count); i++) {
|
|
256
256
|
auto a_idx = a_state.main_data.sel->get_index(i);
|
|
257
|
-
auto b_idx =
|
|
257
|
+
auto b_idx = b_state.main_data.sel->get_index(i);
|
|
258
258
|
if (!a_state.main_data.validity.RowIsValid(a_idx) || !b_state.main_data.validity.RowIsValid(b_idx)) {
|
|
259
259
|
FlatVector::SetNull(result, i, true);
|
|
260
260
|
continue;
|
|
@@ -288,8 +288,8 @@ private:
|
|
|
288
288
|
|
|
289
289
|
for (idx_t i = 0; i < (constant ? 1 : count); i++) {
|
|
290
290
|
auto a_idx = a_state.main_data.sel->get_index(i);
|
|
291
|
-
auto b_idx =
|
|
292
|
-
auto c_idx =
|
|
291
|
+
auto b_idx = b_state.main_data.sel->get_index(i);
|
|
292
|
+
auto c_idx = c_state.main_data.sel->get_index(i);
|
|
293
293
|
if (!a_state.main_data.validity.RowIsValid(a_idx) || !b_state.main_data.validity.RowIsValid(b_idx) ||
|
|
294
294
|
!c_state.main_data.validity.RowIsValid(c_idx)) {
|
|
295
295
|
FlatVector::SetNull(result, i, true);
|
|
@@ -329,9 +329,9 @@ private:
|
|
|
329
329
|
|
|
330
330
|
for (idx_t i = 0; i < (constant ? 1 : count); i++) {
|
|
331
331
|
auto a_idx = a_state.main_data.sel->get_index(i);
|
|
332
|
-
auto b_idx =
|
|
333
|
-
auto c_idx =
|
|
334
|
-
auto d_idx =
|
|
332
|
+
auto b_idx = b_state.main_data.sel->get_index(i);
|
|
333
|
+
auto c_idx = c_state.main_data.sel->get_index(i);
|
|
334
|
+
auto d_idx = d_state.main_data.sel->get_index(i);
|
|
335
335
|
if (!a_state.main_data.validity.RowIsValid(a_idx) || !b_state.main_data.validity.RowIsValid(b_idx) ||
|
|
336
336
|
!c_state.main_data.validity.RowIsValid(c_idx) || !d_state.main_data.validity.RowIsValid(d_idx)) {
|
|
337
337
|
FlatVector::SetNull(result, i, true);
|
|
@@ -158,11 +158,12 @@ struct VectorOperations {
|
|
|
158
158
|
//! NULLs. If any elements cannot be converted, returns false and fills in the error_message. If no error message is
|
|
159
159
|
//! provided, an exception is thrown instead.
|
|
160
160
|
DUCKDB_API static bool TryCast(CastFunctionSet &set, GetCastFunctionInput &input, Vector &source, Vector &result,
|
|
161
|
-
idx_t count, string *error_message, bool strict = false
|
|
161
|
+
idx_t count, string *error_message, bool strict = false,
|
|
162
|
+
const bool nullify_parent = false);
|
|
162
163
|
DUCKDB_API static bool DefaultTryCast(Vector &source, Vector &result, idx_t count, string *error_message,
|
|
163
164
|
bool strict = false);
|
|
164
165
|
DUCKDB_API static bool TryCast(ClientContext &context, Vector &source, Vector &result, idx_t count,
|
|
165
|
-
string *error_message, bool strict = false);
|
|
166
|
+
string *error_message, bool strict = false, const bool nullify_parent = false);
|
|
166
167
|
//! Cast the data from the source type to the target type. Throws an exception if the cast fails.
|
|
167
168
|
DUCKDB_API static void Cast(ClientContext &context, Vector &source, Vector &result, idx_t count,
|
|
168
169
|
bool strict = false);
|
|
@@ -312,4 +312,13 @@ struct ListInnerProductFunAlias {
|
|
|
312
312
|
static constexpr const char *Name = "<#>";
|
|
313
313
|
};
|
|
314
314
|
|
|
315
|
+
struct UnpivotListFun {
|
|
316
|
+
static constexpr const char *Name = "unpivot_list";
|
|
317
|
+
static constexpr const char *Parameters = "any,...";
|
|
318
|
+
static constexpr const char *Description = "Identical to list_value, but generated as part of unpivot for better error messages";
|
|
319
|
+
static constexpr const char *Example = "unpivot_list(4, 5, 6)";
|
|
320
|
+
|
|
321
|
+
static ScalarFunction GetFunction();
|
|
322
|
+
};
|
|
323
|
+
|
|
315
324
|
} // namespace duckdb
|
|
@@ -19,13 +19,14 @@ namespace duckdb {
|
|
|
19
19
|
//! are used within the execution engine
|
|
20
20
|
class ColumnBindingResolver : public LogicalOperatorVisitor {
|
|
21
21
|
public:
|
|
22
|
-
ColumnBindingResolver();
|
|
22
|
+
ColumnBindingResolver(bool verify_only = false);
|
|
23
23
|
|
|
24
24
|
void VisitOperator(LogicalOperator &op) override;
|
|
25
25
|
static void Verify(LogicalOperator &op);
|
|
26
26
|
|
|
27
27
|
protected:
|
|
28
28
|
vector<ColumnBinding> bindings;
|
|
29
|
+
bool verify_only;
|
|
29
30
|
|
|
30
31
|
unique_ptr<Expression> VisitReplace(BoundColumnRefExpression &expr, unique_ptr<Expression> *expr_ptr) override;
|
|
31
32
|
static unordered_set<idx_t> VerifyInternal(LogicalOperator &op);
|