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
@@ -13,7 +13,7 @@
|
|
13
13
|
namespace duckdb {
|
14
14
|
|
15
15
|
static void GatherAliases(BoundQueryNode &node, case_insensitive_map_t<idx_t> &aliases,
|
16
|
-
|
16
|
+
parsed_expression_map_t<idx_t> &expressions, const vector<idx_t> &reorder_idx) {
|
17
17
|
if (node.type == QueryNodeType::SET_OPERATION_NODE) {
|
18
18
|
// setop, recurse
|
19
19
|
auto &setop = node.Cast<BoundSetOperationNode>();
|
@@ -66,16 +66,16 @@ static void GatherAliases(BoundQueryNode &node, case_insensitive_map_t<idx_t> &a
|
|
66
66
|
aliases[name] = index;
|
67
67
|
}
|
68
68
|
// now check if the node is already in the set of expressions
|
69
|
-
auto expr_entry = expressions.find(expr
|
69
|
+
auto expr_entry = expressions.find(*expr);
|
70
70
|
if (expr_entry != expressions.end()) {
|
71
71
|
// the node is in there
|
72
72
|
// repeat the same as with the alias: if there is an ambiguity we insert "-1"
|
73
73
|
if (expr_entry->second != index) {
|
74
|
-
expressions[expr
|
74
|
+
expressions[*expr] = DConstants::INVALID_INDEX;
|
75
75
|
}
|
76
76
|
} else {
|
77
77
|
// not in there yet, just place it in there
|
78
|
-
expressions[expr
|
78
|
+
expressions[*expr] = index;
|
79
79
|
}
|
80
80
|
}
|
81
81
|
}
|
@@ -240,7 +240,7 @@ unique_ptr<BoundQueryNode> Binder::BindNode(SetOperationNode &statement) {
|
|
240
240
|
// we recursively visit the children of this node to extract aliases and expressions that can be referenced
|
241
241
|
// in the ORDER BY
|
242
242
|
case_insensitive_map_t<idx_t> alias_map;
|
243
|
-
|
243
|
+
parsed_expression_map_t<idx_t> expression_map;
|
244
244
|
|
245
245
|
if (result->setop_type == SetOperationType::UNION_BY_NAME) {
|
246
246
|
GatherAliases(*result->left, alias_map, expression_map, result->left_reorder_idx);
|
@@ -297,10 +297,10 @@ unique_ptr<BoundCreateTableInfo> Binder::BindCreateTableInfo(unique_ptr<CreateIn
|
|
297
297
|
auto type_dependency = LogicalType::GetCatalog(column.Type());
|
298
298
|
if (type_dependency) {
|
299
299
|
// Only if the USER comes from a create type
|
300
|
-
result->dependencies.AddDependency(type_dependency);
|
300
|
+
result->dependencies.AddDependency(*type_dependency);
|
301
301
|
}
|
302
302
|
}
|
303
|
-
result->dependencies.VerifyDependencies(schema->catalog, result->Base().table);
|
303
|
+
result->dependencies.VerifyDependencies(*schema->catalog, result->Base().table);
|
304
304
|
properties.allow_stream_result = false;
|
305
305
|
return result;
|
306
306
|
}
|
@@ -56,14 +56,14 @@ idx_t BaseSelectBinder::TryBindGroup(ParsedExpression &expr, idx_t depth) {
|
|
56
56
|
}
|
57
57
|
// no alias reference found
|
58
58
|
// check the list of group columns for a match
|
59
|
-
auto entry = info.map.find(
|
59
|
+
auto entry = info.map.find(expr);
|
60
60
|
if (entry != info.map.end()) {
|
61
61
|
return entry->second;
|
62
62
|
}
|
63
63
|
#ifdef DEBUG
|
64
64
|
for (auto entry : info.map) {
|
65
|
-
D_ASSERT(!entry.first
|
66
|
-
D_ASSERT(!expr.Equals(entry.first));
|
65
|
+
D_ASSERT(!entry.first.get().Equals(&expr));
|
66
|
+
D_ASSERT(!expr.Equals(&entry.first.get()));
|
67
67
|
}
|
68
68
|
#endif
|
69
69
|
return DConstants::INVALID_INDEX;
|
@@ -77,7 +77,7 @@ BindResult BaseSelectBinder::BindColumnRef(unique_ptr<ParsedExpression> *expr_pt
|
|
77
77
|
}
|
78
78
|
// binding failed
|
79
79
|
// check in the alias map
|
80
|
-
auto &colref = (ColumnRefExpression
|
80
|
+
auto &colref = (*expr_ptr)->Cast<ColumnRefExpression>();
|
81
81
|
if (!colref.IsQualified()) {
|
82
82
|
auto alias_entry = alias_map.find(colref.column_names[0]);
|
83
83
|
if (alias_entry != alias_map.end()) {
|
@@ -13,12 +13,12 @@
|
|
13
13
|
namespace duckdb {
|
14
14
|
|
15
15
|
OrderBinder::OrderBinder(vector<Binder *> binders, idx_t projection_index, case_insensitive_map_t<idx_t> &alias_map,
|
16
|
-
|
16
|
+
parsed_expression_map_t<idx_t> &projection_map, idx_t max_count)
|
17
17
|
: binders(std::move(binders)), projection_index(projection_index), max_count(max_count), extra_list(nullptr),
|
18
18
|
alias_map(alias_map), projection_map(projection_map) {
|
19
19
|
}
|
20
20
|
OrderBinder::OrderBinder(vector<Binder *> binders, idx_t projection_index, SelectNode &node,
|
21
|
-
case_insensitive_map_t<idx_t> &alias_map,
|
21
|
+
case_insensitive_map_t<idx_t> &alias_map, parsed_expression_map_t<idx_t> &projection_map)
|
22
22
|
: binders(std::move(binders)), projection_index(projection_index), alias_map(alias_map),
|
23
23
|
projection_map(projection_map) {
|
24
24
|
this->max_count = node.select_list.size();
|
@@ -111,7 +111,7 @@ unique_ptr<Expression> OrderBinder::Bind(unique_ptr<ParsedExpression> expr) {
|
|
111
111
|
ExpressionBinder::QualifyColumnNames(*binder, expr);
|
112
112
|
}
|
113
113
|
// first check if the ORDER BY clause already points to an entry in the projection list
|
114
|
-
auto entry = projection_map.find(expr
|
114
|
+
auto entry = projection_map.find(*expr);
|
115
115
|
if (entry != projection_map.end()) {
|
116
116
|
if (entry->second == DConstants::INVALID_INDEX) {
|
117
117
|
throw BinderException("Ambiguous reference to column");
|
@@ -3,6 +3,7 @@
|
|
3
3
|
#include "duckdb/storage/block_manager.hpp"
|
4
4
|
#include "duckdb/storage/buffer/buffer_handle.hpp"
|
5
5
|
#include "duckdb/storage/buffer_manager.hpp"
|
6
|
+
#include "duckdb/storage/buffer/buffer_pool.hpp"
|
6
7
|
#include "duckdb/common/file_buffer.hpp"
|
7
8
|
|
8
9
|
namespace duckdb {
|
@@ -38,7 +39,7 @@ BlockHandle::~BlockHandle() { // NOLINT: allow internal exceptions
|
|
38
39
|
} else {
|
39
40
|
D_ASSERT(memory_charge.size == 0);
|
40
41
|
}
|
41
|
-
buffer_manager.
|
42
|
+
buffer_manager.GetBufferPool().PurgeQueue();
|
42
43
|
block_manager.UnregisterBlock(block_id, can_destroy);
|
43
44
|
}
|
44
45
|
|
@@ -116,7 +117,7 @@ bool BlockHandle::CanUnload() {
|
|
116
117
|
// there are active readers
|
117
118
|
return false;
|
118
119
|
}
|
119
|
-
if (block_id >= MAXIMUM_BLOCK && !can_destroy && block_manager.buffer_manager.
|
120
|
+
if (block_id >= MAXIMUM_BLOCK && !can_destroy && !block_manager.buffer_manager.HasTemporaryDirectory()) {
|
120
121
|
// in order to unload this block we need to write it to a temporary buffer
|
121
122
|
// however, no temporary directory is specified!
|
122
123
|
// hence we cannot unload the block
|
@@ -1,5 +1,7 @@
|
|
1
1
|
#include "duckdb/storage/block_manager.hpp"
|
2
2
|
#include "duckdb/storage/buffer_manager.hpp"
|
3
|
+
#include "duckdb/storage/buffer/block_handle.hpp"
|
4
|
+
#include "duckdb/storage/buffer/buffer_pool.hpp"
|
3
5
|
|
4
6
|
namespace duckdb {
|
5
7
|
|
@@ -62,7 +64,7 @@ shared_ptr<BlockHandle> BlockManager::ConvertToPersistent(block_id_t block_id, s
|
|
62
64
|
// persist the new block to disk
|
63
65
|
Write(*new_block->buffer, block_id);
|
64
66
|
|
65
|
-
buffer_manager.
|
67
|
+
buffer_manager.GetBufferPool().AddToEvictionQueue(new_block);
|
66
68
|
|
67
69
|
return new_block;
|
68
70
|
}
|