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