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.
Files changed (158) hide show
  1. package/package.json +1 -1
  2. package/src/duckdb/src/catalog/catalog.cpp +27 -27
  3. package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +6 -6
  4. package/src/duckdb/src/catalog/catalog_set.cpp +27 -25
  5. package/src/duckdb/src/catalog/default/default_functions.cpp +6 -6
  6. package/src/duckdb/src/catalog/default/default_types.cpp +4 -4
  7. package/src/duckdb/src/catalog/default/default_views.cpp +4 -4
  8. package/src/duckdb/src/catalog/dependency_list.cpp +7 -6
  9. package/src/duckdb/src/catalog/dependency_manager.cpp +44 -38
  10. package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +11 -6
  11. package/src/duckdb/src/common/sort/sorted_block.cpp +9 -4
  12. package/src/duckdb/src/common/types/batched_data_collection.cpp +2 -1
  13. package/src/duckdb/src/common/types/column_data_allocator.cpp +1 -0
  14. package/src/duckdb/src/common/types/vector.cpp +2 -2
  15. package/src/duckdb/src/common/vector_operations/vector_copy.cpp +14 -11
  16. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  17. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +51 -50
  18. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +4 -0
  19. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +14 -13
  20. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +20 -20
  21. package/src/duckdb/src/execution/operator/schema/physical_create_table.cpp +2 -2
  22. package/src/duckdb/src/execution/physical_plan/plan_create_index.cpp +1 -1
  23. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +3 -3
  24. package/src/duckdb/src/execution/physical_plan/plan_delete.cpp +1 -1
  25. package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +1 -1
  26. package/src/duckdb/src/execution/physical_plan/plan_update.cpp +1 -1
  27. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +172 -63
  28. package/src/duckdb/src/function/cast/cast_function_set.cpp +2 -1
  29. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +15 -9
  30. package/src/duckdb/src/function/scalar/sequence/nextval.cpp +29 -29
  31. package/src/duckdb/src/function/scalar/string/damerau_levenshtein.cpp +106 -0
  32. package/src/duckdb/src/function/scalar/string/regexp.cpp +145 -28
  33. package/src/duckdb/src/function/scalar/string_functions.cpp +1 -0
  34. package/src/duckdb/src/function/table/checkpoint.cpp +4 -4
  35. package/src/duckdb/src/function/table/system/duckdb_columns.cpp +24 -24
  36. package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +7 -6
  37. package/src/duckdb/src/function/table/system/duckdb_databases.cpp +1 -1
  38. package/src/duckdb/src/function/table/system/duckdb_dependencies.cpp +11 -11
  39. package/src/duckdb/src/function/table/system/pragma_database_size.cpp +1 -1
  40. package/src/duckdb/src/function/table/system/pragma_table_info.cpp +17 -18
  41. package/src/duckdb/src/function/table/table_scan.cpp +8 -11
  42. package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
  43. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +9 -9
  44. package/src/duckdb/src/include/duckdb/catalog/catalog_entry_map.hpp +38 -0
  45. package/src/duckdb/src/include/duckdb/catalog/catalog_transaction.hpp +4 -3
  46. package/src/duckdb/src/include/duckdb/catalog/default/default_functions.hpp +2 -2
  47. package/src/duckdb/src/include/duckdb/catalog/default/default_types.hpp +2 -2
  48. package/src/duckdb/src/include/duckdb/catalog/default/default_views.hpp +2 -2
  49. package/src/duckdb/src/include/duckdb/catalog/dependency.hpp +4 -5
  50. package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +4 -5
  51. package/src/duckdb/src/include/duckdb/catalog/dependency_manager.hpp +10 -9
  52. package/src/duckdb/src/include/duckdb/common/allocator.hpp +2 -1
  53. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +1 -1
  54. package/src/duckdb/src/include/duckdb/common/helper.hpp +9 -0
  55. package/src/duckdb/src/include/duckdb/common/optional_ptr.hpp +29 -6
  56. package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_reader.hpp +6 -5
  57. package/src/duckdb/src/include/duckdb/common/serializer.hpp +1 -1
  58. package/src/duckdb/src/include/duckdb/common/types/row_data_collection.hpp +1 -0
  59. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +2 -2
  60. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_insert.hpp +5 -5
  61. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_table.hpp +2 -2
  62. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +3 -2
  63. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +4 -0
  64. package/src/duckdb/src/include/duckdb/main/client_config.hpp +5 -0
  65. package/src/duckdb/src/include/duckdb/main/database_manager.hpp +4 -3
  66. package/src/duckdb/src/include/duckdb/main/query_result.hpp +3 -2
  67. package/src/duckdb/src/include/duckdb/main/settings.hpp +19 -0
  68. package/src/duckdb/src/include/duckdb/optimizer/filter_combiner.hpp +7 -7
  69. package/src/duckdb/src/include/duckdb/optimizer/matcher/expression_matcher.hpp +11 -11
  70. package/src/duckdb/src/include/duckdb/optimizer/matcher/set_matcher.hpp +8 -8
  71. package/src/duckdb/src/include/duckdb/optimizer/rule/arithmetic_simplification.hpp +1 -1
  72. package/src/duckdb/src/include/duckdb/optimizer/rule/case_simplification.hpp +1 -1
  73. package/src/duckdb/src/include/duckdb/optimizer/rule/comparison_simplification.hpp +1 -1
  74. package/src/duckdb/src/include/duckdb/optimizer/rule/conjunction_simplification.hpp +2 -2
  75. package/src/duckdb/src/include/duckdb/optimizer/rule/constant_folding.hpp +1 -1
  76. package/src/duckdb/src/include/duckdb/optimizer/rule/date_part_simplification.hpp +1 -1
  77. package/src/duckdb/src/include/duckdb/optimizer/rule/distributivity.hpp +1 -1
  78. package/src/duckdb/src/include/duckdb/optimizer/rule/empty_needle_removal.hpp +1 -1
  79. package/src/duckdb/src/include/duckdb/optimizer/rule/enum_comparison.hpp +1 -1
  80. package/src/duckdb/src/include/duckdb/optimizer/rule/equal_or_null_simplification.hpp +1 -1
  81. package/src/duckdb/src/include/duckdb/optimizer/rule/in_clause_simplification.hpp +1 -1
  82. package/src/duckdb/src/include/duckdb/optimizer/rule/like_optimizations.hpp +1 -1
  83. package/src/duckdb/src/include/duckdb/optimizer/rule/move_constants.hpp +1 -1
  84. package/src/duckdb/src/include/duckdb/optimizer/rule/ordered_aggregate_optimizer.hpp +1 -1
  85. package/src/duckdb/src/include/duckdb/optimizer/rule/regex_optimizations.hpp +1 -1
  86. package/src/duckdb/src/include/duckdb/optimizer/rule.hpp +2 -2
  87. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +1 -1
  88. package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +19 -6
  89. package/src/duckdb/src/include/duckdb/parser/expression_util.hpp +1 -1
  90. package/src/duckdb/src/include/duckdb/parser/parser.hpp +1 -7
  91. package/src/duckdb/src/include/duckdb/parser/parser_options.hpp +23 -0
  92. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +5 -3
  93. package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -2
  94. package/src/duckdb/src/include/duckdb/planner/expression_binder/base_select_binder.hpp +1 -1
  95. package/src/duckdb/src/include/duckdb/planner/expression_binder/order_binder.hpp +3 -3
  96. package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +10 -2
  97. package/src/duckdb/src/include/duckdb/storage/buffer/buffer_pool.hpp +1 -0
  98. package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +49 -126
  99. package/src/duckdb/src/include/duckdb/storage/meta_block_reader.hpp +5 -5
  100. package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +159 -0
  101. package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +1 -0
  102. package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +6 -5
  103. package/src/duckdb/src/main/client_context.cpp +5 -3
  104. package/src/duckdb/src/main/config.cpp +2 -0
  105. package/src/duckdb/src/main/database.cpp +2 -1
  106. package/src/duckdb/src/main/database_manager.cpp +4 -4
  107. package/src/duckdb/src/main/settings/settings.cpp +36 -0
  108. package/src/duckdb/src/optimizer/common_aggregate_optimizer.cpp +2 -2
  109. package/src/duckdb/src/optimizer/cse_optimizer.cpp +4 -4
  110. package/src/duckdb/src/optimizer/deliminator.cpp +13 -11
  111. package/src/duckdb/src/optimizer/expression_rewriter.cpp +2 -2
  112. package/src/duckdb/src/optimizer/filter_combiner.cpp +67 -65
  113. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +1 -0
  114. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +26 -25
  115. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +23 -21
  116. package/src/duckdb/src/optimizer/rule/arithmetic_simplification.cpp +7 -6
  117. package/src/duckdb/src/optimizer/rule/case_simplification.cpp +2 -2
  118. package/src/duckdb/src/optimizer/rule/comparison_simplification.cpp +6 -7
  119. package/src/duckdb/src/optimizer/rule/conjunction_simplification.cpp +9 -8
  120. package/src/duckdb/src/optimizer/rule/constant_folding.cpp +7 -7
  121. package/src/duckdb/src/optimizer/rule/date_part_simplification.cpp +3 -3
  122. package/src/duckdb/src/optimizer/rule/distributivity.cpp +5 -5
  123. package/src/duckdb/src/optimizer/rule/empty_needle_removal.cpp +6 -6
  124. package/src/duckdb/src/optimizer/rule/enum_comparison.cpp +4 -4
  125. package/src/duckdb/src/optimizer/rule/equal_or_null_simplification.cpp +23 -26
  126. package/src/duckdb/src/optimizer/rule/in_clause_simplification_rule.cpp +2 -3
  127. package/src/duckdb/src/optimizer/rule/like_optimizations.cpp +3 -3
  128. package/src/duckdb/src/optimizer/rule/move_constants.cpp +6 -6
  129. package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +2 -2
  130. package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +3 -3
  131. package/src/duckdb/src/parser/expression_util.cpp +6 -6
  132. package/src/duckdb/src/parser/parser.cpp +1 -1
  133. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +7 -3
  134. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +3 -3
  135. package/src/duckdb/src/parser/transformer.cpp +6 -5
  136. package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +2 -2
  137. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +3 -3
  138. package/src/duckdb/src/planner/binder/query_node/bind_setop_node.cpp +5 -5
  139. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +2 -2
  140. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +4 -4
  141. package/src/duckdb/src/planner/expression_binder/order_binder.cpp +3 -3
  142. package/src/duckdb/src/storage/buffer/block_handle.cpp +3 -2
  143. package/src/duckdb/src/storage/buffer/block_manager.cpp +3 -1
  144. package/src/duckdb/src/storage/buffer/buffer_handle.cpp +1 -0
  145. package/src/duckdb/src/storage/buffer/buffer_pool_reservation.cpp +3 -0
  146. package/src/duckdb/src/storage/buffer_manager.cpp +35 -726
  147. package/src/duckdb/src/storage/checkpoint_manager.cpp +2 -2
  148. package/src/duckdb/src/storage/meta_block_reader.cpp +6 -5
  149. package/src/duckdb/src/storage/standard_buffer_manager.cpp +801 -0
  150. package/src/duckdb/src/storage/wal_replay.cpp +2 -2
  151. package/src/duckdb/src/transaction/meta_transaction.cpp +13 -13
  152. package/src/duckdb/src/transaction/transaction.cpp +1 -1
  153. package/src/duckdb/src/transaction/transaction_context.cpp +1 -1
  154. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +949 -947
  155. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +16431 -16385
  156. package/src/duckdb/third_party/libpg_query/src_backend_parser_scan.cpp +503 -493
  157. package/src/duckdb/ub_src_function_scalar_string.cpp +2 -0
  158. 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
- expression_map_t<idx_t> &expressions, const vector<idx_t> &reorder_idx) {
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.get());
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.get()] = DConstants::INVALID_INDEX;
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.get()] = index;
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
- expression_map_t<idx_t> expression_map;
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(&expr);
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->Equals(&expr));
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 &)**expr_ptr;
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
- expression_map_t<idx_t> &projection_map, idx_t max_count)
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, expression_map_t<idx_t> &projection_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.get());
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.buffer_pool.PurgeQueue();
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.temp_directory.empty()) {
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.buffer_pool.AddToEvictionQueue(new_block);
67
+ buffer_manager.GetBufferPool().AddToEvictionQueue(new_block);
66
68
 
67
69
  return new_block;
68
70
  }
@@ -1,5 +1,6 @@
1
1
  #include "duckdb/storage/buffer/buffer_handle.hpp"
2
2
  #include "duckdb/storage/buffer_manager.hpp"
3
+ #include "duckdb/storage/buffer/block_handle.hpp"
3
4
 
4
5
  namespace duckdb {
5
6
 
@@ -3,6 +3,9 @@
3
3
 
4
4
  namespace duckdb {
5
5
 
6
+ BufferPoolReservation::BufferPoolReservation(BufferPool &pool) : pool(pool) {
7
+ }
8
+
6
9
  BufferPoolReservation::BufferPoolReservation(BufferPoolReservation &&src) noexcept : pool(src.pool) {
7
10
  size = src.size;
8
11
  src.size = 0;