duckdb 0.7.2-dev1034.0 → 0.7.2-dev1138.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 (91) 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/src/common/hive_partitioning.cpp +3 -1
  4. package/src/duckdb/src/common/progress_bar/progress_bar.cpp +7 -0
  5. package/src/duckdb/src/common/serializer/enum_serializer.cpp +6 -6
  6. package/src/duckdb/src/common/sort/comparators.cpp +14 -5
  7. package/src/duckdb/src/common/types/interval.cpp +0 -41
  8. package/src/duckdb/src/common/types/list_segment.cpp +658 -0
  9. package/src/duckdb/src/common/types/string_heap.cpp +1 -1
  10. package/src/duckdb/src/common/types/string_type.cpp +1 -1
  11. package/src/duckdb/src/common/types/vector.cpp +1 -1
  12. package/src/duckdb/src/common/value_operations/comparison_operations.cpp +14 -22
  13. package/src/duckdb/src/common/vector_operations/comparison_operators.cpp +10 -10
  14. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +11 -10
  15. package/src/duckdb/src/execution/expression_executor/execute_comparison.cpp +2 -2
  16. package/src/duckdb/src/execution/index/art/art.cpp +13 -0
  17. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +1 -1
  18. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +2 -0
  19. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +1 -0
  20. package/src/duckdb/src/execution/operator/join/physical_join.cpp +0 -3
  21. package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +5 -1
  22. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +18 -5
  23. package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +3 -0
  24. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -1
  25. package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +1 -3
  26. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -0
  27. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +0 -4
  28. package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +1 -0
  29. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  30. package/src/duckdb/src/execution/physical_plan/plan_create_index.cpp +2 -1
  31. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -0
  32. package/src/duckdb/src/function/aggregate/nested/list.cpp +6 -712
  33. package/src/duckdb/src/function/scalar/list/list_sort.cpp +25 -18
  34. package/src/duckdb/src/function/table/read_csv.cpp +5 -0
  35. package/src/duckdb/src/function/table/table_scan.cpp +8 -11
  36. package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
  37. package/src/duckdb/src/include/duckdb/common/helper.hpp +1 -1
  38. package/src/duckdb/src/include/duckdb/common/operator/comparison_operators.hpp +45 -149
  39. package/src/duckdb/src/include/duckdb/common/progress_bar/progress_bar.hpp +2 -0
  40. package/src/duckdb/src/include/duckdb/common/types/interval.hpp +39 -3
  41. package/src/duckdb/src/include/duckdb/common/types/list_segment.hpp +70 -0
  42. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +73 -3
  43. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +1 -12
  44. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_reader_options.hpp +4 -0
  45. package/src/duckdb/src/include/duckdb/main/client_config.hpp +2 -0
  46. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_scan.hpp +1 -0
  47. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_scan.hpp +1 -0
  48. package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +0 -2
  49. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +1 -0
  50. package/src/duckdb/src/include/duckdb/storage/index.hpp +1 -1
  51. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  52. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +18 -7
  53. package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +0 -3
  54. package/src/duckdb/src/include/duckdb/storage/table/column_segment_tree.hpp +18 -0
  55. package/src/duckdb/src/include/duckdb/storage/table/persistent_table_data.hpp +0 -1
  56. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +35 -43
  57. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +18 -5
  58. package/src/duckdb/src/include/duckdb/storage/table/row_group_segment_tree.hpp +2 -4
  59. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +12 -29
  60. package/src/duckdb/src/include/duckdb/storage/table/segment_base.hpp +2 -3
  61. package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +11 -1
  62. package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +0 -4
  63. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +4 -1
  64. package/src/duckdb/src/include/duckdb.h +21 -0
  65. package/src/duckdb/src/main/capi/table_function-c.cpp +23 -0
  66. package/src/duckdb/src/main/settings/settings.cpp +20 -8
  67. package/src/duckdb/src/optimizer/filter_combiner.cpp +2 -5
  68. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +2 -0
  69. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +1 -0
  70. package/src/duckdb/src/parallel/meta_pipeline.cpp +0 -3
  71. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +22 -0
  72. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +1 -0
  73. package/src/duckdb/src/storage/compression/bitpacking.cpp +1 -1
  74. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +2 -1
  75. package/src/duckdb/src/storage/compression/numeric_constant.cpp +1 -1
  76. package/src/duckdb/src/storage/compression/rle.cpp +1 -0
  77. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +1 -1
  78. package/src/duckdb/src/storage/data_table.cpp +3 -3
  79. package/src/duckdb/src/storage/local_storage.cpp +7 -0
  80. package/src/duckdb/src/storage/storage_info.cpp +1 -1
  81. package/src/duckdb/src/storage/table/column_data.cpp +75 -18
  82. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +3 -1
  83. package/src/duckdb/src/storage/table/column_segment.cpp +17 -31
  84. package/src/duckdb/src/storage/table/list_column_data.cpp +9 -12
  85. package/src/duckdb/src/storage/table/row_group.cpp +200 -136
  86. package/src/duckdb/src/storage/table/row_group_collection.cpp +75 -45
  87. package/src/duckdb/src/storage/table/scan_state.cpp +31 -38
  88. package/src/duckdb/src/storage/table/standard_column_data.cpp +4 -6
  89. package/src/duckdb/src/storage/table/struct_column_data.cpp +11 -18
  90. package/src/duckdb/src/storage/table/update_segment.cpp +3 -0
  91. package/src/duckdb/ub_src_common_types.cpp +2 -0
@@ -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,
@@ -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;