duckdb 0.8.1-dev51.0 → 0.8.1-dev96.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/package.json +1 -1
- package/src/duckdb/extension/icu/icu-datepart.cpp +1 -1
- package/src/duckdb/extension/json/include/json_common.hpp +1 -1
- package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_create.cpp +6 -6
- package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +1 -1
- package/src/duckdb/extension/parquet/column_reader.cpp +52 -51
- 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/list_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
- package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
- package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
- package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/parquet-extension.cpp +1 -1
- package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
- package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
- package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
- package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
- package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
- package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
- package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
- package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
- 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/field_writer.cpp +1 -1
- package/src/duckdb/src/common/file_system.cpp +15 -2
- package/src/duckdb/src/common/fsst.cpp +11 -6
- package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
- package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
- package/src/duckdb/src/common/local_file_system.cpp +11 -11
- package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
- package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
- package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
- package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
- package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
- package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
- package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
- package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
- package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
- package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
- package/src/duckdb/src/common/serializer.cpp +1 -1
- package/src/duckdb/src/common/sort/comparators.cpp +1 -1
- package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
- package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
- package/src/duckdb/src/common/types/bit.cpp +5 -5
- package/src/duckdb/src/common/types/blob.cpp +8 -8
- package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
- package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
- package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
- package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
- package/src/duckdb/src/common/types/hash.cpp +2 -2
- package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
- package/src/duckdb/src/common/types/list_segment.cpp +77 -49
- package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
- package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
- package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +17 -17
- package/src/duckdb/src/common/types/string_heap.cpp +1 -1
- package/src/duckdb/src/common/types/value.cpp +2 -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/distributive/approx_count.cpp +3 -3
- package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +3 -3
- package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +4 -4
- package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +12 -11
- package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +3 -3
- package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +3 -3
- package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +7 -7
- package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +14 -14
- package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +21 -21
- package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +18 -19
- package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +3 -4
- package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +4 -4
- package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +4 -4
- package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +1 -1
- package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +1 -1
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +1 -1
- 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/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 +1 -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 +30 -32
- package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +3 -4
- package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
- package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
- package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
- package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
- package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
- package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
- package/src/duckdb/src/execution/operator/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_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 +2 -2
- package/src/duckdb/src/function/aggregate/distributive/first.cpp +5 -5
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +8 -8
- package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
- package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
- package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
- package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
- package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
- package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
- package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
- package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
- package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -3
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -3
- package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
- package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
- package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
- package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
- package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
- package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
- package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
- package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +25 -23
- package/src/duckdb/src/function/scalar_function.cpp +3 -3
- package/src/duckdb/src/function/table/arrow.cpp +4 -4
- 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 +4 -4
- package/src/duckdb/src/function/table/repeat.cpp +2 -2
- package/src/duckdb/src/function/table/repeat_row.cpp +2 -2
- package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
- package/src/duckdb/src/function/table/system/test_vector_types.cpp +1 -1
- package/src/duckdb/src/function/table/table_scan.cpp +2 -2
- package/src/duckdb/src/function/table/unnest.cpp +1 -1
- package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
- 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 +2 -2
- package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
- package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
- package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
- package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
- package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
- package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
- package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
- package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
- package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
- package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
- package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +20 -19
- 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 +1 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +1 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +1 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +1 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +1 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
- package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +3 -3
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
- package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
- package/src/duckdb/src/include/duckdb/function/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/macro_function.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +6 -6
- package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/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/stream_query_result.hpp +3 -0
- package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
- package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
- package/src/duckdb/src/include/duckdb/parser/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 +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +107 -91
- package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +1 -1
- 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/filter/conjunction_filter.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
- package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
- package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/index.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
- package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
- package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
- package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
- package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
- package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
- package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
- package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
- package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
- package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
- package/src/duckdb/src/main/capi/config-c.cpp +1 -1
- package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
- package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
- package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
- package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
- package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
- package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
- package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
- package/src/duckdb/src/main/capi/result-c.cpp +23 -23
- package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
- package/src/duckdb/src/main/client_context.cpp +3 -3
- package/src/duckdb/src/main/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/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/parallel/executor.cpp +1 -1
- package/src/duckdb/src/parser/base_expression.cpp +2 -5
- package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
- package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
- package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
- package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
- package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
- package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
- package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
- package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
- package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
- package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
- package/src/duckdb/src/parser/parser.cpp +3 -3
- 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 +69 -75
- package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
- package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
- package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
- package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +28 -29
- package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
- package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
- package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
- package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
- package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
- package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
- package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
- package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
- package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
- package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
- package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
- package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
- package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +3 -4
- package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
- package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
- package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
- package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
- package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
- package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
- package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
- package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
- package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
- package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
- package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -22
- package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
- package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
- package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
- package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
- package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
- package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
- package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
- package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
- package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
- package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
- package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
- package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
- package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
- package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
- package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
- package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
- package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
- package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
- package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
- package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
- package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
- package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
- package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +27 -27
- package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
- package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
- package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
- package/src/duckdb/src/parser/transformer.cpp +46 -46
- package/src/duckdb/src/planner/bind_context.cpp +6 -6
- 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_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 -1
- package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
- package/src/duckdb/src/planner/binder/statement/bind_update.cpp +1 -1
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +1 -1
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +2 -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_iterator.cpp +2 -2
- package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
- package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
- package/src/duckdb/src/planner/logical_operator.cpp +3 -4
- package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
- package/src/duckdb/src/planner/table_filter.cpp +1 -1
- package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
- package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
- package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
- package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
- package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
- package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
- package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
- package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
- package/src/duckdb/src/storage/compression/rle.cpp +8 -8
- package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
- package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
- package/src/duckdb/src/storage/data_table.cpp +2 -2
- 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 +1 -1
- 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/pcg/pcg_extras.hpp +1 -1
@@ -116,7 +116,7 @@ static void ConstructValue(const_data_ptr_t data, idx_t size, data_t target[]) {
|
|
116
116
|
}
|
117
117
|
|
118
118
|
void StringStats::Update(BaseStatistics &stats, const string_t &value) {
|
119
|
-
auto data = (
|
119
|
+
auto data = const_data_ptr_cast(value.GetData());
|
120
120
|
auto size = value.GetSize();
|
121
121
|
|
122
122
|
//! we can only fit 8 bytes, so we might need to trim our string
|
@@ -136,12 +136,12 @@ void StringStats::Update(BaseStatistics &stats, const string_t &value) {
|
|
136
136
|
string_data.max_string_length = size;
|
137
137
|
}
|
138
138
|
if (stats.GetType().id() == LogicalTypeId::VARCHAR && !string_data.has_unicode) {
|
139
|
-
auto unicode = Utf8Proc::Analyze((
|
139
|
+
auto unicode = Utf8Proc::Analyze(const_char_ptr_cast(data), size);
|
140
140
|
if (unicode == UnicodeType::UNICODE) {
|
141
141
|
string_data.has_unicode = true;
|
142
142
|
} else if (unicode == UnicodeType::INVALID) {
|
143
|
-
throw InvalidInputException(
|
144
|
-
|
143
|
+
throw InvalidInputException(ErrorManager::InvalidUnicodeError(string(const_char_ptr_cast(data), size),
|
144
|
+
"segment statistics update"));
|
145
145
|
}
|
146
146
|
}
|
147
147
|
}
|
@@ -166,7 +166,7 @@ void StringStats::Merge(BaseStatistics &stats, const BaseStatistics &other) {
|
|
166
166
|
FilterPropagateResult StringStats::CheckZonemap(const BaseStatistics &stats, ExpressionType comparison_type,
|
167
167
|
const string &constant) {
|
168
168
|
auto &string_data = StringStats::GetDataUnsafe(stats);
|
169
|
-
auto data = (
|
169
|
+
auto data = const_data_ptr_cast(constant.c_str());
|
170
170
|
auto size = constant.size();
|
171
171
|
|
172
172
|
idx_t value_size = size > StringStatsData::MAX_STRING_MINMAX_SIZE ? StringStatsData::MAX_STRING_MINMAX_SIZE : size;
|
@@ -219,10 +219,11 @@ string StringStats::ToString(const BaseStatistics &stats) {
|
|
219
219
|
auto &string_data = StringStats::GetDataUnsafe(stats);
|
220
220
|
idx_t min_len = GetValidMinMaxSubstring(string_data.min);
|
221
221
|
idx_t max_len = GetValidMinMaxSubstring(string_data.max);
|
222
|
-
return StringUtil::Format(
|
223
|
-
|
224
|
-
|
225
|
-
|
222
|
+
return StringUtil::Format("[Min: %s, Max: %s, Has Unicode: %s, Max String Length: %s]",
|
223
|
+
string(const_char_ptr_cast(string_data.min), min_len),
|
224
|
+
string(const_char_ptr_cast(string_data.max), max_len),
|
225
|
+
string_data.has_unicode ? "true" : "false",
|
226
|
+
string_data.has_max_string_length ? to_string(string_data.max_string_length) : "?");
|
226
227
|
}
|
227
228
|
|
228
229
|
void StringStats::Verify(const BaseStatistics &stats, Vector &vector, const SelectionVector &sel, idx_t count) {
|
@@ -230,7 +231,7 @@ void StringStats::Verify(const BaseStatistics &stats, Vector &vector, const Sele
|
|
230
231
|
|
231
232
|
UnifiedVectorFormat vdata;
|
232
233
|
vector.ToUnifiedFormat(count, vdata);
|
233
|
-
auto data = (
|
234
|
+
auto data = UnifiedVectorFormat::GetData<string_t>(vdata);
|
234
235
|
for (idx_t i = 0; i < count; i++) {
|
235
236
|
auto idx = sel.get_index(i);
|
236
237
|
auto index = vdata.sel->get_index(idx);
|
@@ -256,13 +257,13 @@ void StringStats::Verify(const BaseStatistics &stats, Vector &vector, const Sele
|
|
256
257
|
throw InternalException("Invalid unicode detected in vector: %s", vector.ToString(count));
|
257
258
|
}
|
258
259
|
}
|
259
|
-
if (StringValueComparison((
|
260
|
-
string_data.min) < 0) {
|
260
|
+
if (StringValueComparison(const_data_ptr_cast(data),
|
261
|
+
MinValue<idx_t>(len, StringStatsData::MAX_STRING_MINMAX_SIZE), string_data.min) < 0) {
|
261
262
|
throw InternalException("Statistics mismatch: value is smaller than min.\nStatistics: %s\nVector: %s",
|
262
263
|
stats.ToString(), vector.ToString(count));
|
263
264
|
}
|
264
|
-
if (StringValueComparison((
|
265
|
-
string_data.max) > 0) {
|
265
|
+
if (StringValueComparison(const_data_ptr_cast(data),
|
266
|
+
MinValue<idx_t>(len, StringStatsData::MAX_STRING_MINMAX_SIZE), string_data.max) > 0) {
|
266
267
|
throw InternalException("Statistics mismatch: value is bigger than max.\nStatistics: %s\nVector: %s",
|
267
268
|
stats.ToString(), vector.ToString(count));
|
268
269
|
}
|
@@ -241,7 +241,7 @@ void ChunkVectorInfo::Serialize(Serializer &serializer) {
|
|
241
241
|
for (idx_t i = 0; i < count; i++) {
|
242
242
|
deleted_tuples[sel.get_index(i)] = false;
|
243
243
|
}
|
244
|
-
serializer.WriteData((
|
244
|
+
serializer.WriteData(data_ptr_cast(deleted_tuples), sizeof(bool) * STANDARD_VECTOR_SIZE);
|
245
245
|
}
|
246
246
|
|
247
247
|
unique_ptr<ChunkInfo> ChunkVectorInfo::Deserialize(Deserializer &source) {
|
@@ -250,7 +250,7 @@ unique_ptr<ChunkInfo> ChunkVectorInfo::Deserialize(Deserializer &source) {
|
|
250
250
|
auto result = make_uniq<ChunkVectorInfo>(start);
|
251
251
|
result->any_deleted = true;
|
252
252
|
bool deleted_tuples[STANDARD_VECTOR_SIZE];
|
253
|
-
source.ReadData((
|
253
|
+
source.ReadData(data_ptr_cast(deleted_tuples), sizeof(bool) * STANDARD_VECTOR_SIZE);
|
254
254
|
for (idx_t i = 0; i < STANDARD_VECTOR_SIZE; i++) {
|
255
255
|
if (deleted_tuples[i]) {
|
256
256
|
result->deleted[i] = 0;
|
@@ -331,7 +331,7 @@ idx_t ColumnSegment::FilterSelection(SelectionVector &sel, Vector &result, const
|
|
331
331
|
// similar to the CONJUNCTION_AND, but we need to take care of the SelectionVectors (OR all of them)
|
332
332
|
idx_t count_total = 0;
|
333
333
|
SelectionVector result_sel(approved_tuple_count);
|
334
|
-
auto &conjunction_or = (
|
334
|
+
auto &conjunction_or = filter.Cast<ConjunctionOrFilter>();
|
335
335
|
for (auto &child_filter : conjunction_or.child_filters) {
|
336
336
|
SelectionVector temp_sel;
|
337
337
|
temp_sel.Initialize(sel);
|
@@ -357,14 +357,14 @@ idx_t ColumnSegment::FilterSelection(SelectionVector &sel, Vector &result, const
|
|
357
357
|
return approved_tuple_count;
|
358
358
|
}
|
359
359
|
case TableFilterType::CONJUNCTION_AND: {
|
360
|
-
auto &conjunction_and = (
|
360
|
+
auto &conjunction_and = filter.Cast<ConjunctionAndFilter>();
|
361
361
|
for (auto &child_filter : conjunction_and.child_filters) {
|
362
362
|
FilterSelection(sel, result, *child_filter, approved_tuple_count, mask);
|
363
363
|
}
|
364
364
|
return approved_tuple_count;
|
365
365
|
}
|
366
366
|
case TableFilterType::CONSTANT_COMPARISON: {
|
367
|
-
auto &constant_filter = (
|
367
|
+
auto &constant_filter = filter.Cast<ConstantFilter>();
|
368
368
|
// the inplace loops take the result as the last parameter
|
369
369
|
switch (result.GetType().InternalType()) {
|
370
370
|
case PhysicalType::UINT8: {
|
@@ -167,7 +167,7 @@ void ListColumnData::Append(BaseStatistics &stats, ColumnAppendState &state, Vec
|
|
167
167
|
auto &list_validity = list_data.validity;
|
168
168
|
|
169
169
|
// construct the list_entry_t entries to append to the column data
|
170
|
-
auto input_offsets = (
|
170
|
+
auto input_offsets = UnifiedVectorFormat::GetData<list_entry_t>(list_data);
|
171
171
|
auto start_offset = child_column->GetMaxEntry();
|
172
172
|
idx_t child_count = 0;
|
173
173
|
|
@@ -210,7 +210,7 @@ void ListColumnData::Append(BaseStatistics &stats, ColumnAppendState &state, Vec
|
|
210
210
|
|
211
211
|
UnifiedVectorFormat vdata;
|
212
212
|
vdata.sel = FlatVector::IncrementalSelectionVector();
|
213
|
-
vdata.data = (
|
213
|
+
vdata.data = data_ptr_cast(append_offsets.get());
|
214
214
|
|
215
215
|
// append the list offsets
|
216
216
|
ColumnData::AppendData(stats, state, vdata, count);
|
@@ -337,7 +337,7 @@ unique_ptr<ColumnCheckpointState> ListColumnData::Checkpoint(RowGroup &row_group
|
|
337
337
|
auto base_state = ColumnData::Checkpoint(row_group, partial_block_manager, checkpoint_info);
|
338
338
|
auto child_state = child_column->Checkpoint(row_group, partial_block_manager, checkpoint_info);
|
339
339
|
|
340
|
-
auto &checkpoint_state = (
|
340
|
+
auto &checkpoint_state = base_state->Cast<ListColumnCheckpointState>();
|
341
341
|
checkpoint_state.validity_state = std::move(validity_state);
|
342
342
|
checkpoint_state.child_state = std::move(child_state);
|
343
343
|
return base_state;
|
@@ -502,7 +502,7 @@ void RowGroup::TemplatedScan(TransactionData transaction, CollectionScanState &s
|
|
502
502
|
if (column == COLUMN_IDENTIFIER_ROW_ID) {
|
503
503
|
D_ASSERT(result.data[i].GetType().InternalType() == PhysicalType::INT64);
|
504
504
|
result.data[i].SetVectorType(VectorType::FLAT_VECTOR);
|
505
|
-
auto result_data =
|
505
|
+
auto result_data = FlatVector::GetData<int64_t>(result.data[i]);
|
506
506
|
for (size_t sel_idx = 0; sel_idx < approved_tuple_count; sel_idx++) {
|
507
507
|
result_data[sel_idx] = this->start + current_row + sel.get_index(sel_idx);
|
508
508
|
}
|
@@ -650,7 +650,7 @@ void RowGroup::AppendVersionInfo(TransactionData transaction, idx_t count) {
|
|
650
650
|
} else {
|
651
651
|
D_ASSERT(version_info->info[vector_idx]->type == ChunkInfoType::VECTOR_INFO);
|
652
652
|
// use existing vector
|
653
|
-
info =
|
653
|
+
info = &version_info->info[vector_idx]->Cast<ChunkVectorInfo>();
|
654
654
|
}
|
655
655
|
info->Append(start, end, transaction.transaction_id);
|
656
656
|
}
|
@@ -985,7 +985,7 @@ void VersionDeleteState::Delete(row_t row_id) {
|
|
985
985
|
info.version_info->info[vector_idx] =
|
986
986
|
make_uniq<ChunkVectorInfo>(info.start + vector_idx * STANDARD_VECTOR_SIZE);
|
987
987
|
} else if (info.version_info->info[vector_idx]->type == ChunkInfoType::CONSTANT_INFO) {
|
988
|
-
auto &constant =
|
988
|
+
auto &constant = info.version_info->info[vector_idx]->Cast<ChunkConstantInfo>();
|
989
989
|
// info exists but it's a constant info: convert to a vector info
|
990
990
|
auto new_info = make_uniq<ChunkVectorInfo>(info.start + vector_idx * STANDARD_VECTOR_SIZE);
|
991
991
|
new_info->insert_id = constant.insert_id.load();
|
@@ -995,7 +995,7 @@ void VersionDeleteState::Delete(row_t row_id) {
|
|
995
995
|
info.version_info->info[vector_idx] = std::move(new_info);
|
996
996
|
}
|
997
997
|
D_ASSERT(info.version_info->info[vector_idx]->type == ChunkInfoType::VECTOR_INFO);
|
998
|
-
current_info =
|
998
|
+
current_info = &info.version_info->info[vector_idx]->Cast<ChunkVectorInfo>();
|
999
999
|
current_chunk = vector_idx;
|
1000
1000
|
chunk_row = vector_idx * STANDARD_VECTOR_SIZE;
|
1001
1001
|
}
|
@@ -189,7 +189,7 @@ unique_ptr<ColumnCheckpointState> StandardColumnData::Checkpoint(RowGroup &row_g
|
|
189
189
|
ColumnCheckpointInfo &checkpoint_info) {
|
190
190
|
auto validity_state = validity.Checkpoint(row_group, partial_block_manager, checkpoint_info);
|
191
191
|
auto base_state = ColumnData::Checkpoint(row_group, partial_block_manager, checkpoint_info);
|
192
|
-
auto &checkpoint_state = (
|
192
|
+
auto &checkpoint_state = base_state->Cast<StandardColumnCheckpointState>();
|
193
193
|
checkpoint_state.validity_state = std::move(validity_state);
|
194
194
|
return base_state;
|
195
195
|
}
|
@@ -48,9 +48,9 @@ Value UpdateInfo::GetValue(idx_t index) {
|
|
48
48
|
|
49
49
|
switch (type.id()) {
|
50
50
|
case LogicalTypeId::VALIDITY:
|
51
|
-
return Value::BOOLEAN(
|
51
|
+
return Value::BOOLEAN(reinterpret_cast<bool *>(tuple_data)[index]);
|
52
52
|
case LogicalTypeId::INTEGER:
|
53
|
-
return Value::INTEGER(
|
53
|
+
return Value::INTEGER(reinterpret_cast<int32_t *>(tuple_data)[index]);
|
54
54
|
default:
|
55
55
|
throw NotImplementedException("Unimplemented type for UpdateInfo::GetValue");
|
56
56
|
}
|
@@ -85,7 +85,7 @@ void UpdateInfo::Verify() {
|
|
85
85
|
// Update Fetch
|
86
86
|
//===--------------------------------------------------------------------===//
|
87
87
|
static void MergeValidityInfo(UpdateInfo *current, ValidityMask &result_mask) {
|
88
|
-
auto info_data =
|
88
|
+
auto info_data = reinterpret_cast<bool *>(current->tuple_data);
|
89
89
|
for (idx_t i = 0; i < current->N; i++) {
|
90
90
|
result_mask.Set(current->tuples[i], info_data[i]);
|
91
91
|
}
|
@@ -100,7 +100,7 @@ static void UpdateMergeValidity(transaction_t start_time, transaction_t transact
|
|
100
100
|
|
101
101
|
template <class T>
|
102
102
|
static void MergeUpdateInfo(UpdateInfo *current, T *result_data) {
|
103
|
-
auto info_data =
|
103
|
+
auto info_data = reinterpret_cast<T *>(current->tuple_data);
|
104
104
|
if (current->N == STANDARD_VECTOR_SIZE) {
|
105
105
|
// special case: update touches ALL tuples of this vector
|
106
106
|
// in this case we can just memcpy the data
|
@@ -241,7 +241,7 @@ void UpdateSegment::FetchCommitted(idx_t vector_index, Vector &result) {
|
|
241
241
|
//===--------------------------------------------------------------------===//
|
242
242
|
static void MergeUpdateInfoRangeValidity(UpdateInfo *current, idx_t start, idx_t end, idx_t result_offset,
|
243
243
|
ValidityMask &result_mask) {
|
244
|
-
auto info_data =
|
244
|
+
auto info_data = reinterpret_cast<bool *>(current->tuple_data);
|
245
245
|
for (idx_t i = 0; i < current->N; i++) {
|
246
246
|
auto tuple_idx = current->tuples[i];
|
247
247
|
if (tuple_idx < start) {
|
@@ -261,7 +261,7 @@ static void FetchCommittedRangeValidity(UpdateInfo *info, idx_t start, idx_t end
|
|
261
261
|
|
262
262
|
template <class T>
|
263
263
|
static void MergeUpdateInfoRange(UpdateInfo *current, idx_t start, idx_t end, idx_t result_offset, T *result_data) {
|
264
|
-
auto info_data =
|
264
|
+
auto info_data = reinterpret_cast<T *>(current->tuple_data);
|
265
265
|
for (idx_t i = 0; i < current->N; i++) {
|
266
266
|
auto tuple_idx = current->tuples[i];
|
267
267
|
if (tuple_idx < start) {
|
@@ -352,7 +352,7 @@ static void FetchRowValidity(transaction_t start_time, transaction_t transaction
|
|
352
352
|
Vector &result, idx_t result_idx) {
|
353
353
|
auto &result_mask = FlatVector::Validity(result);
|
354
354
|
UpdateInfo::UpdatesForTransaction(info, start_time, transaction_id, [&](UpdateInfo *current) {
|
355
|
-
auto info_data =
|
355
|
+
auto info_data = reinterpret_cast<bool *>(current->tuple_data);
|
356
356
|
// FIXME: we could do a binary search in here
|
357
357
|
for (idx_t i = 0; i < current->N; i++) {
|
358
358
|
if (current->tuples[i] == row_idx) {
|
@@ -576,7 +576,7 @@ void UpdateSegment::InitializeUpdateInfo(UpdateInfo &info, row_t *ids, const Sel
|
|
576
576
|
static void InitializeUpdateValidity(UpdateInfo *base_info, Vector &base_data, UpdateInfo *update_info, Vector &update,
|
577
577
|
const SelectionVector &sel) {
|
578
578
|
auto &update_mask = FlatVector::Validity(update);
|
579
|
-
auto tuple_data =
|
579
|
+
auto tuple_data = reinterpret_cast<bool *>(update_info->tuple_data);
|
580
580
|
|
581
581
|
if (!update_mask.AllValid()) {
|
582
582
|
for (idx_t i = 0; i < update_info->N; i++) {
|
@@ -590,7 +590,7 @@ static void InitializeUpdateValidity(UpdateInfo *base_info, Vector &base_data, U
|
|
590
590
|
}
|
591
591
|
|
592
592
|
auto &base_mask = FlatVector::Validity(base_data);
|
593
|
-
auto base_tuple_data =
|
593
|
+
auto base_tuple_data = reinterpret_cast<bool *>(base_info->tuple_data);
|
594
594
|
if (!base_mask.AllValid()) {
|
595
595
|
for (idx_t i = 0; i < base_info->N; i++) {
|
596
596
|
base_tuple_data[i] = base_mask.RowIsValidUnsafe(base_info->tuples[i]);
|
@@ -1045,10 +1045,10 @@ static idx_t SortSelectionVector(SelectionVector &sel, idx_t count, row_t *ids)
|
|
1045
1045
|
UpdateInfo *CreateEmptyUpdateInfo(TransactionData transaction, idx_t type_size, idx_t count,
|
1046
1046
|
unsafe_unique_array<char> &data) {
|
1047
1047
|
data = make_unsafe_uniq_array<char>(sizeof(UpdateInfo) + (sizeof(sel_t) + type_size) * STANDARD_VECTOR_SIZE);
|
1048
|
-
auto update_info =
|
1048
|
+
auto update_info = reinterpret_cast<UpdateInfo *>(data.get());
|
1049
1049
|
update_info->max = STANDARD_VECTOR_SIZE;
|
1050
|
-
update_info->tuples =
|
1051
|
-
update_info->tuple_data = ((
|
1050
|
+
update_info->tuples = reinterpret_cast<sel_t *>((data_ptr_cast(update_info)) + sizeof(UpdateInfo));
|
1051
|
+
update_info->tuple_data = (data_ptr_cast(update_info)) + sizeof(UpdateInfo) + sizeof(sel_t) * update_info->max;
|
1052
1052
|
update_info->version_number = transaction.transaction_id;
|
1053
1053
|
return update_info;
|
1054
1054
|
}
|
@@ -486,7 +486,7 @@ void ReplayState::ReplayDelete() {
|
|
486
486
|
|
487
487
|
D_ASSERT(chunk.ColumnCount() == 1 && chunk.data[0].GetType() == LogicalType::ROW_TYPE);
|
488
488
|
row_t row_ids[1];
|
489
|
-
Vector row_identifiers(LogicalType::ROW_TYPE, (
|
489
|
+
Vector row_identifiers(LogicalType::ROW_TYPE, data_ptr_cast(row_ids));
|
490
490
|
|
491
491
|
auto source_ids = FlatVector::GetData<row_t>(chunk.data[0]);
|
492
492
|
// delete the tuples from the current table
|
@@ -28,12 +28,12 @@ void CleanupState::CleanupEntry(UndoFlags type, data_ptr_t data) {
|
|
28
28
|
break;
|
29
29
|
}
|
30
30
|
case UndoFlags::DELETE_TUPLE: {
|
31
|
-
auto info =
|
31
|
+
auto info = reinterpret_cast<DeleteInfo *>(data);
|
32
32
|
CleanupDelete(*info);
|
33
33
|
break;
|
34
34
|
}
|
35
35
|
case UndoFlags::UPDATE_TUPLE: {
|
36
|
-
auto info =
|
36
|
+
auto info = reinterpret_cast<UpdateInfo *>(data);
|
37
37
|
CleanupUpdate(*info);
|
38
38
|
break;
|
39
39
|
}
|
@@ -80,7 +80,7 @@ void CleanupState::Flush() {
|
|
80
80
|
}
|
81
81
|
|
82
82
|
// set up the row identifiers vector
|
83
|
-
Vector row_identifiers(LogicalType::ROW_TYPE, (
|
83
|
+
Vector row_identifiers(LogicalType::ROW_TYPE, data_ptr_cast(row_numbers));
|
84
84
|
|
85
85
|
// delete the tuples from all the indexes
|
86
86
|
try {
|
@@ -45,7 +45,7 @@ void CommitState::WriteCatalogEntry(CatalogEntry &entry, data_ptr_t dataptr) {
|
|
45
45
|
D_ASSERT(table_entry.IsDuckTable());
|
46
46
|
// ALTER TABLE statement, read the extra data after the entry
|
47
47
|
auto extra_data_size = Load<idx_t>(dataptr);
|
48
|
-
auto extra_data = (
|
48
|
+
auto extra_data = data_ptr_cast(dataptr + sizeof(idx_t));
|
49
49
|
|
50
50
|
BufferedDeserializer source(extra_data, extra_data_size);
|
51
51
|
string column_name = source.Read<string>();
|
@@ -72,7 +72,7 @@ void CommitState::WriteCatalogEntry(CatalogEntry &entry, data_ptr_t dataptr) {
|
|
72
72
|
if (entry.type == CatalogType::VIEW_ENTRY) {
|
73
73
|
// ALTER TABLE statement, read the extra data after the entry
|
74
74
|
auto extra_data_size = Load<idx_t>(dataptr);
|
75
|
-
auto extra_data = (
|
75
|
+
auto extra_data = data_ptr_cast(dataptr + sizeof(idx_t));
|
76
76
|
// deserialize it
|
77
77
|
BufferedDeserializer source(extra_data, extra_data_size);
|
78
78
|
string column_name = source.Read<string>();
|
@@ -247,7 +247,7 @@ void CommitState::CommitEntry(UndoFlags type, data_ptr_t data) {
|
|
247
247
|
}
|
248
248
|
case UndoFlags::INSERT_TUPLE: {
|
249
249
|
// append:
|
250
|
-
auto info =
|
250
|
+
auto info = reinterpret_cast<AppendInfo *>(data);
|
251
251
|
if (HAS_LOG && !info->table->info->IsTemporary()) {
|
252
252
|
info->table->WriteToLog(*log, info->start_row, info->count);
|
253
253
|
}
|
@@ -257,7 +257,7 @@ void CommitState::CommitEntry(UndoFlags type, data_ptr_t data) {
|
|
257
257
|
}
|
258
258
|
case UndoFlags::DELETE_TUPLE: {
|
259
259
|
// deletion:
|
260
|
-
auto info =
|
260
|
+
auto info = reinterpret_cast<DeleteInfo *>(data);
|
261
261
|
if (HAS_LOG && !info->table->info->IsTemporary()) {
|
262
262
|
WriteDelete(*info);
|
263
263
|
}
|
@@ -267,7 +267,7 @@ void CommitState::CommitEntry(UndoFlags type, data_ptr_t data) {
|
|
267
267
|
}
|
268
268
|
case UndoFlags::UPDATE_TUPLE: {
|
269
269
|
// update:
|
270
|
-
auto info =
|
270
|
+
auto info = reinterpret_cast<UpdateInfo *>(data);
|
271
271
|
if (HAS_LOG && !info->segment->column_data.GetTableInfo().IsTemporary()) {
|
272
272
|
WriteUpdate(*info);
|
273
273
|
}
|
@@ -293,14 +293,14 @@ void CommitState::RevertCommit(UndoFlags type, data_ptr_t data) {
|
|
293
293
|
break;
|
294
294
|
}
|
295
295
|
case UndoFlags::INSERT_TUPLE: {
|
296
|
-
auto info =
|
296
|
+
auto info = reinterpret_cast<AppendInfo *>(data);
|
297
297
|
// revert this append
|
298
298
|
info->table->RevertAppend(info->start_row, info->count);
|
299
299
|
break;
|
300
300
|
}
|
301
301
|
case UndoFlags::DELETE_TUPLE: {
|
302
302
|
// deletion:
|
303
|
-
auto info =
|
303
|
+
auto info = reinterpret_cast<DeleteInfo *>(data);
|
304
304
|
info->table->info->cardinality += info->count;
|
305
305
|
// revert the commit by writing the (uncommitted) transaction_id back into the version info
|
306
306
|
info->vinfo->CommitDelete(transaction_id, info->rows, info->count);
|
@@ -308,7 +308,7 @@ void CommitState::RevertCommit(UndoFlags type, data_ptr_t data) {
|
|
308
308
|
}
|
309
309
|
case UndoFlags::UPDATE_TUPLE: {
|
310
310
|
// update:
|
311
|
-
auto info =
|
311
|
+
auto info = reinterpret_cast<UpdateInfo *>(data);
|
312
312
|
info->version_number = transaction_id;
|
313
313
|
break;
|
314
314
|
}
|
@@ -44,7 +44,7 @@ DuckTransaction &DuckTransaction::Get(ClientContext &context, Catalog &catalog)
|
|
44
44
|
if (!transaction.IsDuckTransaction()) {
|
45
45
|
throw InternalException("DuckTransaction::Get called on non-DuckDB transaction");
|
46
46
|
}
|
47
|
-
return (
|
47
|
+
return transaction.Cast<DuckTransaction>();
|
48
48
|
}
|
49
49
|
|
50
50
|
LocalStorage &DuckTransaction::GetLocalStorage() {
|
@@ -71,8 +71,8 @@ void DuckTransaction::PushCatalogEntry(CatalogEntry &entry, data_ptr_t extra_dat
|
|
71
71
|
}
|
72
72
|
|
73
73
|
void DuckTransaction::PushDelete(DataTable &table, ChunkVectorInfo *vinfo, row_t rows[], idx_t count, idx_t base_row) {
|
74
|
-
auto delete_info =
|
75
|
-
|
74
|
+
auto delete_info = reinterpret_cast<DeleteInfo *>(
|
75
|
+
undo_buffer.CreateEntry(UndoFlags::DELETE_TUPLE, sizeof(DeleteInfo) + sizeof(row_t) * count));
|
76
76
|
delete_info->vinfo = vinfo;
|
77
77
|
delete_info->table = &table;
|
78
78
|
delete_info->count = count;
|
@@ -81,18 +81,20 @@ void DuckTransaction::PushDelete(DataTable &table, ChunkVectorInfo *vinfo, row_t
|
|
81
81
|
}
|
82
82
|
|
83
83
|
void DuckTransaction::PushAppend(DataTable &table, idx_t start_row, idx_t row_count) {
|
84
|
-
auto append_info =
|
84
|
+
auto append_info =
|
85
|
+
reinterpret_cast<AppendInfo *>(undo_buffer.CreateEntry(UndoFlags::INSERT_TUPLE, sizeof(AppendInfo)));
|
85
86
|
append_info->table = &table;
|
86
87
|
append_info->start_row = start_row;
|
87
88
|
append_info->count = row_count;
|
88
89
|
}
|
89
90
|
|
90
91
|
UpdateInfo *DuckTransaction::CreateUpdateInfo(idx_t type_size, idx_t entries) {
|
91
|
-
|
92
|
+
data_ptr_t base_info = undo_buffer.CreateEntry(
|
92
93
|
UndoFlags::UPDATE_TUPLE, sizeof(UpdateInfo) + (sizeof(sel_t) + type_size) * STANDARD_VECTOR_SIZE);
|
94
|
+
auto update_info = reinterpret_cast<UpdateInfo *>(base_info);
|
93
95
|
update_info->max = STANDARD_VECTOR_SIZE;
|
94
|
-
update_info->tuples =
|
95
|
-
update_info->tuple_data =
|
96
|
+
update_info->tuples = reinterpret_cast<sel_t *>(base_info + sizeof(UpdateInfo));
|
97
|
+
update_info->tuple_data = base_info + sizeof(UpdateInfo) + sizeof(sel_t) * update_info->max;
|
96
98
|
update_info->version_number = transaction_id;
|
97
99
|
return update_info;
|
98
100
|
}
|
@@ -61,7 +61,7 @@ DuckTransactionManager &DuckTransactionManager::Get(AttachedDatabase &db) {
|
|
61
61
|
if (!transaction_manager.IsDuckTransactionManager()) {
|
62
62
|
throw InternalException("Calling DuckTransactionManager::Get on non-DuckDB transaction manager");
|
63
63
|
}
|
64
|
-
return
|
64
|
+
return reinterpret_cast<DuckTransactionManager &>(transaction_manager);
|
65
65
|
}
|
66
66
|
|
67
67
|
Transaction *DuckTransactionManager::StartTransaction(ClientContext &context) {
|
@@ -152,7 +152,7 @@ void DuckTransactionManager::Checkpoint(ClientContext &context, bool force) {
|
|
152
152
|
|
153
153
|
// remove the transaction id from the list of active transactions
|
154
154
|
// potentially resulting in garbage collection
|
155
|
-
RemoveTransaction(transaction
|
155
|
+
RemoveTransaction(*transaction);
|
156
156
|
if (transaction_context) {
|
157
157
|
transaction_context->transaction.ClearTransaction();
|
158
158
|
}
|
@@ -164,7 +164,7 @@ void DuckTransactionManager::Checkpoint(ClientContext &context, bool force) {
|
|
164
164
|
storage_manager.CreateCheckpoint();
|
165
165
|
}
|
166
166
|
|
167
|
-
bool DuckTransactionManager::CanCheckpoint(DuckTransaction
|
167
|
+
bool DuckTransactionManager::CanCheckpoint(optional_ptr<DuckTransaction> current) {
|
168
168
|
if (db.IsSystem()) {
|
169
169
|
return false;
|
170
170
|
}
|
@@ -176,7 +176,7 @@ bool DuckTransactionManager::CanCheckpoint(DuckTransaction *current) {
|
|
176
176
|
return false;
|
177
177
|
}
|
178
178
|
for (auto &transaction : active_transactions) {
|
179
|
-
if (transaction.get() != current) {
|
179
|
+
if (transaction.get() != current.get()) {
|
180
180
|
return false;
|
181
181
|
}
|
182
182
|
}
|
@@ -184,14 +184,14 @@ bool DuckTransactionManager::CanCheckpoint(DuckTransaction *current) {
|
|
184
184
|
}
|
185
185
|
|
186
186
|
string DuckTransactionManager::CommitTransaction(ClientContext &context, Transaction *transaction_p) {
|
187
|
-
auto transaction = (
|
187
|
+
auto &transaction = transaction_p->Cast<DuckTransaction>();
|
188
188
|
vector<ClientLockWrapper> client_locks;
|
189
189
|
auto lock = make_uniq<lock_guard<mutex>>(transaction_lock);
|
190
190
|
CheckpointLock checkpoint_lock(*this);
|
191
191
|
// check if we can checkpoint
|
192
|
-
bool checkpoint = thread_is_checkpointing ? false : CanCheckpoint(transaction);
|
192
|
+
bool checkpoint = thread_is_checkpointing ? false : CanCheckpoint(&transaction);
|
193
193
|
if (checkpoint) {
|
194
|
-
if (transaction
|
194
|
+
if (transaction.AutomaticCheckpoint(db)) {
|
195
195
|
checkpoint_lock.Lock();
|
196
196
|
// we might be able to checkpoint: lock all clients
|
197
197
|
// to avoid deadlock we release the transaction lock while locking the clients
|
@@ -200,7 +200,7 @@ string DuckTransactionManager::CommitTransaction(ClientContext &context, Transac
|
|
200
200
|
LockClients(client_locks, context);
|
201
201
|
|
202
202
|
lock = make_uniq<lock_guard<mutex>>(transaction_lock);
|
203
|
-
checkpoint = CanCheckpoint(transaction);
|
203
|
+
checkpoint = CanCheckpoint(&transaction);
|
204
204
|
if (!checkpoint) {
|
205
205
|
checkpoint_lock.Unlock();
|
206
206
|
client_locks.clear();
|
@@ -212,12 +212,12 @@ string DuckTransactionManager::CommitTransaction(ClientContext &context, Transac
|
|
212
212
|
// obtain a commit id for the transaction
|
213
213
|
transaction_t commit_id = current_start_timestamp++;
|
214
214
|
// commit the UndoBuffer of the transaction
|
215
|
-
string error = transaction
|
215
|
+
string error = transaction.Commit(db, commit_id, checkpoint);
|
216
216
|
if (!error.empty()) {
|
217
217
|
// commit unsuccessful: rollback the transaction instead
|
218
218
|
checkpoint = false;
|
219
|
-
transaction
|
220
|
-
transaction
|
219
|
+
transaction.commit_id = 0;
|
220
|
+
transaction.Rollback();
|
221
221
|
}
|
222
222
|
if (!checkpoint) {
|
223
223
|
// we won't checkpoint after all: unlock the clients again
|
@@ -239,19 +239,19 @@ string DuckTransactionManager::CommitTransaction(ClientContext &context, Transac
|
|
239
239
|
}
|
240
240
|
|
241
241
|
void DuckTransactionManager::RollbackTransaction(Transaction *transaction_p) {
|
242
|
-
auto transaction = (
|
242
|
+
auto &transaction = transaction_p->Cast<DuckTransaction>();
|
243
243
|
// obtain the transaction lock during this function
|
244
244
|
lock_guard<mutex> lock(transaction_lock);
|
245
245
|
|
246
246
|
// rollback the transaction
|
247
|
-
transaction
|
247
|
+
transaction.Rollback();
|
248
248
|
|
249
249
|
// remove the transaction id from the list of active transactions
|
250
250
|
// potentially resulting in garbage collection
|
251
251
|
RemoveTransaction(transaction);
|
252
252
|
}
|
253
253
|
|
254
|
-
void DuckTransactionManager::RemoveTransaction(DuckTransaction
|
254
|
+
void DuckTransactionManager::RemoveTransaction(DuckTransaction &transaction) noexcept {
|
255
255
|
// remove the transaction from the list of active transactions
|
256
256
|
idx_t t_index = active_transactions.size();
|
257
257
|
// check for the lowest and highest start time in the list of transactions
|
@@ -259,7 +259,7 @@ void DuckTransactionManager::RemoveTransaction(DuckTransaction *transaction) noe
|
|
259
259
|
transaction_t lowest_transaction_id = MAX_TRANSACTION_ID;
|
260
260
|
transaction_t lowest_active_query = MAXIMUM_QUERY_ID;
|
261
261
|
for (idx_t i = 0; i < active_transactions.size(); i++) {
|
262
|
-
if (active_transactions[i].get() == transaction) {
|
262
|
+
if (active_transactions[i].get() == &transaction) {
|
263
263
|
t_index = i;
|
264
264
|
} else {
|
265
265
|
transaction_t active_query = active_transactions[i]->active_query;
|
@@ -275,7 +275,7 @@ void DuckTransactionManager::RemoveTransaction(DuckTransaction *transaction) noe
|
|
275
275
|
D_ASSERT(t_index != active_transactions.size());
|
276
276
|
auto current_transaction = std::move(active_transactions[t_index]);
|
277
277
|
auto current_query = DatabaseManager::Get(db).ActiveQueryNumber();
|
278
|
-
if (transaction
|
278
|
+
if (transaction.commit_id != 0) {
|
279
279
|
// the transaction was committed, add it to the list of recently
|
280
280
|
// committed transactions
|
281
281
|
recently_committed_transactions.push_back(std::move(current_transaction));
|
@@ -22,19 +22,19 @@ void RollbackState::RollbackEntry(UndoFlags type, data_ptr_t data) {
|
|
22
22
|
break;
|
23
23
|
}
|
24
24
|
case UndoFlags::INSERT_TUPLE: {
|
25
|
-
auto info =
|
25
|
+
auto info = reinterpret_cast<AppendInfo *>(data);
|
26
26
|
// revert the append in the base table
|
27
27
|
info->table->RevertAppend(info->start_row, info->count);
|
28
28
|
break;
|
29
29
|
}
|
30
30
|
case UndoFlags::DELETE_TUPLE: {
|
31
|
-
auto info =
|
31
|
+
auto info = reinterpret_cast<DeleteInfo *>(data);
|
32
32
|
// reset the deleted flag on rollback
|
33
33
|
info->vinfo->CommitDelete(NOT_DELETED_ID, info->rows, info->count);
|
34
34
|
break;
|
35
35
|
}
|
36
36
|
case UndoFlags::UPDATE_TUPLE: {
|
37
|
-
auto info =
|
37
|
+
auto info = reinterpret_cast<UpdateInfo *>(data);
|
38
38
|
info->segment->RollbackUpdate(*info);
|
39
39
|
break;
|
40
40
|
}
|
@@ -50,7 +50,7 @@ void PreparedStatementVerifier::ConvertConstants(unique_ptr<ParsedExpression> &c
|
|
50
50
|
// check if the value already exists
|
51
51
|
idx_t index = values.size();
|
52
52
|
for (idx_t v_idx = 0; v_idx < values.size(); v_idx++) {
|
53
|
-
if (values[v_idx]->Equals(child
|
53
|
+
if (values[v_idx]->Equals(*child)) {
|
54
54
|
// duplicate value! refer to the original value
|
55
55
|
index = v_idx;
|
56
56
|
break;
|
@@ -57,7 +57,7 @@ void StatementVerifier::CheckExpressions(const StatementVerifier &other) const {
|
|
57
57
|
|
58
58
|
// Check equality
|
59
59
|
if (other.RequireEquality()) {
|
60
|
-
D_ASSERT(statement->Equals(other.statement
|
60
|
+
D_ASSERT(statement->Equals(*other.statement));
|
61
61
|
}
|
62
62
|
|
63
63
|
#ifdef DEBUG
|
@@ -66,7 +66,6 @@ void StatementVerifier::CheckExpressions(const StatementVerifier &other) const {
|
|
66
66
|
const auto expr_count = select_list.size();
|
67
67
|
if (other.RequireEquality()) {
|
68
68
|
for (idx_t i = 0; i < expr_count; i++) {
|
69
|
-
D_ASSERT(!select_list[i]->Equals(nullptr));
|
70
69
|
// Run the ToString, to verify that it doesn't crash
|
71
70
|
select_list[i]->ToString();
|
72
71
|
|
@@ -75,7 +74,7 @@ void StatementVerifier::CheckExpressions(const StatementVerifier &other) const {
|
|
75
74
|
}
|
76
75
|
|
77
76
|
// Check that the expressions are equivalent
|
78
|
-
D_ASSERT(select_list[i]->Equals(other.select_list[i]
|
77
|
+
D_ASSERT(select_list[i]->Equals(*other.select_list[i]));
|
79
78
|
// Check that the hashes are equivalent too
|
80
79
|
D_ASSERT(select_list[i]->Hash() == other.select_list[i]->Hash());
|
81
80
|
|
@@ -96,7 +95,7 @@ void StatementVerifier::CheckExpressions() const {
|
|
96
95
|
auto hash2 = select_list[inner_idx]->Hash();
|
97
96
|
if (hash != hash2) {
|
98
97
|
// if the hashes are not equivalent, the expressions should not be equivalent
|
99
|
-
D_ASSERT(!select_list[outer_idx]->Equals(select_list[inner_idx]
|
98
|
+
D_ASSERT(!select_list[outer_idx]->Equals(*select_list[inner_idx]));
|
100
99
|
}
|
101
100
|
}
|
102
101
|
}
|