duckdb 0.7.2-dev1034.0 → 0.7.2-dev1146.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 (96) hide show
  1. package/package.json +1 -1
  2. package/src/duckdb/extension/icu/third_party/icu/stubdata/stubdata.cpp +1 -1
  3. package/src/duckdb/extension/parquet/parquet-extension.cpp +2 -1
  4. package/src/duckdb/src/common/hive_partitioning.cpp +3 -1
  5. package/src/duckdb/src/common/progress_bar/progress_bar.cpp +7 -0
  6. package/src/duckdb/src/common/serializer/enum_serializer.cpp +6 -6
  7. package/src/duckdb/src/common/sort/comparators.cpp +14 -5
  8. package/src/duckdb/src/common/types/column_data_collection_segment.cpp +1 -4
  9. package/src/duckdb/src/common/types/interval.cpp +0 -41
  10. package/src/duckdb/src/common/types/list_segment.cpp +658 -0
  11. package/src/duckdb/src/common/types/string_heap.cpp +1 -1
  12. package/src/duckdb/src/common/types/string_type.cpp +1 -1
  13. package/src/duckdb/src/common/types/validity_mask.cpp +24 -7
  14. package/src/duckdb/src/common/types/vector.cpp +3 -7
  15. package/src/duckdb/src/common/value_operations/comparison_operations.cpp +14 -22
  16. package/src/duckdb/src/common/vector_operations/comparison_operators.cpp +10 -10
  17. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +11 -10
  18. package/src/duckdb/src/execution/expression_executor/execute_comparison.cpp +2 -2
  19. package/src/duckdb/src/execution/index/art/art.cpp +13 -0
  20. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +1 -1
  21. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +2 -0
  22. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +1 -0
  23. package/src/duckdb/src/execution/operator/join/physical_join.cpp +0 -3
  24. package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +5 -1
  25. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +18 -5
  26. package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +3 -0
  27. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -1
  28. package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +1 -3
  29. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -0
  30. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +0 -4
  31. package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +1 -0
  32. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  33. package/src/duckdb/src/execution/physical_plan/plan_create_index.cpp +2 -1
  34. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +18 -10
  35. package/src/duckdb/src/function/aggregate/nested/list.cpp +6 -712
  36. package/src/duckdb/src/function/cast_rules.cpp +9 -4
  37. package/src/duckdb/src/function/scalar/list/list_sort.cpp +25 -18
  38. package/src/duckdb/src/function/table/read_csv.cpp +5 -0
  39. package/src/duckdb/src/function/table/table_scan.cpp +8 -11
  40. package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
  41. package/src/duckdb/src/include/duckdb/common/helper.hpp +1 -1
  42. package/src/duckdb/src/include/duckdb/common/operator/comparison_operators.hpp +45 -149
  43. package/src/duckdb/src/include/duckdb/common/progress_bar/progress_bar.hpp +2 -0
  44. package/src/duckdb/src/include/duckdb/common/types/interval.hpp +39 -3
  45. package/src/duckdb/src/include/duckdb/common/types/list_segment.hpp +70 -0
  46. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +73 -3
  47. package/src/duckdb/src/include/duckdb/common/types/validity_mask.hpp +4 -1
  48. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +1 -12
  49. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_reader_options.hpp +4 -0
  50. package/src/duckdb/src/include/duckdb/main/client_config.hpp +2 -0
  51. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_scan.hpp +1 -0
  52. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_scan.hpp +1 -0
  53. package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +0 -2
  54. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +1 -0
  55. package/src/duckdb/src/include/duckdb/storage/index.hpp +1 -1
  56. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  57. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +18 -7
  58. package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +0 -3
  59. package/src/duckdb/src/include/duckdb/storage/table/column_segment_tree.hpp +18 -0
  60. package/src/duckdb/src/include/duckdb/storage/table/persistent_table_data.hpp +0 -1
  61. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +35 -43
  62. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +18 -5
  63. package/src/duckdb/src/include/duckdb/storage/table/row_group_segment_tree.hpp +2 -4
  64. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +12 -29
  65. package/src/duckdb/src/include/duckdb/storage/table/segment_base.hpp +2 -3
  66. package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +11 -1
  67. package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +0 -4
  68. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +4 -1
  69. package/src/duckdb/src/include/duckdb.h +21 -0
  70. package/src/duckdb/src/main/capi/table_function-c.cpp +23 -0
  71. package/src/duckdb/src/main/settings/settings.cpp +20 -8
  72. package/src/duckdb/src/optimizer/filter_combiner.cpp +2 -5
  73. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +2 -0
  74. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +1 -0
  75. package/src/duckdb/src/parallel/meta_pipeline.cpp +0 -3
  76. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +22 -0
  77. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +1 -0
  78. package/src/duckdb/src/storage/compression/bitpacking.cpp +1 -1
  79. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +2 -1
  80. package/src/duckdb/src/storage/compression/numeric_constant.cpp +1 -1
  81. package/src/duckdb/src/storage/compression/rle.cpp +1 -0
  82. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +1 -1
  83. package/src/duckdb/src/storage/data_table.cpp +3 -3
  84. package/src/duckdb/src/storage/local_storage.cpp +7 -0
  85. package/src/duckdb/src/storage/storage_info.cpp +1 -1
  86. package/src/duckdb/src/storage/table/column_data.cpp +75 -18
  87. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +3 -1
  88. package/src/duckdb/src/storage/table/column_segment.cpp +17 -31
  89. package/src/duckdb/src/storage/table/list_column_data.cpp +9 -12
  90. package/src/duckdb/src/storage/table/row_group.cpp +200 -136
  91. package/src/duckdb/src/storage/table/row_group_collection.cpp +75 -45
  92. package/src/duckdb/src/storage/table/scan_state.cpp +31 -38
  93. package/src/duckdb/src/storage/table/standard_column_data.cpp +4 -6
  94. package/src/duckdb/src/storage/table/struct_column_data.cpp +11 -18
  95. package/src/duckdb/src/storage/table/update_segment.cpp +3 -0
  96. package/src/duckdb/ub_src_common_types.cpp +2 -0
@@ -122,7 +122,8 @@ struct ParquetWriteGlobalState : public GlobalFunctionData {
122
122
  };
123
123
 
124
124
  struct ParquetWriteLocalState : public LocalFunctionData {
125
- explicit ParquetWriteLocalState(ClientContext &context, const vector<LogicalType> &types) : buffer(context, types) {
125
+ explicit ParquetWriteLocalState(ClientContext &context, const vector<LogicalType> &types)
126
+ : buffer(Allocator::Get(context), types) {
126
127
  }
127
128
 
128
129
  ColumnDataCollection buffer;
@@ -1,9 +1,11 @@
1
1
  #include "duckdb/common/hive_partitioning.hpp"
2
- #include "duckdb/optimizer/statistics_propagator.hpp"
3
2
  #include "duckdb/planner/table_filter.hpp"
4
3
  #include "duckdb/execution/expression_executor.hpp"
5
4
  #include "duckdb/optimizer/filter_combiner.hpp"
6
5
  #include "duckdb/planner/expression_iterator.hpp"
6
+ #include "duckdb/planner/expression/bound_constant_expression.hpp"
7
+ #include "duckdb/planner/expression/bound_columnref_expression.hpp"
8
+ #include "duckdb/planner/expression/bound_reference_expression.hpp"
7
9
  #include "re2/re2.h"
8
10
 
9
11
  namespace duckdb {
@@ -4,6 +4,13 @@
4
4
 
5
5
  namespace duckdb {
6
6
 
7
+ void ProgressBar::SystemOverrideCheck(ClientConfig &config) {
8
+ if (config.system_progress_bar_disable_reason != nullptr) {
9
+ throw InvalidInputException("Could not change the progress bar setting because: '%s'",
10
+ config.system_progress_bar_disable_reason);
11
+ }
12
+ }
13
+
7
14
  unique_ptr<ProgressBarDisplay> ProgressBar::DefaultProgressBarDisplay() {
8
15
  return make_unique<TerminalProgressBarDisplay>();
9
16
  }
@@ -24,11 +24,11 @@ template <>
24
24
  OrderType EnumSerializer::StringToEnum(const char *value) {
25
25
  if (StringUtil::Equals(value, "INVALID")) {
26
26
  return OrderType::INVALID;
27
- } else if (StringUtil::Equals(value, "ORDER_DEFAULT")) {
27
+ } else if (StringUtil::Equals(value, "ORDER_DEFAULT") || StringUtil::Equals(value, "DEFAULT")) {
28
28
  return OrderType::ORDER_DEFAULT;
29
- } else if (StringUtil::Equals(value, "ASCENDING")) {
29
+ } else if (StringUtil::Equals(value, "ASCENDING") || StringUtil::Equals(value, "ASC")) {
30
30
  return OrderType::ASCENDING;
31
- } else if (StringUtil::Equals(value, "DESCENDING")) {
31
+ } else if (StringUtil::Equals(value, "DESCENDING") || StringUtil::Equals(value, "DESC")) {
32
32
  return OrderType::DESCENDING;
33
33
  } else {
34
34
  throw NotImplementedException("FromString not implemented for enum value");
@@ -58,11 +58,11 @@ template <>
58
58
  OrderByNullType EnumSerializer::StringToEnum(const char *value) {
59
59
  if (StringUtil::Equals(value, "INVALID")) {
60
60
  return OrderByNullType::INVALID;
61
- } else if (StringUtil::Equals(value, "ORDER_DEFAULT")) {
61
+ } else if (StringUtil::Equals(value, "ORDER_DEFAULT") || StringUtil::Equals(value, "DEFAULT")) {
62
62
  return OrderByNullType::ORDER_DEFAULT;
63
- } else if (StringUtil::Equals(value, "NULLS_FIRST")) {
63
+ } else if (StringUtil::Equals(value, "NULLS_FIRST") || StringUtil::Equals(value, "NULLS FIRST")) {
64
64
  return OrderByNullType::NULLS_FIRST;
65
- } else if (StringUtil::Equals(value, "NULLS_LAST")) {
65
+ } else if (StringUtil::Equals(value, "NULLS_LAST") || StringUtil::Equals(value, "NULLS LAST")) {
66
66
  return OrderByNullType::NULLS_LAST;
67
67
  } else {
68
68
  throw NotImplementedException("FromString not implemented for enum value");
@@ -163,17 +163,26 @@ int Comparators::CompareStringAndAdvance(data_ptr_t &left_ptr, data_ptr_t &right
163
163
  if (!valid) {
164
164
  return 0;
165
165
  }
166
- // Construct the string_t
167
166
  uint32_t left_string_size = Load<uint32_t>(left_ptr);
168
167
  uint32_t right_string_size = Load<uint32_t>(right_ptr);
169
168
  left_ptr += sizeof(uint32_t);
170
169
  right_ptr += sizeof(uint32_t);
171
- string_t left_val((const char *)left_ptr, left_string_size);
172
- string_t right_val((const char *)right_ptr, right_string_size);
170
+ auto memcmp_res = memcmp((const char *)left_ptr, (const char *)right_ptr,
171
+ std::min<uint32_t>(left_string_size, right_string_size));
172
+
173
173
  left_ptr += left_string_size;
174
174
  right_ptr += right_string_size;
175
- // Compare
176
- return TemplatedCompareVal<string_t>((data_ptr_t)&left_val, (data_ptr_t)&right_val);
175
+
176
+ if (memcmp_res != 0) {
177
+ return memcmp_res;
178
+ }
179
+ if (left_string_size == right_string_size) {
180
+ return 0;
181
+ }
182
+ if (left_string_size < right_string_size) {
183
+ return -1;
184
+ }
185
+ return 1;
177
186
  }
178
187
 
179
188
  int Comparators::CompareStructAndAdvance(data_ptr_t &left_ptr, data_ptr_t &right_ptr,
@@ -169,11 +169,8 @@ idx_t ColumnDataCollectionSegment::ReadVectorInternal(ChunkManagementState &stat
169
169
  if (type_size > 0) {
170
170
  memcpy(target_data + current_offset * type_size, base_ptr, current_vdata.count * type_size);
171
171
  }
172
- // FIXME: use bitwise operations here
173
172
  ValidityMask current_validity(validity_data);
174
- for (idx_t k = 0; k < current_vdata.count; k++) {
175
- target_validity.Set(current_offset + k, current_validity.RowIsValid(k));
176
- }
173
+ target_validity.SliceInPlace(current_validity, current_offset, 0, current_vdata.count);
177
174
  current_offset += current_vdata.count;
178
175
  next_index = current_vdata.next_data;
179
176
  }
@@ -397,47 +397,6 @@ interval_t Interval::FromMicro(int64_t delta_us) {
397
397
  return result;
398
398
  }
399
399
 
400
- static void NormalizeIntervalEntries(interval_t input, int64_t &months, int64_t &days, int64_t &micros) {
401
- int64_t extra_months_d = input.days / Interval::DAYS_PER_MONTH;
402
- int64_t extra_months_micros = input.micros / Interval::MICROS_PER_MONTH;
403
- input.days -= extra_months_d * Interval::DAYS_PER_MONTH;
404
- input.micros -= extra_months_micros * Interval::MICROS_PER_MONTH;
405
-
406
- int64_t extra_days_micros = input.micros / Interval::MICROS_PER_DAY;
407
- input.micros -= extra_days_micros * Interval::MICROS_PER_DAY;
408
-
409
- months = input.months + extra_months_d + extra_months_micros;
410
- days = input.days + extra_days_micros;
411
- micros = input.micros;
412
- }
413
-
414
- bool Interval::Equals(interval_t left, interval_t right) {
415
- return left.months == right.months && left.days == right.days && left.micros == right.micros;
416
- }
417
-
418
- bool Interval::GreaterThan(interval_t left, interval_t right) {
419
- int64_t lmonths, ldays, lmicros;
420
- int64_t rmonths, rdays, rmicros;
421
- NormalizeIntervalEntries(left, lmonths, ldays, lmicros);
422
- NormalizeIntervalEntries(right, rmonths, rdays, rmicros);
423
-
424
- if (lmonths > rmonths) {
425
- return true;
426
- } else if (lmonths < rmonths) {
427
- return false;
428
- }
429
- if (ldays > rdays) {
430
- return true;
431
- } else if (ldays < rdays) {
432
- return false;
433
- }
434
- return lmicros > rmicros;
435
- }
436
-
437
- bool Interval::GreaterThanEquals(interval_t left, interval_t right) {
438
- return GreaterThan(left, right) || Equals(left, right);
439
- }
440
-
441
400
  interval_t Interval::Invert(interval_t interval) {
442
401
  interval.days = -interval.days;
443
402
  interval.micros = -interval.micros;