duckdb 0.8.1-dev2.0 → 0.8.1-dev219.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/binding.gyp +8 -8
- package/package.json +1 -1
- package/src/duckdb/extension/icu/icu-datepart.cpp +1 -1
- package/src/duckdb/extension/json/include/json_common.hpp +1 -1
- package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_create.cpp +6 -6
- package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +1 -1
- package/src/duckdb/extension/parquet/column_reader.cpp +57 -52
- package/src/duckdb/extension/parquet/column_writer.cpp +57 -45
- package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/include/column_reader.hpp +5 -4
- package/src/duckdb/extension/parquet/include/column_writer.hpp +24 -0
- package/src/duckdb/extension/parquet/include/decode_utils.hpp +6 -0
- package/src/duckdb/extension/parquet/include/list_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
- package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
- package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
- package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/parquet-extension.cpp +1 -1
- package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
- package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
- package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
- package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
- package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
- package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
- package/src/duckdb/src/catalog/catalog.cpp +5 -21
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +113 -0
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +7 -0
- package/src/duckdb/src/catalog/catalog_entry.cpp +4 -4
- package/src/duckdb/src/catalog/catalog_search_path.cpp +49 -12
- package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
- package/src/duckdb/src/catalog/default/default_types.cpp +9 -84
- package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
- package/src/duckdb/src/catalog/duck_catalog.cpp +1 -0
- package/src/duckdb/src/common/adbc/adbc.cpp +301 -106
- package/src/duckdb/src/common/adbc/driver_manager.cpp +10 -22
- package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
- package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +7 -7
- package/src/duckdb/src/common/checksum.cpp +1 -1
- package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
- package/src/duckdb/src/common/crypto/md5.cpp +9 -9
- package/src/duckdb/src/common/exception.cpp +4 -1
- package/src/duckdb/src/common/exception_format_value.cpp +19 -14
- package/src/duckdb/src/common/field_writer.cpp +1 -1
- package/src/duckdb/src/common/file_system.cpp +15 -2
- package/src/duckdb/src/common/fsst.cpp +11 -6
- package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
- package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
- package/src/duckdb/src/common/local_file_system.cpp +11 -11
- package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
- package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
- package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
- package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
- package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
- package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
- package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
- package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
- package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
- package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
- package/src/duckdb/src/common/serializer.cpp +1 -1
- package/src/duckdb/src/common/sort/comparators.cpp +1 -1
- package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
- package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
- package/src/duckdb/src/common/types/bit.cpp +5 -5
- package/src/duckdb/src/common/types/blob.cpp +8 -8
- package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
- package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
- package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
- package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
- package/src/duckdb/src/common/types/hash.cpp +2 -2
- package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
- package/src/duckdb/src/common/types/list_segment.cpp +77 -49
- package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
- package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +5 -4
- package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
- package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +59 -24
- package/src/duckdb/src/common/types/string_heap.cpp +1 -1
- package/src/duckdb/src/common/types/value.cpp +3 -2
- package/src/duckdb/src/common/types/vector.cpp +101 -101
- package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
- package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
- package/src/duckdb/src/common/types.cpp +44 -33
- package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
- package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
- package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
- package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
- package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
- package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
- package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +32 -36
- package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +53 -66
- package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
- package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +44 -44
- package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
- package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
- package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
- package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +91 -103
- package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
- package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
- package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +36 -37
- package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
- package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +48 -84
- package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
- package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +97 -121
- package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +62 -99
- package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
- package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +22 -23
- package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
- package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
- package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
- package/src/duckdb/src/core_functions/function_list.cpp +1 -0
- package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +45 -45
- package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +14 -0
- package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +3 -3
- package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
- package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +3 -3
- package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +6 -7
- package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +4 -1
- package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
- package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -3
- package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
- package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
- package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
- package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
- package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
- package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
- package/src/duckdb/src/execution/expression_executor.cpp +33 -28
- package/src/duckdb/src/execution/index/art/art.cpp +30 -32
- package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +3 -4
- package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
- package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
- package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
- package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
- package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
- package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
- package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +5 -2
- package/src/duckdb/src/execution/operator/helper/physical_set.cpp +5 -1
- package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
- package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
- package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
- package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
- package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
- package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
- package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
- package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
- package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
- package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
- package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +2 -0
- package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
- package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
- package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
- package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
- package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -3
- package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
- package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
- package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
- package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
- package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
- package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
- package/src/duckdb/src/execution/reservoir_sample.cpp +2 -2
- package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
- package/src/duckdb/src/function/aggregate/distributive/count.cpp +158 -20
- package/src/duckdb/src/function/aggregate/distributive/first.cpp +66 -74
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +13 -13
- package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
- package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
- package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
- package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
- package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
- package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
- package/src/duckdb/src/function/pragma/pragma_queries.cpp +33 -23
- package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
- package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
- package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -3
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -3
- package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
- package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
- package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
- package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
- package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
- package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
- package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
- package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +25 -23
- package/src/duckdb/src/function/scalar_function.cpp +3 -3
- package/src/duckdb/src/function/table/arrow.cpp +6 -6
- package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
- package/src/duckdb/src/function/table/checkpoint.cpp +1 -1
- package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
- package/src/duckdb/src/function/table/glob.cpp +1 -1
- package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
- package/src/duckdb/src/function/table/range.cpp +4 -4
- package/src/duckdb/src/function/table/read_csv.cpp +15 -23
- package/src/duckdb/src/function/table/repeat.cpp +2 -2
- package/src/duckdb/src/function/table/repeat_row.cpp +10 -3
- package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
- package/src/duckdb/src/function/table/system/test_vector_types.cpp +1 -1
- package/src/duckdb/src/function/table/table_scan.cpp +2 -2
- package/src/duckdb/src/function/table/unnest.cpp +1 -1
- package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -5
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +6 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +8 -2
- package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +97 -0
- package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +5 -0
- package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
- package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/exception.hpp +5 -2
- package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
- package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
- package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
- package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
- package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
- package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
- package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
- package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
- package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
- package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
- package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +112 -76
- package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
- package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
- package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
- package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
- package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +9 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +2 -6
- package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +16 -36
- package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
- package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +3 -3
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
- package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
- package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +8 -29
- package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
- package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
- package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
- package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
- package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
- package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +3 -1
- package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +6 -6
- package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/config.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/query_result.hpp +17 -0
- package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
- package/src/duckdb/src/include/duckdb/main/settings.hpp +9 -0
- package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
- package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
- package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
- package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
- package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
- package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +107 -91
- package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +34 -1
- package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
- package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
- package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
- package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/index.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
- package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
- package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
- package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
- package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
- package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
- package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
- package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
- package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
- package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
- package/src/duckdb/src/main/capi/config-c.cpp +1 -1
- package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
- package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
- package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
- package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
- package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
- package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
- package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
- package/src/duckdb/src/main/capi/result-c.cpp +23 -23
- package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
- package/src/duckdb/src/main/client_context.cpp +3 -3
- package/src/duckdb/src/main/config.cpp +1 -0
- package/src/duckdb/src/main/database_manager.cpp +1 -1
- package/src/duckdb/src/main/error_manager.cpp +1 -1
- package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
- package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
- package/src/duckdb/src/main/relation.cpp +1 -1
- package/src/duckdb/src/main/settings/settings.cpp +22 -6
- package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
- package/src/duckdb/src/optimizer/expression_heuristics.cpp +1 -0
- package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
- package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
- package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +4 -7
- package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
- package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
- package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
- package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
- package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
- package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
- package/src/duckdb/src/parallel/executor.cpp +1 -1
- package/src/duckdb/src/parser/base_expression.cpp +2 -5
- package/src/duckdb/src/parser/column_definition.cpp +5 -8
- package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
- package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
- package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
- package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
- package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
- package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
- package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
- package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
- package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
- package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
- package/src/duckdb/src/parser/parser.cpp +4 -4
- package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
- package/src/duckdb/src/parser/query_node.cpp +7 -6
- package/src/duckdb/src/parser/result_modifier.cpp +25 -18
- package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
- package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
- package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
- package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
- package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
- package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
- package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
- package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
- package/src/duckdb/src/parser/tableref.cpp +12 -3
- package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
- package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
- package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
- package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
- package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
- package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
- package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
- package/src/duckdb/src/parser/transform/expression/transform_function.cpp +70 -75
- package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
- package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
- package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
- package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +28 -29
- package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
- package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
- package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
- package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
- package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
- package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
- package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
- package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
- package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
- package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
- package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
- package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
- package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +3 -4
- package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
- package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
- package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
- package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
- package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
- package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
- package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
- package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
- package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
- package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
- package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -22
- package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
- package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
- package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
- package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
- package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
- package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
- package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
- package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
- package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
- package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
- package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
- package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
- package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
- package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
- package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
- package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
- package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
- package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
- package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
- package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
- package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
- package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
- package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +30 -27
- package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
- package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
- package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
- package/src/duckdb/src/parser/transformer.cpp +46 -46
- package/src/duckdb/src/planner/bind_context.cpp +9 -10
- package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -1
- package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
- package/src/duckdb/src/planner/binder/expression/bind_positional_reference_expression.cpp +7 -2
- package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
- package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
- package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +8 -8
- package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +13 -5
- package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
- package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -114
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +4 -2
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +17 -7
- package/src/duckdb/src/planner/binder.cpp +1 -1
- package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
- package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
- package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
- package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
- package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
- package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
- package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
- package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
- package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
- package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
- package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
- package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
- package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
- package/src/duckdb/src/planner/expression.cpp +15 -0
- package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
- package/src/duckdb/src/planner/expression_binder.cpp +3 -2
- package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
- package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
- package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
- package/src/duckdb/src/planner/logical_operator.cpp +3 -4
- package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
- package/src/duckdb/src/planner/table_filter.cpp +1 -1
- package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
- package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
- package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
- package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
- package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
- package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
- package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
- package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
- package/src/duckdb/src/storage/compression/rle.cpp +8 -8
- package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
- package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
- package/src/duckdb/src/storage/data_table.cpp +8 -7
- package/src/duckdb/src/storage/index.cpp +1 -3
- package/src/duckdb/src/storage/local_storage.cpp +2 -1
- package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
- package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
- package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
- package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
- package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
- package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
- package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
- package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
- package/src/duckdb/src/storage/table/list_column_data.cpp +8 -7
- package/src/duckdb/src/storage/table/row_group.cpp +4 -4
- package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
- package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
- package/src/duckdb/src/storage/wal_replay.cpp +5 -6
- package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
- package/src/duckdb/src/transaction/commit_state.cpp +8 -8
- package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
- package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
- package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
- package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
- package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
- package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +13479 -13564
- package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
- package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +5 -5
@@ -17,8 +17,14 @@ static data_ptr_t AllocatePrimitiveData(Allocator &allocator, uint16_t capacity)
|
|
17
17
|
}
|
18
18
|
|
19
19
|
template <class T>
|
20
|
-
static T *GetPrimitiveData(
|
21
|
-
return
|
20
|
+
static T *GetPrimitiveData(ListSegment *segment) {
|
21
|
+
return reinterpret_cast<T *>(data_ptr_cast(segment) + sizeof(ListSegment) + segment->capacity * sizeof(bool));
|
22
|
+
}
|
23
|
+
|
24
|
+
template <class T>
|
25
|
+
static const T *GetPrimitiveData(const ListSegment *segment) {
|
26
|
+
return reinterpret_cast<const T *>(const_data_ptr_cast(segment) + sizeof(ListSegment) +
|
27
|
+
segment->capacity * sizeof(bool));
|
22
28
|
}
|
23
29
|
|
24
30
|
//===--------------------------------------------------------------------===//
|
@@ -32,13 +38,24 @@ static data_ptr_t AllocateListData(Allocator &allocator, uint16_t capacity) {
|
|
32
38
|
return allocator.AllocateData(GetAllocationSizeList(capacity));
|
33
39
|
}
|
34
40
|
|
35
|
-
static uint64_t *GetListLengthData(
|
36
|
-
return
|
41
|
+
static uint64_t *GetListLengthData(ListSegment *segment) {
|
42
|
+
return reinterpret_cast<uint64_t *>(data_ptr_cast(segment) + sizeof(ListSegment) +
|
43
|
+
segment->capacity * sizeof(bool));
|
44
|
+
}
|
45
|
+
|
46
|
+
static const uint64_t *GetListLengthData(const ListSegment *segment) {
|
47
|
+
return reinterpret_cast<const uint64_t *>(const_data_ptr_cast(segment) + sizeof(ListSegment) +
|
48
|
+
segment->capacity * sizeof(bool));
|
49
|
+
}
|
50
|
+
|
51
|
+
static const LinkedList *GetListChildData(const ListSegment *segment) {
|
52
|
+
return reinterpret_cast<const LinkedList *>(const_data_ptr_cast(segment) + sizeof(ListSegment) +
|
53
|
+
segment->capacity * (sizeof(bool) + sizeof(uint64_t)));
|
37
54
|
}
|
38
55
|
|
39
|
-
static LinkedList *GetListChildData(
|
40
|
-
return
|
41
|
-
|
56
|
+
static LinkedList *GetListChildData(ListSegment *segment) {
|
57
|
+
return reinterpret_cast<LinkedList *>(data_ptr_cast(segment) + sizeof(ListSegment) +
|
58
|
+
segment->capacity * (sizeof(bool) + sizeof(uint64_t)));
|
42
59
|
}
|
43
60
|
|
44
61
|
//===--------------------------------------------------------------------===//
|
@@ -52,12 +69,22 @@ static data_ptr_t AllocateStructData(Allocator &allocator, uint16_t capacity, id
|
|
52
69
|
return allocator.AllocateData(GetAllocationSizeStruct(capacity, child_count));
|
53
70
|
}
|
54
71
|
|
55
|
-
static ListSegment **GetStructData(
|
56
|
-
return
|
72
|
+
static ListSegment **GetStructData(ListSegment *segment) {
|
73
|
+
return reinterpret_cast<ListSegment **>(data_ptr_cast(segment) + +sizeof(ListSegment) +
|
74
|
+
segment->capacity * sizeof(bool));
|
57
75
|
}
|
58
76
|
|
59
|
-
static
|
60
|
-
return
|
77
|
+
static const ListSegment *const *GetStructData(const ListSegment *segment) {
|
78
|
+
return reinterpret_cast<const ListSegment *const *>(const_data_ptr_cast(segment) + sizeof(ListSegment) +
|
79
|
+
segment->capacity * sizeof(bool));
|
80
|
+
}
|
81
|
+
|
82
|
+
static bool *GetNullMask(ListSegment *segment) {
|
83
|
+
return reinterpret_cast<bool *>(data_ptr_cast(segment) + sizeof(ListSegment));
|
84
|
+
}
|
85
|
+
|
86
|
+
static const bool *GetNullMask(const ListSegment *segment) {
|
87
|
+
return reinterpret_cast<const bool *>(const_data_ptr_cast(segment) + sizeof(ListSegment));
|
61
88
|
}
|
62
89
|
|
63
90
|
static uint16_t GetCapacityForNewSegment(uint16_t capacity) {
|
@@ -96,12 +123,12 @@ static ListSegment *CreatePrimitiveSegment(const ListSegmentFunctions &, Allocat
|
|
96
123
|
template <class T>
|
97
124
|
void DestroyPrimitiveSegment(const ListSegmentFunctions &, ListSegment *segment, Allocator &allocator) {
|
98
125
|
D_ASSERT(segment);
|
99
|
-
allocator.FreeData((
|
126
|
+
allocator.FreeData(data_ptr_cast(segment), GetAllocationSize<T>(segment->capacity));
|
100
127
|
}
|
101
128
|
|
102
129
|
static ListSegment *CreateListSegment(const ListSegmentFunctions &, Allocator &allocator, uint16_t capacity) {
|
103
130
|
// allocate data and set the header
|
104
|
-
auto segment =
|
131
|
+
auto segment = reinterpret_cast<ListSegment *>(AllocateListData(allocator, capacity));
|
105
132
|
segment->capacity = capacity;
|
106
133
|
segment->count = 0;
|
107
134
|
segment->next = nullptr;
|
@@ -109,24 +136,25 @@ static ListSegment *CreateListSegment(const ListSegmentFunctions &, Allocator &a
|
|
109
136
|
// create an empty linked list for the child vector
|
110
137
|
auto linked_child_list = GetListChildData(segment);
|
111
138
|
LinkedList linked_list(0, nullptr, nullptr);
|
112
|
-
Store<LinkedList>(linked_list, (
|
139
|
+
Store<LinkedList>(linked_list, data_ptr_cast(linked_child_list));
|
113
140
|
|
114
141
|
return segment;
|
115
142
|
}
|
116
143
|
|
117
144
|
void DestroyListSegment(const ListSegmentFunctions &functions, ListSegment *segment, Allocator &allocator) {
|
118
145
|
// destroy the child list
|
119
|
-
auto linked_child_list = Load<LinkedList>((
|
146
|
+
auto linked_child_list = Load<LinkedList>(data_ptr_cast(GetListChildData(segment)));
|
120
147
|
DestroyLinkedList(functions.child_functions[0], allocator, linked_child_list);
|
121
148
|
|
122
149
|
// destroy the list segment itself
|
123
|
-
allocator.FreeData((
|
150
|
+
allocator.FreeData(data_ptr_cast(segment), GetAllocationSizeList(segment->capacity));
|
124
151
|
}
|
125
152
|
|
126
153
|
static ListSegment *CreateStructSegment(const ListSegmentFunctions &functions, Allocator &allocator,
|
127
154
|
uint16_t capacity) {
|
128
155
|
// allocate data and set header
|
129
|
-
auto segment =
|
156
|
+
auto segment =
|
157
|
+
reinterpret_cast<ListSegment *>(AllocateStructData(allocator, capacity, functions.child_functions.size()));
|
130
158
|
segment->capacity = capacity;
|
131
159
|
segment->count = 0;
|
132
160
|
segment->next = nullptr;
|
@@ -136,7 +164,7 @@ static ListSegment *CreateStructSegment(const ListSegmentFunctions &functions, A
|
|
136
164
|
for (idx_t i = 0; i < functions.child_functions.size(); i++) {
|
137
165
|
auto child_function = functions.child_functions[i];
|
138
166
|
auto child_segment = child_function.create_segment(child_function, allocator, capacity);
|
139
|
-
Store<ListSegment *>(child_segment, (
|
167
|
+
Store<ListSegment *>(child_segment, data_ptr_cast(child_segments + i));
|
140
168
|
}
|
141
169
|
|
142
170
|
return segment;
|
@@ -147,12 +175,12 @@ void DestroyStructSegment(const ListSegmentFunctions &functions, ListSegment *se
|
|
147
175
|
auto child_segments = GetStructData(segment);
|
148
176
|
for (idx_t i = 0; i < functions.child_functions.size(); i++) {
|
149
177
|
auto child_function = functions.child_functions[i];
|
150
|
-
auto child_segment = Load<ListSegment *>((
|
178
|
+
auto child_segment = Load<ListSegment *>(data_ptr_cast(child_segments + i));
|
151
179
|
child_function.destroy(child_function, child_segment, allocator);
|
152
180
|
}
|
153
181
|
|
154
182
|
// destroy the struct segment itself
|
155
|
-
allocator.FreeData((
|
183
|
+
allocator.FreeData(data_ptr_cast(segment),
|
156
184
|
GetAllocationSizeStruct(segment->capacity, functions.child_functions.size()));
|
157
185
|
}
|
158
186
|
|
@@ -200,7 +228,7 @@ static void WriteDataToPrimitiveSegment(const ListSegmentFunctions &functions, A
|
|
200
228
|
// write value
|
201
229
|
if (!is_null) {
|
202
230
|
auto data = GetPrimitiveData<T>(segment);
|
203
|
-
Store<T>(((T *)input_data)[entry_idx], (
|
231
|
+
Store<T>(((T *)input_data)[entry_idx], data_ptr_cast(data + segment->count));
|
204
232
|
}
|
205
233
|
}
|
206
234
|
|
@@ -208,7 +236,7 @@ static void WriteDataToVarcharSegment(const ListSegmentFunctions &functions, All
|
|
208
236
|
Vector &input, idx_t &entry_idx, idx_t &count) {
|
209
237
|
|
210
238
|
// get the vector data and the source index of the entry that we want to write
|
211
|
-
auto input_data = FlatVector::GetData(input);
|
239
|
+
auto input_data = FlatVector::GetData<string_t>(input);
|
212
240
|
|
213
241
|
// write null validity
|
214
242
|
auto null_mask = GetNullMask(segment);
|
@@ -222,19 +250,19 @@ static void WriteDataToVarcharSegment(const ListSegmentFunctions &functions, All
|
|
222
250
|
// get the string
|
223
251
|
string_t str_t;
|
224
252
|
if (!is_null) {
|
225
|
-
str_t =
|
253
|
+
str_t = input_data[entry_idx];
|
226
254
|
str_length = str_t.GetSize();
|
227
255
|
}
|
228
256
|
|
229
257
|
// we can reconstruct the offset from the length
|
230
|
-
Store<uint64_t>(str_length, (
|
258
|
+
Store<uint64_t>(str_length, data_ptr_cast(str_length_data + segment->count));
|
231
259
|
|
232
260
|
if (is_null) {
|
233
261
|
return;
|
234
262
|
}
|
235
263
|
|
236
264
|
// write the characters to the linked list of child segments
|
237
|
-
auto child_segments = Load<LinkedList>((
|
265
|
+
auto child_segments = Load<LinkedList>(data_ptr_cast(GetListChildData(segment)));
|
238
266
|
for (char &c : str_t.GetString()) {
|
239
267
|
auto child_segment = GetSegment(functions.child_functions.back(), allocator, child_segments);
|
240
268
|
auto data = GetPrimitiveData<char>(child_segment);
|
@@ -244,14 +272,14 @@ static void WriteDataToVarcharSegment(const ListSegmentFunctions &functions, All
|
|
244
272
|
}
|
245
273
|
|
246
274
|
// store the updated linked list
|
247
|
-
Store<LinkedList>(child_segments, (
|
275
|
+
Store<LinkedList>(child_segments, data_ptr_cast(GetListChildData(segment)));
|
248
276
|
}
|
249
277
|
|
250
278
|
static void WriteDataToListSegment(const ListSegmentFunctions &functions, Allocator &allocator, ListSegment *segment,
|
251
279
|
Vector &input, idx_t &entry_idx, idx_t &count) {
|
252
280
|
|
253
281
|
// get the vector data and the source index of the entry that we want to write
|
254
|
-
auto input_data = FlatVector::GetData(input);
|
282
|
+
auto input_data = FlatVector::GetData<list_entry_t>(input);
|
255
283
|
|
256
284
|
// write null validity
|
257
285
|
auto null_mask = GetNullMask(segment);
|
@@ -264,7 +292,7 @@ static void WriteDataToListSegment(const ListSegmentFunctions &functions, Alloca
|
|
264
292
|
|
265
293
|
if (!is_null) {
|
266
294
|
// get list entry information
|
267
|
-
auto list_entries =
|
295
|
+
auto list_entries = input_data;
|
268
296
|
const auto &list_entry = list_entries[entry_idx];
|
269
297
|
list_length = list_entry.length;
|
270
298
|
|
@@ -273,7 +301,7 @@ static void WriteDataToListSegment(const ListSegmentFunctions &functions, Alloca
|
|
273
301
|
auto &child_vector = ListVector::GetEntry(input);
|
274
302
|
|
275
303
|
// loop over the child vector entries and recurse on them
|
276
|
-
auto child_segments = Load<LinkedList>((
|
304
|
+
auto child_segments = Load<LinkedList>(data_ptr_cast(GetListChildData(segment)));
|
277
305
|
D_ASSERT(functions.child_functions.size() == 1);
|
278
306
|
for (idx_t child_idx = 0; child_idx < list_entry.length; child_idx++) {
|
279
307
|
auto source_idx_child = list_entry.offset + child_idx;
|
@@ -281,10 +309,10 @@ static void WriteDataToListSegment(const ListSegmentFunctions &functions, Alloca
|
|
281
309
|
lists_size);
|
282
310
|
}
|
283
311
|
// store the updated linked list
|
284
|
-
Store<LinkedList>(child_segments, (
|
312
|
+
Store<LinkedList>(child_segments, data_ptr_cast(GetListChildData(segment)));
|
285
313
|
}
|
286
314
|
|
287
|
-
Store<uint64_t>(list_length, (
|
315
|
+
Store<uint64_t>(list_length, data_ptr_cast(list_length_data + segment->count));
|
288
316
|
}
|
289
317
|
|
290
318
|
static void WriteDataToStructSegment(const ListSegmentFunctions &functions, Allocator &allocator, ListSegment *segment,
|
@@ -302,7 +330,7 @@ static void WriteDataToStructSegment(const ListSegmentFunctions &functions, Allo
|
|
302
330
|
|
303
331
|
// write the data of each of the children of the struct
|
304
332
|
for (idx_t child_count = 0; child_count < children.size(); child_count++) {
|
305
|
-
auto child_list_segment = Load<ListSegment *>((
|
333
|
+
auto child_list_segment = Load<ListSegment *>(data_ptr_cast(child_list + child_count));
|
306
334
|
auto &child_function = functions.child_functions[child_count];
|
307
335
|
child_function.write_data(child_function, allocator, child_list_segment, *children[child_count], entry_idx,
|
308
336
|
count);
|
@@ -339,13 +367,13 @@ static void ReadDataFromPrimitiveSegment(const ListSegmentFunctions &, const Lis
|
|
339
367
|
}
|
340
368
|
}
|
341
369
|
|
342
|
-
auto aggr_vector_data = FlatVector::GetData(result);
|
370
|
+
auto aggr_vector_data = FlatVector::GetData<T>(result);
|
343
371
|
|
344
372
|
// load values
|
345
373
|
for (idx_t i = 0; i < segment->count; i++) {
|
346
374
|
if (aggr_vector_validity.RowIsValid(total_count + i)) {
|
347
375
|
auto data = GetPrimitiveData<T>(segment);
|
348
|
-
|
376
|
+
aggr_vector_data[total_count + i] = Load<T>(const_data_ptr_cast(data + i));
|
349
377
|
}
|
350
378
|
}
|
351
379
|
}
|
@@ -365,7 +393,7 @@ static void ReadDataFromVarcharSegment(const ListSegmentFunctions &, const ListS
|
|
365
393
|
|
366
394
|
// append all the child chars to one string
|
367
395
|
string str = "";
|
368
|
-
auto linked_child_list = Load<LinkedList>((
|
396
|
+
auto linked_child_list = Load<LinkedList>(const_data_ptr_cast(GetListChildData(segment)));
|
369
397
|
while (linked_child_list.first_segment) {
|
370
398
|
auto child_segment = linked_child_list.first_segment;
|
371
399
|
auto data = GetPrimitiveData<char>(child_segment);
|
@@ -375,17 +403,17 @@ static void ReadDataFromVarcharSegment(const ListSegmentFunctions &, const ListS
|
|
375
403
|
linked_child_list.last_segment = nullptr;
|
376
404
|
|
377
405
|
// use length and (reconstructed) offset to get the correct substrings
|
378
|
-
auto aggr_vector_data = FlatVector::GetData(result);
|
406
|
+
auto aggr_vector_data = FlatVector::GetData<string_t>(result);
|
379
407
|
auto str_length_data = GetListLengthData(segment);
|
380
408
|
|
381
409
|
// get the substrings and write them to the result vector
|
382
410
|
idx_t offset = 0;
|
383
411
|
for (idx_t i = 0; i < segment->count; i++) {
|
384
412
|
if (!null_mask[i]) {
|
385
|
-
auto str_length = Load<uint64_t>((
|
413
|
+
auto str_length = Load<uint64_t>(const_data_ptr_cast(str_length_data + i));
|
386
414
|
auto substr = str.substr(offset, str_length);
|
387
415
|
auto str_t = StringVector::AddStringOrBlob(result, substr);
|
388
|
-
|
416
|
+
aggr_vector_data[total_count + i] = str_t;
|
389
417
|
offset += str_length;
|
390
418
|
}
|
391
419
|
}
|
@@ -416,14 +444,14 @@ static void ReadDataFromListSegment(const ListSegmentFunctions &functions, const
|
|
416
444
|
// set length and offsets
|
417
445
|
auto list_length_data = GetListLengthData(segment);
|
418
446
|
for (idx_t i = 0; i < segment->count; i++) {
|
419
|
-
auto list_length = Load<uint64_t>((
|
447
|
+
auto list_length = Load<uint64_t>(const_data_ptr_cast(list_length_data + i));
|
420
448
|
list_vector_data[total_count + i].length = list_length;
|
421
449
|
list_vector_data[total_count + i].offset = offset;
|
422
450
|
offset += list_length;
|
423
451
|
}
|
424
452
|
|
425
453
|
auto &child_vector = ListVector::GetEntry(result);
|
426
|
-
auto linked_child_list = Load<LinkedList>((
|
454
|
+
auto linked_child_list = Load<LinkedList>(const_data_ptr_cast(GetListChildData(segment)));
|
427
455
|
ListVector::Reserve(result, offset);
|
428
456
|
|
429
457
|
// recurse into the linked list of child values
|
@@ -451,7 +479,7 @@ static void ReadDataFromStructSegment(const ListSegmentFunctions &functions, con
|
|
451
479
|
D_ASSERT(children.size() == functions.child_functions.size());
|
452
480
|
auto struct_children = GetStructData(segment);
|
453
481
|
for (idx_t child_count = 0; child_count < children.size(); child_count++) {
|
454
|
-
auto struct_children_segment = Load<ListSegment *>((
|
482
|
+
auto struct_children_segment = Load<ListSegment *>(const_data_ptr_cast(struct_children + child_count));
|
455
483
|
auto &child_function = functions.child_functions[child_count];
|
456
484
|
child_function.read_data(child_function, struct_children_segment, *children[child_count], total_count);
|
457
485
|
}
|
@@ -487,25 +515,25 @@ static ListSegment *CopyDataFromListSegment(const ListSegmentFunctions &function
|
|
487
515
|
Allocator &allocator) {
|
488
516
|
|
489
517
|
// create an empty linked list for the child vector of target
|
490
|
-
auto source_linked_child_list = Load<LinkedList>((
|
518
|
+
auto source_linked_child_list = Load<LinkedList>(const_data_ptr_cast(GetListChildData(source)));
|
491
519
|
|
492
520
|
// create the segment
|
493
|
-
auto target =
|
521
|
+
auto target = reinterpret_cast<ListSegment *>(AllocateListData(allocator, source->capacity));
|
494
522
|
memcpy(target, source,
|
495
523
|
sizeof(ListSegment) + source->capacity * (sizeof(bool) + sizeof(uint64_t)) + sizeof(LinkedList));
|
496
524
|
target->next = nullptr;
|
497
525
|
|
498
526
|
auto target_linked_list = GetListChildData(target);
|
499
527
|
LinkedList linked_list(source_linked_child_list.total_capacity, nullptr, nullptr);
|
500
|
-
Store<LinkedList>(linked_list, (
|
528
|
+
Store<LinkedList>(linked_list, data_ptr_cast(target_linked_list));
|
501
529
|
|
502
530
|
// recurse to copy the linked child list
|
503
|
-
auto target_linked_child_list = Load<LinkedList>((
|
531
|
+
auto target_linked_child_list = Load<LinkedList>(data_ptr_cast(GetListChildData(target)));
|
504
532
|
D_ASSERT(functions.child_functions.size() == 1);
|
505
533
|
functions.child_functions[0].CopyLinkedList(source_linked_child_list, target_linked_child_list, allocator);
|
506
534
|
|
507
535
|
// store the updated linked list
|
508
|
-
Store<LinkedList>(target_linked_child_list, (
|
536
|
+
Store<LinkedList>(target_linked_child_list, data_ptr_cast(GetListChildData(target)));
|
509
537
|
return target;
|
510
538
|
}
|
511
539
|
|
@@ -513,7 +541,7 @@ static ListSegment *CopyDataFromStructSegment(const ListSegmentFunctions &functi
|
|
513
541
|
Allocator &allocator) {
|
514
542
|
|
515
543
|
auto source_child_count = functions.child_functions.size();
|
516
|
-
auto target =
|
544
|
+
auto target = reinterpret_cast<ListSegment *>(AllocateStructData(allocator, source->capacity, source_child_count));
|
517
545
|
memcpy(target, source,
|
518
546
|
sizeof(ListSegment) + source->capacity * sizeof(bool) + source_child_count * sizeof(ListSegment *));
|
519
547
|
target->next = nullptr;
|
@@ -524,9 +552,9 @@ static ListSegment *CopyDataFromStructSegment(const ListSegmentFunctions &functi
|
|
524
552
|
|
525
553
|
for (idx_t i = 0; i < functions.child_functions.size(); i++) {
|
526
554
|
auto child_function = functions.child_functions[i];
|
527
|
-
auto source_child_segment = Load<ListSegment *>((
|
555
|
+
auto source_child_segment = Load<ListSegment *>(const_data_ptr_cast(source_child_segments + i));
|
528
556
|
auto target_child_segment = child_function.copy_data(child_function, source_child_segment, allocator);
|
529
|
-
Store<ListSegment *>(target_child_segment, (
|
557
|
+
Store<ListSegment *>(target_child_segment, data_ptr_cast(target_child_segments + i));
|
530
558
|
}
|
531
559
|
return target;
|
532
560
|
}
|
@@ -19,7 +19,7 @@ PartitionedTupleData::PartitionedTupleData(const PartitionedTupleData &other)
|
|
19
19
|
unique_ptr<PartitionedTupleData> PartitionedTupleData::CreateShared() {
|
20
20
|
switch (type) {
|
21
21
|
case PartitionedTupleDataType::RADIX:
|
22
|
-
return make_uniq<RadixPartitionedTupleData>((
|
22
|
+
return make_uniq<RadixPartitionedTupleData>(Cast<RadixPartitionedTupleData>());
|
23
23
|
default:
|
24
24
|
throw NotImplementedException("CreateShared for this type of PartitionedTupleData");
|
25
25
|
}
|
@@ -101,16 +101,17 @@ void RowDataCollectionScanner::AlignHeapBlocks(RowDataCollection &swizzled_block
|
|
101
101
|
make_uniq<RowDataBlock>(buffer_manager, MaxValue<idx_t>(total_size, (idx_t)Storage::BLOCK_SIZE), 1));
|
102
102
|
auto new_heap_handle = buffer_manager.Pin(swizzled_string_heap.blocks.back()->block);
|
103
103
|
auto new_heap_ptr = new_heap_handle.Ptr();
|
104
|
+
for (auto &ptr_and_size : ptrs_and_sizes) {
|
105
|
+
memcpy(new_heap_ptr, ptr_and_size.first, ptr_and_size.second);
|
106
|
+
new_heap_ptr += ptr_and_size.second;
|
107
|
+
}
|
108
|
+
new_heap_ptr = new_heap_handle.Ptr();
|
104
109
|
if (swizzled_string_heap.keep_pinned) {
|
105
110
|
// Since the heap blocks are pinned, we can unswizzle the data again.
|
106
111
|
swizzled_string_heap.pinned_blocks.emplace_back(std::move(new_heap_handle));
|
107
112
|
RowOperations::UnswizzlePointers(layout, base_row_ptr, new_heap_ptr, data_block->count);
|
108
113
|
RowOperations::UnswizzleHeapPointer(layout, base_row_ptr, new_heap_ptr, data_block->count);
|
109
114
|
}
|
110
|
-
for (auto &ptr_and_size : ptrs_and_sizes) {
|
111
|
-
memcpy(new_heap_ptr, ptr_and_size.first, ptr_and_size.second);
|
112
|
-
new_heap_ptr += ptr_and_size.second;
|
113
|
-
}
|
114
115
|
}
|
115
116
|
}
|
116
117
|
|
@@ -241,8 +241,10 @@ void TupleDataAllocator::InitializeChunkStateInternal(TupleDataPinState &pin_sta
|
|
241
241
|
lock_guard<mutex> guard(part->lock);
|
242
242
|
const auto old_base_heap_ptr = part->base_heap_ptr;
|
243
243
|
if (old_base_heap_ptr != new_base_heap_ptr) {
|
244
|
-
Vector old_heap_ptrs(
|
245
|
-
|
244
|
+
Vector old_heap_ptrs(
|
245
|
+
Value::POINTER(CastPointerToValue(old_base_heap_ptr + part->heap_block_offset)));
|
246
|
+
Vector new_heap_ptrs(
|
247
|
+
Value::POINTER(CastPointerToValue(new_base_heap_ptr + part->heap_block_offset)));
|
246
248
|
RecomputeHeapPointers(old_heap_ptrs, *ConstantVector::ZeroSelectionVector(), row_locations,
|
247
249
|
new_heap_ptrs, offset, next, layout, 0);
|
248
250
|
part->base_heap_ptr = new_base_heap_ptr;
|
@@ -298,7 +300,7 @@ void TupleDataAllocator::RecomputeHeapPointers(Vector &old_heap_ptrs, const Sele
|
|
298
300
|
|
299
301
|
UnifiedVectorFormat new_heap_data;
|
300
302
|
new_heap_ptrs.ToUnifiedFormat(offset + count, new_heap_data);
|
301
|
-
const auto new_heap_locations = (
|
303
|
+
const auto new_heap_locations = UnifiedVectorFormat::GetData<data_ptr_t>(new_heap_data);
|
302
304
|
const auto new_heap_sel = *new_heap_data.sel;
|
303
305
|
|
304
306
|
for (idx_t col_idx = 0; col_idx < layout.ColumnCount(); col_idx++) {
|
@@ -30,7 +30,7 @@ inline void TupleDataValueStore(const string_t &source, const data_ptr_t &row_lo
|
|
30
30
|
Store<string_t>(source, row_location + offset_in_row);
|
31
31
|
} else {
|
32
32
|
memcpy(heap_location, source.GetData(), source.GetSize());
|
33
|
-
Store<string_t>(string_t((
|
33
|
+
Store<string_t>(string_t(const_char_ptr_cast(heap_location), source.GetSize()), row_location + offset_in_row);
|
34
34
|
heap_location += source.GetSize();
|
35
35
|
}
|
36
36
|
}
|
@@ -57,13 +57,24 @@ static inline T TupleDataWithinListValueLoad(const data_ptr_t &location, data_pt
|
|
57
57
|
template <>
|
58
58
|
inline string_t TupleDataWithinListValueLoad(const data_ptr_t &location, data_ptr_t &heap_location) {
|
59
59
|
const auto size = Load<uint32_t>(location);
|
60
|
-
string_t result((
|
60
|
+
string_t result(const_char_ptr_cast(heap_location), size);
|
61
61
|
heap_location += size;
|
62
62
|
return result;
|
63
63
|
}
|
64
64
|
|
65
|
+
static void ResetCombinedListData(vector<TupleDataVectorFormat> &vector_data) {
|
66
|
+
for (auto &vd : vector_data) {
|
67
|
+
vd.combined_list_data = nullptr;
|
68
|
+
ResetCombinedListData(vd.child_formats);
|
69
|
+
}
|
70
|
+
}
|
71
|
+
|
65
72
|
void TupleDataCollection::ComputeHeapSizes(TupleDataChunkState &chunk_state, const DataChunk &new_chunk,
|
66
73
|
const SelectionVector &append_sel, const idx_t append_count) {
|
74
|
+
#ifdef DEBUG
|
75
|
+
ResetCombinedListData(chunk_state.vector_data);
|
76
|
+
#endif
|
77
|
+
|
67
78
|
auto heap_sizes = FlatVector::GetData<idx_t>(chunk_state.heap_sizes);
|
68
79
|
std::fill_n(heap_sizes, new_chunk.size(), 0);
|
69
80
|
|
@@ -96,7 +107,7 @@ void TupleDataCollection::ComputeHeapSizes(Vector &heap_sizes_v, const Vector &s
|
|
96
107
|
switch (type) {
|
97
108
|
case PhysicalType::VARCHAR: {
|
98
109
|
// Only non-inlined strings are stored in the heap
|
99
|
-
const auto source_data = (
|
110
|
+
const auto source_data = UnifiedVectorFormat::GetData<string_t>(source_vector_data);
|
100
111
|
for (idx_t i = 0; i < append_count; i++) {
|
101
112
|
const auto source_idx = source_sel.get_index(append_sel.get_index(i));
|
102
113
|
if (source_validity.RowIsValid(source_idx)) {
|
@@ -175,7 +186,7 @@ void TupleDataCollection::ComputeFixedWithinListHeapSizes(Vector &heap_sizes_v,
|
|
175
186
|
const UnifiedVectorFormat &list_data) {
|
176
187
|
// List data
|
177
188
|
const auto list_sel = *list_data.sel;
|
178
|
-
const auto list_entries = (
|
189
|
+
const auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(list_data);
|
179
190
|
const auto &list_validity = list_data.validity;
|
180
191
|
|
181
192
|
// Target
|
@@ -206,12 +217,12 @@ void TupleDataCollection::StringWithinListComputeHeapSizes(Vector &heap_sizes_v,
|
|
206
217
|
// Source
|
207
218
|
const auto &source_data = source_format.data;
|
208
219
|
const auto source_sel = *source_data.sel;
|
209
|
-
const auto data = (
|
220
|
+
const auto data = UnifiedVectorFormat::GetData<string_t>(source_data);
|
210
221
|
const auto &source_validity = source_data.validity;
|
211
222
|
|
212
223
|
// List data
|
213
224
|
const auto list_sel = *list_data.sel;
|
214
|
-
const auto list_entries = (
|
225
|
+
const auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(list_data);
|
215
226
|
const auto &list_validity = list_data.validity;
|
216
227
|
|
217
228
|
// Target
|
@@ -249,7 +260,7 @@ void TupleDataCollection::StructWithinListComputeHeapSizes(Vector &heap_sizes_v,
|
|
249
260
|
const UnifiedVectorFormat &list_data) {
|
250
261
|
// List data
|
251
262
|
const auto list_sel = *list_data.sel;
|
252
|
-
const auto list_entries = (
|
263
|
+
const auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(list_data);
|
253
264
|
const auto &list_validity = list_data.validity;
|
254
265
|
|
255
266
|
// Target
|
@@ -293,7 +304,12 @@ static void ApplySliceRecursive(const Vector &source_v, TupleDataVectorFormat &s
|
|
293
304
|
for (idx_t struct_col_idx = 0; struct_col_idx < struct_sources.size(); struct_col_idx++) {
|
294
305
|
auto &struct_source = *struct_sources[struct_col_idx];
|
295
306
|
auto &struct_format = source_format.child_formats[struct_col_idx];
|
296
|
-
|
307
|
+
#ifdef DEBUG
|
308
|
+
D_ASSERT(!struct_format.combined_list_data);
|
309
|
+
#endif
|
310
|
+
if (!struct_format.combined_list_data) {
|
311
|
+
struct_format.combined_list_data = make_uniq<CombinedListData>();
|
312
|
+
}
|
297
313
|
ApplySliceRecursive(struct_source, struct_format, *source_format.data.sel, count);
|
298
314
|
}
|
299
315
|
}
|
@@ -305,17 +321,18 @@ void TupleDataCollection::ListWithinListComputeHeapSizes(Vector &heap_sizes_v, c
|
|
305
321
|
const UnifiedVectorFormat &list_data) {
|
306
322
|
// List data (of the list Vector that "source_v" is in)
|
307
323
|
const auto list_sel = *list_data.sel;
|
308
|
-
const auto list_entries = (
|
324
|
+
const auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(list_data);
|
309
325
|
const auto &list_validity = list_data.validity;
|
310
326
|
|
311
|
-
// Child list
|
327
|
+
// Child list ("source_v")
|
312
328
|
const auto &child_list_data = source_format.data;
|
313
329
|
const auto child_list_sel = *child_list_data.sel;
|
314
|
-
const auto child_list_entries = (
|
330
|
+
const auto child_list_entries = UnifiedVectorFormat::GetData<list_entry_t>(child_list_data);
|
315
331
|
const auto &child_list_validity = child_list_data.validity;
|
316
332
|
|
317
|
-
// Figure out actual child list size (
|
318
|
-
|
333
|
+
// Figure out actual child list size (can differ from ListVector::GetListSize if dict/const vector),
|
334
|
+
// and we cannot use ConstantVector::ZeroSelectionVector because it may need to be longer than STANDARD_VECTOR_SIZE
|
335
|
+
idx_t sum_of_sizes = 0;
|
319
336
|
for (idx_t i = 0; i < append_count; i++) {
|
320
337
|
const auto list_idx = list_sel.get_index(append_sel.get_index(i));
|
321
338
|
if (!list_validity.RowIsValid(list_idx)) {
|
@@ -324,15 +341,33 @@ void TupleDataCollection::ListWithinListComputeHeapSizes(Vector &heap_sizes_v, c
|
|
324
341
|
const auto &list_entry = list_entries[list_idx];
|
325
342
|
const auto &list_offset = list_entry.offset;
|
326
343
|
const auto &list_length = list_entry.length;
|
327
|
-
|
344
|
+
|
345
|
+
for (idx_t child_i = 0; child_i < list_length; child_i++) {
|
346
|
+
const auto child_list_idx = child_list_sel.get_index(list_offset + child_i);
|
347
|
+
if (!child_list_validity.RowIsValid(child_list_idx)) {
|
348
|
+
continue;
|
349
|
+
}
|
350
|
+
|
351
|
+
const auto &child_list_entry = child_list_entries[child_list_idx];
|
352
|
+
const auto &child_list_length = child_list_entry.length;
|
353
|
+
|
354
|
+
sum_of_sizes += child_list_length;
|
355
|
+
}
|
328
356
|
}
|
357
|
+
const auto child_list_child_count = MaxValue<idx_t>(sum_of_sizes, ListVector::GetListSize(source_v));
|
329
358
|
|
330
359
|
// Target
|
331
360
|
auto heap_sizes = FlatVector::GetData<idx_t>(heap_sizes_v);
|
332
361
|
|
333
362
|
// Construct combined list entries and a selection vector for the child list child
|
334
363
|
auto &child_format = source_format.child_formats[0];
|
335
|
-
|
364
|
+
#ifdef DEBUG
|
365
|
+
// In debug mode this should be deleted by ResetCombinedListData
|
366
|
+
D_ASSERT(!child_format.combined_list_data);
|
367
|
+
#endif
|
368
|
+
if (!child_format.combined_list_data) {
|
369
|
+
child_format.combined_list_data = make_uniq<CombinedListData>();
|
370
|
+
}
|
336
371
|
auto &combined_list_data = *child_format.combined_list_data;
|
337
372
|
auto &combined_list_entries = combined_list_data.combined_list_entries;
|
338
373
|
SelectionVector combined_sel(child_list_child_count);
|
@@ -365,7 +400,7 @@ void TupleDataCollection::ListWithinListComputeHeapSizes(Vector &heap_sizes_v, c
|
|
365
400
|
const auto &child_list_offset = child_list_entry.offset;
|
366
401
|
const auto &child_list_length = child_list_entry.length;
|
367
402
|
|
368
|
-
// Add this child's list
|
403
|
+
// Add this child's list entries to the combined selection vector
|
369
404
|
for (idx_t child_value_i = 0; child_value_i < child_list_length; child_value_i++) {
|
370
405
|
auto idx = combined_list_offset + child_list_size + child_value_i;
|
371
406
|
auto loc = child_list_offset + child_value_i;
|
@@ -384,7 +419,7 @@ void TupleDataCollection::ListWithinListComputeHeapSizes(Vector &heap_sizes_v, c
|
|
384
419
|
// Create a combined child_list_data to be used as list_data in the recursion
|
385
420
|
auto &combined_child_list_data = combined_list_data.combined_data;
|
386
421
|
combined_child_list_data.sel = list_data.sel;
|
387
|
-
combined_child_list_data.data = (
|
422
|
+
combined_child_list_data.data = data_ptr_cast(combined_list_entries);
|
388
423
|
combined_child_list_data.validity = list_data.validity;
|
389
424
|
|
390
425
|
// Combine the selection vectors
|
@@ -439,7 +474,7 @@ static void TupleDataTemplatedScatter(const Vector &source, const TupleDataVecto
|
|
439
474
|
// Source
|
440
475
|
const auto &source_data = source_format.data;
|
441
476
|
const auto source_sel = *source_data.sel;
|
442
|
-
const auto data = (
|
477
|
+
const auto data = UnifiedVectorFormat::GetData<T>(source_data);
|
443
478
|
const auto &validity = source_data.validity;
|
444
479
|
|
445
480
|
// Target
|
@@ -535,7 +570,7 @@ static void TupleDataListScatter(const Vector &source, const TupleDataVectorForm
|
|
535
570
|
// Source
|
536
571
|
const auto &source_data = source_format.data;
|
537
572
|
const auto source_sel = *source_data.sel;
|
538
|
-
const auto data = (
|
573
|
+
const auto data = UnifiedVectorFormat::GetData<list_entry_t>(source_data);
|
539
574
|
const auto &validity = source_data.validity;
|
540
575
|
|
541
576
|
// Target
|
@@ -582,12 +617,12 @@ static void TupleDataTemplatedWithinListScatter(const Vector &source, const Tupl
|
|
582
617
|
// Source
|
583
618
|
const auto &source_data = source_format.data;
|
584
619
|
const auto source_sel = *source_data.sel;
|
585
|
-
const auto data = (
|
620
|
+
const auto data = UnifiedVectorFormat::GetData<T>(source_data);
|
586
621
|
const auto &source_validity = source_data.validity;
|
587
622
|
|
588
623
|
// List data
|
589
624
|
const auto list_sel = *list_data.sel;
|
590
|
-
const auto list_entries = (
|
625
|
+
const auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(list_data);
|
591
626
|
const auto &list_validity = list_data.validity;
|
592
627
|
|
593
628
|
// Target
|
@@ -641,7 +676,7 @@ static void TupleDataStructWithinListScatter(const Vector &source, const TupleDa
|
|
641
676
|
|
642
677
|
// List data
|
643
678
|
const auto list_sel = *list_data.sel;
|
644
|
-
const auto list_entries = (
|
679
|
+
const auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(list_data);
|
645
680
|
const auto &list_validity = list_data.validity;
|
646
681
|
|
647
682
|
// Target
|
@@ -693,13 +728,13 @@ static void TupleDataListWithinListScatter(const Vector &child_list, const Tuple
|
|
693
728
|
const vector<TupleDataScatterFunction> &child_functions) {
|
694
729
|
// List data (of the list Vector that "child_list" is in)
|
695
730
|
const auto list_sel = *list_data.sel;
|
696
|
-
const auto list_entries = (
|
731
|
+
const auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(list_data);
|
697
732
|
const auto &list_validity = list_data.validity;
|
698
733
|
|
699
734
|
// Child list
|
700
735
|
const auto &child_list_data = child_list_format.data;
|
701
736
|
const auto child_list_sel = *child_list_data.sel;
|
702
|
-
const auto child_list_entries = (
|
737
|
+
const auto child_list_entries = UnifiedVectorFormat::GetData<list_entry_t>(child_list_data);
|
703
738
|
const auto &child_list_validity = child_list_data.validity;
|
704
739
|
|
705
740
|
// Target
|
@@ -51,7 +51,7 @@ string_t StringHeap::AddBlob(const string_t &data) {
|
|
51
51
|
|
52
52
|
string_t StringHeap::EmptyString(idx_t len) {
|
53
53
|
D_ASSERT(len > string_t::INLINE_LENGTH);
|
54
|
-
auto insert_pos = (
|
54
|
+
auto insert_pos = const_char_ptr_cast(allocator.Allocate(len));
|
55
55
|
return string_t(insert_pos, len);
|
56
56
|
}
|
57
57
|
|