duckdb 0.8.2-dev4126.0 → 0.8.2-dev4203.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.cpp +20 -0
- 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 +3 -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/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/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.hpp +1 -0
- 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/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/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/extension_entries.hpp +1 -0
- package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +1 -0
- 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/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 +1 -1
- 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 +18 -0
- package/src/duckdb/src/main/extension/extension_install.cpp +5 -3
- package/src/duckdb/src/main/extension/extension_load.cpp +3 -3
- 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/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 +2 -2
- 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
@@ -13,8 +13,6 @@
|
|
13
13
|
|
14
14
|
namespace duckdb {
|
15
15
|
|
16
|
-
class FieldReader;
|
17
|
-
|
18
16
|
//! Extra Type Info Type
|
19
17
|
enum class ExtraTypeInfoType : uint8_t {
|
20
18
|
INVALID_TYPE_INFO = 0,
|
@@ -38,15 +36,9 @@ struct ExtraTypeInfo {
|
|
38
36
|
|
39
37
|
public:
|
40
38
|
bool Equals(ExtraTypeInfo *other_p) const;
|
41
|
-
//! Serializes a ExtraTypeInfo to a stand-alone binary blob
|
42
|
-
virtual void Serialize(FieldWriter &writer) const;
|
43
|
-
//! Serializes a ExtraTypeInfo to a stand-alone binary blob
|
44
|
-
static void Serialize(ExtraTypeInfo *info, FieldWriter &writer);
|
45
|
-
//! Deserializes a blob back into an ExtraTypeInfo
|
46
|
-
static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
|
47
39
|
|
48
|
-
virtual void
|
49
|
-
static shared_ptr<ExtraTypeInfo>
|
40
|
+
virtual void Serialize(Serializer &serializer) const;
|
41
|
+
static shared_ptr<ExtraTypeInfo> Deserialize(Deserializer &source);
|
50
42
|
|
51
43
|
template <class TARGET>
|
52
44
|
TARGET &Cast() {
|
@@ -70,11 +62,8 @@ struct DecimalTypeInfo : public ExtraTypeInfo {
|
|
70
62
|
uint8_t scale;
|
71
63
|
|
72
64
|
public:
|
73
|
-
void Serialize(
|
74
|
-
|
75
|
-
|
76
|
-
static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &source);
|
77
|
-
static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
|
65
|
+
void Serialize(Serializer &serializer) const override;
|
66
|
+
static shared_ptr<ExtraTypeInfo> Deserialize(Deserializer &source);
|
78
67
|
|
79
68
|
protected:
|
80
69
|
bool EqualsInternal(ExtraTypeInfo *other_p) const override;
|
@@ -89,11 +78,8 @@ struct StringTypeInfo : public ExtraTypeInfo {
|
|
89
78
|
string collation;
|
90
79
|
|
91
80
|
public:
|
92
|
-
void Serialize(
|
93
|
-
static shared_ptr<ExtraTypeInfo> Deserialize(
|
94
|
-
|
95
|
-
void FormatSerialize(FormatSerializer &serializer) const override;
|
96
|
-
static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &source);
|
81
|
+
void Serialize(Serializer &serializer) const override;
|
82
|
+
static shared_ptr<ExtraTypeInfo> Deserialize(Deserializer &source);
|
97
83
|
|
98
84
|
protected:
|
99
85
|
bool EqualsInternal(ExtraTypeInfo *other_p) const override;
|
@@ -108,11 +94,8 @@ struct ListTypeInfo : public ExtraTypeInfo {
|
|
108
94
|
LogicalType child_type;
|
109
95
|
|
110
96
|
public:
|
111
|
-
void Serialize(
|
112
|
-
|
113
|
-
|
114
|
-
static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
|
115
|
-
static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &source);
|
97
|
+
void Serialize(Serializer &serializer) const override;
|
98
|
+
static shared_ptr<ExtraTypeInfo> Deserialize(Deserializer &source);
|
116
99
|
|
117
100
|
protected:
|
118
101
|
bool EqualsInternal(ExtraTypeInfo *other_p) const override;
|
@@ -127,12 +110,8 @@ struct StructTypeInfo : public ExtraTypeInfo {
|
|
127
110
|
child_list_t<LogicalType> child_types;
|
128
111
|
|
129
112
|
public:
|
130
|
-
void Serialize(
|
131
|
-
|
132
|
-
|
133
|
-
static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
|
134
|
-
|
135
|
-
static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &deserializer);
|
113
|
+
void Serialize(Serializer &serializer) const override;
|
114
|
+
static shared_ptr<ExtraTypeInfo> Deserialize(Deserializer &deserializer);
|
136
115
|
|
137
116
|
protected:
|
138
117
|
bool EqualsInternal(ExtraTypeInfo *other_p) const override;
|
@@ -147,11 +126,8 @@ struct AggregateStateTypeInfo : public ExtraTypeInfo {
|
|
147
126
|
aggregate_state_t state_type;
|
148
127
|
|
149
128
|
public:
|
150
|
-
void Serialize(
|
151
|
-
|
152
|
-
|
153
|
-
static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &source);
|
154
|
-
static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
|
129
|
+
void Serialize(Serializer &serializer) const override;
|
130
|
+
static shared_ptr<ExtraTypeInfo> Deserialize(Deserializer &source);
|
155
131
|
|
156
132
|
protected:
|
157
133
|
bool EqualsInternal(ExtraTypeInfo *other_p) const override;
|
@@ -166,11 +142,8 @@ struct UserTypeInfo : public ExtraTypeInfo {
|
|
166
142
|
string user_type_name;
|
167
143
|
|
168
144
|
public:
|
169
|
-
void Serialize(
|
170
|
-
|
171
|
-
|
172
|
-
static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
|
173
|
-
static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &source);
|
145
|
+
void Serialize(Serializer &serializer) const override;
|
146
|
+
static shared_ptr<ExtraTypeInfo> Deserialize(Deserializer &source);
|
174
147
|
|
175
148
|
protected:
|
176
149
|
bool EqualsInternal(ExtraTypeInfo *other_p) const override;
|
@@ -195,11 +168,8 @@ public:
|
|
195
168
|
|
196
169
|
static LogicalType CreateType(Vector &ordered_data, idx_t size);
|
197
170
|
|
198
|
-
void Serialize(
|
199
|
-
static shared_ptr<ExtraTypeInfo> Deserialize(
|
200
|
-
|
201
|
-
void FormatSerialize(FormatSerializer &serializer) const override;
|
202
|
-
static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &source);
|
171
|
+
void Serialize(Serializer &serializer) const override;
|
172
|
+
static shared_ptr<ExtraTypeInfo> Deserialize(Deserializer &source);
|
203
173
|
|
204
174
|
protected:
|
205
175
|
// Equalities are only used in enums with different catalog entries
|
@@ -10,8 +10,8 @@
|
|
10
10
|
|
11
11
|
#include "duckdb/common/constants.hpp"
|
12
12
|
#include "duckdb/common/vector.hpp"
|
13
|
-
#include "duckdb/common/serializer/
|
14
|
-
#include "duckdb/common/serializer/
|
13
|
+
#include "duckdb/common/serializer/serializer.hpp"
|
14
|
+
#include "duckdb/common/serializer/deserializer.hpp"
|
15
15
|
|
16
16
|
namespace duckdb {
|
17
17
|
|
@@ -61,11 +61,11 @@ public:
|
|
61
61
|
return internal_vector.end();
|
62
62
|
}
|
63
63
|
|
64
|
-
void
|
64
|
+
void Serialize(Serializer &serializer) const {
|
65
65
|
serializer.WriteProperty(100, "internal_vector", internal_vector);
|
66
66
|
}
|
67
67
|
|
68
|
-
static IndexVector<T, INDEX_TYPE>
|
68
|
+
static IndexVector<T, INDEX_TYPE> Deserialize(Deserializer &deserializer) {
|
69
69
|
IndexVector<T, INDEX_TYPE> result;
|
70
70
|
deserializer.ReadProperty(100, "internal_vector", result.internal_vector);
|
71
71
|
return result;
|
@@ -31,9 +31,7 @@ struct HivePartitioningIndex {
|
|
31
31
|
idx_t index;
|
32
32
|
|
33
33
|
DUCKDB_API void Serialize(Serializer &serializer) const;
|
34
|
-
DUCKDB_API static HivePartitioningIndex Deserialize(Deserializer &
|
35
|
-
DUCKDB_API void FormatSerialize(FormatSerializer &serializer) const;
|
36
|
-
DUCKDB_API static HivePartitioningIndex FormatDeserialize(FormatDeserializer &deserializer);
|
34
|
+
DUCKDB_API static HivePartitioningIndex Deserialize(Deserializer &deserializer);
|
37
35
|
};
|
38
36
|
|
39
37
|
//! The bind data for the multi-file reader, obtained through MultiFileReader::BindReader
|
@@ -44,9 +42,7 @@ struct MultiFileReaderBindData {
|
|
44
42
|
vector<HivePartitioningIndex> hive_partitioning_indexes;
|
45
43
|
|
46
44
|
DUCKDB_API void Serialize(Serializer &serializer) const;
|
47
|
-
DUCKDB_API static MultiFileReaderBindData Deserialize(Deserializer &
|
48
|
-
DUCKDB_API void FormatSerialize(FormatSerializer &serializer) const;
|
49
|
-
DUCKDB_API static MultiFileReaderBindData FormatDeserialize(FormatDeserializer &deserializer);
|
45
|
+
DUCKDB_API static MultiFileReaderBindData Deserialize(Deserializer &deserializer);
|
50
46
|
};
|
51
47
|
|
52
48
|
struct MultiFileFilterEntry {
|
@@ -14,8 +14,6 @@
|
|
14
14
|
#include "duckdb/main/client_context.hpp"
|
15
15
|
|
16
16
|
namespace duckdb {
|
17
|
-
class Serializer;
|
18
|
-
class Deserializer;
|
19
17
|
struct BindInfo;
|
20
18
|
|
21
19
|
struct MultiFileReaderOptions {
|
@@ -28,8 +26,6 @@ struct MultiFileReaderOptions {
|
|
28
26
|
|
29
27
|
DUCKDB_API void Serialize(Serializer &serializer) const;
|
30
28
|
DUCKDB_API static MultiFileReaderOptions Deserialize(Deserializer &source);
|
31
|
-
DUCKDB_API void FormatSerialize(FormatSerializer &serializer) const;
|
32
|
-
DUCKDB_API static MultiFileReaderOptions FormatDeserialize(FormatDeserializer &source);
|
33
29
|
DUCKDB_API void AddBatchInfo(BindInfo &bind_info) const;
|
34
30
|
DUCKDB_API void AutoDetectHivePartitioning(const vector<string> &files, ClientContext &context);
|
35
31
|
DUCKDB_API static bool AutoDetectHivePartitioningInternal(const vector<string> &files, ClientContext &context);
|
@@ -8,50 +8,64 @@
|
|
8
8
|
|
9
9
|
#pragma once
|
10
10
|
|
11
|
-
#include "duckdb/common/serializer/
|
11
|
+
#include "duckdb/common/serializer/deserializer.hpp"
|
12
12
|
#include "duckdb/common/serializer/encoding_util.hpp"
|
13
|
+
#include "duckdb/common/serializer/read_stream.hpp"
|
13
14
|
|
14
15
|
namespace duckdb {
|
15
16
|
class ClientContext;
|
16
17
|
|
17
|
-
class BinaryDeserializer : public
|
18
|
+
class BinaryDeserializer : public Deserializer {
|
18
19
|
public:
|
20
|
+
explicit BinaryDeserializer(ReadStream &stream) : stream(stream) {
|
21
|
+
deserialize_enum_from_string = false;
|
22
|
+
}
|
23
|
+
|
19
24
|
template <class T>
|
20
25
|
unique_ptr<T> Deserialize() {
|
21
26
|
OnObjectBegin();
|
22
|
-
auto result = T::
|
27
|
+
auto result = T::Deserialize(*this);
|
23
28
|
OnObjectEnd();
|
24
29
|
D_ASSERT(nesting_level == 0); // make sure we are at the root level
|
25
30
|
return result;
|
26
31
|
}
|
27
32
|
|
28
33
|
template <class T>
|
29
|
-
static unique_ptr<T> Deserialize(
|
30
|
-
BinaryDeserializer deserializer(
|
34
|
+
static unique_ptr<T> Deserialize(ReadStream &stream) {
|
35
|
+
BinaryDeserializer deserializer(stream);
|
31
36
|
return deserializer.template Deserialize<T>();
|
32
37
|
}
|
33
38
|
|
34
39
|
template <class T>
|
35
|
-
static unique_ptr<T> Deserialize(ClientContext &context, bound_parameter_map_t ¶meters
|
36
|
-
|
37
|
-
BinaryDeserializer deserializer(ptr, length);
|
40
|
+
static unique_ptr<T> Deserialize(ReadStream &stream, ClientContext &context, bound_parameter_map_t ¶meters) {
|
41
|
+
BinaryDeserializer deserializer(stream);
|
38
42
|
deserializer.Set<ClientContext &>(context);
|
39
43
|
deserializer.Set<bound_parameter_map_t &>(parameters);
|
40
44
|
return deserializer.template Deserialize<T>();
|
41
45
|
}
|
42
46
|
|
43
|
-
|
44
|
-
|
45
|
-
|
47
|
+
void Begin() {
|
48
|
+
OnObjectBegin();
|
49
|
+
}
|
50
|
+
|
51
|
+
void End() {
|
52
|
+
OnObjectEnd();
|
53
|
+
D_ASSERT(nesting_level == 0); // make sure we are at the root level
|
54
|
+
}
|
55
|
+
|
56
|
+
ReadStream &GetStream() {
|
57
|
+
return stream;
|
46
58
|
}
|
47
59
|
|
48
|
-
|
49
|
-
|
60
|
+
private:
|
61
|
+
ReadStream &stream;
|
50
62
|
idx_t nesting_level = 0;
|
51
63
|
|
52
64
|
// Allow peeking 1 field ahead
|
53
65
|
bool has_buffered_field = false;
|
54
66
|
field_id_t buffered_field = 0;
|
67
|
+
|
68
|
+
private:
|
55
69
|
field_id_t PeekField() {
|
56
70
|
if (!has_buffered_field) {
|
57
71
|
buffered_field = ReadPrimitive<field_id_t>();
|
@@ -74,6 +88,10 @@ private:
|
|
74
88
|
return ReadPrimitive<field_id_t>();
|
75
89
|
}
|
76
90
|
|
91
|
+
void ReadData(data_ptr_t buffer, idx_t read_size) {
|
92
|
+
stream.ReadData(buffer, read_size);
|
93
|
+
}
|
94
|
+
|
77
95
|
template <class T>
|
78
96
|
T ReadPrimitive() {
|
79
97
|
T value;
|
@@ -81,19 +99,22 @@ private:
|
|
81
99
|
return value;
|
82
100
|
}
|
83
101
|
|
84
|
-
void ReadData(data_ptr_t buffer, idx_t read_size) {
|
85
|
-
if (ptr + read_size > end_ptr) {
|
86
|
-
throw InternalException("Failed to deserialize: not enough data in buffer to fulfill read request");
|
87
|
-
}
|
88
|
-
memcpy(buffer, ptr, read_size);
|
89
|
-
ptr += read_size;
|
90
|
-
}
|
91
|
-
|
92
102
|
template <class T>
|
93
103
|
T VarIntDecode() {
|
104
|
+
// FIXME: maybe we should pass a source to EncodingUtil instead
|
105
|
+
uint8_t buffer[16];
|
106
|
+
idx_t varint_size;
|
107
|
+
for (varint_size = 0; varint_size < 16; varint_size++) {
|
108
|
+
ReadData(buffer + varint_size, 1);
|
109
|
+
if (!(buffer[varint_size] & 0x80)) {
|
110
|
+
varint_size++;
|
111
|
+
break;
|
112
|
+
}
|
113
|
+
}
|
94
114
|
T value;
|
95
|
-
auto read_size = EncodingUtil::DecodeLEB128<T>(
|
96
|
-
|
115
|
+
auto read_size = EncodingUtil::DecodeLEB128<T>(buffer, value);
|
116
|
+
D_ASSERT(read_size == varint_size);
|
117
|
+
(void)read_size;
|
97
118
|
return value;
|
98
119
|
}
|
99
120
|
|
@@ -8,13 +8,20 @@
|
|
8
8
|
|
9
9
|
#pragma once
|
10
10
|
|
11
|
-
#include "duckdb/common/serializer/
|
11
|
+
#include "duckdb/common/serializer/serializer.hpp"
|
12
|
+
#include "duckdb/common/serializer/write_stream.hpp"
|
12
13
|
#include "duckdb/common/pair.hpp"
|
13
14
|
#include "duckdb/common/serializer/encoding_util.hpp"
|
14
15
|
|
15
16
|
namespace duckdb {
|
16
17
|
|
17
|
-
|
18
|
+
class BinarySerializer : public Serializer {
|
19
|
+
public:
|
20
|
+
explicit BinarySerializer(WriteStream &stream, bool serialize_default_values_p = false) : stream(stream) {
|
21
|
+
serialize_default_values = serialize_default_values_p;
|
22
|
+
serialize_enum_as_string = false;
|
23
|
+
}
|
24
|
+
|
18
25
|
private:
|
19
26
|
struct DebugState {
|
20
27
|
unordered_set<const char *> seen_field_tags;
|
@@ -22,19 +29,17 @@ private:
|
|
22
29
|
vector<pair<const char *, field_id_t>> seen_fields;
|
23
30
|
};
|
24
31
|
|
25
|
-
|
26
|
-
|
32
|
+
void WriteData(const_data_ptr_t buffer, idx_t write_size) {
|
33
|
+
stream.WriteData(buffer, write_size);
|
34
|
+
}
|
27
35
|
|
28
36
|
template <class T>
|
29
37
|
void Write(T element) {
|
30
38
|
static_assert(std::is_trivially_destructible<T>(), "Write element must be trivially destructible");
|
31
|
-
|
39
|
+
WriteData(const_data_ptr_cast(&element), sizeof(T));
|
32
40
|
}
|
33
|
-
void
|
34
|
-
|
35
|
-
}
|
36
|
-
void WriteDataInternal(const char *ptr, idx_t write_size) {
|
37
|
-
WriteDataInternal(const_data_ptr_cast(ptr), write_size);
|
41
|
+
void WriteData(const char *ptr, idx_t write_size) {
|
42
|
+
WriteData(const_data_ptr_cast(ptr), write_size);
|
38
43
|
}
|
39
44
|
|
40
45
|
template <class T>
|
@@ -42,27 +47,26 @@ private:
|
|
42
47
|
uint8_t buffer[16];
|
43
48
|
auto write_size = EncodingUtil::EncodeLEB128<T>(buffer, value);
|
44
49
|
D_ASSERT(write_size <= sizeof(buffer));
|
45
|
-
|
46
|
-
}
|
47
|
-
|
48
|
-
explicit BinarySerializer(bool serialize_default_values_p) {
|
49
|
-
serialize_default_values = serialize_default_values_p;
|
50
|
-
serialize_enum_as_string = false;
|
50
|
+
WriteData(buffer, write_size);
|
51
51
|
}
|
52
52
|
|
53
53
|
public:
|
54
|
-
//! Serializes the given object into a binary blob, optionally serializing default values if
|
55
|
-
//! serialize_default_values is set to true, otherwise properties set to their provided default value
|
56
|
-
//! will not be serialized
|
57
54
|
template <class T>
|
58
|
-
static
|
59
|
-
BinarySerializer serializer(serialize_default_values);
|
55
|
+
static void Serialize(const T &value, WriteStream &stream, bool serialize_default_values = false) {
|
56
|
+
BinarySerializer serializer(stream, serialize_default_values);
|
60
57
|
serializer.OnObjectBegin();
|
61
|
-
|
58
|
+
value.Serialize(serializer);
|
62
59
|
serializer.OnObjectEnd();
|
63
|
-
return std::move(serializer.data);
|
64
60
|
}
|
65
61
|
|
62
|
+
void Begin() {
|
63
|
+
OnObjectBegin();
|
64
|
+
}
|
65
|
+
void End() {
|
66
|
+
OnObjectEnd();
|
67
|
+
}
|
68
|
+
|
69
|
+
protected:
|
66
70
|
//-------------------------------------------------------------------------
|
67
71
|
// Nested Type Hooks
|
68
72
|
//-------------------------------------------------------------------------
|
@@ -99,6 +103,10 @@ public:
|
|
99
103
|
void WriteValue(const char *value) final;
|
100
104
|
void WriteValue(bool value) final;
|
101
105
|
void WriteDataPtr(const_data_ptr_t ptr, idx_t count) final;
|
106
|
+
|
107
|
+
private:
|
108
|
+
vector<DebugState> debug_stack;
|
109
|
+
WriteStream &stream;
|
102
110
|
};
|
103
111
|
|
104
112
|
} // namespace duckdb
|
@@ -9,13 +9,14 @@
|
|
9
9
|
#pragma once
|
10
10
|
|
11
11
|
#include "duckdb/common/serializer/buffered_file_writer.hpp"
|
12
|
+
#include "duckdb/common/serializer/read_stream.hpp"
|
12
13
|
|
13
14
|
namespace duckdb {
|
14
15
|
|
15
|
-
class BufferedFileReader : public
|
16
|
+
class BufferedFileReader : public ReadStream {
|
16
17
|
public:
|
17
|
-
BufferedFileReader(FileSystem &fs, const char *path,
|
18
|
-
|
18
|
+
BufferedFileReader(FileSystem &fs, const char *path, FileLockType lock_type = FileLockType::READ_LOCK,
|
19
|
+
optional_ptr<FileOpener> opener = nullptr);
|
19
20
|
|
20
21
|
FileSystem &fs;
|
21
22
|
unsafe_unique_array<data_t> data;
|
@@ -35,12 +36,9 @@ public:
|
|
35
36
|
void Seek(uint64_t location);
|
36
37
|
uint64_t CurrentOffset();
|
37
38
|
|
38
|
-
ClientContext &GetContext() override;
|
39
|
-
|
40
39
|
private:
|
41
40
|
idx_t file_size;
|
42
41
|
idx_t total_read;
|
43
|
-
optional_ptr<ClientContext> context;
|
44
42
|
};
|
45
43
|
|
46
44
|
} // namespace duckdb
|
@@ -8,14 +8,14 @@
|
|
8
8
|
|
9
9
|
#pragma once
|
10
10
|
|
11
|
-
#include "duckdb/common/serializer.hpp"
|
11
|
+
#include "duckdb/common/serializer/write_stream.hpp"
|
12
12
|
#include "duckdb/common/file_system.hpp"
|
13
13
|
|
14
14
|
namespace duckdb {
|
15
15
|
|
16
16
|
#define FILE_BUFFER_SIZE 4096
|
17
17
|
|
18
|
-
class BufferedFileWriter : public
|
18
|
+
class BufferedFileWriter : public WriteStream {
|
19
19
|
public:
|
20
20
|
static constexpr uint8_t DEFAULT_OPEN_FLAGS = FileFlags::FILE_FLAGS_WRITE | FileFlags::FILE_FLAGS_FILE_CREATE;
|
21
21
|
|
@@ -31,7 +31,7 @@ public:
|
|
31
31
|
unique_ptr<FileHandle> handle;
|
32
32
|
|
33
33
|
public:
|
34
|
-
DUCKDB_API void WriteData(const_data_ptr_t buffer,
|
34
|
+
DUCKDB_API void WriteData(const_data_ptr_t buffer, idx_t write_size) override;
|
35
35
|
//! Flush the buffer to disk and sync the file to ensure writing is completed
|
36
36
|
DUCKDB_API void Sync();
|
37
37
|
//! Flush the buffer to the file (without sync)
|
@@ -74,6 +74,23 @@ inline void DeserializationData::Unset<LogicalOperatorType>() {
|
|
74
74
|
enums.pop();
|
75
75
|
}
|
76
76
|
|
77
|
+
template <>
|
78
|
+
inline void DeserializationData::Set(CatalogType type) {
|
79
|
+
enums.push(idx_t(type));
|
80
|
+
}
|
81
|
+
|
82
|
+
template <>
|
83
|
+
inline CatalogType DeserializationData::Get() {
|
84
|
+
AssertNotEmpty(enums);
|
85
|
+
return CatalogType(enums.top());
|
86
|
+
}
|
87
|
+
|
88
|
+
template <>
|
89
|
+
inline void DeserializationData::Unset<CatalogType>() {
|
90
|
+
AssertNotEmpty(enums);
|
91
|
+
enums.pop();
|
92
|
+
}
|
93
|
+
|
77
94
|
template <>
|
78
95
|
inline void DeserializationData::Set(ClientContext &context) {
|
79
96
|
contexts.push(context);
|
package/src/duckdb/src/include/duckdb/common/serializer/{format_deserializer.hpp → deserializer.hpp}
RENAMED
@@ -8,8 +8,6 @@
|
|
8
8
|
|
9
9
|
#pragma once
|
10
10
|
|
11
|
-
#include "duckdb/common/field_writer.hpp"
|
12
|
-
#include "duckdb/common/serializer.hpp"
|
13
11
|
#include "duckdb/common/enum_util.hpp"
|
14
12
|
#include "duckdb/common/serializer/serialization_traits.hpp"
|
15
13
|
#include "duckdb/common/serializer/deserialization_data.hpp"
|
@@ -19,18 +17,21 @@
|
|
19
17
|
|
20
18
|
namespace duckdb {
|
21
19
|
|
22
|
-
class
|
20
|
+
class Deserializer {
|
23
21
|
protected:
|
24
22
|
bool deserialize_enum_from_string = false;
|
25
23
|
DeserializationData data;
|
26
24
|
|
27
25
|
public:
|
26
|
+
virtual ~Deserializer() {
|
27
|
+
}
|
28
|
+
|
28
29
|
class List {
|
29
|
-
friend
|
30
|
+
friend Deserializer;
|
30
31
|
|
31
32
|
private:
|
32
|
-
|
33
|
-
explicit List(
|
33
|
+
Deserializer &deserializer;
|
34
|
+
explicit List(Deserializer &deserializer) : deserializer(deserializer) {
|
34
35
|
}
|
35
36
|
|
36
37
|
public:
|
@@ -58,7 +59,6 @@ public:
|
|
58
59
|
OnPropertyBegin(field_id, tag);
|
59
60
|
auto ret = Read<T>();
|
60
61
|
OnPropertyEnd();
|
61
|
-
;
|
62
62
|
return ret;
|
63
63
|
}
|
64
64
|
|
@@ -134,11 +134,11 @@ public:
|
|
134
134
|
}
|
135
135
|
|
136
136
|
private:
|
137
|
-
// Deserialize anything implementing a
|
137
|
+
// Deserialize anything implementing a Deserialize method
|
138
138
|
template <typename T = void>
|
139
139
|
inline typename std::enable_if<has_deserialize<T>::value, T>::type Read() {
|
140
140
|
OnObjectBegin();
|
141
|
-
auto val = T::
|
141
|
+
auto val = T::Deserialize(*this);
|
142
142
|
OnObjectEnd();
|
143
143
|
return val;
|
144
144
|
}
|
@@ -150,7 +150,7 @@ private:
|
|
150
150
|
auto is_present = OnNullableBegin();
|
151
151
|
if (is_present) {
|
152
152
|
OnObjectBegin();
|
153
|
-
ptr = ELEMENT_TYPE::
|
153
|
+
ptr = ELEMENT_TYPE::Deserialize(*this);
|
154
154
|
OnObjectEnd();
|
155
155
|
}
|
156
156
|
OnNullableEnd();
|
@@ -165,7 +165,7 @@ private:
|
|
165
165
|
auto is_present = OnNullableBegin();
|
166
166
|
if (is_present) {
|
167
167
|
OnObjectBegin();
|
168
|
-
ptr = ELEMENT_TYPE::
|
168
|
+
ptr = ELEMENT_TYPE::Deserialize(*this);
|
169
169
|
OnObjectEnd();
|
170
170
|
}
|
171
171
|
OnNullableEnd();
|
@@ -416,14 +416,14 @@ protected:
|
|
416
416
|
};
|
417
417
|
|
418
418
|
template <class FUNC>
|
419
|
-
void
|
419
|
+
void Deserializer::List::ReadObject(FUNC f) {
|
420
420
|
deserializer.OnObjectBegin();
|
421
421
|
f(deserializer);
|
422
422
|
deserializer.OnObjectEnd();
|
423
423
|
}
|
424
424
|
|
425
425
|
template <class T>
|
426
|
-
T
|
426
|
+
T Deserializer::List::ReadElement() {
|
427
427
|
return deserializer.Read<T>();
|
428
428
|
}
|
429
429
|
|
@@ -0,0 +1,62 @@
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
2
|
+
// DuckDB
|
3
|
+
//
|
4
|
+
// duckdb/common/serializer/buffer_stream.hpp
|
5
|
+
//
|
6
|
+
//
|
7
|
+
//===----------------------------------------------------------------------===//
|
8
|
+
|
9
|
+
#pragma once
|
10
|
+
|
11
|
+
#include "duckdb/common/serializer/write_stream.hpp"
|
12
|
+
#include "duckdb/common/serializer/read_stream.hpp"
|
13
|
+
#include "duckdb/common/typedefs.hpp"
|
14
|
+
|
15
|
+
namespace duckdb {
|
16
|
+
|
17
|
+
class MemoryStream : public WriteStream, public ReadStream {
|
18
|
+
private:
|
19
|
+
idx_t position;
|
20
|
+
idx_t capacity;
|
21
|
+
bool owns_data;
|
22
|
+
data_ptr_t data;
|
23
|
+
|
24
|
+
public:
|
25
|
+
// Create a new owning MemoryStream with an internal backing buffer with the specified capacity. The stream will
|
26
|
+
// own the backing buffer, resize it when needed and free its memory when the stream is destroyed
|
27
|
+
explicit MemoryStream(idx_t capacity = 512);
|
28
|
+
|
29
|
+
// Create a new non-owning MemoryStream over the specified external buffer and capacity. The stream will not take
|
30
|
+
// ownership of the backing buffer, will not attempt to resize it and will not free the memory when the stream
|
31
|
+
// is destroyed
|
32
|
+
explicit MemoryStream(data_ptr_t buffer, idx_t capacity);
|
33
|
+
|
34
|
+
~MemoryStream() override;
|
35
|
+
|
36
|
+
// Write data to the stream.
|
37
|
+
// Throws if the write would exceed the capacity of the stream and the backing buffer is not owned by the stream
|
38
|
+
void WriteData(const_data_ptr_t buffer, idx_t write_size) override;
|
39
|
+
|
40
|
+
// Read data from the stream.
|
41
|
+
// Throws if the read would exceed the capacity of the stream
|
42
|
+
void ReadData(data_ptr_t buffer, idx_t read_size) override;
|
43
|
+
|
44
|
+
// Rewind the stream to the start, keeping the capacity and the backing buffer intact
|
45
|
+
void Rewind();
|
46
|
+
|
47
|
+
// Release ownership of the backing buffer and turn a owning stream into a non-owning one.
|
48
|
+
// The stream will no longer be responsible for freeing the data.
|
49
|
+
// The stream will also no longer attempt to automatically resize the buffer when the capacity is reached.
|
50
|
+
void Release();
|
51
|
+
|
52
|
+
// Get a pointer to the underlying backing buffer
|
53
|
+
data_ptr_t GetData() const;
|
54
|
+
|
55
|
+
// Get the current position in the stream
|
56
|
+
idx_t GetPosition() const;
|
57
|
+
|
58
|
+
// Get the capacity of the stream
|
59
|
+
idx_t GetCapacity() const;
|
60
|
+
};
|
61
|
+
|
62
|
+
} // namespace duckdb
|