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
|
@@ -927,7 +927,7 @@ bool TryCast::Operation(string_t input, bool &result, bool strict) {
|
|
|
927
927
|
|
|
928
928
|
switch (input_size) {
|
|
929
929
|
case 1: {
|
|
930
|
-
char c = std::tolower(*input_data);
|
|
930
|
+
char c = UnsafeNumericCast<char>(std::tolower(*input_data));
|
|
931
931
|
if (c == 't' || (!strict && c == '1')) {
|
|
932
932
|
result = true;
|
|
933
933
|
return true;
|
|
@@ -938,10 +938,10 @@ bool TryCast::Operation(string_t input, bool &result, bool strict) {
|
|
|
938
938
|
return false;
|
|
939
939
|
}
|
|
940
940
|
case 4: {
|
|
941
|
-
char t = std::tolower(input_data[0]);
|
|
942
|
-
char r = std::tolower(input_data[1]);
|
|
943
|
-
char u = std::tolower(input_data[2]);
|
|
944
|
-
char e = std::tolower(input_data[3]);
|
|
941
|
+
char t = UnsafeNumericCast<char>(std::tolower(input_data[0]));
|
|
942
|
+
char r = UnsafeNumericCast<char>(std::tolower(input_data[1]));
|
|
943
|
+
char u = UnsafeNumericCast<char>(std::tolower(input_data[2]));
|
|
944
|
+
char e = UnsafeNumericCast<char>(std::tolower(input_data[3]));
|
|
945
945
|
if (t == 't' && r == 'r' && u == 'u' && e == 'e') {
|
|
946
946
|
result = true;
|
|
947
947
|
return true;
|
|
@@ -949,11 +949,11 @@ bool TryCast::Operation(string_t input, bool &result, bool strict) {
|
|
|
949
949
|
return false;
|
|
950
950
|
}
|
|
951
951
|
case 5: {
|
|
952
|
-
char f = std::tolower(input_data[0]);
|
|
953
|
-
char a = std::tolower(input_data[1]);
|
|
954
|
-
char l = std::tolower(input_data[2]);
|
|
955
|
-
char s = std::tolower(input_data[3]);
|
|
956
|
-
char e = std::tolower(input_data[4]);
|
|
952
|
+
char f = UnsafeNumericCast<char>(std::tolower(input_data[0]));
|
|
953
|
+
char a = UnsafeNumericCast<char>(std::tolower(input_data[1]));
|
|
954
|
+
char l = UnsafeNumericCast<char>(std::tolower(input_data[2]));
|
|
955
|
+
char s = UnsafeNumericCast<char>(std::tolower(input_data[3]));
|
|
956
|
+
char e = UnsafeNumericCast<char>(std::tolower(input_data[4]));
|
|
957
957
|
if (f == 'f' && a == 'a' && l == 'l' && s == 's' && e == 'e') {
|
|
958
958
|
result = false;
|
|
959
959
|
return true;
|
|
@@ -1009,20 +1009,20 @@ bool TryCast::Operation(string_t input, double &result, bool strict) {
|
|
|
1009
1009
|
}
|
|
1010
1010
|
|
|
1011
1011
|
template <>
|
|
1012
|
-
bool TryCastErrorMessageCommaSeparated::Operation(string_t input, float &result,
|
|
1013
|
-
if (!TryDoubleCast<float>(input.GetData(), input.GetSize(), result, strict, ',')) {
|
|
1012
|
+
bool TryCastErrorMessageCommaSeparated::Operation(string_t input, float &result, CastParameters ¶meters) {
|
|
1013
|
+
if (!TryDoubleCast<float>(input.GetData(), input.GetSize(), result, parameters.strict, ',')) {
|
|
1014
1014
|
HandleCastError::AssignError(StringUtil::Format("Could not cast string to float: \"%s\"", input.GetString()),
|
|
1015
|
-
|
|
1015
|
+
parameters);
|
|
1016
1016
|
return false;
|
|
1017
1017
|
}
|
|
1018
1018
|
return true;
|
|
1019
1019
|
}
|
|
1020
1020
|
|
|
1021
1021
|
template <>
|
|
1022
|
-
bool TryCastErrorMessageCommaSeparated::Operation(string_t input, double &result,
|
|
1023
|
-
if (!TryDoubleCast<double>(input.GetData(), input.GetSize(), result, strict, ',')) {
|
|
1022
|
+
bool TryCastErrorMessageCommaSeparated::Operation(string_t input, double &result, CastParameters ¶meters) {
|
|
1023
|
+
if (!TryDoubleCast<double>(input.GetData(), input.GetSize(), result, parameters.strict, ',')) {
|
|
1024
1024
|
HandleCastError::AssignError(StringUtil::Format("Could not cast string to double: \"%s\"", input.GetString()),
|
|
1025
|
-
|
|
1025
|
+
parameters);
|
|
1026
1026
|
return false;
|
|
1027
1027
|
}
|
|
1028
1028
|
return true;
|
|
@@ -1126,37 +1126,49 @@ bool TryCast::Operation(interval_t input, interval_t &result, bool strict) {
|
|
|
1126
1126
|
//===--------------------------------------------------------------------===//
|
|
1127
1127
|
template <>
|
|
1128
1128
|
duckdb::string_t CastFromTimestampNS::Operation(duckdb::timestamp_t input, Vector &result) {
|
|
1129
|
-
return StringCast::Operation<timestamp_t>(
|
|
1129
|
+
return StringCast::Operation<timestamp_t>(CastTimestampNsToUs::Operation<timestamp_t, timestamp_t>(input), result);
|
|
1130
1130
|
}
|
|
1131
1131
|
template <>
|
|
1132
1132
|
duckdb::string_t CastFromTimestampMS::Operation(duckdb::timestamp_t input, Vector &result) {
|
|
1133
|
-
return StringCast::Operation<timestamp_t>(
|
|
1133
|
+
return StringCast::Operation<timestamp_t>(CastTimestampMsToUs::Operation<timestamp_t, timestamp_t>(input), result);
|
|
1134
1134
|
}
|
|
1135
1135
|
template <>
|
|
1136
1136
|
duckdb::string_t CastFromTimestampSec::Operation(duckdb::timestamp_t input, Vector &result) {
|
|
1137
|
-
return StringCast::Operation<timestamp_t>(
|
|
1137
|
+
return StringCast::Operation<timestamp_t>(CastTimestampSecToUs::Operation<timestamp_t, timestamp_t>(input), result);
|
|
1138
1138
|
}
|
|
1139
1139
|
|
|
1140
1140
|
template <>
|
|
1141
1141
|
timestamp_t CastTimestampUsToMs::Operation(timestamp_t input) {
|
|
1142
|
+
if (!Timestamp::IsFinite(input)) {
|
|
1143
|
+
return input;
|
|
1144
|
+
}
|
|
1142
1145
|
timestamp_t cast_timestamp(Timestamp::GetEpochMs(input));
|
|
1143
1146
|
return cast_timestamp;
|
|
1144
1147
|
}
|
|
1145
1148
|
|
|
1146
1149
|
template <>
|
|
1147
1150
|
timestamp_t CastTimestampUsToNs::Operation(timestamp_t input) {
|
|
1151
|
+
if (!Timestamp::IsFinite(input)) {
|
|
1152
|
+
return input;
|
|
1153
|
+
}
|
|
1148
1154
|
timestamp_t cast_timestamp(Timestamp::GetEpochNanoSeconds(input));
|
|
1149
1155
|
return cast_timestamp;
|
|
1150
1156
|
}
|
|
1151
1157
|
|
|
1152
1158
|
template <>
|
|
1153
1159
|
timestamp_t CastTimestampUsToSec::Operation(timestamp_t input) {
|
|
1160
|
+
if (!Timestamp::IsFinite(input)) {
|
|
1161
|
+
return input;
|
|
1162
|
+
}
|
|
1154
1163
|
timestamp_t cast_timestamp(Timestamp::GetEpochSeconds(input));
|
|
1155
1164
|
return cast_timestamp;
|
|
1156
1165
|
}
|
|
1157
1166
|
|
|
1158
1167
|
template <>
|
|
1159
1168
|
timestamp_t CastTimestampMsToUs::Operation(timestamp_t input) {
|
|
1169
|
+
if (!Timestamp::IsFinite(input)) {
|
|
1170
|
+
return input;
|
|
1171
|
+
}
|
|
1160
1172
|
return Timestamp::FromEpochMs(input.value);
|
|
1161
1173
|
}
|
|
1162
1174
|
|
|
@@ -1172,17 +1184,36 @@ dtime_t CastTimestampMsToTime::Operation(timestamp_t input) {
|
|
|
1172
1184
|
|
|
1173
1185
|
template <>
|
|
1174
1186
|
timestamp_t CastTimestampMsToNs::Operation(timestamp_t input) {
|
|
1187
|
+
if (!Timestamp::IsFinite(input)) {
|
|
1188
|
+
return input;
|
|
1189
|
+
}
|
|
1175
1190
|
auto us = CastTimestampMsToUs::Operation<timestamp_t, timestamp_t>(input);
|
|
1176
1191
|
return CastTimestampUsToNs::Operation<timestamp_t, timestamp_t>(us);
|
|
1177
1192
|
}
|
|
1178
1193
|
|
|
1179
1194
|
template <>
|
|
1180
1195
|
timestamp_t CastTimestampNsToUs::Operation(timestamp_t input) {
|
|
1196
|
+
if (!Timestamp::IsFinite(input)) {
|
|
1197
|
+
return input;
|
|
1198
|
+
}
|
|
1181
1199
|
return Timestamp::FromEpochNanoSeconds(input.value);
|
|
1182
1200
|
}
|
|
1183
1201
|
|
|
1202
|
+
template <>
|
|
1203
|
+
timestamp_t CastTimestampSecToUs::Operation(timestamp_t input) {
|
|
1204
|
+
if (!Timestamp::IsFinite(input)) {
|
|
1205
|
+
return input;
|
|
1206
|
+
}
|
|
1207
|
+
return Timestamp::FromEpochSeconds(input.value);
|
|
1208
|
+
}
|
|
1209
|
+
|
|
1184
1210
|
template <>
|
|
1185
1211
|
date_t CastTimestampNsToDate::Operation(timestamp_t input) {
|
|
1212
|
+
if (input == timestamp_t::infinity()) {
|
|
1213
|
+
return date_t::infinity();
|
|
1214
|
+
} else if (input == timestamp_t::ninfinity()) {
|
|
1215
|
+
return date_t::ninfinity();
|
|
1216
|
+
}
|
|
1186
1217
|
const auto us = CastTimestampNsToUs::Operation<timestamp_t, timestamp_t>(input);
|
|
1187
1218
|
return Timestamp::GetDate(us);
|
|
1188
1219
|
}
|
|
@@ -1195,17 +1226,18 @@ dtime_t CastTimestampNsToTime::Operation(timestamp_t input) {
|
|
|
1195
1226
|
|
|
1196
1227
|
template <>
|
|
1197
1228
|
timestamp_t CastTimestampSecToMs::Operation(timestamp_t input) {
|
|
1229
|
+
if (!Timestamp::IsFinite(input)) {
|
|
1230
|
+
return input;
|
|
1231
|
+
}
|
|
1198
1232
|
auto us = CastTimestampSecToUs::Operation<timestamp_t, timestamp_t>(input);
|
|
1199
1233
|
return CastTimestampUsToMs::Operation<timestamp_t, timestamp_t>(us);
|
|
1200
1234
|
}
|
|
1201
1235
|
|
|
1202
|
-
template <>
|
|
1203
|
-
timestamp_t CastTimestampSecToUs::Operation(timestamp_t input) {
|
|
1204
|
-
return Timestamp::FromEpochSeconds(input.value);
|
|
1205
|
-
}
|
|
1206
|
-
|
|
1207
1236
|
template <>
|
|
1208
1237
|
timestamp_t CastTimestampSecToNs::Operation(timestamp_t input) {
|
|
1238
|
+
if (!Timestamp::IsFinite(input)) {
|
|
1239
|
+
return input;
|
|
1240
|
+
}
|
|
1209
1241
|
auto us = CastTimestampSecToUs::Operation<timestamp_t, timestamp_t>(input);
|
|
1210
1242
|
return CastTimestampUsToNs::Operation<timestamp_t, timestamp_t>(us);
|
|
1211
1243
|
}
|
|
@@ -1230,7 +1262,15 @@ bool TryCastToTimestampNS::Operation(string_t input, timestamp_t &result, bool s
|
|
|
1230
1262
|
if (!TryCast::Operation<string_t, timestamp_t>(input, result, strict)) {
|
|
1231
1263
|
return false;
|
|
1232
1264
|
}
|
|
1233
|
-
|
|
1265
|
+
if (!Timestamp::IsFinite(result)) {
|
|
1266
|
+
return true;
|
|
1267
|
+
}
|
|
1268
|
+
|
|
1269
|
+
int64_t nanoseconds;
|
|
1270
|
+
if (!Timestamp::TryGetEpochNanoSeconds(result, nanoseconds)) {
|
|
1271
|
+
throw ConversionException("Could not convert VARCHAR value '%s' to Timestamp(NS)", input.GetString());
|
|
1272
|
+
}
|
|
1273
|
+
result = nanoseconds;
|
|
1234
1274
|
return true;
|
|
1235
1275
|
}
|
|
1236
1276
|
|
|
@@ -1239,6 +1279,9 @@ bool TryCastToTimestampMS::Operation(string_t input, timestamp_t &result, bool s
|
|
|
1239
1279
|
if (!TryCast::Operation<string_t, timestamp_t>(input, result, strict)) {
|
|
1240
1280
|
return false;
|
|
1241
1281
|
}
|
|
1282
|
+
if (!Timestamp::IsFinite(result)) {
|
|
1283
|
+
return true;
|
|
1284
|
+
}
|
|
1242
1285
|
result = Timestamp::GetEpochMs(result);
|
|
1243
1286
|
return true;
|
|
1244
1287
|
}
|
|
@@ -1248,6 +1291,9 @@ bool TryCastToTimestampSec::Operation(string_t input, timestamp_t &result, bool
|
|
|
1248
1291
|
if (!TryCast::Operation<string_t, timestamp_t>(input, result, strict)) {
|
|
1249
1292
|
return false;
|
|
1250
1293
|
}
|
|
1294
|
+
if (!Timestamp::IsFinite(result)) {
|
|
1295
|
+
return true;
|
|
1296
|
+
}
|
|
1251
1297
|
result = Timestamp::GetEpochSeconds(result);
|
|
1252
1298
|
return true;
|
|
1253
1299
|
}
|
|
@@ -1257,6 +1303,9 @@ bool TryCastToTimestampNS::Operation(date_t input, timestamp_t &result, bool str
|
|
|
1257
1303
|
if (!TryCast::Operation<date_t, timestamp_t>(input, result, strict)) {
|
|
1258
1304
|
return false;
|
|
1259
1305
|
}
|
|
1306
|
+
if (!Timestamp::IsFinite(result)) {
|
|
1307
|
+
return true;
|
|
1308
|
+
}
|
|
1260
1309
|
if (!TryMultiplyOperator::Operation(result.value, Interval::NANOS_PER_MICRO, result.value)) {
|
|
1261
1310
|
return false;
|
|
1262
1311
|
}
|
|
@@ -1268,6 +1317,9 @@ bool TryCastToTimestampMS::Operation(date_t input, timestamp_t &result, bool str
|
|
|
1268
1317
|
if (!TryCast::Operation<date_t, timestamp_t>(input, result, strict)) {
|
|
1269
1318
|
return false;
|
|
1270
1319
|
}
|
|
1320
|
+
if (!Timestamp::IsFinite(result)) {
|
|
1321
|
+
return true;
|
|
1322
|
+
}
|
|
1271
1323
|
result.value /= Interval::MICROS_PER_MSEC;
|
|
1272
1324
|
return true;
|
|
1273
1325
|
}
|
|
@@ -1277,6 +1329,9 @@ bool TryCastToTimestampSec::Operation(date_t input, timestamp_t &result, bool st
|
|
|
1277
1329
|
if (!TryCast::Operation<date_t, timestamp_t>(input, result, strict)) {
|
|
1278
1330
|
return false;
|
|
1279
1331
|
}
|
|
1332
|
+
if (!Timestamp::IsFinite(result)) {
|
|
1333
|
+
return true;
|
|
1334
|
+
}
|
|
1280
1335
|
result.value /= Interval::MICROS_PER_MSEC * Interval::MSECS_PER_SEC;
|
|
1281
1336
|
return true;
|
|
1282
1337
|
}
|
|
@@ -1331,10 +1386,9 @@ string_t CastFromPointer::Operation(uintptr_t input, Vector &vector) {
|
|
|
1331
1386
|
// Cast To Blob
|
|
1332
1387
|
//===--------------------------------------------------------------------===//
|
|
1333
1388
|
template <>
|
|
1334
|
-
bool TryCastToBlob::Operation(string_t input, string_t &result, Vector &result_vector,
|
|
1335
|
-
bool strict) {
|
|
1389
|
+
bool TryCastToBlob::Operation(string_t input, string_t &result, Vector &result_vector, CastParameters ¶meters) {
|
|
1336
1390
|
idx_t result_size;
|
|
1337
|
-
if (!Blob::TryGetBlobSize(input, result_size,
|
|
1391
|
+
if (!Blob::TryGetBlobSize(input, result_size, parameters)) {
|
|
1338
1392
|
return false;
|
|
1339
1393
|
}
|
|
1340
1394
|
|
|
@@ -1348,10 +1402,9 @@ bool TryCastToBlob::Operation(string_t input, string_t &result, Vector &result_v
|
|
|
1348
1402
|
// Cast To Bit
|
|
1349
1403
|
//===--------------------------------------------------------------------===//
|
|
1350
1404
|
template <>
|
|
1351
|
-
bool TryCastToBit::Operation(string_t input, string_t &result, Vector &result_vector,
|
|
1352
|
-
bool strict) {
|
|
1405
|
+
bool TryCastToBit::Operation(string_t input, string_t &result, Vector &result_vector, CastParameters ¶meters) {
|
|
1353
1406
|
idx_t result_size;
|
|
1354
|
-
if (!Bit::TryGetBitStringSize(input, result_size, error_message)) {
|
|
1407
|
+
if (!Bit::TryGetBitStringSize(input, result_size, parameters.error_message)) {
|
|
1355
1408
|
return false;
|
|
1356
1409
|
}
|
|
1357
1410
|
|
|
@@ -1362,32 +1415,34 @@ bool TryCastToBit::Operation(string_t input, string_t &result, Vector &result_ve
|
|
|
1362
1415
|
}
|
|
1363
1416
|
|
|
1364
1417
|
template <>
|
|
1365
|
-
bool CastFromBitToNumeric::Operation(string_t input, bool &result,
|
|
1418
|
+
bool CastFromBitToNumeric::Operation(string_t input, bool &result, CastParameters ¶meters) {
|
|
1366
1419
|
D_ASSERT(input.GetSize() > 1);
|
|
1367
1420
|
|
|
1368
1421
|
uint8_t value;
|
|
1369
|
-
bool success = CastFromBitToNumeric::Operation(input, value,
|
|
1422
|
+
bool success = CastFromBitToNumeric::Operation(input, value, parameters);
|
|
1370
1423
|
result = (value > 0);
|
|
1371
1424
|
return (success);
|
|
1372
1425
|
}
|
|
1373
1426
|
|
|
1374
1427
|
template <>
|
|
1375
|
-
bool CastFromBitToNumeric::Operation(string_t input, hugeint_t &result,
|
|
1428
|
+
bool CastFromBitToNumeric::Operation(string_t input, hugeint_t &result, CastParameters ¶meters) {
|
|
1376
1429
|
D_ASSERT(input.GetSize() > 1);
|
|
1377
1430
|
|
|
1378
1431
|
if (input.GetSize() - 1 > sizeof(hugeint_t)) {
|
|
1379
|
-
throw ConversionException("Bitstring doesn't fit inside of %s",
|
|
1432
|
+
throw ConversionException(parameters.query_location, "Bitstring doesn't fit inside of %s",
|
|
1433
|
+
GetTypeId<hugeint_t>());
|
|
1380
1434
|
}
|
|
1381
1435
|
Bit::BitToNumeric(input, result);
|
|
1382
1436
|
return (true);
|
|
1383
1437
|
}
|
|
1384
1438
|
|
|
1385
1439
|
template <>
|
|
1386
|
-
bool CastFromBitToNumeric::Operation(string_t input, uhugeint_t &result,
|
|
1440
|
+
bool CastFromBitToNumeric::Operation(string_t input, uhugeint_t &result, CastParameters ¶meters) {
|
|
1387
1441
|
D_ASSERT(input.GetSize() > 1);
|
|
1388
1442
|
|
|
1389
1443
|
if (input.GetSize() - 1 > sizeof(uhugeint_t)) {
|
|
1390
|
-
throw ConversionException("Bitstring doesn't fit inside of %s",
|
|
1444
|
+
throw ConversionException(parameters.query_location, "Bitstring doesn't fit inside of %s",
|
|
1445
|
+
GetTypeId<uhugeint_t>());
|
|
1391
1446
|
}
|
|
1392
1447
|
Bit::BitToNumeric(input, result);
|
|
1393
1448
|
return (true);
|
|
@@ -1408,8 +1463,7 @@ string_t CastFromUUID::Operation(hugeint_t input, Vector &vector) {
|
|
|
1408
1463
|
// Cast To UUID
|
|
1409
1464
|
//===--------------------------------------------------------------------===//
|
|
1410
1465
|
template <>
|
|
1411
|
-
bool TryCastToUUID::Operation(string_t input, hugeint_t &result, Vector &result_vector,
|
|
1412
|
-
bool strict) {
|
|
1466
|
+
bool TryCastToUUID::Operation(string_t input, hugeint_t &result, Vector &result_vector, CastParameters ¶meters) {
|
|
1413
1467
|
return UUID::FromString(input.GetString(), result);
|
|
1414
1468
|
}
|
|
1415
1469
|
|
|
@@ -1417,9 +1471,9 @@ bool TryCastToUUID::Operation(string_t input, hugeint_t &result, Vector &result_
|
|
|
1417
1471
|
// Cast To Date
|
|
1418
1472
|
//===--------------------------------------------------------------------===//
|
|
1419
1473
|
template <>
|
|
1420
|
-
bool TryCastErrorMessage::Operation(string_t input, date_t &result,
|
|
1421
|
-
if (!TryCast::Operation<string_t, date_t>(input, result, strict)) {
|
|
1422
|
-
HandleCastError::AssignError(Date::ConversionError(input),
|
|
1474
|
+
bool TryCastErrorMessage::Operation(string_t input, date_t &result, CastParameters ¶meters) {
|
|
1475
|
+
if (!TryCast::Operation<string_t, date_t>(input, result, parameters.strict)) {
|
|
1476
|
+
HandleCastError::AssignError(Date::ConversionError(input), parameters);
|
|
1423
1477
|
return false;
|
|
1424
1478
|
}
|
|
1425
1479
|
return true;
|
|
@@ -1441,9 +1495,9 @@ date_t Cast::Operation(string_t input) {
|
|
|
1441
1495
|
// Cast To Time
|
|
1442
1496
|
//===--------------------------------------------------------------------===//
|
|
1443
1497
|
template <>
|
|
1444
|
-
bool TryCastErrorMessage::Operation(string_t input, dtime_t &result,
|
|
1445
|
-
if (!TryCast::Operation<string_t, dtime_t>(input, result, strict)) {
|
|
1446
|
-
HandleCastError::AssignError(Time::ConversionError(input),
|
|
1498
|
+
bool TryCastErrorMessage::Operation(string_t input, dtime_t &result, CastParameters ¶meters) {
|
|
1499
|
+
if (!TryCast::Operation<string_t, dtime_t>(input, result, parameters.strict)) {
|
|
1500
|
+
HandleCastError::AssignError(Time::ConversionError(input), parameters);
|
|
1447
1501
|
return false;
|
|
1448
1502
|
}
|
|
1449
1503
|
return true;
|
|
@@ -1464,9 +1518,9 @@ dtime_t Cast::Operation(string_t input) {
|
|
|
1464
1518
|
// Cast To TimeTZ
|
|
1465
1519
|
//===--------------------------------------------------------------------===//
|
|
1466
1520
|
template <>
|
|
1467
|
-
bool TryCastErrorMessage::Operation(string_t input, dtime_tz_t &result,
|
|
1468
|
-
if (!TryCast::Operation<string_t, dtime_tz_t>(input, result, strict)) {
|
|
1469
|
-
HandleCastError::AssignError(Time::ConversionError(input),
|
|
1521
|
+
bool TryCastErrorMessage::Operation(string_t input, dtime_tz_t &result, CastParameters ¶meters) {
|
|
1522
|
+
if (!TryCast::Operation<string_t, dtime_tz_t>(input, result, parameters.strict)) {
|
|
1523
|
+
HandleCastError::AssignError(Time::ConversionError(input), parameters);
|
|
1470
1524
|
return false;
|
|
1471
1525
|
}
|
|
1472
1526
|
return true;
|
|
@@ -1475,7 +1529,8 @@ bool TryCastErrorMessage::Operation(string_t input, dtime_tz_t &result, string *
|
|
|
1475
1529
|
template <>
|
|
1476
1530
|
bool TryCast::Operation(string_t input, dtime_tz_t &result, bool strict) {
|
|
1477
1531
|
idx_t pos;
|
|
1478
|
-
|
|
1532
|
+
bool has_offset;
|
|
1533
|
+
return Time::TryConvertTimeTZ(input.GetData(), input.GetSize(), pos, result, has_offset, strict);
|
|
1479
1534
|
}
|
|
1480
1535
|
|
|
1481
1536
|
template <>
|
|
@@ -1491,15 +1546,15 @@ dtime_tz_t Cast::Operation(string_t input) {
|
|
|
1491
1546
|
// Cast To Timestamp
|
|
1492
1547
|
//===--------------------------------------------------------------------===//
|
|
1493
1548
|
template <>
|
|
1494
|
-
bool TryCastErrorMessage::Operation(string_t input, timestamp_t &result,
|
|
1549
|
+
bool TryCastErrorMessage::Operation(string_t input, timestamp_t &result, CastParameters ¶meters) {
|
|
1495
1550
|
auto cast_result = Timestamp::TryConvertTimestamp(input.GetData(), input.GetSize(), result);
|
|
1496
1551
|
if (cast_result == TimestampCastResult::SUCCESS) {
|
|
1497
1552
|
return true;
|
|
1498
1553
|
}
|
|
1499
1554
|
if (cast_result == TimestampCastResult::ERROR_INCORRECT_FORMAT) {
|
|
1500
|
-
HandleCastError::AssignError(Timestamp::ConversionError(input),
|
|
1555
|
+
HandleCastError::AssignError(Timestamp::ConversionError(input), parameters);
|
|
1501
1556
|
} else {
|
|
1502
|
-
HandleCastError::AssignError(Timestamp::UnsupportedTimezoneError(input),
|
|
1557
|
+
HandleCastError::AssignError(Timestamp::UnsupportedTimezoneError(input), parameters);
|
|
1503
1558
|
}
|
|
1504
1559
|
return false;
|
|
1505
1560
|
}
|
|
@@ -1518,8 +1573,8 @@ timestamp_t Cast::Operation(string_t input) {
|
|
|
1518
1573
|
// Cast From Interval
|
|
1519
1574
|
//===--------------------------------------------------------------------===//
|
|
1520
1575
|
template <>
|
|
1521
|
-
bool TryCastErrorMessage::Operation(string_t input, interval_t &result,
|
|
1522
|
-
return Interval::FromCString(input.GetData(), input.GetSize(), result, error_message, strict);
|
|
1576
|
+
bool TryCastErrorMessage::Operation(string_t input, interval_t &result, CastParameters ¶meters) {
|
|
1577
|
+
return Interval::FromCString(input.GetData(), input.GetSize(), result, parameters.error_message, parameters.strict);
|
|
1523
1578
|
}
|
|
1524
1579
|
|
|
1525
1580
|
//===--------------------------------------------------------------------===//
|
|
@@ -1642,7 +1697,7 @@ struct HugeIntegerCastOperation {
|
|
|
1642
1697
|
remainder *= -1;
|
|
1643
1698
|
}
|
|
1644
1699
|
state.decimal = remainder;
|
|
1645
|
-
state.decimal_total_digits = -e;
|
|
1700
|
+
state.decimal_total_digits = UnsafeNumericCast<uint16_t>(-e);
|
|
1646
1701
|
state.decimal_intermediate = 0;
|
|
1647
1702
|
state.decimal_intermediate_digits = 0;
|
|
1648
1703
|
return Finalize<T, NEGATIVE>(state);
|
|
@@ -1826,7 +1881,7 @@ struct DecimalCastOperation {
|
|
|
1826
1881
|
// Everything beyond that amount needs to be truncated
|
|
1827
1882
|
if (decimal_excess > exponent) {
|
|
1828
1883
|
// We've allowed too many decimals
|
|
1829
|
-
state.excessive_decimals = decimal_excess - exponent;
|
|
1884
|
+
state.excessive_decimals = UnsafeNumericCast<uint8_t>(decimal_excess - exponent);
|
|
1830
1885
|
exponent = 0;
|
|
1831
1886
|
} else {
|
|
1832
1887
|
exponent -= decimal_excess;
|
|
@@ -1931,7 +1986,7 @@ struct DecimalCastOperation {
|
|
|
1931
1986
|
};
|
|
1932
1987
|
|
|
1933
1988
|
template <class T, char decimal_separator = '.'>
|
|
1934
|
-
bool TryDecimalStringCast(string_t input, T &result,
|
|
1989
|
+
bool TryDecimalStringCast(string_t input, T &result, CastParameters ¶meters, uint8_t width, uint8_t scale) {
|
|
1935
1990
|
DecimalCastData<T> state;
|
|
1936
1991
|
state.result = 0;
|
|
1937
1992
|
state.width = width;
|
|
@@ -1946,7 +2001,7 @@ bool TryDecimalStringCast(string_t input, T &result, string *error_message, uint
|
|
|
1946
2001
|
input.GetData(), input.GetSize(), state, false)) {
|
|
1947
2002
|
string error = StringUtil::Format("Could not convert string \"%s\" to DECIMAL(%d,%d)", input.GetString(),
|
|
1948
2003
|
(int)width, (int)scale);
|
|
1949
|
-
HandleCastError::AssignError(error,
|
|
2004
|
+
HandleCastError::AssignError(error, parameters);
|
|
1950
2005
|
return false;
|
|
1951
2006
|
}
|
|
1952
2007
|
result = state.result;
|
|
@@ -1954,48 +2009,51 @@ bool TryDecimalStringCast(string_t input, T &result, string *error_message, uint
|
|
|
1954
2009
|
}
|
|
1955
2010
|
|
|
1956
2011
|
template <>
|
|
1957
|
-
bool TryCastToDecimal::Operation(string_t input, int16_t &result,
|
|
1958
|
-
|
|
2012
|
+
bool TryCastToDecimal::Operation(string_t input, int16_t &result, CastParameters ¶meters, uint8_t width,
|
|
2013
|
+
uint8_t scale) {
|
|
2014
|
+
return TryDecimalStringCast<int16_t>(input, result, parameters, width, scale);
|
|
1959
2015
|
}
|
|
1960
2016
|
|
|
1961
2017
|
template <>
|
|
1962
|
-
bool TryCastToDecimal::Operation(string_t input, int32_t &result,
|
|
1963
|
-
|
|
2018
|
+
bool TryCastToDecimal::Operation(string_t input, int32_t &result, CastParameters ¶meters, uint8_t width,
|
|
2019
|
+
uint8_t scale) {
|
|
2020
|
+
return TryDecimalStringCast<int32_t>(input, result, parameters, width, scale);
|
|
1964
2021
|
}
|
|
1965
2022
|
|
|
1966
2023
|
template <>
|
|
1967
|
-
bool TryCastToDecimal::Operation(string_t input, int64_t &result,
|
|
1968
|
-
|
|
2024
|
+
bool TryCastToDecimal::Operation(string_t input, int64_t &result, CastParameters ¶meters, uint8_t width,
|
|
2025
|
+
uint8_t scale) {
|
|
2026
|
+
return TryDecimalStringCast<int64_t>(input, result, parameters, width, scale);
|
|
1969
2027
|
}
|
|
1970
2028
|
|
|
1971
2029
|
template <>
|
|
1972
|
-
bool TryCastToDecimal::Operation(string_t input, hugeint_t &result,
|
|
2030
|
+
bool TryCastToDecimal::Operation(string_t input, hugeint_t &result, CastParameters ¶meters, uint8_t width,
|
|
1973
2031
|
uint8_t scale) {
|
|
1974
|
-
return TryDecimalStringCast<hugeint_t>(input, result,
|
|
2032
|
+
return TryDecimalStringCast<hugeint_t>(input, result, parameters, width, scale);
|
|
1975
2033
|
}
|
|
1976
2034
|
|
|
1977
2035
|
template <>
|
|
1978
|
-
bool TryCastToDecimalCommaSeparated::Operation(string_t input, int16_t &result,
|
|
1979
|
-
uint8_t scale) {
|
|
1980
|
-
return TryDecimalStringCast<int16_t, ','>(input, result,
|
|
2036
|
+
bool TryCastToDecimalCommaSeparated::Operation(string_t input, int16_t &result, CastParameters ¶meters,
|
|
2037
|
+
uint8_t width, uint8_t scale) {
|
|
2038
|
+
return TryDecimalStringCast<int16_t, ','>(input, result, parameters, width, scale);
|
|
1981
2039
|
}
|
|
1982
2040
|
|
|
1983
2041
|
template <>
|
|
1984
|
-
bool TryCastToDecimalCommaSeparated::Operation(string_t input, int32_t &result,
|
|
1985
|
-
uint8_t scale) {
|
|
1986
|
-
return TryDecimalStringCast<int32_t, ','>(input, result,
|
|
2042
|
+
bool TryCastToDecimalCommaSeparated::Operation(string_t input, int32_t &result, CastParameters ¶meters,
|
|
2043
|
+
uint8_t width, uint8_t scale) {
|
|
2044
|
+
return TryDecimalStringCast<int32_t, ','>(input, result, parameters, width, scale);
|
|
1987
2045
|
}
|
|
1988
2046
|
|
|
1989
2047
|
template <>
|
|
1990
|
-
bool TryCastToDecimalCommaSeparated::Operation(string_t input, int64_t &result,
|
|
1991
|
-
uint8_t scale) {
|
|
1992
|
-
return TryDecimalStringCast<int64_t, ','>(input, result,
|
|
2048
|
+
bool TryCastToDecimalCommaSeparated::Operation(string_t input, int64_t &result, CastParameters ¶meters,
|
|
2049
|
+
uint8_t width, uint8_t scale) {
|
|
2050
|
+
return TryDecimalStringCast<int64_t, ','>(input, result, parameters, width, scale);
|
|
1993
2051
|
}
|
|
1994
2052
|
|
|
1995
2053
|
template <>
|
|
1996
|
-
bool TryCastToDecimalCommaSeparated::Operation(string_t input, hugeint_t &result,
|
|
1997
|
-
uint8_t scale) {
|
|
1998
|
-
return TryDecimalStringCast<hugeint_t, ','>(input, result,
|
|
2054
|
+
bool TryCastToDecimalCommaSeparated::Operation(string_t input, hugeint_t &result, CastParameters ¶meters,
|
|
2055
|
+
uint8_t width, uint8_t scale) {
|
|
2056
|
+
return TryDecimalStringCast<hugeint_t, ','>(input, result, parameters, width, scale);
|
|
1999
2057
|
}
|
|
2000
2058
|
|
|
2001
2059
|
template <>
|
|
@@ -2024,9 +2082,9 @@ string_t StringCastFromDecimal::Operation(hugeint_t input, uint8_t width, uint8_
|
|
|
2024
2082
|
// Decimal <-> Bool
|
|
2025
2083
|
//===--------------------------------------------------------------------===//
|
|
2026
2084
|
template <class T, class OP = NumericHelper>
|
|
2027
|
-
bool TryCastBoolToDecimal(bool input, T &result,
|
|
2085
|
+
bool TryCastBoolToDecimal(bool input, T &result, CastParameters ¶meters, uint8_t width, uint8_t scale) {
|
|
2028
2086
|
if (width > scale) {
|
|
2029
|
-
result = input ? OP::POWERS_OF_TEN[scale] : 0;
|
|
2087
|
+
result = UnsafeNumericCast<T>(input ? OP::POWERS_OF_TEN[scale] : 0);
|
|
2030
2088
|
return true;
|
|
2031
2089
|
} else {
|
|
2032
2090
|
return TryCast::Operation<bool, T>(input, result);
|
|
@@ -2034,42 +2092,50 @@ bool TryCastBoolToDecimal(bool input, T &result, string *error_message, uint8_t
|
|
|
2034
2092
|
}
|
|
2035
2093
|
|
|
2036
2094
|
template <>
|
|
2037
|
-
bool TryCastToDecimal::Operation(bool input, int16_t &result,
|
|
2038
|
-
|
|
2095
|
+
bool TryCastToDecimal::Operation(bool input, int16_t &result, CastParameters ¶meters, uint8_t width,
|
|
2096
|
+
uint8_t scale) {
|
|
2097
|
+
return TryCastBoolToDecimal<int16_t>(input, result, parameters, width, scale);
|
|
2039
2098
|
}
|
|
2040
2099
|
|
|
2041
2100
|
template <>
|
|
2042
|
-
bool TryCastToDecimal::Operation(bool input, int32_t &result,
|
|
2043
|
-
|
|
2101
|
+
bool TryCastToDecimal::Operation(bool input, int32_t &result, CastParameters ¶meters, uint8_t width,
|
|
2102
|
+
uint8_t scale) {
|
|
2103
|
+
return TryCastBoolToDecimal<int32_t>(input, result, parameters, width, scale);
|
|
2044
2104
|
}
|
|
2045
2105
|
|
|
2046
2106
|
template <>
|
|
2047
|
-
bool TryCastToDecimal::Operation(bool input, int64_t &result,
|
|
2048
|
-
|
|
2107
|
+
bool TryCastToDecimal::Operation(bool input, int64_t &result, CastParameters ¶meters, uint8_t width,
|
|
2108
|
+
uint8_t scale) {
|
|
2109
|
+
return TryCastBoolToDecimal<int64_t>(input, result, parameters, width, scale);
|
|
2049
2110
|
}
|
|
2050
2111
|
|
|
2051
2112
|
template <>
|
|
2052
|
-
bool TryCastToDecimal::Operation(bool input, hugeint_t &result,
|
|
2053
|
-
|
|
2113
|
+
bool TryCastToDecimal::Operation(bool input, hugeint_t &result, CastParameters ¶meters, uint8_t width,
|
|
2114
|
+
uint8_t scale) {
|
|
2115
|
+
return TryCastBoolToDecimal<hugeint_t, Hugeint>(input, result, parameters, width, scale);
|
|
2054
2116
|
}
|
|
2055
2117
|
|
|
2056
2118
|
template <>
|
|
2057
|
-
bool TryCastFromDecimal::Operation(int16_t input, bool &result,
|
|
2119
|
+
bool TryCastFromDecimal::Operation(int16_t input, bool &result, CastParameters ¶meters, uint8_t width,
|
|
2120
|
+
uint8_t scale) {
|
|
2058
2121
|
return TryCast::Operation<int16_t, bool>(input, result);
|
|
2059
2122
|
}
|
|
2060
2123
|
|
|
2061
2124
|
template <>
|
|
2062
|
-
bool TryCastFromDecimal::Operation(int32_t input, bool &result,
|
|
2125
|
+
bool TryCastFromDecimal::Operation(int32_t input, bool &result, CastParameters ¶meters, uint8_t width,
|
|
2126
|
+
uint8_t scale) {
|
|
2063
2127
|
return TryCast::Operation<int32_t, bool>(input, result);
|
|
2064
2128
|
}
|
|
2065
2129
|
|
|
2066
2130
|
template <>
|
|
2067
|
-
bool TryCastFromDecimal::Operation(int64_t input, bool &result,
|
|
2131
|
+
bool TryCastFromDecimal::Operation(int64_t input, bool &result, CastParameters ¶meters, uint8_t width,
|
|
2132
|
+
uint8_t scale) {
|
|
2068
2133
|
return TryCast::Operation<int64_t, bool>(input, result);
|
|
2069
2134
|
}
|
|
2070
2135
|
|
|
2071
2136
|
template <>
|
|
2072
|
-
bool TryCastFromDecimal::Operation(hugeint_t input, bool &result,
|
|
2137
|
+
bool TryCastFromDecimal::Operation(hugeint_t input, bool &result, CastParameters ¶meters, uint8_t width,
|
|
2138
|
+
uint8_t scale) {
|
|
2073
2139
|
return TryCast::Operation<hugeint_t, bool>(input, result);
|
|
2074
2140
|
}
|
|
2075
2141
|
|
|
@@ -2091,26 +2157,26 @@ struct UnsignedToDecimalOperator {
|
|
|
2091
2157
|
};
|
|
2092
2158
|
|
|
2093
2159
|
template <class SRC, class DST, class OP = SignedToDecimalOperator>
|
|
2094
|
-
bool StandardNumericToDecimalCast(SRC input, DST &result,
|
|
2160
|
+
bool StandardNumericToDecimalCast(SRC input, DST &result, CastParameters ¶meters, uint8_t width, uint8_t scale) {
|
|
2095
2161
|
// check for overflow
|
|
2096
|
-
DST max_width = NumericHelper::POWERS_OF_TEN[width - scale];
|
|
2162
|
+
DST max_width = UnsafeNumericCast<DST>(NumericHelper::POWERS_OF_TEN[width - scale]);
|
|
2097
2163
|
if (OP::template Operation<SRC, DST>(input, max_width)) {
|
|
2098
2164
|
string error = StringUtil::Format("Could not cast value %d to DECIMAL(%d,%d)", input, width, scale);
|
|
2099
|
-
HandleCastError::AssignError(error,
|
|
2165
|
+
HandleCastError::AssignError(error, parameters);
|
|
2100
2166
|
return false;
|
|
2101
2167
|
}
|
|
2102
|
-
result = DST(input) * NumericHelper::POWERS_OF_TEN[scale];
|
|
2168
|
+
result = UnsafeNumericCast<DST>(DST(input) * NumericHelper::POWERS_OF_TEN[scale]);
|
|
2103
2169
|
return true;
|
|
2104
2170
|
}
|
|
2105
2171
|
|
|
2106
2172
|
template <class SRC>
|
|
2107
|
-
bool NumericToHugeDecimalCast(SRC input, hugeint_t &result,
|
|
2173
|
+
bool NumericToHugeDecimalCast(SRC input, hugeint_t &result, CastParameters ¶meters, uint8_t width, uint8_t scale) {
|
|
2108
2174
|
// check for overflow
|
|
2109
2175
|
hugeint_t max_width = Hugeint::POWERS_OF_TEN[width - scale];
|
|
2110
2176
|
hugeint_t hinput = Hugeint::Convert(input);
|
|
2111
2177
|
if (hinput >= max_width || hinput <= -max_width) {
|
|
2112
2178
|
string error = StringUtil::Format("Could not cast value %s to DECIMAL(%d,%d)", hinput.ToString(), width, scale);
|
|
2113
|
-
HandleCastError::AssignError(error,
|
|
2179
|
+
HandleCastError::AssignError(error, parameters);
|
|
2114
2180
|
return false;
|
|
2115
2181
|
}
|
|
2116
2182
|
result = hinput * Hugeint::POWERS_OF_TEN[scale];
|
|
@@ -2121,191 +2187,216 @@ bool NumericToHugeDecimalCast(SRC input, hugeint_t &result, string *error_messag
|
|
|
2121
2187
|
// Cast int8_t -> Decimal
|
|
2122
2188
|
//===--------------------------------------------------------------------===//
|
|
2123
2189
|
template <>
|
|
2124
|
-
bool TryCastToDecimal::Operation(int8_t input, int16_t &result,
|
|
2125
|
-
|
|
2190
|
+
bool TryCastToDecimal::Operation(int8_t input, int16_t &result, CastParameters ¶meters, uint8_t width,
|
|
2191
|
+
uint8_t scale) {
|
|
2192
|
+
return StandardNumericToDecimalCast<int8_t, int16_t>(input, result, parameters, width, scale);
|
|
2126
2193
|
}
|
|
2127
2194
|
template <>
|
|
2128
|
-
bool TryCastToDecimal::Operation(int8_t input, int32_t &result,
|
|
2129
|
-
|
|
2195
|
+
bool TryCastToDecimal::Operation(int8_t input, int32_t &result, CastParameters ¶meters, uint8_t width,
|
|
2196
|
+
uint8_t scale) {
|
|
2197
|
+
return StandardNumericToDecimalCast<int8_t, int32_t>(input, result, parameters, width, scale);
|
|
2130
2198
|
}
|
|
2131
2199
|
template <>
|
|
2132
|
-
bool TryCastToDecimal::Operation(int8_t input, int64_t &result,
|
|
2133
|
-
|
|
2200
|
+
bool TryCastToDecimal::Operation(int8_t input, int64_t &result, CastParameters ¶meters, uint8_t width,
|
|
2201
|
+
uint8_t scale) {
|
|
2202
|
+
return StandardNumericToDecimalCast<int8_t, int64_t>(input, result, parameters, width, scale);
|
|
2134
2203
|
}
|
|
2135
2204
|
template <>
|
|
2136
|
-
bool TryCastToDecimal::Operation(int8_t input, hugeint_t &result,
|
|
2137
|
-
|
|
2205
|
+
bool TryCastToDecimal::Operation(int8_t input, hugeint_t &result, CastParameters ¶meters, uint8_t width,
|
|
2206
|
+
uint8_t scale) {
|
|
2207
|
+
return NumericToHugeDecimalCast<int8_t>(input, result, parameters, width, scale);
|
|
2138
2208
|
}
|
|
2139
2209
|
|
|
2140
2210
|
//===--------------------------------------------------------------------===//
|
|
2141
2211
|
// Cast int16_t -> Decimal
|
|
2142
2212
|
//===--------------------------------------------------------------------===//
|
|
2143
2213
|
template <>
|
|
2144
|
-
bool TryCastToDecimal::Operation(int16_t input, int16_t &result,
|
|
2145
|
-
|
|
2214
|
+
bool TryCastToDecimal::Operation(int16_t input, int16_t &result, CastParameters ¶meters, uint8_t width,
|
|
2215
|
+
uint8_t scale) {
|
|
2216
|
+
return StandardNumericToDecimalCast<int16_t, int16_t>(input, result, parameters, width, scale);
|
|
2146
2217
|
}
|
|
2147
2218
|
template <>
|
|
2148
|
-
bool TryCastToDecimal::Operation(int16_t input, int32_t &result,
|
|
2149
|
-
|
|
2219
|
+
bool TryCastToDecimal::Operation(int16_t input, int32_t &result, CastParameters ¶meters, uint8_t width,
|
|
2220
|
+
uint8_t scale) {
|
|
2221
|
+
return StandardNumericToDecimalCast<int16_t, int32_t>(input, result, parameters, width, scale);
|
|
2150
2222
|
}
|
|
2151
2223
|
template <>
|
|
2152
|
-
bool TryCastToDecimal::Operation(int16_t input, int64_t &result,
|
|
2153
|
-
|
|
2224
|
+
bool TryCastToDecimal::Operation(int16_t input, int64_t &result, CastParameters ¶meters, uint8_t width,
|
|
2225
|
+
uint8_t scale) {
|
|
2226
|
+
return StandardNumericToDecimalCast<int16_t, int64_t>(input, result, parameters, width, scale);
|
|
2154
2227
|
}
|
|
2155
2228
|
template <>
|
|
2156
|
-
bool TryCastToDecimal::Operation(int16_t input, hugeint_t &result,
|
|
2229
|
+
bool TryCastToDecimal::Operation(int16_t input, hugeint_t &result, CastParameters ¶meters, uint8_t width,
|
|
2157
2230
|
uint8_t scale) {
|
|
2158
|
-
return NumericToHugeDecimalCast<int16_t>(input, result,
|
|
2231
|
+
return NumericToHugeDecimalCast<int16_t>(input, result, parameters, width, scale);
|
|
2159
2232
|
}
|
|
2160
2233
|
|
|
2161
2234
|
//===--------------------------------------------------------------------===//
|
|
2162
2235
|
// Cast int32_t -> Decimal
|
|
2163
2236
|
//===--------------------------------------------------------------------===//
|
|
2164
2237
|
template <>
|
|
2165
|
-
bool TryCastToDecimal::Operation(int32_t input, int16_t &result,
|
|
2166
|
-
|
|
2238
|
+
bool TryCastToDecimal::Operation(int32_t input, int16_t &result, CastParameters ¶meters, uint8_t width,
|
|
2239
|
+
uint8_t scale) {
|
|
2240
|
+
return StandardNumericToDecimalCast<int32_t, int16_t>(input, result, parameters, width, scale);
|
|
2167
2241
|
}
|
|
2168
2242
|
template <>
|
|
2169
|
-
bool TryCastToDecimal::Operation(int32_t input, int32_t &result,
|
|
2170
|
-
|
|
2243
|
+
bool TryCastToDecimal::Operation(int32_t input, int32_t &result, CastParameters ¶meters, uint8_t width,
|
|
2244
|
+
uint8_t scale) {
|
|
2245
|
+
return StandardNumericToDecimalCast<int32_t, int32_t>(input, result, parameters, width, scale);
|
|
2171
2246
|
}
|
|
2172
2247
|
template <>
|
|
2173
|
-
bool TryCastToDecimal::Operation(int32_t input, int64_t &result,
|
|
2174
|
-
|
|
2248
|
+
bool TryCastToDecimal::Operation(int32_t input, int64_t &result, CastParameters ¶meters, uint8_t width,
|
|
2249
|
+
uint8_t scale) {
|
|
2250
|
+
return StandardNumericToDecimalCast<int32_t, int64_t>(input, result, parameters, width, scale);
|
|
2175
2251
|
}
|
|
2176
2252
|
template <>
|
|
2177
|
-
bool TryCastToDecimal::Operation(int32_t input, hugeint_t &result,
|
|
2253
|
+
bool TryCastToDecimal::Operation(int32_t input, hugeint_t &result, CastParameters ¶meters, uint8_t width,
|
|
2178
2254
|
uint8_t scale) {
|
|
2179
|
-
return NumericToHugeDecimalCast<int32_t>(input, result,
|
|
2255
|
+
return NumericToHugeDecimalCast<int32_t>(input, result, parameters, width, scale);
|
|
2180
2256
|
}
|
|
2181
2257
|
|
|
2182
2258
|
//===--------------------------------------------------------------------===//
|
|
2183
2259
|
// Cast int64_t -> Decimal
|
|
2184
2260
|
//===--------------------------------------------------------------------===//
|
|
2185
2261
|
template <>
|
|
2186
|
-
bool TryCastToDecimal::Operation(int64_t input, int16_t &result,
|
|
2187
|
-
|
|
2262
|
+
bool TryCastToDecimal::Operation(int64_t input, int16_t &result, CastParameters ¶meters, uint8_t width,
|
|
2263
|
+
uint8_t scale) {
|
|
2264
|
+
return StandardNumericToDecimalCast<int64_t, int16_t>(input, result, parameters, width, scale);
|
|
2188
2265
|
}
|
|
2189
2266
|
template <>
|
|
2190
|
-
bool TryCastToDecimal::Operation(int64_t input, int32_t &result,
|
|
2191
|
-
|
|
2267
|
+
bool TryCastToDecimal::Operation(int64_t input, int32_t &result, CastParameters ¶meters, uint8_t width,
|
|
2268
|
+
uint8_t scale) {
|
|
2269
|
+
return StandardNumericToDecimalCast<int64_t, int32_t>(input, result, parameters, width, scale);
|
|
2192
2270
|
}
|
|
2193
2271
|
template <>
|
|
2194
|
-
bool TryCastToDecimal::Operation(int64_t input, int64_t &result,
|
|
2195
|
-
|
|
2272
|
+
bool TryCastToDecimal::Operation(int64_t input, int64_t &result, CastParameters ¶meters, uint8_t width,
|
|
2273
|
+
uint8_t scale) {
|
|
2274
|
+
return StandardNumericToDecimalCast<int64_t, int64_t>(input, result, parameters, width, scale);
|
|
2196
2275
|
}
|
|
2197
2276
|
template <>
|
|
2198
|
-
bool TryCastToDecimal::Operation(int64_t input, hugeint_t &result,
|
|
2277
|
+
bool TryCastToDecimal::Operation(int64_t input, hugeint_t &result, CastParameters ¶meters, uint8_t width,
|
|
2199
2278
|
uint8_t scale) {
|
|
2200
|
-
return NumericToHugeDecimalCast<int64_t>(input, result,
|
|
2279
|
+
return NumericToHugeDecimalCast<int64_t>(input, result, parameters, width, scale);
|
|
2201
2280
|
}
|
|
2202
2281
|
|
|
2203
2282
|
//===--------------------------------------------------------------------===//
|
|
2204
2283
|
// Cast uint8_t -> Decimal
|
|
2205
2284
|
//===--------------------------------------------------------------------===//
|
|
2206
2285
|
template <>
|
|
2207
|
-
bool TryCastToDecimal::Operation(uint8_t input, int16_t &result,
|
|
2208
|
-
|
|
2209
|
-
|
|
2286
|
+
bool TryCastToDecimal::Operation(uint8_t input, int16_t &result, CastParameters ¶meters, uint8_t width,
|
|
2287
|
+
uint8_t scale) {
|
|
2288
|
+
return StandardNumericToDecimalCast<uint8_t, int16_t, UnsignedToDecimalOperator>(input, result, parameters, width,
|
|
2289
|
+
scale);
|
|
2210
2290
|
}
|
|
2211
2291
|
template <>
|
|
2212
|
-
bool TryCastToDecimal::Operation(uint8_t input, int32_t &result,
|
|
2213
|
-
|
|
2214
|
-
|
|
2292
|
+
bool TryCastToDecimal::Operation(uint8_t input, int32_t &result, CastParameters ¶meters, uint8_t width,
|
|
2293
|
+
uint8_t scale) {
|
|
2294
|
+
return StandardNumericToDecimalCast<uint8_t, int32_t, UnsignedToDecimalOperator>(input, result, parameters, width,
|
|
2295
|
+
scale);
|
|
2215
2296
|
}
|
|
2216
2297
|
template <>
|
|
2217
|
-
bool TryCastToDecimal::Operation(uint8_t input, int64_t &result,
|
|
2218
|
-
|
|
2219
|
-
|
|
2298
|
+
bool TryCastToDecimal::Operation(uint8_t input, int64_t &result, CastParameters ¶meters, uint8_t width,
|
|
2299
|
+
uint8_t scale) {
|
|
2300
|
+
return StandardNumericToDecimalCast<uint8_t, int64_t, UnsignedToDecimalOperator>(input, result, parameters, width,
|
|
2301
|
+
scale);
|
|
2220
2302
|
}
|
|
2221
2303
|
template <>
|
|
2222
|
-
bool TryCastToDecimal::Operation(uint8_t input, hugeint_t &result,
|
|
2304
|
+
bool TryCastToDecimal::Operation(uint8_t input, hugeint_t &result, CastParameters ¶meters, uint8_t width,
|
|
2223
2305
|
uint8_t scale) {
|
|
2224
|
-
return NumericToHugeDecimalCast<uint8_t>(input, result,
|
|
2306
|
+
return NumericToHugeDecimalCast<uint8_t>(input, result, parameters, width, scale);
|
|
2225
2307
|
}
|
|
2226
2308
|
|
|
2227
2309
|
//===--------------------------------------------------------------------===//
|
|
2228
2310
|
// Cast uint16_t -> Decimal
|
|
2229
2311
|
//===--------------------------------------------------------------------===//
|
|
2230
2312
|
template <>
|
|
2231
|
-
bool TryCastToDecimal::Operation(uint16_t input, int16_t &result,
|
|
2232
|
-
|
|
2233
|
-
|
|
2313
|
+
bool TryCastToDecimal::Operation(uint16_t input, int16_t &result, CastParameters ¶meters, uint8_t width,
|
|
2314
|
+
uint8_t scale) {
|
|
2315
|
+
return StandardNumericToDecimalCast<uint16_t, int16_t, UnsignedToDecimalOperator>(input, result, parameters, width,
|
|
2316
|
+
scale);
|
|
2234
2317
|
}
|
|
2235
2318
|
template <>
|
|
2236
|
-
bool TryCastToDecimal::Operation(uint16_t input, int32_t &result,
|
|
2237
|
-
|
|
2238
|
-
|
|
2319
|
+
bool TryCastToDecimal::Operation(uint16_t input, int32_t &result, CastParameters ¶meters, uint8_t width,
|
|
2320
|
+
uint8_t scale) {
|
|
2321
|
+
return StandardNumericToDecimalCast<uint16_t, int32_t, UnsignedToDecimalOperator>(input, result, parameters, width,
|
|
2322
|
+
scale);
|
|
2239
2323
|
}
|
|
2240
2324
|
template <>
|
|
2241
|
-
bool TryCastToDecimal::Operation(uint16_t input, int64_t &result,
|
|
2242
|
-
|
|
2243
|
-
|
|
2325
|
+
bool TryCastToDecimal::Operation(uint16_t input, int64_t &result, CastParameters ¶meters, uint8_t width,
|
|
2326
|
+
uint8_t scale) {
|
|
2327
|
+
return StandardNumericToDecimalCast<uint16_t, int64_t, UnsignedToDecimalOperator>(input, result, parameters, width,
|
|
2328
|
+
scale);
|
|
2244
2329
|
}
|
|
2245
2330
|
template <>
|
|
2246
|
-
bool TryCastToDecimal::Operation(uint16_t input, hugeint_t &result,
|
|
2331
|
+
bool TryCastToDecimal::Operation(uint16_t input, hugeint_t &result, CastParameters ¶meters, uint8_t width,
|
|
2247
2332
|
uint8_t scale) {
|
|
2248
|
-
return NumericToHugeDecimalCast<uint16_t>(input, result,
|
|
2333
|
+
return NumericToHugeDecimalCast<uint16_t>(input, result, parameters, width, scale);
|
|
2249
2334
|
}
|
|
2250
2335
|
|
|
2251
2336
|
//===--------------------------------------------------------------------===//
|
|
2252
2337
|
// Cast uint32_t -> Decimal
|
|
2253
2338
|
//===--------------------------------------------------------------------===//
|
|
2254
2339
|
template <>
|
|
2255
|
-
bool TryCastToDecimal::Operation(uint32_t input, int16_t &result,
|
|
2256
|
-
|
|
2257
|
-
|
|
2340
|
+
bool TryCastToDecimal::Operation(uint32_t input, int16_t &result, CastParameters ¶meters, uint8_t width,
|
|
2341
|
+
uint8_t scale) {
|
|
2342
|
+
return StandardNumericToDecimalCast<uint32_t, int16_t, UnsignedToDecimalOperator>(input, result, parameters, width,
|
|
2343
|
+
scale);
|
|
2258
2344
|
}
|
|
2259
2345
|
template <>
|
|
2260
|
-
bool TryCastToDecimal::Operation(uint32_t input, int32_t &result,
|
|
2261
|
-
|
|
2262
|
-
|
|
2346
|
+
bool TryCastToDecimal::Operation(uint32_t input, int32_t &result, CastParameters ¶meters, uint8_t width,
|
|
2347
|
+
uint8_t scale) {
|
|
2348
|
+
return StandardNumericToDecimalCast<uint32_t, int32_t, UnsignedToDecimalOperator>(input, result, parameters, width,
|
|
2349
|
+
scale);
|
|
2263
2350
|
}
|
|
2264
2351
|
template <>
|
|
2265
|
-
bool TryCastToDecimal::Operation(uint32_t input, int64_t &result,
|
|
2266
|
-
|
|
2267
|
-
|
|
2352
|
+
bool TryCastToDecimal::Operation(uint32_t input, int64_t &result, CastParameters ¶meters, uint8_t width,
|
|
2353
|
+
uint8_t scale) {
|
|
2354
|
+
return StandardNumericToDecimalCast<uint32_t, int64_t, UnsignedToDecimalOperator>(input, result, parameters, width,
|
|
2355
|
+
scale);
|
|
2268
2356
|
}
|
|
2269
2357
|
template <>
|
|
2270
|
-
bool TryCastToDecimal::Operation(uint32_t input, hugeint_t &result,
|
|
2358
|
+
bool TryCastToDecimal::Operation(uint32_t input, hugeint_t &result, CastParameters ¶meters, uint8_t width,
|
|
2271
2359
|
uint8_t scale) {
|
|
2272
|
-
return NumericToHugeDecimalCast<uint32_t>(input, result,
|
|
2360
|
+
return NumericToHugeDecimalCast<uint32_t>(input, result, parameters, width, scale);
|
|
2273
2361
|
}
|
|
2274
2362
|
|
|
2275
2363
|
//===--------------------------------------------------------------------===//
|
|
2276
2364
|
// Cast uint64_t -> Decimal
|
|
2277
2365
|
//===--------------------------------------------------------------------===//
|
|
2278
2366
|
template <>
|
|
2279
|
-
bool TryCastToDecimal::Operation(uint64_t input, int16_t &result,
|
|
2280
|
-
|
|
2281
|
-
|
|
2367
|
+
bool TryCastToDecimal::Operation(uint64_t input, int16_t &result, CastParameters ¶meters, uint8_t width,
|
|
2368
|
+
uint8_t scale) {
|
|
2369
|
+
return StandardNumericToDecimalCast<uint64_t, int16_t, UnsignedToDecimalOperator>(input, result, parameters, width,
|
|
2370
|
+
scale);
|
|
2282
2371
|
}
|
|
2283
2372
|
template <>
|
|
2284
|
-
bool TryCastToDecimal::Operation(uint64_t input, int32_t &result,
|
|
2285
|
-
|
|
2286
|
-
|
|
2373
|
+
bool TryCastToDecimal::Operation(uint64_t input, int32_t &result, CastParameters ¶meters, uint8_t width,
|
|
2374
|
+
uint8_t scale) {
|
|
2375
|
+
return StandardNumericToDecimalCast<uint64_t, int32_t, UnsignedToDecimalOperator>(input, result, parameters, width,
|
|
2376
|
+
scale);
|
|
2287
2377
|
}
|
|
2288
2378
|
template <>
|
|
2289
|
-
bool TryCastToDecimal::Operation(uint64_t input, int64_t &result,
|
|
2290
|
-
|
|
2291
|
-
|
|
2379
|
+
bool TryCastToDecimal::Operation(uint64_t input, int64_t &result, CastParameters ¶meters, uint8_t width,
|
|
2380
|
+
uint8_t scale) {
|
|
2381
|
+
return StandardNumericToDecimalCast<uint64_t, int64_t, UnsignedToDecimalOperator>(input, result, parameters, width,
|
|
2382
|
+
scale);
|
|
2292
2383
|
}
|
|
2293
2384
|
template <>
|
|
2294
|
-
bool TryCastToDecimal::Operation(uint64_t input, hugeint_t &result,
|
|
2385
|
+
bool TryCastToDecimal::Operation(uint64_t input, hugeint_t &result, CastParameters ¶meters, uint8_t width,
|
|
2295
2386
|
uint8_t scale) {
|
|
2296
|
-
return NumericToHugeDecimalCast<uint64_t>(input, result,
|
|
2387
|
+
return NumericToHugeDecimalCast<uint64_t>(input, result, parameters, width, scale);
|
|
2297
2388
|
}
|
|
2298
2389
|
|
|
2299
2390
|
//===--------------------------------------------------------------------===//
|
|
2300
2391
|
// Hugeint -> Decimal Cast
|
|
2301
2392
|
//===--------------------------------------------------------------------===//
|
|
2302
2393
|
template <class DST>
|
|
2303
|
-
bool HugeintToDecimalCast(hugeint_t input, DST &result,
|
|
2394
|
+
bool HugeintToDecimalCast(hugeint_t input, DST &result, CastParameters ¶meters, uint8_t width, uint8_t scale) {
|
|
2304
2395
|
// check for overflow
|
|
2305
2396
|
hugeint_t max_width = Hugeint::POWERS_OF_TEN[width - scale];
|
|
2306
2397
|
if (input >= max_width || input <= -max_width) {
|
|
2307
2398
|
string error = StringUtil::Format("Could not cast value %s to DECIMAL(%d,%d)", input.ToString(), width, scale);
|
|
2308
|
-
HandleCastError::AssignError(error,
|
|
2399
|
+
HandleCastError::AssignError(error, parameters);
|
|
2309
2400
|
return false;
|
|
2310
2401
|
}
|
|
2311
2402
|
result = Hugeint::Cast<DST>(input * Hugeint::POWERS_OF_TEN[scale]);
|
|
@@ -2313,39 +2404,39 @@ bool HugeintToDecimalCast(hugeint_t input, DST &result, string *error_message, u
|
|
|
2313
2404
|
}
|
|
2314
2405
|
|
|
2315
2406
|
template <>
|
|
2316
|
-
bool TryCastToDecimal::Operation(hugeint_t input, int16_t &result,
|
|
2407
|
+
bool TryCastToDecimal::Operation(hugeint_t input, int16_t &result, CastParameters ¶meters, uint8_t width,
|
|
2317
2408
|
uint8_t scale) {
|
|
2318
|
-
return HugeintToDecimalCast<int16_t>(input, result,
|
|
2409
|
+
return HugeintToDecimalCast<int16_t>(input, result, parameters, width, scale);
|
|
2319
2410
|
}
|
|
2320
2411
|
|
|
2321
2412
|
template <>
|
|
2322
|
-
bool TryCastToDecimal::Operation(hugeint_t input, int32_t &result,
|
|
2413
|
+
bool TryCastToDecimal::Operation(hugeint_t input, int32_t &result, CastParameters ¶meters, uint8_t width,
|
|
2323
2414
|
uint8_t scale) {
|
|
2324
|
-
return HugeintToDecimalCast<int32_t>(input, result,
|
|
2415
|
+
return HugeintToDecimalCast<int32_t>(input, result, parameters, width, scale);
|
|
2325
2416
|
}
|
|
2326
2417
|
|
|
2327
2418
|
template <>
|
|
2328
|
-
bool TryCastToDecimal::Operation(hugeint_t input, int64_t &result,
|
|
2419
|
+
bool TryCastToDecimal::Operation(hugeint_t input, int64_t &result, CastParameters ¶meters, uint8_t width,
|
|
2329
2420
|
uint8_t scale) {
|
|
2330
|
-
return HugeintToDecimalCast<int64_t>(input, result,
|
|
2421
|
+
return HugeintToDecimalCast<int64_t>(input, result, parameters, width, scale);
|
|
2331
2422
|
}
|
|
2332
2423
|
|
|
2333
2424
|
template <>
|
|
2334
|
-
bool TryCastToDecimal::Operation(hugeint_t input, hugeint_t &result,
|
|
2425
|
+
bool TryCastToDecimal::Operation(hugeint_t input, hugeint_t &result, CastParameters ¶meters, uint8_t width,
|
|
2335
2426
|
uint8_t scale) {
|
|
2336
|
-
return HugeintToDecimalCast<hugeint_t>(input, result,
|
|
2427
|
+
return HugeintToDecimalCast<hugeint_t>(input, result, parameters, width, scale);
|
|
2337
2428
|
}
|
|
2338
2429
|
|
|
2339
2430
|
//===--------------------------------------------------------------------===//
|
|
2340
2431
|
// Uhugeint -> Decimal Cast
|
|
2341
2432
|
//===--------------------------------------------------------------------===//
|
|
2342
2433
|
template <class DST>
|
|
2343
|
-
bool UhugeintToDecimalCast(uhugeint_t input, DST &result,
|
|
2434
|
+
bool UhugeintToDecimalCast(uhugeint_t input, DST &result, CastParameters ¶meters, uint8_t width, uint8_t scale) {
|
|
2344
2435
|
// check for overflow
|
|
2345
2436
|
uhugeint_t max_width = Uhugeint::POWERS_OF_TEN[width - scale];
|
|
2346
2437
|
if (input >= max_width) {
|
|
2347
2438
|
string error = StringUtil::Format("Could not cast value %s to DECIMAL(%d,%d)", input.ToString(), width, scale);
|
|
2348
|
-
HandleCastError::AssignError(error,
|
|
2439
|
+
HandleCastError::AssignError(error, parameters);
|
|
2349
2440
|
return false;
|
|
2350
2441
|
}
|
|
2351
2442
|
result = Uhugeint::Cast<DST>(input * Uhugeint::POWERS_OF_TEN[scale]);
|
|
@@ -2353,41 +2444,41 @@ bool UhugeintToDecimalCast(uhugeint_t input, DST &result, string *error_message,
|
|
|
2353
2444
|
}
|
|
2354
2445
|
|
|
2355
2446
|
template <>
|
|
2356
|
-
bool TryCastToDecimal::Operation(uhugeint_t input, int16_t &result,
|
|
2447
|
+
bool TryCastToDecimal::Operation(uhugeint_t input, int16_t &result, CastParameters ¶meters, uint8_t width,
|
|
2357
2448
|
uint8_t scale) {
|
|
2358
|
-
return UhugeintToDecimalCast<int16_t>(input, result,
|
|
2449
|
+
return UhugeintToDecimalCast<int16_t>(input, result, parameters, width, scale);
|
|
2359
2450
|
}
|
|
2360
2451
|
|
|
2361
2452
|
template <>
|
|
2362
|
-
bool TryCastToDecimal::Operation(uhugeint_t input, int32_t &result,
|
|
2453
|
+
bool TryCastToDecimal::Operation(uhugeint_t input, int32_t &result, CastParameters ¶meters, uint8_t width,
|
|
2363
2454
|
uint8_t scale) {
|
|
2364
|
-
return UhugeintToDecimalCast<int32_t>(input, result,
|
|
2455
|
+
return UhugeintToDecimalCast<int32_t>(input, result, parameters, width, scale);
|
|
2365
2456
|
}
|
|
2366
2457
|
|
|
2367
2458
|
template <>
|
|
2368
|
-
bool TryCastToDecimal::Operation(uhugeint_t input, int64_t &result,
|
|
2459
|
+
bool TryCastToDecimal::Operation(uhugeint_t input, int64_t &result, CastParameters ¶meters, uint8_t width,
|
|
2369
2460
|
uint8_t scale) {
|
|
2370
|
-
return UhugeintToDecimalCast<int64_t>(input, result,
|
|
2461
|
+
return UhugeintToDecimalCast<int64_t>(input, result, parameters, width, scale);
|
|
2371
2462
|
}
|
|
2372
2463
|
|
|
2373
2464
|
template <>
|
|
2374
|
-
bool TryCastToDecimal::Operation(uhugeint_t input, hugeint_t &result,
|
|
2465
|
+
bool TryCastToDecimal::Operation(uhugeint_t input, hugeint_t &result, CastParameters ¶meters, uint8_t width,
|
|
2375
2466
|
uint8_t scale) {
|
|
2376
|
-
return UhugeintToDecimalCast<hugeint_t>(input, result,
|
|
2467
|
+
return UhugeintToDecimalCast<hugeint_t>(input, result, parameters, width, scale);
|
|
2377
2468
|
}
|
|
2378
2469
|
|
|
2379
2470
|
//===--------------------------------------------------------------------===//
|
|
2380
2471
|
// Float/Double -> Decimal Cast
|
|
2381
2472
|
//===--------------------------------------------------------------------===//
|
|
2382
2473
|
template <class SRC, class DST>
|
|
2383
|
-
bool DoubleToDecimalCast(SRC input, DST &result,
|
|
2474
|
+
bool DoubleToDecimalCast(SRC input, DST &result, CastParameters ¶meters, uint8_t width, uint8_t scale) {
|
|
2384
2475
|
double value = input * NumericHelper::DOUBLE_POWERS_OF_TEN[scale];
|
|
2385
2476
|
// Add the sign (-1, 0, 1) times a tiny value to fix floating point issues (issue 3091)
|
|
2386
2477
|
double sign = (double(0) < value) - (value < double(0));
|
|
2387
2478
|
value += 1e-9 * sign;
|
|
2388
2479
|
if (value <= -NumericHelper::DOUBLE_POWERS_OF_TEN[width] || value >= NumericHelper::DOUBLE_POWERS_OF_TEN[width]) {
|
|
2389
2480
|
string error = StringUtil::Format("Could not cast value %f to DECIMAL(%d,%d)", value, width, scale);
|
|
2390
|
-
HandleCastError::AssignError(error,
|
|
2481
|
+
HandleCastError::AssignError(error, parameters);
|
|
2391
2482
|
return false;
|
|
2392
2483
|
}
|
|
2393
2484
|
result = Cast::Operation<SRC, DST>(value);
|
|
@@ -2395,73 +2486,81 @@ bool DoubleToDecimalCast(SRC input, DST &result, string *error_message, uint8_t
|
|
|
2395
2486
|
}
|
|
2396
2487
|
|
|
2397
2488
|
template <>
|
|
2398
|
-
bool TryCastToDecimal::Operation(float input, int16_t &result,
|
|
2399
|
-
|
|
2489
|
+
bool TryCastToDecimal::Operation(float input, int16_t &result, CastParameters ¶meters, uint8_t width,
|
|
2490
|
+
uint8_t scale) {
|
|
2491
|
+
return DoubleToDecimalCast<float, int16_t>(input, result, parameters, width, scale);
|
|
2400
2492
|
}
|
|
2401
2493
|
|
|
2402
2494
|
template <>
|
|
2403
|
-
bool TryCastToDecimal::Operation(float input, int32_t &result,
|
|
2404
|
-
|
|
2495
|
+
bool TryCastToDecimal::Operation(float input, int32_t &result, CastParameters ¶meters, uint8_t width,
|
|
2496
|
+
uint8_t scale) {
|
|
2497
|
+
return DoubleToDecimalCast<float, int32_t>(input, result, parameters, width, scale);
|
|
2405
2498
|
}
|
|
2406
2499
|
|
|
2407
2500
|
template <>
|
|
2408
|
-
bool TryCastToDecimal::Operation(float input, int64_t &result,
|
|
2409
|
-
|
|
2501
|
+
bool TryCastToDecimal::Operation(float input, int64_t &result, CastParameters ¶meters, uint8_t width,
|
|
2502
|
+
uint8_t scale) {
|
|
2503
|
+
return DoubleToDecimalCast<float, int64_t>(input, result, parameters, width, scale);
|
|
2410
2504
|
}
|
|
2411
2505
|
|
|
2412
2506
|
template <>
|
|
2413
|
-
bool TryCastToDecimal::Operation(float input, hugeint_t &result,
|
|
2414
|
-
|
|
2507
|
+
bool TryCastToDecimal::Operation(float input, hugeint_t &result, CastParameters ¶meters, uint8_t width,
|
|
2508
|
+
uint8_t scale) {
|
|
2509
|
+
return DoubleToDecimalCast<float, hugeint_t>(input, result, parameters, width, scale);
|
|
2415
2510
|
}
|
|
2416
2511
|
|
|
2417
2512
|
template <>
|
|
2418
|
-
bool TryCastToDecimal::Operation(double input, int16_t &result,
|
|
2419
|
-
|
|
2513
|
+
bool TryCastToDecimal::Operation(double input, int16_t &result, CastParameters ¶meters, uint8_t width,
|
|
2514
|
+
uint8_t scale) {
|
|
2515
|
+
return DoubleToDecimalCast<double, int16_t>(input, result, parameters, width, scale);
|
|
2420
2516
|
}
|
|
2421
2517
|
|
|
2422
2518
|
template <>
|
|
2423
|
-
bool TryCastToDecimal::Operation(double input, int32_t &result,
|
|
2424
|
-
|
|
2519
|
+
bool TryCastToDecimal::Operation(double input, int32_t &result, CastParameters ¶meters, uint8_t width,
|
|
2520
|
+
uint8_t scale) {
|
|
2521
|
+
return DoubleToDecimalCast<double, int32_t>(input, result, parameters, width, scale);
|
|
2425
2522
|
}
|
|
2426
2523
|
|
|
2427
2524
|
template <>
|
|
2428
|
-
bool TryCastToDecimal::Operation(double input, int64_t &result,
|
|
2429
|
-
|
|
2525
|
+
bool TryCastToDecimal::Operation(double input, int64_t &result, CastParameters ¶meters, uint8_t width,
|
|
2526
|
+
uint8_t scale) {
|
|
2527
|
+
return DoubleToDecimalCast<double, int64_t>(input, result, parameters, width, scale);
|
|
2430
2528
|
}
|
|
2431
2529
|
|
|
2432
2530
|
template <>
|
|
2433
|
-
bool TryCastToDecimal::Operation(double input, hugeint_t &result,
|
|
2434
|
-
|
|
2531
|
+
bool TryCastToDecimal::Operation(double input, hugeint_t &result, CastParameters ¶meters, uint8_t width,
|
|
2532
|
+
uint8_t scale) {
|
|
2533
|
+
return DoubleToDecimalCast<double, hugeint_t>(input, result, parameters, width, scale);
|
|
2435
2534
|
}
|
|
2436
2535
|
|
|
2437
2536
|
//===--------------------------------------------------------------------===//
|
|
2438
2537
|
// Decimal -> Numeric Cast
|
|
2439
2538
|
//===--------------------------------------------------------------------===//
|
|
2440
2539
|
template <class SRC, class DST>
|
|
2441
|
-
bool TryCastDecimalToNumeric(SRC input, DST &result,
|
|
2540
|
+
bool TryCastDecimalToNumeric(SRC input, DST &result, CastParameters ¶meters, uint8_t scale) {
|
|
2442
2541
|
// Round away from 0.
|
|
2443
2542
|
const auto power = NumericHelper::POWERS_OF_TEN[scale];
|
|
2444
2543
|
// https://graphics.stanford.edu/~seander/bithacks.html#ConditionalNegate
|
|
2445
2544
|
const auto fNegate = int64_t(input < 0);
|
|
2446
2545
|
const auto rounding = ((power ^ -fNegate) + fNegate) / 2;
|
|
2447
2546
|
const auto scaled_value = (input + rounding) / power;
|
|
2448
|
-
if (!TryCast::Operation<SRC, DST>(scaled_value, result)) {
|
|
2547
|
+
if (!TryCast::Operation<SRC, DST>(UnsafeNumericCast<SRC>(scaled_value), result)) {
|
|
2449
2548
|
string error = StringUtil::Format("Failed to cast decimal value %d to type %s", scaled_value, GetTypeId<DST>());
|
|
2450
|
-
HandleCastError::AssignError(error,
|
|
2549
|
+
HandleCastError::AssignError(error, parameters);
|
|
2451
2550
|
return false;
|
|
2452
2551
|
}
|
|
2453
2552
|
return true;
|
|
2454
2553
|
}
|
|
2455
2554
|
|
|
2456
2555
|
template <class DST>
|
|
2457
|
-
bool TryCastHugeDecimalToNumeric(hugeint_t input, DST &result,
|
|
2556
|
+
bool TryCastHugeDecimalToNumeric(hugeint_t input, DST &result, CastParameters ¶meters, uint8_t scale) {
|
|
2458
2557
|
const auto power = Hugeint::POWERS_OF_TEN[scale];
|
|
2459
2558
|
const auto rounding = ((input < 0) ? -power : power) / 2;
|
|
2460
2559
|
auto scaled_value = (input + rounding) / power;
|
|
2461
2560
|
if (!TryCast::Operation<hugeint_t, DST>(scaled_value, result)) {
|
|
2462
2561
|
string error = StringUtil::Format("Failed to cast decimal value %s to type %s",
|
|
2463
2562
|
ConvertToString::Operation(scaled_value), GetTypeId<DST>());
|
|
2464
|
-
HandleCastError::AssignError(error,
|
|
2563
|
+
HandleCastError::AssignError(error, parameters);
|
|
2465
2564
|
return false;
|
|
2466
2565
|
}
|
|
2467
2566
|
return true;
|
|
@@ -2471,237 +2570,240 @@ bool TryCastHugeDecimalToNumeric(hugeint_t input, DST &result, string *error_mes
|
|
|
2471
2570
|
// Cast Decimal -> int8_t
|
|
2472
2571
|
//===--------------------------------------------------------------------===//
|
|
2473
2572
|
template <>
|
|
2474
|
-
bool TryCastFromDecimal::Operation(int16_t input, int8_t &result,
|
|
2475
|
-
|
|
2573
|
+
bool TryCastFromDecimal::Operation(int16_t input, int8_t &result, CastParameters ¶meters, uint8_t width,
|
|
2574
|
+
uint8_t scale) {
|
|
2575
|
+
return TryCastDecimalToNumeric<int16_t, int8_t>(input, result, parameters, scale);
|
|
2476
2576
|
}
|
|
2477
2577
|
template <>
|
|
2478
|
-
bool TryCastFromDecimal::Operation(int32_t input, int8_t &result,
|
|
2479
|
-
|
|
2578
|
+
bool TryCastFromDecimal::Operation(int32_t input, int8_t &result, CastParameters ¶meters, uint8_t width,
|
|
2579
|
+
uint8_t scale) {
|
|
2580
|
+
return TryCastDecimalToNumeric<int32_t, int8_t>(input, result, parameters, scale);
|
|
2480
2581
|
}
|
|
2481
2582
|
template <>
|
|
2482
|
-
bool TryCastFromDecimal::Operation(int64_t input, int8_t &result,
|
|
2483
|
-
|
|
2583
|
+
bool TryCastFromDecimal::Operation(int64_t input, int8_t &result, CastParameters ¶meters, uint8_t width,
|
|
2584
|
+
uint8_t scale) {
|
|
2585
|
+
return TryCastDecimalToNumeric<int64_t, int8_t>(input, result, parameters, scale);
|
|
2484
2586
|
}
|
|
2485
2587
|
template <>
|
|
2486
|
-
bool TryCastFromDecimal::Operation(hugeint_t input, int8_t &result,
|
|
2588
|
+
bool TryCastFromDecimal::Operation(hugeint_t input, int8_t &result, CastParameters ¶meters, uint8_t width,
|
|
2487
2589
|
uint8_t scale) {
|
|
2488
|
-
return TryCastHugeDecimalToNumeric<int8_t>(input, result,
|
|
2590
|
+
return TryCastHugeDecimalToNumeric<int8_t>(input, result, parameters, scale);
|
|
2489
2591
|
}
|
|
2490
2592
|
|
|
2491
2593
|
//===--------------------------------------------------------------------===//
|
|
2492
2594
|
// Cast Decimal -> int16_t
|
|
2493
2595
|
//===--------------------------------------------------------------------===//
|
|
2494
2596
|
template <>
|
|
2495
|
-
bool TryCastFromDecimal::Operation(int16_t input, int16_t &result,
|
|
2597
|
+
bool TryCastFromDecimal::Operation(int16_t input, int16_t &result, CastParameters ¶meters, uint8_t width,
|
|
2496
2598
|
uint8_t scale) {
|
|
2497
|
-
return TryCastDecimalToNumeric<int16_t, int16_t>(input, result,
|
|
2599
|
+
return TryCastDecimalToNumeric<int16_t, int16_t>(input, result, parameters, scale);
|
|
2498
2600
|
}
|
|
2499
2601
|
template <>
|
|
2500
|
-
bool TryCastFromDecimal::Operation(int32_t input, int16_t &result,
|
|
2602
|
+
bool TryCastFromDecimal::Operation(int32_t input, int16_t &result, CastParameters ¶meters, uint8_t width,
|
|
2501
2603
|
uint8_t scale) {
|
|
2502
|
-
return TryCastDecimalToNumeric<int32_t, int16_t>(input, result,
|
|
2604
|
+
return TryCastDecimalToNumeric<int32_t, int16_t>(input, result, parameters, scale);
|
|
2503
2605
|
}
|
|
2504
2606
|
template <>
|
|
2505
|
-
bool TryCastFromDecimal::Operation(int64_t input, int16_t &result,
|
|
2607
|
+
bool TryCastFromDecimal::Operation(int64_t input, int16_t &result, CastParameters ¶meters, uint8_t width,
|
|
2506
2608
|
uint8_t scale) {
|
|
2507
|
-
return TryCastDecimalToNumeric<int64_t, int16_t>(input, result,
|
|
2609
|
+
return TryCastDecimalToNumeric<int64_t, int16_t>(input, result, parameters, scale);
|
|
2508
2610
|
}
|
|
2509
2611
|
template <>
|
|
2510
|
-
bool TryCastFromDecimal::Operation(hugeint_t input, int16_t &result,
|
|
2612
|
+
bool TryCastFromDecimal::Operation(hugeint_t input, int16_t &result, CastParameters ¶meters, uint8_t width,
|
|
2511
2613
|
uint8_t scale) {
|
|
2512
|
-
return TryCastHugeDecimalToNumeric<int16_t>(input, result,
|
|
2614
|
+
return TryCastHugeDecimalToNumeric<int16_t>(input, result, parameters, scale);
|
|
2513
2615
|
}
|
|
2514
2616
|
|
|
2515
2617
|
//===--------------------------------------------------------------------===//
|
|
2516
2618
|
// Cast Decimal -> int32_t
|
|
2517
2619
|
//===--------------------------------------------------------------------===//
|
|
2518
2620
|
template <>
|
|
2519
|
-
bool TryCastFromDecimal::Operation(int16_t input, int32_t &result,
|
|
2621
|
+
bool TryCastFromDecimal::Operation(int16_t input, int32_t &result, CastParameters ¶meters, uint8_t width,
|
|
2520
2622
|
uint8_t scale) {
|
|
2521
|
-
return TryCastDecimalToNumeric<int16_t, int32_t>(input, result,
|
|
2623
|
+
return TryCastDecimalToNumeric<int16_t, int32_t>(input, result, parameters, scale);
|
|
2522
2624
|
}
|
|
2523
2625
|
template <>
|
|
2524
|
-
bool TryCastFromDecimal::Operation(int32_t input, int32_t &result,
|
|
2626
|
+
bool TryCastFromDecimal::Operation(int32_t input, int32_t &result, CastParameters ¶meters, uint8_t width,
|
|
2525
2627
|
uint8_t scale) {
|
|
2526
|
-
return TryCastDecimalToNumeric<int32_t, int32_t>(input, result,
|
|
2628
|
+
return TryCastDecimalToNumeric<int32_t, int32_t>(input, result, parameters, scale);
|
|
2527
2629
|
}
|
|
2528
2630
|
template <>
|
|
2529
|
-
bool TryCastFromDecimal::Operation(int64_t input, int32_t &result,
|
|
2631
|
+
bool TryCastFromDecimal::Operation(int64_t input, int32_t &result, CastParameters ¶meters, uint8_t width,
|
|
2530
2632
|
uint8_t scale) {
|
|
2531
|
-
return TryCastDecimalToNumeric<int64_t, int32_t>(input, result,
|
|
2633
|
+
return TryCastDecimalToNumeric<int64_t, int32_t>(input, result, parameters, scale);
|
|
2532
2634
|
}
|
|
2533
2635
|
template <>
|
|
2534
|
-
bool TryCastFromDecimal::Operation(hugeint_t input, int32_t &result,
|
|
2636
|
+
bool TryCastFromDecimal::Operation(hugeint_t input, int32_t &result, CastParameters ¶meters, uint8_t width,
|
|
2535
2637
|
uint8_t scale) {
|
|
2536
|
-
return TryCastHugeDecimalToNumeric<int32_t>(input, result,
|
|
2638
|
+
return TryCastHugeDecimalToNumeric<int32_t>(input, result, parameters, scale);
|
|
2537
2639
|
}
|
|
2538
2640
|
|
|
2539
2641
|
//===--------------------------------------------------------------------===//
|
|
2540
2642
|
// Cast Decimal -> int64_t
|
|
2541
2643
|
//===--------------------------------------------------------------------===//
|
|
2542
2644
|
template <>
|
|
2543
|
-
bool TryCastFromDecimal::Operation(int16_t input, int64_t &result,
|
|
2645
|
+
bool TryCastFromDecimal::Operation(int16_t input, int64_t &result, CastParameters ¶meters, uint8_t width,
|
|
2544
2646
|
uint8_t scale) {
|
|
2545
|
-
return TryCastDecimalToNumeric<int16_t, int64_t>(input, result,
|
|
2647
|
+
return TryCastDecimalToNumeric<int16_t, int64_t>(input, result, parameters, scale);
|
|
2546
2648
|
}
|
|
2547
2649
|
template <>
|
|
2548
|
-
bool TryCastFromDecimal::Operation(int32_t input, int64_t &result,
|
|
2650
|
+
bool TryCastFromDecimal::Operation(int32_t input, int64_t &result, CastParameters ¶meters, uint8_t width,
|
|
2549
2651
|
uint8_t scale) {
|
|
2550
|
-
return TryCastDecimalToNumeric<int32_t, int64_t>(input, result,
|
|
2652
|
+
return TryCastDecimalToNumeric<int32_t, int64_t>(input, result, parameters, scale);
|
|
2551
2653
|
}
|
|
2552
2654
|
template <>
|
|
2553
|
-
bool TryCastFromDecimal::Operation(int64_t input, int64_t &result,
|
|
2655
|
+
bool TryCastFromDecimal::Operation(int64_t input, int64_t &result, CastParameters ¶meters, uint8_t width,
|
|
2554
2656
|
uint8_t scale) {
|
|
2555
|
-
return TryCastDecimalToNumeric<int64_t, int64_t>(input, result,
|
|
2657
|
+
return TryCastDecimalToNumeric<int64_t, int64_t>(input, result, parameters, scale);
|
|
2556
2658
|
}
|
|
2557
2659
|
template <>
|
|
2558
|
-
bool TryCastFromDecimal::Operation(hugeint_t input, int64_t &result,
|
|
2660
|
+
bool TryCastFromDecimal::Operation(hugeint_t input, int64_t &result, CastParameters ¶meters, uint8_t width,
|
|
2559
2661
|
uint8_t scale) {
|
|
2560
|
-
return TryCastHugeDecimalToNumeric<int64_t>(input, result,
|
|
2662
|
+
return TryCastHugeDecimalToNumeric<int64_t>(input, result, parameters, scale);
|
|
2561
2663
|
}
|
|
2562
2664
|
|
|
2563
2665
|
//===--------------------------------------------------------------------===//
|
|
2564
2666
|
// Cast Decimal -> uint8_t
|
|
2565
2667
|
//===--------------------------------------------------------------------===//
|
|
2566
2668
|
template <>
|
|
2567
|
-
bool TryCastFromDecimal::Operation(int16_t input, uint8_t &result,
|
|
2669
|
+
bool TryCastFromDecimal::Operation(int16_t input, uint8_t &result, CastParameters ¶meters, uint8_t width,
|
|
2568
2670
|
uint8_t scale) {
|
|
2569
|
-
return TryCastDecimalToNumeric<int16_t, uint8_t>(input, result,
|
|
2671
|
+
return TryCastDecimalToNumeric<int16_t, uint8_t>(input, result, parameters, scale);
|
|
2570
2672
|
}
|
|
2571
2673
|
template <>
|
|
2572
|
-
bool TryCastFromDecimal::Operation(int32_t input, uint8_t &result,
|
|
2674
|
+
bool TryCastFromDecimal::Operation(int32_t input, uint8_t &result, CastParameters ¶meters, uint8_t width,
|
|
2573
2675
|
uint8_t scale) {
|
|
2574
|
-
return TryCastDecimalToNumeric<int32_t, uint8_t>(input, result,
|
|
2676
|
+
return TryCastDecimalToNumeric<int32_t, uint8_t>(input, result, parameters, scale);
|
|
2575
2677
|
}
|
|
2576
2678
|
template <>
|
|
2577
|
-
bool TryCastFromDecimal::Operation(int64_t input, uint8_t &result,
|
|
2679
|
+
bool TryCastFromDecimal::Operation(int64_t input, uint8_t &result, CastParameters ¶meters, uint8_t width,
|
|
2578
2680
|
uint8_t scale) {
|
|
2579
|
-
return TryCastDecimalToNumeric<int64_t, uint8_t>(input, result,
|
|
2681
|
+
return TryCastDecimalToNumeric<int64_t, uint8_t>(input, result, parameters, scale);
|
|
2580
2682
|
}
|
|
2581
2683
|
template <>
|
|
2582
|
-
bool TryCastFromDecimal::Operation(hugeint_t input, uint8_t &result,
|
|
2684
|
+
bool TryCastFromDecimal::Operation(hugeint_t input, uint8_t &result, CastParameters ¶meters, uint8_t width,
|
|
2583
2685
|
uint8_t scale) {
|
|
2584
|
-
return TryCastHugeDecimalToNumeric<uint8_t>(input, result,
|
|
2686
|
+
return TryCastHugeDecimalToNumeric<uint8_t>(input, result, parameters, scale);
|
|
2585
2687
|
}
|
|
2586
2688
|
|
|
2587
2689
|
//===--------------------------------------------------------------------===//
|
|
2588
2690
|
// Cast Decimal -> uint16_t
|
|
2589
2691
|
//===--------------------------------------------------------------------===//
|
|
2590
2692
|
template <>
|
|
2591
|
-
bool TryCastFromDecimal::Operation(int16_t input, uint16_t &result,
|
|
2693
|
+
bool TryCastFromDecimal::Operation(int16_t input, uint16_t &result, CastParameters ¶meters, uint8_t width,
|
|
2592
2694
|
uint8_t scale) {
|
|
2593
|
-
return TryCastDecimalToNumeric<int16_t, uint16_t>(input, result,
|
|
2695
|
+
return TryCastDecimalToNumeric<int16_t, uint16_t>(input, result, parameters, scale);
|
|
2594
2696
|
}
|
|
2595
2697
|
template <>
|
|
2596
|
-
bool TryCastFromDecimal::Operation(int32_t input, uint16_t &result,
|
|
2698
|
+
bool TryCastFromDecimal::Operation(int32_t input, uint16_t &result, CastParameters ¶meters, uint8_t width,
|
|
2597
2699
|
uint8_t scale) {
|
|
2598
|
-
return TryCastDecimalToNumeric<int32_t, uint16_t>(input, result,
|
|
2700
|
+
return TryCastDecimalToNumeric<int32_t, uint16_t>(input, result, parameters, scale);
|
|
2599
2701
|
}
|
|
2600
2702
|
template <>
|
|
2601
|
-
bool TryCastFromDecimal::Operation(int64_t input, uint16_t &result,
|
|
2703
|
+
bool TryCastFromDecimal::Operation(int64_t input, uint16_t &result, CastParameters ¶meters, uint8_t width,
|
|
2602
2704
|
uint8_t scale) {
|
|
2603
|
-
return TryCastDecimalToNumeric<int64_t, uint16_t>(input, result,
|
|
2705
|
+
return TryCastDecimalToNumeric<int64_t, uint16_t>(input, result, parameters, scale);
|
|
2604
2706
|
}
|
|
2605
2707
|
template <>
|
|
2606
|
-
bool TryCastFromDecimal::Operation(hugeint_t input, uint16_t &result,
|
|
2708
|
+
bool TryCastFromDecimal::Operation(hugeint_t input, uint16_t &result, CastParameters ¶meters, uint8_t width,
|
|
2607
2709
|
uint8_t scale) {
|
|
2608
|
-
return TryCastHugeDecimalToNumeric<uint16_t>(input, result,
|
|
2710
|
+
return TryCastHugeDecimalToNumeric<uint16_t>(input, result, parameters, scale);
|
|
2609
2711
|
}
|
|
2610
2712
|
|
|
2611
2713
|
//===--------------------------------------------------------------------===//
|
|
2612
2714
|
// Cast Decimal -> uint32_t
|
|
2613
2715
|
//===--------------------------------------------------------------------===//
|
|
2614
2716
|
template <>
|
|
2615
|
-
bool TryCastFromDecimal::Operation(int16_t input, uint32_t &result,
|
|
2717
|
+
bool TryCastFromDecimal::Operation(int16_t input, uint32_t &result, CastParameters ¶meters, uint8_t width,
|
|
2616
2718
|
uint8_t scale) {
|
|
2617
|
-
return TryCastDecimalToNumeric<int16_t, uint32_t>(input, result,
|
|
2719
|
+
return TryCastDecimalToNumeric<int16_t, uint32_t>(input, result, parameters, scale);
|
|
2618
2720
|
}
|
|
2619
2721
|
template <>
|
|
2620
|
-
bool TryCastFromDecimal::Operation(int32_t input, uint32_t &result,
|
|
2722
|
+
bool TryCastFromDecimal::Operation(int32_t input, uint32_t &result, CastParameters ¶meters, uint8_t width,
|
|
2621
2723
|
uint8_t scale) {
|
|
2622
|
-
return TryCastDecimalToNumeric<int32_t, uint32_t>(input, result,
|
|
2724
|
+
return TryCastDecimalToNumeric<int32_t, uint32_t>(input, result, parameters, scale);
|
|
2623
2725
|
}
|
|
2624
2726
|
template <>
|
|
2625
|
-
bool TryCastFromDecimal::Operation(int64_t input, uint32_t &result,
|
|
2727
|
+
bool TryCastFromDecimal::Operation(int64_t input, uint32_t &result, CastParameters ¶meters, uint8_t width,
|
|
2626
2728
|
uint8_t scale) {
|
|
2627
|
-
return TryCastDecimalToNumeric<int64_t, uint32_t>(input, result,
|
|
2729
|
+
return TryCastDecimalToNumeric<int64_t, uint32_t>(input, result, parameters, scale);
|
|
2628
2730
|
}
|
|
2629
2731
|
template <>
|
|
2630
|
-
bool TryCastFromDecimal::Operation(hugeint_t input, uint32_t &result,
|
|
2732
|
+
bool TryCastFromDecimal::Operation(hugeint_t input, uint32_t &result, CastParameters ¶meters, uint8_t width,
|
|
2631
2733
|
uint8_t scale) {
|
|
2632
|
-
return TryCastHugeDecimalToNumeric<uint32_t>(input, result,
|
|
2734
|
+
return TryCastHugeDecimalToNumeric<uint32_t>(input, result, parameters, scale);
|
|
2633
2735
|
}
|
|
2634
2736
|
|
|
2635
2737
|
//===--------------------------------------------------------------------===//
|
|
2636
2738
|
// Cast Decimal -> uint64_t
|
|
2637
2739
|
//===--------------------------------------------------------------------===//
|
|
2638
2740
|
template <>
|
|
2639
|
-
bool TryCastFromDecimal::Operation(int16_t input, uint64_t &result,
|
|
2741
|
+
bool TryCastFromDecimal::Operation(int16_t input, uint64_t &result, CastParameters ¶meters, uint8_t width,
|
|
2640
2742
|
uint8_t scale) {
|
|
2641
|
-
return TryCastDecimalToNumeric<int16_t, uint64_t>(input, result,
|
|
2743
|
+
return TryCastDecimalToNumeric<int16_t, uint64_t>(input, result, parameters, scale);
|
|
2642
2744
|
}
|
|
2643
2745
|
template <>
|
|
2644
|
-
bool TryCastFromDecimal::Operation(int32_t input, uint64_t &result,
|
|
2746
|
+
bool TryCastFromDecimal::Operation(int32_t input, uint64_t &result, CastParameters ¶meters, uint8_t width,
|
|
2645
2747
|
uint8_t scale) {
|
|
2646
|
-
return TryCastDecimalToNumeric<int32_t, uint64_t>(input, result,
|
|
2748
|
+
return TryCastDecimalToNumeric<int32_t, uint64_t>(input, result, parameters, scale);
|
|
2647
2749
|
}
|
|
2648
2750
|
template <>
|
|
2649
|
-
bool TryCastFromDecimal::Operation(int64_t input, uint64_t &result,
|
|
2751
|
+
bool TryCastFromDecimal::Operation(int64_t input, uint64_t &result, CastParameters ¶meters, uint8_t width,
|
|
2650
2752
|
uint8_t scale) {
|
|
2651
|
-
return TryCastDecimalToNumeric<int64_t, uint64_t>(input, result,
|
|
2753
|
+
return TryCastDecimalToNumeric<int64_t, uint64_t>(input, result, parameters, scale);
|
|
2652
2754
|
}
|
|
2653
2755
|
template <>
|
|
2654
|
-
bool TryCastFromDecimal::Operation(hugeint_t input, uint64_t &result,
|
|
2756
|
+
bool TryCastFromDecimal::Operation(hugeint_t input, uint64_t &result, CastParameters ¶meters, uint8_t width,
|
|
2655
2757
|
uint8_t scale) {
|
|
2656
|
-
return TryCastHugeDecimalToNumeric<uint64_t>(input, result,
|
|
2758
|
+
return TryCastHugeDecimalToNumeric<uint64_t>(input, result, parameters, scale);
|
|
2657
2759
|
}
|
|
2658
2760
|
|
|
2659
2761
|
//===--------------------------------------------------------------------===//
|
|
2660
2762
|
// Cast Decimal -> hugeint_t
|
|
2661
2763
|
//===--------------------------------------------------------------------===//
|
|
2662
2764
|
template <>
|
|
2663
|
-
bool TryCastFromDecimal::Operation(int16_t input, hugeint_t &result,
|
|
2765
|
+
bool TryCastFromDecimal::Operation(int16_t input, hugeint_t &result, CastParameters ¶meters, uint8_t width,
|
|
2664
2766
|
uint8_t scale) {
|
|
2665
|
-
return TryCastDecimalToNumeric<int16_t, hugeint_t>(input, result,
|
|
2767
|
+
return TryCastDecimalToNumeric<int16_t, hugeint_t>(input, result, parameters, scale);
|
|
2666
2768
|
}
|
|
2667
2769
|
template <>
|
|
2668
|
-
bool TryCastFromDecimal::Operation(int32_t input, hugeint_t &result,
|
|
2770
|
+
bool TryCastFromDecimal::Operation(int32_t input, hugeint_t &result, CastParameters ¶meters, uint8_t width,
|
|
2669
2771
|
uint8_t scale) {
|
|
2670
|
-
return TryCastDecimalToNumeric<int32_t, hugeint_t>(input, result,
|
|
2772
|
+
return TryCastDecimalToNumeric<int32_t, hugeint_t>(input, result, parameters, scale);
|
|
2671
2773
|
}
|
|
2672
2774
|
template <>
|
|
2673
|
-
bool TryCastFromDecimal::Operation(int64_t input, hugeint_t &result,
|
|
2775
|
+
bool TryCastFromDecimal::Operation(int64_t input, hugeint_t &result, CastParameters ¶meters, uint8_t width,
|
|
2674
2776
|
uint8_t scale) {
|
|
2675
|
-
return TryCastDecimalToNumeric<int64_t, hugeint_t>(input, result,
|
|
2777
|
+
return TryCastDecimalToNumeric<int64_t, hugeint_t>(input, result, parameters, scale);
|
|
2676
2778
|
}
|
|
2677
2779
|
template <>
|
|
2678
|
-
bool TryCastFromDecimal::Operation(hugeint_t input, hugeint_t &result,
|
|
2780
|
+
bool TryCastFromDecimal::Operation(hugeint_t input, hugeint_t &result, CastParameters ¶meters, uint8_t width,
|
|
2679
2781
|
uint8_t scale) {
|
|
2680
|
-
return TryCastHugeDecimalToNumeric<hugeint_t>(input, result,
|
|
2782
|
+
return TryCastHugeDecimalToNumeric<hugeint_t>(input, result, parameters, scale);
|
|
2681
2783
|
}
|
|
2682
2784
|
|
|
2683
2785
|
//===--------------------------------------------------------------------===//
|
|
2684
2786
|
// Cast Decimal -> uhugeint_t
|
|
2685
2787
|
//===--------------------------------------------------------------------===//
|
|
2686
2788
|
template <>
|
|
2687
|
-
bool TryCastFromDecimal::Operation(int16_t input, uhugeint_t &result,
|
|
2789
|
+
bool TryCastFromDecimal::Operation(int16_t input, uhugeint_t &result, CastParameters ¶meters, uint8_t width,
|
|
2688
2790
|
uint8_t scale) {
|
|
2689
|
-
return TryCastDecimalToNumeric<int16_t, uhugeint_t>(input, result,
|
|
2791
|
+
return TryCastDecimalToNumeric<int16_t, uhugeint_t>(input, result, parameters, scale);
|
|
2690
2792
|
}
|
|
2691
2793
|
template <>
|
|
2692
|
-
bool TryCastFromDecimal::Operation(int32_t input, uhugeint_t &result,
|
|
2794
|
+
bool TryCastFromDecimal::Operation(int32_t input, uhugeint_t &result, CastParameters ¶meters, uint8_t width,
|
|
2693
2795
|
uint8_t scale) {
|
|
2694
|
-
return TryCastDecimalToNumeric<int32_t, uhugeint_t>(input, result,
|
|
2796
|
+
return TryCastDecimalToNumeric<int32_t, uhugeint_t>(input, result, parameters, scale);
|
|
2695
2797
|
}
|
|
2696
2798
|
template <>
|
|
2697
|
-
bool TryCastFromDecimal::Operation(int64_t input, uhugeint_t &result,
|
|
2799
|
+
bool TryCastFromDecimal::Operation(int64_t input, uhugeint_t &result, CastParameters ¶meters, uint8_t width,
|
|
2698
2800
|
uint8_t scale) {
|
|
2699
|
-
return TryCastDecimalToNumeric<int64_t, uhugeint_t>(input, result,
|
|
2801
|
+
return TryCastDecimalToNumeric<int64_t, uhugeint_t>(input, result, parameters, scale);
|
|
2700
2802
|
}
|
|
2701
2803
|
template <>
|
|
2702
|
-
bool TryCastFromDecimal::Operation(hugeint_t input, uhugeint_t &result,
|
|
2804
|
+
bool TryCastFromDecimal::Operation(hugeint_t input, uhugeint_t &result, CastParameters ¶meters, uint8_t width,
|
|
2703
2805
|
uint8_t scale) {
|
|
2704
|
-
return TryCastHugeDecimalToNumeric<uhugeint_t>(input, result,
|
|
2806
|
+
return TryCastHugeDecimalToNumeric<uhugeint_t>(input, result, parameters, scale);
|
|
2705
2807
|
}
|
|
2706
2808
|
|
|
2707
2809
|
//===--------------------------------------------------------------------===//
|
|
@@ -2715,44 +2817,50 @@ bool TryCastDecimalToFloatingPoint(SRC input, DST &result, uint8_t scale) {
|
|
|
2715
2817
|
|
|
2716
2818
|
// DECIMAL -> FLOAT
|
|
2717
2819
|
template <>
|
|
2718
|
-
bool TryCastFromDecimal::Operation(int16_t input, float &result,
|
|
2820
|
+
bool TryCastFromDecimal::Operation(int16_t input, float &result, CastParameters ¶meters, uint8_t width,
|
|
2821
|
+
uint8_t scale) {
|
|
2719
2822
|
return TryCastDecimalToFloatingPoint<int16_t, float>(input, result, scale);
|
|
2720
2823
|
}
|
|
2721
2824
|
|
|
2722
2825
|
template <>
|
|
2723
|
-
bool TryCastFromDecimal::Operation(int32_t input, float &result,
|
|
2826
|
+
bool TryCastFromDecimal::Operation(int32_t input, float &result, CastParameters ¶meters, uint8_t width,
|
|
2827
|
+
uint8_t scale) {
|
|
2724
2828
|
return TryCastDecimalToFloatingPoint<int32_t, float>(input, result, scale);
|
|
2725
2829
|
}
|
|
2726
2830
|
|
|
2727
2831
|
template <>
|
|
2728
|
-
bool TryCastFromDecimal::Operation(int64_t input, float &result,
|
|
2832
|
+
bool TryCastFromDecimal::Operation(int64_t input, float &result, CastParameters ¶meters, uint8_t width,
|
|
2833
|
+
uint8_t scale) {
|
|
2729
2834
|
return TryCastDecimalToFloatingPoint<int64_t, float>(input, result, scale);
|
|
2730
2835
|
}
|
|
2731
2836
|
|
|
2732
2837
|
template <>
|
|
2733
|
-
bool TryCastFromDecimal::Operation(hugeint_t input, float &result,
|
|
2838
|
+
bool TryCastFromDecimal::Operation(hugeint_t input, float &result, CastParameters ¶meters, uint8_t width,
|
|
2734
2839
|
uint8_t scale) {
|
|
2735
2840
|
return TryCastDecimalToFloatingPoint<hugeint_t, float>(input, result, scale);
|
|
2736
2841
|
}
|
|
2737
2842
|
|
|
2738
2843
|
// DECIMAL -> DOUBLE
|
|
2739
2844
|
template <>
|
|
2740
|
-
bool TryCastFromDecimal::Operation(int16_t input, double &result,
|
|
2845
|
+
bool TryCastFromDecimal::Operation(int16_t input, double &result, CastParameters ¶meters, uint8_t width,
|
|
2846
|
+
uint8_t scale) {
|
|
2741
2847
|
return TryCastDecimalToFloatingPoint<int16_t, double>(input, result, scale);
|
|
2742
2848
|
}
|
|
2743
2849
|
|
|
2744
2850
|
template <>
|
|
2745
|
-
bool TryCastFromDecimal::Operation(int32_t input, double &result,
|
|
2851
|
+
bool TryCastFromDecimal::Operation(int32_t input, double &result, CastParameters ¶meters, uint8_t width,
|
|
2852
|
+
uint8_t scale) {
|
|
2746
2853
|
return TryCastDecimalToFloatingPoint<int32_t, double>(input, result, scale);
|
|
2747
2854
|
}
|
|
2748
2855
|
|
|
2749
2856
|
template <>
|
|
2750
|
-
bool TryCastFromDecimal::Operation(int64_t input, double &result,
|
|
2857
|
+
bool TryCastFromDecimal::Operation(int64_t input, double &result, CastParameters ¶meters, uint8_t width,
|
|
2858
|
+
uint8_t scale) {
|
|
2751
2859
|
return TryCastDecimalToFloatingPoint<int64_t, double>(input, result, scale);
|
|
2752
2860
|
}
|
|
2753
2861
|
|
|
2754
2862
|
template <>
|
|
2755
|
-
bool TryCastFromDecimal::Operation(hugeint_t input, double &result,
|
|
2863
|
+
bool TryCastFromDecimal::Operation(hugeint_t input, double &result, CastParameters ¶meters, uint8_t width,
|
|
2756
2864
|
uint8_t scale) {
|
|
2757
2865
|
return TryCastDecimalToFloatingPoint<hugeint_t, double>(input, result, scale);
|
|
2758
2866
|
}
|