duckdb 0.8.1-dev31.0 → 0.8.1-dev341.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/icu/icu-makedate.cpp +5 -4
- 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 +3 -1
- 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 +40 -25
- 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 +25 -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 -17
- 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/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/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/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 +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 +115 -133
- 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 +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 +10 -11
- package/src/duckdb/src/execution/index/art/leaf_segment.cpp +10 -0
- package/src/duckdb/src/execution/index/art/node.cpp +47 -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 +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/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_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_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_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 +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/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 +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/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 +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 +17 -20
- 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/test_vector_types.cpp +82 -26
- 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/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 +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 +8 -7
- 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/optimizer/unnest_rewriter.hpp +4 -0
- 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 +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 +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 +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/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/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 +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 +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/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 +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_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 +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/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 -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 +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 +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 +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 +4 -2
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +5 -2
- 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/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 +8 -7
- package/src/duckdb/src/storage/index.cpp +14 -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 +3 -3
- 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/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/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
@@ -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);
|
@@ -33,12 +33,12 @@ unique_ptr<AnalyzeState> UncompressedStringStorage::StringInitAnalyze(ColumnData
|
|
33
33
|
}
|
34
34
|
|
35
35
|
bool UncompressedStringStorage::StringAnalyze(AnalyzeState &state_p, Vector &input, idx_t count) {
|
36
|
-
auto &state = (
|
36
|
+
auto &state = state_p.Cast<StringAnalyzeState>();
|
37
37
|
UnifiedVectorFormat vdata;
|
38
38
|
input.ToUnifiedFormat(count, vdata);
|
39
39
|
|
40
40
|
state.count += count;
|
41
|
-
auto data = (
|
41
|
+
auto data = UnifiedVectorFormat::GetData<string_t>(vdata);
|
42
42
|
for (idx_t i = 0; i < count; i++) {
|
43
43
|
auto idx = vdata.sel->get_index(i);
|
44
44
|
if (vdata.validity.RowIsValid(idx)) {
|
@@ -53,7 +53,7 @@ bool UncompressedStringStorage::StringAnalyze(AnalyzeState &state_p, Vector &inp
|
|
53
53
|
}
|
54
54
|
|
55
55
|
idx_t UncompressedStringStorage::StringFinalAnalyze(AnalyzeState &state_p) {
|
56
|
-
auto &state = (
|
56
|
+
auto &state = state_p.Cast<StringAnalyzeState>();
|
57
57
|
return state.count * sizeof(int32_t) + state.total_string_size + state.overflow_strings * BIG_STRING_MARKER_SIZE;
|
58
58
|
}
|
59
59
|
|
@@ -73,12 +73,12 @@ unique_ptr<SegmentScanState> UncompressedStringStorage::StringInitScan(ColumnSeg
|
|
73
73
|
void UncompressedStringStorage::StringScanPartial(ColumnSegment &segment, ColumnScanState &state, idx_t scan_count,
|
74
74
|
Vector &result, idx_t result_offset) {
|
75
75
|
// clear any previously locked buffers and get the primary buffer handle
|
76
|
-
auto &scan_state =
|
76
|
+
auto &scan_state = state.scan_state->Cast<StringScanState>();
|
77
77
|
auto start = segment.GetRelativeIndex(state.row_index);
|
78
78
|
|
79
79
|
auto baseptr = scan_state.handle.Ptr() + segment.GetBlockOffset();
|
80
80
|
auto dict = GetDictionary(segment, scan_state.handle);
|
81
|
-
auto base_data =
|
81
|
+
auto base_data = reinterpret_cast<int32_t *>(baseptr + DICTIONARY_HEADER_SIZE);
|
82
82
|
auto result_data = FlatVector::GetData<string_t>(result);
|
83
83
|
|
84
84
|
int32_t previous_offset = start > 0 ? base_data[start - 1] : 0;
|
@@ -124,7 +124,7 @@ void UncompressedStringStorage::StringFetchRow(ColumnSegment &segment, ColumnFet
|
|
124
124
|
|
125
125
|
auto baseptr = handle.Ptr() + segment.GetBlockOffset();
|
126
126
|
auto dict = GetDictionary(segment, handle);
|
127
|
-
auto base_data =
|
127
|
+
auto base_data = reinterpret_cast<int32_t *>(baseptr + DICTIONARY_HEADER_SIZE);
|
128
128
|
auto result_data = FlatVector::GetData<string_t>(result);
|
129
129
|
|
130
130
|
auto dict_offset = base_data[row_id];
|
@@ -223,7 +223,7 @@ idx_t UncompressedStringStorage::RemainingSpace(ColumnSegment &segment, BufferHa
|
|
223
223
|
|
224
224
|
void UncompressedStringStorage::WriteString(ColumnSegment &segment, string_t string, block_id_t &result_block,
|
225
225
|
int32_t &result_offset) {
|
226
|
-
auto &state =
|
226
|
+
auto &state = segment.GetSegmentState()->Cast<UncompressedStringSegmentState>();
|
227
227
|
if (state.overflow_writer) {
|
228
228
|
// overflow writer is set: write string there
|
229
229
|
state.overflow_writer->WriteString(string, result_block, result_offset);
|
@@ -240,7 +240,7 @@ void UncompressedStringStorage::WriteStringMemory(ColumnSegment &segment, string
|
|
240
240
|
BufferHandle handle;
|
241
241
|
|
242
242
|
auto &buffer_manager = BufferManager::GetBufferManager(segment.db);
|
243
|
-
auto &state =
|
243
|
+
auto &state = segment.GetSegmentState()->Cast<UncompressedStringSegmentState>();
|
244
244
|
// check if the string fits in the current block
|
245
245
|
if (!state.head || state.head->offset + total_length >= state.head->size) {
|
246
246
|
// string does not fit, allocate space for it
|
@@ -278,7 +278,7 @@ string_t UncompressedStringStorage::ReadOverflowString(ColumnSegment &segment, V
|
|
278
278
|
|
279
279
|
auto &block_manager = segment.GetBlockManager();
|
280
280
|
auto &buffer_manager = block_manager.buffer_manager;
|
281
|
-
auto &state =
|
281
|
+
auto &state = segment.GetSegmentState()->Cast<UncompressedStringSegmentState>();
|
282
282
|
if (block < MAXIMUM_BLOCK) {
|
283
283
|
// read the overflow string from disk
|
284
284
|
// pin the initial handle and read the length
|
@@ -325,7 +325,7 @@ string_t UncompressedStringStorage::ReadOverflowString(ColumnSegment &segment, V
|
|
325
325
|
buffer_manager.Allocate(MaxValue<idx_t>(Storage::BLOCK_SIZE, uncompressed_size));
|
326
326
|
auto decompressed_target_ptr = decompressed_target_handle.Ptr();
|
327
327
|
MiniZStream s;
|
328
|
-
s.Decompress((
|
328
|
+
s.Decompress(const_char_ptr_cast(decompression_ptr), compressed_size, char_ptr_cast(decompressed_target_ptr),
|
329
329
|
uncompressed_size);
|
330
330
|
|
331
331
|
auto final_buffer = decompressed_target_handle.Ptr();
|
@@ -345,14 +345,14 @@ string_t UncompressedStringStorage::ReadOverflowString(ColumnSegment &segment, V
|
|
345
345
|
|
346
346
|
string_t UncompressedStringStorage::ReadString(data_ptr_t target, int32_t offset, uint32_t string_length) {
|
347
347
|
auto ptr = target + offset;
|
348
|
-
auto str_ptr = (
|
348
|
+
auto str_ptr = char_ptr_cast(ptr);
|
349
349
|
return string_t(str_ptr, string_length);
|
350
350
|
}
|
351
351
|
|
352
352
|
string_t UncompressedStringStorage::ReadStringWithLength(data_ptr_t target, int32_t offset) {
|
353
353
|
auto ptr = target + offset;
|
354
354
|
auto str_length = Load<uint32_t>(ptr);
|
355
|
-
auto str_ptr = (
|
355
|
+
auto str_ptr = char_ptr_cast(ptr + sizeof(uint32_t));
|
356
356
|
return string_t(str_ptr, str_length);
|
357
357
|
}
|
358
358
|
|
@@ -403,7 +403,7 @@ string_t UncompressedStringStorage::FetchString(ColumnSegment &segment, StringDi
|
|
403
403
|
auto dict_end = baseptr + dict.end;
|
404
404
|
auto dict_pos = dict_end - location.offset;
|
405
405
|
|
406
|
-
auto str_ptr = (
|
406
|
+
auto str_ptr = char_ptr_cast(dict_pos);
|
407
407
|
return string_t(str_ptr, string_length);
|
408
408
|
}
|
409
409
|
}
|
@@ -188,13 +188,13 @@ unique_ptr<AnalyzeState> ValidityInitAnalyze(ColumnData &col_data, PhysicalType
|
|
188
188
|
}
|
189
189
|
|
190
190
|
bool ValidityAnalyze(AnalyzeState &state_p, Vector &input, idx_t count) {
|
191
|
-
auto &state = (
|
191
|
+
auto &state = state_p.Cast<ValidityAnalyzeState>();
|
192
192
|
state.count += count;
|
193
193
|
return true;
|
194
194
|
}
|
195
195
|
|
196
196
|
idx_t ValidityFinalAnalyze(AnalyzeState &state_p) {
|
197
|
-
auto &state = (
|
197
|
+
auto &state = state_p.Cast<ValidityAnalyzeState>();
|
198
198
|
return (state.count + 7) / 8;
|
199
199
|
}
|
200
200
|
|
@@ -222,12 +222,12 @@ void ValidityScanPartial(ColumnSegment &segment, ColumnScanState &state, idx_t s
|
|
222
222
|
auto start = segment.GetRelativeIndex(state.row_index);
|
223
223
|
|
224
224
|
static_assert(sizeof(validity_t) == sizeof(uint64_t), "validity_t should be 64-bit");
|
225
|
-
auto &scan_state =
|
225
|
+
auto &scan_state = state.scan_state->Cast<ValidityScanState>();
|
226
226
|
|
227
227
|
auto &result_mask = FlatVector::Validity(result);
|
228
228
|
auto buffer_ptr = scan_state.handle.Ptr() + segment.GetBlockOffset();
|
229
229
|
D_ASSERT(scan_state.block_id == segment.block->BlockId());
|
230
|
-
auto input_data =
|
230
|
+
auto input_data = reinterpret_cast<validity_t *>(buffer_ptr);
|
231
231
|
|
232
232
|
#ifdef DEBUG
|
233
233
|
// this method relies on all the bits we are going to write to being set to valid
|
@@ -345,7 +345,7 @@ void ValidityScan(ColumnSegment &segment, ColumnScanState &state, idx_t scan_cou
|
|
345
345
|
|
346
346
|
auto start = segment.GetRelativeIndex(state.row_index);
|
347
347
|
if (start % ValidityMask::BITS_PER_VALUE == 0) {
|
348
|
-
auto &scan_state =
|
348
|
+
auto &scan_state = state.scan_state->Cast<ValidityScanState>();
|
349
349
|
|
350
350
|
// aligned scan: no need to do anything fancy
|
351
351
|
// note: this is only an optimization which avoids having to do messy bitshifting in the common case
|
@@ -353,8 +353,8 @@ void ValidityScan(ColumnSegment &segment, ColumnScanState &state, idx_t scan_cou
|
|
353
353
|
auto &result_mask = FlatVector::Validity(result);
|
354
354
|
auto buffer_ptr = scan_state.handle.Ptr() + segment.GetBlockOffset();
|
355
355
|
D_ASSERT(scan_state.block_id == segment.block->BlockId());
|
356
|
-
auto input_data =
|
357
|
-
auto result_data =
|
356
|
+
auto input_data = reinterpret_cast<validity_t *>(buffer_ptr);
|
357
|
+
auto result_data = result_mask.GetData();
|
358
358
|
idx_t start_offset = start / ValidityMask::BITS_PER_VALUE;
|
359
359
|
idx_t entry_scan_count = (scan_count + ValidityMask::BITS_PER_VALUE - 1) / ValidityMask::BITS_PER_VALUE;
|
360
360
|
for (idx_t i = 0; i < entry_scan_count; i++) {
|
@@ -364,7 +364,7 @@ void ValidityScan(ColumnSegment &segment, ColumnScanState &state, idx_t scan_cou
|
|
364
364
|
}
|
365
365
|
if (!result_data) {
|
366
366
|
result_mask.Initialize(MaxValue<idx_t>(STANDARD_VECTOR_SIZE, scan_count));
|
367
|
-
result_data =
|
367
|
+
result_data = result_mask.GetData();
|
368
368
|
}
|
369
369
|
result_data[i] = input_entry;
|
370
370
|
}
|
@@ -382,7 +382,7 @@ void ValidityFetchRow(ColumnSegment &segment, ColumnFetchState &state, row_t row
|
|
382
382
|
auto &buffer_manager = BufferManager::GetBufferManager(segment.db);
|
383
383
|
auto handle = buffer_manager.Pin(segment.block);
|
384
384
|
auto dataptr = handle.Ptr() + segment.GetBlockOffset();
|
385
|
-
ValidityMask mask(
|
385
|
+
ValidityMask mask(reinterpret_cast<validity_t *>(dataptr));
|
386
386
|
auto &result_mask = FlatVector::Validity(result);
|
387
387
|
if (!mask.RowIsValidUnsafe(row_id)) {
|
388
388
|
result_mask.SetInvalid(result_idx);
|
@@ -421,7 +421,7 @@ idx_t ValidityAppend(CompressionAppendState &append_state, ColumnSegment &segmen
|
|
421
421
|
return append_count;
|
422
422
|
}
|
423
423
|
|
424
|
-
ValidityMask mask(
|
424
|
+
ValidityMask mask(reinterpret_cast<validity_t *>(append_state.handle.Ptr()));
|
425
425
|
for (idx_t i = 0; i < append_count; i++) {
|
426
426
|
auto idx = data.sel->get_index(offset + i);
|
427
427
|
if (!data.validity.RowIsValidUnsafe(idx)) {
|
@@ -450,7 +450,7 @@ void ValidityRevertAppend(ColumnSegment &segment, idx_t start_row) {
|
|
450
450
|
idx_t byte_pos = start_bit / 8;
|
451
451
|
idx_t bit_start = byte_pos * 8;
|
452
452
|
idx_t bit_end = (byte_pos + 1) * 8;
|
453
|
-
ValidityMask mask(
|
453
|
+
ValidityMask mask(reinterpret_cast<validity_t *>(handle.Ptr() + byte_pos));
|
454
454
|
for (idx_t i = start_bit; i < bit_end; i++) {
|
455
455
|
mask.SetValid(i - bit_start);
|
456
456
|
}
|
@@ -302,7 +302,7 @@ static void VerifyCheckConstraint(ClientContext &context, TableCatalogEntry &tab
|
|
302
302
|
UnifiedVectorFormat vdata;
|
303
303
|
result.ToUnifiedFormat(chunk.size(), vdata);
|
304
304
|
|
305
|
-
auto dataptr = (
|
305
|
+
auto dataptr = UnifiedVectorFormat::GetData<int32_t>(vdata);
|
306
306
|
for (idx_t i = 0; i < chunk.size(); i++) {
|
307
307
|
auto idx = vdata.sel->get_index(i);
|
308
308
|
if (vdata.validity.RowIsValid(idx) && dataptr[idx] == 0) {
|
@@ -834,7 +834,7 @@ void DataTable::RevertAppend(idx_t start_row, idx_t count) {
|
|
834
834
|
if (!info->indexes.Empty()) {
|
835
835
|
idx_t current_row_base = start_row;
|
836
836
|
row_t row_data[STANDARD_VECTOR_SIZE];
|
837
|
-
Vector row_identifiers(LogicalType::ROW_TYPE, (
|
837
|
+
Vector row_identifiers(LogicalType::ROW_TYPE, data_ptr_cast(row_data));
|
838
838
|
ScanTableSegment(start_row, count, [&](DataChunk &chunk) {
|
839
839
|
for (idx_t i = 0; i < chunk.size(); i++) {
|
840
840
|
row_data[i] = current_row_base + i;
|
@@ -1201,13 +1201,14 @@ void DataTable::WALAddIndex(ClientContext &context, unique_ptr<Index> index,
|
|
1201
1201
|
// intermediate holds scanned chunks of the underlying data to create the index
|
1202
1202
|
DataChunk intermediate;
|
1203
1203
|
vector<LogicalType> intermediate_types;
|
1204
|
-
|
1205
|
-
|
1206
|
-
|
1207
|
-
|
1208
|
-
intermediate_types.push_back(col.Type());
|
1204
|
+
vector<column_t> column_ids;
|
1205
|
+
for (auto &it : column_definitions) {
|
1206
|
+
intermediate_types.push_back(it.Type());
|
1207
|
+
column_ids.push_back(it.Oid());
|
1209
1208
|
}
|
1209
|
+
column_ids.push_back(COLUMN_IDENTIFIER_ROW_ID);
|
1210
1210
|
intermediate_types.emplace_back(LogicalType::ROW_TYPE);
|
1211
|
+
|
1211
1212
|
intermediate.Initialize(allocator, intermediate_types);
|
1212
1213
|
|
1213
1214
|
// holds the result of executing the index expression on the intermediate chunks
|
@@ -27,9 +27,7 @@ Index::Index(AttachedDatabase &db, IndexType type, TableIOManager &table_io_mana
|
|
27
27
|
}
|
28
28
|
|
29
29
|
// create the column id set
|
30
|
-
|
31
|
-
column_id_set.insert(column_id);
|
32
|
-
}
|
30
|
+
column_id_set.insert(column_ids.begin(), column_ids.end());
|
33
31
|
}
|
34
32
|
|
35
33
|
void Index::InitializeLock(IndexLock &state) {
|
@@ -61,6 +59,19 @@ bool Index::MergeIndexes(Index &other_index) {
|
|
61
59
|
}
|
62
60
|
}
|
63
61
|
|
62
|
+
string Index::VerifyAndToString(const bool only_verify) {
|
63
|
+
|
64
|
+
IndexLock state;
|
65
|
+
InitializeLock(state);
|
66
|
+
|
67
|
+
switch (this->type) {
|
68
|
+
case IndexType::ART:
|
69
|
+
return Cast<ART>().VerifyAndToString(state, only_verify);
|
70
|
+
default:
|
71
|
+
throw InternalException("Unimplemented index type for VerifyAndToString");
|
72
|
+
}
|
73
|
+
}
|
74
|
+
|
64
75
|
void Index::Vacuum() {
|
65
76
|
|
66
77
|
IndexLock state;
|
@@ -29,6 +29,7 @@ LocalTableStorage::LocalTableStorage(DataTable &table)
|
|
29
29
|
if (art.constraint_type != IndexConstraintType::NONE) {
|
30
30
|
// unique index: create a local ART index that maintains the same unique constraint
|
31
31
|
vector<unique_ptr<Expression>> unbound_expressions;
|
32
|
+
unbound_expressions.reserve(art.unbound_expressions.size());
|
32
33
|
for (auto &expr : art.unbound_expressions) {
|
33
34
|
unbound_expressions.push_back(expr->Copy());
|
34
35
|
}
|
@@ -252,7 +253,7 @@ shared_ptr<LocalTableStorage> LocalTableManager::MoveEntry(DataTable &table) {
|
|
252
253
|
return nullptr;
|
253
254
|
}
|
254
255
|
auto storage_entry = std::move(entry->second);
|
255
|
-
table_storage.erase(
|
256
|
+
table_storage.erase(entry);
|
256
257
|
return storage_entry;
|
257
258
|
}
|
258
259
|
|
@@ -16,7 +16,7 @@ DataFileType MagicBytes::CheckMagicBytes(FileSystem *fs_p, const string &path) {
|
|
16
16
|
char buffer[MAGIC_BYTES_READ_SIZE];
|
17
17
|
|
18
18
|
handle->Read(buffer, MAGIC_BYTES_READ_SIZE);
|
19
|
-
if (memcmp(buffer, "SQLite format 3\0
|
19
|
+
if (memcmp(buffer, "SQLite format 3\0", 16) == 0) {
|
20
20
|
return DataFileType::SQLITE_FILE;
|
21
21
|
}
|
22
22
|
if (memcmp(buffer, "PAR1", 4) == 0) {
|