duckdb 0.7.2-dev1803.0 → 0.7.2-dev1898.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/package.json +1 -1
- package/src/duckdb/src/catalog/catalog.cpp +27 -27
- package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +6 -6
- package/src/duckdb/src/catalog/catalog_set.cpp +27 -25
- package/src/duckdb/src/catalog/default/default_functions.cpp +6 -6
- package/src/duckdb/src/catalog/default/default_types.cpp +4 -4
- package/src/duckdb/src/catalog/default/default_views.cpp +4 -4
- package/src/duckdb/src/catalog/dependency_list.cpp +7 -6
- package/src/duckdb/src/catalog/dependency_manager.cpp +44 -38
- package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +11 -6
- package/src/duckdb/src/common/sort/sorted_block.cpp +9 -4
- package/src/duckdb/src/common/types/batched_data_collection.cpp +2 -1
- package/src/duckdb/src/common/types/column_data_allocator.cpp +1 -0
- package/src/duckdb/src/common/types/vector.cpp +2 -2
- package/src/duckdb/src/common/vector_operations/vector_copy.cpp +14 -11
- package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +51 -50
- package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +4 -0
- package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +14 -13
- package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +20 -20
- package/src/duckdb/src/execution/operator/schema/physical_create_table.cpp +2 -2
- package/src/duckdb/src/execution/physical_plan/plan_create_index.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +3 -3
- package/src/duckdb/src/execution/physical_plan/plan_delete.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan/plan_update.cpp +1 -1
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +172 -63
- package/src/duckdb/src/function/cast/cast_function_set.cpp +2 -1
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +15 -9
- package/src/duckdb/src/function/scalar/sequence/nextval.cpp +29 -29
- package/src/duckdb/src/function/scalar/string/damerau_levenshtein.cpp +106 -0
- package/src/duckdb/src/function/scalar/string/regexp.cpp +145 -28
- package/src/duckdb/src/function/scalar/string_functions.cpp +1 -0
- package/src/duckdb/src/function/table/checkpoint.cpp +4 -4
- package/src/duckdb/src/function/table/system/duckdb_columns.cpp +24 -24
- package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +7 -6
- package/src/duckdb/src/function/table/system/duckdb_databases.cpp +1 -1
- package/src/duckdb/src/function/table/system/duckdb_dependencies.cpp +11 -11
- package/src/duckdb/src/function/table/system/pragma_database_size.cpp +1 -1
- package/src/duckdb/src/function/table/system/pragma_table_info.cpp +17 -18
- package/src/duckdb/src/function/table/table_scan.cpp +8 -11
- package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +9 -9
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry_map.hpp +38 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_transaction.hpp +4 -3
- package/src/duckdb/src/include/duckdb/catalog/default/default_functions.hpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/default/default_types.hpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/default/default_views.hpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/dependency.hpp +4 -5
- package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +4 -5
- package/src/duckdb/src/include/duckdb/catalog/dependency_manager.hpp +10 -9
- package/src/duckdb/src/include/duckdb/common/allocator.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/field_writer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/helper.hpp +9 -0
- package/src/duckdb/src/include/duckdb/common/optional_ptr.hpp +29 -6
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_reader.hpp +6 -5
- package/src/duckdb/src/include/duckdb/common/serializer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/row_data_collection.hpp +1 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_insert.hpp +5 -5
- package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_table.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +3 -2
- package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +4 -0
- package/src/duckdb/src/include/duckdb/main/client_config.hpp +5 -0
- package/src/duckdb/src/include/duckdb/main/database_manager.hpp +4 -3
- package/src/duckdb/src/include/duckdb/main/query_result.hpp +3 -2
- package/src/duckdb/src/include/duckdb/main/settings.hpp +19 -0
- package/src/duckdb/src/include/duckdb/optimizer/filter_combiner.hpp +7 -7
- package/src/duckdb/src/include/duckdb/optimizer/matcher/expression_matcher.hpp +11 -11
- package/src/duckdb/src/include/duckdb/optimizer/matcher/set_matcher.hpp +8 -8
- package/src/duckdb/src/include/duckdb/optimizer/rule/arithmetic_simplification.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/rule/case_simplification.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/rule/comparison_simplification.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/rule/conjunction_simplification.hpp +2 -2
- package/src/duckdb/src/include/duckdb/optimizer/rule/constant_folding.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/rule/date_part_simplification.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/rule/distributivity.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/rule/empty_needle_removal.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/rule/enum_comparison.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/rule/equal_or_null_simplification.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/rule/in_clause_simplification.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/rule/like_optimizations.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/rule/move_constants.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/rule/ordered_aggregate_optimizer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/rule/regex_optimizations.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/rule.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +19 -6
- package/src/duckdb/src/include/duckdb/parser/expression_util.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parser.hpp +1 -7
- package/src/duckdb/src/include/duckdb/parser/parser_options.hpp +23 -0
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +5 -3
- package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -2
- package/src/duckdb/src/include/duckdb/planner/expression_binder/base_select_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder/order_binder.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +10 -2
- package/src/duckdb/src/include/duckdb/storage/buffer/buffer_pool.hpp +1 -0
- package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +49 -126
- package/src/duckdb/src/include/duckdb/storage/meta_block_reader.hpp +5 -5
- package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +159 -0
- package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +1 -0
- package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +6 -5
- package/src/duckdb/src/main/client_context.cpp +5 -3
- package/src/duckdb/src/main/config.cpp +2 -0
- package/src/duckdb/src/main/database.cpp +2 -1
- package/src/duckdb/src/main/database_manager.cpp +4 -4
- package/src/duckdb/src/main/settings/settings.cpp +36 -0
- package/src/duckdb/src/optimizer/common_aggregate_optimizer.cpp +2 -2
- package/src/duckdb/src/optimizer/cse_optimizer.cpp +4 -4
- package/src/duckdb/src/optimizer/deliminator.cpp +13 -11
- package/src/duckdb/src/optimizer/expression_rewriter.cpp +2 -2
- package/src/duckdb/src/optimizer/filter_combiner.cpp +67 -65
- package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +1 -0
- package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +26 -25
- package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +23 -21
- package/src/duckdb/src/optimizer/rule/arithmetic_simplification.cpp +7 -6
- package/src/duckdb/src/optimizer/rule/case_simplification.cpp +2 -2
- package/src/duckdb/src/optimizer/rule/comparison_simplification.cpp +6 -7
- package/src/duckdb/src/optimizer/rule/conjunction_simplification.cpp +9 -8
- package/src/duckdb/src/optimizer/rule/constant_folding.cpp +7 -7
- package/src/duckdb/src/optimizer/rule/date_part_simplification.cpp +3 -3
- package/src/duckdb/src/optimizer/rule/distributivity.cpp +5 -5
- package/src/duckdb/src/optimizer/rule/empty_needle_removal.cpp +6 -6
- package/src/duckdb/src/optimizer/rule/enum_comparison.cpp +4 -4
- package/src/duckdb/src/optimizer/rule/equal_or_null_simplification.cpp +23 -26
- package/src/duckdb/src/optimizer/rule/in_clause_simplification_rule.cpp +2 -3
- package/src/duckdb/src/optimizer/rule/like_optimizations.cpp +3 -3
- package/src/duckdb/src/optimizer/rule/move_constants.cpp +6 -6
- package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +2 -2
- package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +3 -3
- package/src/duckdb/src/parser/expression_util.cpp +6 -6
- package/src/duckdb/src/parser/parser.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +7 -3
- package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +3 -3
- package/src/duckdb/src/parser/transformer.cpp +6 -5
- package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +2 -2
- package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +3 -3
- package/src/duckdb/src/planner/binder/query_node/bind_setop_node.cpp +5 -5
- package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +2 -2
- package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +4 -4
- package/src/duckdb/src/planner/expression_binder/order_binder.cpp +3 -3
- package/src/duckdb/src/storage/buffer/block_handle.cpp +3 -2
- package/src/duckdb/src/storage/buffer/block_manager.cpp +3 -1
- package/src/duckdb/src/storage/buffer/buffer_handle.cpp +1 -0
- package/src/duckdb/src/storage/buffer/buffer_pool_reservation.cpp +3 -0
- package/src/duckdb/src/storage/buffer_manager.cpp +35 -726
- package/src/duckdb/src/storage/checkpoint_manager.cpp +2 -2
- package/src/duckdb/src/storage/meta_block_reader.cpp +6 -5
- package/src/duckdb/src/storage/standard_buffer_manager.cpp +801 -0
- package/src/duckdb/src/storage/wal_replay.cpp +2 -2
- package/src/duckdb/src/transaction/meta_transaction.cpp +13 -13
- package/src/duckdb/src/transaction/transaction.cpp +1 -1
- package/src/duckdb/src/transaction/transaction_context.cpp +1 -1
- package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +949 -947
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +16431 -16385
- package/src/duckdb/third_party/libpg_query/src_backend_parser_scan.cpp +503 -493
- package/src/duckdb/ub_src_function_scalar_string.cpp +2 -0
- package/src/duckdb/ub_src_storage.cpp +2 -0
|
@@ -36,7 +36,7 @@ bool WriteAheadLog::Replay(AttachedDatabase &database, string &path) {
|
|
|
36
36
|
// first deserialize the WAL to look for a checkpoint flag
|
|
37
37
|
// if there is a checkpoint flag, we might have already flushed the contents of the WAL to disk
|
|
38
38
|
ReplayState checkpoint_state(database, *con.context, *initial_reader);
|
|
39
|
-
initial_reader->
|
|
39
|
+
initial_reader->SetCatalog(checkpoint_state.catalog);
|
|
40
40
|
checkpoint_state.deserialize_only = true;
|
|
41
41
|
try {
|
|
42
42
|
while (true) {
|
|
@@ -73,7 +73,7 @@ bool WriteAheadLog::Replay(AttachedDatabase &database, string &path) {
|
|
|
73
73
|
|
|
74
74
|
// we need to recover from the WAL: actually set up the replay state
|
|
75
75
|
BufferedFileReader reader(FileSystem::Get(database), path.c_str(), con.context.get());
|
|
76
|
-
reader.
|
|
76
|
+
reader.SetCatalog(checkpoint_state.catalog);
|
|
77
77
|
ReplayState state(database, *con.context, reader);
|
|
78
78
|
|
|
79
79
|
// replay the WAL
|
|
@@ -20,19 +20,19 @@ ValidChecker &ValidChecker::Get(MetaTransaction &transaction) {
|
|
|
20
20
|
|
|
21
21
|
Transaction &Transaction::Get(ClientContext &context, AttachedDatabase &db) {
|
|
22
22
|
auto &meta_transaction = MetaTransaction::Get(context);
|
|
23
|
-
return meta_transaction.GetTransaction(
|
|
23
|
+
return meta_transaction.GetTransaction(db);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
Transaction &MetaTransaction::GetTransaction(AttachedDatabase
|
|
27
|
-
auto entry = transactions.find(db);
|
|
26
|
+
Transaction &MetaTransaction::GetTransaction(AttachedDatabase &db) {
|
|
27
|
+
auto entry = transactions.find(&db);
|
|
28
28
|
if (entry == transactions.end()) {
|
|
29
|
-
auto new_transaction = db
|
|
29
|
+
auto new_transaction = db.GetTransactionManager().StartTransaction(context);
|
|
30
30
|
if (!new_transaction) {
|
|
31
31
|
throw InternalException("StartTransaction did not return a valid transaction");
|
|
32
32
|
}
|
|
33
33
|
new_transaction->active_query = active_query;
|
|
34
|
-
all_transactions.push_back(db);
|
|
35
|
-
transactions[db] = new_transaction;
|
|
34
|
+
all_transactions.push_back(&db);
|
|
35
|
+
transactions[&db] = new_transaction;
|
|
36
36
|
return *new_transaction;
|
|
37
37
|
} else {
|
|
38
38
|
D_ASSERT(entry->second->active_query == active_query);
|
|
@@ -49,7 +49,7 @@ string MetaTransaction::Commit() {
|
|
|
49
49
|
// commit transactions in reverse order
|
|
50
50
|
for (idx_t i = all_transactions.size(); i > 0; i--) {
|
|
51
51
|
auto db = all_transactions[i - 1];
|
|
52
|
-
auto entry = transactions.find(db);
|
|
52
|
+
auto entry = transactions.find(db.get());
|
|
53
53
|
if (entry == transactions.end()) {
|
|
54
54
|
throw InternalException("Could not find transaction corresponding to database in MetaTransaction");
|
|
55
55
|
}
|
|
@@ -71,7 +71,7 @@ void MetaTransaction::Rollback() {
|
|
|
71
71
|
for (idx_t i = all_transactions.size(); i > 0; i--) {
|
|
72
72
|
auto db = all_transactions[i - 1];
|
|
73
73
|
auto &transaction_manager = db->GetTransactionManager();
|
|
74
|
-
auto entry = transactions.find(db);
|
|
74
|
+
auto entry = transactions.find(db.get());
|
|
75
75
|
D_ASSERT(entry != transactions.end());
|
|
76
76
|
auto transaction = entry->second;
|
|
77
77
|
transaction_manager.RollbackTransaction(transaction);
|
|
@@ -89,20 +89,20 @@ void MetaTransaction::SetActiveQuery(transaction_t query_number) {
|
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
-
void MetaTransaction::ModifyDatabase(AttachedDatabase
|
|
93
|
-
if (db
|
|
92
|
+
void MetaTransaction::ModifyDatabase(AttachedDatabase &db) {
|
|
93
|
+
if (db.IsSystem() || db.IsTemporary()) {
|
|
94
94
|
// we can always modify the system and temp databases
|
|
95
95
|
return;
|
|
96
96
|
}
|
|
97
97
|
if (!modified_database) {
|
|
98
|
-
modified_database = db;
|
|
98
|
+
modified_database = &db;
|
|
99
99
|
return;
|
|
100
100
|
}
|
|
101
|
-
if (db != modified_database) {
|
|
101
|
+
if (&db != modified_database.get()) {
|
|
102
102
|
throw TransactionException(
|
|
103
103
|
"Attempting to write to database \"%s\" in a transaction that has already modified database \"%s\" - a "
|
|
104
104
|
"single transaction can only write to a single attached database.",
|
|
105
|
-
db
|
|
105
|
+
db.GetName(), modified_database->GetName());
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
|
|
@@ -18,7 +18,7 @@ bool Transaction::IsReadOnly() {
|
|
|
18
18
|
throw InternalException("Transaction::IsReadOnly() called after client context has been destroyed");
|
|
19
19
|
}
|
|
20
20
|
auto &db = manager.GetDB();
|
|
21
|
-
return MetaTransaction::Get(*ctxt).ModifiedDatabase() != &db;
|
|
21
|
+
return MetaTransaction::Get(*ctxt).ModifiedDatabase().get() != &db;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
} // namespace duckdb
|
|
@@ -34,7 +34,7 @@ void TransactionContext::BeginTransaction() {
|
|
|
34
34
|
// if immediate transaction mode is enabled then start all transactions immediately
|
|
35
35
|
auto databases = DatabaseManager::Get(context).GetDatabases(context);
|
|
36
36
|
for (auto db : databases) {
|
|
37
|
-
current_transaction->GetTransaction(db);
|
|
37
|
+
current_transaction->GetTransaction(*db);
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
}
|