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.
- package/LICENSE +1 -1
- package/binding.gyp +1 -0
- package/package.json +1 -1
- package/src/duckdb/extension/core_functions/function_list.cpp +1 -0
- package/src/duckdb/extension/core_functions/include/core_functions/scalar/map_functions.hpp +9 -0
- package/src/duckdb/extension/core_functions/scalar/date/current.cpp +1 -0
- package/src/duckdb/extension/core_functions/scalar/generic/can_implicitly_cast.cpp +2 -2
- package/src/duckdb/extension/core_functions/scalar/generic/typeof.cpp +1 -1
- package/src/duckdb/extension/core_functions/scalar/list/flatten.cpp +91 -61
- package/src/duckdb/extension/core_functions/scalar/map/map_extract.cpp +89 -8
- package/src/duckdb/extension/icu/icu-current.cpp +63 -0
- package/src/duckdb/extension/icu/icu-makedate.cpp +43 -39
- package/src/duckdb/extension/icu/icu-timezone.cpp +63 -63
- package/src/duckdb/extension/icu/icu_extension.cpp +2 -0
- package/src/duckdb/extension/icu/include/icu-casts.hpp +39 -0
- package/src/duckdb/extension/icu/include/icu-current.hpp +17 -0
- package/src/duckdb/extension/icu/third_party/icu/stubdata/stubdata.cpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_structure.cpp +3 -1
- package/src/duckdb/extension/parquet/column_writer.cpp +26 -18
- package/src/duckdb/extension/parquet/include/parquet_reader.hpp +0 -6
- package/src/duckdb/extension/parquet/include/parquet_writer.hpp +15 -1
- package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +1 -0
- package/src/duckdb/extension/parquet/parquet_extension.cpp +67 -15
- package/src/duckdb/extension/parquet/parquet_reader.cpp +5 -3
- package/src/duckdb/extension/parquet/parquet_writer.cpp +5 -6
- package/src/duckdb/src/catalog/catalog.cpp +21 -8
- package/src/duckdb/src/catalog/catalog_search_path.cpp +17 -1
- package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
- package/src/duckdb/src/catalog/default/default_functions.cpp +0 -3
- package/src/duckdb/src/catalog/dependency_list.cpp +7 -0
- package/src/duckdb/src/common/adbc/adbc.cpp +1 -56
- package/src/duckdb/src/common/arrow/arrow_converter.cpp +3 -2
- package/src/duckdb/src/common/arrow/arrow_type_extension.cpp +58 -28
- package/src/duckdb/src/common/arrow/schema_metadata.cpp +1 -1
- package/src/duckdb/src/common/compressed_file_system.cpp +6 -2
- package/src/duckdb/src/common/enum_util.cpp +26 -22
- package/src/duckdb/src/common/error_data.cpp +3 -2
- package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
- package/src/duckdb/src/common/local_file_system.cpp +2 -2
- package/src/duckdb/src/common/multi_file_reader.cpp +1 -1
- package/src/duckdb/src/common/random_engine.cpp +4 -1
- package/src/duckdb/src/common/serializer/memory_stream.cpp +23 -19
- package/src/duckdb/src/common/serializer/serializer.cpp +1 -1
- package/src/duckdb/src/common/types/bit.cpp +1 -1
- package/src/duckdb/src/common/types/column/column_data_allocator.cpp +0 -5
- package/src/duckdb/src/common/types/column/column_data_collection.cpp +4 -1
- package/src/duckdb/src/common/types/data_chunk.cpp +2 -1
- package/src/duckdb/src/common/types/row/tuple_data_segment.cpp +0 -4
- package/src/duckdb/src/common/types.cpp +1 -1
- package/src/duckdb/src/execution/index/art/art.cpp +52 -42
- package/src/duckdb/src/execution/index/art/leaf.cpp +4 -9
- package/src/duckdb/src/execution/index/art/node.cpp +13 -13
- package/src/duckdb/src/execution/index/art/prefix.cpp +21 -16
- package/src/duckdb/src/execution/index/bound_index.cpp +6 -8
- package/src/duckdb/src/execution/index/fixed_size_allocator.cpp +39 -34
- package/src/duckdb/src/execution/index/fixed_size_buffer.cpp +2 -1
- package/src/duckdb/src/execution/index/unbound_index.cpp +10 -0
- package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +62 -44
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/column_count_scanner.cpp +26 -0
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +69 -40
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +3 -7
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +11 -5
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +4 -0
- package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine_cache.cpp +8 -8
- package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +36 -12
- package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +12 -9
- package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +0 -1
- package/src/duckdb/src/execution/operator/persistent/physical_copy_database.cpp +29 -1
- package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +58 -10
- package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +58 -35
- package/src/duckdb/src/execution/operator/schema/physical_create_art_index.cpp +2 -1
- package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +9 -4
- package/src/duckdb/src/execution/sample/reservoir_sample.cpp +7 -6
- package/src/duckdb/src/function/compression_config.cpp +4 -0
- package/src/duckdb/src/function/function_binder.cpp +1 -1
- package/src/duckdb/src/function/scalar/system/write_log.cpp +2 -2
- package/src/duckdb/src/function/table/arrow/arrow_duck_schema.cpp +15 -2
- package/src/duckdb/src/function/table/arrow_conversion.cpp +10 -10
- package/src/duckdb/src/function/table/copy_csv.cpp +8 -5
- package/src/duckdb/src/function/table/read_csv.cpp +21 -4
- package/src/duckdb/src/function/table/sniff_csv.cpp +7 -0
- package/src/duckdb/src/function/table/system/duckdb_extensions.cpp +4 -0
- package/src/duckdb/src/function/table/system/duckdb_secret_types.cpp +71 -0
- package/src/duckdb/src/function/table/system_functions.cpp +1 -0
- package/src/duckdb/src/function/table/table_scan.cpp +120 -36
- package/src/duckdb/src/function/table/version/pragma_version.cpp +4 -4
- package/src/duckdb/src/function/window/window_aggregate_function.cpp +6 -1
- package/src/duckdb/src/function/window/window_boundaries_state.cpp +135 -11
- package/src/duckdb/src/function/window/window_segment_tree.cpp +50 -22
- package/src/duckdb/src/function/window/window_token_tree.cpp +4 -3
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +4 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +2 -0
- package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_type_extension.hpp +4 -2
- package/src/duckdb/src/include/duckdb/common/enum_util.hpp +8 -8
- package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +0 -2
- package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +8 -3
- package/src/duckdb/src/include/duckdb/common/serializer/memory_stream.hpp +6 -1
- package/src/duckdb/src/include/duckdb/common/serializer/serialization_data.hpp +25 -0
- package/src/duckdb/src/include/duckdb/common/serializer/serializer.hpp +9 -3
- package/src/duckdb/src/include/duckdb/common/types/selection_vector.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +11 -14
- package/src/duckdb/src/include/duckdb/execution/index/art/prefix.hpp +5 -4
- package/src/duckdb/src/include/duckdb/execution/index/bound_index.hpp +21 -10
- package/src/duckdb/src/include/duckdb/execution/index/fixed_size_allocator.hpp +6 -5
- package/src/duckdb/src/include/duckdb/execution/index/fixed_size_buffer.hpp +37 -32
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/base_scanner.hpp +36 -1
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/column_count_scanner.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/sniffer/csv_sniffer.hpp +2 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine_options.hpp +5 -5
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/string_value_scanner.hpp +5 -30
- package/src/duckdb/src/include/duckdb/execution/reservoir_sample.hpp +7 -1
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/table/arrow/arrow_duck_schema.hpp +1 -0
- package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +4 -0
- package/src/duckdb/src/include/duckdb/function/window/window_boundaries_state.hpp +2 -2
- package/src/duckdb/src/include/duckdb/logging/logger.hpp +40 -119
- package/src/duckdb/src/include/duckdb/logging/logging.hpp +0 -2
- package/src/duckdb/src/include/duckdb/main/config.hpp +5 -0
- package/src/duckdb/src/include/duckdb/main/connection.hpp +0 -8
- package/src/duckdb/src/include/duckdb/main/connection_manager.hpp +2 -1
- package/src/duckdb/src/include/duckdb/main/extension.hpp +1 -0
- package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +11 -7
- package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +1 -0
- package/src/duckdb/src/include/duckdb/main/secret/secret.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/secret/secret_manager.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/settings.hpp +10 -0
- package/src/duckdb/src/include/duckdb/parser/constraint.hpp +9 -0
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +36 -9
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +2 -1
- package/src/duckdb/src/include/duckdb/parser/query_node/set_operation_node.hpp +8 -2
- package/src/duckdb/src/include/duckdb/planner/binder.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_data.hpp +9 -1
- package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/filter/in_filter.hpp +0 -2
- package/src/duckdb/src/include/duckdb/planner/filter/optional_filter.hpp +4 -4
- package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +14 -10
- package/src/duckdb/src/include/duckdb/storage/index_storage_info.hpp +4 -0
- package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +6 -1
- package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +7 -2
- package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +9 -0
- package/src/duckdb/src/include/duckdb/storage/storage_options.hpp +2 -0
- package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +4 -3
- package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +2 -0
- package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +6 -4
- package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +2 -0
- package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +2 -0
- package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +1 -1
- package/src/duckdb/src/logging/logger.cpp +8 -66
- package/src/duckdb/src/main/attached_database.cpp +3 -1
- package/src/duckdb/src/main/client_context.cpp +4 -2
- package/src/duckdb/src/main/config.cpp +20 -2
- package/src/duckdb/src/main/connection.cpp +2 -29
- package/src/duckdb/src/main/connection_manager.cpp +5 -3
- package/src/duckdb/src/main/database.cpp +2 -2
- package/src/duckdb/src/main/extension/extension_helper.cpp +4 -5
- package/src/duckdb/src/main/extension/extension_install.cpp +23 -10
- package/src/duckdb/src/main/extension/extension_load.cpp +6 -7
- package/src/duckdb/src/main/extension.cpp +27 -9
- package/src/duckdb/src/main/secret/secret_manager.cpp +11 -0
- package/src/duckdb/src/main/settings/custom_settings.cpp +44 -0
- package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +6 -0
- package/src/duckdb/src/optimizer/filter_combiner.cpp +13 -3
- package/src/duckdb/src/optimizer/filter_pushdown.cpp +33 -6
- package/src/duckdb/src/optimizer/late_materialization.cpp +14 -3
- package/src/duckdb/src/optimizer/remove_unused_columns.cpp +0 -3
- package/src/duckdb/src/parser/parsed_data/attach_info.cpp +5 -1
- package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +6 -3
- package/src/duckdb/src/parser/query_node/set_operation_node.cpp +49 -0
- package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +1 -0
- package/src/duckdb/src/parser/transform/expression/transform_function.cpp +50 -12
- package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +7 -5
- package/src/duckdb/src/planner/binder/expression/bind_comparison_expression.cpp +1 -0
- package/src/duckdb/src/planner/binder/expression/bind_operator_expression.cpp +2 -2
- package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +12 -2
- package/src/duckdb/src/planner/binder/statement/bind_copy_database.cpp +0 -1
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +55 -39
- package/src/duckdb/src/planner/binder/statement/bind_execute.cpp +2 -1
- package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +15 -7
- package/src/duckdb/src/planner/binder/tableref/bind_showref.cpp +13 -8
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +8 -3
- package/src/duckdb/src/planner/expression/bound_function_expression.cpp +17 -1
- package/src/duckdb/src/planner/expression_binder/index_binder.cpp +1 -0
- package/src/duckdb/src/planner/filter/conjunction_filter.cpp +1 -0
- package/src/duckdb/src/planner/filter/constant_filter.cpp +21 -0
- package/src/duckdb/src/planner/filter/in_filter.cpp +4 -7
- package/src/duckdb/src/planner/logical_operator.cpp +5 -3
- package/src/duckdb/src/planner/planner.cpp +1 -1
- package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +2 -0
- package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +3 -4
- package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -5
- package/src/duckdb/src/storage/compression/dictionary/decompression.cpp +4 -4
- package/src/duckdb/src/storage/compression/fsst.cpp +2 -2
- package/src/duckdb/src/storage/compression/roaring/common.cpp +10 -1
- package/src/duckdb/src/storage/compression/string_uncompressed.cpp +11 -6
- package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +4 -0
- package/src/duckdb/src/storage/compression/zstd.cpp +6 -0
- package/src/duckdb/src/storage/data_table.cpp +104 -109
- package/src/duckdb/src/storage/local_storage.cpp +8 -6
- package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
- package/src/duckdb/src/storage/serialization/serialize_dependency.cpp +3 -3
- package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +3 -3
- package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +7 -5
- package/src/duckdb/src/storage/single_file_block_manager.cpp +95 -28
- package/src/duckdb/src/storage/storage_info.cpp +38 -0
- package/src/duckdb/src/storage/storage_manager.cpp +11 -0
- package/src/duckdb/src/storage/table/column_data.cpp +4 -0
- package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +3 -3
- package/src/duckdb/src/storage/table/row_group_collection.cpp +67 -68
- package/src/duckdb/src/storage/table/table_statistics.cpp +4 -4
- package/src/duckdb/src/storage/table_index_list.cpp +41 -15
- package/src/duckdb/src/storage/wal_replay.cpp +3 -1
- package/src/duckdb/src/storage/write_ahead_log.cpp +11 -4
- package/src/duckdb/src/transaction/meta_transaction.cpp +1 -1
- package/src/duckdb/src/verification/deserialized_statement_verifier.cpp +2 -1
- package/src/duckdb/third_party/httplib/httplib.hpp +0 -1
- package/src/duckdb/third_party/re2/util/logging.h +10 -10
- 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
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
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,
|
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
|
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
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
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(
|
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.
|
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)
|
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
|
-
|
278
|
-
auto v1_0_0_storage =
|
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
|
-
|
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
|
38
|
-
#define
|
39
|
-
#define
|
40
|
-
#define
|
41
|
-
#define
|
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
|
45
|
+
#define LOG_0 RE2_LOG_INFO
|
46
46
|
#endif
|
47
47
|
|
48
48
|
#ifdef NDEBUG
|
49
|
-
#define
|
49
|
+
#define RE2_LOG_DFATAL RE2_LOG_ERROR
|
50
50
|
#else
|
51
|
-
#define
|
51
|
+
#define RE2_LOG_DFATAL RE2_LOG_FATAL
|
52
52
|
#endif
|
53
53
|
|
54
|
-
#define LOG(severity)
|
54
|
+
#define LOG(severity) RE2_LOG_ ## severity.stream()
|
55
55
|
|
56
|
-
#define VLOG(x) if((x)>0){}else
|
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"
|