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
@@ -0,0 +1,61 @@
|
|
1
|
+
#include "duckdb/common/serializer/memory_stream.hpp"
|
2
|
+
|
3
|
+
namespace duckdb {
|
4
|
+
|
5
|
+
MemoryStream::MemoryStream(idx_t capacity)
|
6
|
+
: position(0), capacity(capacity), owns_data(true), data(static_cast<data_ptr_t>(malloc(capacity))) {
|
7
|
+
}
|
8
|
+
|
9
|
+
MemoryStream::MemoryStream(data_ptr_t buffer, idx_t capacity)
|
10
|
+
: position(0), capacity(capacity), owns_data(false), data(buffer) {
|
11
|
+
}
|
12
|
+
|
13
|
+
MemoryStream::~MemoryStream() {
|
14
|
+
if (owns_data) {
|
15
|
+
free(data);
|
16
|
+
}
|
17
|
+
}
|
18
|
+
|
19
|
+
void MemoryStream::WriteData(const_data_ptr_t source, idx_t write_size) {
|
20
|
+
while (position + write_size > capacity) {
|
21
|
+
if (owns_data) {
|
22
|
+
capacity *= 2;
|
23
|
+
data = static_cast<data_ptr_t>(realloc(data, capacity));
|
24
|
+
} else {
|
25
|
+
throw SerializationException("Failed to serialize: not enough space in buffer to fulfill write request");
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
memcpy(data + position, source, write_size);
|
30
|
+
position += write_size;
|
31
|
+
}
|
32
|
+
|
33
|
+
void MemoryStream::ReadData(data_ptr_t destination, idx_t read_size) {
|
34
|
+
if (position + read_size > capacity) {
|
35
|
+
throw SerializationException("Failed to deserialize: not enough data in buffer to fulfill read request");
|
36
|
+
}
|
37
|
+
memcpy(destination, data + position, read_size);
|
38
|
+
position += read_size;
|
39
|
+
}
|
40
|
+
|
41
|
+
void MemoryStream::Rewind() {
|
42
|
+
position = 0;
|
43
|
+
}
|
44
|
+
|
45
|
+
void MemoryStream::Release() {
|
46
|
+
owns_data = false;
|
47
|
+
}
|
48
|
+
|
49
|
+
data_ptr_t MemoryStream::GetData() const {
|
50
|
+
return data;
|
51
|
+
}
|
52
|
+
|
53
|
+
idx_t MemoryStream::GetPosition() const {
|
54
|
+
return position;
|
55
|
+
}
|
56
|
+
|
57
|
+
idx_t MemoryStream::GetCapacity() const {
|
58
|
+
return capacity;
|
59
|
+
}
|
60
|
+
|
61
|
+
} // namespace duckdb
|
@@ -1,9 +1,9 @@
|
|
1
|
-
#include "duckdb/common/serializer/
|
1
|
+
#include "duckdb/common/serializer/serializer.hpp"
|
2
2
|
|
3
3
|
namespace duckdb {
|
4
4
|
|
5
5
|
template <>
|
6
|
-
void
|
6
|
+
void Serializer::WriteValue(const vector<bool> &vec) {
|
7
7
|
auto count = vec.size();
|
8
8
|
OnListBegin(count);
|
9
9
|
for (auto item : vec) {
|
@@ -100,11 +100,30 @@ PartitionGlobalSinkState::PartitionGlobalSinkState(ClientContext &context,
|
|
100
100
|
}
|
101
101
|
|
102
102
|
if (!orders.empty()) {
|
103
|
-
|
104
|
-
|
105
|
-
|
103
|
+
if (partitions.empty()) {
|
104
|
+
// Sort early into a dedicated hash group if we only sort.
|
105
|
+
grouping_types.Initialize(payload_types);
|
106
|
+
auto new_group =
|
107
|
+
make_uniq<PartitionGlobalHashGroup>(buffer_manager, partitions, orders, payload_types, external);
|
108
|
+
hash_groups.emplace_back(std::move(new_group));
|
109
|
+
} else {
|
110
|
+
auto types = payload_types;
|
111
|
+
types.push_back(LogicalType::HASH);
|
112
|
+
grouping_types.Initialize(types);
|
113
|
+
ResizeGroupingData(estimated_cardinality);
|
114
|
+
}
|
115
|
+
}
|
116
|
+
}
|
106
117
|
|
107
|
-
|
118
|
+
bool PartitionGlobalSinkState::HasMergeTasks() const {
|
119
|
+
if (grouping_data) {
|
120
|
+
auto &groups = grouping_data->GetPartitions();
|
121
|
+
return !groups.empty();
|
122
|
+
} else if (!hash_groups.empty()) {
|
123
|
+
D_ASSERT(hash_groups.size() == 1);
|
124
|
+
return hash_groups[0]->count > 0;
|
125
|
+
} else {
|
126
|
+
return false;
|
108
127
|
}
|
109
128
|
}
|
110
129
|
|
@@ -206,6 +225,12 @@ PartitionLocalMergeState::PartitionLocalMergeState(PartitionGlobalSinkState &gst
|
|
206
225
|
}
|
207
226
|
|
208
227
|
void PartitionLocalMergeState::Scan() {
|
228
|
+
if (!merge_state->group_data) {
|
229
|
+
// OVER(ORDER BY...)
|
230
|
+
// Already sorted
|
231
|
+
return;
|
232
|
+
}
|
233
|
+
|
209
234
|
auto &group_data = *merge_state->group_data;
|
210
235
|
auto &hash_group = *merge_state->hash_group;
|
211
236
|
auto &chunk_state = merge_state->chunk_state;
|
@@ -243,13 +268,26 @@ PartitionLocalSinkState::PartitionLocalSinkState(ClientContext &context, Partiti
|
|
243
268
|
sort_cols = gstate.orders.size() + group_types.size();
|
244
269
|
|
245
270
|
if (sort_cols) {
|
271
|
+
auto payload_types = gstate.payload_types;
|
246
272
|
if (!group_types.empty()) {
|
247
273
|
// OVER(PARTITION BY...)
|
248
274
|
group_chunk.Initialize(allocator, group_types);
|
275
|
+
payload_types.emplace_back(LogicalType::HASH);
|
276
|
+
} else {
|
277
|
+
// OVER(ORDER BY...)
|
278
|
+
for (idx_t ord_idx = 0; ord_idx < gstate.orders.size(); ord_idx++) {
|
279
|
+
auto &pexpr = *gstate.orders[ord_idx].expression.get();
|
280
|
+
group_types.push_back(pexpr.return_type);
|
281
|
+
executor.AddExpression(pexpr);
|
282
|
+
}
|
283
|
+
group_chunk.Initialize(allocator, group_types);
|
284
|
+
|
285
|
+
// Single partition
|
286
|
+
auto &global_sort = *gstate.hash_groups[0]->global_sort;
|
287
|
+
local_sort = make_uniq<LocalSortState>();
|
288
|
+
local_sort->Initialize(global_sort, global_sort.buffer_manager);
|
249
289
|
}
|
250
290
|
// OVER(...)
|
251
|
-
auto payload_types = gstate.payload_types;
|
252
|
-
payload_types.emplace_back(LogicalType::HASH);
|
253
291
|
payload_chunk.Initialize(allocator, payload_types);
|
254
292
|
} else {
|
255
293
|
// OVER()
|
@@ -259,20 +297,14 @@ PartitionLocalSinkState::PartitionLocalSinkState(ClientContext &context, Partiti
|
|
259
297
|
|
260
298
|
void PartitionLocalSinkState::Hash(DataChunk &input_chunk, Vector &hash_vector) {
|
261
299
|
const auto count = input_chunk.size();
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
} else {
|
271
|
-
// OVER(...) (sorting)
|
272
|
-
// Single partition => single hash value
|
273
|
-
hash_vector.SetVectorType(VectorType::CONSTANT_VECTOR);
|
274
|
-
auto hashes = ConstantVector::GetData<hash_t>(hash_vector);
|
275
|
-
hashes[0] = 0;
|
300
|
+
D_ASSERT(group_chunk.ColumnCount() > 0);
|
301
|
+
|
302
|
+
// OVER(PARTITION BY...) (hash grouping)
|
303
|
+
group_chunk.Reset();
|
304
|
+
executor.Execute(input_chunk, group_chunk);
|
305
|
+
VectorOperations::Hash(group_chunk.data[0], hash_vector, count);
|
306
|
+
for (idx_t prt_idx = 1; prt_idx < group_chunk.ColumnCount(); ++prt_idx) {
|
307
|
+
VectorOperations::CombineHash(hash_vector, group_chunk.data[prt_idx], count);
|
276
308
|
}
|
277
309
|
}
|
278
310
|
|
@@ -306,6 +338,22 @@ void PartitionLocalSinkState::Sink(DataChunk &input_chunk) {
|
|
306
338
|
return;
|
307
339
|
}
|
308
340
|
|
341
|
+
if (local_sort) {
|
342
|
+
// OVER(ORDER BY...)
|
343
|
+
group_chunk.Reset();
|
344
|
+
executor.Execute(input_chunk, group_chunk);
|
345
|
+
local_sort->SinkChunk(group_chunk, input_chunk);
|
346
|
+
|
347
|
+
auto &hash_group = *gstate.hash_groups[0];
|
348
|
+
hash_group.count += input_chunk.size();
|
349
|
+
|
350
|
+
if (local_sort->SizeInBytes() > gstate.memory_per_thread) {
|
351
|
+
auto &global_sort = *hash_group.global_sort;
|
352
|
+
local_sort->Sort(global_sort, true);
|
353
|
+
}
|
354
|
+
return;
|
355
|
+
}
|
356
|
+
|
309
357
|
// OVER(...)
|
310
358
|
payload_chunk.Reset();
|
311
359
|
auto &hash_vector = payload_chunk.data.back();
|
@@ -338,6 +386,15 @@ void PartitionLocalSinkState::Combine() {
|
|
338
386
|
return;
|
339
387
|
}
|
340
388
|
|
389
|
+
if (local_sort) {
|
390
|
+
// OVER(ORDER BY...)
|
391
|
+
auto &hash_group = *gstate.hash_groups[0];
|
392
|
+
auto &global_sort = *hash_group.global_sort;
|
393
|
+
global_sort.AddLocalState(*local_sort);
|
394
|
+
local_sort.reset();
|
395
|
+
return;
|
396
|
+
}
|
397
|
+
|
341
398
|
// OVER(...)
|
342
399
|
gstate.CombineLocalPartition(local_partition, local_append);
|
343
400
|
}
|
@@ -365,6 +422,19 @@ PartitionGlobalMergeState::PartitionGlobalMergeState(PartitionGlobalSinkState &s
|
|
365
422
|
group_data->InitializeScan(chunk_state, column_ids);
|
366
423
|
}
|
367
424
|
|
425
|
+
PartitionGlobalMergeState::PartitionGlobalMergeState(PartitionGlobalSinkState &sink)
|
426
|
+
: sink(sink), memory_per_thread(sink.memory_per_thread),
|
427
|
+
num_threads(TaskScheduler::GetScheduler(sink.context).NumberOfThreads()), stage(PartitionSortStage::INIT),
|
428
|
+
total_tasks(0), tasks_assigned(0), tasks_completed(0) {
|
429
|
+
|
430
|
+
const hash_t hash_bin = 0;
|
431
|
+
const size_t group_idx = 0;
|
432
|
+
hash_group = sink.hash_groups[group_idx].get();
|
433
|
+
global_sort = sink.hash_groups[group_idx]->global_sort.get();
|
434
|
+
|
435
|
+
sink.bin_groups[hash_bin] = group_idx;
|
436
|
+
}
|
437
|
+
|
368
438
|
void PartitionLocalMergeState::Prepare() {
|
369
439
|
merge_state->group_data.reset();
|
370
440
|
|
@@ -390,7 +460,7 @@ void PartitionLocalMergeState::ExecuteTask() {
|
|
390
460
|
Merge();
|
391
461
|
break;
|
392
462
|
default:
|
393
|
-
throw InternalException("Unexpected
|
463
|
+
throw InternalException("Unexpected PartitionSortStage in ExecuteTask!");
|
394
464
|
}
|
395
465
|
|
396
466
|
merge_state->CompleteTask();
|
@@ -471,15 +541,23 @@ bool PartitionGlobalMergeState::TryPrepareNextStage() {
|
|
471
541
|
|
472
542
|
PartitionGlobalMergeStates::PartitionGlobalMergeStates(PartitionGlobalSinkState &sink) {
|
473
543
|
// Schedule all the sorts for maximum thread utilisation
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
544
|
+
if (sink.grouping_data) {
|
545
|
+
auto &partitions = sink.grouping_data->GetPartitions();
|
546
|
+
sink.bin_groups.resize(partitions.size(), partitions.size());
|
547
|
+
for (hash_t hash_bin = 0; hash_bin < partitions.size(); ++hash_bin) {
|
548
|
+
auto &group_data = partitions[hash_bin];
|
549
|
+
// Prepare for merge sort phase
|
550
|
+
if (group_data->Count()) {
|
551
|
+
auto state = make_uniq<PartitionGlobalMergeState>(sink, std::move(group_data), hash_bin);
|
552
|
+
states.emplace_back(std::move(state));
|
553
|
+
}
|
482
554
|
}
|
555
|
+
} else {
|
556
|
+
// OVER(ORDER BY...)
|
557
|
+
// Already sunk into the single global sort, so set up single merge with no data
|
558
|
+
sink.bin_groups.resize(1, 1);
|
559
|
+
auto state = make_uniq<PartitionGlobalMergeState>(sink);
|
560
|
+
states.emplace_back(std::move(state));
|
483
561
|
}
|
484
562
|
}
|
485
563
|
|
@@ -6,8 +6,8 @@
|
|
6
6
|
#include "duckdb/common/types/value_map.hpp"
|
7
7
|
#include "duckdb/common/vector_operations/vector_operations.hpp"
|
8
8
|
#include "duckdb/storage/buffer_manager.hpp"
|
9
|
-
#include "duckdb/common/serializer/
|
10
|
-
#include "duckdb/common/serializer/
|
9
|
+
#include "duckdb/common/serializer/serializer.hpp"
|
10
|
+
#include "duckdb/common/serializer/deserializer.hpp"
|
11
11
|
|
12
12
|
namespace duckdb {
|
13
13
|
|
@@ -1059,7 +1059,7 @@ const vector<unique_ptr<ColumnDataCollectionSegment>> &ColumnDataCollection::Get
|
|
1059
1059
|
return segments;
|
1060
1060
|
}
|
1061
1061
|
|
1062
|
-
void ColumnDataCollection::
|
1062
|
+
void ColumnDataCollection::Serialize(Serializer &serializer) const {
|
1063
1063
|
vector<vector<Value>> values;
|
1064
1064
|
values.resize(ColumnCount());
|
1065
1065
|
for (auto &chunk : Chunks()) {
|
@@ -1073,7 +1073,7 @@ void ColumnDataCollection::FormatSerialize(FormatSerializer &serializer) const {
|
|
1073
1073
|
serializer.WriteProperty(101, "values", values);
|
1074
1074
|
}
|
1075
1075
|
|
1076
|
-
unique_ptr<ColumnDataCollection> ColumnDataCollection::
|
1076
|
+
unique_ptr<ColumnDataCollection> ColumnDataCollection::Deserialize(Deserializer &deserializer) {
|
1077
1077
|
auto types = deserializer.ReadProperty<vector<LogicalType>>(100, "types");
|
1078
1078
|
auto values = deserializer.ReadProperty<vector<vector<Value>>>(101, "values");
|
1079
1079
|
|
@@ -4,9 +4,8 @@
|
|
4
4
|
#include "duckdb/common/exception.hpp"
|
5
5
|
#include "duckdb/common/helper.hpp"
|
6
6
|
#include "duckdb/common/printer.hpp"
|
7
|
-
#include "duckdb/common/serializer.hpp"
|
8
|
-
#include "duckdb/common/serializer/
|
9
|
-
#include "duckdb/common/serializer/format_deserializer.hpp"
|
7
|
+
#include "duckdb/common/serializer/serializer.hpp"
|
8
|
+
#include "duckdb/common/serializer/deserializer.hpp"
|
10
9
|
#include "duckdb/common/types/interval.hpp"
|
11
10
|
#include "duckdb/common/types/sel_cache.hpp"
|
12
11
|
#include "duckdb/common/types/vector_cache.hpp"
|
@@ -231,38 +230,7 @@ string DataChunk::ToString() const {
|
|
231
230
|
return retval;
|
232
231
|
}
|
233
232
|
|
234
|
-
void DataChunk::Serialize(Serializer &serializer) {
|
235
|
-
// write the count
|
236
|
-
serializer.Write<sel_t>(size());
|
237
|
-
serializer.Write<idx_t>(ColumnCount());
|
238
|
-
for (idx_t col_idx = 0; col_idx < ColumnCount(); col_idx++) {
|
239
|
-
// write the types
|
240
|
-
data[col_idx].GetType().Serialize(serializer);
|
241
|
-
}
|
242
|
-
// write the data
|
243
|
-
for (idx_t col_idx = 0; col_idx < ColumnCount(); col_idx++) {
|
244
|
-
data[col_idx].Serialize(size(), serializer);
|
245
|
-
}
|
246
|
-
}
|
247
|
-
|
248
|
-
void DataChunk::Deserialize(Deserializer &source) {
|
249
|
-
auto rows = source.Read<sel_t>();
|
250
|
-
idx_t column_count = source.Read<idx_t>();
|
251
|
-
|
252
|
-
vector<LogicalType> types;
|
253
|
-
for (idx_t i = 0; i < column_count; i++) {
|
254
|
-
types.push_back(LogicalType::Deserialize(source));
|
255
|
-
}
|
256
|
-
Initialize(Allocator::DefaultAllocator(), types);
|
257
|
-
// now load the column data
|
258
|
-
SetCardinality(rows);
|
259
|
-
for (idx_t i = 0; i < column_count; i++) {
|
260
|
-
data[i].Deserialize(rows, source);
|
261
|
-
}
|
262
|
-
Verify();
|
263
|
-
}
|
264
|
-
|
265
|
-
void DataChunk::FormatSerialize(FormatSerializer &serializer) const {
|
233
|
+
void DataChunk::Serialize(Serializer &serializer) const {
|
266
234
|
// write the count
|
267
235
|
auto row_count = size();
|
268
236
|
serializer.WriteProperty<sel_t>(100, "rows", row_count);
|
@@ -270,26 +238,26 @@ void DataChunk::FormatSerialize(FormatSerializer &serializer) const {
|
|
270
238
|
|
271
239
|
// Write the types
|
272
240
|
serializer.WriteList(101, "types", column_count,
|
273
|
-
[&](
|
241
|
+
[&](Serializer::List &list, idx_t i) { list.WriteElement(data[i].GetType()); });
|
274
242
|
|
275
243
|
// Write the data
|
276
|
-
serializer.WriteList(102, "columns", column_count, [&](
|
277
|
-
list.WriteObject([&](
|
244
|
+
serializer.WriteList(102, "columns", column_count, [&](Serializer::List &list, idx_t i) {
|
245
|
+
list.WriteObject([&](Serializer &object) {
|
278
246
|
// Reference the vector to avoid potentially mutating it during serialization
|
279
247
|
Vector serialized_vector(data[i].GetType());
|
280
248
|
serialized_vector.Reference(data[i]);
|
281
|
-
serialized_vector.
|
249
|
+
serialized_vector.Serialize(object, row_count);
|
282
250
|
});
|
283
251
|
});
|
284
252
|
}
|
285
253
|
|
286
|
-
void DataChunk::
|
254
|
+
void DataChunk::Deserialize(Deserializer &deserializer) {
|
287
255
|
// read the count
|
288
256
|
auto row_count = deserializer.ReadProperty<sel_t>(100, "rows");
|
289
257
|
|
290
258
|
// Read the types
|
291
259
|
vector<LogicalType> types;
|
292
|
-
deserializer.ReadList(101, "types", [&](
|
260
|
+
deserializer.ReadList(101, "types", [&](Deserializer::List &list, idx_t i) {
|
293
261
|
auto type = list.ReadElement<LogicalType>();
|
294
262
|
types.push_back(type);
|
295
263
|
});
|
@@ -299,8 +267,8 @@ void DataChunk::FormatDeserialize(FormatDeserializer &deserializer) {
|
|
299
267
|
SetCardinality(row_count);
|
300
268
|
|
301
269
|
// Read the data
|
302
|
-
deserializer.ReadList(102, "columns", [&](
|
303
|
-
list.ReadObject([&](
|
270
|
+
deserializer.ReadList(102, "columns", [&](Deserializer::List &list, idx_t i) {
|
271
|
+
list.ReadObject([&](Deserializer &object) { data[i].Deserialize(object, row_count); });
|
304
272
|
});
|
305
273
|
}
|
306
274
|
|
@@ -1,9 +1,8 @@
|
|
1
1
|
#include "duckdb/common/types/hyperloglog.hpp"
|
2
2
|
|
3
3
|
#include "duckdb/common/exception.hpp"
|
4
|
-
#include "duckdb/common/
|
5
|
-
#include "duckdb/common/serializer/
|
6
|
-
#include "duckdb/common/serializer/format_deserializer.hpp"
|
4
|
+
#include "duckdb/common/serializer/serializer.hpp"
|
5
|
+
#include "duckdb/common/serializer/deserializer.hpp"
|
7
6
|
|
8
7
|
#include "hyperloglog.hpp"
|
9
8
|
|
@@ -91,30 +90,12 @@ unique_ptr<HyperLogLog> HyperLogLog::Copy() {
|
|
91
90
|
return result;
|
92
91
|
}
|
93
92
|
|
94
|
-
void HyperLogLog::Serialize(
|
95
|
-
writer.WriteField<HLLStorageType>(HLLStorageType::UNCOMPRESSED);
|
96
|
-
writer.WriteBlob(GetPtr(), GetSize());
|
97
|
-
}
|
98
|
-
|
99
|
-
unique_ptr<HyperLogLog> HyperLogLog::Deserialize(FieldReader &reader) {
|
100
|
-
auto result = make_uniq<HyperLogLog>();
|
101
|
-
auto storage_type = reader.ReadRequired<HLLStorageType>();
|
102
|
-
switch (storage_type) {
|
103
|
-
case HLLStorageType::UNCOMPRESSED:
|
104
|
-
reader.ReadBlob(result->GetPtr(), GetSize());
|
105
|
-
break;
|
106
|
-
default:
|
107
|
-
throw SerializationException("Unknown HyperLogLog storage type!");
|
108
|
-
}
|
109
|
-
return result;
|
110
|
-
}
|
111
|
-
|
112
|
-
void HyperLogLog::FormatSerialize(FormatSerializer &serializer) const {
|
93
|
+
void HyperLogLog::Serialize(Serializer &serializer) const {
|
113
94
|
serializer.WriteProperty(100, "type", HLLStorageType::UNCOMPRESSED);
|
114
95
|
serializer.WriteProperty(101, "data", GetPtr(), GetSize());
|
115
96
|
}
|
116
97
|
|
117
|
-
unique_ptr<HyperLogLog> HyperLogLog::
|
98
|
+
unique_ptr<HyperLogLog> HyperLogLog::Deserialize(Deserializer &deserializer) {
|
118
99
|
auto result = make_uniq<HyperLogLog>();
|
119
100
|
auto storage_type = deserializer.ReadProperty<HLLStorageType>(100, "type");
|
120
101
|
switch (storage_type) {
|
@@ -11,8 +11,8 @@
|
|
11
11
|
#include "duckdb/common/operator/subtract.hpp"
|
12
12
|
#include "duckdb/common/string_util.hpp"
|
13
13
|
|
14
|
-
#include "duckdb/common/serializer/
|
15
|
-
#include "duckdb/common/serializer/
|
14
|
+
#include "duckdb/common/serializer/serializer.hpp"
|
15
|
+
#include "duckdb/common/serializer/deserializer.hpp"
|
16
16
|
|
17
17
|
namespace duckdb {
|
18
18
|
|
@@ -10,7 +10,6 @@
|
|
10
10
|
#include "utf8proc_wrapper.hpp"
|
11
11
|
#include "duckdb/common/operator/numeric_binary_operators.hpp"
|
12
12
|
#include "duckdb/common/printer.hpp"
|
13
|
-
#include "duckdb/common/field_writer.hpp"
|
14
13
|
#include "duckdb/common/types/blob.hpp"
|
15
14
|
#include "duckdb/common/types/date.hpp"
|
16
15
|
#include "duckdb/common/types/decimal.hpp"
|
@@ -30,8 +29,8 @@
|
|
30
29
|
#include "duckdb/function/cast/cast_function_set.hpp"
|
31
30
|
#include "duckdb/main/error_manager.hpp"
|
32
31
|
|
33
|
-
#include "duckdb/common/serializer/
|
34
|
-
#include "duckdb/common/serializer/
|
32
|
+
#include "duckdb/common/serializer/serializer.hpp"
|
33
|
+
#include "duckdb/common/serializer/deserializer.hpp"
|
35
34
|
|
36
35
|
#include <utility>
|
37
36
|
#include <cmath>
|
@@ -1651,131 +1650,7 @@ void Value::Reinterpret(LogicalType new_type) {
|
|
1651
1650
|
this->type_ = std::move(new_type);
|
1652
1651
|
}
|
1653
1652
|
|
1654
|
-
void Value::Serialize(Serializer &
|
1655
|
-
FieldWriter writer(main_serializer);
|
1656
|
-
writer.WriteSerializable(type_);
|
1657
|
-
writer.WriteField<bool>(IsNull());
|
1658
|
-
if (!IsNull()) {
|
1659
|
-
auto &serializer = writer.GetSerializer();
|
1660
|
-
switch (type_.InternalType()) {
|
1661
|
-
case PhysicalType::BOOL:
|
1662
|
-
serializer.Write<int8_t>(value_.boolean);
|
1663
|
-
break;
|
1664
|
-
case PhysicalType::INT8:
|
1665
|
-
serializer.Write<int8_t>(value_.tinyint);
|
1666
|
-
break;
|
1667
|
-
case PhysicalType::INT16:
|
1668
|
-
serializer.Write<int16_t>(value_.smallint);
|
1669
|
-
break;
|
1670
|
-
case PhysicalType::INT32:
|
1671
|
-
serializer.Write<int32_t>(value_.integer);
|
1672
|
-
break;
|
1673
|
-
case PhysicalType::INT64:
|
1674
|
-
serializer.Write<int64_t>(value_.bigint);
|
1675
|
-
break;
|
1676
|
-
case PhysicalType::UINT8:
|
1677
|
-
serializer.Write<uint8_t>(value_.utinyint);
|
1678
|
-
break;
|
1679
|
-
case PhysicalType::UINT16:
|
1680
|
-
serializer.Write<uint16_t>(value_.usmallint);
|
1681
|
-
break;
|
1682
|
-
case PhysicalType::UINT32:
|
1683
|
-
serializer.Write<uint32_t>(value_.uinteger);
|
1684
|
-
break;
|
1685
|
-
case PhysicalType::UINT64:
|
1686
|
-
serializer.Write<uint64_t>(value_.ubigint);
|
1687
|
-
break;
|
1688
|
-
case PhysicalType::INT128:
|
1689
|
-
serializer.Write<hugeint_t>(value_.hugeint);
|
1690
|
-
break;
|
1691
|
-
case PhysicalType::FLOAT:
|
1692
|
-
serializer.Write<float>(value_.float_);
|
1693
|
-
break;
|
1694
|
-
case PhysicalType::DOUBLE:
|
1695
|
-
serializer.Write<double>(value_.double_);
|
1696
|
-
break;
|
1697
|
-
case PhysicalType::INTERVAL:
|
1698
|
-
serializer.Write<interval_t>(value_.interval);
|
1699
|
-
break;
|
1700
|
-
case PhysicalType::VARCHAR:
|
1701
|
-
serializer.WriteString(StringValue::Get(*this));
|
1702
|
-
break;
|
1703
|
-
default: {
|
1704
|
-
Vector v(*this);
|
1705
|
-
v.Serialize(1, serializer);
|
1706
|
-
break;
|
1707
|
-
}
|
1708
|
-
}
|
1709
|
-
}
|
1710
|
-
writer.Finalize();
|
1711
|
-
}
|
1712
|
-
|
1713
|
-
Value Value::Deserialize(Deserializer &main_source) {
|
1714
|
-
FieldReader reader(main_source);
|
1715
|
-
auto type = reader.ReadRequiredSerializable<LogicalType, LogicalType>();
|
1716
|
-
auto is_null = reader.ReadRequired<bool>();
|
1717
|
-
Value new_value = Value(type);
|
1718
|
-
if (is_null) {
|
1719
|
-
reader.Finalize();
|
1720
|
-
return new_value;
|
1721
|
-
}
|
1722
|
-
new_value.is_null = false;
|
1723
|
-
auto &source = reader.GetSource();
|
1724
|
-
switch (type.InternalType()) {
|
1725
|
-
case PhysicalType::BOOL:
|
1726
|
-
new_value.value_.boolean = source.Read<int8_t>();
|
1727
|
-
break;
|
1728
|
-
case PhysicalType::INT8:
|
1729
|
-
new_value.value_.tinyint = source.Read<int8_t>();
|
1730
|
-
break;
|
1731
|
-
case PhysicalType::INT16:
|
1732
|
-
new_value.value_.smallint = source.Read<int16_t>();
|
1733
|
-
break;
|
1734
|
-
case PhysicalType::INT32:
|
1735
|
-
new_value.value_.integer = source.Read<int32_t>();
|
1736
|
-
break;
|
1737
|
-
case PhysicalType::INT64:
|
1738
|
-
new_value.value_.bigint = source.Read<int64_t>();
|
1739
|
-
break;
|
1740
|
-
case PhysicalType::UINT8:
|
1741
|
-
new_value.value_.utinyint = source.Read<uint8_t>();
|
1742
|
-
break;
|
1743
|
-
case PhysicalType::UINT16:
|
1744
|
-
new_value.value_.usmallint = source.Read<uint16_t>();
|
1745
|
-
break;
|
1746
|
-
case PhysicalType::UINT32:
|
1747
|
-
new_value.value_.uinteger = source.Read<uint32_t>();
|
1748
|
-
break;
|
1749
|
-
case PhysicalType::UINT64:
|
1750
|
-
new_value.value_.ubigint = source.Read<uint64_t>();
|
1751
|
-
break;
|
1752
|
-
case PhysicalType::INT128:
|
1753
|
-
new_value.value_.hugeint = source.Read<hugeint_t>();
|
1754
|
-
break;
|
1755
|
-
case PhysicalType::FLOAT:
|
1756
|
-
new_value.value_.float_ = source.Read<float>();
|
1757
|
-
break;
|
1758
|
-
case PhysicalType::DOUBLE:
|
1759
|
-
new_value.value_.double_ = source.Read<double>();
|
1760
|
-
break;
|
1761
|
-
case PhysicalType::INTERVAL:
|
1762
|
-
new_value.value_.interval = source.Read<interval_t>();
|
1763
|
-
break;
|
1764
|
-
case PhysicalType::VARCHAR:
|
1765
|
-
new_value.value_info_ = make_shared<StringValueInfo>(source.Read<string>());
|
1766
|
-
break;
|
1767
|
-
default: {
|
1768
|
-
Vector v(type);
|
1769
|
-
v.Deserialize(1, source);
|
1770
|
-
new_value = v.GetValue(0);
|
1771
|
-
break;
|
1772
|
-
}
|
1773
|
-
}
|
1774
|
-
reader.Finalize();
|
1775
|
-
return new_value;
|
1776
|
-
}
|
1777
|
-
|
1778
|
-
void Value::FormatSerialize(FormatSerializer &serializer) const {
|
1653
|
+
void Value::Serialize(Serializer &serializer) const {
|
1779
1654
|
serializer.WriteProperty(100, "type", type_);
|
1780
1655
|
serializer.WriteProperty(101, "is_null", is_null);
|
1781
1656
|
if (!IsNull()) {
|
@@ -1830,24 +1705,24 @@ void Value::FormatSerialize(FormatSerializer &serializer) const {
|
|
1830
1705
|
}
|
1831
1706
|
} break;
|
1832
1707
|
case PhysicalType::LIST: {
|
1833
|
-
serializer.WriteObject(102, "value", [&](
|
1708
|
+
serializer.WriteObject(102, "value", [&](Serializer &serializer) {
|
1834
1709
|
auto &children = ListValue::GetChildren(*this);
|
1835
1710
|
serializer.WriteProperty(100, "children", children);
|
1836
1711
|
});
|
1837
1712
|
} break;
|
1838
1713
|
case PhysicalType::STRUCT: {
|
1839
|
-
serializer.WriteObject(102, "value", [&](
|
1714
|
+
serializer.WriteObject(102, "value", [&](Serializer &serializer) {
|
1840
1715
|
auto &children = StructValue::GetChildren(*this);
|
1841
1716
|
serializer.WriteProperty(100, "children", children);
|
1842
1717
|
});
|
1843
1718
|
} break;
|
1844
1719
|
default:
|
1845
|
-
throw NotImplementedException("Unimplemented type for
|
1720
|
+
throw NotImplementedException("Unimplemented type for Serialize");
|
1846
1721
|
}
|
1847
1722
|
}
|
1848
1723
|
}
|
1849
1724
|
|
1850
|
-
Value Value::
|
1725
|
+
Value Value::Deserialize(Deserializer &deserializer) {
|
1851
1726
|
auto type = deserializer.ReadProperty<LogicalType>(100, "type");
|
1852
1727
|
auto is_null = deserializer.ReadProperty<bool>(101, "is_null");
|
1853
1728
|
Value new_value = Value(type);
|
@@ -1906,19 +1781,19 @@ Value Value::FormatDeserialize(FormatDeserializer &deserializer) {
|
|
1906
1781
|
}
|
1907
1782
|
} break;
|
1908
1783
|
case PhysicalType::LIST: {
|
1909
|
-
deserializer.ReadObject(102, "value", [&](
|
1784
|
+
deserializer.ReadObject(102, "value", [&](Deserializer &obj) {
|
1910
1785
|
auto children = obj.ReadProperty<vector<Value>>(100, "children");
|
1911
1786
|
new_value.value_info_ = make_shared<NestedValueInfo>(children);
|
1912
1787
|
});
|
1913
1788
|
} break;
|
1914
1789
|
case PhysicalType::STRUCT: {
|
1915
|
-
deserializer.ReadObject(102, "value", [&](
|
1790
|
+
deserializer.ReadObject(102, "value", [&](Deserializer &obj) {
|
1916
1791
|
auto children = obj.ReadProperty<vector<Value>>(100, "children");
|
1917
1792
|
new_value.value_info_ = make_shared<NestedValueInfo>(children);
|
1918
1793
|
});
|
1919
1794
|
} break;
|
1920
1795
|
default:
|
1921
|
-
throw NotImplementedException("Unimplemented type for
|
1796
|
+
throw NotImplementedException("Unimplemented type for Deserialize");
|
1922
1797
|
}
|
1923
1798
|
return new_value;
|
1924
1799
|
}
|