duckdb 1.3.4 → 1.4.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 +8 -20
- package/binding.gyp +9 -1
- package/package.json +1 -1
- package/src/connection.cpp +1 -1
- package/src/duckdb/extension/core_functions/aggregate/algebraic/avg.cpp +4 -0
- package/src/duckdb/extension/core_functions/aggregate/distributive/approx_count.cpp +8 -4
- package/src/duckdb/extension/core_functions/aggregate/distributive/arg_min_max.cpp +16 -12
- package/src/duckdb/extension/core_functions/aggregate/distributive/bitagg.cpp +5 -1
- package/src/duckdb/extension/core_functions/aggregate/distributive/bitstring_agg.cpp +5 -1
- package/src/duckdb/extension/core_functions/aggregate/distributive/bool.cpp +4 -0
- package/src/duckdb/extension/core_functions/aggregate/distributive/kurtosis.cpp +4 -0
- package/src/duckdb/extension/core_functions/aggregate/distributive/product.cpp +4 -0
- package/src/duckdb/extension/core_functions/aggregate/distributive/skew.cpp +4 -0
- package/src/duckdb/extension/core_functions/aggregate/distributive/string_agg.cpp +6 -2
- package/src/duckdb/extension/core_functions/aggregate/distributive/sum.cpp +64 -0
- package/src/duckdb/extension/core_functions/aggregate/holistic/approx_top_k.cpp +7 -3
- package/src/duckdb/extension/core_functions/aggregate/holistic/approximate_quantile.cpp +7 -4
- package/src/duckdb/extension/core_functions/aggregate/holistic/mad.cpp +6 -3
- package/src/duckdb/extension/core_functions/aggregate/holistic/mode.cpp +8 -1
- package/src/duckdb/extension/core_functions/aggregate/holistic/quantile.cpp +7 -46
- package/src/duckdb/extension/core_functions/aggregate/holistic/reservoir_quantile.cpp +9 -15
- package/src/duckdb/extension/core_functions/aggregate/nested/binned_histogram.cpp +12 -8
- package/src/duckdb/extension/core_functions/aggregate/nested/histogram.cpp +7 -5
- package/src/duckdb/extension/core_functions/aggregate/nested/list.cpp +14 -24
- package/src/duckdb/extension/core_functions/aggregate/regression/regr_avg.cpp +5 -0
- package/src/duckdb/extension/core_functions/aggregate/regression/regr_intercept.cpp +3 -0
- package/src/duckdb/extension/core_functions/aggregate/regression/regr_r2.cpp +5 -0
- package/src/duckdb/extension/core_functions/aggregate/regression/regr_sxx_syy.cpp +3 -0
- package/src/duckdb/extension/core_functions/aggregate/regression/regr_sxy.cpp +4 -0
- package/src/duckdb/extension/core_functions/core_functions_extension.cpp +6 -18
- package/src/duckdb/extension/core_functions/function_list.cpp +6 -3
- package/src/duckdb/extension/core_functions/include/core_functions/aggregate/algebraic/stddev.hpp +1 -1
- package/src/duckdb/extension/core_functions/include/core_functions/aggregate/algebraic_functions.hpp +2 -2
- package/src/duckdb/extension/core_functions/include/core_functions/aggregate/distributive_functions.hpp +4 -4
- package/src/duckdb/extension/core_functions/include/core_functions/aggregate/holistic_functions.hpp +1 -1
- package/src/duckdb/extension/core_functions/include/core_functions/aggregate/quantile_sort_tree.hpp +32 -45
- package/src/duckdb/extension/core_functions/include/core_functions/aggregate/quantile_state.hpp +1 -1
- package/src/duckdb/extension/core_functions/include/core_functions/aggregate/regression_functions.hpp +8 -8
- package/src/duckdb/extension/core_functions/include/core_functions/aggregate/sum_helpers.hpp +1 -1
- package/src/duckdb/extension/core_functions/include/core_functions/scalar/array_functions.hpp +22 -22
- package/src/duckdb/extension/core_functions/include/core_functions/scalar/blob_functions.hpp +2 -2
- package/src/duckdb/extension/core_functions/include/core_functions/scalar/date_functions.hpp +15 -5
- package/src/duckdb/extension/core_functions/include/core_functions/scalar/generic_functions.hpp +22 -12
- package/src/duckdb/extension/core_functions/include/core_functions/scalar/list_functions.hpp +56 -56
- package/src/duckdb/extension/core_functions/include/core_functions/scalar/map_functions.hpp +2 -2
- package/src/duckdb/extension/core_functions/include/core_functions/scalar/math_functions.hpp +3 -3
- package/src/duckdb/extension/core_functions/include/core_functions/scalar/string_functions.hpp +118 -118
- package/src/duckdb/extension/core_functions/include/core_functions/scalar/struct_functions.hpp +10 -0
- package/src/duckdb/extension/core_functions/include/core_functions_extension.hpp +1 -1
- package/src/duckdb/extension/core_functions/lambda_functions.cpp +4 -4
- package/src/duckdb/extension/core_functions/scalar/array/array_functions.cpp +2 -1
- package/src/duckdb/extension/core_functions/scalar/array/array_value.cpp +7 -3
- package/src/duckdb/extension/core_functions/scalar/bit/bitstring.cpp +7 -0
- package/src/duckdb/extension/core_functions/scalar/blob/base64.cpp +5 -2
- package/src/duckdb/extension/core_functions/scalar/blob/encode.cpp +6 -2
- package/src/duckdb/extension/core_functions/scalar/date/date_diff.cpp +7 -3
- package/src/duckdb/extension/core_functions/scalar/date/date_part.cpp +187 -33
- package/src/duckdb/extension/core_functions/scalar/date/date_sub.cpp +7 -3
- package/src/duckdb/extension/core_functions/scalar/date/date_trunc.cpp +12 -8
- package/src/duckdb/extension/core_functions/scalar/date/epoch.cpp +16 -12
- package/src/duckdb/extension/core_functions/scalar/date/make_date.cpp +11 -7
- package/src/duckdb/extension/core_functions/scalar/date/time_bucket.cpp +7 -3
- package/src/duckdb/extension/core_functions/scalar/date/to_interval.cpp +4 -0
- package/src/duckdb/extension/core_functions/scalar/enum/enum_functions.cpp +6 -6
- package/src/duckdb/extension/core_functions/scalar/generic/binning.cpp +8 -4
- package/src/duckdb/extension/core_functions/scalar/generic/can_implicitly_cast.cpp +6 -2
- package/src/duckdb/extension/core_functions/scalar/generic/cast_to_type.cpp +4 -1
- package/src/duckdb/extension/core_functions/scalar/generic/current_setting.cpp +9 -3
- package/src/duckdb/extension/core_functions/scalar/generic/least.cpp +5 -2
- package/src/duckdb/extension/core_functions/scalar/generic/replace_type.cpp +34 -0
- package/src/duckdb/extension/core_functions/scalar/generic/stats.cpp +5 -2
- package/src/duckdb/extension/core_functions/scalar/generic/system_functions.cpp +13 -9
- package/src/duckdb/extension/core_functions/scalar/generic/typeof.cpp +5 -1
- package/src/duckdb/extension/core_functions/scalar/list/array_slice.cpp +29 -26
- package/src/duckdb/extension/core_functions/scalar/list/flatten.cpp +9 -49
- package/src/duckdb/extension/core_functions/scalar/list/list_aggregates.cpp +17 -34
- package/src/duckdb/extension/core_functions/scalar/list/list_has_any_or_all.cpp +4 -50
- package/src/duckdb/extension/core_functions/scalar/list/list_reduce.cpp +46 -42
- package/src/duckdb/extension/core_functions/scalar/list/list_sort.cpp +48 -51
- package/src/duckdb/extension/core_functions/scalar/list/list_value.cpp +224 -144
- package/src/duckdb/extension/core_functions/scalar/list/range.cpp +5 -1
- package/src/duckdb/extension/core_functions/scalar/map/map.cpp +13 -41
- package/src/duckdb/extension/core_functions/scalar/map/map_concat.cpp +6 -6
- package/src/duckdb/extension/core_functions/scalar/map/map_entries.cpp +6 -42
- package/src/duckdb/extension/core_functions/scalar/map/map_extract.cpp +10 -59
- package/src/duckdb/extension/core_functions/scalar/map/map_from_entries.cpp +7 -32
- package/src/duckdb/extension/core_functions/scalar/map/map_keys_values.cpp +10 -45
- package/src/duckdb/extension/core_functions/scalar/math/numeric.cpp +364 -139
- package/src/duckdb/extension/core_functions/scalar/operators/bitwise.cpp +29 -7
- package/src/duckdb/extension/core_functions/scalar/random/random.cpp +18 -14
- package/src/duckdb/extension/core_functions/scalar/random/setseed.cpp +5 -1
- package/src/duckdb/extension/core_functions/scalar/string/hex.cpp +2 -2
- package/src/duckdb/extension/core_functions/scalar/string/instr.cpp +5 -3
- package/src/duckdb/extension/core_functions/scalar/string/printf.cpp +16 -0
- package/src/duckdb/extension/core_functions/scalar/string/repeat.cpp +2 -17
- package/src/duckdb/extension/core_functions/scalar/struct/struct_insert.cpp +1 -1
- package/src/duckdb/extension/core_functions/scalar/struct/struct_update.cpp +161 -0
- package/src/duckdb/extension/core_functions/scalar/union/union_extract.cpp +7 -3
- package/src/duckdb/extension/core_functions/scalar/union/union_tag.cpp +7 -3
- package/src/duckdb/extension/core_functions/scalar/union/union_value.cpp +7 -3
- package/src/duckdb/extension/icu/icu-current.cpp +5 -5
- package/src/duckdb/extension/icu/icu-dateadd.cpp +11 -11
- package/src/duckdb/extension/icu/icu-datepart.cpp +44 -44
- package/src/duckdb/extension/icu/icu-datesub.cpp +10 -10
- package/src/duckdb/extension/icu/icu-datetrunc.cpp +6 -6
- package/src/duckdb/extension/icu/icu-list-range.cpp +7 -6
- package/src/duckdb/extension/icu/icu-makedate.cpp +8 -11
- package/src/duckdb/extension/icu/icu-strptime.cpp +23 -29
- package/src/duckdb/extension/icu/icu-table-range.cpp +8 -6
- package/src/duckdb/extension/icu/icu-timebucket.cpp +5 -5
- package/src/duckdb/extension/icu/icu-timezone.cpp +24 -30
- package/src/duckdb/extension/icu/icu_extension.cpp +22 -34
- package/src/duckdb/extension/icu/include/icu-casts.hpp +2 -2
- package/src/duckdb/extension/icu/include/icu-current.hpp +3 -3
- package/src/duckdb/extension/icu/include/icu-dateadd.hpp +3 -3
- package/src/duckdb/extension/icu/include/icu-datepart.hpp +3 -3
- package/src/duckdb/extension/icu/include/icu-datesub.hpp +3 -3
- package/src/duckdb/extension/icu/include/icu-datetrunc.hpp +3 -3
- package/src/duckdb/extension/icu/include/icu-list-range.hpp +3 -3
- package/src/duckdb/extension/icu/include/icu-makedate.hpp +3 -3
- package/src/duckdb/extension/icu/include/icu-strptime.hpp +3 -3
- package/src/duckdb/extension/icu/include/icu-table-range.hpp +3 -3
- package/src/duckdb/extension/icu/include/icu-timebucket.hpp +3 -3
- package/src/duckdb/extension/icu/include/icu-timezone.hpp +3 -3
- package/src/duckdb/extension/icu/include/icu_extension.hpp +1 -1
- package/src/duckdb/extension/json/include/json_common.hpp +10 -2
- package/src/duckdb/extension/json/include/json_enums.hpp +3 -1
- package/src/duckdb/extension/json/include/json_extension.hpp +1 -1
- package/src/duckdb/extension/json/include/json_functions.hpp +4 -4
- package/src/duckdb/extension/json/include/json_multi_file_info.hpp +2 -2
- package/src/duckdb/extension/json/include/json_reader.hpp +3 -1
- package/src/duckdb/extension/json/json_enums.cpp +5 -0
- package/src/duckdb/extension/json/json_extension.cpp +27 -38
- package/src/duckdb/extension/json/json_functions/copy_json.cpp +8 -3
- package/src/duckdb/extension/json/json_functions/json_create.cpp +9 -6
- package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +3 -20
- package/src/duckdb/extension/json/json_functions/json_pretty.cpp +3 -3
- package/src/duckdb/extension/json/json_functions/json_serialize_plan.cpp +6 -4
- package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +6 -4
- package/src/duckdb/extension/json/json_functions/json_table_in_out.cpp +6 -2
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +5 -3
- package/src/duckdb/extension/json/json_functions/read_json.cpp +4 -3
- package/src/duckdb/extension/json/json_functions.cpp +135 -8
- package/src/duckdb/extension/json/json_multi_file_info.cpp +5 -2
- package/src/duckdb/extension/json/json_reader.cpp +7 -6
- package/src/duckdb/extension/parquet/column_reader.cpp +46 -21
- package/src/duckdb/extension/parquet/column_writer.cpp +16 -105
- package/src/duckdb/extension/parquet/geo_parquet.cpp +231 -171
- package/src/duckdb/extension/parquet/include/column_reader.hpp +0 -2
- package/src/duckdb/extension/parquet/include/column_writer.hpp +2 -1
- package/src/duckdb/extension/parquet/include/geo_parquet.hpp +160 -66
- package/src/duckdb/extension/parquet/include/parquet_column_schema.hpp +6 -4
- package/src/duckdb/extension/parquet/include/parquet_crypto.hpp +0 -3
- package/src/duckdb/extension/parquet/include/parquet_extension.hpp +1 -1
- package/src/duckdb/extension/parquet/include/parquet_file_metadata_cache.hpp +5 -2
- package/src/duckdb/extension/parquet/include/parquet_multi_file_info.hpp +2 -2
- package/src/duckdb/extension/parquet/include/parquet_reader.hpp +10 -2
- package/src/duckdb/extension/parquet/include/parquet_rle_bp_encoder.hpp +3 -0
- package/src/duckdb/extension/parquet/include/parquet_statistics.hpp +0 -2
- package/src/duckdb/extension/parquet/include/parquet_timestamp.hpp +10 -6
- package/src/duckdb/extension/parquet/include/parquet_writer.hpp +4 -3
- package/src/duckdb/extension/parquet/include/reader/row_number_column_reader.hpp +0 -2
- package/src/duckdb/extension/parquet/include/reader/uuid_column_reader.hpp +3 -13
- package/src/duckdb/extension/parquet/include/reader/variant/variant_binary_decoder.hpp +150 -0
- package/src/duckdb/extension/parquet/include/reader/variant/variant_shredded_conversion.hpp +23 -0
- package/src/duckdb/extension/parquet/include/reader/variant/variant_value.hpp +54 -0
- package/src/duckdb/extension/parquet/include/reader/variant_column_reader.hpp +44 -0
- package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +0 -2
- package/src/duckdb/extension/parquet/include/thrift_tools.hpp +3 -3
- package/src/duckdb/extension/parquet/include/writer/array_column_writer.hpp +2 -1
- package/src/duckdb/extension/parquet/include/writer/list_column_writer.hpp +2 -1
- package/src/duckdb/extension/parquet/include/writer/parquet_write_operators.hpp +47 -10
- package/src/duckdb/extension/parquet/include/writer/parquet_write_stats.hpp +55 -1
- package/src/duckdb/extension/parquet/include/writer/primitive_column_writer.hpp +4 -3
- package/src/duckdb/extension/parquet/include/writer/struct_column_writer.hpp +2 -1
- package/src/duckdb/extension/parquet/include/writer/templated_column_writer.hpp +6 -3
- package/src/duckdb/extension/parquet/include/zstd_file_system.hpp +1 -3
- package/src/duckdb/extension/parquet/parquet_crypto.cpp +11 -11
- package/src/duckdb/extension/parquet/parquet_extension.cpp +84 -68
- package/src/duckdb/extension/parquet/parquet_file_metadata_cache.cpp +4 -4
- package/src/duckdb/extension/parquet/parquet_float16.cpp +0 -3
- package/src/duckdb/extension/parquet/parquet_metadata.cpp +115 -17
- package/src/duckdb/extension/parquet/parquet_multi_file_info.cpp +25 -10
- package/src/duckdb/extension/parquet/parquet_reader.cpp +181 -56
- package/src/duckdb/extension/parquet/parquet_statistics.cpp +26 -8
- package/src/duckdb/extension/parquet/parquet_timestamp.cpp +14 -4
- package/src/duckdb/extension/parquet/parquet_writer.cpp +117 -16
- package/src/duckdb/extension/parquet/reader/decimal_column_reader.cpp +1 -1
- package/src/duckdb/extension/parquet/reader/variant/variant_binary_decoder.cpp +367 -0
- package/src/duckdb/extension/parquet/reader/variant/variant_shredded_conversion.cpp +565 -0
- package/src/duckdb/extension/parquet/reader/variant/variant_value.cpp +85 -0
- package/src/duckdb/extension/parquet/reader/variant_column_reader.cpp +161 -0
- package/src/duckdb/extension/parquet/writer/array_column_writer.cpp +5 -2
- package/src/duckdb/extension/parquet/writer/enum_column_writer.cpp +1 -1
- package/src/duckdb/extension/parquet/writer/list_column_writer.cpp +6 -3
- package/src/duckdb/extension/parquet/writer/primitive_column_writer.cpp +24 -8
- package/src/duckdb/extension/parquet/writer/struct_column_writer.cpp +4 -2
- package/src/duckdb/extension/parquet/zstd_file_system.cpp +7 -6
- package/src/duckdb/src/catalog/catalog.cpp +92 -62
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +8 -8
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +14 -8
- package/src/duckdb/src/catalog/catalog_set.cpp +1 -0
- package/src/duckdb/src/catalog/default/default_functions.cpp +4 -4
- package/src/duckdb/src/catalog/default/default_table_functions.cpp +5 -4
- package/src/duckdb/src/catalog/default/default_views.cpp +1 -1
- package/src/duckdb/src/catalog/duck_catalog.cpp +28 -0
- package/src/duckdb/src/common/adbc/adbc.cpp +243 -125
- package/src/duckdb/src/common/adbc/driver_manager.cpp +3 -3
- package/src/duckdb/src/common/arrow/appender/append_data.cpp +29 -0
- package/src/duckdb/src/common/arrow/appender/bool_data.cpp +6 -7
- package/src/duckdb/src/common/arrow/appender/fixed_size_list_data.cpp +1 -1
- package/src/duckdb/src/common/arrow/appender/struct_data.cpp +1 -1
- package/src/duckdb/src/common/arrow/appender/union_data.cpp +0 -1
- package/src/duckdb/src/common/arrow/arrow_appender.cpp +13 -17
- package/src/duckdb/src/common/arrow/arrow_converter.cpp +14 -6
- package/src/duckdb/src/common/arrow/arrow_type_extension.cpp +6 -6
- package/src/duckdb/src/common/arrow/physical_arrow_collector.cpp +16 -10
- package/src/duckdb/src/common/arrow/schema_metadata.cpp +2 -2
- package/src/duckdb/src/common/bignum.cpp +362 -0
- package/src/duckdb/src/common/box_renderer.cpp +83 -32
- package/src/duckdb/src/common/complex_json.cpp +20 -5
- package/src/duckdb/src/common/compressed_file_system.cpp +6 -5
- package/src/duckdb/src/common/csv_writer.cpp +381 -0
- package/src/duckdb/src/common/encryption_functions.cpp +228 -0
- package/src/duckdb/src/common/encryption_key_manager.cpp +143 -0
- package/src/duckdb/src/common/encryption_state.cpp +56 -9
- package/src/duckdb/src/common/enum_util.cpp +405 -51
- package/src/duckdb/src/common/enums/expression_type.cpp +2 -0
- package/src/duckdb/src/common/enums/logical_operator_type.cpp +2 -0
- package/src/duckdb/src/common/enums/metric_type.cpp +6 -0
- package/src/duckdb/src/common/enums/optimizer_type.cpp +1 -0
- package/src/duckdb/src/common/enums/physical_operator_type.cpp +2 -0
- package/src/duckdb/src/common/enums/statement_type.cpp +2 -0
- package/src/duckdb/src/common/error_data.cpp +11 -0
- package/src/duckdb/src/common/exception_format_value.cpp +15 -1
- package/src/duckdb/src/common/extra_type_info.cpp +43 -0
- package/src/duckdb/src/common/file_buffer.cpp +11 -8
- package/src/duckdb/src/common/file_system.cpp +82 -12
- package/src/duckdb/src/common/gzip_file_system.cpp +13 -11
- package/src/duckdb/src/common/local_file_system.cpp +25 -16
- package/src/duckdb/src/common/multi_file/base_file_reader.cpp +4 -0
- package/src/duckdb/src/common/multi_file/multi_file_column_mapper.cpp +7 -11
- package/src/duckdb/src/common/multi_file/multi_file_function.cpp +8 -0
- package/src/duckdb/src/common/multi_file/multi_file_list.cpp +8 -4
- package/src/duckdb/src/common/multi_file/multi_file_reader.cpp +9 -5
- package/src/duckdb/src/common/operator/cast_operators.cpp +147 -6
- package/src/duckdb/src/common/operator/string_cast.cpp +41 -12
- package/src/duckdb/src/common/pipe_file_system.cpp +10 -5
- package/src/duckdb/src/common/progress_bar/progress_bar.cpp +2 -2
- package/src/duckdb/src/common/progress_bar/terminal_progress_bar_display.cpp +81 -7
- package/src/duckdb/src/common/progress_bar/unscented_kalman_filter.cpp +288 -0
- package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
- package/src/duckdb/src/common/row_operations/row_aggregate.cpp +8 -11
- package/src/duckdb/src/common/row_operations/row_external.cpp +0 -7
- package/src/duckdb/src/common/row_operations/row_gather.cpp +0 -5
- package/src/duckdb/src/common/row_operations/row_matcher.cpp +55 -37
- package/src/duckdb/src/common/row_operations/row_scatter.cpp +0 -6
- package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +4 -0
- package/src/duckdb/src/common/serializer/buffered_file_writer.cpp +4 -0
- package/src/duckdb/src/common/serializer/memory_stream.cpp +4 -0
- package/src/duckdb/src/common/sort/partition_state.cpp +3 -3
- package/src/duckdb/src/common/sorting/hashed_sort.cpp +724 -0
- package/src/duckdb/src/common/sorting/sort.cpp +513 -0
- package/src/duckdb/src/common/sorting/sorted_run.cpp +341 -0
- package/src/duckdb/src/common/sorting/sorted_run_merger.cpp +969 -0
- package/src/duckdb/src/common/string_util.cpp +64 -44
- package/src/duckdb/src/common/tree_renderer/text_tree_renderer.cpp +40 -3
- package/src/duckdb/src/common/tree_renderer/yaml_tree_renderer.cpp +144 -0
- package/src/duckdb/src/common/tree_renderer.cpp +3 -0
- package/src/duckdb/src/common/types/bignum.cpp +350 -0
- package/src/duckdb/src/common/types/column/column_data_allocator.cpp +27 -29
- package/src/duckdb/src/common/types/column/column_data_collection.cpp +216 -68
- package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +3 -2
- package/src/duckdb/src/common/types/conflict_info.cpp +1 -2
- package/src/duckdb/src/common/types/conflict_manager.cpp +82 -207
- package/src/duckdb/src/common/types/data_chunk.cpp +10 -3
- package/src/duckdb/src/common/types/date.cpp +8 -10
- package/src/duckdb/src/common/types/hash.cpp +7 -7
- package/src/duckdb/src/common/types/row/block_iterator.cpp +34 -0
- package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +38 -29
- package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +272 -54
- package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +156 -45
- package/src/duckdb/src/common/types/row/tuple_data_iterator.cpp +5 -5
- package/src/duckdb/src/common/types/row/tuple_data_layout.cpp +122 -18
- package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +466 -83
- package/src/duckdb/src/common/types/row/tuple_data_segment.cpp +8 -28
- package/src/duckdb/src/common/types/time.cpp +2 -2
- package/src/duckdb/src/common/types/timestamp.cpp +26 -14
- package/src/duckdb/src/common/types/uuid.cpp +33 -2
- package/src/duckdb/src/common/types/value.cpp +79 -16
- package/src/duckdb/src/common/types/vector.cpp +190 -22
- package/src/duckdb/src/common/types/vector_buffer.cpp +4 -0
- package/src/duckdb/src/common/types/vector_cache.cpp +4 -0
- package/src/duckdb/src/common/types.cpp +110 -22
- package/src/duckdb/src/common/value_operations/comparison_operations.cpp +24 -27
- package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +12 -9
- package/src/duckdb/src/common/vector_operations/comparison_operators.cpp +5 -4
- package/src/duckdb/src/common/vector_operations/generators.cpp +1 -1
- package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +70 -135
- package/src/duckdb/src/common/vector_operations/null_operations.cpp +1 -1
- package/src/duckdb/src/common/vector_operations/vector_copy.cpp +5 -2
- package/src/duckdb/src/common/vector_operations/vector_hash.cpp +110 -55
- package/src/duckdb/src/common/vector_operations/vector_storage.cpp +14 -10
- package/src/duckdb/src/common/virtual_file_system.cpp +12 -3
- package/src/duckdb/src/execution/aggregate_hashtable.cpp +88 -50
- package/src/duckdb/src/execution/column_binding_resolver.cpp +7 -6
- package/src/duckdb/src/execution/expression_executor/execute_function.cpp +113 -2
- package/src/duckdb/src/execution/expression_executor.cpp +44 -4
- package/src/duckdb/src/execution/index/art/art.cpp +78 -216
- package/src/duckdb/src/execution/index/art/art_builder.cpp +91 -0
- package/src/duckdb/src/execution/index/art/art_key.cpp +0 -23
- package/src/duckdb/src/execution/index/art/art_merger.cpp +3 -4
- package/src/duckdb/src/execution/index/art/base_leaf.cpp +10 -11
- package/src/duckdb/src/execution/index/art/base_node.cpp +103 -75
- package/src/duckdb/src/execution/index/art/iterator.cpp +3 -3
- package/src/duckdb/src/execution/index/art/leaf.cpp +9 -11
- package/src/duckdb/src/execution/index/art/node.cpp +54 -53
- package/src/duckdb/src/execution/index/art/node256.cpp +30 -56
- package/src/duckdb/src/execution/index/art/node256_leaf.cpp +43 -30
- package/src/duckdb/src/execution/index/art/node48.cpp +69 -101
- package/src/duckdb/src/execution/index/art/plan_art.cpp +2 -1
- package/src/duckdb/src/execution/index/art/prefix.cpp +115 -125
- package/src/duckdb/src/execution/index/bound_index.cpp +39 -10
- package/src/duckdb/src/execution/index/fixed_size_allocator.cpp +23 -8
- package/src/duckdb/src/execution/index/fixed_size_buffer.cpp +35 -23
- package/src/duckdb/src/execution/index/unbound_index.cpp +26 -6
- package/src/duckdb/src/execution/join_hashtable.cpp +52 -55
- package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +3 -0
- package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +6 -4
- package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +27 -18
- package/src/duckdb/src/execution/operator/aggregate/physical_partitioned_aggregate.cpp +4 -2
- package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +4 -2
- package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +8 -2
- package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +6 -4
- package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +433 -387
- package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer.cpp +5 -4
- package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_file_handle.cpp +12 -4
- package/src/duckdb/src/execution/operator/csv_scanner/encode/csv_encoder.cpp +8 -7
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +7 -5
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +15 -2
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +1 -1
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +4 -4
- package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_multi_file_info.cpp +12 -3
- package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +7 -2
- package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +4 -0
- package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +14 -12
- package/src/duckdb/src/execution/operator/helper/physical_batch_collector.cpp +2 -1
- package/src/duckdb/src/execution/operator/helper/physical_buffered_batch_collector.cpp +2 -2
- package/src/duckdb/src/execution/operator/helper/physical_buffered_collector.cpp +3 -2
- package/src/duckdb/src/execution/operator/helper/physical_execute.cpp +2 -2
- package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +3 -3
- package/src/duckdb/src/execution/operator/helper/physical_limit_percent.cpp +4 -3
- package/src/duckdb/src/execution/operator/helper/physical_materialized_collector.cpp +3 -2
- package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +29 -9
- package/src/duckdb/src/execution/operator/helper/physical_result_collector.cpp +23 -20
- package/src/duckdb/src/execution/operator/helper/physical_set.cpp +28 -11
- package/src/duckdb/src/execution/operator/helper/physical_set_variable.cpp +3 -2
- package/src/duckdb/src/execution/operator/helper/physical_streaming_limit.cpp +4 -3
- package/src/duckdb/src/execution/operator/helper/physical_streaming_sample.cpp +3 -3
- package/src/duckdb/src/execution/operator/helper/physical_transaction.cpp +4 -4
- package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +7 -3
- package/src/duckdb/src/execution/operator/helper/physical_verify_vector.cpp +4 -2
- package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +11 -10
- package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +3 -2
- package/src/duckdb/src/execution/operator/join/physical_comparison_join.cpp +4 -4
- package/src/duckdb/src/execution/operator/join/physical_cross_product.cpp +4 -3
- package/src/duckdb/src/execution/operator/join/physical_delim_join.cpp +2 -2
- package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +13 -8
- package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +15 -14
- package/src/duckdb/src/execution/operator/join/physical_join.cpp +3 -3
- package/src/duckdb/src/execution/operator/join/physical_left_delim_join.cpp +5 -4
- package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +7 -7
- package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +20 -21
- package/src/duckdb/src/execution/operator/join/physical_positional_join.cpp +4 -3
- package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +18 -6
- package/src/duckdb/src/execution/operator/join/physical_right_delim_join.cpp +5 -4
- package/src/duckdb/src/execution/operator/order/physical_order.cpp +62 -203
- package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +5 -4
- package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +5 -3
- package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +9 -7
- package/src/duckdb/src/execution/operator/persistent/physical_copy_database.cpp +7 -5
- package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +12 -7
- package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +34 -5
- package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +6 -20
- package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +91 -74
- package/src/duckdb/src/execution/operator/persistent/physical_merge_into.cpp +516 -0
- package/src/duckdb/src/execution/operator/persistent/physical_update.cpp +11 -9
- package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +7 -4
- package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +3 -36
- package/src/duckdb/src/execution/operator/projection/physical_tableinout_function.cpp +26 -4
- package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +5 -3
- package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +9 -7
- package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +3 -3
- package/src/duckdb/src/execution/operator/scan/physical_table_scan.cpp +6 -5
- package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +11 -9
- package/src/duckdb/src/execution/operator/schema/physical_create_art_index.cpp +5 -4
- package/src/duckdb/src/execution/operator/schema/physical_create_table.cpp +3 -3
- package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +3 -2
- package/src/duckdb/src/execution/operator/schema/physical_drop.cpp +3 -2
- package/src/duckdb/src/execution/operator/set/physical_cte.cpp +5 -4
- package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +5 -3
- package/src/duckdb/src/execution/operator/set/physical_union.cpp +3 -3
- package/src/duckdb/src/execution/physical_operator.cpp +42 -32
- package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +24 -12
- package/src/duckdb/src/execution/physical_plan/plan_asof_join.cpp +5 -3
- package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +12 -18
- package/src/duckdb/src/execution/physical_plan/plan_get.cpp +3 -1
- package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +11 -10
- package/src/duckdb/src/execution/physical_plan/plan_merge_into.cpp +132 -0
- package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +16 -18
- package/src/duckdb/src/execution/physical_plan_generator.cpp +8 -5
- package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +16 -27
- package/src/duckdb/src/execution/sample/base_reservoir_sample.cpp +22 -22
- package/src/duckdb/src/function/aggregate/distributive/count.cpp +14 -11
- package/src/duckdb/src/function/aggregate/distributive/first_last_any.cpp +23 -19
- package/src/duckdb/src/function/aggregate/distributive/minmax.cpp +14 -7
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +185 -234
- package/src/duckdb/src/function/cast/bignum_casts.cpp +315 -0
- package/src/duckdb/src/function/cast/blob_cast.cpp +3 -0
- package/src/duckdb/src/function/cast/cast_function_set.cpp +24 -4
- package/src/duckdb/src/function/cast/decimal_cast.cpp +3 -3
- package/src/duckdb/src/function/cast/default_casts.cpp +12 -4
- package/src/duckdb/src/function/cast/enum_casts.cpp +4 -3
- package/src/duckdb/src/function/cast/numeric_casts.cpp +3 -3
- package/src/duckdb/src/function/cast/string_cast.cpp +14 -11
- package/src/duckdb/src/function/cast/struct_cast.cpp +127 -2
- package/src/duckdb/src/function/cast/time_casts.cpp +18 -0
- package/src/duckdb/src/function/cast/union_casts.cpp +7 -6
- package/src/duckdb/src/function/cast/uuid_casts.cpp +3 -0
- package/src/duckdb/src/function/cast/variant/from_variant.cpp +697 -0
- package/src/duckdb/src/function/cast/variant/to_json.cpp +272 -0
- package/src/duckdb/src/function/cast/variant/to_variant.cpp +193 -0
- package/src/duckdb/src/function/cast_rules.cpp +38 -4
- package/src/duckdb/src/function/copy_blob.cpp +157 -0
- package/src/duckdb/src/function/copy_function.cpp +15 -0
- package/src/duckdb/src/function/function.cpp +2 -0
- package/src/duckdb/src/function/function_binder.cpp +239 -13
- package/src/duckdb/src/function/function_list.cpp +8 -0
- package/src/duckdb/src/function/macro_function.cpp +263 -70
- package/src/duckdb/src/function/pragma/pragma_functions.cpp +6 -38
- package/src/duckdb/src/function/pragma/pragma_queries.cpp +37 -22
- package/src/duckdb/src/function/register_function_list.cpp +5 -5
- package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +43 -34
- package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +61 -38
- package/src/duckdb/src/function/scalar/create_sort_key.cpp +374 -154
- package/src/duckdb/src/function/scalar/date/strftime.cpp +31 -28
- package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +18 -14
- package/src/duckdb/src/function/scalar/generic/error.cpp +18 -7
- package/src/duckdb/src/function/scalar/generic/getvariable.cpp +5 -2
- package/src/duckdb/src/function/scalar/list/contains_or_position.cpp +4 -52
- package/src/duckdb/src/function/scalar/list/list_extract.cpp +5 -12
- package/src/duckdb/src/function/scalar/list/list_resize.cpp +1 -1
- package/src/duckdb/src/function/scalar/list/list_select.cpp +11 -27
- package/src/duckdb/src/function/scalar/map/map_contains.cpp +5 -31
- package/src/duckdb/src/function/scalar/operator/add.cpp +6 -1
- package/src/duckdb/src/function/scalar/operator/arithmetic.cpp +130 -10
- package/src/duckdb/src/function/scalar/operator/multiply.cpp +4 -2
- package/src/duckdb/src/function/scalar/operator/subtract.cpp +3 -1
- package/src/duckdb/src/function/scalar/sequence/nextval.cpp +7 -3
- package/src/duckdb/src/function/scalar/strftime_format.cpp +2 -2
- package/src/duckdb/src/function/scalar/string/caseconvert.cpp +4 -0
- package/src/duckdb/src/function/scalar/string/concat.cpp +18 -19
- package/src/duckdb/src/function/scalar/string/contains.cpp +14 -7
- package/src/duckdb/src/function/scalar/string/length.cpp +13 -9
- package/src/duckdb/src/function/scalar/string/like.cpp +146 -143
- package/src/duckdb/src/function/scalar/string/md5.cpp +6 -2
- package/src/duckdb/src/function/scalar/string/nfc_normalize.cpp +5 -1
- package/src/duckdb/src/function/scalar/string/prefix.cpp +11 -8
- package/src/duckdb/src/function/scalar/string/regexp_escape.cpp +5 -1
- package/src/duckdb/src/function/scalar/string/sha1.cpp +5 -1
- package/src/duckdb/src/function/scalar/string/sha256.cpp +5 -1
- package/src/duckdb/src/function/scalar/string/string_split.cpp +7 -3
- package/src/duckdb/src/function/scalar/string/strip_accents.cpp +5 -1
- package/src/duckdb/src/function/scalar/string/substring.cpp +10 -6
- package/src/duckdb/src/function/scalar/string/suffix.cpp +10 -8
- package/src/duckdb/src/function/scalar/struct/remap_struct.cpp +20 -17
- package/src/duckdb/src/function/scalar/struct/struct_concat.cpp +1 -1
- package/src/duckdb/src/function/scalar/struct/struct_contains.cpp +255 -0
- package/src/duckdb/src/function/scalar/struct/struct_pack.cpp +2 -2
- package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +34 -31
- package/src/duckdb/src/function/scalar/system/current_connection_id.cpp +5 -1
- package/src/duckdb/src/function/scalar/system/current_query_id.cpp +5 -1
- package/src/duckdb/src/function/scalar/system/current_transaction_id.cpp +5 -1
- package/src/duckdb/src/function/scalar/system/parse_log_message.cpp +5 -1
- package/src/duckdb/src/function/scalar/system/write_log.cpp +11 -13
- package/src/duckdb/src/function/scalar/variant/variant_extract.cpp +234 -0
- package/src/duckdb/src/function/scalar/variant/variant_typeof.cpp +70 -0
- package/src/duckdb/src/function/scalar/variant/variant_utils.cpp +412 -0
- package/src/duckdb/src/function/scalar_macro_function.cpp +8 -11
- package/src/duckdb/src/function/table/arrow/arrow_array_scan_state.cpp +2 -3
- package/src/duckdb/src/function/table/arrow/arrow_duck_schema.cpp +27 -2
- package/src/duckdb/src/function/table/arrow.cpp +37 -17
- package/src/duckdb/src/function/table/arrow_conversion.cpp +186 -236
- package/src/duckdb/src/function/table/copy_csv.cpp +76 -245
- package/src/duckdb/src/function/table/direct_file_reader.cpp +172 -0
- package/src/duckdb/src/function/table/read_file.cpp +90 -220
- package/src/duckdb/src/function/table/sniff_csv.cpp +0 -1
- package/src/duckdb/src/function/table/system/duckdb_approx_database_count.cpp +43 -0
- package/src/duckdb/src/function/table/system/duckdb_columns.cpp +2 -2
- package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +3 -7
- package/src/duckdb/src/function/table/system/duckdb_databases.cpp +20 -5
- package/src/duckdb/src/function/table/system/duckdb_extensions.cpp +10 -5
- package/src/duckdb/src/function/table/system/duckdb_functions.cpp +6 -22
- package/src/duckdb/src/function/table/system/duckdb_log.cpp +41 -5
- package/src/duckdb/src/function/table/system/duckdb_log_contexts.cpp +15 -6
- package/src/duckdb/src/function/table/system/duckdb_settings.cpp +29 -6
- package/src/duckdb/src/function/table/system/duckdb_types.cpp +4 -0
- package/src/duckdb/src/function/table/system/logging_utils.cpp +154 -0
- package/src/duckdb/src/function/table/system/pragma_database_size.cpp +2 -2
- package/src/duckdb/src/function/table/system/test_all_types.cpp +30 -6
- package/src/duckdb/src/function/table/system_functions.cpp +2 -0
- package/src/duckdb/src/function/table/table_scan.cpp +82 -48
- package/src/duckdb/src/function/table/version/pragma_version.cpp +7 -4
- package/src/duckdb/src/function/window/window_aggregate_function.cpp +56 -46
- package/src/duckdb/src/function/window/window_aggregator.cpp +33 -19
- package/src/duckdb/src/function/window/window_boundaries_state.cpp +12 -2
- package/src/duckdb/src/function/window/window_collection.cpp +30 -0
- package/src/duckdb/src/function/window/window_constant_aggregator.cpp +32 -24
- package/src/duckdb/src/function/window/window_custom_aggregator.cpp +54 -40
- package/src/duckdb/src/function/window/window_distinct_aggregator.cpp +200 -251
- package/src/duckdb/src/function/window/window_executor.cpp +44 -36
- package/src/duckdb/src/function/window/window_index_tree.cpp +26 -16
- package/src/duckdb/src/function/window/window_merge_sort_tree.cpp +98 -151
- package/src/duckdb/src/function/window/window_naive_aggregator.cpp +94 -72
- package/src/duckdb/src/function/window/window_rank_function.cpp +57 -63
- package/src/duckdb/src/function/window/window_rownumber_function.cpp +45 -47
- package/src/duckdb/src/function/window/window_segment_tree.cpp +28 -22
- package/src/duckdb/src/function/window/window_token_tree.cpp +46 -41
- package/src/duckdb/src/function/window/window_value_function.cpp +632 -93
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +24 -5
- package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +5 -2
- package/src/duckdb/src/include/duckdb/catalog/duck_catalog.hpp +16 -0
- package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +68 -1
- package/src/duckdb/src/include/duckdb/common/allocator.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/arena_linked_list.hpp +169 -0
- package/src/duckdb/src/include/duckdb/common/arrow/appender/append_data.hpp +31 -55
- package/src/duckdb/src/include/duckdb/common/arrow/appender/enum_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/arrow/appender/list_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/arrow/appender/list_view_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/arrow/appender/map_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/arrow/appender/scalar_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/arrow/appender/varchar_data.hpp +6 -6
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_wrapper.hpp +10 -0
- package/src/duckdb/src/include/duckdb/common/arrow/physical_arrow_batch_collector.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/arrow/physical_arrow_collector.hpp +3 -4
- package/src/duckdb/src/include/duckdb/common/bignum.hpp +85 -0
- package/src/duckdb/src/include/duckdb/common/box_renderer.hpp +4 -4
- package/src/duckdb/src/include/duckdb/common/chrono.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/complex_json.hpp +15 -4
- package/src/duckdb/src/include/duckdb/common/compressed_file_system.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/csv_writer.hpp +153 -0
- package/src/duckdb/src/include/duckdb/common/encryption_functions.hpp +54 -0
- package/src/duckdb/src/include/duckdb/common/encryption_key_manager.hpp +80 -0
- package/src/duckdb/src/include/duckdb/common/encryption_state.hpp +25 -9
- package/src/duckdb/src/include/duckdb/common/enum_util.hpp +120 -0
- package/src/duckdb/src/include/duckdb/common/enums/arrow_format_version.hpp +33 -0
- package/src/duckdb/src/include/duckdb/common/enums/checkpoint_abort.hpp +22 -0
- package/src/duckdb/src/include/duckdb/common/enums/checkpoint_type.hpp +3 -1
- package/src/duckdb/src/include/duckdb/common/enums/copy_option_mode.hpp +17 -0
- package/src/duckdb/src/include/duckdb/common/enums/debug_vector_verification.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/enums/explain_format.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/enums/expression_type.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/enums/file_glob_options.hpp +11 -3
- package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/enums/merge_action_type.hpp +19 -0
- package/src/duckdb/src/include/duckdb/common/enums/metric_type.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/enums/optimizer_type.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/enums/ordinality_request_type.hpp +16 -0
- package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/enums/tableref_type.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/enums/thread_pin_mode.hpp +17 -0
- package/src/duckdb/src/include/duckdb/common/enums/tuple_data_layout_enums.hpp +25 -0
- package/src/duckdb/src/include/duckdb/common/enums/undo_flags.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/error_data.hpp +4 -2
- package/src/duckdb/src/include/duckdb/common/exception_format_value.hpp +9 -1
- package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +25 -1
- package/src/duckdb/src/include/duckdb/common/file_buffer.hpp +15 -6
- package/src/duckdb/src/include/duckdb/common/file_open_flags.hpp +14 -0
- package/src/duckdb/src/include/duckdb/common/file_opener.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/file_system.hpp +14 -6
- package/src/duckdb/src/include/duckdb/common/fsst.hpp +3 -2
- package/src/duckdb/src/include/duckdb/common/gzip_file_system.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/helper.hpp +21 -3
- package/src/duckdb/src/include/duckdb/common/local_file_system.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/multi_file/base_file_reader.hpp +4 -0
- package/src/duckdb/src/include/duckdb/common/multi_file/multi_file_function.hpp +43 -14
- package/src/duckdb/src/include/duckdb/common/multi_file/multi_file_list.hpp +4 -3
- package/src/duckdb/src/include/duckdb/common/multi_file/multi_file_reader.hpp +10 -3
- package/src/duckdb/src/include/duckdb/common/multi_file/multi_file_states.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +57 -0
- package/src/duckdb/src/include/duckdb/common/opener_file_system.hpp +7 -3
- package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +84 -0
- package/src/duckdb/src/include/duckdb/common/operator/interpolate.hpp +39 -0
- package/src/duckdb/src/include/duckdb/common/operator/string_cast.hpp +6 -0
- package/src/duckdb/src/include/duckdb/common/optionally_owned_ptr.hpp +18 -2
- package/src/duckdb/src/include/duckdb/common/owning_string_map.hpp +8 -0
- package/src/duckdb/src/include/duckdb/common/pipe_file_system.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/progress_bar/display/terminal_progress_bar_display.hpp +44 -5
- package/src/duckdb/src/include/duckdb/common/progress_bar/progress_bar.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/progress_bar/unscented_kalman_filter.hpp +65 -0
- package/src/duckdb/src/include/duckdb/common/row_operations/row_matcher.hpp +8 -14
- package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +0 -12
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_reader.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +17 -2
- package/src/duckdb/src/include/duckdb/common/serializer/memory_stream.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/serializer/read_stream.hpp +9 -1
- package/src/duckdb/src/include/duckdb/common/serializer/varint.hpp +62 -0
- package/src/duckdb/src/include/duckdb/common/sorting/hashed_sort.hpp +76 -0
- package/src/duckdb/src/include/duckdb/common/sorting/sort.hpp +85 -0
- package/src/duckdb/src/include/duckdb/common/sorting/sort_key.hpp +442 -0
- package/src/duckdb/src/include/duckdb/common/sorting/sort_projection_column.hpp +21 -0
- package/src/duckdb/src/include/duckdb/common/sorting/sorted_run.hpp +55 -0
- package/src/duckdb/src/include/duckdb/common/sorting/sorted_run_merger.hpp +62 -0
- package/src/duckdb/src/include/duckdb/common/tree_renderer/text_tree_renderer.hpp +5 -0
- package/src/duckdb/src/include/duckdb/common/tree_renderer/yaml_tree_renderer.hpp +40 -0
- package/src/duckdb/src/include/duckdb/common/type_util.hpp +34 -4
- package/src/duckdb/src/include/duckdb/common/type_visitor.hpp +36 -6
- package/src/duckdb/src/include/duckdb/common/types/bignum.hpp +159 -0
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_allocator.hpp +3 -2
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_segment.hpp +4 -2
- package/src/duckdb/src/include/duckdb/common/types/conflict_manager.hpp +202 -56
- package/src/duckdb/src/include/duckdb/common/types/constraint_conflict_info.hpp +7 -5
- package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +3 -1
- package/src/duckdb/src/include/duckdb/common/types/date.hpp +9 -5
- package/src/duckdb/src/include/duckdb/common/types/datetime.hpp +11 -2
- package/src/duckdb/src/include/duckdb/common/types/double_na_equal.hpp +65 -0
- package/src/duckdb/src/include/duckdb/common/types/hash.hpp +22 -10
- package/src/duckdb/src/include/duckdb/common/types/hugeint.hpp +6 -6
- package/src/duckdb/src/include/duckdb/common/types/row/block_iterator.hpp +360 -0
- package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/row/row_data_collection.hpp +1 -2
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_allocator.hpp +7 -0
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +26 -2
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_layout.hpp +43 -5
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_segment.hpp +4 -11
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +10 -1
- package/src/duckdb/src/include/duckdb/common/types/selection_vector.hpp +8 -58
- package/src/duckdb/src/include/duckdb/common/types/string.hpp +338 -0
- package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +7 -1
- package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +7 -3
- package/src/duckdb/src/include/duckdb/common/types/uhugeint.hpp +4 -4
- package/src/duckdb/src/include/duckdb/common/types/uuid.hpp +5 -0
- package/src/duckdb/src/include/duckdb/common/types/validity_mask.hpp +14 -5
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +15 -2
- package/src/duckdb/src/include/duckdb/common/types/variant.hpp +202 -0
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +118 -5
- package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +8 -0
- package/src/duckdb/src/include/duckdb/common/types.hpp +26 -6
- package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +50 -11
- package/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp +2 -3
- package/src/duckdb/src/include/duckdb/common/winapi.hpp +0 -4
- package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +8 -6
- package/src/duckdb/src/include/duckdb/execution/executor.hpp +0 -2
- package/src/duckdb/src/include/duckdb/execution/expression_executor.hpp +4 -0
- package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +21 -2
- package/src/duckdb/src/include/duckdb/execution/ht_entry.hpp +4 -0
- package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +15 -16
- package/src/duckdb/src/include/duckdb/execution/index/art/art_builder.hpp +55 -0
- package/src/duckdb/src/include/duckdb/execution/index/art/art_key.hpp +0 -13
- package/src/duckdb/src/include/duckdb/execution/index/art/art_merger.hpp +1 -0
- package/src/duckdb/src/include/duckdb/execution/index/art/art_operator.hpp +113 -1
- package/src/duckdb/src/include/duckdb/execution/index/art/art_scanner.hpp +5 -2
- package/src/duckdb/src/include/duckdb/execution/index/art/base_leaf.hpp +2 -1
- package/src/duckdb/src/include/duckdb/execution/index/art/base_node.hpp +18 -15
- package/src/duckdb/src/include/duckdb/execution/index/art/iterator.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +30 -3
- package/src/duckdb/src/include/duckdb/execution/index/art/node256.hpp +30 -8
- package/src/duckdb/src/include/duckdb/execution/index/art/node256_leaf.hpp +8 -5
- package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +36 -9
- package/src/duckdb/src/include/duckdb/execution/index/art/prefix.hpp +9 -20
- package/src/duckdb/src/include/duckdb/execution/index/bound_index.hpp +8 -6
- package/src/duckdb/src/include/duckdb/execution/index/fixed_size_allocator.hpp +21 -4
- package/src/duckdb/src/include/duckdb/execution/index/fixed_size_buffer.hpp +95 -11
- package/src/duckdb/src/include/duckdb/execution/index/unbound_index.hpp +22 -11
- package/src/duckdb/src/include/duckdb/execution/join_hashtable.hpp +6 -1
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/distinct_aggregate_data.hpp +3 -2
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_hash_aggregate.hpp +12 -8
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_partitioned_aggregate.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_perfecthash_aggregate.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_streaming_window.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_ungrouped_aggregate.hpp +3 -2
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +4 -2
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_error.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_file_handle.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_multi_file_info.hpp +3 -3
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_reader_options.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state_machine.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/encode/csv_encoder.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/operator/filter/physical_filter.hpp +2 -1
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_batch_collector.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_buffered_batch_collector.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_buffered_collector.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_create_secret.hpp +3 -2
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_execute.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_explain_analyze.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit_percent.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_load.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_materialized_collector.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_pragma.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_prepare.hpp +3 -2
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_reservoir_sample.hpp +4 -2
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_reset.hpp +5 -4
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_set.hpp +6 -3
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_set_variable.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_streaming_limit.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_streaming_sample.hpp +2 -1
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_transaction.hpp +4 -2
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_update_extensions.hpp +3 -2
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_vacuum.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_verify_vector.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_asof_join.hpp +2 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_blockwise_nl_join.hpp +3 -2
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_comparison_join.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_cross_product.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_delim_join.hpp +4 -3
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_hash_join.hpp +4 -4
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_iejoin.hpp +5 -4
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_join.hpp +2 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_left_delim_join.hpp +4 -3
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_nested_loop_join.hpp +6 -5
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp +3 -3
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_positional_join.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_range_join.hpp +3 -3
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_right_delim_join.hpp +4 -3
- package/src/duckdb/src/include/duckdb/execution/operator/order/physical_order.hpp +13 -9
- package/src/duckdb/src/include/duckdb/execution/operator/order/physical_top_n.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_copy_to_file.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +3 -3
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_database.hpp +2 -1
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_delete.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_export.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_insert.hpp +3 -3
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_merge_into.hpp +87 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_update.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_pivot.hpp +2 -1
- package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_projection.hpp +2 -7
- package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_tableinout_function.hpp +6 -1
- package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_unnest.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +4 -4
- package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_dummy_scan.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_empty_result.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_expression_scan.hpp +4 -3
- package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_positional_scan.hpp +2 -1
- package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_table_scan.hpp +4 -3
- package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_alter.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_attach.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_art_index.hpp +4 -4
- package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_function.hpp +4 -2
- package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_schema.hpp +4 -2
- package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_sequence.hpp +4 -2
- package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_table.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_type.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_view.hpp +4 -2
- package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_detach.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_drop.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/set/physical_union.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +23 -22
- package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +7 -2
- package/src/duckdb/src/include/duckdb/execution/radix_partitioned_hashtable.hpp +4 -1
- package/src/duckdb/src/include/duckdb/execution/reservoir_sample.hpp +0 -1
- package/src/duckdb/src/include/duckdb/function/aggregate/distributive_functions.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +36 -11
- package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +1 -0
- package/src/duckdb/src/include/duckdb/function/cast/bound_cast_data.hpp +28 -0
- package/src/duckdb/src/include/duckdb/function/cast/cast_function_set.hpp +6 -1
- package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +5 -1
- package/src/duckdb/src/include/duckdb/function/cast/variant/array_to_variant.hpp +66 -0
- package/src/duckdb/src/include/duckdb/function/cast/variant/json_to_variant.hpp +283 -0
- package/src/duckdb/src/include/duckdb/function/cast/variant/list_to_variant.hpp +70 -0
- package/src/duckdb/src/include/duckdb/function/cast/variant/primitive_to_variant.hpp +399 -0
- package/src/duckdb/src/include/duckdb/function/cast/variant/struct_to_variant.hpp +111 -0
- package/src/duckdb/src/include/duckdb/function/cast/variant/to_variant.hpp +66 -0
- package/src/duckdb/src/include/duckdb/function/cast/variant/to_variant_fwd.hpp +179 -0
- package/src/duckdb/src/include/duckdb/function/cast/variant/union_to_variant.hpp +59 -0
- package/src/duckdb/src/include/duckdb/function/cast/variant/variant_to_variant.hpp +275 -0
- package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +2 -3
- package/src/duckdb/src/include/duckdb/function/copy_function.hpp +28 -10
- package/src/duckdb/src/include/duckdb/function/create_sort_key.hpp +13 -0
- package/src/duckdb/src/include/duckdb/function/function_binder.hpp +3 -0
- package/src/duckdb/src/include/duckdb/function/function_list.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +25 -3
- package/src/duckdb/src/include/duckdb/function/macro_function.hpp +18 -6
- package/src/duckdb/src/include/duckdb/function/pragma/pragma_functions.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/register_function_list_helper.hpp +34 -2
- package/src/duckdb/src/include/duckdb/function/scalar/compressed_materialization_functions.hpp +10 -0
- package/src/duckdb/src/include/duckdb/function/scalar/date_functions.hpp +6 -6
- package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +5 -5
- package/src/duckdb/src/include/duckdb/function/scalar/list_functions.hpp +19 -19
- package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +103 -103
- package/src/duckdb/src/include/duckdb/function/scalar/struct_functions.hpp +32 -0
- package/src/duckdb/src/include/duckdb/function/scalar/system_functions.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/scalar/variant_functions.hpp +38 -0
- package/src/duckdb/src/include/duckdb/function/scalar/variant_utils.hpp +85 -0
- package/src/duckdb/src/include/duckdb/function/table/arrow/arrow_duck_schema.hpp +8 -2
- package/src/duckdb/src/include/duckdb/function/table/arrow/arrow_type_info.hpp +2 -0
- package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +26 -11
- package/src/duckdb/src/include/duckdb/function/table/direct_file_reader.hpp +39 -0
- package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +2 -12
- package/src/duckdb/src/include/duckdb/function/table/read_file.hpp +83 -0
- package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +9 -1
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +8 -5
- package/src/duckdb/src/include/duckdb/function/window/window_aggregate_function.hpp +10 -10
- package/src/duckdb/src/include/duckdb/function/window/window_aggregator.hpp +25 -48
- package/src/duckdb/src/include/duckdb/function/window/window_collection.hpp +142 -0
- package/src/duckdb/src/include/duckdb/function/window/window_constant_aggregator.hpp +11 -12
- package/src/duckdb/src/include/duckdb/function/window/window_custom_aggregator.hpp +8 -8
- package/src/duckdb/src/include/duckdb/function/window/window_distinct_aggregator.hpp +10 -10
- package/src/duckdb/src/include/duckdb/function/window/window_executor.hpp +26 -40
- package/src/duckdb/src/include/duckdb/function/window/window_index_tree.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/window/window_merge_sort_tree.hpp +32 -30
- package/src/duckdb/src/include/duckdb/function/window/window_naive_aggregator.hpp +5 -3
- package/src/duckdb/src/include/duckdb/function/window/window_rank_function.hpp +17 -16
- package/src/duckdb/src/include/duckdb/function/window/window_rownumber_function.hpp +10 -9
- package/src/duckdb/src/include/duckdb/function/window/window_segment_tree.hpp +8 -8
- package/src/duckdb/src/include/duckdb/function/window/window_token_tree.hpp +6 -6
- package/src/duckdb/src/include/duckdb/function/window/window_value_function.hpp +44 -21
- package/src/duckdb/src/include/duckdb/logging/log_manager.hpp +12 -4
- package/src/duckdb/src/include/duckdb/logging/log_storage.hpp +271 -50
- package/src/duckdb/src/include/duckdb/main/appender.hpp +37 -16
- package/src/duckdb/src/include/duckdb/main/attached_database.hpp +18 -4
- package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +23 -6
- package/src/duckdb/src/include/duckdb/main/capi/extension_api.hpp +92 -8
- package/src/duckdb/src/include/duckdb/main/client_config.hpp +11 -70
- package/src/duckdb/src/include/duckdb/main/client_context.hpp +28 -5
- package/src/duckdb/src/include/duckdb/main/client_data.hpp +21 -23
- package/src/duckdb/src/include/duckdb/main/client_properties.hpp +3 -19
- package/src/duckdb/src/include/duckdb/main/config.hpp +48 -111
- package/src/duckdb/src/include/duckdb/main/database.hpp +23 -27
- package/src/duckdb/src/include/duckdb/main/database_file_opener.hpp +1 -0
- package/src/duckdb/src/include/duckdb/main/database_file_path_manager.hpp +39 -0
- package/src/duckdb/src/include/duckdb/main/database_manager.hpp +19 -21
- package/src/duckdb/src/include/duckdb/main/database_path_and_type.hpp +3 -1
- package/src/duckdb/src/include/duckdb/main/db_instance_cache.hpp +8 -4
- package/src/duckdb/src/include/duckdb/main/error_manager.hpp +3 -1
- package/src/duckdb/src/include/duckdb/main/extension/extension_loader.hpp +120 -0
- package/src/duckdb/src/include/duckdb/main/extension.hpp +2 -2
- package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +35 -0
- package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/extension_manager.hpp +59 -0
- package/src/duckdb/src/include/duckdb/main/extension_util.hpp +6 -77
- package/src/duckdb/src/include/duckdb/main/query_profiler.hpp +41 -23
- package/src/duckdb/src/include/duckdb/main/relation.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/secret/secret.hpp +1 -0
- package/src/duckdb/src/include/duckdb/main/secret/secret_manager.hpp +18 -18
- package/src/duckdb/src/include/duckdb/main/setting_info.hpp +109 -0
- package/src/duckdb/src/include/duckdb/main/settings.hpp +168 -184
- package/src/duckdb/src/include/duckdb/main/valid_checker.hpp +5 -2
- package/src/duckdb/src/include/duckdb/optimizer/build_probe_side_optimizer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/column_lifetime_analyzer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/compressed_materialization.hpp +4 -0
- package/src/duckdb/src/include/duckdb/optimizer/cte_inlining.hpp +50 -0
- package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +4 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +3 -0
- package/src/duckdb/src/include/duckdb/optimizer/late_materialization.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/rule/date_trunc_simplification.hpp +73 -0
- package/src/duckdb/src/include/duckdb/optimizer/rule/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parallel/interrupt.hpp +9 -3
- package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +3 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +18 -8
- package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +3 -4
- package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +6 -4
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_expression_iterator.hpp +14 -0
- package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/qualified_name.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/query_node/cte_node.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/statement/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/statement/merge_into_statement.hpp +72 -0
- package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -4
- package/src/duckdb/src/include/duckdb/parser/statement/update_statement.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/bound_ref_wrapper.hpp +38 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/column_data_ref.hpp +4 -9
- package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/showref.hpp +5 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +4 -0
- package/src/duckdb/src/include/duckdb/parser/tokens.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +9 -2
- package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +5 -0
- package/src/duckdb/src/include/duckdb/planner/binder.hpp +45 -8
- package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -0
- package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/constraints/bound_check_constraint.hpp +8 -0
- package/src/duckdb/src/include/duckdb/planner/constraints/bound_foreign_key_constraint.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/constraints/bound_not_null_constraint.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/constraints/bound_unique_constraint.hpp +5 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression_binder/projection_binder.hpp +37 -0
- package/src/duckdb/src/include/duckdb/planner/expression_binder/table_function_binder.hpp +3 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +3 -8
- package/src/duckdb/src/include/duckdb/planner/expression_iterator.hpp +18 -0
- package/src/duckdb/src/include/duckdb/planner/extension_callback.hpp +8 -0
- package/src/duckdb/src/include/duckdb/planner/logical_operator_deep_copy.hpp +67 -0
- package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_aggregate.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +2 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +28 -22
- package/src/duckdb/src/include/duckdb/planner/operator/logical_join.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_materialized_cte.hpp +5 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_merge_into.hpp +75 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +2 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_update.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/query_node/bound_cte_node.hpp +2 -0
- package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +26 -0
- package/src/duckdb/src/include/duckdb/storage/block.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/block_manager.hpp +24 -8
- package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +3 -1
- package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +55 -36
- package/src/duckdb/src/include/duckdb/storage/caching_file_system.hpp +10 -4
- package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +19 -6
- package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_reader.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +15 -8
- package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +6 -8
- package/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_fetch.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_analyze.hpp +4 -2
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_fetch.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_scan.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/packed_data.hpp +3 -1
- package/src/duckdb/src/include/duckdb/storage/compression/dict_fsst/compression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/dict_fsst/decompression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_fetch.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_scan.hpp +7 -2
- package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +5 -0
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +14 -9
- package/src/duckdb/src/include/duckdb/storage/external_file_cache.hpp +6 -5
- package/src/duckdb/src/include/duckdb/storage/in_memory_block_manager.hpp +7 -2
- package/src/duckdb/src/include/duckdb/storage/magic_bytes.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/metadata/metadata_manager.hpp +15 -0
- package/src/duckdb/src/include/duckdb/storage/metadata/metadata_reader.hpp +7 -0
- package/src/duckdb/src/include/duckdb/storage/metadata/metadata_writer.hpp +1 -0
- package/src/duckdb/src/include/duckdb/storage/optimistic_data_writer.hpp +10 -3
- package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +14 -3
- package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +65 -20
- package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +6 -6
- package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +4 -4
- package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +80 -20
- package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +43 -17
- package/src/duckdb/src/include/duckdb/storage/storage_options.hpp +21 -0
- package/src/duckdb/src/include/duckdb/storage/table/array_column_data.hpp +1 -0
- package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +7 -1
- package/src/duckdb/src/include/duckdb/storage/table/column_data_checkpointer.hpp +5 -2
- package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +10 -7
- package/src/duckdb/src/include/duckdb/storage/table/data_table_info.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/table/in_memory_checkpoint.hpp +93 -0
- package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +1 -0
- package/src/duckdb/src/include/duckdb/storage/table/persistent_table_data.hpp +1 -0
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +17 -2
- package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +11 -1
- package/src/duckdb/src/include/duckdb/storage/table/row_group_segment_tree.hpp +5 -0
- package/src/duckdb/src/include/duckdb/storage/table/row_id_column_data.hpp +68 -0
- package/src/duckdb/src/include/duckdb/storage/table/segment_lock.hpp +4 -0
- package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +34 -14
- package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +1 -0
- package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +1 -0
- package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +55 -46
- package/src/duckdb/src/include/duckdb/storage/table/update_segment.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/temporary_file_manager.hpp +17 -6
- package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +2 -1
- package/src/duckdb/src/include/duckdb/transaction/duck_transaction.hpp +3 -0
- package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +1 -0
- package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +3 -1
- package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +22 -1
- package/src/duckdb/src/include/duckdb/transaction/undo_buffer_allocator.hpp +2 -0
- package/src/duckdb/src/include/duckdb/verification/explain_statement_verifier.hpp +23 -0
- package/src/duckdb/src/include/duckdb/verification/statement_verifier.hpp +14 -7
- package/src/duckdb/src/include/duckdb.h +537 -121
- package/src/duckdb/src/include/duckdb_extension.h +122 -14
- package/src/duckdb/src/logging/log_manager.cpp +59 -15
- package/src/duckdb/src/logging/log_storage.cpp +672 -128
- package/src/duckdb/src/main/appender.cpp +129 -88
- package/src/duckdb/src/main/attached_database.cpp +47 -52
- package/src/duckdb/src/main/capi/aggregate_function-c.cpp +18 -9
- package/src/duckdb/src/main/capi/appender-c.cpp +82 -28
- package/src/duckdb/src/main/capi/arrow-c.cpp +181 -17
- package/src/duckdb/src/main/capi/config-c.cpp +18 -3
- package/src/duckdb/src/main/capi/data_chunk-c.cpp +22 -10
- package/src/duckdb/src/main/capi/duckdb-c.cpp +64 -21
- package/src/duckdb/src/main/capi/duckdb_value-c.cpp +13 -7
- package/src/duckdb/src/main/capi/error_data-c.cpp +46 -0
- package/src/duckdb/src/main/capi/expression-c.cpp +57 -0
- package/src/duckdb/src/main/capi/helper-c.cpp +227 -39
- package/src/duckdb/src/main/capi/logical_types-c.cpp +48 -28
- package/src/duckdb/src/main/capi/prepared-c.cpp +68 -10
- package/src/duckdb/src/main/capi/profiling_info-c.cpp +6 -4
- package/src/duckdb/src/main/capi/result-c.cpp +16 -95
- package/src/duckdb/src/main/capi/scalar_function-c.cpp +43 -1
- package/src/duckdb/src/main/capi/table_function-c.cpp +9 -0
- package/src/duckdb/src/main/client_config.cpp +21 -0
- package/src/duckdb/src/main/client_context.cpp +153 -77
- package/src/duckdb/src/main/client_context_file_opener.cpp +1 -0
- package/src/duckdb/src/main/client_data.cpp +139 -1
- package/src/duckdb/src/main/client_verify.cpp +14 -6
- package/src/duckdb/src/main/config.cpp +214 -121
- package/src/duckdb/src/main/database.cpp +31 -58
- package/src/duckdb/src/main/database_file_path_manager.cpp +42 -0
- package/src/duckdb/src/main/database_manager.cpp +134 -108
- package/src/duckdb/src/main/database_path_and_type.cpp +4 -3
- package/src/duckdb/src/main/db_instance_cache.cpp +64 -35
- package/src/duckdb/src/main/error_manager.cpp +2 -1
- package/src/duckdb/src/main/extension/extension_helper.cpp +3 -22
- package/src/duckdb/src/main/extension/extension_install.cpp +6 -6
- package/src/duckdb/src/main/extension/extension_load.cpp +24 -9
- package/src/duckdb/src/main/extension/extension_loader.cpp +234 -0
- package/src/duckdb/src/main/extension_manager.cpp +115 -0
- package/src/duckdb/src/main/http/http_util.cpp +18 -5
- package/src/duckdb/src/main/profiling_info.cpp +8 -2
- package/src/duckdb/src/main/query_profiler.cpp +65 -30
- package/src/duckdb/src/main/query_result.cpp +1 -1
- package/src/duckdb/src/main/relation/query_relation.cpp +23 -0
- package/src/duckdb/src/main/secret/secret_manager.cpp +8 -7
- package/src/duckdb/src/main/settings/autogenerated_settings.cpp +50 -645
- package/src/duckdb/src/main/settings/custom_settings.cpp +111 -152
- package/src/duckdb/src/main/valid_checker.cpp +10 -4
- package/src/duckdb/src/optimizer/build_probe_side_optimizer.cpp +7 -5
- package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +7 -7
- package/src/duckdb/src/optimizer/compressed_materialization/compress_comparison_join.cpp +11 -7
- package/src/duckdb/src/optimizer/compressed_materialization.cpp +56 -39
- package/src/duckdb/src/optimizer/cte_inlining.cpp +225 -0
- package/src/duckdb/src/optimizer/empty_result_pullup.cpp +8 -1
- package/src/duckdb/src/optimizer/filter_combiner.cpp +5 -7
- package/src/duckdb/src/optimizer/filter_pushdown.cpp +3 -0
- package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +18 -2
- package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +1 -0
- package/src/duckdb/src/optimizer/join_order/plan_enumerator.cpp +4 -3
- package/src/duckdb/src/optimizer/join_order/query_graph_manager.cpp +11 -15
- package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +40 -23
- package/src/duckdb/src/optimizer/late_materialization.cpp +16 -23
- package/src/duckdb/src/optimizer/optimizer.cpp +15 -0
- package/src/duckdb/src/optimizer/pushdown/pushdown_aggregate.cpp +15 -20
- package/src/duckdb/src/optimizer/pushdown/pushdown_left_join.cpp +11 -13
- package/src/duckdb/src/optimizer/pushdown/pushdown_outer_join.cpp +201 -0
- package/src/duckdb/src/optimizer/pushdown/pushdown_projection.cpp +20 -26
- package/src/duckdb/src/optimizer/pushdown/pushdown_set_operation.cpp +11 -14
- package/src/duckdb/src/optimizer/remove_unused_columns.cpp +2 -1
- package/src/duckdb/src/optimizer/rule/date_trunc_simplification.cpp +446 -0
- package/src/duckdb/src/optimizer/rule/join_dependent_filter.cpp +3 -9
- package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +1 -6
- package/src/duckdb/src/optimizer/rule/timestamp_comparison.cpp +3 -6
- package/src/duckdb/src/optimizer/statistics/operator/propagate_aggregate.cpp +33 -1
- package/src/duckdb/src/parallel/event.cpp +1 -3
- package/src/duckdb/src/parallel/executor.cpp +0 -7
- package/src/duckdb/src/parallel/pipeline.cpp +2 -2
- package/src/duckdb/src/parallel/pipeline_executor.cpp +2 -2
- package/src/duckdb/src/parallel/task_scheduler.cpp +146 -34
- package/src/duckdb/src/parallel/thread_context.cpp +2 -9
- package/src/duckdb/src/parser/column_definition.cpp +3 -6
- package/src/duckdb/src/parser/expression/window_expression.cpp +3 -0
- package/src/duckdb/src/parser/parsed_data/attach_info.cpp +8 -35
- package/src/duckdb/src/parser/parsed_data/copy_info.cpp +27 -7
- package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +8 -13
- package/src/duckdb/src/parser/parsed_data/create_info.cpp +16 -0
- package/src/duckdb/src/parser/parsed_data/create_macro_info.cpp +7 -17
- package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +1 -14
- package/src/duckdb/src/parser/parsed_data/create_type_info.cpp +1 -12
- package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +1 -13
- package/src/duckdb/src/parser/parsed_expression_iterator.cpp +22 -0
- package/src/duckdb/src/parser/parser.cpp +5 -0
- package/src/duckdb/src/parser/qualified_name.cpp +26 -0
- package/src/duckdb/src/parser/query_node/cte_node.cpp +1 -0
- package/src/duckdb/src/parser/query_node/select_node.cpp +1 -0
- package/src/duckdb/src/parser/query_node.cpp +1 -0
- package/src/duckdb/src/parser/statement/export_statement.cpp +1 -3
- package/src/duckdb/src/parser/statement/merge_into_statement.cpp +167 -0
- package/src/duckdb/src/parser/statement/update_statement.cpp +19 -16
- package/src/duckdb/src/parser/tableref/bound_ref_wrapper.cpp +29 -0
- package/src/duckdb/src/parser/tableref/column_data_ref.cpp +26 -1
- package/src/duckdb/src/parser/tableref/joinref.cpp +3 -2
- package/src/duckdb/src/parser/tableref/showref.cpp +14 -0
- package/src/duckdb/src/parser/tableref/table_function.cpp +6 -1
- package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +0 -1
- package/src/duckdb/src/parser/transform/expression/transform_function.cpp +6 -1
- package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +8 -11
- package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +3 -0
- package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +7 -5
- package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +4 -4
- package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +16 -80
- package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +27 -22
- package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +0 -1
- package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +1 -2
- package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +22 -14
- package/src/duckdb/src/parser/transform/statement/transform_merge_into.cpp +111 -0
- package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +2 -0
- package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +1 -1
- package/src/duckdb/src/parser/transform/statement/transform_show.cpp +22 -4
- package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +3 -1
- package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +12 -6
- package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +3 -3
- package/src/duckdb/src/parser/transformer.cpp +8 -7
- package/src/duckdb/src/planner/bind_context.cpp +19 -2
- package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +13 -6
- package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +3 -0
- package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +18 -4
- package/src/duckdb/src/planner/binder/expression/bind_macro_expression.cpp +8 -25
- package/src/duckdb/src/planner/binder/expression/bind_operator_expression.cpp +31 -4
- package/src/duckdb/src/planner/binder/expression/bind_unnest_expression.cpp +2 -0
- package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +48 -11
- package/src/duckdb/src/planner/binder/query_node/bind_cte_node.cpp +9 -1
- package/src/duckdb/src/planner/binder/query_node/bind_recursive_cte_node.cpp +4 -0
- package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +6 -6
- package/src/duckdb/src/planner/binder/query_node/bind_table_macro_node.cpp +11 -26
- package/src/duckdb/src/planner/binder/query_node/plan_cte_node.cpp +4 -3
- package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +10 -4
- package/src/duckdb/src/planner/binder/statement/bind_attach.cpp +15 -0
- package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +239 -58
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +157 -55
- package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +30 -25
- package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +2 -3
- package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +28 -3
- package/src/duckdb/src/planner/binder/statement/bind_export.cpp +36 -0
- package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +282 -322
- package/src/duckdb/src/planner/binder/statement/bind_merge_into.cpp +335 -0
- package/src/duckdb/src/planner/binder/statement/bind_update.cpp +23 -14
- package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +37 -27
- package/src/duckdb/src/planner/binder/tableref/bind_bound_table_ref.cpp +13 -0
- package/src/duckdb/src/planner/binder/tableref/bind_column_data_ref.cpp +4 -1
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +120 -36
- package/src/duckdb/src/planner/binder/tableref/bind_showref.cpp +30 -0
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +72 -1
- package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +7 -12
- package/src/duckdb/src/planner/binder/tableref/plan_table_function.cpp +15 -1
- package/src/duckdb/src/planner/binder.cpp +42 -175
- package/src/duckdb/src/planner/bound_result_modifier.cpp +8 -0
- package/src/duckdb/src/planner/collation_binding.cpp +2 -1
- package/src/duckdb/src/planner/expression.cpp +1 -1
- package/src/duckdb/src/planner/expression_binder/order_binder.cpp +4 -2
- package/src/duckdb/src/planner/expression_binder/projection_binder.cpp +46 -0
- package/src/duckdb/src/planner/expression_binder/table_function_binder.cpp +8 -6
- package/src/duckdb/src/planner/expression_iterator.cpp +31 -0
- package/src/duckdb/src/planner/logical_operator_deep_copy.cpp +264 -0
- package/src/duckdb/src/planner/logical_operator_visitor.cpp +18 -4
- package/src/duckdb/src/planner/operator/logical_aggregate.cpp +2 -1
- package/src/duckdb/src/planner/operator/logical_comparison_join.cpp +4 -2
- package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +3 -0
- package/src/duckdb/src/planner/operator/logical_get.cpp +7 -2
- package/src/duckdb/src/planner/operator/logical_insert.cpp +5 -2
- package/src/duckdb/src/planner/operator/logical_join.cpp +6 -7
- package/src/duckdb/src/planner/operator/logical_materialized_cte.cpp +1 -0
- package/src/duckdb/src/planner/operator/logical_merge_into.cpp +43 -0
- package/src/duckdb/src/planner/operator/logical_recursive_cte.cpp +8 -0
- package/src/duckdb/src/planner/planner.cpp +4 -2
- package/src/duckdb/src/planner/pragma_handler.cpp +1 -1
- package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +76 -7
- package/src/duckdb/src/planner/table_binding.cpp +6 -12
- package/src/duckdb/src/storage/block.cpp +2 -1
- package/src/duckdb/src/storage/buffer/block_handle.cpp +7 -4
- package/src/duckdb/src/storage/buffer/block_manager.cpp +14 -6
- package/src/duckdb/src/storage/buffer/buffer_pool.cpp +2 -2
- package/src/duckdb/src/storage/buffer_manager.cpp +45 -13
- package/src/duckdb/src/storage/caching_file_system.cpp +20 -12
- package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +26 -3
- package/src/duckdb/src/storage/checkpoint/table_data_reader.cpp +3 -1
- package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +56 -35
- package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +1 -1
- package/src/duckdb/src/storage/checkpoint_manager.cpp +12 -11
- package/src/duckdb/src/storage/compression/bitpacking.cpp +4 -1
- package/src/duckdb/src/storage/compression/dict_fsst/compression.cpp +48 -25
- package/src/duckdb/src/storage/compression/dict_fsst/decompression.cpp +10 -13
- package/src/duckdb/src/storage/compression/dict_fsst.cpp +2 -2
- package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +10 -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/zstd.cpp +5 -6
- package/src/duckdb/src/storage/data_table.cpp +167 -144
- package/src/duckdb/src/storage/external_file_cache.cpp +6 -6
- package/src/duckdb/src/storage/local_storage.cpp +132 -68
- package/src/duckdb/src/storage/magic_bytes.cpp +3 -2
- package/src/duckdb/src/storage/metadata/metadata_manager.cpp +88 -17
- package/src/duckdb/src/storage/metadata/metadata_reader.cpp +26 -3
- package/src/duckdb/src/storage/metadata/metadata_writer.cpp +7 -0
- package/src/duckdb/src/storage/open_file_storage_extension.cpp +3 -3
- package/src/duckdb/src/storage/optimistic_data_writer.cpp +5 -3
- package/src/duckdb/src/storage/partial_block_manager.cpp +26 -5
- package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +72 -22
- package/src/duckdb/src/storage/serialization/serialize_macro_function.cpp +9 -3
- package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +2 -0
- package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +12 -2
- package/src/duckdb/src/storage/serialization/serialize_types.cpp +14 -0
- package/src/duckdb/src/storage/single_file_block_manager.cpp +381 -86
- package/src/duckdb/src/storage/standard_buffer_manager.cpp +86 -30
- package/src/duckdb/src/storage/statistics/base_statistics.cpp +3 -3
- package/src/duckdb/src/storage/statistics/string_stats.cpp +2 -2
- package/src/duckdb/src/storage/statistics/struct_stats.cpp +1 -1
- package/src/duckdb/src/storage/storage_info.cpp +13 -7
- package/src/duckdb/src/storage/storage_manager.cpp +110 -35
- package/src/duckdb/src/storage/table/array_column_data.cpp +4 -0
- package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +22 -15
- package/src/duckdb/src/storage/table/column_data.cpp +53 -14
- package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +17 -17
- package/src/duckdb/src/storage/table/column_segment.cpp +23 -21
- package/src/duckdb/src/storage/table/in_memory_checkpoint.cpp +136 -0
- package/src/duckdb/src/storage/table/list_column_data.cpp +6 -1
- package/src/duckdb/src/storage/table/row_group.cpp +226 -154
- package/src/duckdb/src/storage/table/row_group_collection.cpp +146 -47
- package/src/duckdb/src/storage/table/row_id_column_data.cpp +173 -0
- package/src/duckdb/src/storage/table/row_version_manager.cpp +1 -1
- package/src/duckdb/src/storage/table/standard_column_data.cpp +14 -2
- package/src/duckdb/src/storage/table/struct_column_data.cpp +15 -0
- package/src/duckdb/src/storage/table/update_segment.cpp +111 -5
- package/src/duckdb/src/storage/table_index_list.cpp +137 -73
- package/src/duckdb/src/storage/temporary_file_manager.cpp +103 -28
- package/src/duckdb/src/storage/wal_replay.cpp +158 -36
- package/src/duckdb/src/storage/write_ahead_log.cpp +102 -17
- package/src/duckdb/src/transaction/commit_state.cpp +2 -0
- package/src/duckdb/src/transaction/duck_transaction.cpp +12 -2
- package/src/duckdb/src/transaction/duck_transaction_manager.cpp +66 -35
- package/src/duckdb/src/transaction/meta_transaction.cpp +85 -23
- package/src/duckdb/src/transaction/rollback_state.cpp +7 -0
- package/src/duckdb/src/transaction/transaction_context.cpp +3 -4
- package/src/duckdb/src/transaction/undo_buffer.cpp +5 -4
- package/src/duckdb/src/transaction/undo_buffer_allocator.cpp +1 -0
- package/src/duckdb/src/transaction/wal_write_state.cpp +2 -0
- package/src/duckdb/src/verification/explain_statement_verifier.cpp +16 -0
- package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
- package/src/duckdb/src/verification/statement_verifier.cpp +10 -5
- package/src/duckdb/third_party/brotli/common/shared_dictionary.cpp +4 -4
- package/src/duckdb/third_party/fmt/include/fmt/core.h +6 -12
- package/src/duckdb/third_party/fmt/include/fmt/format-inl.h +5 -1
- package/src/duckdb/third_party/fmt/include/fmt/format.h +34 -24
- package/src/duckdb/third_party/fmt/include/fmt/printf.h +49 -21
- package/src/duckdb/third_party/httplib/httplib.hpp +13 -5
- package/src/duckdb/third_party/jaro_winkler/details/jaro_impl.hpp +4 -4
- package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +3 -0
- package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +56 -1
- package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +744 -733
- package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +6 -1
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +19098 -18654
- package/src/duckdb/third_party/mbedtls/include/des_alt.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/aes_alt.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/aria_alt.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/block_cipher.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/build_info.h +4 -4
- package/src/duckdb/third_party/mbedtls/include/mbedtls/camellia_alt.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/ccm_alt.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/chacha20.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/chachapoly.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/cmac.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/config_psa.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/ecdsa.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/gcm_alt.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/mbedtls_config.h +5 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/md5.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/nist_kw.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/pkcs12.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/pkcs5.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/psa_util.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/ripemd160.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/sha3.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/threading.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/timing.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls_wrapper.hpp +16 -7
- package/src/duckdb/third_party/mbedtls/include/platform_alt.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/psa/build_info.h +20 -0
- package/src/duckdb/third_party/mbedtls/include/psa/crypto.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/psa/crypto_config.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/psa/crypto_se_driver.h +1 -0
- package/src/duckdb/third_party/mbedtls/include/rsa_alt.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/sha1_alt.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/sha256_alt.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/sha512_alt.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/ssl_misc.h +1 -1
- package/src/duckdb/third_party/mbedtls/library/aes.cpp +1 -1
- package/src/duckdb/third_party/mbedtls/library/aesce.h +136 -1
- package/src/duckdb/third_party/mbedtls/library/alignment.h +9 -9
- package/src/duckdb/third_party/mbedtls/library/asn1parse.cpp +1 -1
- package/src/duckdb/third_party/mbedtls/library/asn1write.cpp +6 -3
- package/src/duckdb/third_party/mbedtls/library/base64.cpp +48 -24
- package/src/duckdb/third_party/mbedtls/library/base64_internal.h +45 -1
- package/src/duckdb/third_party/mbedtls/library/bignum.cpp +3 -3
- package/src/duckdb/third_party/mbedtls/library/bignum_core.cpp +16 -14
- package/src/duckdb/third_party/mbedtls/library/bignum_core.h +10 -18
- package/src/duckdb/third_party/mbedtls/library/block_cipher_internal.h +99 -1
- package/src/duckdb/third_party/mbedtls/library/check_crypto_config.h +141 -1
- package/src/duckdb/third_party/mbedtls/library/cipher.cpp +18 -12
- package/src/duckdb/third_party/mbedtls/library/cipher_invasive.h +1 -0
- package/src/duckdb/third_party/mbedtls/library/cipher_wrap.cpp +110 -10
- package/src/duckdb/third_party/mbedtls/library/cipher_wrap.h +1 -1
- package/src/duckdb/third_party/mbedtls/library/common.h +20 -4
- package/src/duckdb/third_party/mbedtls/library/constant_time.cpp +1 -1
- package/src/duckdb/third_party/mbedtls/library/constant_time_impl.h +28 -43
- package/src/duckdb/third_party/mbedtls/library/constant_time_internal.h +24 -24
- package/src/duckdb/third_party/mbedtls/library/ctr.h +35 -1
- package/src/duckdb/third_party/mbedtls/library/gcm.cpp +2 -2
- package/src/duckdb/third_party/mbedtls/library/md.cpp +11 -11
- package/src/duckdb/third_party/mbedtls/library/md_psa.h +1 -1
- package/src/duckdb/third_party/mbedtls/library/oid.cpp +2 -2
- package/src/duckdb/third_party/mbedtls/library/pem.cpp +5 -2
- package/src/duckdb/third_party/mbedtls/library/pk.cpp +1 -5
- package/src/duckdb/third_party/mbedtls/library/pk_internal.h +4 -4
- package/src/duckdb/third_party/mbedtls/library/pk_wrap.cpp +16 -18
- package/src/duckdb/third_party/mbedtls/library/pkwrite.h +121 -1
- package/src/duckdb/third_party/mbedtls/library/psa_crypto_core.h +995 -1
- package/src/duckdb/third_party/mbedtls/library/psa_util_internal.h +100 -1
- package/src/duckdb/third_party/mbedtls/library/rsa.cpp +4 -4
- package/src/duckdb/third_party/mbedtls/mbedtls_wrapper.cpp +114 -42
- package/src/duckdb/third_party/parquet/parquet_types.cpp +2340 -769
- package/src/duckdb/third_party/parquet/parquet_types.h +400 -4
- package/src/duckdb/third_party/pdqsort/pdqsort.h +550 -0
- package/src/duckdb/third_party/ska_sort/ska_sort.hpp +1494 -0
- package/src/duckdb/third_party/snappy/snappy-stubs-internal.h +18 -18
- package/src/duckdb/third_party/snappy/snappy.cc +6 -6
- package/src/duckdb/third_party/thrift/thrift/protocol/TCompactProtocol.h +4 -4
- package/src/duckdb/third_party/thrift/thrift/protocol/TCompactProtocol.tcc +36 -36
- package/src/duckdb/third_party/utf8proc/include/utf8proc_wrapper.hpp +1 -1
- package/src/duckdb/third_party/utf8proc/utf8proc_wrapper.cpp +1 -1
- package/src/duckdb/third_party/vergesort/detail/insertion_sort.h +56 -0
- package/src/duckdb/third_party/vergesort/detail/is_sorted_until.h +51 -0
- package/src/duckdb/third_party/vergesort/detail/iter_sort3.h +48 -0
- package/src/duckdb/third_party/vergesort/detail/log2.h +41 -0
- package/src/duckdb/third_party/vergesort/detail/prevnext.h +68 -0
- package/src/duckdb/third_party/vergesort/detail/quicksort.h +138 -0
- package/src/duckdb/third_party/vergesort/vergesort.h +352 -0
- package/src/duckdb/ub_extension_core_functions_scalar_generic.cpp +2 -0
- package/src/duckdb/ub_extension_core_functions_scalar_struct.cpp +2 -0
- package/src/duckdb/ub_extension_parquet_reader.cpp +2 -0
- package/src/duckdb/ub_extension_parquet_reader_variant.cpp +6 -0
- package/src/duckdb/ub_src_common.cpp +8 -0
- package/src/duckdb/ub_src_common_arrow_appender.cpp +2 -0
- package/src/duckdb/ub_src_common_progress_bar.cpp +2 -0
- package/src/duckdb/ub_src_common_sorting.cpp +8 -0
- package/src/duckdb/ub_src_common_tree_renderer.cpp +2 -0
- package/src/duckdb/ub_src_common_types.cpp +1 -1
- package/src/duckdb/ub_src_common_types_row.cpp +2 -0
- package/src/duckdb/ub_src_execution_index_art.cpp +11 -9
- package/src/duckdb/ub_src_execution_operator_persistent.cpp +2 -0
- package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
- package/src/duckdb/ub_src_function.cpp +2 -0
- package/src/duckdb/ub_src_function_cast.cpp +1 -1
- package/src/duckdb/ub_src_function_cast_variant.cpp +6 -0
- package/src/duckdb/ub_src_function_scalar_struct.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar_variant.cpp +6 -0
- package/src/duckdb/ub_src_function_table.cpp +2 -0
- package/src/duckdb/ub_src_function_table_system.cpp +4 -0
- package/src/duckdb/ub_src_main.cpp +4 -0
- package/src/duckdb/ub_src_main_capi.cpp +4 -0
- package/src/duckdb/ub_src_optimizer.cpp +2 -0
- package/src/duckdb/ub_src_optimizer_pushdown.cpp +2 -0
- package/src/duckdb/ub_src_optimizer_rule.cpp +2 -0
- package/src/duckdb/ub_src_parser_statement.cpp +2 -0
- package/src/duckdb/ub_src_parser_tableref.cpp +2 -0
- package/src/duckdb/ub_src_parser_transform_statement.cpp +2 -0
- package/src/duckdb/ub_src_planner.cpp +2 -0
- package/src/duckdb/ub_src_planner_binder_statement.cpp +2 -0
- package/src/duckdb/ub_src_planner_binder_tableref.cpp +2 -0
- package/src/duckdb/ub_src_planner_expression_binder.cpp +2 -0
- package/src/duckdb/ub_src_planner_operator.cpp +2 -0
- package/src/duckdb/ub_src_storage_table.cpp +4 -0
- package/test/columns.test.ts +1 -1
- package/test/exec.test.ts +3 -3
- package/test/jsdoc.test.ts +2 -1
- package/test/syntax_error.test.ts +1 -1
- package/test/test_all_types.test.ts +1 -1
@@ -1,16 +1,10 @@
|
|
1
1
|
#include "duckdb/common/operator/decimal_cast_operators.hpp"
|
2
|
-
#include "duckdb/common/vector_operations/vector_operations.hpp"
|
3
|
-
#include "duckdb/common/algorithm.hpp"
|
4
2
|
#include "duckdb/common/likely.hpp"
|
5
3
|
#include "duckdb/common/operator/abs.hpp"
|
6
4
|
#include "duckdb/common/operator/multiply.hpp"
|
7
|
-
#include "duckdb/common/operator/numeric_binary_operators.hpp"
|
8
5
|
#include "duckdb/common/types/bit.hpp"
|
9
6
|
#include "duckdb/common/types/cast_helpers.hpp"
|
10
7
|
#include "duckdb/common/types/hugeint.hpp"
|
11
|
-
#include "duckdb/common/types/uhugeint.hpp"
|
12
|
-
#include "duckdb/common/types/validity_mask.hpp"
|
13
|
-
#include "duckdb/common/types/vector.hpp"
|
14
8
|
#include "duckdb/common/vector_operations/unary_executor.hpp"
|
15
9
|
#include "core_functions/scalar/math_functions.hpp"
|
16
10
|
#include "duckdb/execution/expression_executor.hpp"
|
@@ -18,9 +12,6 @@
|
|
18
12
|
|
19
13
|
#include <cmath>
|
20
14
|
#include <cstdint>
|
21
|
-
#include <errno.h>
|
22
|
-
#include <limits>
|
23
|
-
#include <type_traits>
|
24
15
|
|
25
16
|
namespace duckdb {
|
26
17
|
|
@@ -52,6 +43,9 @@ static scalar_function_t GetScalarIntegerUnaryFunctionFixedReturn(const LogicalT
|
|
52
43
|
//===--------------------------------------------------------------------===//
|
53
44
|
// nextafter
|
54
45
|
//===--------------------------------------------------------------------===//
|
46
|
+
|
47
|
+
namespace {
|
48
|
+
|
55
49
|
struct NextAfterOperator {
|
56
50
|
template <class TA, class TB, class TR>
|
57
51
|
static inline TR Operation(TA base, TB exponent) {
|
@@ -68,6 +62,8 @@ struct NextAfterOperator {
|
|
68
62
|
}
|
69
63
|
};
|
70
64
|
|
65
|
+
} // namespace
|
66
|
+
|
71
67
|
ScalarFunctionSet NextAfterFun::GetFunctions() {
|
72
68
|
ScalarFunctionSet next_after_fun;
|
73
69
|
next_after_fun.AddFunction(
|
@@ -204,6 +200,9 @@ ScalarFunctionSet AbsOperatorFun::GetFunctions() {
|
|
204
200
|
//===--------------------------------------------------------------------===//
|
205
201
|
// bit_count
|
206
202
|
//===--------------------------------------------------------------------===//
|
203
|
+
|
204
|
+
namespace {
|
205
|
+
|
207
206
|
struct BitCntOperator {
|
208
207
|
template <class TA, class TR>
|
209
208
|
static inline TR Operation(TA input) {
|
@@ -236,10 +235,11 @@ struct BitStringBitCntOperator {
|
|
236
235
|
template <class TA, class TR>
|
237
236
|
static inline TR Operation(TA input) {
|
238
237
|
TR count = Bit::BitCount(input);
|
239
|
-
return count;
|
238
|
+
return UnsafeNumericCast<TR>(count);
|
240
239
|
}
|
241
240
|
};
|
242
241
|
|
242
|
+
} // namespace
|
243
243
|
ScalarFunctionSet BitCountFun::GetFunctions() {
|
244
244
|
ScalarFunctionSet functions;
|
245
245
|
functions.AddFunction(ScalarFunction({LogicalType::TINYINT}, LogicalType::TINYINT,
|
@@ -253,13 +253,15 @@ ScalarFunctionSet BitCountFun::GetFunctions() {
|
|
253
253
|
functions.AddFunction(ScalarFunction({LogicalType::HUGEINT}, LogicalType::TINYINT,
|
254
254
|
ScalarFunction::UnaryFunction<hugeint_t, int8_t, HugeIntBitCntOperator>));
|
255
255
|
functions.AddFunction(ScalarFunction({LogicalType::BIT}, LogicalType::BIGINT,
|
256
|
-
ScalarFunction::UnaryFunction<string_t,
|
256
|
+
ScalarFunction::UnaryFunction<string_t, int64_t, BitStringBitCntOperator>));
|
257
257
|
return functions;
|
258
258
|
}
|
259
259
|
|
260
260
|
//===--------------------------------------------------------------------===//
|
261
261
|
// sign
|
262
262
|
//===--------------------------------------------------------------------===//
|
263
|
+
namespace {
|
264
|
+
|
263
265
|
struct SignOperator {
|
264
266
|
template <class TA, class TR>
|
265
267
|
static TR Operation(TA input) {
|
@@ -295,6 +297,7 @@ int8_t SignOperator::Operation(double input) {
|
|
295
297
|
}
|
296
298
|
}
|
297
299
|
|
300
|
+
} // namespace
|
298
301
|
ScalarFunctionSet SignFun::GetFunctions() {
|
299
302
|
ScalarFunctionSet sign;
|
300
303
|
for (auto &type : LogicalType::Numeric()) {
|
@@ -312,12 +315,14 @@ ScalarFunctionSet SignFun::GetFunctions() {
|
|
312
315
|
//===--------------------------------------------------------------------===//
|
313
316
|
// ceil
|
314
317
|
//===--------------------------------------------------------------------===//
|
318
|
+
namespace {
|
315
319
|
struct CeilOperator {
|
316
320
|
template <class TA, class TR>
|
317
321
|
static inline TR Operation(TA left) {
|
318
322
|
return std::ceil(left);
|
319
323
|
}
|
320
324
|
};
|
325
|
+
} // namespace
|
321
326
|
|
322
327
|
template <class T, class POWERS_OF_TEN, class OP>
|
323
328
|
static void GenericRoundFunctionDecimal(DataChunk &input, ExpressionState &state, Vector &result) {
|
@@ -326,8 +331,8 @@ static void GenericRoundFunctionDecimal(DataChunk &input, ExpressionState &state
|
|
326
331
|
}
|
327
332
|
|
328
333
|
template <class OP>
|
329
|
-
unique_ptr<FunctionData> BindGenericRoundFunctionDecimal(ClientContext &context, ScalarFunction &bound_function,
|
330
|
-
|
334
|
+
static unique_ptr<FunctionData> BindGenericRoundFunctionDecimal(ClientContext &context, ScalarFunction &bound_function,
|
335
|
+
vector<unique_ptr<Expression>> &arguments) {
|
331
336
|
// ceil essentially removes the scale
|
332
337
|
auto &decimal_type = arguments[0]->return_type;
|
333
338
|
auto scale = DecimalType::GetScale(decimal_type);
|
@@ -355,6 +360,7 @@ unique_ptr<FunctionData> BindGenericRoundFunctionDecimal(ClientContext &context,
|
|
355
360
|
return nullptr;
|
356
361
|
}
|
357
362
|
|
363
|
+
namespace {
|
358
364
|
struct CeilDecimalOperator {
|
359
365
|
template <class T, class POWERS_OF_TEN_CLASS>
|
360
366
|
static void Operation(DataChunk &input, uint8_t scale, Vector &result) {
|
@@ -370,6 +376,7 @@ struct CeilDecimalOperator {
|
|
370
376
|
});
|
371
377
|
}
|
372
378
|
};
|
379
|
+
} // namespace
|
373
380
|
|
374
381
|
ScalarFunctionSet CeilFun::GetFunctions() {
|
375
382
|
ScalarFunctionSet ceil;
|
@@ -401,6 +408,7 @@ ScalarFunctionSet CeilFun::GetFunctions() {
|
|
401
408
|
//===--------------------------------------------------------------------===//
|
402
409
|
// floor
|
403
410
|
//===--------------------------------------------------------------------===//
|
411
|
+
namespace {
|
404
412
|
struct FloorOperator {
|
405
413
|
template <class TA, class TR>
|
406
414
|
static inline TR Operation(TA left) {
|
@@ -423,6 +431,7 @@ struct FloorDecimalOperator {
|
|
423
431
|
});
|
424
432
|
}
|
425
433
|
};
|
434
|
+
} // namespace
|
426
435
|
|
427
436
|
ScalarFunctionSet FloorFun::GetFunctions() {
|
428
437
|
ScalarFunctionSet floor;
|
@@ -454,6 +463,118 @@ ScalarFunctionSet FloorFun::GetFunctions() {
|
|
454
463
|
//===--------------------------------------------------------------------===//
|
455
464
|
// trunc
|
456
465
|
//===--------------------------------------------------------------------===//
|
466
|
+
namespace {
|
467
|
+
|
468
|
+
struct RoundPrecisionFunctionData : public FunctionData {
|
469
|
+
explicit RoundPrecisionFunctionData(int32_t target_scale) : target_scale(target_scale) {
|
470
|
+
}
|
471
|
+
|
472
|
+
int32_t target_scale;
|
473
|
+
|
474
|
+
unique_ptr<FunctionData> Copy() const override {
|
475
|
+
return make_uniq<RoundPrecisionFunctionData>(target_scale);
|
476
|
+
}
|
477
|
+
|
478
|
+
bool Equals(const FunctionData &other_p) const override {
|
479
|
+
auto &other = other_p.Cast<RoundPrecisionFunctionData>();
|
480
|
+
return target_scale == other.target_scale;
|
481
|
+
}
|
482
|
+
};
|
483
|
+
|
484
|
+
template <class T, class POWERS_OF_TEN, class OP>
|
485
|
+
static void GenericRoundPrecisionDecimal(DataChunk &input, ExpressionState &state, Vector &result) {
|
486
|
+
OP::template Operation<T, POWERS_OF_TEN>(input, state, result);
|
487
|
+
}
|
488
|
+
|
489
|
+
template <typename NEGOP, typename POSOP>
|
490
|
+
static unique_ptr<FunctionData> BindDecimalRoundPrecision(ClientContext &context, ScalarFunction &bound_function,
|
491
|
+
vector<unique_ptr<Expression>> &arguments) {
|
492
|
+
auto &decimal_type = arguments[0]->return_type;
|
493
|
+
if (arguments[1]->HasParameter()) {
|
494
|
+
throw ParameterNotResolvedException();
|
495
|
+
}
|
496
|
+
auto fname = StringUtil::Upper(bound_function.name);
|
497
|
+
if (!arguments[1]->IsFoldable()) {
|
498
|
+
throw NotImplementedException("%s(DECIMAL, INTEGER) with non-constant precision is not supported", fname);
|
499
|
+
}
|
500
|
+
Value val = ExpressionExecutor::EvaluateScalar(context, *arguments[1]).DefaultCastAs(LogicalType::INTEGER);
|
501
|
+
if (val.IsNull()) {
|
502
|
+
throw NotImplementedException("%s(DECIMAL, INTEGER) with non-constant precision is not supported", fname);
|
503
|
+
}
|
504
|
+
// our new precision becomes the round value
|
505
|
+
// e.g. ROUND(DECIMAL(18,3), 1) -> DECIMAL(18,1)
|
506
|
+
// but ONLY if the round value is positive
|
507
|
+
// if it is negative the scale becomes zero
|
508
|
+
// i.e. ROUND(DECIMAL(18,3), -1) -> DECIMAL(18,0)
|
509
|
+
int32_t round_value = IntegerValue::Get(val);
|
510
|
+
uint8_t target_scale;
|
511
|
+
auto width = DecimalType::GetWidth(decimal_type);
|
512
|
+
auto scale = DecimalType::GetScale(decimal_type);
|
513
|
+
if (round_value < 0) {
|
514
|
+
target_scale = 0;
|
515
|
+
switch (decimal_type.InternalType()) {
|
516
|
+
case PhysicalType::INT16:
|
517
|
+
bound_function.function = GenericRoundPrecisionDecimal<int16_t, NumericHelper, NEGOP>;
|
518
|
+
break;
|
519
|
+
case PhysicalType::INT32:
|
520
|
+
bound_function.function = GenericRoundPrecisionDecimal<int32_t, NumericHelper, NEGOP>;
|
521
|
+
break;
|
522
|
+
case PhysicalType::INT64:
|
523
|
+
bound_function.function = GenericRoundPrecisionDecimal<int64_t, NumericHelper, NEGOP>;
|
524
|
+
break;
|
525
|
+
default:
|
526
|
+
bound_function.function = GenericRoundPrecisionDecimal<hugeint_t, Hugeint, NEGOP>;
|
527
|
+
break;
|
528
|
+
}
|
529
|
+
} else {
|
530
|
+
if (round_value >= (int32_t)scale) {
|
531
|
+
// if round_value is bigger than or equal to scale we do nothing
|
532
|
+
bound_function.function = ScalarFunction::NopFunction;
|
533
|
+
target_scale = scale;
|
534
|
+
} else {
|
535
|
+
target_scale = NumericCast<uint8_t>(round_value);
|
536
|
+
switch (decimal_type.InternalType()) {
|
537
|
+
case PhysicalType::INT16:
|
538
|
+
bound_function.function = GenericRoundPrecisionDecimal<int16_t, NumericHelper, POSOP>;
|
539
|
+
break;
|
540
|
+
case PhysicalType::INT32:
|
541
|
+
bound_function.function = GenericRoundPrecisionDecimal<int32_t, NumericHelper, POSOP>;
|
542
|
+
break;
|
543
|
+
case PhysicalType::INT64:
|
544
|
+
bound_function.function = GenericRoundPrecisionDecimal<int64_t, NumericHelper, POSOP>;
|
545
|
+
break;
|
546
|
+
default:
|
547
|
+
bound_function.function = GenericRoundPrecisionDecimal<hugeint_t, Hugeint, POSOP>;
|
548
|
+
break;
|
549
|
+
}
|
550
|
+
}
|
551
|
+
}
|
552
|
+
bound_function.arguments[0] = decimal_type;
|
553
|
+
bound_function.return_type = LogicalType::DECIMAL(width, target_scale);
|
554
|
+
return make_uniq<RoundPrecisionFunctionData>(round_value);
|
555
|
+
}
|
556
|
+
|
557
|
+
struct TruncOperatorPrecision {
|
558
|
+
template <class TA, class TB, class TR>
|
559
|
+
static inline TR Operation(TA input, TB precision) {
|
560
|
+
double trunc_value;
|
561
|
+
if (precision < 0) {
|
562
|
+
double modifier = std::pow(10, -TA(precision));
|
563
|
+
trunc_value = (std::trunc(input / modifier)) * modifier;
|
564
|
+
if (std::isinf(trunc_value) || std::isnan(trunc_value)) {
|
565
|
+
return input;
|
566
|
+
}
|
567
|
+
} else {
|
568
|
+
double modifier = std::pow(10, TA(precision));
|
569
|
+
trunc_value = (std::trunc(input * modifier)) / modifier;
|
570
|
+
if (std::isinf(trunc_value) || std::isnan(trunc_value)) {
|
571
|
+
return input;
|
572
|
+
}
|
573
|
+
}
|
574
|
+
return LossyNumericCast<TR>(trunc_value);
|
575
|
+
}
|
576
|
+
};
|
577
|
+
|
457
578
|
struct TruncOperator {
|
458
579
|
// Integer truncation is a NOP
|
459
580
|
template <class TA, class TR>
|
@@ -473,38 +594,134 @@ struct TruncDecimalOperator {
|
|
473
594
|
}
|
474
595
|
};
|
475
596
|
|
597
|
+
struct TruncDecimalNegativePrecisionOperator {
|
598
|
+
template <class T, class POWERS_OF_TEN_CLASS>
|
599
|
+
static void Operation(DataChunk &input, ExpressionState &state, Vector &result) {
|
600
|
+
auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
|
601
|
+
auto &info = func_expr.bind_info->Cast<RoundPrecisionFunctionData>();
|
602
|
+
auto source_scale = DecimalType::GetScale(func_expr.children[0]->return_type);
|
603
|
+
auto width = DecimalType::GetWidth(func_expr.children[0]->return_type);
|
604
|
+
if (info.target_scale <= -int32_t(width - source_scale)) {
|
605
|
+
// scale too big for width
|
606
|
+
result.SetVectorType(VectorType::CONSTANT_VECTOR);
|
607
|
+
result.SetValue(0, Value::INTEGER(0));
|
608
|
+
return;
|
609
|
+
}
|
610
|
+
T divide_power_of_ten =
|
611
|
+
UnsafeNumericCast<T>(POWERS_OF_TEN_CLASS::POWERS_OF_TEN[-info.target_scale + source_scale]);
|
612
|
+
T multiply_power_of_ten = UnsafeNumericCast<T>(POWERS_OF_TEN_CLASS::POWERS_OF_TEN[-info.target_scale]);
|
613
|
+
|
614
|
+
UnaryExecutor::Execute<T, T>(input.data[0], result, input.size(), [&](T input) {
|
615
|
+
return UnsafeNumericCast<T>(input / divide_power_of_ten * multiply_power_of_ten);
|
616
|
+
});
|
617
|
+
}
|
618
|
+
};
|
619
|
+
|
620
|
+
struct TruncDecimalPositivePrecisionOperator {
|
621
|
+
template <class T, class POWERS_OF_TEN_CLASS>
|
622
|
+
static void Operation(DataChunk &input, ExpressionState &state, Vector &result) {
|
623
|
+
auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
|
624
|
+
auto &info = func_expr.bind_info->Cast<RoundPrecisionFunctionData>();
|
625
|
+
auto source_scale = DecimalType::GetScale(func_expr.children[0]->return_type);
|
626
|
+
T power_of_ten = UnsafeNumericCast<T>(POWERS_OF_TEN_CLASS::POWERS_OF_TEN[source_scale - info.target_scale]);
|
627
|
+
UnaryExecutor::Execute<T, T>(input.data[0], result, input.size(),
|
628
|
+
[&](T input) { return UnsafeNumericCast<T>(input / power_of_ten); });
|
629
|
+
}
|
630
|
+
};
|
631
|
+
|
632
|
+
struct TruncIntegerOperator {
|
633
|
+
template <class TA, class TB, class TR>
|
634
|
+
static inline TR Operation(TA input, TB precision) {
|
635
|
+
if (precision < 0) {
|
636
|
+
// Do all the arithmetic at higher precision
|
637
|
+
using POWERS_OF_TEN_CLASS = typename DecimalCastTraits<TA>::POWERS_OF_TEN_CLASS;
|
638
|
+
if (precision <= -POWERS_OF_TEN_CLASS::CACHED_POWERS_OF_TEN) {
|
639
|
+
return 0;
|
640
|
+
}
|
641
|
+
const auto power_of_ten = POWERS_OF_TEN_CLASS::POWERS_OF_TEN[-precision];
|
642
|
+
auto result = input;
|
643
|
+
result /= power_of_ten;
|
644
|
+
if (result) {
|
645
|
+
return UnsafeNumericCast<TR>(result * power_of_ten);
|
646
|
+
} else {
|
647
|
+
return 0;
|
648
|
+
}
|
649
|
+
} else {
|
650
|
+
// Truncating integers to higher precision is a NOP
|
651
|
+
return input;
|
652
|
+
}
|
653
|
+
}
|
654
|
+
};
|
655
|
+
|
656
|
+
} // namespace
|
657
|
+
|
476
658
|
ScalarFunctionSet TruncFun::GetFunctions() {
|
477
659
|
ScalarFunctionSet trunc;
|
478
660
|
for (auto &type : LogicalType::Numeric()) {
|
479
|
-
scalar_function_t
|
661
|
+
scalar_function_t trunc_func = nullptr;
|
662
|
+
scalar_function_t trunc_prec_func = nullptr;
|
480
663
|
bind_scalar_function_t bind_func = nullptr;
|
664
|
+
bind_scalar_function_t bind_prec_func = nullptr;
|
481
665
|
// Truncation of integers gets generated by some tools (e.g., Tableau/JDBC:Postgres)
|
482
666
|
switch (type.id()) {
|
483
667
|
case LogicalTypeId::FLOAT:
|
484
|
-
|
668
|
+
trunc_func = ScalarFunction::UnaryFunction<float, float, TruncOperator>;
|
669
|
+
trunc_prec_func = ScalarFunction::BinaryFunction<float, int32_t, float, TruncOperatorPrecision>;
|
485
670
|
break;
|
486
671
|
case LogicalTypeId::DOUBLE:
|
487
|
-
|
672
|
+
trunc_func = ScalarFunction::UnaryFunction<double, double, TruncOperator>;
|
673
|
+
trunc_prec_func = ScalarFunction::BinaryFunction<double, int32_t, double, TruncOperatorPrecision>;
|
488
674
|
break;
|
489
675
|
case LogicalTypeId::DECIMAL:
|
490
676
|
bind_func = BindGenericRoundFunctionDecimal<TruncDecimalOperator>;
|
677
|
+
bind_prec_func =
|
678
|
+
BindDecimalRoundPrecision<TruncDecimalNegativePrecisionOperator, TruncDecimalPositivePrecisionOperator>;
|
491
679
|
break;
|
492
680
|
case LogicalTypeId::TINYINT:
|
681
|
+
trunc_func = ScalarFunction::NopFunction;
|
682
|
+
trunc_prec_func = ScalarFunction::BinaryFunction<int8_t, int32_t, int8_t, TruncIntegerOperator>;
|
683
|
+
break;
|
493
684
|
case LogicalTypeId::SMALLINT:
|
685
|
+
trunc_func = ScalarFunction::NopFunction;
|
686
|
+
trunc_prec_func = ScalarFunction::BinaryFunction<int16_t, int32_t, int16_t, TruncIntegerOperator>;
|
687
|
+
break;
|
494
688
|
case LogicalTypeId::INTEGER:
|
689
|
+
trunc_func = ScalarFunction::NopFunction;
|
690
|
+
trunc_prec_func = ScalarFunction::BinaryFunction<int32_t, int32_t, int32_t, TruncIntegerOperator>;
|
691
|
+
break;
|
495
692
|
case LogicalTypeId::BIGINT:
|
693
|
+
trunc_func = ScalarFunction::NopFunction;
|
694
|
+
trunc_prec_func = ScalarFunction::BinaryFunction<int64_t, int32_t, int64_t, TruncIntegerOperator>;
|
695
|
+
break;
|
496
696
|
case LogicalTypeId::HUGEINT:
|
697
|
+
trunc_func = ScalarFunction::NopFunction;
|
698
|
+
trunc_prec_func = ScalarFunction::BinaryFunction<hugeint_t, int32_t, hugeint_t, TruncIntegerOperator>;
|
699
|
+
break;
|
497
700
|
case LogicalTypeId::UTINYINT:
|
701
|
+
trunc_func = ScalarFunction::NopFunction;
|
702
|
+
trunc_prec_func = ScalarFunction::BinaryFunction<uint8_t, int32_t, uint8_t, TruncIntegerOperator>;
|
703
|
+
break;
|
498
704
|
case LogicalTypeId::USMALLINT:
|
705
|
+
trunc_func = ScalarFunction::NopFunction;
|
706
|
+
trunc_prec_func = ScalarFunction::BinaryFunction<uint16_t, int32_t, uint16_t, TruncIntegerOperator>;
|
707
|
+
break;
|
499
708
|
case LogicalTypeId::UINTEGER:
|
709
|
+
trunc_func = ScalarFunction::NopFunction;
|
710
|
+
trunc_prec_func = ScalarFunction::BinaryFunction<uint32_t, int32_t, uint32_t, TruncIntegerOperator>;
|
711
|
+
break;
|
500
712
|
case LogicalTypeId::UBIGINT:
|
713
|
+
trunc_func = ScalarFunction::NopFunction;
|
714
|
+
trunc_prec_func = ScalarFunction::BinaryFunction<uint64_t, int32_t, uint64_t, TruncIntegerOperator>;
|
715
|
+
break;
|
501
716
|
case LogicalTypeId::UHUGEINT:
|
502
|
-
|
717
|
+
trunc_func = ScalarFunction::NopFunction;
|
718
|
+
trunc_prec_func = ScalarFunction::BinaryFunction<uhugeint_t, int32_t, uhugeint_t, TruncIntegerOperator>;
|
503
719
|
break;
|
504
720
|
default:
|
505
721
|
throw InternalException("Unimplemented numeric type for function \"trunc\"");
|
506
722
|
}
|
507
|
-
trunc.AddFunction(ScalarFunction({type}, type,
|
723
|
+
trunc.AddFunction(ScalarFunction({type}, type, trunc_func, bind_func));
|
724
|
+
trunc.AddFunction(ScalarFunction({type, LogicalType::INTEGER}, type, trunc_prec_func, bind_prec_func));
|
508
725
|
}
|
509
726
|
return trunc;
|
510
727
|
}
|
@@ -512,6 +729,7 @@ ScalarFunctionSet TruncFun::GetFunctions() {
|
|
512
729
|
//===--------------------------------------------------------------------===//
|
513
730
|
// round
|
514
731
|
//===--------------------------------------------------------------------===//
|
732
|
+
namespace {
|
515
733
|
struct RoundOperatorPrecision {
|
516
734
|
template <class TA, class TB, class TR>
|
517
735
|
static inline TR Operation(TA input, TB precision) {
|
@@ -595,130 +813,55 @@ struct RoundIntegerOperator {
|
|
595
813
|
}
|
596
814
|
};
|
597
815
|
|
598
|
-
|
599
|
-
explicit RoundPrecisionFunctionData(int32_t target_scale) : target_scale(target_scale) {
|
600
|
-
}
|
816
|
+
} // namespace
|
601
817
|
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
818
|
+
struct DecimalRoundNegativePrecisionOperator {
|
819
|
+
template <class T, class POWERS_OF_TEN_CLASS>
|
820
|
+
static void Operation(DataChunk &input, ExpressionState &state, Vector &result) {
|
821
|
+
auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
|
822
|
+
auto &info = func_expr.bind_info->Cast<RoundPrecisionFunctionData>();
|
823
|
+
auto source_scale = DecimalType::GetScale(func_expr.children[0]->return_type);
|
824
|
+
auto width = DecimalType::GetWidth(func_expr.children[0]->return_type);
|
825
|
+
if (info.target_scale <= -int32_t(width - source_scale)) {
|
826
|
+
// scale too big for width
|
827
|
+
result.SetVectorType(VectorType::CONSTANT_VECTOR);
|
828
|
+
result.SetValue(0, Value::INTEGER(0));
|
829
|
+
return;
|
830
|
+
}
|
831
|
+
T divide_power_of_ten =
|
832
|
+
UnsafeNumericCast<T>(POWERS_OF_TEN_CLASS::POWERS_OF_TEN[-info.target_scale + source_scale]);
|
833
|
+
T multiply_power_of_ten = UnsafeNumericCast<T>(POWERS_OF_TEN_CLASS::POWERS_OF_TEN[-info.target_scale]);
|
834
|
+
T addition = divide_power_of_ten / 2;
|
607
835
|
|
608
|
-
|
609
|
-
|
610
|
-
|
836
|
+
UnaryExecutor::Execute<T, T>(input.data[0], result, input.size(), [&](T input) {
|
837
|
+
if (input < 0) {
|
838
|
+
input -= addition;
|
839
|
+
} else {
|
840
|
+
input += addition;
|
841
|
+
}
|
842
|
+
return UnsafeNumericCast<T>(input / divide_power_of_ten * multiply_power_of_ten);
|
843
|
+
});
|
611
844
|
}
|
612
845
|
};
|
613
846
|
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
result.
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
T multiply_power_of_ten = UnsafeNumericCast<T>(POWERS_OF_TEN_CLASS::POWERS_OF_TEN[-info.target_scale]);
|
628
|
-
T addition = divide_power_of_ten / 2;
|
629
|
-
|
630
|
-
UnaryExecutor::Execute<T, T>(input.data[0], result, input.size(), [&](T input) {
|
631
|
-
if (input < 0) {
|
632
|
-
input -= addition;
|
633
|
-
} else {
|
634
|
-
input += addition;
|
635
|
-
}
|
636
|
-
return UnsafeNumericCast<T>(input / divide_power_of_ten * multiply_power_of_ten);
|
637
|
-
});
|
638
|
-
}
|
639
|
-
|
640
|
-
template <class T, class POWERS_OF_TEN_CLASS>
|
641
|
-
static void DecimalRoundPositivePrecisionFunction(DataChunk &input, ExpressionState &state, Vector &result) {
|
642
|
-
auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
|
643
|
-
auto &info = func_expr.bind_info->Cast<RoundPrecisionFunctionData>();
|
644
|
-
auto source_scale = DecimalType::GetScale(func_expr.children[0]->return_type);
|
645
|
-
T power_of_ten = UnsafeNumericCast<T>(POWERS_OF_TEN_CLASS::POWERS_OF_TEN[source_scale - info.target_scale]);
|
646
|
-
T addition = power_of_ten / 2;
|
647
|
-
UnaryExecutor::Execute<T, T>(input.data[0], result, input.size(), [&](T input) {
|
648
|
-
if (input < 0) {
|
649
|
-
input -= addition;
|
650
|
-
} else {
|
651
|
-
input += addition;
|
652
|
-
}
|
653
|
-
return UnsafeNumericCast<T>(input / power_of_ten);
|
654
|
-
});
|
655
|
-
}
|
656
|
-
|
657
|
-
unique_ptr<FunctionData> BindDecimalRoundPrecision(ClientContext &context, ScalarFunction &bound_function,
|
658
|
-
vector<unique_ptr<Expression>> &arguments) {
|
659
|
-
auto &decimal_type = arguments[0]->return_type;
|
660
|
-
if (arguments[1]->HasParameter()) {
|
661
|
-
throw ParameterNotResolvedException();
|
662
|
-
}
|
663
|
-
if (!arguments[1]->IsFoldable()) {
|
664
|
-
throw NotImplementedException("ROUND(DECIMAL, INTEGER) with non-constant precision is not supported");
|
665
|
-
}
|
666
|
-
Value val = ExpressionExecutor::EvaluateScalar(context, *arguments[1]).DefaultCastAs(LogicalType::INTEGER);
|
667
|
-
if (val.IsNull()) {
|
668
|
-
throw NotImplementedException("ROUND(DECIMAL, INTEGER) with non-constant precision is not supported");
|
669
|
-
}
|
670
|
-
// our new precision becomes the round value
|
671
|
-
// e.g. ROUND(DECIMAL(18,3), 1) -> DECIMAL(18,1)
|
672
|
-
// but ONLY if the round value is positive
|
673
|
-
// if it is negative the scale becomes zero
|
674
|
-
// i.e. ROUND(DECIMAL(18,3), -1) -> DECIMAL(18,0)
|
675
|
-
int32_t round_value = IntegerValue::Get(val);
|
676
|
-
uint8_t target_scale;
|
677
|
-
auto width = DecimalType::GetWidth(decimal_type);
|
678
|
-
auto scale = DecimalType::GetScale(decimal_type);
|
679
|
-
if (round_value < 0) {
|
680
|
-
target_scale = 0;
|
681
|
-
switch (decimal_type.InternalType()) {
|
682
|
-
case PhysicalType::INT16:
|
683
|
-
bound_function.function = DecimalRoundNegativePrecisionFunction<int16_t, NumericHelper>;
|
684
|
-
break;
|
685
|
-
case PhysicalType::INT32:
|
686
|
-
bound_function.function = DecimalRoundNegativePrecisionFunction<int32_t, NumericHelper>;
|
687
|
-
break;
|
688
|
-
case PhysicalType::INT64:
|
689
|
-
bound_function.function = DecimalRoundNegativePrecisionFunction<int64_t, NumericHelper>;
|
690
|
-
break;
|
691
|
-
default:
|
692
|
-
bound_function.function = DecimalRoundNegativePrecisionFunction<hugeint_t, Hugeint>;
|
693
|
-
break;
|
694
|
-
}
|
695
|
-
} else {
|
696
|
-
if (round_value >= (int32_t)scale) {
|
697
|
-
// if round_value is bigger than or equal to scale we do nothing
|
698
|
-
bound_function.function = ScalarFunction::NopFunction;
|
699
|
-
target_scale = scale;
|
700
|
-
} else {
|
701
|
-
target_scale = NumericCast<uint8_t>(round_value);
|
702
|
-
switch (decimal_type.InternalType()) {
|
703
|
-
case PhysicalType::INT16:
|
704
|
-
bound_function.function = DecimalRoundPositivePrecisionFunction<int16_t, NumericHelper>;
|
705
|
-
break;
|
706
|
-
case PhysicalType::INT32:
|
707
|
-
bound_function.function = DecimalRoundPositivePrecisionFunction<int32_t, NumericHelper>;
|
708
|
-
break;
|
709
|
-
case PhysicalType::INT64:
|
710
|
-
bound_function.function = DecimalRoundPositivePrecisionFunction<int64_t, NumericHelper>;
|
711
|
-
break;
|
712
|
-
default:
|
713
|
-
bound_function.function = DecimalRoundPositivePrecisionFunction<hugeint_t, Hugeint>;
|
714
|
-
break;
|
847
|
+
struct DecimalRoundPositivePrecisionOperator {
|
848
|
+
template <class T, class POWERS_OF_TEN_CLASS>
|
849
|
+
static void Operation(DataChunk &input, ExpressionState &state, Vector &result) {
|
850
|
+
auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
|
851
|
+
auto &info = func_expr.bind_info->Cast<RoundPrecisionFunctionData>();
|
852
|
+
auto source_scale = DecimalType::GetScale(func_expr.children[0]->return_type);
|
853
|
+
T power_of_ten = UnsafeNumericCast<T>(POWERS_OF_TEN_CLASS::POWERS_OF_TEN[source_scale - info.target_scale]);
|
854
|
+
T addition = power_of_ten / 2;
|
855
|
+
UnaryExecutor::Execute<T, T>(input.data[0], result, input.size(), [&](T input) {
|
856
|
+
if (input < 0) {
|
857
|
+
input -= addition;
|
858
|
+
} else {
|
859
|
+
input += addition;
|
715
860
|
}
|
716
|
-
|
861
|
+
return UnsafeNumericCast<T>(input / power_of_ten);
|
862
|
+
});
|
717
863
|
}
|
718
|
-
|
719
|
-
bound_function.return_type = LogicalType::DECIMAL(width, target_scale);
|
720
|
-
return make_uniq<RoundPrecisionFunctionData>(round_value);
|
721
|
-
}
|
864
|
+
};
|
722
865
|
|
723
866
|
ScalarFunctionSet RoundFun::GetFunctions() {
|
724
867
|
ScalarFunctionSet round;
|
@@ -738,7 +881,8 @@ ScalarFunctionSet RoundFun::GetFunctions() {
|
|
738
881
|
break;
|
739
882
|
case LogicalTypeId::DECIMAL:
|
740
883
|
bind_func = BindGenericRoundFunctionDecimal<RoundDecimalOperator>;
|
741
|
-
bind_prec_func =
|
884
|
+
bind_prec_func =
|
885
|
+
BindDecimalRoundPrecision<DecimalRoundNegativePrecisionOperator, DecimalRoundPositivePrecisionOperator>;
|
742
886
|
break;
|
743
887
|
case LogicalTypeId::TINYINT:
|
744
888
|
round_func = ScalarFunction::NopFunction;
|
@@ -765,7 +909,7 @@ ScalarFunctionSet RoundFun::GetFunctions() {
|
|
765
909
|
// no round for integral numbers
|
766
910
|
continue;
|
767
911
|
}
|
768
|
-
throw InternalException("Unimplemented numeric type for function \"
|
912
|
+
throw InternalException("Unimplemented numeric type for function \"round\"");
|
769
913
|
}
|
770
914
|
round.AddFunction(ScalarFunction({type}, type, round_func, bind_func));
|
771
915
|
round.AddFunction(ScalarFunction({type, LogicalType::INTEGER}, type, round_prec_func, bind_prec_func));
|
@@ -776,6 +920,8 @@ ScalarFunctionSet RoundFun::GetFunctions() {
|
|
776
920
|
//===--------------------------------------------------------------------===//
|
777
921
|
// exp
|
778
922
|
//===--------------------------------------------------------------------===//
|
923
|
+
namespace {
|
924
|
+
|
779
925
|
struct ExpOperator {
|
780
926
|
template <class TA, class TR>
|
781
927
|
static inline TR Operation(TA left) {
|
@@ -783,6 +929,8 @@ struct ExpOperator {
|
|
783
929
|
}
|
784
930
|
};
|
785
931
|
|
932
|
+
} // namespace
|
933
|
+
|
786
934
|
ScalarFunction ExpFun::GetFunction() {
|
787
935
|
return ScalarFunction({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
788
936
|
ScalarFunction::UnaryFunction<double, double, ExpOperator>);
|
@@ -791,6 +939,8 @@ ScalarFunction ExpFun::GetFunction() {
|
|
791
939
|
//===--------------------------------------------------------------------===//
|
792
940
|
// pow
|
793
941
|
//===--------------------------------------------------------------------===//
|
942
|
+
namespace {
|
943
|
+
|
794
944
|
struct PowOperator {
|
795
945
|
template <class TA, class TB, class TR>
|
796
946
|
static inline TR Operation(TA base, TB exponent) {
|
@@ -798,6 +948,7 @@ struct PowOperator {
|
|
798
948
|
}
|
799
949
|
};
|
800
950
|
|
951
|
+
} // namespace
|
801
952
|
ScalarFunction PowOperatorFun::GetFunction() {
|
802
953
|
return ScalarFunction({LogicalType::DOUBLE, LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
803
954
|
ScalarFunction::BinaryFunction<double, double, double, PowOperator>);
|
@@ -806,6 +957,7 @@ ScalarFunction PowOperatorFun::GetFunction() {
|
|
806
957
|
//===--------------------------------------------------------------------===//
|
807
958
|
// sqrt
|
808
959
|
//===--------------------------------------------------------------------===//
|
960
|
+
namespace {
|
809
961
|
struct SqrtOperator {
|
810
962
|
template <class TA, class TR>
|
811
963
|
static inline TR Operation(TA input) {
|
@@ -815,6 +967,7 @@ struct SqrtOperator {
|
|
815
967
|
return std::sqrt(input);
|
816
968
|
}
|
817
969
|
};
|
970
|
+
} // namespace
|
818
971
|
|
819
972
|
ScalarFunction SqrtFun::GetFunction() {
|
820
973
|
ScalarFunction function({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
@@ -826,6 +979,8 @@ ScalarFunction SqrtFun::GetFunction() {
|
|
826
979
|
//===--------------------------------------------------------------------===//
|
827
980
|
// cbrt
|
828
981
|
//===--------------------------------------------------------------------===//
|
982
|
+
namespace {
|
983
|
+
|
829
984
|
struct CbRtOperator {
|
830
985
|
template <class TA, class TR>
|
831
986
|
static inline TR Operation(TA left) {
|
@@ -833,6 +988,8 @@ struct CbRtOperator {
|
|
833
988
|
}
|
834
989
|
};
|
835
990
|
|
991
|
+
} // namespace
|
992
|
+
|
836
993
|
ScalarFunction CbrtFun::GetFunction() {
|
837
994
|
return ScalarFunction({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
838
995
|
ScalarFunction::UnaryFunction<double, double, CbRtOperator>);
|
@@ -841,6 +998,7 @@ ScalarFunction CbrtFun::GetFunction() {
|
|
841
998
|
//===--------------------------------------------------------------------===//
|
842
999
|
// ln
|
843
1000
|
//===--------------------------------------------------------------------===//
|
1001
|
+
namespace {
|
844
1002
|
|
845
1003
|
struct LnOperator {
|
846
1004
|
template <class TA, class TR>
|
@@ -855,6 +1013,7 @@ struct LnOperator {
|
|
855
1013
|
}
|
856
1014
|
};
|
857
1015
|
|
1016
|
+
} // namespace
|
858
1017
|
ScalarFunction LnFun::GetFunction() {
|
859
1018
|
ScalarFunction function({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
860
1019
|
ScalarFunction::UnaryFunction<double, double, LnOperator>);
|
@@ -865,6 +1024,8 @@ ScalarFunction LnFun::GetFunction() {
|
|
865
1024
|
//===--------------------------------------------------------------------===//
|
866
1025
|
// log
|
867
1026
|
//===--------------------------------------------------------------------===//
|
1027
|
+
namespace {
|
1028
|
+
|
868
1029
|
struct Log10Operator {
|
869
1030
|
template <class TA, class TR>
|
870
1031
|
static inline TR Operation(TA input) {
|
@@ -878,6 +1039,8 @@ struct Log10Operator {
|
|
878
1039
|
}
|
879
1040
|
};
|
880
1041
|
|
1042
|
+
} // namespace
|
1043
|
+
|
881
1044
|
ScalarFunction Log10Fun::GetFunction() {
|
882
1045
|
ScalarFunction function({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
883
1046
|
ScalarFunction::UnaryFunction<double, double, Log10Operator>);
|
@@ -888,6 +1051,8 @@ ScalarFunction Log10Fun::GetFunction() {
|
|
888
1051
|
//===--------------------------------------------------------------------===//
|
889
1052
|
// log with base
|
890
1053
|
//===--------------------------------------------------------------------===//
|
1054
|
+
namespace {
|
1055
|
+
|
891
1056
|
struct LogBaseOperator {
|
892
1057
|
template <class TA, class TB, class TR>
|
893
1058
|
static inline TR Operation(TA b, TB x) {
|
@@ -899,6 +1064,8 @@ struct LogBaseOperator {
|
|
899
1064
|
}
|
900
1065
|
};
|
901
1066
|
|
1067
|
+
} // namespace
|
1068
|
+
|
902
1069
|
ScalarFunctionSet LogFun::GetFunctions() {
|
903
1070
|
ScalarFunctionSet funcs;
|
904
1071
|
funcs.AddFunction(ScalarFunction({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
@@ -914,6 +1081,7 @@ ScalarFunctionSet LogFun::GetFunctions() {
|
|
914
1081
|
//===--------------------------------------------------------------------===//
|
915
1082
|
// log2
|
916
1083
|
//===--------------------------------------------------------------------===//
|
1084
|
+
namespace {
|
917
1085
|
struct Log2Operator {
|
918
1086
|
template <class TA, class TR>
|
919
1087
|
static inline TR Operation(TA input) {
|
@@ -926,6 +1094,7 @@ struct Log2Operator {
|
|
926
1094
|
return std::log2(input);
|
927
1095
|
}
|
928
1096
|
};
|
1097
|
+
} // namespace
|
929
1098
|
|
930
1099
|
ScalarFunction Log2Fun::GetFunction() {
|
931
1100
|
ScalarFunction function({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
@@ -950,12 +1119,14 @@ ScalarFunction PiFun::GetFunction() {
|
|
950
1119
|
//===--------------------------------------------------------------------===//
|
951
1120
|
// degrees
|
952
1121
|
//===--------------------------------------------------------------------===//
|
1122
|
+
namespace {
|
953
1123
|
struct DegreesOperator {
|
954
1124
|
template <class TA, class TR>
|
955
1125
|
static inline TR Operation(TA left) {
|
956
1126
|
return left * (180 / PI);
|
957
1127
|
}
|
958
1128
|
};
|
1129
|
+
} // namespace
|
959
1130
|
|
960
1131
|
ScalarFunction DegreesFun::GetFunction() {
|
961
1132
|
return ScalarFunction({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
@@ -965,12 +1136,14 @@ ScalarFunction DegreesFun::GetFunction() {
|
|
965
1136
|
//===--------------------------------------------------------------------===//
|
966
1137
|
// radians
|
967
1138
|
//===--------------------------------------------------------------------===//
|
1139
|
+
namespace {
|
968
1140
|
struct RadiansOperator {
|
969
1141
|
template <class TA, class TR>
|
970
1142
|
static inline TR Operation(TA left) {
|
971
1143
|
return left * (PI / 180);
|
972
1144
|
}
|
973
1145
|
};
|
1146
|
+
} // namespace
|
974
1147
|
|
975
1148
|
ScalarFunction RadiansFun::GetFunction() {
|
976
1149
|
return ScalarFunction({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
@@ -980,12 +1153,14 @@ ScalarFunction RadiansFun::GetFunction() {
|
|
980
1153
|
//===--------------------------------------------------------------------===//
|
981
1154
|
// isnan
|
982
1155
|
//===--------------------------------------------------------------------===//
|
1156
|
+
namespace {
|
983
1157
|
struct IsNanOperator {
|
984
1158
|
template <class TA, class TR>
|
985
1159
|
static inline TR Operation(TA input) {
|
986
1160
|
return Value::IsNan(input);
|
987
1161
|
}
|
988
1162
|
};
|
1163
|
+
} // namespace
|
989
1164
|
|
990
1165
|
ScalarFunctionSet IsNanFun::GetFunctions() {
|
991
1166
|
ScalarFunctionSet funcs;
|
@@ -999,12 +1174,14 @@ ScalarFunctionSet IsNanFun::GetFunctions() {
|
|
999
1174
|
//===--------------------------------------------------------------------===//
|
1000
1175
|
// signbit
|
1001
1176
|
//===--------------------------------------------------------------------===//
|
1177
|
+
namespace {
|
1002
1178
|
struct SignBitOperator {
|
1003
1179
|
template <class TA, class TR>
|
1004
1180
|
static inline TR Operation(TA input) {
|
1005
1181
|
return std::signbit(input);
|
1006
1182
|
}
|
1007
1183
|
};
|
1184
|
+
} // namespace
|
1008
1185
|
|
1009
1186
|
ScalarFunctionSet SignBitFun::GetFunctions() {
|
1010
1187
|
ScalarFunctionSet funcs;
|
@@ -1018,6 +1195,7 @@ ScalarFunctionSet SignBitFun::GetFunctions() {
|
|
1018
1195
|
//===--------------------------------------------------------------------===//
|
1019
1196
|
// isinf
|
1020
1197
|
//===--------------------------------------------------------------------===//
|
1198
|
+
namespace {
|
1021
1199
|
struct IsInfiniteOperator {
|
1022
1200
|
template <class TA, class TR>
|
1023
1201
|
static inline TR Operation(TA input) {
|
@@ -1035,6 +1213,8 @@ bool IsInfiniteOperator::Operation(timestamp_t input) {
|
|
1035
1213
|
return !Value::IsFinite(input);
|
1036
1214
|
}
|
1037
1215
|
|
1216
|
+
} // namespace
|
1217
|
+
|
1038
1218
|
ScalarFunctionSet IsInfiniteFun::GetFunctions() {
|
1039
1219
|
ScalarFunctionSet funcs("isinf");
|
1040
1220
|
funcs.AddFunction(ScalarFunction({LogicalType::FLOAT}, LogicalType::BOOLEAN,
|
@@ -1053,6 +1233,8 @@ ScalarFunctionSet IsInfiniteFun::GetFunctions() {
|
|
1053
1233
|
//===--------------------------------------------------------------------===//
|
1054
1234
|
// isfinite
|
1055
1235
|
//===--------------------------------------------------------------------===//
|
1236
|
+
namespace {
|
1237
|
+
|
1056
1238
|
struct IsFiniteOperator {
|
1057
1239
|
template <class TA, class TR>
|
1058
1240
|
static inline TR Operation(TA input) {
|
@@ -1060,6 +1242,8 @@ struct IsFiniteOperator {
|
|
1060
1242
|
}
|
1061
1243
|
};
|
1062
1244
|
|
1245
|
+
} // namespace
|
1246
|
+
|
1063
1247
|
ScalarFunctionSet IsFiniteFun::GetFunctions() {
|
1064
1248
|
ScalarFunctionSet funcs;
|
1065
1249
|
funcs.AddFunction(ScalarFunction({LogicalType::FLOAT}, LogicalType::BOOLEAN,
|
@@ -1078,6 +1262,7 @@ ScalarFunctionSet IsFiniteFun::GetFunctions() {
|
|
1078
1262
|
//===--------------------------------------------------------------------===//
|
1079
1263
|
// sin
|
1080
1264
|
//===--------------------------------------------------------------------===//
|
1265
|
+
namespace {
|
1081
1266
|
template <class OP>
|
1082
1267
|
struct NoInfiniteDoubleWrapper {
|
1083
1268
|
template <class INPUT_TYPE, class RESULT_TYPE>
|
@@ -1099,6 +1284,8 @@ struct SinOperator {
|
|
1099
1284
|
}
|
1100
1285
|
};
|
1101
1286
|
|
1287
|
+
} // namespace
|
1288
|
+
|
1102
1289
|
ScalarFunction SinFun::GetFunction() {
|
1103
1290
|
ScalarFunction function({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
1104
1291
|
ScalarFunction::UnaryFunction<double, double, NoInfiniteDoubleWrapper<SinOperator>>);
|
@@ -1109,12 +1296,14 @@ ScalarFunction SinFun::GetFunction() {
|
|
1109
1296
|
//===--------------------------------------------------------------------===//
|
1110
1297
|
// cos
|
1111
1298
|
//===--------------------------------------------------------------------===//
|
1299
|
+
namespace {
|
1112
1300
|
struct CosOperator {
|
1113
1301
|
template <class TA, class TR>
|
1114
1302
|
static inline TR Operation(TA input) {
|
1115
1303
|
return (double)std::cos(input);
|
1116
1304
|
}
|
1117
1305
|
};
|
1306
|
+
} // namespace
|
1118
1307
|
|
1119
1308
|
ScalarFunction CosFun::GetFunction() {
|
1120
1309
|
ScalarFunction function({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
@@ -1126,12 +1315,14 @@ ScalarFunction CosFun::GetFunction() {
|
|
1126
1315
|
//===--------------------------------------------------------------------===//
|
1127
1316
|
// tan
|
1128
1317
|
//===--------------------------------------------------------------------===//
|
1318
|
+
namespace {
|
1129
1319
|
struct TanOperator {
|
1130
1320
|
template <class TA, class TR>
|
1131
1321
|
static inline TR Operation(TA input) {
|
1132
1322
|
return (double)std::tan(input);
|
1133
1323
|
}
|
1134
1324
|
};
|
1325
|
+
} // namespace
|
1135
1326
|
|
1136
1327
|
ScalarFunction TanFun::GetFunction() {
|
1137
1328
|
ScalarFunction function({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
@@ -1143,6 +1334,7 @@ ScalarFunction TanFun::GetFunction() {
|
|
1143
1334
|
//===--------------------------------------------------------------------===//
|
1144
1335
|
// asin
|
1145
1336
|
//===--------------------------------------------------------------------===//
|
1337
|
+
namespace {
|
1146
1338
|
struct ASinOperator {
|
1147
1339
|
template <class TA, class TR>
|
1148
1340
|
static inline TR Operation(TA input) {
|
@@ -1152,6 +1344,7 @@ struct ASinOperator {
|
|
1152
1344
|
return (double)std::asin(input);
|
1153
1345
|
}
|
1154
1346
|
};
|
1347
|
+
} // namespace
|
1155
1348
|
|
1156
1349
|
ScalarFunction AsinFun::GetFunction() {
|
1157
1350
|
ScalarFunction function({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
@@ -1163,12 +1356,14 @@ ScalarFunction AsinFun::GetFunction() {
|
|
1163
1356
|
//===--------------------------------------------------------------------===//
|
1164
1357
|
// atan
|
1165
1358
|
//===--------------------------------------------------------------------===//
|
1359
|
+
namespace {
|
1166
1360
|
struct ATanOperator {
|
1167
1361
|
template <class TA, class TR>
|
1168
1362
|
static inline TR Operation(TA input) {
|
1169
1363
|
return (double)std::atan(input);
|
1170
1364
|
}
|
1171
1365
|
};
|
1366
|
+
} // namespace
|
1172
1367
|
|
1173
1368
|
ScalarFunction AtanFun::GetFunction() {
|
1174
1369
|
return ScalarFunction({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
@@ -1178,12 +1373,14 @@ ScalarFunction AtanFun::GetFunction() {
|
|
1178
1373
|
//===--------------------------------------------------------------------===//
|
1179
1374
|
// atan2
|
1180
1375
|
//===--------------------------------------------------------------------===//
|
1376
|
+
namespace {
|
1181
1377
|
struct ATan2 {
|
1182
1378
|
template <class TA, class TB, class TR>
|
1183
1379
|
static inline TR Operation(TA left, TB right) {
|
1184
1380
|
return (double)std::atan2(left, right);
|
1185
1381
|
}
|
1186
1382
|
};
|
1383
|
+
} // namespace
|
1187
1384
|
|
1188
1385
|
ScalarFunction Atan2Fun::GetFunction() {
|
1189
1386
|
return ScalarFunction({LogicalType::DOUBLE, LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
@@ -1193,6 +1390,7 @@ ScalarFunction Atan2Fun::GetFunction() {
|
|
1193
1390
|
//===--------------------------------------------------------------------===//
|
1194
1391
|
// acos
|
1195
1392
|
//===--------------------------------------------------------------------===//
|
1393
|
+
namespace {
|
1196
1394
|
struct ACos {
|
1197
1395
|
template <class TA, class TR>
|
1198
1396
|
static inline TR Operation(TA input) {
|
@@ -1202,6 +1400,7 @@ struct ACos {
|
|
1202
1400
|
return (double)std::acos(input);
|
1203
1401
|
}
|
1204
1402
|
};
|
1403
|
+
} // namespace
|
1205
1404
|
|
1206
1405
|
ScalarFunction AcosFun::GetFunction() {
|
1207
1406
|
ScalarFunction function({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
@@ -1213,12 +1412,14 @@ ScalarFunction AcosFun::GetFunction() {
|
|
1213
1412
|
//===--------------------------------------------------------------------===//
|
1214
1413
|
// cosh
|
1215
1414
|
//===--------------------------------------------------------------------===//
|
1415
|
+
namespace {
|
1216
1416
|
struct CoshOperator {
|
1217
1417
|
template <class TA, class TR>
|
1218
1418
|
static inline TR Operation(TA input) {
|
1219
1419
|
return (double)std::cosh(input);
|
1220
1420
|
}
|
1221
1421
|
};
|
1422
|
+
} // namespace
|
1222
1423
|
|
1223
1424
|
ScalarFunction CoshFun::GetFunction() {
|
1224
1425
|
return ScalarFunction({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
@@ -1228,12 +1429,14 @@ ScalarFunction CoshFun::GetFunction() {
|
|
1228
1429
|
//===--------------------------------------------------------------------===//
|
1229
1430
|
// acosh
|
1230
1431
|
//===--------------------------------------------------------------------===//
|
1432
|
+
namespace {
|
1231
1433
|
struct AcoshOperator {
|
1232
1434
|
template <class TA, class TR>
|
1233
1435
|
static inline TR Operation(TA input) {
|
1234
1436
|
return (double)std::acosh(input);
|
1235
1437
|
}
|
1236
1438
|
};
|
1439
|
+
} // namespace
|
1237
1440
|
|
1238
1441
|
ScalarFunction AcoshFun::GetFunction() {
|
1239
1442
|
return ScalarFunction({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
@@ -1243,12 +1446,14 @@ ScalarFunction AcoshFun::GetFunction() {
|
|
1243
1446
|
//===--------------------------------------------------------------------===//
|
1244
1447
|
// sinh
|
1245
1448
|
//===--------------------------------------------------------------------===//
|
1449
|
+
namespace {
|
1246
1450
|
struct SinhOperator {
|
1247
1451
|
template <class TA, class TR>
|
1248
1452
|
static inline TR Operation(TA input) {
|
1249
1453
|
return (double)std::sinh(input);
|
1250
1454
|
}
|
1251
1455
|
};
|
1456
|
+
} // namespace
|
1252
1457
|
|
1253
1458
|
ScalarFunction SinhFun::GetFunction() {
|
1254
1459
|
return ScalarFunction({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
@@ -1258,12 +1463,14 @@ ScalarFunction SinhFun::GetFunction() {
|
|
1258
1463
|
//===--------------------------------------------------------------------===//
|
1259
1464
|
// asinh
|
1260
1465
|
//===--------------------------------------------------------------------===//
|
1466
|
+
namespace {
|
1261
1467
|
struct AsinhOperator {
|
1262
1468
|
template <class TA, class TR>
|
1263
1469
|
static inline TR Operation(TA input) {
|
1264
1470
|
return (double)std::asinh(input);
|
1265
1471
|
}
|
1266
1472
|
};
|
1473
|
+
} // namespace
|
1267
1474
|
|
1268
1475
|
ScalarFunction AsinhFun::GetFunction() {
|
1269
1476
|
return ScalarFunction({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
@@ -1273,12 +1480,14 @@ ScalarFunction AsinhFun::GetFunction() {
|
|
1273
1480
|
//===--------------------------------------------------------------------===//
|
1274
1481
|
// tanh
|
1275
1482
|
//===--------------------------------------------------------------------===//
|
1483
|
+
namespace {
|
1276
1484
|
struct TanhOperator {
|
1277
1485
|
template <class TA, class TR>
|
1278
1486
|
static inline TR Operation(TA input) {
|
1279
1487
|
return (double)std::tanh(input);
|
1280
1488
|
}
|
1281
1489
|
};
|
1490
|
+
} // namespace
|
1282
1491
|
|
1283
1492
|
ScalarFunction TanhFun::GetFunction() {
|
1284
1493
|
return ScalarFunction({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
@@ -1288,6 +1497,7 @@ ScalarFunction TanhFun::GetFunction() {
|
|
1288
1497
|
//===--------------------------------------------------------------------===//
|
1289
1498
|
// atanh
|
1290
1499
|
//===--------------------------------------------------------------------===//
|
1500
|
+
namespace {
|
1291
1501
|
struct AtanhOperator {
|
1292
1502
|
template <class TA, class TR>
|
1293
1503
|
static inline TR Operation(TA input) {
|
@@ -1300,6 +1510,7 @@ struct AtanhOperator {
|
|
1300
1510
|
return (double)std::atanh(input);
|
1301
1511
|
}
|
1302
1512
|
};
|
1513
|
+
} // namespace
|
1303
1514
|
|
1304
1515
|
ScalarFunction AtanhFun::GetFunction() {
|
1305
1516
|
ScalarFunction function({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
@@ -1311,6 +1522,7 @@ ScalarFunction AtanhFun::GetFunction() {
|
|
1311
1522
|
//===--------------------------------------------------------------------===//
|
1312
1523
|
// cot
|
1313
1524
|
//===--------------------------------------------------------------------===//
|
1525
|
+
namespace {
|
1314
1526
|
template <class OP>
|
1315
1527
|
struct NoInfiniteNoZeroDoubleWrapper {
|
1316
1528
|
template <class INPUT_TYPE, class RESULT_TYPE>
|
@@ -1334,7 +1546,7 @@ struct CotOperator {
|
|
1334
1546
|
return 1.0 / (double)std::tan(input);
|
1335
1547
|
}
|
1336
1548
|
};
|
1337
|
-
|
1549
|
+
} // namespace
|
1338
1550
|
ScalarFunction CotFun::GetFunction() {
|
1339
1551
|
ScalarFunction function({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
1340
1552
|
ScalarFunction::UnaryFunction<double, double, NoInfiniteNoZeroDoubleWrapper<CotOperator>>);
|
@@ -1345,6 +1557,7 @@ ScalarFunction CotFun::GetFunction() {
|
|
1345
1557
|
//===--------------------------------------------------------------------===//
|
1346
1558
|
// gamma
|
1347
1559
|
//===--------------------------------------------------------------------===//
|
1560
|
+
namespace {
|
1348
1561
|
struct GammaOperator {
|
1349
1562
|
template <class TA, class TR>
|
1350
1563
|
static inline TR Operation(TA input) {
|
@@ -1354,6 +1567,7 @@ struct GammaOperator {
|
|
1354
1567
|
return std::tgamma(input);
|
1355
1568
|
}
|
1356
1569
|
};
|
1570
|
+
} // namespace
|
1357
1571
|
|
1358
1572
|
ScalarFunction GammaFun::GetFunction() {
|
1359
1573
|
auto func = ScalarFunction({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
@@ -1365,6 +1579,7 @@ ScalarFunction GammaFun::GetFunction() {
|
|
1365
1579
|
//===--------------------------------------------------------------------===//
|
1366
1580
|
// gamma
|
1367
1581
|
//===--------------------------------------------------------------------===//
|
1582
|
+
namespace {
|
1368
1583
|
struct LogGammaOperator {
|
1369
1584
|
template <class TA, class TR>
|
1370
1585
|
static inline TR Operation(TA input) {
|
@@ -1374,6 +1589,7 @@ struct LogGammaOperator {
|
|
1374
1589
|
return std::lgamma(input);
|
1375
1590
|
}
|
1376
1591
|
};
|
1592
|
+
} // namespace
|
1377
1593
|
|
1378
1594
|
ScalarFunction LogGammaFun::GetFunction() {
|
1379
1595
|
ScalarFunction function({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
@@ -1385,6 +1601,7 @@ ScalarFunction LogGammaFun::GetFunction() {
|
|
1385
1601
|
//===--------------------------------------------------------------------===//
|
1386
1602
|
// factorial(), !
|
1387
1603
|
//===--------------------------------------------------------------------===//
|
1604
|
+
namespace {
|
1388
1605
|
struct FactorialOperator {
|
1389
1606
|
template <class TA, class TR>
|
1390
1607
|
static inline TR Operation(TA left) {
|
@@ -1397,6 +1614,7 @@ struct FactorialOperator {
|
|
1397
1614
|
return ret;
|
1398
1615
|
}
|
1399
1616
|
};
|
1617
|
+
} // namespace
|
1400
1618
|
|
1401
1619
|
ScalarFunction FactorialOperatorFun::GetFunction() {
|
1402
1620
|
ScalarFunction function({LogicalType::INTEGER}, LogicalType::HUGEINT,
|
@@ -1408,6 +1626,7 @@ ScalarFunction FactorialOperatorFun::GetFunction() {
|
|
1408
1626
|
//===--------------------------------------------------------------------===//
|
1409
1627
|
// even
|
1410
1628
|
//===--------------------------------------------------------------------===//
|
1629
|
+
namespace {
|
1411
1630
|
struct EvenOperator {
|
1412
1631
|
template <class TA, class TR>
|
1413
1632
|
static inline TR Operation(TA left) {
|
@@ -1427,6 +1646,7 @@ struct EvenOperator {
|
|
1427
1646
|
return value;
|
1428
1647
|
}
|
1429
1648
|
};
|
1649
|
+
} // namespace
|
1430
1650
|
|
1431
1651
|
ScalarFunction EvenFun::GetFunction() {
|
1432
1652
|
return ScalarFunction({LogicalType::DOUBLE}, LogicalType::DOUBLE,
|
@@ -1438,6 +1658,7 @@ ScalarFunction EvenFun::GetFunction() {
|
|
1438
1658
|
//===--------------------------------------------------------------------===//
|
1439
1659
|
|
1440
1660
|
// should be replaced with std::gcd in a newer C++ standard
|
1661
|
+
namespace {
|
1441
1662
|
template <class TA>
|
1442
1663
|
TA GreatestCommonDivisor(TA left, TA right) {
|
1443
1664
|
TA a = left;
|
@@ -1470,6 +1691,8 @@ struct GreatestCommonDivisorOperator {
|
|
1470
1691
|
}
|
1471
1692
|
};
|
1472
1693
|
|
1694
|
+
} // namespace
|
1695
|
+
|
1473
1696
|
ScalarFunctionSet GreatestCommonDivisorFun::GetFunctions() {
|
1474
1697
|
ScalarFunctionSet funcs;
|
1475
1698
|
funcs.AddFunction(
|
@@ -1484,7 +1707,7 @@ ScalarFunctionSet GreatestCommonDivisorFun::GetFunctions() {
|
|
1484
1707
|
//===--------------------------------------------------------------------===//
|
1485
1708
|
// lcm
|
1486
1709
|
//===--------------------------------------------------------------------===//
|
1487
|
-
|
1710
|
+
namespace {
|
1488
1711
|
// should be replaced with std::lcm in a newer C++ standard
|
1489
1712
|
struct LeastCommonMultipleOperator {
|
1490
1713
|
template <class TA, class TB, class TR>
|
@@ -1500,6 +1723,8 @@ struct LeastCommonMultipleOperator {
|
|
1500
1723
|
}
|
1501
1724
|
};
|
1502
1725
|
|
1726
|
+
} // namespace
|
1727
|
+
|
1503
1728
|
ScalarFunctionSet LeastCommonMultipleFun::GetFunctions() {
|
1504
1729
|
ScalarFunctionSet funcs;
|
1505
1730
|
|