duckdb 1.1.4-dev11.0 → 1.1.4-dev14.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 (220) hide show
  1. package/LICENSE +1 -1
  2. package/binding.gyp +1 -0
  3. package/package.json +1 -1
  4. package/src/duckdb/extension/core_functions/function_list.cpp +1 -0
  5. package/src/duckdb/extension/core_functions/include/core_functions/scalar/map_functions.hpp +9 -0
  6. package/src/duckdb/extension/core_functions/scalar/date/current.cpp +1 -0
  7. package/src/duckdb/extension/core_functions/scalar/generic/can_implicitly_cast.cpp +2 -2
  8. package/src/duckdb/extension/core_functions/scalar/generic/typeof.cpp +1 -1
  9. package/src/duckdb/extension/core_functions/scalar/list/flatten.cpp +91 -61
  10. package/src/duckdb/extension/core_functions/scalar/map/map_extract.cpp +89 -8
  11. package/src/duckdb/extension/icu/icu-current.cpp +63 -0
  12. package/src/duckdb/extension/icu/icu-makedate.cpp +43 -39
  13. package/src/duckdb/extension/icu/icu-timezone.cpp +63 -63
  14. package/src/duckdb/extension/icu/icu_extension.cpp +2 -0
  15. package/src/duckdb/extension/icu/include/icu-casts.hpp +39 -0
  16. package/src/duckdb/extension/icu/include/icu-current.hpp +17 -0
  17. package/src/duckdb/extension/icu/third_party/icu/stubdata/stubdata.cpp +1 -1
  18. package/src/duckdb/extension/json/json_functions/json_structure.cpp +3 -1
  19. package/src/duckdb/extension/parquet/column_writer.cpp +26 -18
  20. package/src/duckdb/extension/parquet/include/parquet_reader.hpp +0 -6
  21. package/src/duckdb/extension/parquet/include/parquet_writer.hpp +15 -1
  22. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +1 -0
  23. package/src/duckdb/extension/parquet/parquet_extension.cpp +67 -15
  24. package/src/duckdb/extension/parquet/parquet_reader.cpp +5 -3
  25. package/src/duckdb/extension/parquet/parquet_writer.cpp +5 -6
  26. package/src/duckdb/src/catalog/catalog.cpp +21 -8
  27. package/src/duckdb/src/catalog/catalog_search_path.cpp +17 -1
  28. package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
  29. package/src/duckdb/src/catalog/default/default_functions.cpp +0 -3
  30. package/src/duckdb/src/catalog/dependency_list.cpp +7 -0
  31. package/src/duckdb/src/common/adbc/adbc.cpp +1 -56
  32. package/src/duckdb/src/common/arrow/arrow_converter.cpp +3 -2
  33. package/src/duckdb/src/common/arrow/arrow_type_extension.cpp +58 -28
  34. package/src/duckdb/src/common/arrow/schema_metadata.cpp +1 -1
  35. package/src/duckdb/src/common/compressed_file_system.cpp +6 -2
  36. package/src/duckdb/src/common/enum_util.cpp +26 -22
  37. package/src/duckdb/src/common/error_data.cpp +3 -2
  38. package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
  39. package/src/duckdb/src/common/local_file_system.cpp +2 -2
  40. package/src/duckdb/src/common/multi_file_reader.cpp +1 -1
  41. package/src/duckdb/src/common/random_engine.cpp +4 -1
  42. package/src/duckdb/src/common/serializer/memory_stream.cpp +23 -19
  43. package/src/duckdb/src/common/serializer/serializer.cpp +1 -1
  44. package/src/duckdb/src/common/types/bit.cpp +1 -1
  45. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +0 -5
  46. package/src/duckdb/src/common/types/column/column_data_collection.cpp +4 -1
  47. package/src/duckdb/src/common/types/data_chunk.cpp +2 -1
  48. package/src/duckdb/src/common/types/row/tuple_data_segment.cpp +0 -4
  49. package/src/duckdb/src/common/types.cpp +1 -1
  50. package/src/duckdb/src/execution/index/art/art.cpp +52 -42
  51. package/src/duckdb/src/execution/index/art/leaf.cpp +4 -9
  52. package/src/duckdb/src/execution/index/art/node.cpp +13 -13
  53. package/src/duckdb/src/execution/index/art/prefix.cpp +21 -16
  54. package/src/duckdb/src/execution/index/bound_index.cpp +6 -8
  55. package/src/duckdb/src/execution/index/fixed_size_allocator.cpp +39 -34
  56. package/src/duckdb/src/execution/index/fixed_size_buffer.cpp +2 -1
  57. package/src/duckdb/src/execution/index/unbound_index.cpp +10 -0
  58. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +62 -44
  59. package/src/duckdb/src/execution/operator/csv_scanner/scanner/column_count_scanner.cpp +26 -0
  60. package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +69 -40
  61. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +3 -7
  62. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +11 -5
  63. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +4 -0
  64. package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine_cache.cpp +8 -8
  65. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +36 -12
  66. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +12 -9
  67. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +0 -1
  68. package/src/duckdb/src/execution/operator/persistent/physical_copy_database.cpp +29 -1
  69. package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +58 -10
  70. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +58 -35
  71. package/src/duckdb/src/execution/operator/schema/physical_create_art_index.cpp +2 -1
  72. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +9 -4
  73. package/src/duckdb/src/execution/sample/reservoir_sample.cpp +7 -6
  74. package/src/duckdb/src/function/compression_config.cpp +4 -0
  75. package/src/duckdb/src/function/function_binder.cpp +1 -1
  76. package/src/duckdb/src/function/scalar/system/write_log.cpp +2 -2
  77. package/src/duckdb/src/function/table/arrow/arrow_duck_schema.cpp +15 -2
  78. package/src/duckdb/src/function/table/arrow_conversion.cpp +10 -10
  79. package/src/duckdb/src/function/table/copy_csv.cpp +8 -5
  80. package/src/duckdb/src/function/table/read_csv.cpp +21 -4
  81. package/src/duckdb/src/function/table/sniff_csv.cpp +7 -0
  82. package/src/duckdb/src/function/table/system/duckdb_extensions.cpp +4 -0
  83. package/src/duckdb/src/function/table/system/duckdb_secret_types.cpp +71 -0
  84. package/src/duckdb/src/function/table/system_functions.cpp +1 -0
  85. package/src/duckdb/src/function/table/table_scan.cpp +120 -36
  86. package/src/duckdb/src/function/table/version/pragma_version.cpp +4 -4
  87. package/src/duckdb/src/function/window/window_aggregate_function.cpp +6 -1
  88. package/src/duckdb/src/function/window/window_boundaries_state.cpp +135 -11
  89. package/src/duckdb/src/function/window/window_segment_tree.cpp +50 -22
  90. package/src/duckdb/src/function/window/window_token_tree.cpp +4 -3
  91. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +4 -0
  92. package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +2 -0
  93. package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +1 -0
  94. package/src/duckdb/src/include/duckdb/common/arrow/arrow_type_extension.hpp +4 -2
  95. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +8 -8
  96. package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +0 -2
  97. package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +8 -3
  98. package/src/duckdb/src/include/duckdb/common/serializer/memory_stream.hpp +6 -1
  99. package/src/duckdb/src/include/duckdb/common/serializer/serialization_data.hpp +25 -0
  100. package/src/duckdb/src/include/duckdb/common/serializer/serializer.hpp +9 -3
  101. package/src/duckdb/src/include/duckdb/common/types/selection_vector.hpp +1 -1
  102. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +11 -14
  103. package/src/duckdb/src/include/duckdb/execution/index/art/prefix.hpp +5 -4
  104. package/src/duckdb/src/include/duckdb/execution/index/bound_index.hpp +21 -10
  105. package/src/duckdb/src/include/duckdb/execution/index/fixed_size_allocator.hpp +6 -5
  106. package/src/duckdb/src/include/duckdb/execution/index/fixed_size_buffer.hpp +37 -32
  107. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/base_scanner.hpp +36 -1
  108. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/column_count_scanner.hpp +3 -0
  109. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/sniffer/csv_sniffer.hpp +2 -0
  110. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine_options.hpp +5 -5
  111. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/string_value_scanner.hpp +5 -30
  112. package/src/duckdb/src/include/duckdb/execution/reservoir_sample.hpp +7 -1
  113. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +3 -3
  114. package/src/duckdb/src/include/duckdb/function/table/arrow/arrow_duck_schema.hpp +1 -0
  115. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +4 -0
  116. package/src/duckdb/src/include/duckdb/function/window/window_boundaries_state.hpp +2 -2
  117. package/src/duckdb/src/include/duckdb/logging/logger.hpp +40 -119
  118. package/src/duckdb/src/include/duckdb/logging/logging.hpp +0 -2
  119. package/src/duckdb/src/include/duckdb/main/config.hpp +5 -0
  120. package/src/duckdb/src/include/duckdb/main/connection.hpp +0 -8
  121. package/src/duckdb/src/include/duckdb/main/connection_manager.hpp +2 -1
  122. package/src/duckdb/src/include/duckdb/main/extension.hpp +1 -0
  123. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +11 -7
  124. package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +1 -0
  125. package/src/duckdb/src/include/duckdb/main/secret/secret.hpp +2 -0
  126. package/src/duckdb/src/include/duckdb/main/secret/secret_manager.hpp +3 -0
  127. package/src/duckdb/src/include/duckdb/main/settings.hpp +10 -0
  128. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +9 -0
  129. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +36 -9
  130. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +2 -1
  131. package/src/duckdb/src/include/duckdb/parser/query_node/set_operation_node.hpp +8 -2
  132. package/src/duckdb/src/include/duckdb/planner/binder.hpp +4 -0
  133. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_data.hpp +9 -1
  134. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +1 -0
  135. package/src/duckdb/src/include/duckdb/planner/filter/in_filter.hpp +0 -2
  136. package/src/duckdb/src/include/duckdb/planner/filter/optional_filter.hpp +4 -4
  137. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +1 -1
  138. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +14 -10
  139. package/src/duckdb/src/include/duckdb/storage/index_storage_info.hpp +4 -0
  140. package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +6 -1
  141. package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +7 -2
  142. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +9 -0
  143. package/src/duckdb/src/include/duckdb/storage/storage_options.hpp +2 -0
  144. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +4 -3
  145. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +2 -0
  146. package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +6 -4
  147. package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +1 -1
  148. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +2 -0
  149. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +2 -0
  150. package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +1 -1
  151. package/src/duckdb/src/logging/logger.cpp +8 -66
  152. package/src/duckdb/src/main/attached_database.cpp +3 -1
  153. package/src/duckdb/src/main/client_context.cpp +4 -2
  154. package/src/duckdb/src/main/config.cpp +20 -2
  155. package/src/duckdb/src/main/connection.cpp +2 -29
  156. package/src/duckdb/src/main/connection_manager.cpp +5 -3
  157. package/src/duckdb/src/main/database.cpp +2 -2
  158. package/src/duckdb/src/main/extension/extension_helper.cpp +4 -5
  159. package/src/duckdb/src/main/extension/extension_install.cpp +23 -10
  160. package/src/duckdb/src/main/extension/extension_load.cpp +6 -7
  161. package/src/duckdb/src/main/extension.cpp +27 -9
  162. package/src/duckdb/src/main/secret/secret_manager.cpp +11 -0
  163. package/src/duckdb/src/main/settings/custom_settings.cpp +44 -0
  164. package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +6 -0
  165. package/src/duckdb/src/optimizer/filter_combiner.cpp +13 -3
  166. package/src/duckdb/src/optimizer/filter_pushdown.cpp +33 -6
  167. package/src/duckdb/src/optimizer/late_materialization.cpp +14 -3
  168. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +0 -3
  169. package/src/duckdb/src/parser/parsed_data/attach_info.cpp +5 -1
  170. package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +6 -3
  171. package/src/duckdb/src/parser/query_node/set_operation_node.cpp +49 -0
  172. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +1 -0
  173. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +50 -12
  174. package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +7 -5
  175. package/src/duckdb/src/planner/binder/expression/bind_comparison_expression.cpp +1 -0
  176. package/src/duckdb/src/planner/binder/expression/bind_operator_expression.cpp +2 -2
  177. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +12 -2
  178. package/src/duckdb/src/planner/binder/statement/bind_copy_database.cpp +0 -1
  179. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +55 -39
  180. package/src/duckdb/src/planner/binder/statement/bind_execute.cpp +2 -1
  181. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +15 -7
  182. package/src/duckdb/src/planner/binder/tableref/bind_showref.cpp +13 -8
  183. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +8 -3
  184. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +17 -1
  185. package/src/duckdb/src/planner/expression_binder/index_binder.cpp +1 -0
  186. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +1 -0
  187. package/src/duckdb/src/planner/filter/constant_filter.cpp +21 -0
  188. package/src/duckdb/src/planner/filter/in_filter.cpp +4 -7
  189. package/src/duckdb/src/planner/logical_operator.cpp +5 -3
  190. package/src/duckdb/src/planner/planner.cpp +1 -1
  191. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +2 -0
  192. package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +3 -4
  193. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -5
  194. package/src/duckdb/src/storage/compression/dictionary/decompression.cpp +4 -4
  195. package/src/duckdb/src/storage/compression/fsst.cpp +2 -2
  196. package/src/duckdb/src/storage/compression/roaring/common.cpp +10 -1
  197. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +11 -6
  198. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +4 -0
  199. package/src/duckdb/src/storage/compression/zstd.cpp +6 -0
  200. package/src/duckdb/src/storage/data_table.cpp +104 -109
  201. package/src/duckdb/src/storage/local_storage.cpp +8 -6
  202. package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
  203. package/src/duckdb/src/storage/serialization/serialize_dependency.cpp +3 -3
  204. package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +3 -3
  205. package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +7 -5
  206. package/src/duckdb/src/storage/single_file_block_manager.cpp +95 -28
  207. package/src/duckdb/src/storage/storage_info.cpp +38 -0
  208. package/src/duckdb/src/storage/storage_manager.cpp +11 -0
  209. package/src/duckdb/src/storage/table/column_data.cpp +4 -0
  210. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +3 -3
  211. package/src/duckdb/src/storage/table/row_group_collection.cpp +67 -68
  212. package/src/duckdb/src/storage/table/table_statistics.cpp +4 -4
  213. package/src/duckdb/src/storage/table_index_list.cpp +41 -15
  214. package/src/duckdb/src/storage/wal_replay.cpp +3 -1
  215. package/src/duckdb/src/storage/write_ahead_log.cpp +11 -4
  216. package/src/duckdb/src/transaction/meta_transaction.cpp +1 -1
  217. package/src/duckdb/src/verification/deserialized_statement_verifier.cpp +2 -1
  218. package/src/duckdb/third_party/httplib/httplib.hpp +0 -1
  219. package/src/duckdb/third_party/re2/util/logging.h +10 -10
  220. package/src/duckdb/ub_src_function_table_system.cpp +2 -0
@@ -128,30 +128,57 @@ void TableIndexList::Move(TableIndexList &other) {
128
128
  indexes = std::move(other.indexes);
129
129
  }
130
130
 
131
- Index *TableIndexList::FindForeignKeyIndex(const vector<PhysicalIndex> &fk_keys, const ForeignKeyType fk_type) {
132
- for (auto &index : indexes) {
133
- if (DataTable::IsForeignKeyIndex(fk_keys, *index, fk_type)) {
134
- return &(*index);
131
+ bool IsForeignKeyIndex(const vector<PhysicalIndex> &fk_keys, Index &index, ForeignKeyType fk_type) {
132
+ if (fk_type == ForeignKeyType::FK_TYPE_PRIMARY_KEY_TABLE ? !index.IsUnique() : !index.IsForeign()) {
133
+ return false;
134
+ }
135
+ if (fk_keys.size() != index.GetColumnIds().size()) {
136
+ return false;
137
+ }
138
+
139
+ auto &column_ids = index.GetColumnIds();
140
+ for (auto &fk_key : fk_keys) {
141
+ bool found = false;
142
+ for (auto &index_key : column_ids) {
143
+ if (fk_key.index == index_key) {
144
+ found = true;
145
+ break;
146
+ }
147
+ }
148
+ if (!found) {
149
+ return false;
150
+ }
151
+ }
152
+ return true;
153
+ }
154
+
155
+ optional_ptr<Index> TableIndexList::FindForeignKeyIndex(const vector<PhysicalIndex> &fk_keys,
156
+ const ForeignKeyType fk_type) {
157
+ for (auto &index_elem : indexes) {
158
+ if (IsForeignKeyIndex(fk_keys, *index_elem, fk_type)) {
159
+ return index_elem;
135
160
  }
136
161
  }
137
162
  return nullptr;
138
163
  }
139
164
 
140
- void TableIndexList::VerifyForeignKey(const vector<PhysicalIndex> &fk_keys, DataChunk &chunk,
141
- ConflictManager &conflict_manager) {
165
+ void TableIndexList::VerifyForeignKey(optional_ptr<LocalTableStorage> storage, const vector<PhysicalIndex> &fk_keys,
166
+ DataChunk &chunk, ConflictManager &conflict_manager) {
142
167
  auto fk_type = conflict_manager.LookupType() == VerifyExistenceType::APPEND_FK
143
168
  ? ForeignKeyType::FK_TYPE_PRIMARY_KEY_TABLE
144
169
  : ForeignKeyType::FK_TYPE_FOREIGN_KEY_TABLE;
145
170
 
146
- // Check whether the chunk can be inserted or deleted into the referenced table storage.
171
+ // Check whether the chunk can be inserted in or deleted from the referenced table storage.
147
172
  auto index = FindForeignKeyIndex(fk_keys, fk_type);
148
- if (!index) {
149
- throw InternalException("Internal Foreign Key error: could not find index to verify...");
150
- }
151
- if (!index->IsBound()) {
152
- throw InternalException("Internal Foreign Key error: trying to verify an unbound index...");
173
+ D_ASSERT(index && index->IsBound());
174
+ if (storage) {
175
+ auto delete_index = storage->delete_indexes.Find(index->GetIndexName());
176
+ IndexAppendInfo index_append_info(IndexAppendMode::DEFAULT, delete_index);
177
+ index->Cast<BoundIndex>().VerifyConstraint(chunk, index_append_info, conflict_manager);
178
+ } else {
179
+ IndexAppendInfo index_append_info;
180
+ index->Cast<BoundIndex>().VerifyConstraint(chunk, index_append_info, conflict_manager);
153
181
  }
154
- index->Cast<BoundIndex>().VerifyConstraint(chunk, nullptr, conflict_manager);
155
182
  }
156
183
 
157
184
  unordered_set<column_t> TableIndexList::GetRequiredColumns() {
@@ -176,10 +203,9 @@ vector<IndexStorageInfo> TableIndexList::GetStorageInfos(const case_insensitive_
176
203
  }
177
204
 
178
205
  auto info = index->Cast<UnboundIndex>().GetStorageInfo();
179
- D_ASSERT(info.IsValid() && !info.name.empty());
206
+ D_ASSERT(!info.name.empty());
180
207
  infos.push_back(info);
181
208
  }
182
-
183
209
  return infos;
184
210
  }
185
211
 
@@ -50,11 +50,13 @@ public:
50
50
  WriteAheadLogDeserializer(ReplayState &state_p, BufferedFileReader &stream_p, bool deserialize_only = false)
51
51
  : state(state_p), db(state.db), context(state.context), catalog(state.catalog), data(nullptr),
52
52
  stream(nullptr, 0), deserializer(stream_p), deserialize_only(deserialize_only) {
53
+ deserializer.Set<Catalog &>(catalog);
53
54
  }
54
55
  WriteAheadLogDeserializer(ReplayState &state_p, unique_ptr<data_t[]> data_p, idx_t size,
55
56
  bool deserialize_only = false)
56
57
  : state(state_p), db(state.db), context(state.context), catalog(state.catalog), data(std::move(data_p)),
57
58
  stream(data.get(), size), deserializer(stream), deserialize_only(deserialize_only) {
59
+ deserializer.Set<Catalog &>(catalog);
58
60
  }
59
61
 
60
62
  static WriteAheadLogDeserializer Open(ReplayState &state_p, BufferedFileReader &stream,
@@ -738,7 +740,7 @@ void WriteAheadLogDeserializer::ReplayInsert() {
738
740
  // Append to the current table without constraint verification.
739
741
  vector<unique_ptr<BoundConstraint>> bound_constraints;
740
742
  auto &storage = state.current_table->GetStorage();
741
- storage.LocalAppend(*state.current_table, context, chunk, bound_constraints);
743
+ storage.LocalWALAppend(*state.current_table, context, chunk, bound_constraints);
742
744
  }
743
745
 
744
746
  static void MarkBlocksAsUsed(BlockManager &manager, const PersistentColumnData &col_data) {
@@ -19,6 +19,7 @@
19
19
  #include "duckdb/storage/table/column_data.hpp"
20
20
  #include "duckdb/storage/table/data_table_info.hpp"
21
21
  #include "duckdb/storage/table_io_manager.hpp"
22
+ #include "duckdb/storage/storage_manager.hpp"
22
23
 
23
24
  namespace duckdb {
24
25
 
@@ -32,6 +33,10 @@ WriteAheadLog::WriteAheadLog(AttachedDatabase &database, const string &wal_path,
32
33
  WriteAheadLog::~WriteAheadLog() {
33
34
  }
34
35
 
36
+ AttachedDatabase &WriteAheadLog::GetDatabase() {
37
+ return database;
38
+ }
39
+
35
40
  BufferedFileWriter &WriteAheadLog::Initialize() {
36
41
  if (Initialized()) {
37
42
  return *writer;
@@ -98,7 +103,7 @@ void WriteAheadLog::Delete() {
98
103
  //===--------------------------------------------------------------------===//
99
104
  class ChecksumWriter : public WriteStream {
100
105
  public:
101
- explicit ChecksumWriter(WriteAheadLog &wal) : wal(wal) {
106
+ explicit ChecksumWriter(WriteAheadLog &wal) : wal(wal), memory_stream(Allocator::Get(wal.GetDatabase())) {
102
107
  }
103
108
 
104
109
  void WriteData(const_data_ptr_t buffer, idx_t write_size) override {
@@ -131,7 +136,8 @@ private:
131
136
 
132
137
  class WriteAheadLogSerializer {
133
138
  public:
134
- WriteAheadLogSerializer(WriteAheadLog &wal, WALType wal_type) : checksum_writer(wal), serializer(checksum_writer) {
139
+ WriteAheadLogSerializer(WriteAheadLog &wal, WALType wal_type)
140
+ : checksum_writer(wal), serializer(checksum_writer, SerializationOptions(wal.GetDatabase())) {
135
141
  if (!wal.Initialized()) {
136
142
  wal.Initialize();
137
143
  }
@@ -158,6 +164,7 @@ public:
158
164
 
159
165
  private:
160
166
  ChecksumWriter checksum_writer;
167
+ SerializationOptions options;
161
168
  BinarySerializer serializer;
162
169
  };
163
170
 
@@ -274,8 +281,8 @@ void WriteAheadLog::WriteDropTableMacro(const TableMacroCatalogEntry &entry) {
274
281
 
275
282
  void SerializeIndex(AttachedDatabase &db, WriteAheadLogSerializer &serializer, TableIndexList &list,
276
283
  const string &name) {
277
- const auto &db_options = db.GetDatabase().config.options;
278
- auto v1_0_0_storage = db_options.serialization_compatibility.serialization_version < 3;
284
+ auto storage_version = db.GetStorageManager().GetStorageVersion();
285
+ auto v1_0_0_storage = storage_version < 3;
279
286
  case_insensitive_map_t<Value> options;
280
287
  if (!v1_0_0_storage) {
281
288
  options.emplace("v1_0_0_storage", v1_0_0_storage);
@@ -55,7 +55,7 @@ Transaction &MetaTransaction::GetTransaction(AttachedDatabase &db) {
55
55
  auto entry = transactions.find(db);
56
56
  if (entry == transactions.end()) {
57
57
  auto &new_transaction = db.GetTransactionManager().StartTransaction(context);
58
- new_transaction.active_query = active_query;
58
+ new_transaction.active_query = active_query.load();
59
59
  #ifdef DEBUG
60
60
  VerifyAllTransactionsUnique(db, all_transactions);
61
61
  #endif
@@ -15,7 +15,8 @@ DeserializedStatementVerifier::Create(const SQLStatement &statement,
15
15
  optional_ptr<case_insensitive_map_t<BoundParameterData>> parameters) {
16
16
 
17
17
  auto &select_stmt = statement.Cast<SelectStatement>();
18
- MemoryStream stream;
18
+ Allocator allocator;
19
+ MemoryStream stream(allocator);
19
20
  BinarySerializer::Serialize(select_stmt, stream);
20
21
  stream.Rewind();
21
22
  auto result = BinaryDeserializer::Deserialize<SelectStatement>(stream);
@@ -2466,7 +2466,6 @@ inline std::string encode_url(const std::string &s) {
2466
2466
  for (size_t i = 0; s[i]; i++) {
2467
2467
  switch (s[i]) {
2468
2468
  case ' ': result += "%20"; break;
2469
- case '+': result += "%2B"; break;
2470
2469
  case '\r': result += "%0D"; break;
2471
2470
  case '\n': result += "%0A"; break;
2472
2471
  case '\'': result += "%27"; break;
@@ -34,26 +34,26 @@
34
34
  #define CHECK_EQ(x, y) CHECK((x) == (y))
35
35
  #define CHECK_NE(x, y) CHECK((x) != (y))
36
36
 
37
- #define LOG_INFO LogMessage(__FILE__, __LINE__)
38
- #define LOG_WARNING LogMessage(__FILE__, __LINE__)
39
- #define LOG_ERROR LogMessage(__FILE__, __LINE__)
40
- #define LOG_FATAL LogMessageFatal(__FILE__, __LINE__)
41
- #define LOG_QFATAL LOG_FATAL
37
+ #define RE2_LOG_INFO LogMessage(__FILE__, __LINE__)
38
+ #define RE2_LOG_WARNING LogMessage(__FILE__, __LINE__)
39
+ #define RE2_LOG_ERROR LogMessage(__FILE__, __LINE__)
40
+ #define RE2_LOG_FATAL LogMessageFatal(__FILE__, __LINE__)
41
+ #define RE2_LOG_QFATAL RE2_LOG_FATAL
42
42
 
43
43
  // It seems that one of the Windows header files defines ERROR as 0.
44
44
  #ifdef _WIN32
45
- #define LOG_0 LOG_INFO
45
+ #define LOG_0 RE2_LOG_INFO
46
46
  #endif
47
47
 
48
48
  #ifdef NDEBUG
49
- #define LOG_DFATAL LOG_ERROR
49
+ #define RE2_LOG_DFATAL RE2_LOG_ERROR
50
50
  #else
51
- #define LOG_DFATAL LOG_FATAL
51
+ #define RE2_LOG_DFATAL RE2_LOG_FATAL
52
52
  #endif
53
53
 
54
- #define LOG(severity) LOG_ ## severity.stream()
54
+ #define LOG(severity) RE2_LOG_ ## severity.stream()
55
55
 
56
- #define VLOG(x) if((x)>0){}else LOG_INFO.stream()
56
+ #define VLOG(x) if((x)>0){}else RE2_LOG_INFO.stream()
57
57
 
58
58
  class LogMessage {
59
59
  public:
@@ -28,6 +28,8 @@
28
28
 
29
29
  #include "src/function/table/system/duckdb_which_secret.cpp"
30
30
 
31
+ #include "src/function/table/system/duckdb_secret_types.cpp"
32
+
31
33
  #include "src/function/table/system/duckdb_sequences.cpp"
32
34
 
33
35
  #include "src/function/table/system/duckdb_settings.cpp"