duckdb 0.8.2-dev3458.0 → 0.8.2-dev3949.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 (180) hide show
  1. package/binding.gyp +2 -0
  2. package/package.json +1 -1
  3. package/src/duckdb/extension/icu/icu_extension.cpp +5 -5
  4. package/src/duckdb/extension/json/include/json_deserializer.hpp +7 -16
  5. package/src/duckdb/extension/json/include/json_serializer.hpp +9 -15
  6. package/src/duckdb/extension/json/json_deserializer.cpp +29 -67
  7. package/src/duckdb/extension/json/json_scan.cpp +1 -1
  8. package/src/duckdb/extension/json/json_serializer.cpp +26 -69
  9. package/src/duckdb/src/common/enum_util.cpp +119 -7
  10. package/src/duckdb/src/common/extra_type_info.cpp +7 -3
  11. package/src/duckdb/src/common/radix_partitioning.cpp +8 -31
  12. package/src/duckdb/src/common/row_operations/row_aggregate.cpp +18 -3
  13. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +62 -77
  14. package/src/duckdb/src/common/serializer/binary_serializer.cpp +84 -84
  15. package/src/duckdb/src/common/serializer/format_serializer.cpp +1 -1
  16. package/src/duckdb/src/common/sort/partition_state.cpp +41 -33
  17. package/src/duckdb/src/common/types/data_chunk.cpp +44 -8
  18. package/src/duckdb/src/common/types/hyperloglog.cpp +21 -0
  19. package/src/duckdb/src/common/types/interval.cpp +3 -0
  20. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +252 -126
  21. package/src/duckdb/src/common/types/row/row_layout.cpp +3 -31
  22. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +40 -32
  23. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +39 -26
  24. package/src/duckdb/src/common/types/row/tuple_data_layout.cpp +11 -1
  25. package/src/duckdb/src/common/types/row/tuple_data_segment.cpp +21 -16
  26. package/src/duckdb/src/common/types/value.cpp +63 -42
  27. package/src/duckdb/src/common/types/vector.cpp +33 -67
  28. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +3 -2
  29. package/src/duckdb/src/execution/aggregate_hashtable.cpp +222 -364
  30. package/src/duckdb/src/execution/join_hashtable.cpp +5 -6
  31. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +240 -310
  32. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +202 -173
  33. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +36 -2
  34. package/src/duckdb/src/execution/operator/{persistent → csv_scanner}/base_csv_reader.cpp +58 -162
  35. package/src/duckdb/src/execution/operator/csv_scanner/buffered_csv_reader.cpp +434 -0
  36. package/src/duckdb/src/execution/operator/csv_scanner/csv_buffer.cpp +80 -0
  37. package/src/duckdb/src/execution/operator/csv_scanner/csv_buffer_manager.cpp +90 -0
  38. package/src/duckdb/src/execution/operator/csv_scanner/csv_file_handle.cpp +95 -0
  39. package/src/duckdb/src/execution/operator/{persistent → csv_scanner}/csv_reader_options.cpp +47 -28
  40. package/src/duckdb/src/execution/operator/csv_scanner/csv_state_machine.cpp +35 -0
  41. package/src/duckdb/src/execution/operator/csv_scanner/csv_state_machine_cache.cpp +107 -0
  42. package/src/duckdb/src/execution/operator/{persistent → csv_scanner}/parallel_csv_reader.cpp +44 -44
  43. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +52 -0
  44. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +336 -0
  45. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +165 -0
  46. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +398 -0
  47. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_refinement.cpp +175 -0
  48. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_replacement.cpp +39 -0
  49. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +1 -1
  50. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +1 -2
  51. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +614 -574
  52. package/src/duckdb/src/execution/window_executor.cpp +6 -5
  53. package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -0
  54. package/src/duckdb/src/function/scalar/strftime_format.cpp +4 -4
  55. package/src/duckdb/src/function/table/copy_csv.cpp +94 -96
  56. package/src/duckdb/src/function/table/read_csv.cpp +150 -136
  57. package/src/duckdb/src/function/table/table_scan.cpp +0 -2
  58. package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
  59. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +24 -0
  60. package/src/duckdb/src/include/duckdb/common/file_opener.hpp +9 -0
  61. package/src/duckdb/src/include/duckdb/common/fixed_size_map.hpp +208 -0
  62. package/src/duckdb/src/include/duckdb/common/optional_idx.hpp +3 -0
  63. package/src/duckdb/src/include/duckdb/common/perfect_map_set.hpp +2 -1
  64. package/src/duckdb/src/include/duckdb/common/printer.hpp +11 -0
  65. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +43 -30
  66. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +36 -35
  67. package/src/duckdb/src/include/duckdb/common/serializer/deserialization_data.hpp +18 -0
  68. package/src/duckdb/src/include/duckdb/common/serializer/encoding_util.hpp +132 -0
  69. package/src/duckdb/src/include/duckdb/common/serializer/format_deserializer.hpp +125 -150
  70. package/src/duckdb/src/include/duckdb/common/serializer/format_serializer.hpp +119 -107
  71. package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +2 -1
  72. package/src/duckdb/src/include/duckdb/common/shared_ptr.hpp +8 -0
  73. package/src/duckdb/src/include/duckdb/common/sort/partition_state.hpp +13 -7
  74. package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +5 -0
  75. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +7 -1
  76. package/src/duckdb/src/include/duckdb/common/types/interval.hpp +7 -0
  77. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +41 -9
  78. package/src/duckdb/src/include/duckdb/common/types/row/row_data_collection_scanner.hpp +5 -0
  79. package/src/duckdb/src/include/duckdb/common/types/row/row_layout.hpp +1 -23
  80. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_allocator.hpp +14 -8
  81. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +6 -3
  82. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_layout.hpp +7 -0
  83. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_segment.hpp +13 -8
  84. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +3 -2
  85. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +3 -3
  86. package/src/duckdb/src/include/duckdb/common/vector.hpp +2 -2
  87. package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +125 -146
  88. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_hash_aggregate.hpp +5 -4
  89. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +4 -3
  90. package/src/duckdb/src/include/duckdb/execution/operator/{persistent → scan/csv}/base_csv_reader.hpp +17 -17
  91. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/buffered_csv_reader.hpp +72 -0
  92. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_buffer.hpp +110 -0
  93. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_buffer_manager.hpp +103 -0
  94. package/src/duckdb/src/include/duckdb/execution/operator/{persistent → scan/csv}/csv_file_handle.hpp +8 -15
  95. package/src/duckdb/src/include/duckdb/execution/operator/{persistent → scan/csv}/csv_line_info.hpp +1 -1
  96. package/src/duckdb/src/include/duckdb/execution/operator/{persistent → scan/csv}/csv_reader_options.hpp +52 -28
  97. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_sniffer.hpp +127 -0
  98. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_state_machine.hpp +75 -0
  99. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_state_machine_cache.hpp +51 -0
  100. package/src/duckdb/src/include/duckdb/execution/operator/{persistent → scan/csv}/parallel_csv_reader.hpp +21 -27
  101. package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/quote_rules.hpp +21 -0
  102. package/src/duckdb/src/include/duckdb/execution/radix_partitioned_hashtable.hpp +18 -27
  103. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +5 -6
  104. package/src/duckdb/src/include/duckdb/function/scalar/strftime_format.hpp +4 -4
  105. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +17 -12
  106. package/src/duckdb/src/include/duckdb/main/client_context_file_opener.hpp +1 -0
  107. package/src/duckdb/src/include/duckdb/main/client_data.hpp +2 -1
  108. package/src/duckdb/src/include/duckdb/main/config.hpp +1 -0
  109. package/src/duckdb/src/include/duckdb/main/connection.hpp +2 -2
  110. package/src/duckdb/src/include/duckdb/main/relation/read_csv_relation.hpp +6 -6
  111. package/src/duckdb/src/include/duckdb/parallel/event.hpp +12 -1
  112. package/src/duckdb/src/include/duckdb/storage/block.hpp +6 -0
  113. package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +3 -0
  114. package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +7 -3
  115. package/src/duckdb/src/include/duckdb/storage/statistics/column_statistics.hpp +4 -0
  116. package/src/duckdb/src/include/duckdb/storage/statistics/distinct_statistics.hpp +5 -0
  117. package/src/duckdb/src/include/duckdb/storage/statistics/list_stats.hpp +3 -0
  118. package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats.hpp +3 -0
  119. package/src/duckdb/src/include/duckdb/storage/statistics/string_stats.hpp +3 -0
  120. package/src/duckdb/src/include/duckdb/storage/statistics/struct_stats.hpp +3 -0
  121. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +15 -3
  122. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +4 -0
  123. package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +5 -0
  124. package/src/duckdb/src/include/duckdb/verification/deserialized_statement_verifier_v2.hpp +6 -0
  125. package/src/duckdb/src/include/duckdb/verification/statement_verifier.hpp +1 -0
  126. package/src/duckdb/src/include/duckdb.h +12 -0
  127. package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -0
  128. package/src/duckdb/src/main/client_context_file_opener.cpp +17 -0
  129. package/src/duckdb/src/main/client_verify.cpp +1 -0
  130. package/src/duckdb/src/main/config.cpp +2 -2
  131. package/src/duckdb/src/main/connection.cpp +3 -3
  132. package/src/duckdb/src/main/relation/read_csv_relation.cpp +19 -13
  133. package/src/duckdb/src/parallel/pipeline_finish_event.cpp +1 -1
  134. package/src/duckdb/src/parser/tableref/pivotref.cpp +0 -16
  135. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +1 -1
  136. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +41 -25
  137. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +4 -4
  138. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +10 -10
  139. package/src/duckdb/src/planner/logical_operator.cpp +1 -1
  140. package/src/duckdb/src/planner/planner.cpp +1 -1
  141. package/src/duckdb/src/storage/checkpoint_manager.cpp +4 -3
  142. package/src/duckdb/src/storage/serialization/serialize_constraint.cpp +1 -1
  143. package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +5 -5
  144. package/src/duckdb/src/storage/serialization/serialize_expression.cpp +10 -10
  145. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +20 -20
  146. package/src/duckdb/src/storage/serialization/serialize_macro_function.cpp +2 -2
  147. package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +118 -89
  148. package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +3 -3
  149. package/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp +27 -27
  150. package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +16 -16
  151. package/src/duckdb/src/storage/serialization/serialize_result_modifier.cpp +8 -8
  152. package/src/duckdb/src/storage/serialization/serialize_statement.cpp +1 -1
  153. package/src/duckdb/src/storage/serialization/serialize_storage.cpp +39 -0
  154. package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +9 -9
  155. package/src/duckdb/src/storage/statistics/base_statistics.cpp +67 -4
  156. package/src/duckdb/src/storage/statistics/column_statistics.cpp +16 -0
  157. package/src/duckdb/src/storage/statistics/list_stats.cpp +21 -0
  158. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +126 -1
  159. package/src/duckdb/src/storage/statistics/string_stats.cpp +23 -0
  160. package/src/duckdb/src/storage/statistics/struct_stats.cpp +27 -0
  161. package/src/duckdb/src/storage/storage_info.cpp +1 -1
  162. package/src/duckdb/src/storage/table/chunk_info.cpp +82 -3
  163. package/src/duckdb/src/storage/table/row_group.cpp +68 -1
  164. package/src/duckdb/src/storage/table/table_statistics.cpp +21 -0
  165. package/src/duckdb/src/storage/wal_replay.cpp +2 -2
  166. package/src/duckdb/src/verification/deserialized_statement_verifier_v2.cpp +15 -1
  167. package/src/duckdb/src/verification/statement_verifier.cpp +2 -0
  168. package/src/duckdb/third_party/utf8proc/include/utf8proc_wrapper.hpp +8 -0
  169. package/src/duckdb/ub_src_execution.cpp +0 -2
  170. package/src/duckdb/ub_src_execution_operator_csv_scanner.cpp +18 -0
  171. package/src/duckdb/ub_src_execution_operator_csv_scanner_sniffer.cpp +12 -0
  172. package/src/duckdb/ub_src_execution_operator_persistent.cpp +0 -12
  173. package/src/duckdb/ub_src_storage_serialization.cpp +2 -0
  174. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +0 -1487
  175. package/src/duckdb/src/execution/operator/persistent/csv_buffer.cpp +0 -72
  176. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +0 -158
  177. package/src/duckdb/src/execution/partitionable_hashtable.cpp +0 -207
  178. package/src/duckdb/src/include/duckdb/execution/operator/persistent/buffered_csv_reader.hpp +0 -133
  179. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +0 -74
  180. package/src/duckdb/src/include/duckdb/execution/partitionable_hashtable.hpp +0 -73
@@ -25,15 +25,16 @@
25
25
  #include "duckdb/planner/table_filter.hpp"
26
26
  #include "duckdb/common/multi_file_reader_options.hpp"
27
27
  #include "duckdb/common/multi_file_reader.hpp"
28
- #include "duckdb/execution/operator/persistent/csv_reader_options.hpp"
28
+ #include "duckdb/execution/operator/scan/csv/csv_reader_options.hpp"
29
29
  #include "duckdb/function/scalar/strftime_format.hpp"
30
30
  #include "duckdb/function/table/read_csv.hpp"
31
+ #include "duckdb/common/types/interval.hpp"
31
32
 
32
33
  namespace duckdb {
33
34
 
34
35
  void BoundCaseCheck::FormatSerialize(FormatSerializer &serializer) const {
35
- serializer.WriteProperty(100, "when_expr", *when_expr);
36
- serializer.WriteProperty(101, "then_expr", *then_expr);
36
+ serializer.WriteProperty(100, "when_expr", when_expr);
37
+ serializer.WriteProperty(101, "then_expr", then_expr);
37
38
  }
38
39
 
39
40
  BoundCaseCheck BoundCaseCheck::FormatDeserialize(FormatDeserializer &deserializer) {
@@ -46,7 +47,7 @@ BoundCaseCheck BoundCaseCheck::FormatDeserialize(FormatDeserializer &deserialize
46
47
  void BoundOrderByNode::FormatSerialize(FormatSerializer &serializer) const {
47
48
  serializer.WriteProperty(100, "type", type);
48
49
  serializer.WriteProperty(101, "null_order", null_order);
49
- serializer.WriteProperty(102, "expression", *expression);
50
+ serializer.WriteProperty(102, "expression", expression);
50
51
  }
51
52
 
52
53
  BoundOrderByNode BoundOrderByNode::FormatDeserialize(FormatDeserializer &deserializer) {
@@ -85,89 +86,89 @@ BoundPivotInfo BoundPivotInfo::FormatDeserialize(FormatDeserializer &deserialize
85
86
  return result;
86
87
  }
87
88
 
88
- void BufferedCSVReaderOptions::FormatSerialize(FormatSerializer &serializer) const {
89
+ void CSVReaderOptions::FormatSerialize(FormatSerializer &serializer) const {
89
90
  serializer.WriteProperty(100, "has_delimiter", has_delimiter);
90
- serializer.WriteProperty(101, "delimiter", delimiter);
91
- serializer.WriteProperty(102, "has_quote", has_quote);
92
- serializer.WriteProperty(103, "quote", quote);
93
- serializer.WriteProperty(104, "has_escape", has_escape);
94
- serializer.WriteProperty(105, "escape", escape);
95
- serializer.WriteProperty(106, "has_header", has_header);
96
- serializer.WriteProperty(107, "header", header);
97
- serializer.WriteProperty(108, "ignore_errors", ignore_errors);
98
- serializer.WriteProperty(109, "num_cols", num_cols);
99
- serializer.WriteProperty(110, "buffer_sample_size", buffer_sample_size);
100
- serializer.WriteProperty(111, "null_str", null_str);
101
- serializer.WriteProperty(112, "compression", compression);
102
- serializer.WriteProperty(113, "new_line", new_line);
103
- serializer.WriteProperty(114, "allow_quoted_nulls", allow_quoted_nulls);
104
- serializer.WriteProperty(115, "skip_rows", skip_rows);
105
- serializer.WriteProperty(116, "skip_rows_set", skip_rows_set);
106
- serializer.WriteProperty(117, "maximum_line_size", maximum_line_size);
107
- serializer.WriteProperty(118, "normalize_names", normalize_names);
108
- serializer.WriteProperty(119, "force_not_null", force_not_null);
109
- serializer.WriteProperty(120, "all_varchar", all_varchar);
110
- serializer.WriteProperty(121, "sample_chunk_size", sample_chunk_size);
111
- serializer.WriteProperty(122, "sample_chunks", sample_chunks);
112
- serializer.WriteProperty(123, "auto_detect", auto_detect);
113
- serializer.WriteProperty(124, "file_path", file_path);
114
- serializer.WriteProperty(125, "decimal_separator", decimal_separator);
115
- serializer.WriteProperty(126, "null_padding", null_padding);
116
- serializer.WriteProperty(127, "buffer_size", buffer_size);
117
- serializer.WriteProperty(128, "file_options", file_options);
118
- serializer.WriteProperty(129, "force_quote", force_quote);
119
- serializer.WriteProperty(130, "date_format", date_format);
120
- serializer.WriteProperty(131, "has_format", has_format);
121
- serializer.WriteProperty(132, "rejects_table_name", rejects_table_name);
122
- serializer.WriteProperty(133, "rejects_limit", rejects_limit);
123
- serializer.WriteProperty(134, "rejects_recovery_columns", rejects_recovery_columns);
124
- serializer.WriteProperty(135, "rejects_recovery_column_ids", rejects_recovery_column_ids);
125
- }
126
-
127
- BufferedCSVReaderOptions BufferedCSVReaderOptions::FormatDeserialize(FormatDeserializer &deserializer) {
128
- BufferedCSVReaderOptions result;
91
+ serializer.WriteProperty(101, "has_quote", has_quote);
92
+ serializer.WriteProperty(102, "has_escape", has_escape);
93
+ serializer.WriteProperty(103, "has_header", has_header);
94
+ serializer.WriteProperty(104, "ignore_errors", ignore_errors);
95
+ serializer.WriteProperty(105, "buffer_sample_size", buffer_sample_size);
96
+ serializer.WriteProperty(106, "null_str", null_str);
97
+ serializer.WriteProperty(107, "compression", compression);
98
+ serializer.WriteProperty(108, "allow_quoted_nulls", allow_quoted_nulls);
99
+ serializer.WriteProperty(109, "skip_rows_set", skip_rows_set);
100
+ serializer.WriteProperty(110, "maximum_line_size", maximum_line_size);
101
+ serializer.WriteProperty(111, "normalize_names", normalize_names);
102
+ serializer.WriteProperty(112, "force_not_null", force_not_null);
103
+ serializer.WriteProperty(113, "all_varchar", all_varchar);
104
+ serializer.WriteProperty(114, "sample_chunk_size", sample_chunk_size);
105
+ serializer.WriteProperty(115, "sample_chunks", sample_chunks);
106
+ serializer.WriteProperty(116, "auto_detect", auto_detect);
107
+ serializer.WriteProperty(117, "file_path", file_path);
108
+ serializer.WriteProperty(118, "decimal_separator", decimal_separator);
109
+ serializer.WriteProperty(119, "null_padding", null_padding);
110
+ serializer.WriteProperty(120, "buffer_size", buffer_size);
111
+ serializer.WriteProperty(121, "file_options", file_options);
112
+ serializer.WriteProperty(122, "force_quote", force_quote);
113
+ serializer.WriteProperty(123, "rejects_table_name", rejects_table_name);
114
+ serializer.WriteProperty(124, "rejects_limit", rejects_limit);
115
+ serializer.WriteProperty(125, "rejects_recovery_columns", rejects_recovery_columns);
116
+ serializer.WriteProperty(126, "rejects_recovery_column_ids", rejects_recovery_column_ids);
117
+ serializer.WriteProperty(127, "dialect_options.state_machine_options.delimiter", dialect_options.state_machine_options.delimiter);
118
+ serializer.WriteProperty(128, "dialect_options.state_machine_options.quote", dialect_options.state_machine_options.quote);
119
+ serializer.WriteProperty(129, "dialect_options.state_machine_options.escape", dialect_options.state_machine_options.escape);
120
+ serializer.WriteProperty(130, "dialect_options.header", dialect_options.header);
121
+ serializer.WriteProperty(131, "dialect_options.num_cols", dialect_options.num_cols);
122
+ serializer.WriteProperty(132, "dialect_options.new_line", dialect_options.new_line);
123
+ serializer.WriteProperty(133, "dialect_options.skip_rows", dialect_options.skip_rows);
124
+ serializer.WriteProperty(134, "dialect_options.date_format", dialect_options.date_format);
125
+ serializer.WriteProperty(135, "dialect_options.has_format", dialect_options.has_format);
126
+ }
127
+
128
+ CSVReaderOptions CSVReaderOptions::FormatDeserialize(FormatDeserializer &deserializer) {
129
+ CSVReaderOptions result;
129
130
  deserializer.ReadProperty(100, "has_delimiter", result.has_delimiter);
130
- deserializer.ReadProperty(101, "delimiter", result.delimiter);
131
- deserializer.ReadProperty(102, "has_quote", result.has_quote);
132
- deserializer.ReadProperty(103, "quote", result.quote);
133
- deserializer.ReadProperty(104, "has_escape", result.has_escape);
134
- deserializer.ReadProperty(105, "escape", result.escape);
135
- deserializer.ReadProperty(106, "has_header", result.has_header);
136
- deserializer.ReadProperty(107, "header", result.header);
137
- deserializer.ReadProperty(108, "ignore_errors", result.ignore_errors);
138
- deserializer.ReadProperty(109, "num_cols", result.num_cols);
139
- deserializer.ReadProperty(110, "buffer_sample_size", result.buffer_sample_size);
140
- deserializer.ReadProperty(111, "null_str", result.null_str);
141
- deserializer.ReadProperty(112, "compression", result.compression);
142
- deserializer.ReadProperty(113, "new_line", result.new_line);
143
- deserializer.ReadProperty(114, "allow_quoted_nulls", result.allow_quoted_nulls);
144
- deserializer.ReadProperty(115, "skip_rows", result.skip_rows);
145
- deserializer.ReadProperty(116, "skip_rows_set", result.skip_rows_set);
146
- deserializer.ReadProperty(117, "maximum_line_size", result.maximum_line_size);
147
- deserializer.ReadProperty(118, "normalize_names", result.normalize_names);
148
- deserializer.ReadProperty(119, "force_not_null", result.force_not_null);
149
- deserializer.ReadProperty(120, "all_varchar", result.all_varchar);
150
- deserializer.ReadProperty(121, "sample_chunk_size", result.sample_chunk_size);
151
- deserializer.ReadProperty(122, "sample_chunks", result.sample_chunks);
152
- deserializer.ReadProperty(123, "auto_detect", result.auto_detect);
153
- deserializer.ReadProperty(124, "file_path", result.file_path);
154
- deserializer.ReadProperty(125, "decimal_separator", result.decimal_separator);
155
- deserializer.ReadProperty(126, "null_padding", result.null_padding);
156
- deserializer.ReadProperty(127, "buffer_size", result.buffer_size);
157
- deserializer.ReadProperty(128, "file_options", result.file_options);
158
- deserializer.ReadProperty(129, "force_quote", result.force_quote);
159
- deserializer.ReadProperty(130, "date_format", result.date_format);
160
- deserializer.ReadProperty(131, "has_format", result.has_format);
161
- deserializer.ReadProperty(132, "rejects_table_name", result.rejects_table_name);
162
- deserializer.ReadProperty(133, "rejects_limit", result.rejects_limit);
163
- deserializer.ReadProperty(134, "rejects_recovery_columns", result.rejects_recovery_columns);
164
- deserializer.ReadProperty(135, "rejects_recovery_column_ids", result.rejects_recovery_column_ids);
131
+ deserializer.ReadProperty(101, "has_quote", result.has_quote);
132
+ deserializer.ReadProperty(102, "has_escape", result.has_escape);
133
+ deserializer.ReadProperty(103, "has_header", result.has_header);
134
+ deserializer.ReadProperty(104, "ignore_errors", result.ignore_errors);
135
+ deserializer.ReadProperty(105, "buffer_sample_size", result.buffer_sample_size);
136
+ deserializer.ReadProperty(106, "null_str", result.null_str);
137
+ deserializer.ReadProperty(107, "compression", result.compression);
138
+ deserializer.ReadProperty(108, "allow_quoted_nulls", result.allow_quoted_nulls);
139
+ deserializer.ReadProperty(109, "skip_rows_set", result.skip_rows_set);
140
+ deserializer.ReadProperty(110, "maximum_line_size", result.maximum_line_size);
141
+ deserializer.ReadProperty(111, "normalize_names", result.normalize_names);
142
+ deserializer.ReadProperty(112, "force_not_null", result.force_not_null);
143
+ deserializer.ReadProperty(113, "all_varchar", result.all_varchar);
144
+ deserializer.ReadProperty(114, "sample_chunk_size", result.sample_chunk_size);
145
+ deserializer.ReadProperty(115, "sample_chunks", result.sample_chunks);
146
+ deserializer.ReadProperty(116, "auto_detect", result.auto_detect);
147
+ deserializer.ReadProperty(117, "file_path", result.file_path);
148
+ deserializer.ReadProperty(118, "decimal_separator", result.decimal_separator);
149
+ deserializer.ReadProperty(119, "null_padding", result.null_padding);
150
+ deserializer.ReadProperty(120, "buffer_size", result.buffer_size);
151
+ deserializer.ReadProperty(121, "file_options", result.file_options);
152
+ deserializer.ReadProperty(122, "force_quote", result.force_quote);
153
+ deserializer.ReadProperty(123, "rejects_table_name", result.rejects_table_name);
154
+ deserializer.ReadProperty(124, "rejects_limit", result.rejects_limit);
155
+ deserializer.ReadProperty(125, "rejects_recovery_columns", result.rejects_recovery_columns);
156
+ deserializer.ReadProperty(126, "rejects_recovery_column_ids", result.rejects_recovery_column_ids);
157
+ deserializer.ReadProperty(127, "dialect_options.state_machine_options.delimiter", result.dialect_options.state_machine_options.delimiter);
158
+ deserializer.ReadProperty(128, "dialect_options.state_machine_options.quote", result.dialect_options.state_machine_options.quote);
159
+ deserializer.ReadProperty(129, "dialect_options.state_machine_options.escape", result.dialect_options.state_machine_options.escape);
160
+ deserializer.ReadProperty(130, "dialect_options.header", result.dialect_options.header);
161
+ deserializer.ReadProperty(131, "dialect_options.num_cols", result.dialect_options.num_cols);
162
+ deserializer.ReadProperty(132, "dialect_options.new_line", result.dialect_options.new_line);
163
+ deserializer.ReadProperty(133, "dialect_options.skip_rows", result.dialect_options.skip_rows);
164
+ deserializer.ReadProperty(134, "dialect_options.date_format", result.dialect_options.date_format);
165
+ deserializer.ReadProperty(135, "dialect_options.has_format", result.dialect_options.has_format);
165
166
  return result;
166
167
  }
167
168
 
168
169
  void CaseCheck::FormatSerialize(FormatSerializer &serializer) const {
169
- serializer.WriteProperty(100, "when_expr", *when_expr);
170
- serializer.WriteProperty(101, "then_expr", *then_expr);
170
+ serializer.WriteProperty(100, "when_expr", when_expr);
171
+ serializer.WriteProperty(101, "then_expr", then_expr);
171
172
  }
172
173
 
173
174
  CaseCheck CaseCheck::FormatDeserialize(FormatDeserializer &deserializer) {
@@ -192,7 +193,7 @@ ColumnBinding ColumnBinding::FormatDeserialize(FormatDeserializer &deserializer)
192
193
  void ColumnDefinition::FormatSerialize(FormatSerializer &serializer) const {
193
194
  serializer.WriteProperty(100, "name", name);
194
195
  serializer.WriteProperty(101, "type", type);
195
- serializer.WriteOptionalProperty(102, "expression", expression);
196
+ serializer.WritePropertyWithDefault(102, "expression", expression, unique_ptr<ParsedExpression>());
196
197
  serializer.WriteProperty(103, "category", category);
197
198
  serializer.WriteProperty(104, "compression_type", compression_type);
198
199
  }
@@ -200,7 +201,7 @@ void ColumnDefinition::FormatSerialize(FormatSerializer &serializer) const {
200
201
  ColumnDefinition ColumnDefinition::FormatDeserialize(FormatDeserializer &deserializer) {
201
202
  auto name = deserializer.ReadProperty<string>(100, "name");
202
203
  auto type = deserializer.ReadProperty<LogicalType>(101, "type");
203
- auto expression = deserializer.ReadOptionalProperty<unique_ptr<ParsedExpression>>(102, "expression");
204
+ auto expression = deserializer.ReadPropertyWithDefault<unique_ptr<ParsedExpression>>(102, "expression", unique_ptr<ParsedExpression>());
204
205
  auto category = deserializer.ReadProperty<TableColumnType>(103, "category");
205
206
  ColumnDefinition result(std::move(name), std::move(type), std::move(expression), category);
206
207
  deserializer.ReadProperty(104, "compression_type", result.compression_type);
@@ -231,7 +232,7 @@ ColumnList ColumnList::FormatDeserialize(FormatDeserializer &deserializer) {
231
232
 
232
233
  void CommonTableExpressionInfo::FormatSerialize(FormatSerializer &serializer) const {
233
234
  serializer.WriteProperty(100, "aliases", aliases);
234
- serializer.WriteProperty(101, "query", *query);
235
+ serializer.WriteProperty(101, "query", query);
235
236
  serializer.WriteProperty(102, "materialized", materialized);
236
237
  }
237
238
 
@@ -266,8 +267,8 @@ HivePartitioningIndex HivePartitioningIndex::FormatDeserialize(FormatDeserialize
266
267
  }
267
268
 
268
269
  void JoinCondition::FormatSerialize(FormatSerializer &serializer) const {
269
- serializer.WriteProperty(100, "left", *left);
270
- serializer.WriteProperty(101, "right", *right);
270
+ serializer.WriteProperty(100, "left", left);
271
+ serializer.WriteProperty(101, "right", right);
271
272
  serializer.WriteProperty(102, "comparison", comparison);
272
273
  }
273
274
 
@@ -281,12 +282,12 @@ JoinCondition JoinCondition::FormatDeserialize(FormatDeserializer &deserializer)
281
282
 
282
283
  void LogicalType::FormatSerialize(FormatSerializer &serializer) const {
283
284
  serializer.WriteProperty(100, "id", id_);
284
- serializer.WriteOptionalProperty(101, "type_info", type_info_);
285
+ serializer.WritePropertyWithDefault(101, "type_info", type_info_, shared_ptr<ExtraTypeInfo>());
285
286
  }
286
287
 
287
288
  LogicalType LogicalType::FormatDeserialize(FormatDeserializer &deserializer) {
288
289
  auto id = deserializer.ReadProperty<LogicalTypeId>(100, "id");
289
- auto type_info = deserializer.ReadOptionalProperty<shared_ptr<ExtraTypeInfo>>(101, "type_info");
290
+ auto type_info = deserializer.ReadPropertyWithDefault<shared_ptr<ExtraTypeInfo>>(101, "type_info", shared_ptr<ExtraTypeInfo>());
290
291
  LogicalType result(id, std::move(type_info));
291
292
  return result;
292
293
  }
@@ -326,7 +327,7 @@ MultiFileReaderOptions MultiFileReaderOptions::FormatDeserialize(FormatDeseriali
326
327
  void OrderByNode::FormatSerialize(FormatSerializer &serializer) const {
327
328
  serializer.WriteProperty(100, "type", type);
328
329
  serializer.WriteProperty(101, "null_order", null_order);
329
- serializer.WriteProperty(102, "expression", *expression);
330
+ serializer.WriteProperty(102, "expression", expression);
330
331
  }
331
332
 
332
333
  OrderByNode OrderByNode::FormatDeserialize(FormatDeserializer &deserializer) {
@@ -353,6 +354,20 @@ PivotColumn PivotColumn::FormatDeserialize(FormatDeserializer &deserializer) {
353
354
  return result;
354
355
  }
355
356
 
357
+ void PivotColumnEntry::FormatSerialize(FormatSerializer &serializer) const {
358
+ serializer.WriteProperty(100, "values", values);
359
+ serializer.WritePropertyWithDefault(101, "star_expr", star_expr, unique_ptr<ParsedExpression>());
360
+ serializer.WriteProperty(102, "alias", alias);
361
+ }
362
+
363
+ PivotColumnEntry PivotColumnEntry::FormatDeserialize(FormatDeserializer &deserializer) {
364
+ PivotColumnEntry result;
365
+ deserializer.ReadProperty(100, "values", result.values);
366
+ deserializer.ReadPropertyWithDefault(101, "star_expr", result.star_expr, unique_ptr<ParsedExpression>());
367
+ deserializer.ReadProperty(102, "alias", result.alias);
368
+ return result;
369
+ }
370
+
356
371
  void ReadCSVData::FormatSerialize(FormatSerializer &serializer) const {
357
372
  serializer.WriteProperty(100, "files", files);
358
373
  serializer.WriteProperty(101, "csv_types", csv_types);
@@ -429,4 +444,18 @@ VacuumOptions VacuumOptions::FormatDeserialize(FormatDeserializer &deserializer)
429
444
  return result;
430
445
  }
431
446
 
447
+ void interval_t::FormatSerialize(FormatSerializer &serializer) const {
448
+ serializer.WriteProperty(1, "months", months);
449
+ serializer.WriteProperty(2, "days", days);
450
+ serializer.WriteProperty(3, "micros", micros);
451
+ }
452
+
453
+ interval_t interval_t::FormatDeserialize(FormatDeserializer &deserializer) {
454
+ interval_t result;
455
+ deserializer.ReadProperty(1, "months", result.months);
456
+ deserializer.ReadProperty(2, "days", result.days);
457
+ deserializer.ReadProperty(3, "micros", result.micros);
458
+ return result;
459
+ }
460
+
432
461
  } // namespace duckdb
@@ -209,7 +209,7 @@ void ChangeColumnTypeInfo::FormatSerialize(FormatSerializer &serializer) const {
209
209
  AlterTableInfo::FormatSerialize(serializer);
210
210
  serializer.WriteProperty(400, "column_name", column_name);
211
211
  serializer.WriteProperty(401, "target_type", target_type);
212
- serializer.WriteProperty(402, "expression", *expression);
212
+ serializer.WriteProperty(402, "expression", expression);
213
213
  }
214
214
 
215
215
  unique_ptr<AlterTableInfo> ChangeColumnTypeInfo::FormatDeserialize(FormatDeserializer &deserializer) {
@@ -375,13 +375,13 @@ unique_ptr<AlterViewInfo> RenameViewInfo::FormatDeserialize(FormatDeserializer &
375
375
  void SetDefaultInfo::FormatSerialize(FormatSerializer &serializer) const {
376
376
  AlterTableInfo::FormatSerialize(serializer);
377
377
  serializer.WriteProperty(400, "column_name", column_name);
378
- serializer.WriteOptionalProperty(401, "expression", expression);
378
+ serializer.WritePropertyWithDefault(401, "expression", expression, unique_ptr<ParsedExpression>());
379
379
  }
380
380
 
381
381
  unique_ptr<AlterTableInfo> SetDefaultInfo::FormatDeserialize(FormatDeserializer &deserializer) {
382
382
  auto result = duckdb::unique_ptr<SetDefaultInfo>(new SetDefaultInfo());
383
383
  deserializer.ReadProperty(400, "column_name", result->column_name);
384
- deserializer.ReadOptionalProperty(401, "expression", result->expression);
384
+ deserializer.ReadPropertyWithDefault(401, "expression", result->expression, unique_ptr<ParsedExpression>());
385
385
  return std::move(result);
386
386
  }
387
387
 
@@ -83,9 +83,9 @@ unique_ptr<ParsedExpression> ParsedExpression::FormatDeserialize(FormatDeseriali
83
83
 
84
84
  void BetweenExpression::FormatSerialize(FormatSerializer &serializer) const {
85
85
  ParsedExpression::FormatSerialize(serializer);
86
- serializer.WriteProperty(200, "input", *input);
87
- serializer.WriteProperty(201, "lower", *lower);
88
- serializer.WriteProperty(202, "upper", *upper);
86
+ serializer.WriteProperty(200, "input", input);
87
+ serializer.WriteProperty(201, "lower", lower);
88
+ serializer.WriteProperty(202, "upper", upper);
89
89
  }
90
90
 
91
91
  unique_ptr<ParsedExpression> BetweenExpression::FormatDeserialize(FormatDeserializer &deserializer) {
@@ -99,7 +99,7 @@ unique_ptr<ParsedExpression> BetweenExpression::FormatDeserialize(FormatDeserial
99
99
  void CaseExpression::FormatSerialize(FormatSerializer &serializer) const {
100
100
  ParsedExpression::FormatSerialize(serializer);
101
101
  serializer.WriteProperty(200, "case_checks", case_checks);
102
- serializer.WriteProperty(201, "else_expr", *else_expr);
102
+ serializer.WriteProperty(201, "else_expr", else_expr);
103
103
  }
104
104
 
105
105
  unique_ptr<ParsedExpression> CaseExpression::FormatDeserialize(FormatDeserializer &deserializer) {
@@ -111,7 +111,7 @@ unique_ptr<ParsedExpression> CaseExpression::FormatDeserialize(FormatDeserialize
111
111
 
112
112
  void CastExpression::FormatSerialize(FormatSerializer &serializer) const {
113
113
  ParsedExpression::FormatSerialize(serializer);
114
- serializer.WriteProperty(200, "child", *child);
114
+ serializer.WriteProperty(200, "child", child);
115
115
  serializer.WriteProperty(201, "cast_type", cast_type);
116
116
  serializer.WriteProperty(202, "try_cast", try_cast);
117
117
  }
@@ -126,7 +126,7 @@ unique_ptr<ParsedExpression> CastExpression::FormatDeserialize(FormatDeserialize
126
126
 
127
127
  void CollateExpression::FormatSerialize(FormatSerializer &serializer) const {
128
128
  ParsedExpression::FormatSerialize(serializer);
129
- serializer.WriteProperty(200, "child", *child);
129
+ serializer.WriteProperty(200, "child", child);
130
130
  serializer.WriteProperty(201, "collation", collation);
131
131
  }
132
132
 
@@ -150,8 +150,8 @@ unique_ptr<ParsedExpression> ColumnRefExpression::FormatDeserialize(FormatDeseri
150
150
 
151
151
  void ComparisonExpression::FormatSerialize(FormatSerializer &serializer) const {
152
152
  ParsedExpression::FormatSerialize(serializer);
153
- serializer.WriteProperty(200, "left", *left);
154
- serializer.WriteProperty(201, "right", *right);
153
+ serializer.WriteProperty(200, "left", left);
154
+ serializer.WriteProperty(201, "right", right);
155
155
  }
156
156
 
157
157
  unique_ptr<ParsedExpression> ComparisonExpression::FormatDeserialize(FormatDeserializer &deserializer) {
@@ -197,8 +197,8 @@ void FunctionExpression::FormatSerialize(FormatSerializer &serializer) const {
197
197
  serializer.WriteProperty(200, "function_name", function_name);
198
198
  serializer.WriteProperty(201, "schema", schema);
199
199
  serializer.WriteProperty(202, "children", children);
200
- serializer.WriteOptionalProperty(203, "filter", filter);
201
- serializer.WriteProperty(204, "order_bys", (ResultModifier &)*order_bys);
200
+ serializer.WritePropertyWithDefault(203, "filter", filter, unique_ptr<ParsedExpression>());
201
+ serializer.WriteProperty(204, "order_bys", (ResultModifier *)order_bys.get());
202
202
  serializer.WriteProperty(205, "distinct", distinct);
203
203
  serializer.WriteProperty(206, "is_operator", is_operator);
204
204
  serializer.WriteProperty(207, "export_state", export_state);
@@ -210,7 +210,7 @@ unique_ptr<ParsedExpression> FunctionExpression::FormatDeserialize(FormatDeseria
210
210
  deserializer.ReadProperty(200, "function_name", result->function_name);
211
211
  deserializer.ReadProperty(201, "schema", result->schema);
212
212
  deserializer.ReadProperty(202, "children", result->children);
213
- deserializer.ReadOptionalProperty(203, "filter", result->filter);
213
+ deserializer.ReadPropertyWithDefault(203, "filter", result->filter, unique_ptr<ParsedExpression>());
214
214
  auto order_bys = deserializer.ReadProperty<unique_ptr<ResultModifier>>(204, "order_bys");
215
215
  result->order_bys = unique_ptr_cast<ResultModifier, OrderModifier>(std::move(order_bys));
216
216
  deserializer.ReadProperty(205, "distinct", result->distinct);
@@ -222,8 +222,8 @@ unique_ptr<ParsedExpression> FunctionExpression::FormatDeserialize(FormatDeseria
222
222
 
223
223
  void LambdaExpression::FormatSerialize(FormatSerializer &serializer) const {
224
224
  ParsedExpression::FormatSerialize(serializer);
225
- serializer.WriteProperty(200, "lhs", *lhs);
226
- serializer.WriteProperty(201, "expr", *expr);
225
+ serializer.WriteProperty(200, "lhs", lhs);
226
+ serializer.WriteProperty(201, "expr", expr);
227
227
  }
228
228
 
229
229
  unique_ptr<ParsedExpression> LambdaExpression::FormatDeserialize(FormatDeserializer &deserializer) {
@@ -272,7 +272,7 @@ void StarExpression::FormatSerialize(FormatSerializer &serializer) const {
272
272
  serializer.WriteProperty(201, "exclude_list", exclude_list);
273
273
  serializer.WriteProperty(202, "replace_list", replace_list);
274
274
  serializer.WriteProperty(203, "columns", columns);
275
- serializer.WriteOptionalProperty(204, "expr", expr);
275
+ serializer.WritePropertyWithDefault(204, "expr", expr, unique_ptr<ParsedExpression>());
276
276
  }
277
277
 
278
278
  unique_ptr<ParsedExpression> StarExpression::FormatDeserialize(FormatDeserializer &deserializer) {
@@ -281,7 +281,7 @@ unique_ptr<ParsedExpression> StarExpression::FormatDeserialize(FormatDeserialize
281
281
  deserializer.ReadProperty(201, "exclude_list", result->exclude_list);
282
282
  deserializer.ReadProperty(202, "replace_list", result->replace_list);
283
283
  deserializer.ReadProperty(203, "columns", result->columns);
284
- deserializer.ReadOptionalProperty(204, "expr", result->expr);
284
+ deserializer.ReadPropertyWithDefault(204, "expr", result->expr, unique_ptr<ParsedExpression>());
285
285
  return std::move(result);
286
286
  }
287
287
 
@@ -289,7 +289,7 @@ void SubqueryExpression::FormatSerialize(FormatSerializer &serializer) const {
289
289
  ParsedExpression::FormatSerialize(serializer);
290
290
  serializer.WriteProperty(200, "subquery_type", subquery_type);
291
291
  serializer.WriteProperty(201, "subquery", subquery);
292
- serializer.WriteOptionalProperty(202, "child", child);
292
+ serializer.WritePropertyWithDefault(202, "child", child, unique_ptr<ParsedExpression>());
293
293
  serializer.WriteProperty(203, "comparison_type", comparison_type);
294
294
  }
295
295
 
@@ -297,7 +297,7 @@ unique_ptr<ParsedExpression> SubqueryExpression::FormatDeserialize(FormatDeseria
297
297
  auto result = duckdb::unique_ptr<SubqueryExpression>(new SubqueryExpression());
298
298
  deserializer.ReadProperty(200, "subquery_type", result->subquery_type);
299
299
  deserializer.ReadProperty(201, "subquery", result->subquery);
300
- deserializer.ReadOptionalProperty(202, "child", result->child);
300
+ deserializer.ReadPropertyWithDefault(202, "child", result->child, unique_ptr<ParsedExpression>());
301
301
  deserializer.ReadProperty(203, "comparison_type", result->comparison_type);
302
302
  return std::move(result);
303
303
  }
@@ -312,12 +312,12 @@ void WindowExpression::FormatSerialize(FormatSerializer &serializer) const {
312
312
  serializer.WriteProperty(205, "orders", orders);
313
313
  serializer.WriteProperty(206, "start", start);
314
314
  serializer.WriteProperty(207, "end", end);
315
- serializer.WriteOptionalProperty(208, "start_expr", start_expr);
316
- serializer.WriteOptionalProperty(209, "end_expr", end_expr);
317
- serializer.WriteOptionalProperty(210, "offset_expr", offset_expr);
318
- serializer.WriteOptionalProperty(211, "default_expr", default_expr);
315
+ serializer.WritePropertyWithDefault(208, "start_expr", start_expr, unique_ptr<ParsedExpression>());
316
+ serializer.WritePropertyWithDefault(209, "end_expr", end_expr, unique_ptr<ParsedExpression>());
317
+ serializer.WritePropertyWithDefault(210, "offset_expr", offset_expr, unique_ptr<ParsedExpression>());
318
+ serializer.WritePropertyWithDefault(211, "default_expr", default_expr, unique_ptr<ParsedExpression>());
319
319
  serializer.WriteProperty(212, "ignore_nulls", ignore_nulls);
320
- serializer.WriteOptionalProperty(213, "filter_expr", filter_expr);
320
+ serializer.WritePropertyWithDefault(213, "filter_expr", filter_expr, unique_ptr<ParsedExpression>());
321
321
  }
322
322
 
323
323
  unique_ptr<ParsedExpression> WindowExpression::FormatDeserialize(FormatDeserializer &deserializer) {
@@ -330,12 +330,12 @@ unique_ptr<ParsedExpression> WindowExpression::FormatDeserialize(FormatDeseriali
330
330
  deserializer.ReadProperty(205, "orders", result->orders);
331
331
  deserializer.ReadProperty(206, "start", result->start);
332
332
  deserializer.ReadProperty(207, "end", result->end);
333
- deserializer.ReadOptionalProperty(208, "start_expr", result->start_expr);
334
- deserializer.ReadOptionalProperty(209, "end_expr", result->end_expr);
335
- deserializer.ReadOptionalProperty(210, "offset_expr", result->offset_expr);
336
- deserializer.ReadOptionalProperty(211, "default_expr", result->default_expr);
333
+ deserializer.ReadPropertyWithDefault(208, "start_expr", result->start_expr, unique_ptr<ParsedExpression>());
334
+ deserializer.ReadPropertyWithDefault(209, "end_expr", result->end_expr, unique_ptr<ParsedExpression>());
335
+ deserializer.ReadPropertyWithDefault(210, "offset_expr", result->offset_expr, unique_ptr<ParsedExpression>());
336
+ deserializer.ReadPropertyWithDefault(211, "default_expr", result->default_expr, unique_ptr<ParsedExpression>());
337
337
  deserializer.ReadProperty(212, "ignore_nulls", result->ignore_nulls);
338
- deserializer.ReadOptionalProperty(213, "filter_expr", result->filter_expr);
338
+ deserializer.ReadPropertyWithDefault(213, "filter_expr", result->filter_expr, unique_ptr<ParsedExpression>());
339
339
  return std::move(result);
340
340
  }
341
341
 
@@ -44,8 +44,8 @@ unique_ptr<QueryNode> QueryNode::FormatDeserialize(FormatDeserializer &deseriali
44
44
  void CTENode::FormatSerialize(FormatSerializer &serializer) const {
45
45
  QueryNode::FormatSerialize(serializer);
46
46
  serializer.WriteProperty(200, "cte_name", ctename);
47
- serializer.WriteProperty(201, "query", *query);
48
- serializer.WriteProperty(202, "child", *child);
47
+ serializer.WriteProperty(201, "query", query);
48
+ serializer.WriteProperty(202, "child", child);
49
49
  serializer.WriteProperty(203, "aliases", aliases);
50
50
  }
51
51
 
@@ -62,8 +62,8 @@ void RecursiveCTENode::FormatSerialize(FormatSerializer &serializer) const {
62
62
  QueryNode::FormatSerialize(serializer);
63
63
  serializer.WriteProperty(200, "cte_name", ctename);
64
64
  serializer.WriteProperty(201, "union_all", union_all);
65
- serializer.WriteProperty(202, "left", *left);
66
- serializer.WriteProperty(203, "right", *right);
65
+ serializer.WriteProperty(202, "left", left);
66
+ serializer.WriteProperty(203, "right", right);
67
67
  serializer.WriteProperty(204, "aliases", aliases);
68
68
  }
69
69
 
@@ -80,35 +80,35 @@ unique_ptr<QueryNode> RecursiveCTENode::FormatDeserialize(FormatDeserializer &de
80
80
  void SelectNode::FormatSerialize(FormatSerializer &serializer) const {
81
81
  QueryNode::FormatSerialize(serializer);
82
82
  serializer.WriteProperty(200, "select_list", select_list);
83
- serializer.WriteOptionalProperty(201, "from_table", from_table);
84
- serializer.WriteOptionalProperty(202, "where_clause", where_clause);
83
+ serializer.WritePropertyWithDefault(201, "from_table", from_table, unique_ptr<TableRef>());
84
+ serializer.WritePropertyWithDefault(202, "where_clause", where_clause, unique_ptr<ParsedExpression>());
85
85
  serializer.WriteProperty(203, "group_expressions", groups.group_expressions);
86
86
  serializer.WriteProperty(204, "group_sets", groups.grouping_sets);
87
87
  serializer.WriteProperty(205, "aggregate_handling", aggregate_handling);
88
- serializer.WriteOptionalProperty(206, "having", having);
89
- serializer.WriteOptionalProperty(207, "sample", sample);
90
- serializer.WriteOptionalProperty(208, "qualify", qualify);
88
+ serializer.WritePropertyWithDefault(206, "having", having, unique_ptr<ParsedExpression>());
89
+ serializer.WritePropertyWithDefault(207, "sample", sample, unique_ptr<SampleOptions>());
90
+ serializer.WritePropertyWithDefault(208, "qualify", qualify, unique_ptr<ParsedExpression>());
91
91
  }
92
92
 
93
93
  unique_ptr<QueryNode> SelectNode::FormatDeserialize(FormatDeserializer &deserializer) {
94
94
  auto result = duckdb::unique_ptr<SelectNode>(new SelectNode());
95
95
  deserializer.ReadProperty(200, "select_list", result->select_list);
96
- deserializer.ReadOptionalProperty(201, "from_table", result->from_table);
97
- deserializer.ReadOptionalProperty(202, "where_clause", result->where_clause);
96
+ deserializer.ReadPropertyWithDefault(201, "from_table", result->from_table, unique_ptr<TableRef>());
97
+ deserializer.ReadPropertyWithDefault(202, "where_clause", result->where_clause, unique_ptr<ParsedExpression>());
98
98
  deserializer.ReadProperty(203, "group_expressions", result->groups.group_expressions);
99
99
  deserializer.ReadProperty(204, "group_sets", result->groups.grouping_sets);
100
100
  deserializer.ReadProperty(205, "aggregate_handling", result->aggregate_handling);
101
- deserializer.ReadOptionalProperty(206, "having", result->having);
102
- deserializer.ReadOptionalProperty(207, "sample", result->sample);
103
- deserializer.ReadOptionalProperty(208, "qualify", result->qualify);
101
+ deserializer.ReadPropertyWithDefault(206, "having", result->having, unique_ptr<ParsedExpression>());
102
+ deserializer.ReadPropertyWithDefault(207, "sample", result->sample, unique_ptr<SampleOptions>());
103
+ deserializer.ReadPropertyWithDefault(208, "qualify", result->qualify, unique_ptr<ParsedExpression>());
104
104
  return std::move(result);
105
105
  }
106
106
 
107
107
  void SetOperationNode::FormatSerialize(FormatSerializer &serializer) const {
108
108
  QueryNode::FormatSerialize(serializer);
109
109
  serializer.WriteProperty(200, "setop_type", setop_type);
110
- serializer.WriteProperty(201, "left", *left);
111
- serializer.WriteProperty(202, "right", *right);
110
+ serializer.WriteProperty(201, "left", left);
111
+ serializer.WriteProperty(202, "right", right);
112
112
  }
113
113
 
114
114
  unique_ptr<QueryNode> SetOperationNode::FormatDeserialize(FormatDeserializer &deserializer) {
@@ -59,27 +59,27 @@ unique_ptr<ResultModifier> DistinctModifier::FormatDeserialize(FormatDeserialize
59
59
 
60
60
  void LimitModifier::FormatSerialize(FormatSerializer &serializer) const {
61
61
  ResultModifier::FormatSerialize(serializer);
62
- serializer.WriteOptionalProperty(200, "limit", limit);
63
- serializer.WriteOptionalProperty(201, "offset", offset);
62
+ serializer.WritePropertyWithDefault(200, "limit", limit, unique_ptr<ParsedExpression>());
63
+ serializer.WritePropertyWithDefault(201, "offset", offset, unique_ptr<ParsedExpression>());
64
64
  }
65
65
 
66
66
  unique_ptr<ResultModifier> LimitModifier::FormatDeserialize(FormatDeserializer &deserializer) {
67
67
  auto result = duckdb::unique_ptr<LimitModifier>(new LimitModifier());
68
- deserializer.ReadOptionalProperty(200, "limit", result->limit);
69
- deserializer.ReadOptionalProperty(201, "offset", result->offset);
68
+ deserializer.ReadPropertyWithDefault(200, "limit", result->limit, unique_ptr<ParsedExpression>());
69
+ deserializer.ReadPropertyWithDefault(201, "offset", result->offset, unique_ptr<ParsedExpression>());
70
70
  return std::move(result);
71
71
  }
72
72
 
73
73
  void LimitPercentModifier::FormatSerialize(FormatSerializer &serializer) const {
74
74
  ResultModifier::FormatSerialize(serializer);
75
- serializer.WriteOptionalProperty(200, "limit", limit);
76
- serializer.WriteOptionalProperty(201, "offset", offset);
75
+ serializer.WritePropertyWithDefault(200, "limit", limit, unique_ptr<ParsedExpression>());
76
+ serializer.WritePropertyWithDefault(201, "offset", offset, unique_ptr<ParsedExpression>());
77
77
  }
78
78
 
79
79
  unique_ptr<ResultModifier> LimitPercentModifier::FormatDeserialize(FormatDeserializer &deserializer) {
80
80
  auto result = duckdb::unique_ptr<LimitPercentModifier>(new LimitPercentModifier());
81
- deserializer.ReadOptionalProperty(200, "limit", result->limit);
82
- deserializer.ReadOptionalProperty(201, "offset", result->offset);
81
+ deserializer.ReadPropertyWithDefault(200, "limit", result->limit, unique_ptr<ParsedExpression>());
82
+ deserializer.ReadPropertyWithDefault(201, "offset", result->offset, unique_ptr<ParsedExpression>());
83
83
  return std::move(result);
84
84
  }
85
85
 
@@ -10,7 +10,7 @@
10
10
  namespace duckdb {
11
11
 
12
12
  void SelectStatement::FormatSerialize(FormatSerializer &serializer) const {
13
- serializer.WriteProperty(100, "node", *node);
13
+ serializer.WriteProperty(100, "node", node);
14
14
  }
15
15
 
16
16
  unique_ptr<SelectStatement> SelectStatement::FormatDeserialize(FormatDeserializer &deserializer) {