duckdb 0.8.2-dev4142.0 → 0.8.2-dev4314.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 +0 -2
- package/lib/duckdb.js +3 -3
- package/package.json +1 -1
- package/src/connection.cpp +9 -8
- package/src/database.cpp +5 -8
- package/src/duckdb/extension/icu/icu-datepart.cpp +2 -2
- package/src/duckdb/extension/icu/icu-strptime.cpp +0 -9
- package/src/duckdb/extension/icu/icu_extension.cpp +3 -3
- package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/gregocal.h +1 -1
- package/src/duckdb/extension/json/buffered_json_reader.cpp +3 -17
- package/src/duckdb/extension/json/include/buffered_json_reader.hpp +2 -5
- package/src/duckdb/extension/json/include/json_deserializer.hpp +2 -2
- package/src/duckdb/extension/json/include/json_scan.hpp +5 -12
- package/src/duckdb/extension/json/include/json_serializer.hpp +3 -3
- package/src/duckdb/extension/json/include/json_transform.hpp +2 -5
- package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +2 -18
- package/src/duckdb/extension/json/json_scan.cpp +7 -76
- package/src/duckdb/extension/json/serialize_json.cpp +8 -8
- package/src/duckdb/extension/parquet/column_writer.cpp +46 -45
- package/src/duckdb/extension/parquet/include/column_writer.hpp +2 -2
- package/src/duckdb/extension/parquet/include/parquet_reader.hpp +2 -5
- package/src/duckdb/extension/parquet/include/parquet_rle_bp_encoder.hpp +4 -4
- package/src/duckdb/extension/parquet/parquet_extension.cpp +74 -55
- package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -2
- package/src/duckdb/extension/parquet/serialize_parquet.cpp +4 -4
- package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +0 -1
- package/src/duckdb/src/catalog/catalog_entry/macro_catalog_entry.cpp +0 -1
- package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +0 -1
- package/src/duckdb/src/catalog/catalog_entry/sequence_catalog_entry.cpp +0 -1
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +0 -2
- package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +1 -3
- package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +0 -1
- package/src/duckdb/src/catalog/catalog_entry.cpp +2 -11
- package/src/duckdb/src/catalog/catalog_set.cpp +16 -14
- package/src/duckdb/src/catalog/default/default_functions.cpp +2 -2
- package/src/duckdb/src/common/arrow/arrow_converter.cpp +0 -1
- package/src/duckdb/src/common/constants.cpp +0 -1
- package/src/duckdb/src/common/enum_util.cpp +0 -10
- package/src/duckdb/src/common/exception.cpp +1 -1
- package/src/duckdb/src/common/extra_type_info.cpp +20 -192
- package/src/duckdb/src/common/multi_file_reader.cpp +0 -68
- package/src/duckdb/src/common/serializer/binary_serializer.cpp +9 -4
- package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +3 -11
- package/src/duckdb/src/common/serializer/buffered_file_writer.cpp +1 -1
- package/src/duckdb/src/common/serializer/memory_stream.cpp +61 -0
- package/src/duckdb/src/common/serializer/{format_serializer.cpp → serializer.cpp} +2 -2
- package/src/duckdb/src/common/sort/partition_state.cpp +107 -29
- package/src/duckdb/src/common/types/column/column_data_collection.cpp +4 -4
- package/src/duckdb/src/common/types/data_chunk.cpp +11 -43
- package/src/duckdb/src/common/types/hyperloglog.cpp +4 -23
- package/src/duckdb/src/common/types/interval.cpp +2 -2
- package/src/duckdb/src/common/types/value.cpp +10 -135
- package/src/duckdb/src/common/types/vector.cpp +17 -149
- package/src/duckdb/src/common/types.cpp +2 -20
- package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +0 -1
- package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +6 -7
- package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +5 -28
- package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +30 -78
- package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +5 -30
- package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +6 -9
- package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +21 -16
- package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +15 -23
- package/src/duckdb/src/execution/index/art/art.cpp +5 -1
- package/src/duckdb/src/execution/index/art/leaf.cpp +13 -10
- package/src/duckdb/src/execution/index/art/node48.cpp +0 -2
- package/src/duckdb/src/execution/index/fixed_size_allocator.cpp +38 -73
- package/src/duckdb/src/execution/index/fixed_size_buffer.cpp +245 -27
- package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +2 -3
- package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +35 -20
- package/src/duckdb/src/function/macro_function.cpp +0 -42
- package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +10 -8
- package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +13 -12
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +9 -11
- package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +7 -33
- package/src/duckdb/src/function/scalar_function.cpp +1 -2
- package/src/duckdb/src/function/scalar_macro_function.cpp +0 -10
- package/src/duckdb/src/function/table/copy_csv.cpp +38 -38
- package/src/duckdb/src/function/table/read_csv.cpp +5 -174
- package/src/duckdb/src/function/table/table_scan.cpp +5 -42
- package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
- package/src/duckdb/src/function/table_function.cpp +3 -4
- package/src/duckdb/src/function/table_macro_function.cpp +0 -10
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +0 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +0 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +0 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +3 -8
- package/src/duckdb/src/include/duckdb/common/constants.hpp +4 -2
- package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +16 -46
- package/src/duckdb/src/include/duckdb/common/index_vector.hpp +4 -4
- package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +2 -6
- package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +0 -4
- package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +44 -23
- package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +31 -23
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_reader.hpp +4 -6
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_writer.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/serializer/deserialization_data.hpp +17 -0
- package/src/duckdb/src/include/duckdb/common/serializer/{format_deserializer.hpp → deserializer.hpp} +13 -13
- package/src/duckdb/src/include/duckdb/common/serializer/memory_stream.hpp +62 -0
- package/src/duckdb/src/include/duckdb/common/serializer/read_stream.hpp +38 -0
- package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +15 -13
- package/src/duckdb/src/include/duckdb/common/serializer/{format_serializer.hpp → serializer.hpp} +13 -12
- package/src/duckdb/src/include/duckdb/common/serializer/write_stream.hpp +36 -0
- package/src/duckdb/src/include/duckdb/common/sort/partition_state.hpp +14 -4
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +3 -8
- package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +4 -10
- package/src/duckdb/src/include/duckdb/common/types/interval.hpp +4 -4
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -5
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +2 -7
- package/src/duckdb/src/include/duckdb/common/types.hpp +1 -10
- package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +2 -0
- package/src/duckdb/src/include/duckdb/execution/index/fixed_size_allocator.hpp +1 -7
- package/src/duckdb/src/include/duckdb/execution/index/fixed_size_buffer.hpp +38 -8
- package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_reader_options.hpp +2 -11
- package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +4 -14
- package/src/duckdb/src/include/duckdb/function/copy_function.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +15 -98
- package/src/duckdb/src/include/duckdb/function/macro_function.hpp +1 -7
- package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +9 -10
- package/src/duckdb/src/include/duckdb/function/scalar/strftime_format.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -12
- package/src/duckdb/src/include/duckdb/function/scalar_macro_function.hpp +2 -7
- package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +4 -16
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +2 -11
- package/src/duckdb/src/include/duckdb/function/table_macro_function.hpp +2 -7
- package/src/duckdb/src/include/duckdb/main/relation.hpp +9 -2
- package/src/duckdb/src/include/duckdb/parser/column_definition.hpp +1 -4
- package/src/duckdb/src/include/duckdb/parser/column_list.hpp +2 -6
- package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -12
- package/src/duckdb/src/include/duckdb/parser/constraints/check_constraint.hpp +2 -5
- package/src/duckdb/src/include/duckdb/parser/constraints/foreign_key_constraint.hpp +2 -7
- package/src/duckdb/src/include/duckdb/parser/constraints/not_null_constraint.hpp +2 -7
- package/src/duckdb/src/include/duckdb/parser/constraints/unique_constraint.hpp +2 -7
- package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -4
- package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +4 -6
- package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/parser/expression/default_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +2 -5
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_scalar_function_info.hpp +0 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_function_info.hpp +0 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +24 -51
- package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +1 -4
- package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_collation_info.hpp +0 -3
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_copy_function_info.hpp +0 -3
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_function_info.hpp +0 -5
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_index_info.hpp +2 -7
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +1 -13
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_macro_info.hpp +2 -8
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_schema_info.hpp +2 -12
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_sequence_info.hpp +2 -7
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_info.hpp +2 -7
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_type_info.hpp +2 -7
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +2 -7
- package/src/duckdb/src/include/duckdb/parser/parsed_data/detach_info.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +2 -5
- package/src/duckdb/src/include/duckdb/parser/parsed_data/load_info.hpp +2 -21
- package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_data/pragma_info.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_data/sample_options.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/parsed_data/transaction_info.hpp +1 -4
- package/src/duckdb/src/include/duckdb/parser/parsed_data/vacuum_info.hpp +5 -7
- package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +3 -16
- package/src/duckdb/src/include/duckdb/parser/query_node/cte_node.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/query_node/recursive_cte_node.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/query_node/select_node.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/query_node/set_operation_node.hpp +2 -4
- package/src/duckdb/src/include/duckdb/parser/query_node.hpp +7 -14
- package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +14 -32
- package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +4 -9
- package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +2 -6
- package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -6
- package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +2 -6
- package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +2 -6
- package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +6 -14
- package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +2 -6
- package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +2 -6
- package/src/duckdb/src/include/duckdb/parser/tableref.hpp +2 -10
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +0 -1
- package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +2 -8
- package/src/duckdb/src/include/duckdb/planner/column_binding.hpp +4 -4
- package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +3 -9
- package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +2 -8
- package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/expression/bound_default_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +2 -8
- package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_data.hpp +2 -19
- package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +0 -3
- package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/expression.hpp +2 -14
- package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +4 -8
- package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +4 -8
- package/src/duckdb/src/include/duckdb/planner/joinside.hpp +1 -6
- package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +2 -17
- package/src/duckdb/src/include/duckdb/planner/operator/logical_aggregate.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_any_join.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_column_data_get.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +2 -6
- package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_create.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_create_index.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_create_table.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_cross_product.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_delete.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_delim_get.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_dependent_join.hpp +0 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_distinct.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_dummy_scan.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_empty_result.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +0 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_export.hpp +0 -3
- package/src/duckdb/src/include/duckdb/planner/operator/logical_expression_get.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_extension_operator.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_filter.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_join.hpp +0 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_limit.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_limit_percent.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_materialized_cte.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_order.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_positional_join.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +0 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +0 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_projection.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_reset.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_sample.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_set.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_set_operation.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_show.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_simple.hpp +2 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_top_n.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_unnest.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_update.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator/logical_window.hpp +2 -4
- package/src/duckdb/src/include/duckdb/planner/operator_extension.hpp +1 -3
- package/src/duckdb/src/include/duckdb/planner/parsed_data/bound_create_table_info.hpp +0 -5
- package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +3 -12
- package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/block.hpp +7 -4
- package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +3 -2
- package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +6 -6
- package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +18 -18
- package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +6 -0
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/metadata/metadata_manager.hpp +4 -5
- package/src/duckdb/src/include/duckdb/storage/metadata/metadata_reader.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/metadata/metadata_writer.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +35 -19
- package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +2 -11
- package/src/duckdb/src/include/duckdb/storage/statistics/column_statistics.hpp +3 -5
- package/src/duckdb/src/include/duckdb/storage/statistics/distinct_statistics.hpp +3 -11
- package/src/duckdb/src/include/duckdb/storage/statistics/list_stats.hpp +2 -7
- package/src/duckdb/src/include/duckdb/storage/statistics/node_statistics.hpp +0 -26
- package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats.hpp +2 -7
- package/src/duckdb/src/include/duckdb/storage/statistics/string_stats.hpp +2 -7
- package/src/duckdb/src/include/duckdb/storage/statistics/struct_stats.hpp +2 -7
- package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +4 -6
- package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +8 -17
- package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +5 -20
- package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +2 -7
- package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +4 -7
- package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +27 -29
- package/src/duckdb/src/include/duckdb/verification/statement_verifier.hpp +0 -2
- package/src/duckdb/src/main/client_context.cpp +0 -6
- package/src/duckdb/src/main/client_verify.cpp +0 -2
- package/src/duckdb/src/main/extension/extension_helper.cpp +1 -0
- package/src/duckdb/src/main/relation.cpp +15 -2
- package/src/duckdb/src/parser/column_definition.cpp +0 -25
- package/src/duckdb/src/parser/column_list.cpp +0 -13
- package/src/duckdb/src/parser/constraint.cpp +0 -33
- package/src/duckdb/src/parser/constraints/check_constraint.cpp +0 -11
- package/src/duckdb/src/parser/constraints/foreign_key_constraint.cpp +0 -27
- package/src/duckdb/src/parser/constraints/not_null_constraint.cpp +0 -11
- package/src/duckdb/src/parser/constraints/unique_constraint.cpp +0 -24
- package/src/duckdb/src/parser/expression/between_expression.cpp +2 -16
- package/src/duckdb/src/parser/expression/case_expression.cpp +2 -29
- package/src/duckdb/src/parser/expression/cast_expression.cpp +2 -16
- package/src/duckdb/src/parser/expression/collate_expression.cpp +2 -14
- package/src/duckdb/src/parser/expression/columnref_expression.cpp +2 -13
- package/src/duckdb/src/parser/expression/comparison_expression.cpp +2 -14
- package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -13
- package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -12
- package/src/duckdb/src/parser/expression/default_expression.cpp +2 -9
- package/src/duckdb/src/parser/expression/function_expression.cpp +2 -32
- package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -14
- package/src/duckdb/src/parser/expression/operator_expression.cpp +2 -13
- package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -13
- package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +2 -12
- package/src/duckdb/src/parser/expression/star_expression.cpp +2 -43
- package/src/duckdb/src/parser/expression/subquery_expression.cpp +2 -28
- package/src/duckdb/src/parser/expression/window_expression.cpp +2 -53
- package/src/duckdb/src/parser/parsed_data/alter_info.cpp +0 -35
- package/src/duckdb/src/parser/parsed_data/alter_scalar_function_info.cpp +0 -18
- package/src/duckdb/src/parser/parsed_data/alter_table_function_info.cpp +0 -13
- package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +1 -189
- package/src/duckdb/src/parser/parsed_data/attach_info.cpp +0 -29
- package/src/duckdb/src/parser/parsed_data/create_collation_info.cpp +0 -4
- package/src/duckdb/src/parser/parsed_data/create_copy_function_info.cpp +0 -4
- package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +0 -48
- package/src/duckdb/src/parser/parsed_data/create_info.cpp +0 -47
- package/src/duckdb/src/parser/parsed_data/create_macro_info.cpp +1 -28
- package/src/duckdb/src/parser/parsed_data/create_sequence_info.cpp +0 -31
- package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +0 -23
- package/src/duckdb/src/parser/parsed_data/create_type_info.cpp +0 -22
- package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +0 -23
- package/src/duckdb/src/parser/parsed_data/detach_info.cpp +0 -19
- package/src/duckdb/src/parser/parsed_data/drop_info.cpp +0 -26
- package/src/duckdb/src/parser/parsed_data/sample_options.cpp +2 -25
- package/src/duckdb/src/parser/parsed_data/transaction_info.cpp +0 -16
- package/src/duckdb/src/parser/parsed_data/vacuum_info.cpp +0 -20
- package/src/duckdb/src/parser/parsed_expression.cpp +2 -79
- package/src/duckdb/src/parser/query_node/cte_node.cpp +2 -19
- package/src/duckdb/src/parser/query_node/recursive_cte_node.cpp +2 -21
- package/src/duckdb/src/parser/query_node/select_node.cpp +2 -47
- package/src/duckdb/src/parser/query_node/set_operation_node.cpp +2 -17
- package/src/duckdb/src/parser/query_node.cpp +2 -62
- package/src/duckdb/src/parser/result_modifier.cpp +2 -96
- package/src/duckdb/src/parser/statement/select_statement.cpp +2 -13
- package/src/duckdb/src/parser/tableref/basetableref.cpp +2 -21
- package/src/duckdb/src/parser/tableref/emptytableref.cpp +0 -9
- package/src/duckdb/src/parser/tableref/expressionlistref.cpp +2 -28
- package/src/duckdb/src/parser/tableref/joinref.cpp +2 -23
- package/src/duckdb/src/parser/tableref/pivotref.cpp +0 -61
- package/src/duckdb/src/parser/tableref/subqueryref.cpp +2 -15
- package/src/duckdb/src/parser/tableref/table_function.cpp +2 -17
- package/src/duckdb/src/parser/tableref.cpp +2 -52
- package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +1 -4
- package/src/duckdb/src/planner/bound_result_modifier.cpp +0 -33
- package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +6 -30
- package/src/duckdb/src/planner/expression/bound_between_expression.cpp +0 -19
- package/src/duckdb/src/planner/expression/bound_case_expression.cpp +0 -36
- package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +0 -15
- package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +0 -20
- package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +0 -13
- package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +0 -13
- package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +0 -11
- package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -5
- package/src/duckdb/src/planner/expression/bound_function_expression.cpp +8 -28
- package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +0 -4
- package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +0 -23
- package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +0 -16
- package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +0 -18
- package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +0 -16
- package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +0 -4
- package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +0 -15
- package/src/duckdb/src/planner/expression/bound_window_expression.cpp +7 -60
- package/src/duckdb/src/planner/expression.cpp +0 -74
- package/src/duckdb/src/planner/filter/conjunction_filter.cpp +0 -21
- package/src/duckdb/src/planner/filter/constant_filter.cpp +0 -12
- package/src/duckdb/src/planner/filter/null_filter.cpp +0 -14
- package/src/duckdb/src/planner/joinside.cpp +0 -24
- package/src/duckdb/src/planner/logical_operator.cpp +15 -215
- package/src/duckdb/src/planner/operator/logical_aggregate.cpp +0 -46
- package/src/duckdb/src/planner/operator/logical_any_join.cpp +0 -14
- package/src/duckdb/src/planner/operator/logical_column_data_get.cpp +0 -23
- package/src/duckdb/src/planner/operator/logical_comparison_join.cpp +0 -23
- package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +2 -56
- package/src/duckdb/src/planner/operator/logical_create.cpp +0 -12
- package/src/duckdb/src/planner/operator/logical_create_index.cpp +0 -25
- package/src/duckdb/src/planner/operator/logical_create_table.cpp +0 -10
- package/src/duckdb/src/planner/operator/logical_cross_product.cpp +0 -9
- package/src/duckdb/src/planner/operator/logical_cteref.cpp +0 -18
- package/src/duckdb/src/planner/operator/logical_delete.cpp +0 -22
- package/src/duckdb/src/planner/operator/logical_delim_get.cpp +0 -12
- package/src/duckdb/src/planner/operator/logical_dependent_join.cpp +0 -4
- package/src/duckdb/src/planner/operator/logical_distinct.cpp +0 -16
- package/src/duckdb/src/planner/operator/logical_dummy_scan.cpp +0 -10
- package/src/duckdb/src/planner/operator/logical_empty_result.cpp +0 -15
- package/src/duckdb/src/planner/operator/logical_expression_get.cpp +0 -24
- package/src/duckdb/src/planner/operator/logical_extension_operator.cpp +6 -19
- package/src/duckdb/src/planner/operator/logical_filter.cpp +0 -15
- package/src/duckdb/src/planner/operator/logical_get.cpp +12 -97
- package/src/duckdb/src/planner/operator/logical_insert.cpp +0 -77
- package/src/duckdb/src/planner/operator/logical_join.cpp +0 -17
- package/src/duckdb/src/planner/operator/logical_limit.cpp +0 -16
- package/src/duckdb/src/planner/operator/logical_limit_percent.cpp +0 -16
- package/src/duckdb/src/planner/operator/logical_materialized_cte.cpp +0 -13
- package/src/duckdb/src/planner/operator/logical_order.cpp +0 -15
- package/src/duckdb/src/planner/operator/logical_pivot.cpp +0 -20
- package/src/duckdb/src/planner/operator/logical_positional_join.cpp +0 -10
- package/src/duckdb/src/planner/operator/logical_pragma.cpp +0 -8
- package/src/duckdb/src/planner/operator/logical_prepare.cpp +0 -8
- package/src/duckdb/src/planner/operator/logical_projection.cpp +0 -12
- package/src/duckdb/src/planner/operator/logical_recursive_cte.cpp +0 -15
- package/src/duckdb/src/planner/operator/logical_reset.cpp +0 -12
- package/src/duckdb/src/planner/operator/logical_sample.cpp +0 -11
- package/src/duckdb/src/planner/operator/logical_set.cpp +0 -14
- package/src/duckdb/src/planner/operator/logical_set_operation.cpp +0 -13
- package/src/duckdb/src/planner/operator/logical_simple.cpp +0 -60
- package/src/duckdb/src/planner/operator/logical_top_n.cpp +0 -14
- package/src/duckdb/src/planner/operator/logical_unnest.cpp +0 -14
- package/src/duckdb/src/planner/operator/logical_update.cpp +0 -28
- package/src/duckdb/src/planner/operator/logical_window.cpp +0 -13
- package/src/duckdb/src/planner/planner.cpp +13 -22
- package/src/duckdb/src/planner/table_filter.cpp +0 -59
- package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +7 -17
- package/src/duckdb/src/storage/checkpoint/table_data_reader.cpp +7 -4
- package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +24 -22
- package/src/duckdb/src/storage/checkpoint_manager.cpp +203 -180
- package/src/duckdb/src/storage/data_table.cpp +2 -2
- package/src/duckdb/src/storage/metadata/metadata_manager.cpp +11 -9
- package/src/duckdb/src/storage/partial_block_manager.cpp +42 -15
- package/src/duckdb/src/storage/serialization/serialize_constraint.cpp +20 -20
- package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +46 -42
- package/src/duckdb/src/storage/serialization/serialize_expression.cpp +63 -63
- package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +167 -165
- package/src/duckdb/src/storage/serialization/serialize_macro_function.cpp +12 -12
- package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +54 -54
- package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +88 -88
- package/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp +72 -72
- package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +20 -20
- package/src/duckdb/src/storage/serialization/serialize_result_modifier.cpp +22 -22
- package/src/duckdb/src/storage/serialization/serialize_statement.cpp +4 -4
- package/src/duckdb/src/storage/serialization/serialize_storage.cpp +41 -6
- package/src/duckdb/src/storage/serialization/serialize_table_filter.cpp +24 -24
- package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +32 -32
- package/src/duckdb/src/storage/serialization/serialize_types.cpp +29 -29
- package/src/duckdb/src/storage/single_file_block_manager.cpp +17 -22
- package/src/duckdb/src/storage/statistics/base_statistics.cpp +31 -85
- package/src/duckdb/src/storage/statistics/column_statistics.cpp +6 -19
- package/src/duckdb/src/storage/statistics/distinct_statistics.cpp +0 -26
- package/src/duckdb/src/storage/statistics/list_stats.cpp +6 -22
- package/src/duckdb/src/storage/statistics/numeric_stats.cpp +20 -135
- package/src/duckdb/src/storage/statistics/string_stats.cpp +5 -28
- package/src/duckdb/src/storage/statistics/struct_stats.cpp +8 -30
- package/src/duckdb/src/storage/storage_info.cpp +1 -1
- package/src/duckdb/src/storage/table/chunk_info.cpp +9 -88
- package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +28 -34
- package/src/duckdb/src/storage/table/column_data.cpp +20 -25
- package/src/duckdb/src/storage/table/list_column_data.cpp +16 -9
- package/src/duckdb/src/storage/table/row_group.cpp +16 -92
- package/src/duckdb/src/storage/table/row_group_collection.cpp +5 -1
- package/src/duckdb/src/storage/table/standard_column_data.cpp +10 -7
- package/src/duckdb/src/storage/table/struct_column_data.cpp +17 -11
- package/src/duckdb/src/storage/table/table_statistics.cpp +13 -22
- package/src/duckdb/src/storage/wal_replay.cpp +108 -106
- package/src/duckdb/src/storage/write_ahead_log.cpp +135 -64
- package/src/duckdb/src/transaction/commit_state.cpp +22 -8
- package/src/duckdb/src/verification/deserialized_statement_verifier.cpp +11 -6
- package/src/duckdb/src/verification/statement_verifier.cpp +0 -5
- package/src/duckdb/third_party/parquet/parquet_types.h +1 -1
- package/src/duckdb/ub_src_common.cpp +0 -4
- package/src/duckdb/ub_src_common_serializer.cpp +2 -4
- package/src/duckdb/ub_src_planner.cpp +0 -2
- package/src/duckdb/ub_src_planner_expression.cpp +0 -2
- package/src/duckdb/ub_src_planner_operator.cpp +0 -8
- package/src/duckdb_node.cpp +6 -12
- package/src/duckdb_node.hpp +23 -13
- package/src/statement.cpp +15 -16
- package/test/database_fail.test.ts +20 -0
- package/test/worker.js +7 -0
- package/src/duckdb/src/common/field_writer.cpp +0 -97
- package/src/duckdb/src/common/serializer/buffered_deserializer.cpp +0 -27
- package/src/duckdb/src/common/serializer/buffered_serializer.cpp +0 -36
- package/src/duckdb/src/common/serializer.cpp +0 -24
- package/src/duckdb/src/include/duckdb/common/field_writer.hpp +0 -379
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_deserializer.hpp +0 -41
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_serializer.hpp +0 -50
- package/src/duckdb/src/include/duckdb/common/serializer.hpp +0 -151
- package/src/duckdb/src/include/duckdb/planner/plan_serialization.hpp +0 -44
- package/src/duckdb/src/include/duckdb/verification/deserialized_statement_verifier_v2.hpp +0 -32
- package/src/duckdb/src/planner/expression/bound_default_expression.cpp +0 -16
- package/src/duckdb/src/planner/operator/logical_execute.cpp +0 -12
- package/src/duckdb/src/planner/operator/logical_explain.cpp +0 -22
- package/src/duckdb/src/planner/operator/logical_export.cpp +0 -13
- package/src/duckdb/src/planner/operator/logical_show.cpp +0 -21
- package/src/duckdb/src/planner/parsed_data/bound_create_table_info.cpp +0 -22
- package/src/duckdb/src/planner/plan_serialization.cpp +0 -20
- package/src/duckdb/src/verification/deserialized_statement_verifier_v2.cpp +0 -34
- package/src/duckdb/ub_src_planner_parsed_data.cpp +0 -2
@@ -1,8 +1,7 @@
|
|
1
1
|
#include "duckdb/storage/table/chunk_info.hpp"
|
2
2
|
#include "duckdb/transaction/transaction.hpp"
|
3
|
-
#include "duckdb/common/serializer.hpp"
|
4
|
-
#include "duckdb/common/serializer/
|
5
|
-
#include "duckdb/common/serializer/format_deserializer.hpp"
|
3
|
+
#include "duckdb/common/serializer/serializer.hpp"
|
4
|
+
#include "duckdb/common/serializer/deserializer.hpp"
|
6
5
|
|
7
6
|
namespace duckdb {
|
8
7
|
|
@@ -30,29 +29,15 @@ static bool UseVersion(TransactionData transaction, transaction_t id) {
|
|
30
29
|
return TransactionVersionOperator::UseInsertedVersion(transaction.start_time, transaction.transaction_id, id);
|
31
30
|
}
|
32
31
|
|
33
|
-
unique_ptr<ChunkInfo> ChunkInfo::Deserialize(Deserializer &
|
34
|
-
auto type = source.Read<ChunkInfoType>();
|
35
|
-
switch (type) {
|
36
|
-
case ChunkInfoType::EMPTY_INFO:
|
37
|
-
return nullptr;
|
38
|
-
case ChunkInfoType::CONSTANT_INFO:
|
39
|
-
return ChunkConstantInfo::Deserialize(source);
|
40
|
-
case ChunkInfoType::VECTOR_INFO:
|
41
|
-
return ChunkVectorInfo::Deserialize(source);
|
42
|
-
default:
|
43
|
-
throw SerializationException("Could not deserialize Chunk Info Type: unrecognized type");
|
44
|
-
}
|
45
|
-
}
|
46
|
-
|
47
|
-
unique_ptr<ChunkInfo> ChunkInfo::FormatDeserialize(FormatDeserializer &deserializer) {
|
32
|
+
unique_ptr<ChunkInfo> ChunkInfo::Deserialize(Deserializer &deserializer) {
|
48
33
|
auto type = deserializer.ReadProperty<ChunkInfoType>(100, "type");
|
49
34
|
switch (type) {
|
50
35
|
case ChunkInfoType::EMPTY_INFO:
|
51
36
|
return nullptr;
|
52
37
|
case ChunkInfoType::CONSTANT_INFO:
|
53
|
-
return ChunkConstantInfo::
|
38
|
+
return ChunkConstantInfo::Deserialize(deserializer);
|
54
39
|
case ChunkInfoType::VECTOR_INFO:
|
55
|
-
return ChunkVectorInfo::
|
40
|
+
return ChunkVectorInfo::Deserialize(deserializer);
|
56
41
|
default:
|
57
42
|
throw SerializationException("Could not deserialize Chunk Info Type: unrecognized type");
|
58
43
|
}
|
@@ -94,31 +79,11 @@ void ChunkConstantInfo::CommitAppend(transaction_t commit_id, idx_t start, idx_t
|
|
94
79
|
insert_id = commit_id;
|
95
80
|
}
|
96
81
|
|
97
|
-
void ChunkConstantInfo::Serialize(Serializer &serializer) {
|
98
|
-
// we only need to write this node if any tuple deletions have been committed
|
99
|
-
bool is_deleted = insert_id >= TRANSACTION_ID_START || delete_id < TRANSACTION_ID_START;
|
100
|
-
if (!is_deleted) {
|
101
|
-
serializer.Write<ChunkInfoType>(ChunkInfoType::EMPTY_INFO);
|
102
|
-
return;
|
103
|
-
}
|
104
|
-
serializer.Write<ChunkInfoType>(type);
|
105
|
-
serializer.Write<idx_t>(start);
|
106
|
-
}
|
107
|
-
|
108
82
|
idx_t ChunkConstantInfo::GetCommittedDeletedCount(idx_t max_count) {
|
109
83
|
return delete_id < TRANSACTION_ID_START ? max_count : 0;
|
110
84
|
}
|
111
85
|
|
112
|
-
|
113
|
-
auto start = source.Read<idx_t>();
|
114
|
-
|
115
|
-
auto info = make_uniq<ChunkConstantInfo>(start);
|
116
|
-
info->insert_id = 0;
|
117
|
-
info->delete_id = 0;
|
118
|
-
return std::move(info);
|
119
|
-
}
|
120
|
-
|
121
|
-
void ChunkConstantInfo::FormatSerialize(FormatSerializer &serializer) const {
|
86
|
+
void ChunkConstantInfo::Serialize(Serializer &serializer) const {
|
122
87
|
bool is_deleted = insert_id >= TRANSACTION_ID_START || delete_id < TRANSACTION_ID_START;
|
123
88
|
if (!is_deleted) {
|
124
89
|
serializer.WriteProperty(100, "type", ChunkInfoType::EMPTY_INFO);
|
@@ -128,7 +93,7 @@ void ChunkConstantInfo::FormatSerialize(FormatSerializer &serializer) const {
|
|
128
93
|
serializer.WriteProperty(200, "start", start);
|
129
94
|
}
|
130
95
|
|
131
|
-
unique_ptr<ChunkInfo> ChunkConstantInfo::
|
96
|
+
unique_ptr<ChunkInfo> ChunkConstantInfo::Deserialize(Deserializer &deserializer) {
|
132
97
|
auto start = deserializer.ReadProperty<idx_t>(200, "start");
|
133
98
|
auto info = make_uniq<ChunkConstantInfo>(start);
|
134
99
|
info->insert_id = 0;
|
@@ -253,35 +218,6 @@ void ChunkVectorInfo::CommitAppend(transaction_t commit_id, idx_t start, idx_t e
|
|
253
218
|
}
|
254
219
|
}
|
255
220
|
|
256
|
-
void ChunkVectorInfo::Serialize(Serializer &serializer) {
|
257
|
-
SelectionVector sel(STANDARD_VECTOR_SIZE);
|
258
|
-
transaction_t start_time = TRANSACTION_ID_START - 1;
|
259
|
-
transaction_t transaction_id = DConstants::INVALID_INDEX;
|
260
|
-
idx_t count = GetSelVector(start_time, transaction_id, sel, STANDARD_VECTOR_SIZE);
|
261
|
-
if (count == STANDARD_VECTOR_SIZE) {
|
262
|
-
// nothing is deleted: skip writing anything
|
263
|
-
serializer.Write<ChunkInfoType>(ChunkInfoType::EMPTY_INFO);
|
264
|
-
return;
|
265
|
-
}
|
266
|
-
if (count == 0) {
|
267
|
-
// everything is deleted: write a constant vector
|
268
|
-
serializer.Write<ChunkInfoType>(ChunkInfoType::CONSTANT_INFO);
|
269
|
-
serializer.Write<idx_t>(start);
|
270
|
-
return;
|
271
|
-
}
|
272
|
-
// write a boolean vector
|
273
|
-
serializer.Write<ChunkInfoType>(ChunkInfoType::VECTOR_INFO);
|
274
|
-
serializer.Write<idx_t>(start);
|
275
|
-
bool deleted_tuples[STANDARD_VECTOR_SIZE];
|
276
|
-
for (idx_t i = 0; i < STANDARD_VECTOR_SIZE; i++) {
|
277
|
-
deleted_tuples[i] = true;
|
278
|
-
}
|
279
|
-
for (idx_t i = 0; i < count; i++) {
|
280
|
-
deleted_tuples[sel.get_index(i)] = false;
|
281
|
-
}
|
282
|
-
serializer.WriteData(data_ptr_cast(deleted_tuples), sizeof(bool) * STANDARD_VECTOR_SIZE);
|
283
|
-
}
|
284
|
-
|
285
221
|
idx_t ChunkVectorInfo::GetCommittedDeletedCount(idx_t max_count) {
|
286
222
|
if (!any_deleted) {
|
287
223
|
return 0;
|
@@ -295,22 +231,7 @@ idx_t ChunkVectorInfo::GetCommittedDeletedCount(idx_t max_count) {
|
|
295
231
|
return delete_count;
|
296
232
|
}
|
297
233
|
|
298
|
-
|
299
|
-
auto start = source.Read<idx_t>();
|
300
|
-
|
301
|
-
auto result = make_uniq<ChunkVectorInfo>(start);
|
302
|
-
result->any_deleted = true;
|
303
|
-
bool deleted_tuples[STANDARD_VECTOR_SIZE];
|
304
|
-
source.ReadData(data_ptr_cast(deleted_tuples), sizeof(bool) * STANDARD_VECTOR_SIZE);
|
305
|
-
for (idx_t i = 0; i < STANDARD_VECTOR_SIZE; i++) {
|
306
|
-
if (deleted_tuples[i]) {
|
307
|
-
result->deleted[i] = 0;
|
308
|
-
}
|
309
|
-
}
|
310
|
-
return std::move(result);
|
311
|
-
}
|
312
|
-
|
313
|
-
void ChunkVectorInfo::FormatSerialize(FormatSerializer &serializer) const {
|
234
|
+
void ChunkVectorInfo::Serialize(Serializer &serializer) const {
|
314
235
|
SelectionVector sel(STANDARD_VECTOR_SIZE);
|
315
236
|
transaction_t start_time = TRANSACTION_ID_START - 1;
|
316
237
|
transaction_t transaction_id = DConstants::INVALID_INDEX;
|
@@ -339,7 +260,7 @@ void ChunkVectorInfo::FormatSerialize(FormatSerializer &serializer) const {
|
|
339
260
|
serializer.WriteProperty(201, "deleted_tuples", data_ptr_cast(deleted_tuples), sizeof(bool) * STANDARD_VECTOR_SIZE);
|
340
261
|
}
|
341
262
|
|
342
|
-
unique_ptr<ChunkInfo> ChunkVectorInfo::
|
263
|
+
unique_ptr<ChunkInfo> ChunkVectorInfo::Deserialize(Deserializer &deserializer) {
|
343
264
|
auto start = deserializer.ReadProperty<idx_t>(200, "start");
|
344
265
|
|
345
266
|
auto result = make_uniq<ChunkVectorInfo>(start);
|
@@ -22,9 +22,9 @@ unique_ptr<BaseStatistics> ColumnCheckpointState::GetStatistics() {
|
|
22
22
|
return std::move(global_stats);
|
23
23
|
}
|
24
24
|
|
25
|
-
PartialBlockForCheckpoint::PartialBlockForCheckpoint(ColumnData &data, ColumnSegment &segment,
|
26
|
-
BlockManager &block_manager
|
27
|
-
: PartialBlock(state
|
25
|
+
PartialBlockForCheckpoint::PartialBlockForCheckpoint(ColumnData &data, ColumnSegment &segment, PartialBlockState state,
|
26
|
+
BlockManager &block_manager)
|
27
|
+
: PartialBlock(state, block_manager, segment.block) {
|
28
28
|
AddSegmentToTail(data, segment, 0);
|
29
29
|
}
|
30
30
|
|
@@ -37,24 +37,15 @@ bool PartialBlockForCheckpoint::IsFlushed() {
|
|
37
37
|
return segments.empty();
|
38
38
|
}
|
39
39
|
|
40
|
-
void PartialBlockForCheckpoint::
|
41
|
-
uninitialized_regions.push_back({start, end});
|
42
|
-
}
|
40
|
+
void PartialBlockForCheckpoint::Flush(const idx_t free_space_left) {
|
43
41
|
|
44
|
-
void PartialBlockForCheckpoint::Flush(idx_t free_space_left) {
|
45
42
|
if (IsFlushed()) {
|
46
43
|
throw InternalException("Flush called on partial block that was already flushed");
|
47
44
|
}
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
for (auto &uninitialized : uninitialized_regions) {
|
53
|
-
memset(handle.Ptr() + uninitialized.start, 0, uninitialized.end - uninitialized.start);
|
54
|
-
}
|
55
|
-
// memset any free space at the end of the block to 0 prior to writing to disk
|
56
|
-
memset(handle.Ptr() + Storage::BLOCK_SIZE - free_space_left, 0, free_space_left);
|
57
|
-
}
|
45
|
+
|
46
|
+
// zero-initialize unused memory
|
47
|
+
FlushInternal(free_space_left);
|
48
|
+
|
58
49
|
// At this point, we've already copied all data from tail_segments
|
59
50
|
// into the page owned by first_segment. We flush all segment data to
|
60
51
|
// disk with the following call.
|
@@ -63,6 +54,7 @@ void PartialBlockForCheckpoint::Flush(idx_t free_space_left) {
|
|
63
54
|
if (fetch_new_block) {
|
64
55
|
state.block_id = block_manager.GetFreeBlockId();
|
65
56
|
}
|
57
|
+
|
66
58
|
for (idx_t i = 0; i < segments.size(); i++) {
|
67
59
|
auto &segment = segments[i];
|
68
60
|
segment.data.IncrementVersion();
|
@@ -71,23 +63,18 @@ void PartialBlockForCheckpoint::Flush(idx_t free_space_left) {
|
|
71
63
|
D_ASSERT(segment.offset_in_block == 0);
|
72
64
|
segment.segment.ConvertToPersistent(&block_manager, state.block_id);
|
73
65
|
// update the block after it has been converted to a persistent segment
|
74
|
-
|
66
|
+
block_handle = segment.segment.block;
|
75
67
|
} else {
|
76
68
|
// subsequent segments are MARKED as persistent - they don't need to be rewritten
|
77
|
-
segment.segment.MarkAsPersistent(
|
69
|
+
segment.segment.MarkAsPersistent(block_handle, segment.offset_in_block);
|
78
70
|
if (fetch_new_block) {
|
79
71
|
// if we fetched a new block we need to increase the reference count to the block
|
80
72
|
block_manager.IncreaseBlockReferenceCount(state.block_id);
|
81
73
|
}
|
82
74
|
}
|
83
75
|
}
|
84
|
-
Clear();
|
85
|
-
}
|
86
76
|
|
87
|
-
|
88
|
-
uninitialized_regions.clear();
|
89
|
-
block.reset();
|
90
|
-
segments.clear();
|
77
|
+
Clear();
|
91
78
|
}
|
92
79
|
|
93
80
|
void PartialBlockForCheckpoint::Merge(PartialBlock &other_p, idx_t offset, idx_t other_size) {
|
@@ -95,13 +82,13 @@ void PartialBlockForCheckpoint::Merge(PartialBlock &other_p, idx_t offset, idx_t
|
|
95
82
|
|
96
83
|
auto &buffer_manager = block_manager.buffer_manager;
|
97
84
|
// pin the source block
|
98
|
-
auto old_handle = buffer_manager.Pin(other.
|
85
|
+
auto old_handle = buffer_manager.Pin(other.block_handle);
|
99
86
|
// pin the target block
|
100
|
-
auto new_handle = buffer_manager.Pin(
|
87
|
+
auto new_handle = buffer_manager.Pin(block_handle);
|
101
88
|
// memcpy the contents of the old block to the new block
|
102
89
|
memcpy(new_handle.Ptr() + offset, old_handle.Ptr(), other_size);
|
103
90
|
|
104
|
-
// now copy over all
|
91
|
+
// now copy over all segments to the new block
|
105
92
|
// move over the uninitialized regions
|
106
93
|
for (auto ®ion : other.uninitialized_regions) {
|
107
94
|
region.start += offset;
|
@@ -113,6 +100,7 @@ void PartialBlockForCheckpoint::Merge(PartialBlock &other_p, idx_t offset, idx_t
|
|
113
100
|
for (auto &segment : other.segments) {
|
114
101
|
AddSegmentToTail(segment.data, segment.segment, segment.offset_in_block + offset);
|
115
102
|
}
|
103
|
+
|
116
104
|
other.Clear();
|
117
105
|
}
|
118
106
|
|
@@ -120,6 +108,12 @@ void PartialBlockForCheckpoint::AddSegmentToTail(ColumnData &data, ColumnSegment
|
|
120
108
|
segments.emplace_back(data, segment, offset_in_block);
|
121
109
|
}
|
122
110
|
|
111
|
+
void PartialBlockForCheckpoint::Clear() {
|
112
|
+
uninitialized_regions.clear();
|
113
|
+
block_handle.reset();
|
114
|
+
segments.clear();
|
115
|
+
}
|
116
|
+
|
123
117
|
void ColumnCheckpointState::FlushSegment(unique_ptr<ColumnSegment> segment, idx_t segment_size) {
|
124
118
|
D_ASSERT(segment_size <= Storage::BLOCK_SIZE);
|
125
119
|
auto tuple_count = segment->count.load();
|
@@ -140,7 +134,7 @@ void ColumnCheckpointState::FlushSegment(unique_ptr<ColumnSegment> segment, idx_
|
|
140
134
|
// non-constant block
|
141
135
|
PartialBlockAllocation allocation = partial_block_manager.GetBlockAllocation(segment_size);
|
142
136
|
block_id = allocation.state.block_id;
|
143
|
-
offset_in_block = allocation.state.
|
137
|
+
offset_in_block = allocation.state.offset;
|
144
138
|
|
145
139
|
if (allocation.partial_block) {
|
146
140
|
// Use an existing block.
|
@@ -149,7 +143,7 @@ void ColumnCheckpointState::FlushSegment(unique_ptr<ColumnSegment> segment, idx_
|
|
149
143
|
// pin the source block
|
150
144
|
auto old_handle = buffer_manager.Pin(segment->block);
|
151
145
|
// pin the target block
|
152
|
-
auto new_handle = buffer_manager.Pin(pstate.
|
146
|
+
auto new_handle = buffer_manager.Pin(pstate.block_handle);
|
153
147
|
// memcpy the contents of the old block to the new block
|
154
148
|
memcpy(new_handle.Ptr() + offset_in_block, old_handle.Ptr(), segment_size);
|
155
149
|
pstate.AddSegmentToTail(column_data, *segment, offset_in_block);
|
@@ -162,8 +156,8 @@ void ColumnCheckpointState::FlushSegment(unique_ptr<ColumnSegment> segment, idx_
|
|
162
156
|
segment->Resize(Storage::BLOCK_SIZE);
|
163
157
|
}
|
164
158
|
D_ASSERT(offset_in_block == 0);
|
165
|
-
allocation.partial_block = make_uniq<PartialBlockForCheckpoint>(
|
166
|
-
|
159
|
+
allocation.partial_block = make_uniq<PartialBlockForCheckpoint>(column_data, *segment, allocation.state,
|
160
|
+
*allocation.block_manager);
|
167
161
|
}
|
168
162
|
// Writer will decide whether to reuse this block.
|
169
163
|
partial_block_manager.RegisterPartialBlock(std::move(allocation));
|
@@ -193,8 +187,8 @@ void ColumnCheckpointState::FlushSegment(unique_ptr<ColumnSegment> segment, idx_
|
|
193
187
|
data_pointers.push_back(std::move(data_pointer));
|
194
188
|
}
|
195
189
|
|
196
|
-
void ColumnCheckpointState::WriteDataPointers(RowGroupWriter &writer) {
|
197
|
-
writer.WriteColumnDataPointers(*this);
|
190
|
+
void ColumnCheckpointState::WriteDataPointers(RowGroupWriter &writer, Serializer &serializer) {
|
191
|
+
writer.WriteColumnDataPointers(*this, serializer);
|
198
192
|
}
|
199
193
|
|
200
194
|
} // namespace duckdb
|
@@ -6,7 +6,6 @@
|
|
6
6
|
#include "duckdb/storage/data_pointer.hpp"
|
7
7
|
#include "duckdb/storage/data_table.hpp"
|
8
8
|
#include "duckdb/storage/statistics/distinct_statistics.hpp"
|
9
|
-
#include "duckdb/storage/storage_manager.hpp"
|
10
9
|
#include "duckdb/storage/table/column_data_checkpointer.hpp"
|
11
10
|
#include "duckdb/storage/table/list_column_data.hpp"
|
12
11
|
#include "duckdb/storage/table/standard_column_data.hpp"
|
@@ -16,7 +15,8 @@
|
|
16
15
|
#include "duckdb/storage/table_storage_info.hpp"
|
17
16
|
#include "duckdb/storage/table/append_state.hpp"
|
18
17
|
#include "duckdb/storage/table/scan_state.hpp"
|
19
|
-
#include "duckdb/
|
18
|
+
#include "duckdb/common/serializer/read_stream.hpp"
|
19
|
+
#include "duckdb/common/serializer/binary_deserializer.hpp"
|
20
20
|
|
21
21
|
namespace duckdb {
|
22
22
|
|
@@ -446,45 +446,40 @@ unique_ptr<ColumnCheckpointState> ColumnData::Checkpoint(RowGroup &row_group,
|
|
446
446
|
return checkpoint_state;
|
447
447
|
}
|
448
448
|
|
449
|
-
void ColumnData::DeserializeColumn(Deserializer &
|
449
|
+
void ColumnData::DeserializeColumn(Deserializer &deserializer) {
|
450
450
|
// load the data pointers for the column
|
451
451
|
this->count = 0;
|
452
|
-
|
453
|
-
for (idx_t data_ptr = 0; data_ptr < data_pointer_count; data_ptr++) {
|
454
|
-
// read the data pointer
|
455
|
-
auto row_start = source.Read<idx_t>();
|
456
|
-
auto tuple_count = source.Read<idx_t>();
|
457
|
-
auto block_pointer_block_id = source.Read<block_id_t>();
|
458
|
-
auto block_pointer_offset = source.Read<uint32_t>();
|
459
|
-
auto compression_type = source.Read<CompressionType>();
|
460
|
-
auto segment_stats = BaseStatistics::Deserialize(source, type);
|
461
|
-
if (stats) {
|
462
|
-
stats->statistics.Merge(segment_stats);
|
463
|
-
}
|
452
|
+
deserializer.Set<LogicalType &>(type);
|
464
453
|
|
465
|
-
|
466
|
-
data_pointer
|
467
|
-
data_pointer.tuple_count = tuple_count;
|
468
|
-
data_pointer.block_pointer.block_id = block_pointer_block_id;
|
469
|
-
data_pointer.block_pointer.offset = block_pointer_offset;
|
470
|
-
data_pointer.compression_type = compression_type;
|
454
|
+
deserializer.ReadList(100, "data_pointers", [&](Deserializer::List &list, idx_t i) {
|
455
|
+
auto data_pointer = list.ReadElement<DataPointer>();
|
471
456
|
|
472
|
-
|
457
|
+
// Update the count and statistics
|
458
|
+
this->count += data_pointer.tuple_count;
|
459
|
+
if (stats) {
|
460
|
+
stats->statistics.Merge(data_pointer.statistics);
|
461
|
+
}
|
473
462
|
|
474
463
|
// create a persistent segment
|
475
464
|
auto segment = ColumnSegment::CreatePersistentSegment(
|
476
465
|
GetDatabase(), block_manager, data_pointer.block_pointer.block_id, data_pointer.block_pointer.offset, type,
|
477
466
|
data_pointer.row_start, data_pointer.tuple_count, data_pointer.compression_type,
|
478
467
|
std::move(data_pointer.statistics));
|
468
|
+
|
479
469
|
data.AppendSegment(std::move(segment));
|
480
|
-
}
|
470
|
+
});
|
471
|
+
|
472
|
+
deserializer.Unset<LogicalType>();
|
481
473
|
}
|
482
474
|
|
483
475
|
shared_ptr<ColumnData> ColumnData::Deserialize(BlockManager &block_manager, DataTableInfo &info, idx_t column_index,
|
484
|
-
idx_t start_row,
|
476
|
+
idx_t start_row, ReadStream &source, const LogicalType &type,
|
485
477
|
optional_ptr<ColumnData> parent) {
|
486
478
|
auto entry = ColumnData::CreateColumn(block_manager, info, column_index, start_row, type, parent);
|
487
|
-
|
479
|
+
BinaryDeserializer deserializer(source);
|
480
|
+
deserializer.Begin();
|
481
|
+
entry->DeserializeColumn(deserializer);
|
482
|
+
deserializer.End();
|
488
483
|
return entry;
|
489
484
|
}
|
490
485
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
#include "duckdb/storage/table/list_column_data.hpp"
|
2
2
|
#include "duckdb/storage/statistics/list_stats.hpp"
|
3
|
-
#include "duckdb/
|
3
|
+
#include "duckdb/common/serializer/serializer.hpp"
|
4
|
+
#include "duckdb/common/serializer/deserializer.hpp"
|
4
5
|
#include "duckdb/storage/table/column_checkpoint_state.hpp"
|
5
6
|
#include "duckdb/storage/table/append_state.hpp"
|
6
7
|
#include "duckdb/storage/table/scan_state.hpp"
|
@@ -321,10 +322,12 @@ public:
|
|
321
322
|
return stats.ToUnique();
|
322
323
|
}
|
323
324
|
|
324
|
-
void WriteDataPointers(RowGroupWriter &writer) override {
|
325
|
-
ColumnCheckpointState::WriteDataPointers(writer);
|
326
|
-
|
327
|
-
|
325
|
+
void WriteDataPointers(RowGroupWriter &writer, Serializer &serializer) override {
|
326
|
+
ColumnCheckpointState::WriteDataPointers(writer, serializer);
|
327
|
+
serializer.WriteObject(101, "validity",
|
328
|
+
[&](Serializer &serializer) { validity_state->WriteDataPointers(writer, serializer); });
|
329
|
+
serializer.WriteObject(102, "child_column",
|
330
|
+
[&](Serializer &serializer) { child_state->WriteDataPointers(writer, serializer); });
|
328
331
|
}
|
329
332
|
};
|
330
333
|
|
@@ -346,10 +349,14 @@ unique_ptr<ColumnCheckpointState> ListColumnData::Checkpoint(RowGroup &row_group
|
|
346
349
|
return base_state;
|
347
350
|
}
|
348
351
|
|
349
|
-
void ListColumnData::DeserializeColumn(Deserializer &
|
350
|
-
ColumnData::DeserializeColumn(
|
351
|
-
|
352
|
-
|
352
|
+
void ListColumnData::DeserializeColumn(Deserializer &deserializer) {
|
353
|
+
ColumnData::DeserializeColumn(deserializer);
|
354
|
+
|
355
|
+
deserializer.ReadObject(101, "validity",
|
356
|
+
[&](Deserializer &deserializer) { validity.DeserializeColumn(deserializer); });
|
357
|
+
|
358
|
+
deserializer.ReadObject(102, "child_column",
|
359
|
+
[&](Deserializer &deserializer) { child_column->DeserializeColumn(deserializer); });
|
353
360
|
}
|
354
361
|
|
355
362
|
void ListColumnData::GetColumnSegmentInfo(duckdb::idx_t row_group_index, vector<duckdb::idx_t> col_path,
|
@@ -1,7 +1,6 @@
|
|
1
1
|
#include "duckdb/storage/table/row_group.hpp"
|
2
2
|
#include "duckdb/common/types/vector.hpp"
|
3
3
|
#include "duckdb/common/exception.hpp"
|
4
|
-
#include "duckdb/common/field_writer.hpp"
|
5
4
|
#include "duckdb/storage/table/column_data.hpp"
|
6
5
|
#include "duckdb/storage/table/column_checkpoint_state.hpp"
|
7
6
|
#include "duckdb/storage/table/update_segment.hpp"
|
@@ -17,8 +16,9 @@
|
|
17
16
|
#include "duckdb/transaction/duck_transaction.hpp"
|
18
17
|
#include "duckdb/storage/table/append_state.hpp"
|
19
18
|
#include "duckdb/storage/table/scan_state.hpp"
|
20
|
-
#include "duckdb/common/serializer/
|
21
|
-
#include "duckdb/common/serializer/
|
19
|
+
#include "duckdb/common/serializer/serializer.hpp"
|
20
|
+
#include "duckdb/common/serializer/deserializer.hpp"
|
21
|
+
#include "duckdb/common/serializer/binary_serializer.hpp"
|
22
22
|
|
23
23
|
namespace duckdb {
|
24
24
|
|
@@ -841,94 +841,17 @@ RowGroupPointer RowGroup::Checkpoint(RowGroupWriter &writer, TableStatistics &gl
|
|
841
841
|
//
|
842
842
|
// Just as above, the state can refer to many other states, so this
|
843
843
|
// can cascade recursively into more pointer writes.
|
844
|
-
|
844
|
+
BinarySerializer serializer(data_writer);
|
845
|
+
serializer.Begin();
|
846
|
+
state->WriteDataPointers(writer, serializer);
|
847
|
+
serializer.End();
|
845
848
|
}
|
846
849
|
row_group_pointer.versions = version_info;
|
847
850
|
Verify();
|
848
851
|
return row_group_pointer;
|
849
852
|
}
|
850
853
|
|
851
|
-
void RowGroup::
|
852
|
-
if (!versions) {
|
853
|
-
// no version information: write nothing
|
854
|
-
serializer.Write<idx_t>(0);
|
855
|
-
return;
|
856
|
-
}
|
857
|
-
// first count how many ChunkInfo's we need to deserialize
|
858
|
-
idx_t chunk_info_count = 0;
|
859
|
-
for (idx_t vector_idx = 0; vector_idx < RowGroup::ROW_GROUP_VECTOR_COUNT; vector_idx++) {
|
860
|
-
auto chunk_info = versions->info[vector_idx].get();
|
861
|
-
if (!chunk_info) {
|
862
|
-
continue;
|
863
|
-
}
|
864
|
-
chunk_info_count++;
|
865
|
-
}
|
866
|
-
// now serialize the actual version information
|
867
|
-
serializer.Write<idx_t>(chunk_info_count);
|
868
|
-
for (idx_t vector_idx = 0; vector_idx < RowGroup::ROW_GROUP_VECTOR_COUNT; vector_idx++) {
|
869
|
-
auto chunk_info = versions->info[vector_idx].get();
|
870
|
-
if (!chunk_info) {
|
871
|
-
continue;
|
872
|
-
}
|
873
|
-
serializer.Write<idx_t>(vector_idx);
|
874
|
-
chunk_info->Serialize(serializer);
|
875
|
-
}
|
876
|
-
}
|
877
|
-
|
878
|
-
shared_ptr<VersionNode> RowGroup::DeserializeDeletes(Deserializer &source) {
|
879
|
-
auto chunk_count = source.Read<idx_t>();
|
880
|
-
if (chunk_count == 0) {
|
881
|
-
// no deletes
|
882
|
-
return nullptr;
|
883
|
-
}
|
884
|
-
auto version_info = make_shared<VersionNode>();
|
885
|
-
for (idx_t i = 0; i < chunk_count; i++) {
|
886
|
-
idx_t vector_index = source.Read<idx_t>();
|
887
|
-
if (vector_index >= RowGroup::ROW_GROUP_VECTOR_COUNT) {
|
888
|
-
throw Exception("In DeserializeDeletes, vector_index is out of range for the row group. Corrupted file?");
|
889
|
-
}
|
890
|
-
version_info->info[vector_index] = ChunkInfo::Deserialize(source);
|
891
|
-
}
|
892
|
-
return version_info;
|
893
|
-
}
|
894
|
-
|
895
|
-
void RowGroup::Serialize(RowGroupPointer &pointer, Serializer &main_serializer) {
|
896
|
-
FieldWriter writer(main_serializer);
|
897
|
-
writer.WriteField<uint64_t>(pointer.row_start);
|
898
|
-
writer.WriteField<uint64_t>(pointer.tuple_count);
|
899
|
-
auto &serializer = writer.GetSerializer();
|
900
|
-
for (auto &data_pointer : pointer.data_pointers) {
|
901
|
-
serializer.Write<idx_t>(data_pointer.block_pointer);
|
902
|
-
serializer.Write<uint32_t>(data_pointer.offset);
|
903
|
-
}
|
904
|
-
CheckpointDeletes(pointer.versions.get(), serializer);
|
905
|
-
writer.Finalize();
|
906
|
-
}
|
907
|
-
|
908
|
-
RowGroupPointer RowGroup::Deserialize(Deserializer &main_source, const vector<LogicalType> &columns) {
|
909
|
-
RowGroupPointer result;
|
910
|
-
|
911
|
-
FieldReader reader(main_source);
|
912
|
-
result.row_start = reader.ReadRequired<uint64_t>();
|
913
|
-
result.tuple_count = reader.ReadRequired<uint64_t>();
|
914
|
-
|
915
|
-
auto physical_columns = columns.size();
|
916
|
-
result.data_pointers.reserve(physical_columns);
|
917
|
-
|
918
|
-
auto &source = reader.GetSource();
|
919
|
-
for (idx_t i = 0; i < physical_columns; i++) {
|
920
|
-
MetaBlockPointer pointer;
|
921
|
-
pointer.block_pointer = source.Read<idx_t>();
|
922
|
-
pointer.offset = source.Read<uint32_t>();
|
923
|
-
result.data_pointers.push_back(pointer);
|
924
|
-
}
|
925
|
-
result.versions = DeserializeDeletes(source);
|
926
|
-
|
927
|
-
reader.Finalize();
|
928
|
-
return result;
|
929
|
-
}
|
930
|
-
|
931
|
-
void RowGroup::FormatSerialize(RowGroupPointer &pointer, FormatSerializer &serializer) {
|
854
|
+
void RowGroup::Serialize(RowGroupPointer &pointer, Serializer &serializer) {
|
932
855
|
serializer.WriteProperty(100, "row_start", pointer.row_start);
|
933
856
|
serializer.WriteProperty(101, "tuple_count", pointer.tuple_count);
|
934
857
|
serializer.WriteProperty(102, "data_pointers", pointer.data_pointers);
|
@@ -954,17 +877,20 @@ void RowGroup::FormatSerialize(RowGroupPointer &pointer, FormatSerializer &seria
|
|
954
877
|
|
955
878
|
// now serialize the actual version information
|
956
879
|
serializer.WriteProperty(103, "versions_count", chunk_info_count);
|
957
|
-
|
880
|
+
if (chunk_info_count == 0) {
|
881
|
+
return;
|
882
|
+
}
|
883
|
+
serializer.WriteList(104, "versions", chunk_info_count, [&](Serializer::List &list, idx_t i) {
|
958
884
|
auto vector_idx = idx_map[i];
|
959
885
|
auto chunk_info = versions->info[vector_idx].get();
|
960
|
-
list.WriteObject([&](
|
886
|
+
list.WriteObject([&](Serializer &obj) {
|
961
887
|
obj.WriteProperty(100, "vector_index", vector_idx);
|
962
888
|
obj.WriteProperty(101, "chunk_info", const_cast<const ChunkInfo *>(chunk_info));
|
963
889
|
});
|
964
890
|
});
|
965
891
|
}
|
966
892
|
|
967
|
-
RowGroupPointer RowGroup::
|
893
|
+
RowGroupPointer RowGroup::Deserialize(Deserializer &deserializer) {
|
968
894
|
RowGroupPointer result;
|
969
895
|
result.row_start = deserializer.ReadProperty<uint64_t>(100, "row_start");
|
970
896
|
result.tuple_count = deserializer.ReadProperty<uint64_t>(101, "tuple_count");
|
@@ -973,13 +899,11 @@ RowGroupPointer RowGroup::FormatDeserialize(FormatDeserializer &deserializer) {
|
|
973
899
|
// Deserialize Deletes
|
974
900
|
auto chunk_count = deserializer.ReadProperty<idx_t>(103, "versions_count");
|
975
901
|
if (chunk_count == 0) {
|
976
|
-
// no deletes
|
977
902
|
return result;
|
978
903
|
}
|
979
|
-
|
980
904
|
auto version_info = make_shared<VersionNode>();
|
981
|
-
deserializer.ReadList(104, "versions", [&](
|
982
|
-
list.ReadObject([&](
|
905
|
+
deserializer.ReadList(104, "versions", [&](Deserializer::List &list, idx_t i) {
|
906
|
+
list.ReadObject([&](Deserializer &obj) {
|
983
907
|
auto vector_index = obj.ReadProperty<idx_t>(100, "vector_index");
|
984
908
|
if (vector_index >= RowGroup::ROW_GROUP_VECTOR_COUNT) {
|
985
909
|
throw Exception("In DeserializeDeletes, vector_index is out of range for the row group. Corrupted "
|
@@ -10,6 +10,7 @@
|
|
10
10
|
#include "duckdb/storage/table/append_state.hpp"
|
11
11
|
#include "duckdb/storage/table/scan_state.hpp"
|
12
12
|
#include "duckdb/storage/table_storage_info.hpp"
|
13
|
+
#include "duckdb/common/serializer/binary_deserializer.hpp"
|
13
14
|
|
14
15
|
namespace duckdb {
|
15
16
|
|
@@ -35,7 +36,10 @@ unique_ptr<RowGroup> RowGroupSegmentTree::LoadSegment() {
|
|
35
36
|
finished_loading = true;
|
36
37
|
return nullptr;
|
37
38
|
}
|
38
|
-
|
39
|
+
BinaryDeserializer deserializer(*reader);
|
40
|
+
deserializer.Begin();
|
41
|
+
auto row_group_pointer = RowGroup::Deserialize(deserializer);
|
42
|
+
deserializer.End();
|
39
43
|
current_row_group++;
|
40
44
|
return make_uniq<RowGroup>(collection, std::move(row_group_pointer));
|
41
45
|
}
|
@@ -4,8 +4,9 @@
|
|
4
4
|
#include "duckdb/storage/table/append_state.hpp"
|
5
5
|
#include "duckdb/storage/data_table.hpp"
|
6
6
|
#include "duckdb/planner/table_filter.hpp"
|
7
|
-
#include "duckdb/transaction/transaction.hpp"
|
8
7
|
#include "duckdb/storage/table/column_checkpoint_state.hpp"
|
8
|
+
#include "duckdb/common/serializer/serializer.hpp"
|
9
|
+
#include "duckdb/common/serializer/deserializer.hpp"
|
9
10
|
|
10
11
|
namespace duckdb {
|
11
12
|
|
@@ -173,9 +174,10 @@ public:
|
|
173
174
|
return std::move(global_stats);
|
174
175
|
}
|
175
176
|
|
176
|
-
void WriteDataPointers(RowGroupWriter &writer) override {
|
177
|
-
ColumnCheckpointState::WriteDataPointers(writer);
|
178
|
-
|
177
|
+
void WriteDataPointers(RowGroupWriter &writer, Serializer &serializer) override {
|
178
|
+
ColumnCheckpointState::WriteDataPointers(writer, serializer);
|
179
|
+
serializer.WriteObject(101, "validity",
|
180
|
+
[&](Serializer &serializer) { validity_state->WriteDataPointers(writer, serializer); });
|
179
181
|
}
|
180
182
|
};
|
181
183
|
|
@@ -202,9 +204,10 @@ void StandardColumnData::CheckpointScan(ColumnSegment &segment, ColumnScanState
|
|
202
204
|
validity.ScanCommittedRange(row_group_start, offset_in_row_group, count, scan_vector);
|
203
205
|
}
|
204
206
|
|
205
|
-
void StandardColumnData::DeserializeColumn(Deserializer &
|
206
|
-
ColumnData::DeserializeColumn(
|
207
|
-
|
207
|
+
void StandardColumnData::DeserializeColumn(Deserializer &deserializer) {
|
208
|
+
ColumnData::DeserializeColumn(deserializer);
|
209
|
+
deserializer.ReadObject(101, "validity",
|
210
|
+
[&](Deserializer &deserializer) { validity.DeserializeColumn(deserializer); });
|
208
211
|
}
|
209
212
|
|
210
213
|
void StandardColumnData::GetColumnSegmentInfo(duckdb::idx_t row_group_index, vector<duckdb::idx_t> col_path,
|