duckdb 0.8.1-dev65.0 → 0.8.1
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 +3 -1
- package/src/duckdb/extension/icu/icu-datepart.cpp +2 -2
- package/src/duckdb/extension/icu/icu-extension.cpp +1 -1
- package/src/duckdb/extension/icu/icu-makedate.cpp +5 -4
- package/src/duckdb/extension/icu/icu-strptime.cpp +1 -1
- package/src/duckdb/extension/icu/third_party/icu/i18n/nfsubs.cpp +0 -2
- package/src/duckdb/extension/json/buffered_json_reader.cpp +23 -14
- package/src/duckdb/extension/json/include/buffered_json_reader.hpp +6 -6
- package/src/duckdb/extension/json/include/json_common.hpp +13 -3
- package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
- package/src/duckdb/extension/json/include/json_scan.hpp +5 -2
- package/src/duckdb/extension/json/json_functions/json_contains.cpp +5 -0
- package/src/duckdb/extension/json/json_functions/json_create.cpp +16 -16
- package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +3 -3
- package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +2 -2
- package/src/duckdb/extension/json/json_functions/json_structure.cpp +5 -3
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +12 -12
- package/src/duckdb/extension/json/json_functions/read_json.cpp +2 -1
- package/src/duckdb/extension/json/json_functions.cpp +6 -3
- package/src/duckdb/extension/json/json_scan.cpp +43 -27
- 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 +27 -2
- 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 -17
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +7 -1
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +121 -0
- 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/common/adbc/adbc.cpp +118 -12
- package/src/duckdb/src/common/adbc/driver_manager.cpp +0 -20
- package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
- package/src/duckdb/src/common/arrow/arrow_converter.cpp +11 -12
- package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +11 -10
- 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 +24 -15
- package/src/duckdb/src/common/field_writer.cpp +1 -1
- 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/multi_file_reader.cpp +3 -0
- 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/random_engine.cpp +1 -1
- 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 +61 -24
- package/src/duckdb/src/common/types/string_heap.cpp +1 -1
- package/src/duckdb/src/common/types/time.cpp +2 -8
- package/src/duckdb/src/common/types/timestamp.cpp +37 -1
- package/src/duckdb/src/common/types/value.cpp +3 -2
- package/src/duckdb/src/common/types/vector.cpp +98 -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 +48 -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 +33 -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 +37 -38
- package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
- package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +49 -85
- package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
- package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +116 -134
- package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +63 -100
- 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 +46 -46
- package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +3 -0
- 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 +4 -4
- package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
- package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +26 -9
- package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +7 -9
- 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 +6 -6
- 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 +28 -28
- package/src/duckdb/src/execution/index/art/art.cpp +110 -39
- package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +23 -5
- package/src/duckdb/src/execution/index/art/leaf.cpp +11 -11
- package/src/duckdb/src/execution/index/art/leaf_segment.cpp +10 -0
- package/src/duckdb/src/execution/index/art/node.cpp +48 -35
- package/src/duckdb/src/execution/index/art/node16.cpp +3 -0
- package/src/duckdb/src/execution/index/art/node256.cpp +1 -0
- package/src/duckdb/src/execution/index/art/node4.cpp +3 -0
- package/src/duckdb/src/execution/index/art/node48.cpp +2 -0
- package/src/duckdb/src/execution/index/art/prefix.cpp +2 -0
- package/src/duckdb/src/execution/join_hashtable.cpp +6 -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/aggregate/physical_window.cpp +26 -9
- 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_iejoin.cpp +3 -6
- 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/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_tableinout_function.cpp +1 -0
- package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +10 -5
- 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_attach.cpp +0 -1
- package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +29 -3
- 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 +20 -6
- package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
- package/src/duckdb/src/function/aggregate/distributive/count.cpp +159 -21
- package/src/duckdb/src/function/aggregate/distributive/first.cpp +68 -75
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +14 -14
- 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/list_casts.cpp +2 -4
- 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 +4 -4
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +3 -4
- 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/regexp_util.cpp +6 -2
- 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 +27 -25
- 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 +4 -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 +19 -21
- package/src/duckdb/src/function/table/repeat.cpp +5 -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/pragma_storage_info.cpp +4 -4
- package/src/duckdb/src/function/table/system/test_vector_types.cpp +82 -26
- package/src/duckdb/src/function/table/table_scan.cpp +4 -4
- 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 +11 -1
- 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/allocator.hpp +15 -4
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_appender.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_converter.hpp +2 -3
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_options.hpp +8 -1
- package/src/duckdb/src/include/duckdb/common/arrow/result_arrow_wrapper.hpp +0 -1
- package/src/duckdb/src/include/duckdb/common/bit_utils.hpp +16 -22
- 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/time.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +4 -14
- 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 +13 -7
- package/src/duckdb/src/include/duckdb/execution/index/art/fixed_size_allocator.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/index/art/leaf_segment.hpp +2 -0
- package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +13 -3
- package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +1 -0
- 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 +9 -30
- 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 +4 -2
- 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/nested_functions.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +4 -3
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +9 -8
- package/src/duckdb/src/include/duckdb/main/attached_database.hpp +4 -1
- package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +3 -1
- package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/config.hpp +5 -0
- package/src/duckdb/src/include/duckdb/main/database_manager.hpp +1 -0
- package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +142 -136
- 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 +23 -0
- package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
- package/src/duckdb/src/include/duckdb/main/settings.hpp +19 -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/optimizer/unnest_rewriter.hpp +4 -0
- package/src/duckdb/src/include/duckdb/parallel/meta_pipeline.hpp +12 -3
- 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 +3 -3
- 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 +106 -92
- 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 +37 -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 +7 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +6 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +5 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +5 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +6 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +4 -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/algorithm/byte_reader.hpp +4 -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/data_table.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/in_memory_block_manager.hpp +13 -13
- package/src/duckdb/src/include/duckdb/storage/index.hpp +6 -4
- package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +0 -6
- 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/column_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
- package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table_storage_info.hpp +0 -2
- 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/attached_database.cpp +8 -0
- package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
- package/src/duckdb/src/main/capi/arrow-c.cpp +13 -13
- 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 +3 -6
- 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 +7 -6
- package/src/duckdb/src/main/config.cpp +2 -0
- package/src/duckdb/src/main/database.cpp +1 -0
- package/src/duckdb/src/main/database_manager.cpp +22 -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/query_result.cpp +6 -2
- 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 +41 -6
- package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
- 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/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/optimizer/unnest_rewriter.cpp +27 -16
- package/src/duckdb/src/parallel/executor.cpp +39 -15
- package/src/duckdb/src/parallel/meta_pipeline.cpp +17 -3
- 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_data/create_info.cpp +0 -3
- 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 +98 -38
- 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 +31 -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/nodetype_to_string.cpp +0 -2
- 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_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 -25
- 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 +45 -47
- package/src/duckdb/src/planner/bind_context.cpp +9 -10
- package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -3
- package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
- package/src/duckdb/src/planner/binder/expression/bind_positional_reference_expression.cpp +8 -3
- 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 +39 -23
- package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +1 -28
- package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +18 -1
- package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +0 -25
- 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 +7 -2
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +7 -2
- package/src/duckdb/src/planner/binder.cpp +1 -1
- package/src/duckdb/src/planner/bound_result_modifier.cpp +30 -11
- package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +11 -10
- 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_default_expression.cpp +7 -1
- 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 +18 -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/operator/logical_distinct.cpp +5 -4
- package/src/duckdb/src/planner/operator/logical_pivot.cpp +14 -2
- package/src/duckdb/src/planner/planner.cpp +5 -15
- 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 +12 -10
- package/src/duckdb/src/storage/index.cpp +13 -0
- 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/storage_manager.cpp +6 -0
- package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
- package/src/duckdb/src/storage/table/column_data.cpp +7 -3
- 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 +8 -7
- package/src/duckdb/src/storage/table/row_group_collection.cpp +6 -3
- package/src/duckdb/src/storage/table/standard_column_data.cpp +5 -4
- package/src/duckdb/src/storage/table/struct_column_data.cpp +4 -3
- 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/include/nodes/nodes.hpp +0 -1
- package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +0 -14
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +12828 -12956
- package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
- package/src/duckdb/third_party/zstd/compress/zstd_compress.cpp +3 -0
- package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_cwksp.h +4 -0
- package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +5 -5
- package/src/duckdb/ub_src_parser_transform_statement.cpp +0 -2
- package/test/extension.test.ts +11 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_database_info.hpp +0 -46
- package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +0 -28
@@ -33,8 +33,8 @@ void WriteOverflowStringsToDisk::WriteString(string_t string, block_id_t &result
|
|
33
33
|
size_t compressed_size = 0;
|
34
34
|
compressed_size = s.MaxCompressedLength(uncompressed_size);
|
35
35
|
auto compressed_buf = make_unsafe_uniq_array<data_t>(compressed_size);
|
36
|
-
s.Compress(
|
37
|
-
string_t compressed_string((
|
36
|
+
s.Compress(string.GetData(), uncompressed_size, char_ptr_cast(compressed_buf.get()), &compressed_size);
|
37
|
+
string_t compressed_string(const_char_ptr_cast(compressed_buf.get()), compressed_size);
|
38
38
|
|
39
39
|
// store sizes
|
40
40
|
auto data_ptr = handle.Ptr();
|
@@ -41,7 +41,7 @@ SingleFileCheckpointWriter::SingleFileCheckpointWriter(AttachedDatabase &db, Blo
|
|
41
41
|
}
|
42
42
|
|
43
43
|
BlockManager &SingleFileCheckpointWriter::GetBlockManager() {
|
44
|
-
auto &storage_manager =
|
44
|
+
auto &storage_manager = db.GetStorageManager().Cast<SingleFileStorageManager>();
|
45
45
|
return *storage_manager.block_manager;
|
46
46
|
}
|
47
47
|
|
@@ -55,7 +55,7 @@ unique_ptr<TableDataWriter> SingleFileCheckpointWriter::GetTableDataWriter(Table
|
|
55
55
|
|
56
56
|
void SingleFileCheckpointWriter::CreateCheckpoint() {
|
57
57
|
auto &config = DBConfig::Get(db);
|
58
|
-
auto &storage_manager =
|
58
|
+
auto &storage_manager = db.GetStorageManager().Cast<SingleFileStorageManager>();
|
59
59
|
if (storage_manager.InMemory()) {
|
60
60
|
return;
|
61
61
|
}
|
@@ -73,7 +73,7 @@ void SingleFileCheckpointWriter::CreateCheckpoint() {
|
|
73
73
|
|
74
74
|
vector<reference<SchemaCatalogEntry>> schemas;
|
75
75
|
// we scan the set of committed schemas
|
76
|
-
auto &catalog =
|
76
|
+
auto &catalog = Catalog::GetCatalog(db).Cast<DuckCatalog>();
|
77
77
|
catalog.ScanSchemas([&](SchemaCatalogEntry &entry) { schemas.push_back(entry); });
|
78
78
|
// write the actual data into the database
|
79
79
|
// write the amount of schemas
|
@@ -68,7 +68,7 @@ static bitpacking_metadata_encoded_t EncodeMeta(bitpacking_metadata_t metadata)
|
|
68
68
|
}
|
69
69
|
static bitpacking_metadata_t DecodeMeta(bitpacking_metadata_encoded_t *metadata_encoded) {
|
70
70
|
bitpacking_metadata_t metadata;
|
71
|
-
metadata.mode = Load<BitpackingMode>((
|
71
|
+
metadata.mode = Load<BitpackingMode>(data_ptr_cast(metadata_encoded) + 3);
|
72
72
|
metadata.offset = *metadata_encoded & 0x00FFFFFF;
|
73
73
|
return metadata;
|
74
74
|
}
|
@@ -324,7 +324,7 @@ bool BitpackingAnalyze(AnalyzeState &state, Vector &input, idx_t count) {
|
|
324
324
|
UnifiedVectorFormat vdata;
|
325
325
|
input.ToUnifiedFormat(count, vdata);
|
326
326
|
|
327
|
-
auto data = (
|
327
|
+
auto data = UnifiedVectorFormat::GetData<T>(vdata);
|
328
328
|
for (idx_t i = 0; i < count; i++) {
|
329
329
|
auto idx = vdata.sel->get_index(i);
|
330
330
|
if (!analyze_state.state.template Update<EmptyBitpackingWriter>(data[idx], vdata.validity.RowIsValid(idx))) {
|
@@ -482,7 +482,7 @@ public:
|
|
482
482
|
}
|
483
483
|
|
484
484
|
void Append(UnifiedVectorFormat &vdata, idx_t count) {
|
485
|
-
auto data = (
|
485
|
+
auto data = UnifiedVectorFormat::GetData<T>(vdata);
|
486
486
|
|
487
487
|
for (idx_t i = 0; i < count; i++) {
|
488
488
|
auto idx = vdata.sel->get_index(i);
|
@@ -690,7 +690,7 @@ public:
|
|
690
690
|
idx_t decompress_offset = current_group_offset - extra_count;
|
691
691
|
bool skip_sign_extension = true;
|
692
692
|
|
693
|
-
BitpackingPrimitives::UnPackBuffer<T>((
|
693
|
+
BitpackingPrimitives::UnPackBuffer<T>(data_ptr_cast(decompression_buffer),
|
694
694
|
current_group_ptr + decompress_offset, decompress_count,
|
695
695
|
current_width, skip_sign_extension);
|
696
696
|
|
@@ -795,11 +795,11 @@ void BitpackingScanPartial(ColumnSegment &segment, ColumnScanState &state, idx_t
|
|
795
795
|
|
796
796
|
if (to_scan == BitpackingPrimitives::BITPACKING_ALGORITHM_GROUP_SIZE && offset_in_compression_group == 0) {
|
797
797
|
// Decompress directly into result vector
|
798
|
-
BitpackingPrimitives::UnPackBlock<T>((
|
798
|
+
BitpackingPrimitives::UnPackBlock<T>(data_ptr_cast(current_result_ptr), decompression_group_start_pointer,
|
799
799
|
scan_state.current_width, skip_sign_extend);
|
800
800
|
} else {
|
801
801
|
// Decompress compression algorithm to buffer
|
802
|
-
BitpackingPrimitives::UnPackBlock<T>((
|
802
|
+
BitpackingPrimitives::UnPackBlock<T>(data_ptr_cast(scan_state.decompression_buffer),
|
803
803
|
decompression_group_start_pointer, scan_state.current_width,
|
804
804
|
skip_sign_extend);
|
805
805
|
|
@@ -860,8 +860,8 @@ void BitpackingFetchRow(ColumnSegment &segment, ColumnFetchState &state, row_t r
|
|
860
860
|
D_ASSERT(scan_state.current_group.mode == BitpackingMode::FOR ||
|
861
861
|
scan_state.current_group.mode == BitpackingMode::DELTA_FOR);
|
862
862
|
|
863
|
-
BitpackingPrimitives::UnPackBlock<T>((
|
864
|
-
scan_state.current_width, skip_sign_extend);
|
863
|
+
BitpackingPrimitives::UnPackBlock<T>(data_ptr_cast(scan_state.decompression_buffer),
|
864
|
+
decompression_group_start_pointer, scan_state.current_width, skip_sign_extend);
|
865
865
|
|
866
866
|
*current_result_ptr = *(T *)(scan_state.decompression_buffer + offset_in_compression_group);
|
867
867
|
*current_result_ptr += scan_state.current_frame_of_reference;
|
@@ -18,7 +18,7 @@ public:
|
|
18
18
|
bool UpdateState(Vector &scan_vector, idx_t count) {
|
19
19
|
UnifiedVectorFormat vdata;
|
20
20
|
scan_vector.ToUnifiedFormat(count, vdata);
|
21
|
-
auto data = (
|
21
|
+
auto data = UnifiedVectorFormat::GetData<string_t>(vdata);
|
22
22
|
Verify();
|
23
23
|
|
24
24
|
for (idx_t i = 0; i < count; i++) {
|
@@ -274,7 +274,7 @@ public:
|
|
274
274
|
|
275
275
|
// calculate ptr and offsets
|
276
276
|
auto base_ptr = handle.Ptr();
|
277
|
-
auto header_ptr =
|
277
|
+
auto header_ptr = reinterpret_cast<dictionary_compression_header_t *>(base_ptr);
|
278
278
|
auto compressed_selection_buffer_offset = DictionaryCompressionStorage::DICTIONARY_HEADER_SIZE;
|
279
279
|
auto index_buffer_offset = compressed_selection_buffer_offset + compressed_selection_buffer_size;
|
280
280
|
|
@@ -287,9 +287,9 @@ public:
|
|
287
287
|
memcpy(base_ptr + index_buffer_offset, index_buffer.data(), index_buffer_size);
|
288
288
|
|
289
289
|
// Store sizes and offsets in segment header
|
290
|
-
Store<uint32_t>(index_buffer_offset, (
|
291
|
-
Store<uint32_t>(index_buffer.size(), (
|
292
|
-
Store<uint32_t>((uint32_t)current_width, (
|
290
|
+
Store<uint32_t>(index_buffer_offset, data_ptr_cast(&header_ptr->index_buffer_offset));
|
291
|
+
Store<uint32_t>(index_buffer.size(), data_ptr_cast(&header_ptr->index_buffer_count));
|
292
|
+
Store<uint32_t>((uint32_t)current_width, data_ptr_cast(&header_ptr->bitpacking_width));
|
293
293
|
|
294
294
|
D_ASSERT(current_width == BitpackingPrimitives::MinimumBitWidth(index_buffer.size() - 1));
|
295
295
|
D_ASSERT(DictionaryCompressionStorage::HasEnoughSpace(current_segment->count, index_buffer.size(),
|
@@ -391,12 +391,12 @@ unique_ptr<AnalyzeState> DictionaryCompressionStorage::StringInitAnalyze(ColumnD
|
|
391
391
|
}
|
392
392
|
|
393
393
|
bool DictionaryCompressionStorage::StringAnalyze(AnalyzeState &state_p, Vector &input, idx_t count) {
|
394
|
-
auto &state = (
|
394
|
+
auto &state = state_p.Cast<DictionaryCompressionAnalyzeState>();
|
395
395
|
return state.analyze_state->UpdateState(input, count);
|
396
396
|
}
|
397
397
|
|
398
398
|
idx_t DictionaryCompressionStorage::StringFinalAnalyze(AnalyzeState &state_p) {
|
399
|
-
auto &analyze_state = (
|
399
|
+
auto &analyze_state = state_p.Cast<DictionaryCompressionAnalyzeState>();
|
400
400
|
auto &state = *analyze_state.analyze_state;
|
401
401
|
|
402
402
|
auto width = BitpackingPrimitives::MinimumBitWidth(state.current_unique_count + 1);
|
@@ -415,12 +415,12 @@ unique_ptr<CompressionState> DictionaryCompressionStorage::InitCompression(Colum
|
|
415
415
|
}
|
416
416
|
|
417
417
|
void DictionaryCompressionStorage::Compress(CompressionState &state_p, Vector &scan_vector, idx_t count) {
|
418
|
-
auto &state = (
|
418
|
+
auto &state = state_p.Cast<DictionaryCompressionCompressState>();
|
419
419
|
state.UpdateState(scan_vector, count);
|
420
420
|
}
|
421
421
|
|
422
422
|
void DictionaryCompressionStorage::FinalizeCompress(CompressionState &state_p) {
|
423
|
-
auto &state = (
|
423
|
+
auto &state = state_p.Cast<DictionaryCompressionCompressState>();
|
424
424
|
state.Flush(true);
|
425
425
|
}
|
426
426
|
|
@@ -444,12 +444,12 @@ unique_ptr<SegmentScanState> DictionaryCompressionStorage::StringInitScan(Column
|
|
444
444
|
|
445
445
|
// Load header values
|
446
446
|
auto dict = DictionaryCompressionStorage::GetDictionary(segment, state->handle);
|
447
|
-
auto header_ptr =
|
448
|
-
auto index_buffer_offset = Load<uint32_t>((
|
449
|
-
auto index_buffer_count = Load<uint32_t>((
|
450
|
-
state->current_width = (bitpacking_width_t)(Load<uint32_t>((
|
447
|
+
auto header_ptr = reinterpret_cast<dictionary_compression_header_t *>(baseptr);
|
448
|
+
auto index_buffer_offset = Load<uint32_t>(data_ptr_cast(&header_ptr->index_buffer_offset));
|
449
|
+
auto index_buffer_count = Load<uint32_t>(data_ptr_cast(&header_ptr->index_buffer_count));
|
450
|
+
state->current_width = (bitpacking_width_t)(Load<uint32_t>(data_ptr_cast(&header_ptr->bitpacking_width)));
|
451
451
|
|
452
|
-
auto index_buffer_ptr =
|
452
|
+
auto index_buffer_ptr = reinterpret_cast<uint32_t *>(baseptr + index_buffer_offset);
|
453
453
|
|
454
454
|
state->dictionary = make_buffer<Vector>(segment.type, index_buffer_count);
|
455
455
|
auto dict_child_data = FlatVector::GetData<string_t>(*(state->dictionary));
|
@@ -470,17 +470,17 @@ template <bool ALLOW_DICT_VECTORS>
|
|
470
470
|
void DictionaryCompressionStorage::StringScanPartial(ColumnSegment &segment, ColumnScanState &state, idx_t scan_count,
|
471
471
|
Vector &result, idx_t result_offset) {
|
472
472
|
// clear any previously locked buffers and get the primary buffer handle
|
473
|
-
auto &scan_state =
|
473
|
+
auto &scan_state = state.scan_state->Cast<CompressedStringScanState>();
|
474
474
|
auto start = segment.GetRelativeIndex(state.row_index);
|
475
475
|
|
476
476
|
auto baseptr = scan_state.handle.Ptr() + segment.GetBlockOffset();
|
477
477
|
auto dict = DictionaryCompressionStorage::GetDictionary(segment, scan_state.handle);
|
478
478
|
|
479
|
-
auto header_ptr =
|
480
|
-
auto index_buffer_offset = Load<uint32_t>((
|
481
|
-
auto index_buffer_ptr =
|
479
|
+
auto header_ptr = reinterpret_cast<dictionary_compression_header_t *>(baseptr);
|
480
|
+
auto index_buffer_offset = Load<uint32_t>(data_ptr_cast(&header_ptr->index_buffer_offset));
|
481
|
+
auto index_buffer_ptr = reinterpret_cast<uint32_t *>(baseptr + index_buffer_offset);
|
482
482
|
|
483
|
-
auto base_data = (
|
483
|
+
auto base_data = data_ptr_cast(baseptr + DICTIONARY_HEADER_SIZE);
|
484
484
|
auto result_data = FlatVector::GetData<string_t>(result);
|
485
485
|
|
486
486
|
if (!ALLOW_DICT_VECTORS || scan_count != STANDARD_VECTOR_SIZE ||
|
@@ -502,7 +502,7 @@ void DictionaryCompressionStorage::StringScanPartial(ColumnSegment &segment, Col
|
|
502
502
|
data_ptr_t src = &base_data[((start - start_offset) * scan_state.current_width) / 8];
|
503
503
|
sel_t *sel_vec_ptr = scan_state.sel_vec->data();
|
504
504
|
|
505
|
-
BitpackingPrimitives::UnPackBuffer<sel_t>((
|
505
|
+
BitpackingPrimitives::UnPackBuffer<sel_t>(data_ptr_cast(sel_vec_ptr), src, decompress_count,
|
506
506
|
scan_state.current_width);
|
507
507
|
|
508
508
|
for (idx_t i = 0; i < scan_count; i++) {
|
@@ -527,8 +527,8 @@ void DictionaryCompressionStorage::StringScanPartial(ColumnSegment &segment, Col
|
|
527
527
|
}
|
528
528
|
|
529
529
|
// Scanning 1024 values, emitting a dict vector
|
530
|
-
data_ptr_t dst = (
|
531
|
-
data_ptr_t src = (
|
530
|
+
data_ptr_t dst = data_ptr_cast(scan_state.sel_vec->data());
|
531
|
+
data_ptr_t src = data_ptr_cast(&base_data[(start * scan_state.current_width) / 8]);
|
532
532
|
|
533
533
|
BitpackingPrimitives::UnPackBuffer<sel_t>(dst, src, scan_count, scan_state.current_width);
|
534
534
|
|
@@ -551,12 +551,12 @@ void DictionaryCompressionStorage::StringFetchRow(ColumnSegment &segment, Column
|
|
551
551
|
auto &handle = state.GetOrInsertHandle(segment);
|
552
552
|
|
553
553
|
auto baseptr = handle.Ptr() + segment.GetBlockOffset();
|
554
|
-
auto header_ptr =
|
554
|
+
auto header_ptr = reinterpret_cast<dictionary_compression_header_t *>(baseptr);
|
555
555
|
auto dict = DictionaryCompressionStorage::GetDictionary(segment, handle);
|
556
|
-
auto index_buffer_offset = Load<uint32_t>((
|
557
|
-
auto width = (bitpacking_width_t)
|
558
|
-
auto index_buffer_ptr =
|
559
|
-
auto base_data = (
|
556
|
+
auto index_buffer_offset = Load<uint32_t>(data_ptr_cast(&header_ptr->index_buffer_offset));
|
557
|
+
auto width = (bitpacking_width_t)Load<uint32_t>(data_ptr_cast(&header_ptr->bitpacking_width));
|
558
|
+
auto index_buffer_ptr = reinterpret_cast<uint32_t *>(baseptr + index_buffer_offset);
|
559
|
+
auto base_data = data_ptr_cast(baseptr + DICTIONARY_HEADER_SIZE);
|
560
560
|
auto result_data = FlatVector::GetData<string_t>(result);
|
561
561
|
|
562
562
|
// Handling non-bitpacking-group-aligned start values;
|
@@ -564,8 +564,8 @@ void DictionaryCompressionStorage::StringFetchRow(ColumnSegment &segment, Column
|
|
564
564
|
|
565
565
|
// Decompress part of selection buffer we need for this value.
|
566
566
|
sel_t decompression_buffer[BitpackingPrimitives::BITPACKING_ALGORITHM_GROUP_SIZE];
|
567
|
-
data_ptr_t src = (
|
568
|
-
BitpackingPrimitives::UnPackBuffer<sel_t>((
|
567
|
+
data_ptr_t src = data_ptr_cast(&base_data[((row_id - start_offset) * width) / 8]);
|
568
|
+
BitpackingPrimitives::UnPackBuffer<sel_t>(data_ptr_cast(decompression_buffer), src,
|
569
569
|
BitpackingPrimitives::BITPACKING_ALGORITHM_GROUP_SIZE, width);
|
570
570
|
|
571
571
|
auto selection_value = decompression_buffer[start_offset];
|
@@ -595,18 +595,18 @@ idx_t DictionaryCompressionStorage::RequiredSpace(idx_t current_count, idx_t ind
|
|
595
595
|
}
|
596
596
|
|
597
597
|
StringDictionaryContainer DictionaryCompressionStorage::GetDictionary(ColumnSegment &segment, BufferHandle &handle) {
|
598
|
-
auto header_ptr =
|
598
|
+
auto header_ptr = reinterpret_cast<dictionary_compression_header_t *>(handle.Ptr() + segment.GetBlockOffset());
|
599
599
|
StringDictionaryContainer container;
|
600
|
-
container.size = Load<uint32_t>((
|
601
|
-
container.end = Load<uint32_t>((
|
600
|
+
container.size = Load<uint32_t>(data_ptr_cast(&header_ptr->dict_size));
|
601
|
+
container.end = Load<uint32_t>(data_ptr_cast(&header_ptr->dict_end));
|
602
602
|
return container;
|
603
603
|
}
|
604
604
|
|
605
605
|
void DictionaryCompressionStorage::SetDictionary(ColumnSegment &segment, BufferHandle &handle,
|
606
606
|
StringDictionaryContainer container) {
|
607
|
-
auto header_ptr =
|
608
|
-
Store<uint32_t>(container.size, (
|
609
|
-
Store<uint32_t>(container.end, (
|
607
|
+
auto header_ptr = reinterpret_cast<dictionary_compression_header_t *>(handle.Ptr() + segment.GetBlockOffset());
|
608
|
+
Store<uint32_t>(container.size, data_ptr_cast(&header_ptr->dict_size));
|
609
|
+
Store<uint32_t>(container.end, data_ptr_cast(&header_ptr->dict_end));
|
610
610
|
}
|
611
611
|
|
612
612
|
string_t DictionaryCompressionStorage::FetchStringFromDict(ColumnSegment &segment, StringDictionaryContainer dict,
|
@@ -621,7 +621,7 @@ string_t DictionaryCompressionStorage::FetchStringFromDict(ColumnSegment &segmen
|
|
621
621
|
auto dict_end = baseptr + dict.end;
|
622
622
|
auto dict_pos = dict_end - dict_offset;
|
623
623
|
|
624
|
-
auto str_ptr = (
|
624
|
+
auto str_ptr = char_ptr_cast(dict_pos);
|
625
625
|
return string_t(str_ptr, string_len);
|
626
626
|
}
|
627
627
|
|
@@ -28,14 +28,14 @@ unique_ptr<AnalyzeState> FixedSizeInitAnalyze(ColumnData &col_data, PhysicalType
|
|
28
28
|
}
|
29
29
|
|
30
30
|
bool FixedSizeAnalyze(AnalyzeState &state_p, Vector &input, idx_t count) {
|
31
|
-
auto &state = (
|
31
|
+
auto &state = state_p.Cast<FixedSizeAnalyzeState>();
|
32
32
|
state.count += count;
|
33
33
|
return true;
|
34
34
|
}
|
35
35
|
|
36
36
|
template <class T>
|
37
37
|
idx_t FixedSizeFinalAnalyze(AnalyzeState &state_p) {
|
38
|
-
auto &state = (
|
38
|
+
auto &state = state_p.template Cast<FixedSizeAnalyzeState>();
|
39
39
|
return sizeof(T) * state.count;
|
40
40
|
}
|
41
41
|
|
@@ -64,7 +64,7 @@ void UncompressedCompressState::CreateEmptySegment(idx_t row_start) {
|
|
64
64
|
auto &type = checkpointer.GetType();
|
65
65
|
auto compressed_segment = ColumnSegment::CreateTransientSegment(db, type, row_start);
|
66
66
|
if (type.InternalType() == PhysicalType::VARCHAR) {
|
67
|
-
auto &state =
|
67
|
+
auto &state = compressed_segment->GetSegmentState()->Cast<UncompressedStringSegmentState>();
|
68
68
|
state.overflow_writer = make_uniq<WriteOverflowStringsToDisk>(checkpointer.GetColumnData().GetBlockManager());
|
69
69
|
}
|
70
70
|
current_segment = std::move(compressed_segment);
|
@@ -87,7 +87,7 @@ unique_ptr<CompressionState> UncompressedFunctions::InitCompression(ColumnDataCh
|
|
87
87
|
}
|
88
88
|
|
89
89
|
void UncompressedFunctions::Compress(CompressionState &state_p, Vector &data, idx_t count) {
|
90
|
-
auto &state = (
|
90
|
+
auto &state = state_p.Cast<UncompressedCompressState>();
|
91
91
|
UnifiedVectorFormat vdata;
|
92
92
|
data.ToUnifiedFormat(count, vdata);
|
93
93
|
|
@@ -110,7 +110,7 @@ void UncompressedFunctions::Compress(CompressionState &state_p, Vector &data, id
|
|
110
110
|
}
|
111
111
|
|
112
112
|
void UncompressedFunctions::FinalizeCompress(CompressionState &state_p) {
|
113
|
-
auto &state = (
|
113
|
+
auto &state = state_p.Cast<UncompressedCompressState>();
|
114
114
|
state.Finalize(state.current_segment->FinalizeAppend(state.append_state));
|
115
115
|
}
|
116
116
|
|
@@ -134,7 +134,7 @@ unique_ptr<SegmentScanState> FixedSizeInitScan(ColumnSegment &segment) {
|
|
134
134
|
template <class T>
|
135
135
|
void FixedSizeScanPartial(ColumnSegment &segment, ColumnScanState &state, idx_t scan_count, Vector &result,
|
136
136
|
idx_t result_offset) {
|
137
|
-
auto &scan_state =
|
137
|
+
auto &scan_state = state.scan_state->Cast<FixedSizeScanState>();
|
138
138
|
auto start = segment.GetRelativeIndex(state.row_index);
|
139
139
|
|
140
140
|
auto data = scan_state.handle.Ptr() + segment.GetBlockOffset();
|
@@ -147,7 +147,7 @@ void FixedSizeScanPartial(ColumnSegment &segment, ColumnScanState &state, idx_t
|
|
147
147
|
|
148
148
|
template <class T>
|
149
149
|
void FixedSizeScan(ColumnSegment &segment, ColumnScanState &state, idx_t scan_count, Vector &result) {
|
150
|
-
auto &scan_state =
|
150
|
+
auto &scan_state = state.scan_state->template Cast<FixedSizeScanState>();
|
151
151
|
auto start = segment.GetRelativeIndex(state.row_index);
|
152
152
|
|
153
153
|
auto data = scan_state.handle.Ptr() + segment.GetBlockOffset();
|
@@ -185,8 +185,8 @@ struct StandardFixedSizeAppend {
|
|
185
185
|
template <class T>
|
186
186
|
static void Append(SegmentStatistics &stats, data_ptr_t target, idx_t target_offset, UnifiedVectorFormat &adata,
|
187
187
|
idx_t offset, idx_t count) {
|
188
|
-
auto sdata = (
|
189
|
-
auto tdata =
|
188
|
+
auto sdata = UnifiedVectorFormat::GetData<T>(adata);
|
189
|
+
auto tdata = reinterpret_cast<T *>(target);
|
190
190
|
if (!adata.validity.AllValid()) {
|
191
191
|
for (idx_t i = 0; i < count; i++) {
|
192
192
|
auto source_idx = adata.sel->get_index(offset + i);
|
@@ -216,8 +216,8 @@ struct ListFixedSizeAppend {
|
|
216
216
|
template <class T>
|
217
217
|
static void Append(SegmentStatistics &stats, data_ptr_t target, idx_t target_offset, UnifiedVectorFormat &adata,
|
218
218
|
idx_t offset, idx_t count) {
|
219
|
-
auto sdata = (
|
220
|
-
auto tdata =
|
219
|
+
auto sdata = UnifiedVectorFormat::GetData<uint64_t>(adata);
|
220
|
+
auto tdata = reinterpret_cast<uint64_t *>(target);
|
221
221
|
for (idx_t i = 0; i < count; i++) {
|
222
222
|
auto source_idx = adata.sel->get_index(offset + i);
|
223
223
|
auto target_idx = target_offset + i;
|
@@ -94,12 +94,12 @@ unique_ptr<AnalyzeState> FSSTStorage::StringInitAnalyze(ColumnData &col_data, Ph
|
|
94
94
|
}
|
95
95
|
|
96
96
|
bool FSSTStorage::StringAnalyze(AnalyzeState &state_p, Vector &input, idx_t count) {
|
97
|
-
auto &state = (
|
97
|
+
auto &state = state_p.Cast<FSSTAnalyzeState>();
|
98
98
|
UnifiedVectorFormat vdata;
|
99
99
|
input.ToUnifiedFormat(count, vdata);
|
100
100
|
|
101
101
|
state.count += count;
|
102
|
-
auto data = (
|
102
|
+
auto data = UnifiedVectorFormat::GetData<string_t>(vdata);
|
103
103
|
|
104
104
|
// Note that we ignore the sampling in case we have not found any valid strings yet, this solves the issue of
|
105
105
|
// not having seen any valid strings here leading to an empty fsst symbol table.
|
@@ -138,7 +138,7 @@ bool FSSTStorage::StringAnalyze(AnalyzeState &state_p, Vector &input, idx_t coun
|
|
138
138
|
}
|
139
139
|
|
140
140
|
idx_t FSSTStorage::StringFinalAnalyze(AnalyzeState &state_p) {
|
141
|
-
auto &state = (
|
141
|
+
auto &state = state_p.Cast<FSSTAnalyzeState>();
|
142
142
|
|
143
143
|
size_t compressed_dict_size = 0;
|
144
144
|
size_t max_compressed_string_length = 0;
|
@@ -155,7 +155,7 @@ idx_t FSSTStorage::StringFinalAnalyze(AnalyzeState &state_p) {
|
|
155
155
|
vector<unsigned char *> fsst_string_ptrs;
|
156
156
|
for (auto &str : state.fsst_strings) {
|
157
157
|
fsst_string_sizes.push_back(str.GetSize());
|
158
|
-
fsst_string_ptrs.push_back((unsigned char *)str.GetData());
|
158
|
+
fsst_string_ptrs.push_back((unsigned char *)str.GetData()); // NOLINT
|
159
159
|
}
|
160
160
|
|
161
161
|
state.fsst_encoder = duckdb_fsst_create(string_count, &fsst_string_sizes[0], &fsst_string_ptrs[0], 0);
|
@@ -332,14 +332,14 @@ public:
|
|
332
332
|
|
333
333
|
// calculate ptr and offsets
|
334
334
|
auto base_ptr = handle.Ptr();
|
335
|
-
auto header_ptr =
|
335
|
+
auto header_ptr = reinterpret_cast<fsst_compression_header_t *>(base_ptr);
|
336
336
|
auto compressed_index_buffer_offset = sizeof(fsst_compression_header_t);
|
337
337
|
auto symbol_table_offset = compressed_index_buffer_offset + compressed_index_buffer_size;
|
338
338
|
|
339
339
|
D_ASSERT(current_segment->count == index_buffer.size());
|
340
340
|
BitpackingPrimitives::PackBuffer<sel_t, false>(base_ptr + compressed_index_buffer_offset,
|
341
|
-
|
342
|
-
current_width);
|
341
|
+
reinterpret_cast<uint32_t *>(index_buffer.data()),
|
342
|
+
current_segment->count, current_width);
|
343
343
|
|
344
344
|
// Write the fsst symbol table or nothing
|
345
345
|
if (fsst_encoder != nullptr) {
|
@@ -348,8 +348,8 @@ public:
|
|
348
348
|
memset(base_ptr + symbol_table_offset, 0, fsst_serialized_symbol_table_size);
|
349
349
|
}
|
350
350
|
|
351
|
-
Store<uint32_t>(symbol_table_offset, (
|
352
|
-
Store<uint32_t>((uint32_t)current_width, (
|
351
|
+
Store<uint32_t>(symbol_table_offset, data_ptr_cast(&header_ptr->fsst_symbol_table_offset));
|
352
|
+
Store<uint32_t>((uint32_t)current_width, data_ptr_cast(&header_ptr->bitpacking_width));
|
353
353
|
|
354
354
|
if (total_size >= FSSTStorage::COMPACTION_FLUSH_LIMIT) {
|
355
355
|
// the block is full enough, don't bother moving around the dictionary
|
@@ -408,12 +408,12 @@ unique_ptr<CompressionState> FSSTStorage::InitCompression(ColumnDataCheckpointer
|
|
408
408
|
}
|
409
409
|
|
410
410
|
void FSSTStorage::Compress(CompressionState &state_p, Vector &scan_vector, idx_t count) {
|
411
|
-
auto &state = (
|
411
|
+
auto &state = state_p.Cast<FSSTCompressionState>();
|
412
412
|
|
413
413
|
// Get vector data
|
414
414
|
UnifiedVectorFormat vdata;
|
415
415
|
scan_vector.ToUnifiedFormat(count, vdata);
|
416
|
-
auto data = (
|
416
|
+
auto data = UnifiedVectorFormat::GetData<string_t>(vdata);
|
417
417
|
|
418
418
|
// Collect pointers to strings to compress
|
419
419
|
vector<size_t> sizes_in;
|
@@ -431,7 +431,7 @@ void FSSTStorage::Compress(CompressionState &state_p, Vector &scan_vector, idx_t
|
|
431
431
|
total_count++;
|
432
432
|
total_size += data[idx].GetSize();
|
433
433
|
sizes_in.push_back(data[idx].GetSize());
|
434
|
-
strings_in.push_back((unsigned char *)data[idx].GetData());
|
434
|
+
strings_in.push_back((unsigned char *)data[idx].GetData()); // NOLINT
|
435
435
|
}
|
436
436
|
|
437
437
|
// Only Nulls or empty strings in this vector, nothing to compress
|
@@ -486,7 +486,7 @@ void FSSTStorage::Compress(CompressionState &state_p, Vector &scan_vector, idx_t
|
|
486
486
|
}
|
487
487
|
|
488
488
|
void FSSTStorage::FinalizeCompress(CompressionState &state_p) {
|
489
|
-
auto &state = (
|
489
|
+
auto &state = state_p.Cast<FSSTCompressionState>();
|
490
490
|
state.Flush(true);
|
491
491
|
}
|
492
492
|
|
@@ -522,8 +522,8 @@ unique_ptr<SegmentScanState> FSSTStorage::StringInitScan(ColumnSegment &segment)
|
|
522
522
|
auto base_ptr = state->handle.Ptr() + segment.GetBlockOffset();
|
523
523
|
|
524
524
|
state->duckdb_fsst_decoder = make_buffer<duckdb_fsst_decoder_t>();
|
525
|
-
auto retval = ParseFSSTSegmentHeader(
|
526
|
-
|
525
|
+
auto retval = ParseFSSTSegmentHeader(
|
526
|
+
base_ptr, reinterpret_cast<duckdb_fsst_decoder_t *>(state->duckdb_fsst_decoder.get()), &state->current_width);
|
527
527
|
if (!retval) {
|
528
528
|
state->duckdb_fsst_decoder = nullptr;
|
529
529
|
}
|
@@ -551,7 +551,7 @@ template <bool ALLOW_FSST_VECTORS>
|
|
551
551
|
void FSSTStorage::StringScanPartial(ColumnSegment &segment, ColumnScanState &state, idx_t scan_count, Vector &result,
|
552
552
|
idx_t result_offset) {
|
553
553
|
|
554
|
-
auto &scan_state =
|
554
|
+
auto &scan_state = state.scan_state->Cast<FSSTScanState>();
|
555
555
|
auto start = segment.GetRelativeIndex(state.row_index);
|
556
556
|
|
557
557
|
bool enable_fsst_vectors;
|
@@ -564,7 +564,7 @@ void FSSTStorage::StringScanPartial(ColumnSegment &segment, ColumnScanState &sta
|
|
564
564
|
|
565
565
|
auto baseptr = scan_state.handle.Ptr() + segment.GetBlockOffset();
|
566
566
|
auto dict = GetDictionary(segment, scan_state.handle);
|
567
|
-
auto base_data = (
|
567
|
+
auto base_data = data_ptr_cast(baseptr + sizeof(fsst_compression_header_t));
|
568
568
|
string_t *result_data;
|
569
569
|
|
570
570
|
if (scan_count == 0) {
|
@@ -594,7 +594,7 @@ void FSSTStorage::StringScanPartial(ColumnSegment &segment, ColumnScanState &sta
|
|
594
594
|
auto offsets = CalculateBpDeltaOffsets(scan_state.last_known_row, start, scan_count);
|
595
595
|
|
596
596
|
auto bitunpack_buffer = unique_ptr<uint32_t[]>(new uint32_t[offsets.total_bitunpack_count]);
|
597
|
-
BitUnpackRange(base_data, (
|
597
|
+
BitUnpackRange(base_data, data_ptr_cast(bitunpack_buffer.get()), offsets.total_bitunpack_count,
|
598
598
|
offsets.bitunpack_start_row, scan_state.current_width);
|
599
599
|
auto delta_decode_buffer = unique_ptr<uint32_t[]>(new uint32_t[offsets.total_delta_decode_count]);
|
600
600
|
DeltaDecodeIndices(bitunpack_buffer.get() + offsets.bitunpack_alignment_offset, delta_decode_buffer.get(),
|
@@ -617,8 +617,8 @@ void FSSTStorage::StringScanPartial(ColumnSegment &segment, ColumnScanState &sta
|
|
617
617
|
dict, baseptr, delta_decode_buffer[i + offsets.unused_delta_decoded_values]);
|
618
618
|
|
619
619
|
if (str_len > 0) {
|
620
|
-
result_data[i + result_offset] =
|
621
|
-
scan_state.duckdb_fsst_decoder.get(), result,
|
620
|
+
result_data[i + result_offset] =
|
621
|
+
FSSTPrimitives::DecompressValue(scan_state.duckdb_fsst_decoder.get(), result, str_ptr, str_len);
|
622
622
|
} else {
|
623
623
|
result_data[i + result_offset] = string_t(nullptr, 0);
|
624
624
|
}
|
@@ -642,7 +642,7 @@ void FSSTStorage::StringFetchRow(ColumnSegment &segment, ColumnFetchState &state
|
|
642
642
|
auto &buffer_manager = BufferManager::GetBufferManager(segment.db);
|
643
643
|
auto handle = buffer_manager.Pin(segment.block);
|
644
644
|
auto base_ptr = handle.Ptr() + segment.GetBlockOffset();
|
645
|
-
auto base_data = (
|
645
|
+
auto base_data = data_ptr_cast(base_ptr + sizeof(fsst_compression_header_t));
|
646
646
|
auto dict = GetDictionary(segment, handle);
|
647
647
|
|
648
648
|
duckdb_fsst_decoder_t decoder;
|
@@ -657,7 +657,7 @@ void FSSTStorage::StringFetchRow(ColumnSegment &segment, ColumnFetchState &state
|
|
657
657
|
auto offsets = CalculateBpDeltaOffsets(-1, row_id, 1);
|
658
658
|
|
659
659
|
auto bitunpack_buffer = unique_ptr<uint32_t[]>(new uint32_t[offsets.total_bitunpack_count]);
|
660
|
-
BitUnpackRange(base_data, (
|
660
|
+
BitUnpackRange(base_data, data_ptr_cast(bitunpack_buffer.get()), offsets.total_bitunpack_count,
|
661
661
|
offsets.bitunpack_start_row, width);
|
662
662
|
auto delta_decode_buffer = unique_ptr<uint32_t[]>(new uint32_t[offsets.total_delta_decode_count]);
|
663
663
|
DeltaDecodeIndices(bitunpack_buffer.get() + offsets.bitunpack_alignment_offset, delta_decode_buffer.get(),
|
@@ -668,8 +668,8 @@ void FSSTStorage::StringFetchRow(ColumnSegment &segment, ColumnFetchState &state
|
|
668
668
|
string_t compressed_string = UncompressedStringStorage::FetchStringFromDict(
|
669
669
|
segment, dict, result, base_ptr, delta_decode_buffer[offsets.unused_delta_decoded_values], string_length);
|
670
670
|
|
671
|
-
result_data[result_idx] = FSSTPrimitives::DecompressValue(
|
672
|
-
|
671
|
+
result_data[result_idx] = FSSTPrimitives::DecompressValue((void *)&decoder, result, compressed_string.GetData(),
|
672
|
+
compressed_string.GetSize());
|
673
673
|
} else {
|
674
674
|
// There's no fsst symtable, this only happens for empty strings or nulls, we can just emit an empty string
|
675
675
|
result_data[result_idx] = string_t(nullptr, 0);
|
@@ -696,16 +696,16 @@ bool FSSTFun::TypeIsSupported(PhysicalType type) {
|
|
696
696
|
// Helper Functions
|
697
697
|
//===--------------------------------------------------------------------===//
|
698
698
|
void FSSTStorage::SetDictionary(ColumnSegment &segment, BufferHandle &handle, StringDictionaryContainer container) {
|
699
|
-
auto header_ptr =
|
700
|
-
Store<uint32_t>(container.size, (
|
701
|
-
Store<uint32_t>(container.end, (
|
699
|
+
auto header_ptr = reinterpret_cast<fsst_compression_header_t *>(handle.Ptr() + segment.GetBlockOffset());
|
700
|
+
Store<uint32_t>(container.size, data_ptr_cast(&header_ptr->dict_size));
|
701
|
+
Store<uint32_t>(container.end, data_ptr_cast(&header_ptr->dict_end));
|
702
702
|
}
|
703
703
|
|
704
704
|
StringDictionaryContainer FSSTStorage::GetDictionary(ColumnSegment &segment, BufferHandle &handle) {
|
705
|
-
auto header_ptr =
|
705
|
+
auto header_ptr = reinterpret_cast<fsst_compression_header_t *>(handle.Ptr() + segment.GetBlockOffset());
|
706
706
|
StringDictionaryContainer container;
|
707
|
-
container.size = Load<uint32_t>((
|
708
|
-
container.end = Load<uint32_t>((
|
707
|
+
container.size = Load<uint32_t>(data_ptr_cast(&header_ptr->dict_size));
|
708
|
+
container.end = Load<uint32_t>(data_ptr_cast(&header_ptr->dict_end));
|
709
709
|
return container;
|
710
710
|
}
|
711
711
|
|
@@ -716,15 +716,15 @@ char *FSSTStorage::FetchStringPointer(StringDictionaryContainer dict, data_ptr_t
|
|
716
716
|
|
717
717
|
auto dict_end = baseptr + dict.end;
|
718
718
|
auto dict_pos = dict_end - dict_offset;
|
719
|
-
return (
|
719
|
+
return char_ptr_cast(dict_pos);
|
720
720
|
}
|
721
721
|
|
722
722
|
// Returns false if no symbol table was found. This means all strings are either empty or null
|
723
723
|
bool FSSTStorage::ParseFSSTSegmentHeader(data_ptr_t base_ptr, duckdb_fsst_decoder_t *decoder_out,
|
724
724
|
bitpacking_width_t *width_out) {
|
725
|
-
auto header_ptr =
|
726
|
-
auto fsst_symbol_table_offset = Load<uint32_t>((
|
727
|
-
*width_out = (bitpacking_width_t)(Load<uint32_t>((
|
725
|
+
auto header_ptr = reinterpret_cast<fsst_compression_header_t *>(base_ptr);
|
726
|
+
auto fsst_symbol_table_offset = Load<uint32_t>(data_ptr_cast(&header_ptr->fsst_symbol_table_offset));
|
727
|
+
*width_out = (bitpacking_width_t)(Load<uint32_t>(data_ptr_cast(&header_ptr->bitpacking_width)));
|
728
728
|
return duckdb_fsst_import(decoder_out, base_ptr + fsst_symbol_table_offset);
|
729
729
|
}
|
730
730
|
|
@@ -40,7 +40,7 @@ public:
|
|
40
40
|
}
|
41
41
|
|
42
42
|
template <class OP = EmptyRLEWriter>
|
43
|
-
void Update(T *data, ValidityMask &validity, idx_t idx) {
|
43
|
+
void Update(const T *data, ValidityMask &validity, idx_t idx) {
|
44
44
|
if (validity.RowIsValid(idx)) {
|
45
45
|
if (all_null) {
|
46
46
|
// no value seen yet
|
@@ -94,11 +94,11 @@ unique_ptr<AnalyzeState> RLEInitAnalyze(ColumnData &col_data, PhysicalType type)
|
|
94
94
|
|
95
95
|
template <class T>
|
96
96
|
bool RLEAnalyze(AnalyzeState &state, Vector &input, idx_t count) {
|
97
|
-
auto &rle_state =
|
97
|
+
auto &rle_state = state.template Cast<RLEAnalyzeState<T>>();
|
98
98
|
UnifiedVectorFormat vdata;
|
99
99
|
input.ToUnifiedFormat(count, vdata);
|
100
100
|
|
101
|
-
auto data = (
|
101
|
+
auto data = UnifiedVectorFormat::GetData<T>(vdata);
|
102
102
|
for (idx_t i = 0; i < count; i++) {
|
103
103
|
auto idx = vdata.sel->get_index(i);
|
104
104
|
rle_state.state.Update(data, vdata.validity, idx);
|
@@ -108,7 +108,7 @@ bool RLEAnalyze(AnalyzeState &state, Vector &input, idx_t count) {
|
|
108
108
|
|
109
109
|
template <class T>
|
110
110
|
idx_t RLEFinalAnalyze(AnalyzeState &state) {
|
111
|
-
auto &rle_state =
|
111
|
+
auto &rle_state = state.template Cast<RLEAnalyzeState<T>>();
|
112
112
|
return (sizeof(rle_count_t) + sizeof(T)) * rle_state.state.seen_count;
|
113
113
|
}
|
114
114
|
|
@@ -124,7 +124,7 @@ struct RLECompressState : public CompressionState {
|
|
124
124
|
struct RLEWriter {
|
125
125
|
template <class VALUE_TYPE>
|
126
126
|
static void Operation(VALUE_TYPE value, rle_count_t count, void *dataptr, bool is_null) {
|
127
|
-
auto state =
|
127
|
+
auto state = reinterpret_cast<RLECompressState<T, WRITE_STATISTICS> *>(dataptr);
|
128
128
|
state->WriteValue(value, count, is_null);
|
129
129
|
}
|
130
130
|
};
|
@@ -156,7 +156,7 @@ struct RLECompressState : public CompressionState {
|
|
156
156
|
}
|
157
157
|
|
158
158
|
void Append(UnifiedVectorFormat &vdata, idx_t count) {
|
159
|
-
auto data = (
|
159
|
+
auto data = UnifiedVectorFormat::GetData<T>(vdata);
|
160
160
|
for (idx_t i = 0; i < count; i++) {
|
161
161
|
auto idx = vdata.sel->get_index(i);
|
162
162
|
state.template Update<RLECompressState<T, WRITE_STATISTICS>::RLEWriter>(data, vdata.validity, idx);
|
@@ -289,14 +289,14 @@ unique_ptr<SegmentScanState> RLEInitScan(ColumnSegment &segment) {
|
|
289
289
|
//===--------------------------------------------------------------------===//
|
290
290
|
template <class T>
|
291
291
|
void RLESkip(ColumnSegment &segment, ColumnScanState &state, idx_t skip_count) {
|
292
|
-
auto &scan_state =
|
292
|
+
auto &scan_state = state.scan_state->Cast<RLEScanState<T>>();
|
293
293
|
scan_state.Skip(segment, skip_count);
|
294
294
|
}
|
295
295
|
|
296
296
|
template <class T>
|
297
297
|
void RLEScanPartial(ColumnSegment &segment, ColumnScanState &state, idx_t scan_count, Vector &result,
|
298
298
|
idx_t result_offset) {
|
299
|
-
auto &scan_state =
|
299
|
+
auto &scan_state = state.scan_state->Cast<RLEScanState<T>>();
|
300
300
|
|
301
301
|
auto data = scan_state.handle.Ptr() + segment.GetBlockOffset();
|
302
302
|
auto data_pointer = (T *)(data + RLEConstants::RLE_HEADER_SIZE);
|