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
@@ -99,7 +99,7 @@ void Vector::Reference(const Value &value) {
99
99
  }
100
100
  }
101
101
 
102
- void Vector::Reference(Vector &other) {
102
+ void Vector::Reference(const Vector &other) {
103
103
  if (other.GetType().id() != GetType().id()) {
104
104
  throw InternalException("Vector::Reference used on vector of different type");
105
105
  }
@@ -107,12 +107,12 @@ void Vector::Reference(Vector &other) {
107
107
  Reinterpret(other);
108
108
  }
109
109
 
110
- void Vector::ReferenceAndSetType(Vector &other) {
110
+ void Vector::ReferenceAndSetType(const Vector &other) {
111
111
  type = other.GetType();
112
112
  Reference(other);
113
113
  }
114
114
 
115
- void Vector::Reinterpret(Vector &other) {
115
+ void Vector::Reinterpret(const Vector &other) {
116
116
  vector_type = other.vector_type;
117
117
  AssignSharedPointer(buffer, other.buffer);
118
118
  AssignSharedPointer(auxiliary, other.auxiliary);
@@ -1021,14 +1021,11 @@ void Vector::FormatSerialize(FormatSerializer &serializer, idx_t count) {
1021
1021
  auto strings = UnifiedVectorFormat::GetData<string_t>(vdata);
1022
1022
 
1023
1023
  // Serialize data as a list
1024
- serializer.SetTag(102, "data");
1025
- serializer.OnListBegin(count);
1026
- for (idx_t i = 0; i < count; i++) {
1024
+ serializer.WriteList(102, "data", count, [&](FormatSerializer::List &list, idx_t i) {
1027
1025
  auto idx = vdata.sel->get_index(i);
1028
1026
  auto str = !vdata.validity.RowIsValid(idx) ? NullValue<string_t>() : strings[idx];
1029
- serializer.WriteValue(str);
1030
- }
1031
- serializer.OnListEnd(count);
1027
+ list.WriteElement(str);
1028
+ });
1032
1029
  break;
1033
1030
  }
1034
1031
  case PhysicalType::STRUCT: {
@@ -1036,14 +1033,9 @@ void Vector::FormatSerialize(FormatSerializer &serializer, idx_t count) {
1036
1033
  auto &entries = StructVector::GetEntries(*this);
1037
1034
 
1038
1035
  // Serialize entries as a list
1039
- serializer.SetTag(103, "children");
1040
- serializer.OnListBegin(entries.size());
1041
- for (auto &entry : entries) {
1042
- serializer.OnObjectBegin();
1043
- entry->FormatSerialize(serializer, count);
1044
- serializer.OnObjectEnd();
1045
- }
1046
- serializer.OnListEnd(entries.size());
1036
+ serializer.WriteList(103, "children", count, [&](FormatSerializer::List &list, idx_t i) {
1037
+ list.WriteObject([&](FormatSerializer &object) { entries[i]->FormatSerialize(object, count); });
1038
+ });
1047
1039
  break;
1048
1040
  }
1049
1041
  case PhysicalType::LIST: {
@@ -1060,19 +1052,14 @@ void Vector::FormatSerialize(FormatSerializer &serializer, idx_t count) {
1060
1052
  entries[i].length = source.length;
1061
1053
  }
1062
1054
  serializer.WriteProperty(104, "list_size", list_size);
1063
- serializer.SetTag(105, "entries");
1064
- serializer.OnListBegin(count);
1065
- for (idx_t i = 0; i < count; i++) {
1066
- serializer.OnObjectBegin();
1067
- serializer.WriteProperty(100, "offset", entries[i].offset);
1068
- serializer.WriteProperty(101, "length", entries[i].length);
1069
- serializer.OnObjectEnd();
1070
- }
1071
- serializer.OnListEnd(count);
1072
- serializer.SetTag(106, "child");
1073
- serializer.OnObjectBegin();
1074
- child.FormatSerialize(serializer, list_size);
1075
- serializer.OnObjectEnd();
1055
+ serializer.WriteList(105, "entries", count, [&](FormatSerializer::List &list, idx_t i) {
1056
+ list.WriteObject([&](FormatSerializer &object) {
1057
+ object.WriteProperty(100, "offset", entries[i].offset);
1058
+ object.WriteProperty(101, "length", entries[i].length);
1059
+ });
1060
+ });
1061
+ serializer.WriteObject(106, "child",
1062
+ [&](FormatSerializer &object) { child.FormatSerialize(object, list_size); });
1076
1063
  break;
1077
1064
  }
1078
1065
  default:
@@ -1103,35 +1090,20 @@ void Vector::FormatDeserialize(FormatDeserializer &deserializer, idx_t count) {
1103
1090
  switch (logical_type.InternalType()) {
1104
1091
  case PhysicalType::VARCHAR: {
1105
1092
  auto strings = FlatVector::GetData<string_t>(*this);
1106
- deserializer.SetTag(102, "data");
1107
- auto read_count = deserializer.OnListBegin();
1108
- D_ASSERT(read_count == count);
1109
- (void)read_count; // otherwise unused variable error in release mode
1110
- for (idx_t i = 0; i < count; i++) {
1111
- // read the strings
1112
- auto str = deserializer.ReadString();
1113
- // now add the string to the StringHeap of the vector
1114
- // and write the pointer into the vector
1093
+ deserializer.ReadList(102, "data", [&](FormatDeserializer::List &list, idx_t i) {
1094
+ auto str = list.ReadElement<string>();
1115
1095
  if (validity.RowIsValid(i)) {
1116
1096
  strings[i] = StringVector::AddStringOrBlob(*this, str);
1117
1097
  }
1118
- }
1119
- deserializer.OnListEnd();
1098
+ });
1120
1099
  break;
1121
1100
  }
1122
1101
  case PhysicalType::STRUCT: {
1123
1102
  auto &entries = StructVector::GetEntries(*this);
1124
1103
  // Deserialize entries as a list
1125
- deserializer.SetTag(103, "children");
1126
- auto read_size = deserializer.OnListBegin();
1127
- D_ASSERT(read_size == entries.size());
1128
- (void)read_size;
1129
- for (auto &entry : entries) {
1130
- deserializer.OnObjectBegin();
1131
- entry->FormatDeserialize(deserializer, count);
1132
- deserializer.OnObjectEnd();
1133
- }
1134
- deserializer.OnListEnd();
1104
+ deserializer.ReadList(103, "children", [&](FormatDeserializer::List &list, idx_t i) {
1105
+ list.ReadObject([&](FormatDeserializer &obj) { entries[i]->FormatDeserialize(obj, count); });
1106
+ });
1135
1107
  break;
1136
1108
  }
1137
1109
  case PhysicalType::LIST: {
@@ -1142,24 +1114,18 @@ void Vector::FormatDeserialize(FormatDeserializer &deserializer, idx_t count) {
1142
1114
 
1143
1115
  // Read the entries
1144
1116
  auto list_entries = FlatVector::GetData<list_entry_t>(*this);
1145
- deserializer.SetTag(105, "entries");
1146
- auto entries_count = deserializer.OnListBegin();
1147
- D_ASSERT(entries_count == count);
1148
- (void)entries_count;
1149
- for (idx_t i = 0; i < count; i++) {
1150
- deserializer.OnObjectBegin();
1151
- deserializer.ReadProperty(100, "offset", list_entries[i].offset);
1152
- deserializer.ReadProperty(101, "length", list_entries[i].length);
1153
- deserializer.OnObjectEnd();
1154
- }
1155
- deserializer.OnListEnd();
1117
+ deserializer.ReadList(105, "entries", [&](FormatDeserializer::List &list, idx_t i) {
1118
+ list.ReadObject([&](FormatDeserializer &obj) {
1119
+ list_entries[i].offset = obj.ReadProperty<uint64_t>(100, "offset");
1120
+ list_entries[i].length = obj.ReadProperty<uint64_t>(101, "length");
1121
+ });
1122
+ });
1156
1123
 
1157
1124
  // Read the child vector
1158
- deserializer.SetTag(106, "child");
1159
- auto &child = ListVector::GetEntry(*this);
1160
- deserializer.OnObjectBegin();
1161
- child.FormatDeserialize(deserializer, list_size);
1162
- deserializer.OnObjectEnd();
1125
+ deserializer.ReadObject(106, "child", [&](FormatDeserializer &obj) {
1126
+ auto &child = ListVector::GetEntry(*this);
1127
+ child.FormatDeserialize(obj, list_size);
1128
+ });
1163
1129
  break;
1164
1130
  }
1165
1131
  default:
@@ -35,12 +35,13 @@ public:
35
35
  const ScalarFunction &function) {
36
36
  auto &bind_data = bind_data_p->Cast<ListLambdaBindData>();
37
37
  serializer.WriteProperty(100, "stype", bind_data.stype);
38
- serializer.WriteOptionalProperty(101, "lambda_expr", bind_data.lambda_expr);
38
+ serializer.WritePropertyWithDefault(101, "lambda_expr", bind_data.lambda_expr, unique_ptr<Expression>());
39
39
  }
40
40
 
41
41
  static unique_ptr<FunctionData> FormatDeserialize(FormatDeserializer &deserializer, ScalarFunction &function) {
42
42
  auto stype = deserializer.ReadProperty<LogicalType>(100, "stype");
43
- auto lambda_expr = deserializer.ReadOptionalProperty<unique_ptr<Expression>>(101, "lambda_expr");
43
+ auto lambda_expr =
44
+ deserializer.ReadPropertyWithDefault<unique_ptr<Expression>>(101, "lambda_expr", unique_ptr<Expression>());
44
45
  return make_uniq<ListLambdaBindData>(stype, std::move(lambda_expr));
45
46
  }
46
47
  };