duckdb 0.8.2-dev4126.0 → 0.8.2-dev4203.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (497) 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.cpp +20 -0
  28. package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +0 -1
  29. package/src/duckdb/src/catalog/catalog_entry/macro_catalog_entry.cpp +0 -1
  30. package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +0 -1
  31. package/src/duckdb/src/catalog/catalog_entry/sequence_catalog_entry.cpp +0 -1
  32. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +0 -2
  33. package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +1 -3
  34. package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +0 -1
  35. package/src/duckdb/src/catalog/catalog_entry.cpp +2 -11
  36. package/src/duckdb/src/catalog/catalog_set.cpp +16 -14
  37. package/src/duckdb/src/catalog/default/default_functions.cpp +2 -2
  38. package/src/duckdb/src/common/arrow/arrow_converter.cpp +3 -1
  39. package/src/duckdb/src/common/constants.cpp +0 -1
  40. package/src/duckdb/src/common/enum_util.cpp +0 -10
  41. package/src/duckdb/src/common/exception.cpp +1 -1
  42. package/src/duckdb/src/common/extra_type_info.cpp +20 -192
  43. package/src/duckdb/src/common/multi_file_reader.cpp +0 -68
  44. package/src/duckdb/src/common/serializer/binary_serializer.cpp +9 -4
  45. package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +3 -11
  46. package/src/duckdb/src/common/serializer/buffered_file_writer.cpp +1 -1
  47. package/src/duckdb/src/common/serializer/memory_stream.cpp +61 -0
  48. package/src/duckdb/src/common/serializer/{format_serializer.cpp → serializer.cpp} +2 -2
  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/function/macro_function.cpp +0 -42
  65. package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +10 -8
  66. package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +13 -12
  67. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +9 -11
  68. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +7 -33
  69. package/src/duckdb/src/function/scalar_function.cpp +1 -2
  70. package/src/duckdb/src/function/scalar_macro_function.cpp +0 -10
  71. package/src/duckdb/src/function/table/copy_csv.cpp +38 -38
  72. package/src/duckdb/src/function/table/read_csv.cpp +5 -174
  73. package/src/duckdb/src/function/table/table_scan.cpp +5 -42
  74. package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
  75. package/src/duckdb/src/function/table_function.cpp +3 -4
  76. package/src/duckdb/src/function/table_macro_function.cpp +0 -10
  77. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +1 -0
  78. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +0 -2
  79. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +0 -2
  80. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +0 -2
  81. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +3 -8
  82. package/src/duckdb/src/include/duckdb/common/constants.hpp +4 -2
  83. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +16 -46
  84. package/src/duckdb/src/include/duckdb/common/index_vector.hpp +4 -4
  85. package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +2 -6
  86. package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +0 -4
  87. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +44 -23
  88. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +31 -23
  89. package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_reader.hpp +4 -6
  90. package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_writer.hpp +3 -3
  91. package/src/duckdb/src/include/duckdb/common/serializer/deserialization_data.hpp +17 -0
  92. package/src/duckdb/src/include/duckdb/common/serializer/{format_deserializer.hpp → deserializer.hpp} +13 -13
  93. package/src/duckdb/src/include/duckdb/common/serializer/memory_stream.hpp +62 -0
  94. package/src/duckdb/src/include/duckdb/common/serializer/read_stream.hpp +38 -0
  95. package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +15 -13
  96. package/src/duckdb/src/include/duckdb/common/serializer/{format_serializer.hpp → serializer.hpp} +13 -12
  97. package/src/duckdb/src/include/duckdb/common/serializer/write_stream.hpp +36 -0
  98. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection.hpp +2 -2
  99. package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +3 -8
  100. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +4 -10
  101. package/src/duckdb/src/include/duckdb/common/types/interval.hpp +4 -4
  102. package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -5
  103. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +2 -7
  104. package/src/duckdb/src/include/duckdb/common/types.hpp +1 -10
  105. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_reader_options.hpp +2 -11
  106. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +4 -14
  107. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +3 -3
  108. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +15 -98
  109. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +1 -7
  110. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +9 -10
  111. package/src/duckdb/src/include/duckdb/function/scalar/strftime_format.hpp +2 -2
  112. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -12
  113. package/src/duckdb/src/include/duckdb/function/scalar_macro_function.hpp +2 -7
  114. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +4 -16
  115. package/src/duckdb/src/include/duckdb/function/table_function.hpp +2 -11
  116. package/src/duckdb/src/include/duckdb/function/table_macro_function.hpp +2 -7
  117. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +1 -0
  118. package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +1 -0
  119. package/src/duckdb/src/include/duckdb/parser/column_definition.hpp +1 -4
  120. package/src/duckdb/src/include/duckdb/parser/column_list.hpp +2 -6
  121. package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +2 -2
  122. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -12
  123. package/src/duckdb/src/include/duckdb/parser/constraints/check_constraint.hpp +2 -5
  124. package/src/duckdb/src/include/duckdb/parser/constraints/foreign_key_constraint.hpp +2 -7
  125. package/src/duckdb/src/include/duckdb/parser/constraints/not_null_constraint.hpp +2 -7
  126. package/src/duckdb/src/include/duckdb/parser/constraints/unique_constraint.hpp +2 -7
  127. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +2 -5
  128. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -4
  129. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +4 -6
  130. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +2 -4
  131. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +2 -4
  132. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +2 -4
  133. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +2 -4
  134. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +2 -4
  135. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +2 -5
  136. package/src/duckdb/src/include/duckdb/parser/expression/default_expression.hpp +2 -4
  137. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +2 -4
  138. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +2 -4
  139. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +2 -4
  140. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +2 -4
  141. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +2 -4
  142. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +2 -4
  143. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +2 -4
  144. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +2 -4
  145. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +2 -5
  146. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_scalar_function_info.hpp +0 -2
  147. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_function_info.hpp +0 -2
  148. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +24 -51
  149. package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +1 -4
  150. package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +2 -2
  151. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_collation_info.hpp +0 -3
  152. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_copy_function_info.hpp +0 -3
  153. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_function_info.hpp +0 -5
  154. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_index_info.hpp +2 -7
  155. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +1 -13
  156. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_macro_info.hpp +2 -8
  157. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_schema_info.hpp +2 -12
  158. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_sequence_info.hpp +2 -7
  159. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_info.hpp +2 -7
  160. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_type_info.hpp +2 -7
  161. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +2 -7
  162. package/src/duckdb/src/include/duckdb/parser/parsed_data/detach_info.hpp +2 -4
  163. package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +2 -5
  164. package/src/duckdb/src/include/duckdb/parser/parsed_data/load_info.hpp +2 -21
  165. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
  166. package/src/duckdb/src/include/duckdb/parser/parsed_data/pragma_info.hpp +2 -2
  167. package/src/duckdb/src/include/duckdb/parser/parsed_data/sample_options.hpp +2 -4
  168. package/src/duckdb/src/include/duckdb/parser/parsed_data/transaction_info.hpp +1 -4
  169. package/src/duckdb/src/include/duckdb/parser/parsed_data/vacuum_info.hpp +5 -7
  170. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +3 -16
  171. package/src/duckdb/src/include/duckdb/parser/query_node/cte_node.hpp +2 -4
  172. package/src/duckdb/src/include/duckdb/parser/query_node/recursive_cte_node.hpp +2 -4
  173. package/src/duckdb/src/include/duckdb/parser/query_node/select_node.hpp +2 -4
  174. package/src/duckdb/src/include/duckdb/parser/query_node/set_operation_node.hpp +2 -4
  175. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +7 -14
  176. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +14 -32
  177. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +4 -9
  178. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +2 -6
  179. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -6
  180. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +2 -6
  181. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +2 -6
  182. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +6 -14
  183. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +2 -6
  184. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +2 -6
  185. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +2 -10
  186. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +1 -0
  187. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +0 -1
  188. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +2 -8
  189. package/src/duckdb/src/include/duckdb/planner/column_binding.hpp +4 -4
  190. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +2 -4
  191. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +2 -4
  192. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +3 -9
  193. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +2 -5
  194. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +2 -8
  195. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +2 -4
  196. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +2 -5
  197. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +2 -5
  198. package/src/duckdb/src/include/duckdb/planner/expression/bound_default_expression.hpp +2 -5
  199. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +2 -5
  200. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +2 -4
  201. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +2 -8
  202. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +2 -5
  203. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_data.hpp +2 -19
  204. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +2 -5
  205. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +2 -5
  206. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +0 -3
  207. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +2 -5
  208. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +2 -5
  209. package/src/duckdb/src/include/duckdb/planner/expression.hpp +2 -14
  210. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +4 -8
  211. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +2 -4
  212. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +4 -8
  213. package/src/duckdb/src/include/duckdb/planner/joinside.hpp +1 -6
  214. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +2 -17
  215. package/src/duckdb/src/include/duckdb/planner/operator/logical_aggregate.hpp +2 -4
  216. package/src/duckdb/src/include/duckdb/planner/operator/logical_any_join.hpp +2 -4
  217. package/src/duckdb/src/include/duckdb/planner/operator/logical_column_data_get.hpp +2 -5
  218. package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +2 -6
  219. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +2 -4
  220. package/src/duckdb/src/include/duckdb/planner/operator/logical_create.hpp +2 -5
  221. package/src/duckdb/src/include/duckdb/planner/operator/logical_create_index.hpp +2 -5
  222. package/src/duckdb/src/include/duckdb/planner/operator/logical_create_table.hpp +2 -5
  223. package/src/duckdb/src/include/duckdb/planner/operator/logical_cross_product.hpp +2 -5
  224. package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +2 -4
  225. package/src/duckdb/src/include/duckdb/planner/operator/logical_delete.hpp +2 -5
  226. package/src/duckdb/src/include/duckdb/planner/operator/logical_delim_get.hpp +2 -4
  227. package/src/duckdb/src/include/duckdb/planner/operator/logical_dependent_join.hpp +0 -1
  228. package/src/duckdb/src/include/duckdb/planner/operator/logical_distinct.hpp +2 -4
  229. package/src/duckdb/src/include/duckdb/planner/operator/logical_dummy_scan.hpp +2 -4
  230. package/src/duckdb/src/include/duckdb/planner/operator/logical_empty_result.hpp +2 -4
  231. package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +0 -2
  232. package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +2 -5
  233. package/src/duckdb/src/include/duckdb/planner/operator/logical_export.hpp +0 -3
  234. package/src/duckdb/src/include/duckdb/planner/operator/logical_expression_get.hpp +2 -4
  235. package/src/duckdb/src/include/duckdb/planner/operator/logical_extension_operator.hpp +2 -4
  236. package/src/duckdb/src/include/duckdb/planner/operator/logical_filter.hpp +2 -4
  237. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +2 -4
  238. package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +2 -5
  239. package/src/duckdb/src/include/duckdb/planner/operator/logical_join.hpp +0 -2
  240. package/src/duckdb/src/include/duckdb/planner/operator/logical_limit.hpp +2 -5
  241. package/src/duckdb/src/include/duckdb/planner/operator/logical_limit_percent.hpp +2 -5
  242. package/src/duckdb/src/include/duckdb/planner/operator/logical_materialized_cte.hpp +2 -4
  243. package/src/duckdb/src/include/duckdb/planner/operator/logical_order.hpp +2 -5
  244. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +2 -4
  245. package/src/duckdb/src/include/duckdb/planner/operator/logical_positional_join.hpp +2 -5
  246. package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +0 -2
  247. package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +0 -2
  248. package/src/duckdb/src/include/duckdb/planner/operator/logical_projection.hpp +2 -4
  249. package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +2 -4
  250. package/src/duckdb/src/include/duckdb/planner/operator/logical_reset.hpp +2 -5
  251. package/src/duckdb/src/include/duckdb/planner/operator/logical_sample.hpp +2 -5
  252. package/src/duckdb/src/include/duckdb/planner/operator/logical_set.hpp +2 -5
  253. package/src/duckdb/src/include/duckdb/planner/operator/logical_set_operation.hpp +2 -5
  254. package/src/duckdb/src/include/duckdb/planner/operator/logical_show.hpp +2 -5
  255. package/src/duckdb/src/include/duckdb/planner/operator/logical_simple.hpp +2 -5
  256. package/src/duckdb/src/include/duckdb/planner/operator/logical_top_n.hpp +2 -4
  257. package/src/duckdb/src/include/duckdb/planner/operator/logical_unnest.hpp +2 -4
  258. package/src/duckdb/src/include/duckdb/planner/operator/logical_update.hpp +2 -4
  259. package/src/duckdb/src/include/duckdb/planner/operator/logical_window.hpp +2 -4
  260. package/src/duckdb/src/include/duckdb/planner/operator_extension.hpp +1 -3
  261. package/src/duckdb/src/include/duckdb/planner/parsed_data/bound_create_table_info.hpp +0 -5
  262. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +3 -12
  263. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +2 -2
  264. package/src/duckdb/src/include/duckdb/storage/block.hpp +7 -4
  265. package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +3 -2
  266. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +6 -6
  267. package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +18 -18
  268. package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +6 -0
  269. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +1 -1
  270. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_manager.hpp +4 -5
  271. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_reader.hpp +2 -1
  272. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_writer.hpp +2 -2
  273. package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +2 -11
  274. package/src/duckdb/src/include/duckdb/storage/statistics/column_statistics.hpp +3 -5
  275. package/src/duckdb/src/include/duckdb/storage/statistics/distinct_statistics.hpp +3 -11
  276. package/src/duckdb/src/include/duckdb/storage/statistics/list_stats.hpp +2 -7
  277. package/src/duckdb/src/include/duckdb/storage/statistics/node_statistics.hpp +0 -26
  278. package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats.hpp +2 -7
  279. package/src/duckdb/src/include/duckdb/storage/statistics/string_stats.hpp +2 -7
  280. package/src/duckdb/src/include/duckdb/storage/statistics/struct_stats.hpp +2 -7
  281. package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +4 -6
  282. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +8 -17
  283. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +1 -1
  284. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +2 -2
  285. package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +1 -1
  286. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +2 -7
  287. package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +2 -2
  288. package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +4 -7
  289. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +27 -29
  290. package/src/duckdb/src/include/duckdb/verification/statement_verifier.hpp +0 -2
  291. package/src/duckdb/src/main/client_context.cpp +0 -6
  292. package/src/duckdb/src/main/client_verify.cpp +0 -2
  293. package/src/duckdb/src/main/extension/extension_helper.cpp +18 -0
  294. package/src/duckdb/src/main/extension/extension_install.cpp +5 -3
  295. package/src/duckdb/src/main/extension/extension_load.cpp +3 -3
  296. package/src/duckdb/src/parser/column_definition.cpp +0 -25
  297. package/src/duckdb/src/parser/column_list.cpp +0 -13
  298. package/src/duckdb/src/parser/constraint.cpp +0 -33
  299. package/src/duckdb/src/parser/constraints/check_constraint.cpp +0 -11
  300. package/src/duckdb/src/parser/constraints/foreign_key_constraint.cpp +0 -27
  301. package/src/duckdb/src/parser/constraints/not_null_constraint.cpp +0 -11
  302. package/src/duckdb/src/parser/constraints/unique_constraint.cpp +0 -24
  303. package/src/duckdb/src/parser/expression/between_expression.cpp +2 -16
  304. package/src/duckdb/src/parser/expression/case_expression.cpp +2 -29
  305. package/src/duckdb/src/parser/expression/cast_expression.cpp +2 -16
  306. package/src/duckdb/src/parser/expression/collate_expression.cpp +2 -14
  307. package/src/duckdb/src/parser/expression/columnref_expression.cpp +2 -13
  308. package/src/duckdb/src/parser/expression/comparison_expression.cpp +2 -14
  309. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -13
  310. package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -12
  311. package/src/duckdb/src/parser/expression/default_expression.cpp +2 -9
  312. package/src/duckdb/src/parser/expression/function_expression.cpp +2 -32
  313. package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -14
  314. package/src/duckdb/src/parser/expression/operator_expression.cpp +2 -13
  315. package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -13
  316. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +2 -12
  317. package/src/duckdb/src/parser/expression/star_expression.cpp +2 -43
  318. package/src/duckdb/src/parser/expression/subquery_expression.cpp +2 -28
  319. package/src/duckdb/src/parser/expression/window_expression.cpp +2 -53
  320. package/src/duckdb/src/parser/parsed_data/alter_info.cpp +0 -35
  321. package/src/duckdb/src/parser/parsed_data/alter_scalar_function_info.cpp +0 -18
  322. package/src/duckdb/src/parser/parsed_data/alter_table_function_info.cpp +0 -13
  323. package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +1 -189
  324. package/src/duckdb/src/parser/parsed_data/attach_info.cpp +0 -29
  325. package/src/duckdb/src/parser/parsed_data/create_collation_info.cpp +0 -4
  326. package/src/duckdb/src/parser/parsed_data/create_copy_function_info.cpp +0 -4
  327. package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +0 -48
  328. package/src/duckdb/src/parser/parsed_data/create_info.cpp +0 -47
  329. package/src/duckdb/src/parser/parsed_data/create_macro_info.cpp +1 -28
  330. package/src/duckdb/src/parser/parsed_data/create_sequence_info.cpp +0 -31
  331. package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +0 -23
  332. package/src/duckdb/src/parser/parsed_data/create_type_info.cpp +0 -22
  333. package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +0 -23
  334. package/src/duckdb/src/parser/parsed_data/detach_info.cpp +0 -19
  335. package/src/duckdb/src/parser/parsed_data/drop_info.cpp +0 -26
  336. package/src/duckdb/src/parser/parsed_data/sample_options.cpp +2 -25
  337. package/src/duckdb/src/parser/parsed_data/transaction_info.cpp +0 -16
  338. package/src/duckdb/src/parser/parsed_data/vacuum_info.cpp +0 -20
  339. package/src/duckdb/src/parser/parsed_expression.cpp +2 -79
  340. package/src/duckdb/src/parser/query_node/cte_node.cpp +2 -19
  341. package/src/duckdb/src/parser/query_node/recursive_cte_node.cpp +2 -21
  342. package/src/duckdb/src/parser/query_node/select_node.cpp +2 -47
  343. package/src/duckdb/src/parser/query_node/set_operation_node.cpp +2 -17
  344. package/src/duckdb/src/parser/query_node.cpp +2 -62
  345. package/src/duckdb/src/parser/result_modifier.cpp +2 -96
  346. package/src/duckdb/src/parser/statement/select_statement.cpp +2 -13
  347. package/src/duckdb/src/parser/tableref/basetableref.cpp +2 -21
  348. package/src/duckdb/src/parser/tableref/emptytableref.cpp +0 -9
  349. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +2 -28
  350. package/src/duckdb/src/parser/tableref/joinref.cpp +2 -23
  351. package/src/duckdb/src/parser/tableref/pivotref.cpp +0 -61
  352. package/src/duckdb/src/parser/tableref/subqueryref.cpp +2 -15
  353. package/src/duckdb/src/parser/tableref/table_function.cpp +2 -17
  354. package/src/duckdb/src/parser/tableref.cpp +2 -52
  355. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +1 -4
  356. package/src/duckdb/src/planner/bound_result_modifier.cpp +0 -33
  357. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +6 -30
  358. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +0 -19
  359. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +0 -36
  360. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +0 -15
  361. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +0 -20
  362. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +0 -13
  363. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +0 -13
  364. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +0 -11
  365. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -5
  366. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +8 -28
  367. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +0 -4
  368. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +0 -23
  369. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +0 -16
  370. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +0 -18
  371. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +0 -16
  372. package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +0 -4
  373. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +0 -15
  374. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +7 -60
  375. package/src/duckdb/src/planner/expression.cpp +0 -74
  376. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +0 -21
  377. package/src/duckdb/src/planner/filter/constant_filter.cpp +0 -12
  378. package/src/duckdb/src/planner/filter/null_filter.cpp +0 -14
  379. package/src/duckdb/src/planner/joinside.cpp +0 -24
  380. package/src/duckdb/src/planner/logical_operator.cpp +15 -215
  381. package/src/duckdb/src/planner/operator/logical_aggregate.cpp +0 -46
  382. package/src/duckdb/src/planner/operator/logical_any_join.cpp +0 -14
  383. package/src/duckdb/src/planner/operator/logical_column_data_get.cpp +0 -23
  384. package/src/duckdb/src/planner/operator/logical_comparison_join.cpp +0 -23
  385. package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +2 -56
  386. package/src/duckdb/src/planner/operator/logical_create.cpp +0 -12
  387. package/src/duckdb/src/planner/operator/logical_create_index.cpp +0 -25
  388. package/src/duckdb/src/planner/operator/logical_create_table.cpp +0 -10
  389. package/src/duckdb/src/planner/operator/logical_cross_product.cpp +0 -9
  390. package/src/duckdb/src/planner/operator/logical_cteref.cpp +0 -18
  391. package/src/duckdb/src/planner/operator/logical_delete.cpp +0 -22
  392. package/src/duckdb/src/planner/operator/logical_delim_get.cpp +0 -12
  393. package/src/duckdb/src/planner/operator/logical_dependent_join.cpp +0 -4
  394. package/src/duckdb/src/planner/operator/logical_distinct.cpp +0 -16
  395. package/src/duckdb/src/planner/operator/logical_dummy_scan.cpp +0 -10
  396. package/src/duckdb/src/planner/operator/logical_empty_result.cpp +0 -15
  397. package/src/duckdb/src/planner/operator/logical_expression_get.cpp +0 -24
  398. package/src/duckdb/src/planner/operator/logical_extension_operator.cpp +6 -19
  399. package/src/duckdb/src/planner/operator/logical_filter.cpp +0 -15
  400. package/src/duckdb/src/planner/operator/logical_get.cpp +12 -97
  401. package/src/duckdb/src/planner/operator/logical_insert.cpp +0 -77
  402. package/src/duckdb/src/planner/operator/logical_join.cpp +0 -17
  403. package/src/duckdb/src/planner/operator/logical_limit.cpp +0 -16
  404. package/src/duckdb/src/planner/operator/logical_limit_percent.cpp +0 -16
  405. package/src/duckdb/src/planner/operator/logical_materialized_cte.cpp +0 -13
  406. package/src/duckdb/src/planner/operator/logical_order.cpp +0 -15
  407. package/src/duckdb/src/planner/operator/logical_pivot.cpp +0 -20
  408. package/src/duckdb/src/planner/operator/logical_positional_join.cpp +0 -10
  409. package/src/duckdb/src/planner/operator/logical_pragma.cpp +0 -8
  410. package/src/duckdb/src/planner/operator/logical_prepare.cpp +0 -8
  411. package/src/duckdb/src/planner/operator/logical_projection.cpp +0 -12
  412. package/src/duckdb/src/planner/operator/logical_recursive_cte.cpp +0 -15
  413. package/src/duckdb/src/planner/operator/logical_reset.cpp +0 -12
  414. package/src/duckdb/src/planner/operator/logical_sample.cpp +0 -11
  415. package/src/duckdb/src/planner/operator/logical_set.cpp +0 -14
  416. package/src/duckdb/src/planner/operator/logical_set_operation.cpp +0 -13
  417. package/src/duckdb/src/planner/operator/logical_simple.cpp +0 -60
  418. package/src/duckdb/src/planner/operator/logical_top_n.cpp +0 -14
  419. package/src/duckdb/src/planner/operator/logical_unnest.cpp +0 -14
  420. package/src/duckdb/src/planner/operator/logical_update.cpp +0 -28
  421. package/src/duckdb/src/planner/operator/logical_window.cpp +0 -13
  422. package/src/duckdb/src/planner/planner.cpp +13 -22
  423. package/src/duckdb/src/planner/table_filter.cpp +0 -59
  424. package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +7 -17
  425. package/src/duckdb/src/storage/checkpoint/table_data_reader.cpp +7 -4
  426. package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +24 -22
  427. package/src/duckdb/src/storage/checkpoint_manager.cpp +203 -180
  428. package/src/duckdb/src/storage/data_table.cpp +2 -2
  429. package/src/duckdb/src/storage/metadata/metadata_manager.cpp +11 -9
  430. package/src/duckdb/src/storage/serialization/serialize_constraint.cpp +20 -20
  431. package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +46 -42
  432. package/src/duckdb/src/storage/serialization/serialize_expression.cpp +63 -63
  433. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +167 -165
  434. package/src/duckdb/src/storage/serialization/serialize_macro_function.cpp +12 -12
  435. package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +54 -54
  436. package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +88 -88
  437. package/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp +72 -72
  438. package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +20 -20
  439. package/src/duckdb/src/storage/serialization/serialize_result_modifier.cpp +22 -22
  440. package/src/duckdb/src/storage/serialization/serialize_statement.cpp +4 -4
  441. package/src/duckdb/src/storage/serialization/serialize_storage.cpp +41 -6
  442. package/src/duckdb/src/storage/serialization/serialize_table_filter.cpp +24 -24
  443. package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +32 -32
  444. package/src/duckdb/src/storage/serialization/serialize_types.cpp +29 -29
  445. package/src/duckdb/src/storage/single_file_block_manager.cpp +17 -22
  446. package/src/duckdb/src/storage/statistics/base_statistics.cpp +31 -85
  447. package/src/duckdb/src/storage/statistics/column_statistics.cpp +6 -19
  448. package/src/duckdb/src/storage/statistics/distinct_statistics.cpp +0 -26
  449. package/src/duckdb/src/storage/statistics/list_stats.cpp +6 -22
  450. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +20 -135
  451. package/src/duckdb/src/storage/statistics/string_stats.cpp +5 -28
  452. package/src/duckdb/src/storage/statistics/struct_stats.cpp +8 -30
  453. package/src/duckdb/src/storage/storage_info.cpp +1 -1
  454. package/src/duckdb/src/storage/table/chunk_info.cpp +9 -88
  455. package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +2 -2
  456. package/src/duckdb/src/storage/table/column_data.cpp +20 -25
  457. package/src/duckdb/src/storage/table/list_column_data.cpp +16 -9
  458. package/src/duckdb/src/storage/table/row_group.cpp +16 -92
  459. package/src/duckdb/src/storage/table/row_group_collection.cpp +5 -1
  460. package/src/duckdb/src/storage/table/standard_column_data.cpp +10 -7
  461. package/src/duckdb/src/storage/table/struct_column_data.cpp +17 -11
  462. package/src/duckdb/src/storage/table/table_statistics.cpp +13 -22
  463. package/src/duckdb/src/storage/wal_replay.cpp +108 -106
  464. package/src/duckdb/src/storage/write_ahead_log.cpp +135 -64
  465. package/src/duckdb/src/transaction/commit_state.cpp +22 -8
  466. package/src/duckdb/src/verification/deserialized_statement_verifier.cpp +11 -6
  467. package/src/duckdb/src/verification/statement_verifier.cpp +0 -5
  468. package/src/duckdb/third_party/parquet/parquet_types.h +1 -1
  469. package/src/duckdb/ub_src_common.cpp +0 -4
  470. package/src/duckdb/ub_src_common_serializer.cpp +2 -4
  471. package/src/duckdb/ub_src_planner.cpp +0 -2
  472. package/src/duckdb/ub_src_planner_expression.cpp +0 -2
  473. package/src/duckdb/ub_src_planner_operator.cpp +0 -8
  474. package/src/duckdb_node.cpp +6 -12
  475. package/src/duckdb_node.hpp +23 -13
  476. package/src/statement.cpp +15 -16
  477. package/test/database_fail.test.ts +20 -0
  478. package/test/worker.js +7 -0
  479. package/src/duckdb/src/common/field_writer.cpp +0 -97
  480. package/src/duckdb/src/common/serializer/buffered_deserializer.cpp +0 -27
  481. package/src/duckdb/src/common/serializer/buffered_serializer.cpp +0 -36
  482. package/src/duckdb/src/common/serializer.cpp +0 -24
  483. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +0 -379
  484. package/src/duckdb/src/include/duckdb/common/serializer/buffered_deserializer.hpp +0 -41
  485. package/src/duckdb/src/include/duckdb/common/serializer/buffered_serializer.hpp +0 -50
  486. package/src/duckdb/src/include/duckdb/common/serializer.hpp +0 -151
  487. package/src/duckdb/src/include/duckdb/planner/plan_serialization.hpp +0 -44
  488. package/src/duckdb/src/include/duckdb/verification/deserialized_statement_verifier_v2.hpp +0 -32
  489. package/src/duckdb/src/planner/expression/bound_default_expression.cpp +0 -16
  490. package/src/duckdb/src/planner/operator/logical_execute.cpp +0 -12
  491. package/src/duckdb/src/planner/operator/logical_explain.cpp +0 -22
  492. package/src/duckdb/src/planner/operator/logical_export.cpp +0 -13
  493. package/src/duckdb/src/planner/operator/logical_show.cpp +0 -21
  494. package/src/duckdb/src/planner/parsed_data/bound_create_table_info.cpp +0 -22
  495. package/src/duckdb/src/planner/plan_serialization.cpp +0 -20
  496. package/src/duckdb/src/verification/deserialized_statement_verifier_v2.cpp +0 -34
  497. package/src/duckdb/ub_src_planner_parsed_data.cpp +0 -2
@@ -20,13 +20,14 @@
20
20
  #include "duckdb/main/attached_database.hpp"
21
21
  #include "duckdb/execution/index/art/art.hpp"
22
22
  #include "duckdb/catalog/catalog_entry/duck_index_entry.hpp"
23
+ #include "duckdb/common/serializer/binary_deserializer.hpp"
23
24
 
24
25
  namespace duckdb {
25
26
 
26
27
  bool WriteAheadLog::Replay(AttachedDatabase &database, string &path) {
27
28
  Connection con(database.GetDatabase());
28
- auto initial_reader = make_uniq<BufferedFileReader>(FileSystem::Get(database), path.c_str(), con.context.get());
29
- if (initial_reader->Finished()) {
29
+ auto initial_source = make_uniq<BufferedFileReader>(FileSystem::Get(database), path.c_str());
30
+ if (initial_source->Finished()) {
30
31
  // WAL is empty
31
32
  return false;
32
33
  }
@@ -35,21 +36,25 @@ bool WriteAheadLog::Replay(AttachedDatabase &database, string &path) {
35
36
 
36
37
  // first deserialize the WAL to look for a checkpoint flag
37
38
  // if there is a checkpoint flag, we might have already flushed the contents of the WAL to disk
38
- ReplayState checkpoint_state(database, *con.context, *initial_reader);
39
+ ReplayState checkpoint_state(database, *con.context);
39
40
  checkpoint_state.deserialize_only = true;
40
41
  try {
41
42
  while (true) {
42
43
  // read the current entry
43
- WALType entry_type = initial_reader->Read<WALType>();
44
+ BinaryDeserializer deserializer(*initial_source);
45
+ deserializer.Begin();
46
+ auto entry_type = deserializer.ReadProperty<WALType>(100, "wal_type");
44
47
  if (entry_type == WALType::WAL_FLUSH) {
48
+ deserializer.End();
45
49
  // check if the file is exhausted
46
- if (initial_reader->Finished()) {
50
+ if (initial_source->Finished()) {
47
51
  // we finished reading the file: break
48
52
  break;
49
53
  }
50
54
  } else {
51
55
  // replay the entry
52
- checkpoint_state.ReplayEntry(entry_type);
56
+ checkpoint_state.ReplayEntry(entry_type, deserializer);
57
+ deserializer.End();
53
58
  }
54
59
  }
55
60
  } catch (std::exception &ex) { // LCOV_EXCL_START
@@ -59,7 +64,7 @@ bool WriteAheadLog::Replay(AttachedDatabase &database, string &path) {
59
64
  Printer::Print("Unknown Exception in WAL playback during initial read");
60
65
  return false;
61
66
  } // LCOV_EXCL_STOP
62
- initial_reader.reset();
67
+ initial_source.reset();
63
68
  if (checkpoint_state.checkpoint_id.IsValid()) {
64
69
  // there is a checkpoint flag: check if we need to deserialize the WAL
65
70
  auto &manager = database.GetStorageManager();
@@ -71,8 +76,8 @@ bool WriteAheadLog::Replay(AttachedDatabase &database, string &path) {
71
76
  }
72
77
 
73
78
  // we need to recover from the WAL: actually set up the replay state
74
- BufferedFileReader reader(FileSystem::Get(database), path.c_str(), con.context.get());
75
- ReplayState state(database, *con.context, reader);
79
+ BufferedFileReader reader(FileSystem::Get(database), path.c_str());
80
+ ReplayState state(database, *con.context);
76
81
 
77
82
  // replay the WAL
78
83
  // note that everything is wrapped inside a try/catch block here
@@ -81,20 +86,22 @@ bool WriteAheadLog::Replay(AttachedDatabase &database, string &path) {
81
86
  try {
82
87
  while (true) {
83
88
  // read the current entry
84
- WALType entry_type = reader.Read<WALType>();
89
+ BinaryDeserializer deserializer(reader);
90
+ deserializer.Begin();
91
+ auto entry_type = deserializer.ReadProperty<WALType>(100, "wal_type");
85
92
  if (entry_type == WALType::WAL_FLUSH) {
86
- // flush: commit the current transaction
93
+ deserializer.End();
87
94
  con.Commit();
88
95
  // check if the file is exhausted
89
96
  if (reader.Finished()) {
90
97
  // we finished reading the file: break
91
98
  break;
92
99
  }
93
- // otherwise we keep on reading
94
100
  con.BeginTransaction();
95
101
  } else {
96
102
  // replay the entry
97
- state.ReplayEntry(entry_type);
103
+ state.ReplayEntry(entry_type, deserializer);
104
+ deserializer.End();
98
105
  }
99
106
  }
100
107
  } catch (std::exception &ex) { // LCOV_EXCL_START
@@ -113,76 +120,76 @@ bool WriteAheadLog::Replay(AttachedDatabase &database, string &path) {
113
120
  //===--------------------------------------------------------------------===//
114
121
  // Replay Entries
115
122
  //===--------------------------------------------------------------------===//
116
- void ReplayState::ReplayEntry(WALType entry_type) {
123
+ void ReplayState::ReplayEntry(WALType entry_type, BinaryDeserializer &deserializer) {
117
124
  switch (entry_type) {
118
125
  case WALType::CREATE_TABLE:
119
- ReplayCreateTable();
126
+ ReplayCreateTable(deserializer);
120
127
  break;
121
128
  case WALType::DROP_TABLE:
122
- ReplayDropTable();
129
+ ReplayDropTable(deserializer);
123
130
  break;
124
131
  case WALType::ALTER_INFO:
125
- ReplayAlter();
132
+ ReplayAlter(deserializer);
126
133
  break;
127
134
  case WALType::CREATE_VIEW:
128
- ReplayCreateView();
135
+ ReplayCreateView(deserializer);
129
136
  break;
130
137
  case WALType::DROP_VIEW:
131
- ReplayDropView();
138
+ ReplayDropView(deserializer);
132
139
  break;
133
140
  case WALType::CREATE_SCHEMA:
134
- ReplayCreateSchema();
141
+ ReplayCreateSchema(deserializer);
135
142
  break;
136
143
  case WALType::DROP_SCHEMA:
137
- ReplayDropSchema();
144
+ ReplayDropSchema(deserializer);
138
145
  break;
139
146
  case WALType::CREATE_SEQUENCE:
140
- ReplayCreateSequence();
147
+ ReplayCreateSequence(deserializer);
141
148
  break;
142
149
  case WALType::DROP_SEQUENCE:
143
- ReplayDropSequence();
150
+ ReplayDropSequence(deserializer);
144
151
  break;
145
152
  case WALType::SEQUENCE_VALUE:
146
- ReplaySequenceValue();
153
+ ReplaySequenceValue(deserializer);
147
154
  break;
148
155
  case WALType::CREATE_MACRO:
149
- ReplayCreateMacro();
156
+ ReplayCreateMacro(deserializer);
150
157
  break;
151
158
  case WALType::DROP_MACRO:
152
- ReplayDropMacro();
159
+ ReplayDropMacro(deserializer);
153
160
  break;
154
161
  case WALType::CREATE_TABLE_MACRO:
155
- ReplayCreateTableMacro();
162
+ ReplayCreateTableMacro(deserializer);
156
163
  break;
157
164
  case WALType::DROP_TABLE_MACRO:
158
- ReplayDropTableMacro();
165
+ ReplayDropTableMacro(deserializer);
159
166
  break;
160
167
  case WALType::CREATE_INDEX:
161
- ReplayCreateIndex();
168
+ ReplayCreateIndex(deserializer);
162
169
  break;
163
170
  case WALType::DROP_INDEX:
164
- ReplayDropIndex();
171
+ ReplayDropIndex(deserializer);
165
172
  break;
166
173
  case WALType::USE_TABLE:
167
- ReplayUseTable();
174
+ ReplayUseTable(deserializer);
168
175
  break;
169
176
  case WALType::INSERT_TUPLE:
170
- ReplayInsert();
177
+ ReplayInsert(deserializer);
171
178
  break;
172
179
  case WALType::DELETE_TUPLE:
173
- ReplayDelete();
180
+ ReplayDelete(deserializer);
174
181
  break;
175
182
  case WALType::UPDATE_TUPLE:
176
- ReplayUpdate();
183
+ ReplayUpdate(deserializer);
177
184
  break;
178
185
  case WALType::CHECKPOINT:
179
- ReplayCheckpoint();
186
+ ReplayCheckpoint(deserializer);
180
187
  break;
181
188
  case WALType::CREATE_TYPE:
182
- ReplayCreateType();
189
+ ReplayCreateType(deserializer);
183
190
  break;
184
191
  case WALType::DROP_TYPE:
185
- ReplayDropType();
192
+ ReplayDropType(deserializer);
186
193
  break;
187
194
  default:
188
195
  throw InternalException("Invalid WAL entry type!");
@@ -192,14 +199,12 @@ void ReplayState::ReplayEntry(WALType entry_type) {
192
199
  //===--------------------------------------------------------------------===//
193
200
  // Replay Table
194
201
  //===--------------------------------------------------------------------===//
195
- void ReplayState::ReplayCreateTable() {
196
- auto info = TableCatalogEntry::Deserialize(source);
202
+ void ReplayState::ReplayCreateTable(BinaryDeserializer &deserializer) {
203
+ auto info = deserializer.ReadProperty<unique_ptr<CreateInfo>>(101, "table");
197
204
  if (deserialize_only) {
198
205
  return;
199
206
  }
200
-
201
207
  // bind the constraints to the table again
202
-
203
208
  auto binder = Binder::CreateBinder(context);
204
209
  auto &schema = catalog.GetSchema(context, info->schema);
205
210
  auto bound_info = binder->BindCreateTableInfo(std::move(info), schema);
@@ -207,12 +212,13 @@ void ReplayState::ReplayCreateTable() {
207
212
  catalog.CreateTable(context, *bound_info);
208
213
  }
209
214
 
210
- void ReplayState::ReplayDropTable() {
215
+ void ReplayState::ReplayDropTable(BinaryDeserializer &deserializer) {
216
+
211
217
  DropInfo info;
212
218
 
213
219
  info.type = CatalogType::TABLE_ENTRY;
214
- info.schema = source.Read<string>();
215
- info.name = source.Read<string>();
220
+ info.schema = deserializer.ReadProperty<string>(101, "schema");
221
+ info.name = deserializer.ReadProperty<string>(102, "name");
216
222
  if (deserialize_only) {
217
223
  return;
218
224
  }
@@ -220,31 +226,32 @@ void ReplayState::ReplayDropTable() {
220
226
  catalog.DropEntry(context, info);
221
227
  }
222
228
 
223
- void ReplayState::ReplayAlter() {
224
- auto info = AlterInfo::Deserialize(source);
229
+ void ReplayState::ReplayAlter(BinaryDeserializer &deserializer) {
230
+
231
+ auto info = deserializer.ReadProperty<unique_ptr<ParseInfo>>(101, "info");
232
+ auto &alter_info = info->Cast<AlterInfo>();
225
233
  if (deserialize_only) {
226
234
  return;
227
235
  }
228
- catalog.Alter(context, *info);
236
+ catalog.Alter(context, alter_info);
229
237
  }
230
238
 
231
239
  //===--------------------------------------------------------------------===//
232
240
  // Replay View
233
241
  //===--------------------------------------------------------------------===//
234
- void ReplayState::ReplayCreateView() {
235
- auto entry = CatalogEntry::Deserialize(source);
242
+ void ReplayState::ReplayCreateView(BinaryDeserializer &deserializer) {
243
+ auto entry = deserializer.ReadProperty<unique_ptr<CreateInfo>>(101, "view");
236
244
  if (deserialize_only) {
237
245
  return;
238
246
  }
239
-
240
247
  catalog.CreateView(context, entry->Cast<CreateViewInfo>());
241
248
  }
242
249
 
243
- void ReplayState::ReplayDropView() {
250
+ void ReplayState::ReplayDropView(BinaryDeserializer &deserializer) {
244
251
  DropInfo info;
245
252
  info.type = CatalogType::VIEW_ENTRY;
246
- info.schema = source.Read<string>();
247
- info.name = source.Read<string>();
253
+ info.schema = deserializer.ReadProperty<string>(101, "schema");
254
+ info.name = deserializer.ReadProperty<string>(102, "name");
248
255
  if (deserialize_only) {
249
256
  return;
250
257
  }
@@ -254,9 +261,9 @@ void ReplayState::ReplayDropView() {
254
261
  //===--------------------------------------------------------------------===//
255
262
  // Replay Schema
256
263
  //===--------------------------------------------------------------------===//
257
- void ReplayState::ReplayCreateSchema() {
264
+ void ReplayState::ReplayCreateSchema(BinaryDeserializer &deserializer) {
258
265
  CreateSchemaInfo info;
259
- info.schema = source.Read<string>();
266
+ info.schema = deserializer.ReadProperty<string>(101, "schema");
260
267
  if (deserialize_only) {
261
268
  return;
262
269
  }
@@ -264,11 +271,11 @@ void ReplayState::ReplayCreateSchema() {
264
271
  catalog.CreateSchema(context, info);
265
272
  }
266
273
 
267
- void ReplayState::ReplayDropSchema() {
274
+ void ReplayState::ReplayDropSchema(BinaryDeserializer &deserializer) {
268
275
  DropInfo info;
269
276
 
270
277
  info.type = CatalogType::SCHEMA_ENTRY;
271
- info.name = source.Read<string>();
278
+ info.name = deserializer.ReadProperty<string>(101, "schema");
272
279
  if (deserialize_only) {
273
280
  return;
274
281
  }
@@ -279,18 +286,18 @@ void ReplayState::ReplayDropSchema() {
279
286
  //===--------------------------------------------------------------------===//
280
287
  // Replay Custom Type
281
288
  //===--------------------------------------------------------------------===//
282
- void ReplayState::ReplayCreateType() {
283
- auto info = TypeCatalogEntry::Deserialize(source);
289
+ void ReplayState::ReplayCreateType(BinaryDeserializer &deserializer) {
290
+ auto info = deserializer.ReadProperty<unique_ptr<CreateInfo>>(101, "type");
284
291
  info->on_conflict = OnCreateConflict::IGNORE_ON_CONFLICT;
285
292
  catalog.CreateType(context, info->Cast<CreateTypeInfo>());
286
293
  }
287
294
 
288
- void ReplayState::ReplayDropType() {
295
+ void ReplayState::ReplayDropType(BinaryDeserializer &deserializer) {
289
296
  DropInfo info;
290
297
 
291
298
  info.type = CatalogType::TYPE_ENTRY;
292
- info.schema = source.Read<string>();
293
- info.name = source.Read<string>();
299
+ info.schema = deserializer.ReadProperty<string>(101, "schema");
300
+ info.name = deserializer.ReadProperty<string>(102, "name");
294
301
  if (deserialize_only) {
295
302
  return;
296
303
  }
@@ -301,8 +308,8 @@ void ReplayState::ReplayDropType() {
301
308
  //===--------------------------------------------------------------------===//
302
309
  // Replay Sequence
303
310
  //===--------------------------------------------------------------------===//
304
- void ReplayState::ReplayCreateSequence() {
305
- auto entry = SequenceCatalogEntry::Deserialize(source);
311
+ void ReplayState::ReplayCreateSequence(BinaryDeserializer &deserializer) {
312
+ auto entry = deserializer.ReadProperty<unique_ptr<CreateInfo>>(101, "sequence");
306
313
  if (deserialize_only) {
307
314
  return;
308
315
  }
@@ -310,11 +317,11 @@ void ReplayState::ReplayCreateSequence() {
310
317
  catalog.CreateSequence(context, entry->Cast<CreateSequenceInfo>());
311
318
  }
312
319
 
313
- void ReplayState::ReplayDropSequence() {
320
+ void ReplayState::ReplayDropSequence(BinaryDeserializer &deserializer) {
314
321
  DropInfo info;
315
322
  info.type = CatalogType::SEQUENCE_ENTRY;
316
- info.schema = source.Read<string>();
317
- info.name = source.Read<string>();
323
+ info.schema = deserializer.ReadProperty<string>(101, "schema");
324
+ info.name = deserializer.ReadProperty<string>(102, "name");
318
325
  if (deserialize_only) {
319
326
  return;
320
327
  }
@@ -322,11 +329,11 @@ void ReplayState::ReplayDropSequence() {
322
329
  catalog.DropEntry(context, info);
323
330
  }
324
331
 
325
- void ReplayState::ReplaySequenceValue() {
326
- auto schema = source.Read<string>();
327
- auto name = source.Read<string>();
328
- auto usage_count = source.Read<uint64_t>();
329
- auto counter = source.Read<int64_t>();
332
+ void ReplayState::ReplaySequenceValue(BinaryDeserializer &deserializer) {
333
+ auto schema = deserializer.ReadProperty<string>(101, "schema");
334
+ auto name = deserializer.ReadProperty<string>(102, "name");
335
+ auto usage_count = deserializer.ReadProperty<uint64_t>(103, "usage_count");
336
+ auto counter = deserializer.ReadProperty<int64_t>(104, "counter");
330
337
  if (deserialize_only) {
331
338
  return;
332
339
  }
@@ -342,8 +349,8 @@ void ReplayState::ReplaySequenceValue() {
342
349
  //===--------------------------------------------------------------------===//
343
350
  // Replay Macro
344
351
  //===--------------------------------------------------------------------===//
345
- void ReplayState::ReplayCreateMacro() {
346
- auto entry = ScalarMacroCatalogEntry::Deserialize(source);
352
+ void ReplayState::ReplayCreateMacro(BinaryDeserializer &deserializer) {
353
+ auto entry = deserializer.ReadProperty<unique_ptr<CreateInfo>>(101, "macro");
347
354
  if (deserialize_only) {
348
355
  return;
349
356
  }
@@ -351,11 +358,11 @@ void ReplayState::ReplayCreateMacro() {
351
358
  catalog.CreateFunction(context, entry->Cast<CreateMacroInfo>());
352
359
  }
353
360
 
354
- void ReplayState::ReplayDropMacro() {
361
+ void ReplayState::ReplayDropMacro(BinaryDeserializer &deserializer) {
355
362
  DropInfo info;
356
363
  info.type = CatalogType::MACRO_ENTRY;
357
- info.schema = source.Read<string>();
358
- info.name = source.Read<string>();
364
+ info.schema = deserializer.ReadProperty<string>(101, "schema");
365
+ info.name = deserializer.ReadProperty<string>(102, "name");
359
366
  if (deserialize_only) {
360
367
  return;
361
368
  }
@@ -366,20 +373,19 @@ void ReplayState::ReplayDropMacro() {
366
373
  //===--------------------------------------------------------------------===//
367
374
  // Replay Table Macro
368
375
  //===--------------------------------------------------------------------===//
369
- void ReplayState::ReplayCreateTableMacro() {
370
- auto entry = TableMacroCatalogEntry::Deserialize(source);
376
+ void ReplayState::ReplayCreateTableMacro(BinaryDeserializer &deserializer) {
377
+ auto entry = deserializer.ReadProperty<unique_ptr<CreateInfo>>(101, "table_macro");
371
378
  if (deserialize_only) {
372
379
  return;
373
380
  }
374
-
375
381
  catalog.CreateFunction(context, entry->Cast<CreateMacroInfo>());
376
382
  }
377
383
 
378
- void ReplayState::ReplayDropTableMacro() {
384
+ void ReplayState::ReplayDropTableMacro(BinaryDeserializer &deserializer) {
379
385
  DropInfo info;
380
386
  info.type = CatalogType::TABLE_MACRO_ENTRY;
381
- info.schema = source.Read<string>();
382
- info.name = source.Read<string>();
387
+ info.schema = deserializer.ReadProperty<string>(101, "schema");
388
+ info.name = deserializer.ReadProperty<string>(102, "name");
383
389
  if (deserialize_only) {
384
390
  return;
385
391
  }
@@ -390,8 +396,8 @@ void ReplayState::ReplayDropTableMacro() {
390
396
  //===--------------------------------------------------------------------===//
391
397
  // Replay Index
392
398
  //===--------------------------------------------------------------------===//
393
- void ReplayState::ReplayCreateIndex() {
394
- auto info = IndexCatalogEntry::Deserialize(source);
399
+ void ReplayState::ReplayCreateIndex(BinaryDeserializer &deserializer) {
400
+ auto info = deserializer.ReadProperty<unique_ptr<CreateInfo>>(101, "index");
395
401
  if (deserialize_only) {
396
402
  return;
397
403
  }
@@ -434,11 +440,11 @@ void ReplayState::ReplayCreateIndex() {
434
440
  data_table.WALAddIndex(context, std::move(index), expressions);
435
441
  }
436
442
 
437
- void ReplayState::ReplayDropIndex() {
443
+ void ReplayState::ReplayDropIndex(BinaryDeserializer &deserializer) {
438
444
  DropInfo info;
439
445
  info.type = CatalogType::INDEX_ENTRY;
440
- info.schema = source.Read<string>();
441
- info.name = source.Read<string>();
446
+ info.schema = deserializer.ReadProperty<string>(101, "schema");
447
+ info.name = deserializer.ReadProperty<string>(102, "name");
442
448
  if (deserialize_only) {
443
449
  return;
444
450
  }
@@ -449,18 +455,18 @@ void ReplayState::ReplayDropIndex() {
449
455
  //===--------------------------------------------------------------------===//
450
456
  // Replay Data
451
457
  //===--------------------------------------------------------------------===//
452
- void ReplayState::ReplayUseTable() {
453
- auto schema_name = source.Read<string>();
454
- auto table_name = source.Read<string>();
458
+ void ReplayState::ReplayUseTable(BinaryDeserializer &deserializer) {
459
+ auto schema_name = deserializer.ReadProperty<string>(101, "schema");
460
+ auto table_name = deserializer.ReadProperty<string>(102, "table");
455
461
  if (deserialize_only) {
456
462
  return;
457
463
  }
458
464
  current_table = &catalog.GetEntry<TableCatalogEntry>(context, schema_name, table_name);
459
465
  }
460
466
 
461
- void ReplayState::ReplayInsert() {
467
+ void ReplayState::ReplayInsert(BinaryDeserializer &deserializer) {
462
468
  DataChunk chunk;
463
- chunk.Deserialize(source);
469
+ deserializer.ReadObject(101, "chunk", [&](Deserializer &object) { chunk.Deserialize(object); });
464
470
  if (deserialize_only) {
465
471
  return;
466
472
  }
@@ -472,9 +478,9 @@ void ReplayState::ReplayInsert() {
472
478
  current_table->GetStorage().LocalAppend(*current_table, context, chunk);
473
479
  }
474
480
 
475
- void ReplayState::ReplayDelete() {
481
+ void ReplayState::ReplayDelete(BinaryDeserializer &deserializer) {
476
482
  DataChunk chunk;
477
- chunk.Deserialize(source);
483
+ deserializer.ReadObject(101, "chunk", [&](Deserializer &object) { chunk.Deserialize(object); });
478
484
  if (deserialize_only) {
479
485
  return;
480
486
  }
@@ -494,15 +500,12 @@ void ReplayState::ReplayDelete() {
494
500
  }
495
501
  }
496
502
 
497
- void ReplayState::ReplayUpdate() {
498
- vector<column_t> column_path;
499
- auto column_index_count = source.Read<idx_t>();
500
- column_path.reserve(column_index_count);
501
- for (idx_t i = 0; i < column_index_count; i++) {
502
- column_path.push_back(source.Read<column_t>());
503
- }
503
+ void ReplayState::ReplayUpdate(BinaryDeserializer &deserializer) {
504
+ auto column_path = deserializer.ReadProperty<vector<column_t>>(101, "column_indexes");
505
+
504
506
  DataChunk chunk;
505
- chunk.Deserialize(source);
507
+ deserializer.ReadObject(102, "chunk", [&](Deserializer &object) { chunk.Deserialize(object); });
508
+
506
509
  if (deserialize_only) {
507
510
  return;
508
511
  }
@@ -522,9 +525,8 @@ void ReplayState::ReplayUpdate() {
522
525
  current_table->GetStorage().UpdateColumn(*current_table, context, row_ids, column_path, chunk);
523
526
  }
524
527
 
525
- void ReplayState::ReplayCheckpoint() {
526
- checkpoint_id.block_pointer = source.Read<idx_t>();
527
- checkpoint_id.offset = source.Read<uint32_t>();
528
+ void ReplayState::ReplayCheckpoint(BinaryDeserializer &deserializer) {
529
+ checkpoint_id = deserializer.ReadProperty<MetaBlockPointer>(101, "meta_block");
528
530
  }
529
531
 
530
532
  } // namespace duckdb