duckdb 0.7.2-dev1901.0 → 0.7.2-dev2144.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 (179) hide show
  1. package/binding.gyp +2 -0
  2. package/package.json +1 -1
  3. package/src/duckdb/extension/parquet/include/parquet_writer.hpp +1 -1
  4. package/src/duckdb/extension/parquet/parquet_metadata.cpp +4 -2
  5. package/src/duckdb/src/catalog/catalog_entry/duck_index_entry.cpp +1 -1
  6. package/src/duckdb/src/common/arrow/arrow_appender.cpp +69 -44
  7. package/src/duckdb/src/common/arrow/arrow_converter.cpp +1 -1
  8. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +20 -2
  9. package/src/duckdb/src/common/box_renderer.cpp +4 -2
  10. package/src/duckdb/src/common/constants.cpp +10 -1
  11. package/src/duckdb/src/common/filename_pattern.cpp +41 -0
  12. package/src/duckdb/src/common/hive_partitioning.cpp +144 -15
  13. package/src/duckdb/src/common/radix_partitioning.cpp +101 -369
  14. package/src/duckdb/src/common/row_operations/row_aggregate.cpp +8 -9
  15. package/src/duckdb/src/common/row_operations/row_external.cpp +1 -1
  16. package/src/duckdb/src/common/row_operations/row_gather.cpp +5 -3
  17. package/src/duckdb/src/common/row_operations/row_match.cpp +117 -22
  18. package/src/duckdb/src/common/row_operations/row_scatter.cpp +2 -2
  19. package/src/duckdb/src/common/sort/partition_state.cpp +1 -1
  20. package/src/duckdb/src/common/sort/sort_state.cpp +2 -1
  21. package/src/duckdb/src/common/sort/sorted_block.cpp +1 -1
  22. package/src/duckdb/src/common/types/{column_data_allocator.cpp → column/column_data_allocator.cpp} +2 -2
  23. package/src/duckdb/src/common/types/{column_data_collection.cpp → column/column_data_collection.cpp} +22 -4
  24. package/src/duckdb/src/common/types/{column_data_collection_segment.cpp → column/column_data_collection_segment.cpp} +2 -1
  25. package/src/duckdb/src/common/types/{column_data_consumer.cpp → column/column_data_consumer.cpp} +1 -1
  26. package/src/duckdb/src/common/types/{partitioned_column_data.cpp → column/partitioned_column_data.cpp} +11 -9
  27. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +316 -0
  28. package/src/duckdb/src/common/types/{row_data_collection.cpp → row/row_data_collection.cpp} +1 -1
  29. package/src/duckdb/src/common/types/{row_data_collection_scanner.cpp → row/row_data_collection_scanner.cpp} +2 -2
  30. package/src/duckdb/src/common/types/{row_layout.cpp → row/row_layout.cpp} +1 -1
  31. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +465 -0
  32. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +511 -0
  33. package/src/duckdb/src/common/types/row/tuple_data_iterator.cpp +96 -0
  34. package/src/duckdb/src/common/types/row/tuple_data_layout.cpp +119 -0
  35. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +1200 -0
  36. package/src/duckdb/src/common/types/row/tuple_data_segment.cpp +170 -0
  37. package/src/duckdb/src/common/types/vector.cpp +1 -1
  38. package/src/duckdb/src/execution/aggregate_hashtable.cpp +252 -290
  39. package/src/duckdb/src/execution/join_hashtable.cpp +192 -328
  40. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +4 -4
  41. package/src/duckdb/src/execution/operator/helper/physical_execute.cpp +3 -3
  42. package/src/duckdb/src/execution/operator/helper/physical_limit_percent.cpp +2 -3
  43. package/src/duckdb/src/execution/operator/helper/physical_result_collector.cpp +2 -3
  44. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +36 -21
  45. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +2 -2
  46. package/src/duckdb/src/execution/operator/join/physical_cross_product.cpp +1 -1
  47. package/src/duckdb/src/execution/operator/join/physical_delim_join.cpp +2 -2
  48. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +166 -144
  49. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +5 -5
  50. package/src/duckdb/src/execution/operator/join/physical_join.cpp +2 -10
  51. package/src/duckdb/src/execution/operator/join/physical_positional_join.cpp +0 -1
  52. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +2 -2
  53. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +13 -11
  54. package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +3 -2
  55. package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +25 -24
  56. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  57. package/src/duckdb/src/execution/operator/persistent/physical_update.cpp +4 -3
  58. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  59. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +3 -3
  60. package/src/duckdb/src/execution/partitionable_hashtable.cpp +9 -37
  61. package/src/duckdb/src/execution/physical_operator.cpp +1 -1
  62. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +19 -18
  63. package/src/duckdb/src/execution/physical_plan/plan_copy_to_file.cpp +2 -1
  64. package/src/duckdb/src/execution/physical_plan/plan_execute.cpp +2 -2
  65. package/src/duckdb/src/execution/physical_plan/plan_explain.cpp +5 -6
  66. package/src/duckdb/src/execution/physical_plan/plan_expression_get.cpp +2 -2
  67. package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +3 -3
  68. package/src/duckdb/src/execution/physical_plan_generator.cpp +1 -1
  69. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +39 -17
  70. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +2 -2
  71. package/src/duckdb/src/function/table/pragma_detailed_profiling_output.cpp +5 -5
  72. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +2 -2
  73. package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
  74. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/index_catalog_entry.hpp +1 -1
  75. package/src/duckdb/src/include/duckdb/common/arrow/arrow_appender.hpp +1 -1
  76. package/src/duckdb/src/include/duckdb/common/constants.hpp +2 -0
  77. package/src/duckdb/src/include/duckdb/common/exception.hpp +3 -0
  78. package/src/duckdb/src/include/duckdb/common/fast_mem.hpp +528 -0
  79. package/src/duckdb/src/include/duckdb/common/filename_pattern.hpp +34 -0
  80. package/src/duckdb/src/include/duckdb/common/helper.hpp +10 -0
  81. package/src/duckdb/src/include/duckdb/common/hive_partitioning.hpp +13 -3
  82. package/src/duckdb/src/include/duckdb/common/optional_ptr.hpp +8 -0
  83. package/src/duckdb/src/include/duckdb/common/perfect_map_set.hpp +34 -0
  84. package/src/duckdb/src/include/duckdb/common/radix_partitioning.hpp +80 -27
  85. package/src/duckdb/src/include/duckdb/common/reference_map.hpp +38 -0
  86. package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +7 -6
  87. package/src/duckdb/src/include/duckdb/common/sort/comparators.hpp +1 -1
  88. package/src/duckdb/src/include/duckdb/common/sort/partition_state.hpp +1 -1
  89. package/src/duckdb/src/include/duckdb/common/sort/sort.hpp +1 -1
  90. package/src/duckdb/src/include/duckdb/common/sort/sorted_block.hpp +2 -2
  91. package/src/duckdb/src/include/duckdb/common/types/batched_data_collection.hpp +1 -1
  92. package/src/duckdb/src/include/duckdb/common/types/{column_data_allocator.hpp → column/column_data_allocator.hpp} +4 -4
  93. package/src/duckdb/src/include/duckdb/common/types/{column_data_collection.hpp → column/column_data_collection.hpp} +2 -2
  94. package/src/duckdb/src/include/duckdb/common/types/{column_data_collection_iterators.hpp → column/column_data_collection_iterators.hpp} +2 -2
  95. package/src/duckdb/src/include/duckdb/common/types/{column_data_collection_segment.hpp → column/column_data_collection_segment.hpp} +3 -3
  96. package/src/duckdb/src/include/duckdb/common/types/{column_data_consumer.hpp → column/column_data_consumer.hpp} +8 -4
  97. package/src/duckdb/src/include/duckdb/common/types/{column_data_scan_states.hpp → column/column_data_scan_states.hpp} +1 -1
  98. package/src/duckdb/src/include/duckdb/common/types/{partitioned_column_data.hpp → column/partitioned_column_data.hpp} +15 -7
  99. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +140 -0
  100. package/src/duckdb/src/include/duckdb/common/types/{row_data_collection.hpp → row/row_data_collection.hpp} +1 -1
  101. package/src/duckdb/src/include/duckdb/common/types/{row_data_collection_scanner.hpp → row/row_data_collection_scanner.hpp} +2 -2
  102. package/src/duckdb/src/include/duckdb/common/types/{row_layout.hpp → row/row_layout.hpp} +3 -1
  103. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_allocator.hpp +116 -0
  104. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +239 -0
  105. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_iterator.hpp +64 -0
  106. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_layout.hpp +113 -0
  107. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_segment.hpp +124 -0
  108. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +74 -0
  109. package/src/duckdb/src/include/duckdb/common/types/validity_mask.hpp +3 -0
  110. package/src/duckdb/src/include/duckdb/common/types/value.hpp +4 -12
  111. package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +34 -31
  112. package/src/duckdb/src/include/duckdb/execution/base_aggregate_hashtable.hpp +2 -2
  113. package/src/duckdb/src/include/duckdb/execution/execution_context.hpp +3 -2
  114. package/src/duckdb/src/include/duckdb/execution/expression_executor.hpp +1 -1
  115. package/src/duckdb/src/include/duckdb/execution/join_hashtable.hpp +41 -67
  116. package/src/duckdb/src/include/duckdb/execution/nested_loop_join.hpp +1 -1
  117. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_execute.hpp +2 -2
  118. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +1 -1
  119. package/src/duckdb/src/include/duckdb/execution/operator/join/outer_join_marker.hpp +2 -2
  120. package/src/duckdb/src/include/duckdb/execution/operator/join/perfect_hash_join_executor.hpp +1 -1
  121. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_cross_product.hpp +1 -1
  122. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_hash_join.hpp +0 -2
  123. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_index_join.hpp +2 -2
  124. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_positional_join.hpp +1 -1
  125. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +4 -1
  126. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +1 -1
  127. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +1 -1
  128. package/src/duckdb/src/include/duckdb/execution/partitionable_hashtable.hpp +2 -2
  129. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +1 -1
  130. package/src/duckdb/src/include/duckdb/main/query_result.hpp +14 -1
  131. package/src/duckdb/src/include/duckdb/optimizer/expression_rewriter.hpp +3 -3
  132. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +16 -16
  133. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_node.hpp +8 -8
  134. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +23 -15
  135. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_relation.hpp +9 -10
  136. package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph.hpp +18 -11
  137. package/src/duckdb/src/include/duckdb/parallel/meta_pipeline.hpp +1 -1
  138. package/src/duckdb/src/include/duckdb/parser/parsed_data/exported_table_data.hpp +5 -1
  139. package/src/duckdb/src/include/duckdb/parser/parsed_data/vacuum_info.hpp +3 -2
  140. package/src/duckdb/src/include/duckdb/parser/query_error_context.hpp +4 -2
  141. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +9 -35
  142. package/src/duckdb/src/include/duckdb/planner/binder.hpp +24 -23
  143. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +3 -3
  144. package/src/duckdb/src/include/duckdb/planner/operator/logical_column_data_get.hpp +1 -1
  145. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +3 -1
  146. package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +1 -1
  147. package/src/duckdb/src/main/appender.cpp +6 -6
  148. package/src/duckdb/src/main/client_context.cpp +1 -1
  149. package/src/duckdb/src/main/connection.cpp +2 -2
  150. package/src/duckdb/src/main/query_result.cpp +13 -0
  151. package/src/duckdb/src/optimizer/expression_rewriter.cpp +4 -4
  152. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +91 -105
  153. package/src/duckdb/src/optimizer/join_order/join_node.cpp +5 -8
  154. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +163 -160
  155. package/src/duckdb/src/optimizer/join_order/join_relation_set.cpp +30 -30
  156. package/src/duckdb/src/optimizer/join_order/query_graph.cpp +37 -38
  157. package/src/duckdb/src/parallel/executor.cpp +1 -1
  158. package/src/duckdb/src/parallel/meta_pipeline.cpp +2 -2
  159. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +1 -1
  160. package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +1 -1
  161. package/src/duckdb/src/parser/transformer.cpp +50 -9
  162. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +15 -5
  163. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +19 -17
  164. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +4 -4
  165. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +20 -21
  166. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +24 -22
  167. package/src/duckdb/src/planner/binder/tableref/bind_subqueryref.cpp +2 -2
  168. package/src/duckdb/src/planner/binder.cpp +16 -19
  169. package/src/duckdb/src/planner/expression_binder.cpp +8 -8
  170. package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +3 -3
  171. package/src/duckdb/src/storage/checkpoint_manager.cpp +23 -23
  172. package/src/duckdb/src/storage/standard_buffer_manager.cpp +1 -1
  173. package/src/duckdb/src/storage/table_index_list.cpp +3 -3
  174. package/src/duckdb/src/verification/statement_verifier.cpp +1 -1
  175. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +5552 -5598
  176. package/src/duckdb/ub_src_common.cpp +2 -0
  177. package/src/duckdb/ub_src_common_types.cpp +0 -16
  178. package/src/duckdb/ub_src_common_types_column.cpp +10 -0
  179. package/src/duckdb/ub_src_common_types_row.cpp +20 -0
@@ -20,6 +20,11 @@ static inline int MemcmpFixed(const void *str1, const void *str2) {
20
20
  return memcmp(str1, str2, SIZE);
21
21
  }
22
22
 
23
+ template <size_t SIZE>
24
+ static inline void MemsetFixed(void *ptr, int value) {
25
+ memset(ptr, value, SIZE);
26
+ }
27
+
23
28
  namespace duckdb {
24
29
 
25
30
  //! This templated memcpy is significantly faster than std::memcpy,
@@ -690,4 +695,527 @@ static inline int FastMemcmp(const void *str1, const void *str2, const size_t si
690
695
  // LCOV_EXCL_STOP
691
696
  }
692
697
 
698
+ static inline void FastMemset(void *ptr, int value, size_t size) {
699
+ // LCOV_EXCL_START
700
+ switch (size) {
701
+ case 0:
702
+ return;
703
+ case 1:
704
+ return MemsetFixed<1>(ptr, value);
705
+ case 2:
706
+ return MemsetFixed<2>(ptr, value);
707
+ case 3:
708
+ return MemsetFixed<3>(ptr, value);
709
+ case 4:
710
+ return MemsetFixed<4>(ptr, value);
711
+ case 5:
712
+ return MemsetFixed<5>(ptr, value);
713
+ case 6:
714
+ return MemsetFixed<6>(ptr, value);
715
+ case 7:
716
+ return MemsetFixed<7>(ptr, value);
717
+ case 8:
718
+ return MemsetFixed<8>(ptr, value);
719
+ case 9:
720
+ return MemsetFixed<9>(ptr, value);
721
+ case 10:
722
+ return MemsetFixed<10>(ptr, value);
723
+ case 11:
724
+ return MemsetFixed<11>(ptr, value);
725
+ case 12:
726
+ return MemsetFixed<12>(ptr, value);
727
+ case 13:
728
+ return MemsetFixed<13>(ptr, value);
729
+ case 14:
730
+ return MemsetFixed<14>(ptr, value);
731
+ case 15:
732
+ return MemsetFixed<15>(ptr, value);
733
+ case 16:
734
+ return MemsetFixed<16>(ptr, value);
735
+ case 17:
736
+ return MemsetFixed<17>(ptr, value);
737
+ case 18:
738
+ return MemsetFixed<18>(ptr, value);
739
+ case 19:
740
+ return MemsetFixed<19>(ptr, value);
741
+ case 20:
742
+ return MemsetFixed<20>(ptr, value);
743
+ case 21:
744
+ return MemsetFixed<21>(ptr, value);
745
+ case 22:
746
+ return MemsetFixed<22>(ptr, value);
747
+ case 23:
748
+ return MemsetFixed<23>(ptr, value);
749
+ case 24:
750
+ return MemsetFixed<24>(ptr, value);
751
+ case 25:
752
+ return MemsetFixed<25>(ptr, value);
753
+ case 26:
754
+ return MemsetFixed<26>(ptr, value);
755
+ case 27:
756
+ return MemsetFixed<27>(ptr, value);
757
+ case 28:
758
+ return MemsetFixed<28>(ptr, value);
759
+ case 29:
760
+ return MemsetFixed<29>(ptr, value);
761
+ case 30:
762
+ return MemsetFixed<30>(ptr, value);
763
+ case 31:
764
+ return MemsetFixed<31>(ptr, value);
765
+ case 32:
766
+ return MemsetFixed<32>(ptr, value);
767
+ case 33:
768
+ return MemsetFixed<33>(ptr, value);
769
+ case 34:
770
+ return MemsetFixed<34>(ptr, value);
771
+ case 35:
772
+ return MemsetFixed<35>(ptr, value);
773
+ case 36:
774
+ return MemsetFixed<36>(ptr, value);
775
+ case 37:
776
+ return MemsetFixed<37>(ptr, value);
777
+ case 38:
778
+ return MemsetFixed<38>(ptr, value);
779
+ case 39:
780
+ return MemsetFixed<39>(ptr, value);
781
+ case 40:
782
+ return MemsetFixed<40>(ptr, value);
783
+ case 41:
784
+ return MemsetFixed<41>(ptr, value);
785
+ case 42:
786
+ return MemsetFixed<42>(ptr, value);
787
+ case 43:
788
+ return MemsetFixed<43>(ptr, value);
789
+ case 44:
790
+ return MemsetFixed<44>(ptr, value);
791
+ case 45:
792
+ return MemsetFixed<45>(ptr, value);
793
+ case 46:
794
+ return MemsetFixed<46>(ptr, value);
795
+ case 47:
796
+ return MemsetFixed<47>(ptr, value);
797
+ case 48:
798
+ return MemsetFixed<48>(ptr, value);
799
+ case 49:
800
+ return MemsetFixed<49>(ptr, value);
801
+ case 50:
802
+ return MemsetFixed<50>(ptr, value);
803
+ case 51:
804
+ return MemsetFixed<51>(ptr, value);
805
+ case 52:
806
+ return MemsetFixed<52>(ptr, value);
807
+ case 53:
808
+ return MemsetFixed<53>(ptr, value);
809
+ case 54:
810
+ return MemsetFixed<54>(ptr, value);
811
+ case 55:
812
+ return MemsetFixed<55>(ptr, value);
813
+ case 56:
814
+ return MemsetFixed<56>(ptr, value);
815
+ case 57:
816
+ return MemsetFixed<57>(ptr, value);
817
+ case 58:
818
+ return MemsetFixed<58>(ptr, value);
819
+ case 59:
820
+ return MemsetFixed<59>(ptr, value);
821
+ case 60:
822
+ return MemsetFixed<60>(ptr, value);
823
+ case 61:
824
+ return MemsetFixed<61>(ptr, value);
825
+ case 62:
826
+ return MemsetFixed<62>(ptr, value);
827
+ case 63:
828
+ return MemsetFixed<63>(ptr, value);
829
+ case 64:
830
+ return MemsetFixed<64>(ptr, value);
831
+ case 65:
832
+ return MemsetFixed<65>(ptr, value);
833
+ case 66:
834
+ return MemsetFixed<66>(ptr, value);
835
+ case 67:
836
+ return MemsetFixed<67>(ptr, value);
837
+ case 68:
838
+ return MemsetFixed<68>(ptr, value);
839
+ case 69:
840
+ return MemsetFixed<69>(ptr, value);
841
+ case 70:
842
+ return MemsetFixed<70>(ptr, value);
843
+ case 71:
844
+ return MemsetFixed<71>(ptr, value);
845
+ case 72:
846
+ return MemsetFixed<72>(ptr, value);
847
+ case 73:
848
+ return MemsetFixed<73>(ptr, value);
849
+ case 74:
850
+ return MemsetFixed<74>(ptr, value);
851
+ case 75:
852
+ return MemsetFixed<75>(ptr, value);
853
+ case 76:
854
+ return MemsetFixed<76>(ptr, value);
855
+ case 77:
856
+ return MemsetFixed<77>(ptr, value);
857
+ case 78:
858
+ return MemsetFixed<78>(ptr, value);
859
+ case 79:
860
+ return MemsetFixed<79>(ptr, value);
861
+ case 80:
862
+ return MemsetFixed<80>(ptr, value);
863
+ case 81:
864
+ return MemsetFixed<81>(ptr, value);
865
+ case 82:
866
+ return MemsetFixed<82>(ptr, value);
867
+ case 83:
868
+ return MemsetFixed<83>(ptr, value);
869
+ case 84:
870
+ return MemsetFixed<84>(ptr, value);
871
+ case 85:
872
+ return MemsetFixed<85>(ptr, value);
873
+ case 86:
874
+ return MemsetFixed<86>(ptr, value);
875
+ case 87:
876
+ return MemsetFixed<87>(ptr, value);
877
+ case 88:
878
+ return MemsetFixed<88>(ptr, value);
879
+ case 89:
880
+ return MemsetFixed<89>(ptr, value);
881
+ case 90:
882
+ return MemsetFixed<90>(ptr, value);
883
+ case 91:
884
+ return MemsetFixed<91>(ptr, value);
885
+ case 92:
886
+ return MemsetFixed<92>(ptr, value);
887
+ case 93:
888
+ return MemsetFixed<93>(ptr, value);
889
+ case 94:
890
+ return MemsetFixed<94>(ptr, value);
891
+ case 95:
892
+ return MemsetFixed<95>(ptr, value);
893
+ case 96:
894
+ return MemsetFixed<96>(ptr, value);
895
+ case 97:
896
+ return MemsetFixed<97>(ptr, value);
897
+ case 98:
898
+ return MemsetFixed<98>(ptr, value);
899
+ case 99:
900
+ return MemsetFixed<99>(ptr, value);
901
+ case 100:
902
+ return MemsetFixed<100>(ptr, value);
903
+ case 101:
904
+ return MemsetFixed<101>(ptr, value);
905
+ case 102:
906
+ return MemsetFixed<102>(ptr, value);
907
+ case 103:
908
+ return MemsetFixed<103>(ptr, value);
909
+ case 104:
910
+ return MemsetFixed<104>(ptr, value);
911
+ case 105:
912
+ return MemsetFixed<105>(ptr, value);
913
+ case 106:
914
+ return MemsetFixed<106>(ptr, value);
915
+ case 107:
916
+ return MemsetFixed<107>(ptr, value);
917
+ case 108:
918
+ return MemsetFixed<108>(ptr, value);
919
+ case 109:
920
+ return MemsetFixed<109>(ptr, value);
921
+ case 110:
922
+ return MemsetFixed<110>(ptr, value);
923
+ case 111:
924
+ return MemsetFixed<111>(ptr, value);
925
+ case 112:
926
+ return MemsetFixed<112>(ptr, value);
927
+ case 113:
928
+ return MemsetFixed<113>(ptr, value);
929
+ case 114:
930
+ return MemsetFixed<114>(ptr, value);
931
+ case 115:
932
+ return MemsetFixed<115>(ptr, value);
933
+ case 116:
934
+ return MemsetFixed<116>(ptr, value);
935
+ case 117:
936
+ return MemsetFixed<117>(ptr, value);
937
+ case 118:
938
+ return MemsetFixed<118>(ptr, value);
939
+ case 119:
940
+ return MemsetFixed<119>(ptr, value);
941
+ case 120:
942
+ return MemsetFixed<120>(ptr, value);
943
+ case 121:
944
+ return MemsetFixed<121>(ptr, value);
945
+ case 122:
946
+ return MemsetFixed<122>(ptr, value);
947
+ case 123:
948
+ return MemsetFixed<123>(ptr, value);
949
+ case 124:
950
+ return MemsetFixed<124>(ptr, value);
951
+ case 125:
952
+ return MemsetFixed<125>(ptr, value);
953
+ case 126:
954
+ return MemsetFixed<126>(ptr, value);
955
+ case 127:
956
+ return MemsetFixed<127>(ptr, value);
957
+ case 128:
958
+ return MemsetFixed<128>(ptr, value);
959
+ case 129:
960
+ return MemsetFixed<129>(ptr, value);
961
+ case 130:
962
+ return MemsetFixed<130>(ptr, value);
963
+ case 131:
964
+ return MemsetFixed<131>(ptr, value);
965
+ case 132:
966
+ return MemsetFixed<132>(ptr, value);
967
+ case 133:
968
+ return MemsetFixed<133>(ptr, value);
969
+ case 134:
970
+ return MemsetFixed<134>(ptr, value);
971
+ case 135:
972
+ return MemsetFixed<135>(ptr, value);
973
+ case 136:
974
+ return MemsetFixed<136>(ptr, value);
975
+ case 137:
976
+ return MemsetFixed<137>(ptr, value);
977
+ case 138:
978
+ return MemsetFixed<138>(ptr, value);
979
+ case 139:
980
+ return MemsetFixed<139>(ptr, value);
981
+ case 140:
982
+ return MemsetFixed<140>(ptr, value);
983
+ case 141:
984
+ return MemsetFixed<141>(ptr, value);
985
+ case 142:
986
+ return MemsetFixed<142>(ptr, value);
987
+ case 143:
988
+ return MemsetFixed<143>(ptr, value);
989
+ case 144:
990
+ return MemsetFixed<144>(ptr, value);
991
+ case 145:
992
+ return MemsetFixed<145>(ptr, value);
993
+ case 146:
994
+ return MemsetFixed<146>(ptr, value);
995
+ case 147:
996
+ return MemsetFixed<147>(ptr, value);
997
+ case 148:
998
+ return MemsetFixed<148>(ptr, value);
999
+ case 149:
1000
+ return MemsetFixed<149>(ptr, value);
1001
+ case 150:
1002
+ return MemsetFixed<150>(ptr, value);
1003
+ case 151:
1004
+ return MemsetFixed<151>(ptr, value);
1005
+ case 152:
1006
+ return MemsetFixed<152>(ptr, value);
1007
+ case 153:
1008
+ return MemsetFixed<153>(ptr, value);
1009
+ case 154:
1010
+ return MemsetFixed<154>(ptr, value);
1011
+ case 155:
1012
+ return MemsetFixed<155>(ptr, value);
1013
+ case 156:
1014
+ return MemsetFixed<156>(ptr, value);
1015
+ case 157:
1016
+ return MemsetFixed<157>(ptr, value);
1017
+ case 158:
1018
+ return MemsetFixed<158>(ptr, value);
1019
+ case 159:
1020
+ return MemsetFixed<159>(ptr, value);
1021
+ case 160:
1022
+ return MemsetFixed<160>(ptr, value);
1023
+ case 161:
1024
+ return MemsetFixed<161>(ptr, value);
1025
+ case 162:
1026
+ return MemsetFixed<162>(ptr, value);
1027
+ case 163:
1028
+ return MemsetFixed<163>(ptr, value);
1029
+ case 164:
1030
+ return MemsetFixed<164>(ptr, value);
1031
+ case 165:
1032
+ return MemsetFixed<165>(ptr, value);
1033
+ case 166:
1034
+ return MemsetFixed<166>(ptr, value);
1035
+ case 167:
1036
+ return MemsetFixed<167>(ptr, value);
1037
+ case 168:
1038
+ return MemsetFixed<168>(ptr, value);
1039
+ case 169:
1040
+ return MemsetFixed<169>(ptr, value);
1041
+ case 170:
1042
+ return MemsetFixed<170>(ptr, value);
1043
+ case 171:
1044
+ return MemsetFixed<171>(ptr, value);
1045
+ case 172:
1046
+ return MemsetFixed<172>(ptr, value);
1047
+ case 173:
1048
+ return MemsetFixed<173>(ptr, value);
1049
+ case 174:
1050
+ return MemsetFixed<174>(ptr, value);
1051
+ case 175:
1052
+ return MemsetFixed<175>(ptr, value);
1053
+ case 176:
1054
+ return MemsetFixed<176>(ptr, value);
1055
+ case 177:
1056
+ return MemsetFixed<177>(ptr, value);
1057
+ case 178:
1058
+ return MemsetFixed<178>(ptr, value);
1059
+ case 179:
1060
+ return MemsetFixed<179>(ptr, value);
1061
+ case 180:
1062
+ return MemsetFixed<180>(ptr, value);
1063
+ case 181:
1064
+ return MemsetFixed<181>(ptr, value);
1065
+ case 182:
1066
+ return MemsetFixed<182>(ptr, value);
1067
+ case 183:
1068
+ return MemsetFixed<183>(ptr, value);
1069
+ case 184:
1070
+ return MemsetFixed<184>(ptr, value);
1071
+ case 185:
1072
+ return MemsetFixed<185>(ptr, value);
1073
+ case 186:
1074
+ return MemsetFixed<186>(ptr, value);
1075
+ case 187:
1076
+ return MemsetFixed<187>(ptr, value);
1077
+ case 188:
1078
+ return MemsetFixed<188>(ptr, value);
1079
+ case 189:
1080
+ return MemsetFixed<189>(ptr, value);
1081
+ case 190:
1082
+ return MemsetFixed<190>(ptr, value);
1083
+ case 191:
1084
+ return MemsetFixed<191>(ptr, value);
1085
+ case 192:
1086
+ return MemsetFixed<192>(ptr, value);
1087
+ case 193:
1088
+ return MemsetFixed<193>(ptr, value);
1089
+ case 194:
1090
+ return MemsetFixed<194>(ptr, value);
1091
+ case 195:
1092
+ return MemsetFixed<195>(ptr, value);
1093
+ case 196:
1094
+ return MemsetFixed<196>(ptr, value);
1095
+ case 197:
1096
+ return MemsetFixed<197>(ptr, value);
1097
+ case 198:
1098
+ return MemsetFixed<198>(ptr, value);
1099
+ case 199:
1100
+ return MemsetFixed<199>(ptr, value);
1101
+ case 200:
1102
+ return MemsetFixed<200>(ptr, value);
1103
+ case 201:
1104
+ return MemsetFixed<201>(ptr, value);
1105
+ case 202:
1106
+ return MemsetFixed<202>(ptr, value);
1107
+ case 203:
1108
+ return MemsetFixed<203>(ptr, value);
1109
+ case 204:
1110
+ return MemsetFixed<204>(ptr, value);
1111
+ case 205:
1112
+ return MemsetFixed<205>(ptr, value);
1113
+ case 206:
1114
+ return MemsetFixed<206>(ptr, value);
1115
+ case 207:
1116
+ return MemsetFixed<207>(ptr, value);
1117
+ case 208:
1118
+ return MemsetFixed<208>(ptr, value);
1119
+ case 209:
1120
+ return MemsetFixed<209>(ptr, value);
1121
+ case 210:
1122
+ return MemsetFixed<210>(ptr, value);
1123
+ case 211:
1124
+ return MemsetFixed<211>(ptr, value);
1125
+ case 212:
1126
+ return MemsetFixed<212>(ptr, value);
1127
+ case 213:
1128
+ return MemsetFixed<213>(ptr, value);
1129
+ case 214:
1130
+ return MemsetFixed<214>(ptr, value);
1131
+ case 215:
1132
+ return MemsetFixed<215>(ptr, value);
1133
+ case 216:
1134
+ return MemsetFixed<216>(ptr, value);
1135
+ case 217:
1136
+ return MemsetFixed<217>(ptr, value);
1137
+ case 218:
1138
+ return MemsetFixed<218>(ptr, value);
1139
+ case 219:
1140
+ return MemsetFixed<219>(ptr, value);
1141
+ case 220:
1142
+ return MemsetFixed<220>(ptr, value);
1143
+ case 221:
1144
+ return MemsetFixed<221>(ptr, value);
1145
+ case 222:
1146
+ return MemsetFixed<222>(ptr, value);
1147
+ case 223:
1148
+ return MemsetFixed<223>(ptr, value);
1149
+ case 224:
1150
+ return MemsetFixed<224>(ptr, value);
1151
+ case 225:
1152
+ return MemsetFixed<225>(ptr, value);
1153
+ case 226:
1154
+ return MemsetFixed<226>(ptr, value);
1155
+ case 227:
1156
+ return MemsetFixed<227>(ptr, value);
1157
+ case 228:
1158
+ return MemsetFixed<228>(ptr, value);
1159
+ case 229:
1160
+ return MemsetFixed<229>(ptr, value);
1161
+ case 230:
1162
+ return MemsetFixed<230>(ptr, value);
1163
+ case 231:
1164
+ return MemsetFixed<231>(ptr, value);
1165
+ case 232:
1166
+ return MemsetFixed<232>(ptr, value);
1167
+ case 233:
1168
+ return MemsetFixed<233>(ptr, value);
1169
+ case 234:
1170
+ return MemsetFixed<234>(ptr, value);
1171
+ case 235:
1172
+ return MemsetFixed<235>(ptr, value);
1173
+ case 236:
1174
+ return MemsetFixed<236>(ptr, value);
1175
+ case 237:
1176
+ return MemsetFixed<237>(ptr, value);
1177
+ case 238:
1178
+ return MemsetFixed<238>(ptr, value);
1179
+ case 239:
1180
+ return MemsetFixed<239>(ptr, value);
1181
+ case 240:
1182
+ return MemsetFixed<240>(ptr, value);
1183
+ case 241:
1184
+ return MemsetFixed<241>(ptr, value);
1185
+ case 242:
1186
+ return MemsetFixed<242>(ptr, value);
1187
+ case 243:
1188
+ return MemsetFixed<243>(ptr, value);
1189
+ case 244:
1190
+ return MemsetFixed<244>(ptr, value);
1191
+ case 245:
1192
+ return MemsetFixed<245>(ptr, value);
1193
+ case 246:
1194
+ return MemsetFixed<246>(ptr, value);
1195
+ case 247:
1196
+ return MemsetFixed<247>(ptr, value);
1197
+ case 248:
1198
+ return MemsetFixed<248>(ptr, value);
1199
+ case 249:
1200
+ return MemsetFixed<249>(ptr, value);
1201
+ case 250:
1202
+ return MemsetFixed<250>(ptr, value);
1203
+ case 251:
1204
+ return MemsetFixed<251>(ptr, value);
1205
+ case 252:
1206
+ return MemsetFixed<252>(ptr, value);
1207
+ case 253:
1208
+ return MemsetFixed<253>(ptr, value);
1209
+ case 254:
1210
+ return MemsetFixed<254>(ptr, value);
1211
+ case 255:
1212
+ return MemsetFixed<255>(ptr, value);
1213
+ case 256:
1214
+ return MemsetFixed<256>(ptr, value);
1215
+ default:
1216
+ memset(ptr, value, size);
1217
+ }
1218
+ // LCOV_EXCL_STOP
1219
+ }
1220
+
693
1221
  } // namespace duckdb
@@ -0,0 +1,34 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/common/filename_pattern.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #pragma once
10
+
11
+ #include "duckdb/common/file_system.hpp"
12
+ #include "duckdb/common/types/uuid.hpp"
13
+
14
+ namespace duckdb {
15
+
16
+ class FilenamePattern {
17
+
18
+ public:
19
+ FilenamePattern() : _base("data_"), _pos(_base.length()), _uuid(false) {
20
+ }
21
+ ~FilenamePattern() {
22
+ }
23
+
24
+ public:
25
+ void SetFilenamePattern(const string &pattern);
26
+ string CreateFilename(const FileSystem &fs, const string &path, const string &extension, idx_t offset) const;
27
+
28
+ private:
29
+ string _base;
30
+ idx_t _pos;
31
+ bool _uuid;
32
+ };
33
+
34
+ } // namespace duckdb
@@ -82,6 +82,13 @@ unique_ptr<S> make_uniq_base(Args &&... args) {
82
82
  return unique_ptr<S>(new T(std::forward<Args>(args)...));
83
83
  }
84
84
 
85
+ #ifdef DUCKDB_ENABLE_DEPRECATED_API
86
+ template <typename S, typename T, typename... Args>
87
+ unique_ptr<S> make_unique_base(Args &&... args) {
88
+ return unique_ptr<S>(new T(std::forward<Args>(args)...));
89
+ }
90
+ #endif // DUCKDB_ENABLE_DEPRECATED_API
91
+
85
92
  template <typename T, typename S>
86
93
  unique_ptr<S> unique_ptr_cast(unique_ptr<T> src) {
87
94
  return unique_ptr<S>(static_cast<S *>(src.release()));
@@ -111,7 +118,10 @@ typename std::remove_reference<T>::type&& move(T&& t) noexcept {
111
118
 
112
119
  template <class T, class... _Args>
113
120
  static duckdb::unique_ptr<T> make_unique(_Args&&... __args) {
121
+ #ifndef DUCKDB_ENABLE_DEPRECATED_API
114
122
  static_assert(sizeof(T) == 0, "Use make_uniq instead of make_unique!");
123
+ #endif // DUCKDB_ENABLE_DEPRECATED_API
124
+ return unique_ptr<T>(new T(std::forward<_Args>(__args)...));
115
125
  }
116
126
 
117
127
  template <typename T>
@@ -8,7 +8,7 @@
8
8
 
9
9
  #pragma once
10
10
 
11
- #include "duckdb/common/types/partitioned_column_data.hpp"
11
+ #include "duckdb/common/types/column/partitioned_column_data.hpp"
12
12
  #include "duckdb/execution/expression_executor.hpp"
13
13
  #include "duckdb/optimizer/filter_combiner.hpp"
14
14
  #include "duckdb/optimizer/statistics_propagator.hpp"
@@ -16,8 +16,8 @@
16
16
  #include "duckdb/planner/table_filter.hpp"
17
17
  #include "re2/re2.h"
18
18
 
19
- #include <sstream>
20
19
  #include <iostream>
20
+ #include <sstream>
21
21
 
22
22
  namespace duckdb {
23
23
 
@@ -83,7 +83,9 @@ public:
83
83
  HivePartitionedColumnData(ClientContext &context, vector<LogicalType> types, vector<idx_t> partition_by_cols,
84
84
  shared_ptr<GlobalHivePartitionState> global_state = nullptr)
85
85
  : PartitionedColumnData(PartitionedColumnDataType::HIVE, context, std::move(types)),
86
- global_state(std::move(global_state)), group_by_columns(partition_by_cols) {
86
+ global_state(std::move(global_state)), group_by_columns(std::move(partition_by_cols)),
87
+ hashes_v(LogicalType::HASH) {
88
+ InitializeKeys();
87
89
  }
88
90
  HivePartitionedColumnData(const HivePartitionedColumnData &other);
89
91
  void ComputePartitionIndices(PartitionedColumnDataAppendState &state, DataChunk &input) override;
@@ -103,12 +105,20 @@ protected:
103
105
  //! Copy the newly added entries in the global_state.map to the local_partition_map (requires lock!)
104
106
  void SynchronizeLocalMap();
105
107
 
108
+ private:
109
+ void InitializeKeys();
110
+
111
+ protected:
106
112
  //! Shared HivePartitionedColumnData should always have a global state to allow parallel key discovery
107
113
  shared_ptr<GlobalHivePartitionState> global_state;
108
114
  //! Thread-local copy of the partition map
109
115
  hive_partition_map_t local_partition_map;
110
116
  //! The columns that make up the key
111
117
  vector<idx_t> group_by_columns;
118
+ //! Thread-local pre-allocated vector for hashes
119
+ Vector hashes_v;
120
+ //! Thread-local pre-allocated HivePartitionKeys
121
+ vector<HivePartitionKey> keys;
112
122
  };
113
123
 
114
124
  } // namespace duckdb
@@ -61,6 +61,14 @@ public:
61
61
  return ptr;
62
62
  }
63
63
 
64
+ bool operator==(const optional_ptr<T> &rhs) const {
65
+ return ptr == rhs.ptr;
66
+ }
67
+
68
+ bool operator!=(const optional_ptr<T> &rhs) const {
69
+ return ptr != rhs.ptr;
70
+ }
71
+
64
72
  private:
65
73
  T *ptr;
66
74
  };
@@ -0,0 +1,34 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/common/string_map_set.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #pragma once
10
+
11
+ #include "duckdb/common/types.hpp"
12
+ #include "duckdb/common/unordered_map.hpp"
13
+ #include "duckdb/common/unordered_set.hpp"
14
+
15
+ namespace duckdb {
16
+
17
+ struct PerfectHash {
18
+ inline std::size_t operator()(const idx_t &h) const {
19
+ return h;
20
+ }
21
+ };
22
+
23
+ struct PerfectEquality {
24
+ inline bool operator()(const idx_t &a, const idx_t &b) const {
25
+ return a == b;
26
+ }
27
+ };
28
+
29
+ template <typename T>
30
+ using perfect_map_t = unordered_map<idx_t, T, PerfectHash, PerfectEquality>;
31
+
32
+ using perfect_set_t = unordered_set<idx_t, PerfectHash, PerfectEquality>;
33
+
34
+ } // namespace duckdb