duckdb 0.8.2-dev157.0 → 0.8.2-dev1573.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 (493) hide show
  1. package/binding.gyp +15 -12
  2. package/binding.gyp.in +1 -1
  3. package/configure.py +1 -1
  4. package/duckdb_extension_config.cmake +10 -0
  5. package/package.json +1 -1
  6. package/src/duckdb/extension/icu/icu-dateadd.cpp +2 -2
  7. package/src/duckdb/extension/icu/icu-datefunc.cpp +1 -1
  8. package/src/duckdb/extension/icu/icu-datepart.cpp +2 -2
  9. package/src/duckdb/extension/icu/icu-datesub.cpp +2 -2
  10. package/src/duckdb/extension/icu/icu-datetrunc.cpp +1 -1
  11. package/src/duckdb/extension/icu/icu-list-range.cpp +1 -1
  12. package/src/duckdb/extension/icu/icu-makedate.cpp +7 -0
  13. package/src/duckdb/extension/icu/icu-strptime.cpp +4 -4
  14. package/src/duckdb/extension/icu/icu-table-range.cpp +5 -5
  15. package/src/duckdb/extension/icu/icu-timebucket.cpp +16 -16
  16. package/src/duckdb/extension/icu/icu-timezone.cpp +8 -8
  17. package/src/duckdb/extension/icu/icu_extension.cpp +3 -3
  18. package/src/duckdb/extension/json/include/json_common.hpp +47 -231
  19. package/src/duckdb/extension/json/include/json_executors.hpp +49 -13
  20. package/src/duckdb/extension/json/include/json_functions.hpp +2 -1
  21. package/src/duckdb/extension/json/json_common.cpp +272 -40
  22. package/src/duckdb/extension/json/json_functions/json_structure.cpp +1 -1
  23. package/src/duckdb/extension/json/json_functions/json_transform.cpp +17 -37
  24. package/src/duckdb/extension/json/json_functions/json_type.cpp +1 -1
  25. package/src/duckdb/extension/json/json_functions.cpp +24 -24
  26. package/src/duckdb/extension/json/json_scan.cpp +3 -6
  27. package/src/duckdb/extension/parquet/column_reader.cpp +19 -21
  28. package/src/duckdb/extension/parquet/column_writer.cpp +77 -61
  29. package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +2 -2
  30. package/src/duckdb/extension/parquet/include/column_reader.hpp +14 -16
  31. package/src/duckdb/extension/parquet/include/column_writer.hpp +9 -7
  32. package/src/duckdb/extension/parquet/include/list_column_reader.hpp +2 -2
  33. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +3 -3
  34. package/src/duckdb/extension/parquet/include/parquet_decimal_utils.hpp +3 -3
  35. package/src/duckdb/extension/parquet/include/parquet_file_metadata_cache.hpp +2 -2
  36. package/src/duckdb/extension/parquet/include/parquet_statistics.hpp +2 -2
  37. package/src/duckdb/extension/parquet/include/parquet_support.hpp +9 -11
  38. package/src/duckdb/extension/parquet/include/parquet_writer.hpp +24 -5
  39. package/src/duckdb/extension/parquet/include/string_column_reader.hpp +1 -1
  40. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +2 -3
  41. package/src/duckdb/extension/parquet/include/zstd_file_system.hpp +2 -2
  42. package/src/duckdb/extension/parquet/parquet_extension.cpp +192 -20
  43. package/src/duckdb/extension/parquet/parquet_reader.cpp +6 -6
  44. package/src/duckdb/extension/parquet/parquet_statistics.cpp +7 -6
  45. package/src/duckdb/extension/parquet/parquet_writer.cpp +79 -16
  46. package/src/duckdb/extension/parquet/zstd_file_system.cpp +2 -2
  47. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +1 -1
  48. package/src/duckdb/src/catalog/catalog_search_path.cpp +5 -4
  49. package/src/duckdb/src/catalog/default/default_functions.cpp +16 -0
  50. package/src/duckdb/src/common/adbc/adbc.cpp +75 -10
  51. package/src/duckdb/src/common/adbc/driver_manager.cpp +6 -11
  52. package/src/duckdb/src/common/allocator.cpp +14 -2
  53. package/src/duckdb/src/common/arrow/arrow_appender.cpp +5 -11
  54. package/src/duckdb/src/common/assert.cpp +3 -0
  55. package/src/duckdb/src/common/enum_util.cpp +4619 -4446
  56. package/src/duckdb/src/common/enums/logical_operator_type.cpp +4 -0
  57. package/src/duckdb/src/common/enums/optimizer_type.cpp +2 -0
  58. package/src/duckdb/src/common/enums/physical_operator_type.cpp +4 -0
  59. package/src/duckdb/src/common/exception.cpp +2 -2
  60. package/src/duckdb/src/common/extra_type_info.cpp +506 -0
  61. package/src/duckdb/src/common/file_system.cpp +19 -0
  62. package/src/duckdb/src/common/hive_partitioning.cpp +10 -6
  63. package/src/duckdb/src/common/local_file_system.cpp +14 -14
  64. package/src/duckdb/src/common/multi_file_reader.cpp +184 -20
  65. package/src/duckdb/src/common/operator/cast_operators.cpp +35 -1
  66. package/src/duckdb/src/common/radix_partitioning.cpp +26 -8
  67. package/src/duckdb/src/common/re2_regex.cpp +1 -1
  68. package/src/duckdb/src/common/row_operations/row_external.cpp +1 -1
  69. package/src/duckdb/src/common/sort/merge_sorter.cpp +9 -16
  70. package/src/duckdb/src/common/sort/partition_state.cpp +44 -11
  71. package/src/duckdb/src/common/types/batched_data_collection.cpp +7 -2
  72. package/src/duckdb/src/common/types/bit.cpp +51 -0
  73. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +9 -6
  74. package/src/duckdb/src/common/types/column/column_data_collection.cpp +17 -2
  75. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +15 -6
  76. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  77. package/src/duckdb/src/common/types/data_chunk.cpp +2 -2
  78. package/src/duckdb/src/common/types/date.cpp +9 -0
  79. package/src/duckdb/src/common/types/list_segment.cpp +24 -74
  80. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +3 -9
  81. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +2 -0
  82. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +2 -2
  83. package/src/duckdb/src/common/types/uuid.cpp +2 -2
  84. package/src/duckdb/src/common/types/validity_mask.cpp +33 -0
  85. package/src/duckdb/src/common/types.cpp +8 -655
  86. package/src/duckdb/src/common/virtual_file_system.cpp +138 -1
  87. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +2 -0
  88. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +2 -2
  89. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +4 -4
  90. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +4 -4
  91. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +5 -4
  92. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +8 -8
  93. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +4 -3
  94. package/src/duckdb/src/core_functions/function_list.cpp +4 -2
  95. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +208 -42
  96. package/src/duckdb/src/core_functions/scalar/date/epoch.cpp +10 -24
  97. package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +19 -4
  98. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +4 -2
  99. package/src/duckdb/src/execution/aggregate_hashtable.cpp +34 -18
  100. package/src/duckdb/src/execution/expression_executor.cpp +1 -1
  101. package/src/duckdb/src/execution/index/art/art.cpp +149 -139
  102. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +1 -1
  103. package/src/duckdb/src/execution/index/art/iterator.cpp +129 -207
  104. package/src/duckdb/src/execution/index/art/leaf.cpp +8 -37
  105. package/src/duckdb/src/execution/index/art/node.cpp +113 -120
  106. package/src/duckdb/src/execution/index/art/node16.cpp +1 -10
  107. package/src/duckdb/src/execution/index/art/node256.cpp +1 -9
  108. package/src/duckdb/src/execution/index/art/node4.cpp +12 -13
  109. package/src/duckdb/src/execution/index/art/node48.cpp +1 -11
  110. package/src/duckdb/src/execution/index/art/prefix.cpp +228 -350
  111. package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
  112. package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -0
  113. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +8 -3
  114. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +32 -22
  115. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +512 -300
  116. package/src/duckdb/src/execution/operator/helper/physical_batch_collector.cpp +4 -3
  117. package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +5 -5
  118. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +444 -284
  119. package/src/duckdb/src/execution/operator/join/physical_comparison_join.cpp +1 -1
  120. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +21 -10
  121. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +28 -12
  122. package/src/duckdb/src/execution/operator/join/physical_join.cpp +1 -1
  123. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +23 -4
  124. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +41 -5
  125. package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +100 -13
  126. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +1 -1
  127. package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +20 -0
  128. package/src/duckdb/src/execution/operator/persistent/csv_rejects_table.cpp +48 -0
  129. package/src/duckdb/src/execution/operator/persistent/parallel_csv_reader.cpp +2 -3
  130. package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +6 -4
  131. package/src/duckdb/src/execution/operator/persistent/physical_fixed_batch_copy.cpp +3 -3
  132. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  133. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -1
  134. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +19 -0
  135. package/src/duckdb/src/execution/operator/scan/physical_table_scan.cpp +7 -2
  136. package/src/duckdb/src/execution/operator/set/physical_cte.cpp +160 -0
  137. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +15 -5
  138. package/src/duckdb/src/execution/partitionable_hashtable.cpp +41 -6
  139. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +30 -5
  140. package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +43 -10
  141. package/src/duckdb/src/execution/physical_plan/plan_asof_join.cpp +56 -33
  142. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +17 -13
  143. package/src/duckdb/src/execution/physical_plan/plan_cte.cpp +33 -0
  144. package/src/duckdb/src/execution/physical_plan/plan_get.cpp +2 -2
  145. package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +25 -4
  146. package/src/duckdb/src/execution/physical_plan_generator.cpp +4 -0
  147. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +290 -43
  148. package/src/duckdb/src/execution/window_segment_tree.cpp +286 -129
  149. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +2 -1
  150. package/src/duckdb/src/function/cast/bit_cast.cpp +34 -2
  151. package/src/duckdb/src/function/cast/blob_cast.cpp +3 -0
  152. package/src/duckdb/src/function/cast/numeric_casts.cpp +2 -0
  153. package/src/duckdb/src/function/function.cpp +3 -1
  154. package/src/duckdb/src/function/pragma/pragma_queries.cpp +5 -0
  155. package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +212 -0
  156. package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +249 -0
  157. package/src/duckdb/src/function/scalar/compressed_materialization_functions.cpp +29 -0
  158. package/src/duckdb/src/function/scalar/list/list_resize.cpp +162 -0
  159. package/src/duckdb/src/function/scalar/nested_functions.cpp +1 -0
  160. package/src/duckdb/src/function/scalar/string/like.cpp +12 -4
  161. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +12 -5
  162. package/src/duckdb/src/function/table/copy_csv.cpp +8 -1
  163. package/src/duckdb/src/function/table/read_csv.cpp +100 -17
  164. package/src/duckdb/src/function/table/system_functions.cpp +1 -0
  165. package/src/duckdb/src/function/table/table_scan.cpp +9 -0
  166. package/src/duckdb/src/function/table/version/pragma_version.cpp +46 -2
  167. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +1 -0
  168. package/src/duckdb/src/include/duckdb/common/allocator.hpp +2 -0
  169. package/src/duckdb/src/include/duckdb/common/bswap.hpp +42 -0
  170. package/src/duckdb/src/include/duckdb/common/dl.hpp +3 -1
  171. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +616 -584
  172. package/src/duckdb/src/include/duckdb/common/enums/cte_materialize.hpp +21 -0
  173. package/src/duckdb/src/include/duckdb/common/enums/joinref_type.hpp +2 -1
  174. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +2 -0
  175. package/src/duckdb/src/include/duckdb/common/enums/optimizer_type.hpp +2 -0
  176. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +2 -0
  177. package/src/duckdb/src/include/duckdb/common/extra_operator_info.hpp +27 -0
  178. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +219 -0
  179. package/src/duckdb/src/include/duckdb/common/file_system.hpp +2 -0
  180. package/src/duckdb/src/include/duckdb/common/hive_partitioning.hpp +1 -1
  181. package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +6 -4
  182. package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +10 -42
  183. package/src/duckdb/src/include/duckdb/common/mutex.hpp +3 -0
  184. package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +43 -3
  185. package/src/duckdb/src/include/duckdb/common/operator/numeric_cast.hpp +10 -0
  186. package/src/duckdb/src/include/duckdb/common/radix.hpp +9 -20
  187. package/src/duckdb/src/include/duckdb/common/radix_partitioning.hpp +6 -21
  188. package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +3 -3
  189. package/src/duckdb/src/include/duckdb/common/sort/partition_state.hpp +13 -0
  190. package/src/duckdb/src/include/duckdb/common/string_util.hpp +11 -0
  191. package/src/duckdb/src/include/duckdb/common/types/batched_data_collection.hpp +3 -1
  192. package/src/duckdb/src/include/duckdb/common/types/bit.hpp +81 -0
  193. package/src/duckdb/src/include/duckdb/common/types/column/column_data_allocator.hpp +1 -1
  194. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection.hpp +6 -1
  195. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_segment.hpp +1 -1
  196. package/src/duckdb/src/include/duckdb/common/types/column/column_data_scan_states.hpp +3 -1
  197. package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +1 -1
  198. package/src/duckdb/src/include/duckdb/common/types/date.hpp +7 -5
  199. package/src/duckdb/src/include/duckdb/common/types/list_segment.hpp +6 -8
  200. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +0 -1
  201. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +1 -0
  202. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +3 -0
  203. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +9 -0
  204. package/src/duckdb/src/include/duckdb/common/types.hpp +1 -15
  205. package/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp +38 -97
  206. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +4 -4
  207. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +3 -1
  208. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic_functions.hpp +3 -1
  209. package/src/duckdb/src/include/duckdb/core_functions/aggregate/distributive_functions.hpp +3 -1
  210. package/src/duckdb/src/include/duckdb/core_functions/aggregate/holistic_functions.hpp +3 -1
  211. package/src/duckdb/src/include/duckdb/core_functions/aggregate/nested_functions.hpp +3 -1
  212. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +1 -0
  213. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +3 -3
  214. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression_functions.hpp +3 -1
  215. package/src/duckdb/src/include/duckdb/core_functions/scalar/bit_functions.hpp +3 -1
  216. package/src/duckdb/src/include/duckdb/core_functions/scalar/blob_functions.hpp +3 -1
  217. package/src/duckdb/src/include/duckdb/core_functions/scalar/date_functions.hpp +31 -11
  218. package/src/duckdb/src/include/duckdb/core_functions/scalar/enum_functions.hpp +3 -1
  219. package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +3 -1
  220. package/src/duckdb/src/include/duckdb/core_functions/scalar/list_functions.hpp +3 -1
  221. package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +3 -1
  222. package/src/duckdb/src/include/duckdb/core_functions/scalar/math_functions.hpp +3 -1
  223. package/src/duckdb/src/include/duckdb/core_functions/scalar/operators_functions.hpp +3 -1
  224. package/src/duckdb/src/include/duckdb/core_functions/scalar/random_functions.hpp +3 -1
  225. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +3 -1
  226. package/src/duckdb/src/include/duckdb/core_functions/scalar/struct_functions.hpp +3 -1
  227. package/src/duckdb/src/include/duckdb/core_functions/scalar/union_functions.hpp +3 -1
  228. package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +21 -3
  229. package/src/duckdb/src/include/duckdb/execution/executor.hpp +3 -0
  230. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +4 -5
  231. package/src/duckdb/src/include/duckdb/execution/index/art/iterator.hpp +31 -27
  232. package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +6 -14
  233. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +4 -10
  234. package/src/duckdb/src/include/duckdb/execution/index/art/node16.hpp +3 -6
  235. package/src/duckdb/src/include/duckdb/execution/index/art/node256.hpp +3 -6
  236. package/src/duckdb/src/include/duckdb/execution/index/art/node4.hpp +5 -8
  237. package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +3 -6
  238. package/src/duckdb/src/include/duckdb/execution/index/art/prefix.hpp +63 -52
  239. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_asof_join.hpp +3 -10
  240. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_iejoin.hpp +1 -1
  241. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp +1 -1
  242. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_range_join.hpp +12 -1
  243. package/src/duckdb/src/include/duckdb/execution/operator/persistent/base_csv_reader.hpp +2 -2
  244. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_line_info.hpp +4 -3
  245. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_reader_options.hpp +8 -1
  246. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_rejects_table.hpp +36 -0
  247. package/src/duckdb/src/include/duckdb/execution/operator/persistent/parallel_csv_reader.hpp +1 -1
  248. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +10 -0
  249. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_table_scan.hpp +5 -1
  250. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +62 -0
  251. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +8 -2
  252. package/src/duckdb/src/include/duckdb/execution/partitionable_hashtable.hpp +5 -1
  253. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +3 -0
  254. package/src/duckdb/src/include/duckdb/execution/radix_partitioned_hashtable.hpp +10 -3
  255. package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +51 -40
  256. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +1 -1
  257. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +2 -2
  258. package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +1 -0
  259. package/src/duckdb/src/include/duckdb/function/scalar/compressed_materialization_functions.hpp +49 -0
  260. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +1 -1
  261. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +5 -0
  262. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +2 -0
  263. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +4 -0
  264. package/src/duckdb/src/include/duckdb/main/client_config.hpp +5 -0
  265. package/src/duckdb/src/include/duckdb/main/config.hpp +2 -0
  266. package/src/duckdb/src/include/duckdb/main/connection.hpp +1 -2
  267. package/src/duckdb/src/include/duckdb/main/relation/cross_product_relation.hpp +4 -1
  268. package/src/duckdb/src/include/duckdb/main/relation/join_relation.hpp +5 -2
  269. package/src/duckdb/src/include/duckdb/main/relation.hpp +4 -2
  270. package/src/duckdb/src/include/duckdb/main/settings.hpp +39 -1
  271. package/src/duckdb/src/include/duckdb/optimizer/column_binding_replacer.hpp +47 -0
  272. package/src/duckdb/src/include/duckdb/optimizer/compressed_materialization.hpp +132 -0
  273. package/src/duckdb/src/include/duckdb/optimizer/deliminator.hpp +13 -16
  274. package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +3 -0
  275. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +1 -1
  276. package/src/duckdb/src/include/duckdb/optimizer/join_order/estimated_properties.hpp +10 -1
  277. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +1 -1
  278. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_relation.hpp +1 -1
  279. package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph.hpp +3 -0
  280. package/src/duckdb/src/include/duckdb/optimizer/matcher/set_matcher.hpp +13 -0
  281. package/src/duckdb/src/include/duckdb/optimizer/optimizer.hpp +3 -0
  282. package/src/duckdb/src/include/duckdb/optimizer/remove_duplicate_groups.hpp +40 -0
  283. package/src/duckdb/src/include/duckdb/optimizer/statistics_propagator.hpp +11 -3
  284. package/src/duckdb/src/include/duckdb/optimizer/topn_optimizer.hpp +2 -0
  285. package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +2 -0
  286. package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +5 -0
  287. package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +2 -0
  288. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +3 -0
  289. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +3 -0
  290. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +3 -0
  291. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +3 -0
  292. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +3 -0
  293. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +3 -0
  294. package/src/duckdb/src/include/duckdb/parser/expression/default_expression.hpp +1 -0
  295. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +3 -0
  296. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +3 -0
  297. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +3 -0
  298. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +3 -0
  299. package/src/duckdb/src/include/duckdb/parser/query_node/cte_node.hpp +54 -0
  300. package/src/duckdb/src/include/duckdb/parser/query_node/list.hpp +1 -0
  301. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -1
  302. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +1 -0
  303. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  304. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +3 -0
  305. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +1 -0
  306. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +15 -8
  307. package/src/duckdb/src/include/duckdb/planner/binder.hpp +12 -5
  308. package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +1 -0
  309. package/src/duckdb/src/include/duckdb/planner/column_binding.hpp +4 -0
  310. package/src/duckdb/src/include/duckdb/planner/constraints/bound_unique_constraint.hpp +3 -3
  311. package/src/duckdb/src/include/duckdb/planner/expression_binder/lateral_binder.hpp +0 -2
  312. package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -0
  313. package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +2 -1
  314. package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +5 -5
  315. package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +7 -2
  316. package/src/duckdb/src/include/duckdb/planner/operator/logical_dependent_join.hpp +43 -0
  317. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +4 -0
  318. package/src/duckdb/src/include/duckdb/planner/operator/logical_materialized_cte.hpp +49 -0
  319. package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +5 -4
  320. package/src/duckdb/src/include/duckdb/planner/query_node/bound_cte_node.hpp +44 -0
  321. package/src/duckdb/src/include/duckdb/planner/query_node/list.hpp +1 -0
  322. package/src/duckdb/src/include/duckdb/planner/subquery/flatten_dependent_join.hpp +2 -2
  323. package/src/duckdb/src/include/duckdb/planner/subquery/has_correlated_expressions.hpp +4 -1
  324. package/src/duckdb/src/include/duckdb/planner/subquery/recursive_dependent_join_planner.hpp +31 -0
  325. package/src/duckdb/src/include/duckdb/planner/subquery/rewrite_correlated_expressions.hpp +8 -2
  326. package/src/duckdb/src/include/duckdb/planner/tableref/bound_cteref.hpp +5 -2
  327. package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +1 -1
  328. package/src/duckdb/src/include/duckdb/storage/block_manager.hpp +3 -3
  329. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +1 -1
  330. package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +22 -0
  331. package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +2 -0
  332. package/src/duckdb/src/include/duckdb/storage/statistics/string_stats.hpp +4 -0
  333. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +3 -0
  334. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +3 -2
  335. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +1 -3
  336. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +2 -3
  337. package/src/duckdb/src/include/duckdb.h +28 -0
  338. package/src/duckdb/src/main/capi/arrow-c.cpp +155 -1
  339. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +1 -1
  340. package/src/duckdb/src/main/config.cpp +4 -0
  341. package/src/duckdb/src/main/database.cpp +1 -1
  342. package/src/duckdb/src/main/extension/extension_helper.cpp +96 -89
  343. package/src/duckdb/src/main/extension/extension_install.cpp +9 -0
  344. package/src/duckdb/src/main/extension/extension_load.cpp +10 -1
  345. package/src/duckdb/src/main/relation/cross_product_relation.cpp +4 -3
  346. package/src/duckdb/src/main/relation/join_relation.cpp +5 -5
  347. package/src/duckdb/src/main/relation.cpp +6 -5
  348. package/src/duckdb/src/main/settings/settings.cpp +79 -18
  349. package/src/duckdb/src/optimizer/column_binding_replacer.cpp +43 -0
  350. package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +1 -2
  351. package/src/duckdb/src/optimizer/compressed_materialization/compress_aggregate.cpp +140 -0
  352. package/src/duckdb/src/optimizer/compressed_materialization/compress_distinct.cpp +42 -0
  353. package/src/duckdb/src/optimizer/compressed_materialization/compress_order.cpp +65 -0
  354. package/src/duckdb/src/optimizer/compressed_materialization.cpp +478 -0
  355. package/src/duckdb/src/optimizer/deliminator.cpp +176 -321
  356. package/src/duckdb/src/optimizer/filter_pushdown.cpp +9 -0
  357. package/src/duckdb/src/optimizer/join_order/estimated_properties.cpp +7 -0
  358. package/src/duckdb/src/optimizer/join_order/join_node.cpp +2 -2
  359. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +113 -82
  360. package/src/duckdb/src/optimizer/join_order/join_relation_set.cpp +2 -6
  361. package/src/duckdb/src/optimizer/join_order/query_graph.cpp +22 -14
  362. package/src/duckdb/src/optimizer/optimizer.cpp +51 -14
  363. package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +5 -5
  364. package/src/duckdb/src/optimizer/pushdown/pushdown_get.cpp +0 -1
  365. package/src/duckdb/src/optimizer/remove_duplicate_groups.cpp +127 -0
  366. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +4 -0
  367. package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +154 -15
  368. package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +65 -8
  369. package/src/duckdb/src/optimizer/statistics/operator/propagate_order.cpp +1 -1
  370. package/src/duckdb/src/optimizer/statistics_propagator.cpp +7 -5
  371. package/src/duckdb/src/optimizer/topn_optimizer.cpp +20 -10
  372. package/src/duckdb/src/parallel/executor.cpp +15 -0
  373. package/src/duckdb/src/parallel/task_scheduler.cpp +11 -2
  374. package/src/duckdb/src/parser/common_table_expression_info.cpp +2 -0
  375. package/src/duckdb/src/parser/expression/between_expression.cpp +3 -15
  376. package/src/duckdb/src/parser/expression/case_expression.cpp +0 -13
  377. package/src/duckdb/src/parser/expression/cast_expression.cpp +3 -14
  378. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -13
  379. package/src/duckdb/src/parser/expression/columnref_expression.cpp +3 -12
  380. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -13
  381. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +0 -12
  382. package/src/duckdb/src/parser/expression/constant_expression.cpp +3 -11
  383. package/src/duckdb/src/parser/expression/default_expression.cpp +0 -4
  384. package/src/duckdb/src/parser/expression/function_expression.cpp +3 -32
  385. package/src/duckdb/src/parser/expression/lambda_expression.cpp +4 -14
  386. package/src/duckdb/src/parser/expression/operator_expression.cpp +0 -12
  387. package/src/duckdb/src/parser/expression/parameter_expression.cpp +0 -12
  388. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +4 -11
  389. package/src/duckdb/src/parser/expression/star_expression.cpp +0 -19
  390. package/src/duckdb/src/parser/expression/subquery_expression.cpp +0 -18
  391. package/src/duckdb/src/parser/expression/window_expression.cpp +3 -39
  392. package/src/duckdb/src/parser/parsed_expression.cpp +0 -70
  393. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +7 -0
  394. package/src/duckdb/src/parser/parser.cpp +8 -2
  395. package/src/duckdb/src/parser/query_node/cte_node.cpp +58 -0
  396. package/src/duckdb/src/parser/query_node/recursive_cte_node.cpp +0 -19
  397. package/src/duckdb/src/parser/query_node/select_node.cpp +0 -29
  398. package/src/duckdb/src/parser/query_node/set_operation_node.cpp +0 -15
  399. package/src/duckdb/src/parser/query_node.cpp +15 -37
  400. package/src/duckdb/src/parser/result_modifier.cpp +0 -74
  401. package/src/duckdb/src/parser/tableref/basetableref.cpp +0 -19
  402. package/src/duckdb/src/parser/tableref/emptytableref.cpp +0 -4
  403. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +0 -15
  404. package/src/duckdb/src/parser/tableref/joinref.cpp +3 -23
  405. package/src/duckdb/src/parser/tableref/pivotref.cpp +0 -23
  406. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -13
  407. package/src/duckdb/src/parser/tableref/table_function.cpp +0 -15
  408. package/src/duckdb/src/parser/tableref.cpp +0 -44
  409. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +55 -3
  410. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +2 -0
  411. package/src/duckdb/src/parser/transform/expression/transform_multi_assign_reference.cpp +44 -0
  412. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +19 -1
  413. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +13 -0
  414. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +6 -1
  415. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +6 -1
  416. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -2
  417. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +14 -11
  418. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +11 -2
  419. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +6 -1
  420. package/src/duckdb/src/parser/transformer.cpp +15 -0
  421. package/src/duckdb/src/planner/binder/query_node/bind_cte_node.cpp +64 -0
  422. package/src/duckdb/src/planner/binder/query_node/plan_cte_node.cpp +26 -0
  423. package/src/duckdb/src/planner/binder/query_node/plan_recursive_cte_node.cpp +5 -5
  424. package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +4 -4
  425. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +32 -29
  426. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +5 -4
  427. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +11 -2
  428. package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +32 -5
  429. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +116 -49
  430. package/src/duckdb/src/planner/binder/tableref/plan_cteref.cpp +1 -1
  431. package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +64 -26
  432. package/src/duckdb/src/planner/binder/tableref/plan_subqueryref.cpp +3 -3
  433. package/src/duckdb/src/planner/binder.cpp +44 -31
  434. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +1 -1
  435. package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +4 -31
  436. package/src/duckdb/src/planner/expression_binder.cpp +3 -0
  437. package/src/duckdb/src/planner/expression_iterator.cpp +6 -0
  438. package/src/duckdb/src/planner/logical_operator.cpp +5 -0
  439. package/src/duckdb/src/planner/logical_operator_visitor.cpp +2 -0
  440. package/src/duckdb/src/planner/operator/logical_cteref.cpp +3 -1
  441. package/src/duckdb/src/planner/operator/logical_dependent_join.cpp +26 -0
  442. package/src/duckdb/src/planner/operator/logical_get.cpp +9 -4
  443. package/src/duckdb/src/planner/operator/logical_materialized_cte.cpp +21 -0
  444. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +90 -38
  445. package/src/duckdb/src/planner/subquery/has_correlated_expressions.cpp +22 -7
  446. package/src/duckdb/src/planner/subquery/rewrite_correlated_expressions.cpp +65 -7
  447. package/src/duckdb/src/storage/arena_allocator.cpp +1 -2
  448. package/src/duckdb/src/storage/buffer/block_manager.cpp +3 -0
  449. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -0
  450. package/src/duckdb/src/storage/compression/rle.cpp +0 -1
  451. package/src/duckdb/src/storage/data_table.cpp +1 -1
  452. package/src/duckdb/src/storage/local_storage.cpp +3 -3
  453. package/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp +340 -0
  454. package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +122 -0
  455. package/src/duckdb/src/storage/serialization/serialize_result_modifier.cpp +86 -0
  456. package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +166 -0
  457. package/src/duckdb/src/storage/serialization/serialize_types.cpp +127 -0
  458. package/src/duckdb/src/storage/single_file_block_manager.cpp +23 -0
  459. package/src/duckdb/src/storage/statistics/string_stats.cpp +21 -2
  460. package/src/duckdb/src/storage/storage_info.cpp +1 -1
  461. package/src/duckdb/src/storage/table/chunk_info.cpp +17 -0
  462. package/src/duckdb/src/storage/table/row_group.cpp +25 -9
  463. package/src/duckdb/src/storage/table/row_group_collection.cpp +19 -18
  464. package/src/duckdb/third_party/concurrentqueue/concurrentqueue.h +2 -2
  465. package/src/duckdb/third_party/concurrentqueue/lightweightsemaphore.h +76 -0
  466. package/src/duckdb/third_party/fast_float/fast_float/fast_float.h +2 -0
  467. package/src/duckdb/third_party/httplib/httplib.hpp +10 -1
  468. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +9 -0
  469. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +2 -1
  470. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +12487 -12331
  471. package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +6 -6
  472. package/src/duckdb/ub_src_common.cpp +2 -0
  473. package/src/duckdb/ub_src_execution_index_art.cpp +0 -2
  474. package/src/duckdb/ub_src_execution_operator_persistent.cpp +2 -0
  475. package/src/duckdb/ub_src_execution_operator_set.cpp +2 -0
  476. package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
  477. package/src/duckdb/ub_src_function_scalar.cpp +2 -0
  478. package/src/duckdb/ub_src_function_scalar_compressed_materialization.cpp +4 -0
  479. package/src/duckdb/ub_src_function_scalar_list.cpp +2 -0
  480. package/src/duckdb/ub_src_optimizer.cpp +6 -0
  481. package/src/duckdb/ub_src_optimizer_compressed_materialization.cpp +6 -0
  482. package/src/duckdb/ub_src_optimizer_statistics_expression.cpp +0 -2
  483. package/src/duckdb/ub_src_parser_query_node.cpp +2 -0
  484. package/src/duckdb/ub_src_parser_transform_expression.cpp +2 -0
  485. package/src/duckdb/ub_src_planner_binder_query_node.cpp +4 -0
  486. package/src/duckdb/ub_src_planner_operator.cpp +4 -0
  487. package/src/duckdb/ub_src_storage_serialization.cpp +10 -0
  488. package/src/statement.cpp +10 -3
  489. package/test/test_all_types.test.ts +233 -0
  490. package/tsconfig.json +1 -0
  491. package/src/duckdb/src/execution/index/art/prefix_segment.cpp +0 -42
  492. package/src/duckdb/src/include/duckdb/execution/index/art/prefix_segment.hpp +0 -40
  493. package/src/duckdb/src/optimizer/statistics/expression/propagate_and_compress.cpp +0 -118
@@ -0,0 +1,21 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/common/enums/cte_materialize.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #pragma once
10
+
11
+ #include "duckdb/common/constants.hpp"
12
+
13
+ namespace duckdb {
14
+
15
+ enum class CTEMaterialize : uint8_t {
16
+ CTE_MATERIALIZE_DEFAULT = 1, /* no option specified */
17
+ CTE_MATERIALIZE_ALWAYS = 2, /* MATERIALIZED */
18
+ CTE_MATERIALIZE_NEVER = 3 /* NOT MATERIALIZED */
19
+ };
20
+
21
+ } // namespace duckdb
@@ -20,7 +20,8 @@ enum class JoinRefType : uint8_t {
20
20
  NATURAL, // Implied conditions
21
21
  CROSS, // No condition
22
22
  POSITIONAL, // Positional condition
23
- ASOF // AsOf conditions
23
+ ASOF, // AsOf conditions
24
+ DEPENDENT, // Dependent join conditions
24
25
  };
25
26
 
26
27
  const char *ToString(JoinRefType value);
@@ -51,6 +51,7 @@ enum class LogicalOperatorType : uint8_t {
51
51
  LOGICAL_CROSS_PRODUCT = 54,
52
52
  LOGICAL_POSITIONAL_JOIN = 55,
53
53
  LOGICAL_ASOF_JOIN = 56,
54
+ LOGICAL_DEPENDENT_JOIN = 57,
54
55
  // -----------------------------
55
56
  // SetOps
56
57
  // -----------------------------
@@ -58,6 +59,7 @@ enum class LogicalOperatorType : uint8_t {
58
59
  LOGICAL_EXCEPT = 76,
59
60
  LOGICAL_INTERSECT = 77,
60
61
  LOGICAL_RECURSIVE_CTE = 78,
62
+ LOGICAL_MATERIALIZED_CTE = 79,
61
63
 
62
64
  // -----------------------------
63
65
  // Updates
@@ -28,6 +28,8 @@ enum class OptimizerType : uint32_t {
28
28
  COMMON_AGGREGATE,
29
29
  COLUMN_LIFETIME,
30
30
  TOP_N,
31
+ COMPRESSED_MATERIALIZATION,
32
+ DUPLICATE_GROUPS,
31
33
  REORDER_FILTER,
32
34
  EXTENSION
33
35
  };
@@ -45,6 +45,7 @@ enum class PhysicalOperatorType : uint8_t {
45
45
  COLUMN_DATA_SCAN,
46
46
  CHUNK_SCAN,
47
47
  RECURSIVE_CTE_SCAN,
48
+ CTE_SCAN,
48
49
  DELIM_SCAN,
49
50
  EXPRESSION_SCAN,
50
51
  POSITIONAL_SCAN,
@@ -66,6 +67,7 @@ enum class PhysicalOperatorType : uint8_t {
66
67
  // -----------------------------
67
68
  UNION,
68
69
  RECURSIVE_CTE,
70
+ CTE,
69
71
 
70
72
  // -----------------------------
71
73
  // Updates
@@ -0,0 +1,27 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/common/extra_operator_info.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #pragma once
10
+
11
+ #include <algorithm>
12
+ #include <cstdint>
13
+ #include <cstring>
14
+ #include "duckdb/common/operator/comparison_operators.hpp"
15
+
16
+ namespace duckdb {
17
+
18
+ class ExtraOperatorInfo {
19
+ public:
20
+ ExtraOperatorInfo() : file_filters("") {
21
+ }
22
+ ExtraOperatorInfo(ExtraOperatorInfo &extra_info) : file_filters(extra_info.file_filters) {
23
+ }
24
+ string file_filters;
25
+ };
26
+
27
+ } // namespace duckdb
@@ -0,0 +1,219 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/common/extra_type_info.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #pragma once
10
+
11
+ #include "duckdb/common/common.hpp"
12
+ #include "duckdb/common/types/vector.hpp"
13
+
14
+ namespace duckdb {
15
+
16
+ class FieldReader;
17
+
18
+ //! Extra Type Info Type
19
+ enum class ExtraTypeInfoType : uint8_t {
20
+ INVALID_TYPE_INFO = 0,
21
+ GENERIC_TYPE_INFO = 1,
22
+ DECIMAL_TYPE_INFO = 2,
23
+ STRING_TYPE_INFO = 3,
24
+ LIST_TYPE_INFO = 4,
25
+ STRUCT_TYPE_INFO = 5,
26
+ ENUM_TYPE_INFO = 6,
27
+ USER_TYPE_INFO = 7,
28
+ AGGREGATE_STATE_TYPE_INFO = 8
29
+ };
30
+
31
+ struct ExtraTypeInfo {
32
+ explicit ExtraTypeInfo(ExtraTypeInfoType type);
33
+ explicit ExtraTypeInfo(ExtraTypeInfoType type, string alias);
34
+ virtual ~ExtraTypeInfo();
35
+
36
+ ExtraTypeInfoType type;
37
+ string alias;
38
+ optional_ptr<TypeCatalogEntry> catalog_entry;
39
+
40
+ public:
41
+ bool Equals(ExtraTypeInfo *other_p) const;
42
+ //! Serializes a ExtraTypeInfo to a stand-alone binary blob
43
+ virtual void Serialize(FieldWriter &writer) const;
44
+ //! Serializes a ExtraTypeInfo to a stand-alone binary blob
45
+ static void Serialize(ExtraTypeInfo *info, FieldWriter &writer);
46
+ //! Deserializes a blob back into an ExtraTypeInfo
47
+ static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
48
+
49
+ virtual void FormatSerialize(FormatSerializer &serializer) const;
50
+ static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &source);
51
+
52
+ template <class TARGET>
53
+ TARGET &Cast() {
54
+ D_ASSERT(dynamic_cast<TARGET *>(this));
55
+ return reinterpret_cast<TARGET &>(*this);
56
+ }
57
+ template <class TARGET>
58
+ const TARGET &Cast() const {
59
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
60
+ return reinterpret_cast<const TARGET &>(*this);
61
+ }
62
+
63
+ protected:
64
+ virtual bool EqualsInternal(ExtraTypeInfo *other_p) const;
65
+ };
66
+
67
+ struct DecimalTypeInfo : public ExtraTypeInfo {
68
+ DecimalTypeInfo(uint8_t width_p, uint8_t scale_p);
69
+
70
+ uint8_t width;
71
+ uint8_t scale;
72
+
73
+ public:
74
+ void Serialize(FieldWriter &writer) const override;
75
+ void FormatSerialize(FormatSerializer &serializer) const override;
76
+
77
+ static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &source);
78
+ static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
79
+
80
+ protected:
81
+ bool EqualsInternal(ExtraTypeInfo *other_p) const override;
82
+
83
+ private:
84
+ DecimalTypeInfo();
85
+ };
86
+
87
+ struct StringTypeInfo : public ExtraTypeInfo {
88
+ explicit StringTypeInfo(string collation_p);
89
+
90
+ string collation;
91
+
92
+ public:
93
+ void Serialize(FieldWriter &writer) const override;
94
+ static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
95
+
96
+ void FormatSerialize(FormatSerializer &serializer) const override;
97
+ static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &source);
98
+
99
+ protected:
100
+ bool EqualsInternal(ExtraTypeInfo *other_p) const override;
101
+
102
+ private:
103
+ StringTypeInfo();
104
+ };
105
+
106
+ struct ListTypeInfo : public ExtraTypeInfo {
107
+ explicit ListTypeInfo(LogicalType child_type_p);
108
+
109
+ LogicalType child_type;
110
+
111
+ public:
112
+ void Serialize(FieldWriter &writer) const override;
113
+ void FormatSerialize(FormatSerializer &serializer) const override;
114
+
115
+ static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
116
+ static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &source);
117
+
118
+ protected:
119
+ bool EqualsInternal(ExtraTypeInfo *other_p) const override;
120
+
121
+ private:
122
+ ListTypeInfo();
123
+ };
124
+
125
+ struct StructTypeInfo : public ExtraTypeInfo {
126
+ explicit StructTypeInfo(child_list_t<LogicalType> child_types_p);
127
+
128
+ child_list_t<LogicalType> child_types;
129
+
130
+ public:
131
+ void Serialize(FieldWriter &writer) const override;
132
+ void FormatSerialize(FormatSerializer &serializer) const override;
133
+
134
+ static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
135
+
136
+ static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &deserializer);
137
+
138
+ protected:
139
+ bool EqualsInternal(ExtraTypeInfo *other_p) const override;
140
+
141
+ private:
142
+ StructTypeInfo();
143
+ };
144
+
145
+ struct AggregateStateTypeInfo : public ExtraTypeInfo {
146
+ explicit AggregateStateTypeInfo(aggregate_state_t state_type_p);
147
+
148
+ aggregate_state_t state_type;
149
+
150
+ public:
151
+ void Serialize(FieldWriter &writer) const override;
152
+ void FormatSerialize(FormatSerializer &serializer) const override;
153
+
154
+ static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &source);
155
+ static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
156
+
157
+ protected:
158
+ bool EqualsInternal(ExtraTypeInfo *other_p) const override;
159
+
160
+ private:
161
+ AggregateStateTypeInfo();
162
+ };
163
+
164
+ struct UserTypeInfo : public ExtraTypeInfo {
165
+ explicit UserTypeInfo(string name_p);
166
+
167
+ string user_type_name;
168
+
169
+ public:
170
+ void Serialize(FieldWriter &writer) const override;
171
+ void FormatSerialize(FormatSerializer &serializer) const override;
172
+
173
+ static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
174
+ static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &source);
175
+
176
+ protected:
177
+ bool EqualsInternal(ExtraTypeInfo *other_p) const override;
178
+
179
+ private:
180
+ UserTypeInfo();
181
+ };
182
+
183
+ // If this type is primarily stored in the catalog or not. Enums from Pandas/Factors are not in the catalog.
184
+ enum EnumDictType : uint8_t { INVALID = 0, VECTOR_DICT = 1 };
185
+
186
+ struct EnumTypeInfo : public ExtraTypeInfo {
187
+ explicit EnumTypeInfo(string enum_name_p, Vector &values_insert_order_p, idx_t dict_size_p);
188
+ EnumTypeInfo(const EnumTypeInfo &) = delete;
189
+ EnumTypeInfo &operator=(const EnumTypeInfo &) = delete;
190
+
191
+ public:
192
+ const EnumDictType &GetEnumDictType() const;
193
+ const string &GetEnumName() const;
194
+ const string GetSchemaName() const;
195
+ const Vector &GetValuesInsertOrder() const;
196
+ const idx_t &GetDictSize() const;
197
+ static PhysicalType DictType(idx_t size);
198
+
199
+ static LogicalType CreateType(const string &enum_name, Vector &ordered_data, idx_t size);
200
+
201
+ void Serialize(FieldWriter &writer) const override;
202
+ static shared_ptr<ExtraTypeInfo> Deserialize(FieldReader &reader);
203
+
204
+ void FormatSerialize(FormatSerializer &serializer) const override;
205
+ static shared_ptr<ExtraTypeInfo> FormatDeserialize(FormatDeserializer &source);
206
+
207
+ protected:
208
+ // Equalities are only used in enums with different catalog entries
209
+ bool EqualsInternal(ExtraTypeInfo *other_p) const override;
210
+
211
+ Vector values_insert_order;
212
+
213
+ private:
214
+ EnumDictType dict_type;
215
+ string enum_name;
216
+ idx_t dict_size;
217
+ };
218
+
219
+ } // namespace duckdb
@@ -246,6 +246,8 @@ public:
246
246
 
247
247
  //! Whether or not a file is remote or local, based only on file path
248
248
  DUCKDB_API static bool IsRemoteFile(const string &path);
249
+
250
+ DUCKDB_API virtual void SetDisabledFileSystems(const vector<string> &names);
249
251
  };
250
252
 
251
253
  } // namespace duckdb
@@ -31,7 +31,7 @@ public:
31
31
  //! evaluate to true.
32
32
  DUCKDB_API static void ApplyFiltersToFileList(ClientContext &context, vector<string> &files,
33
33
  vector<unique_ptr<Expression>> &filters,
34
- unordered_map<string, column_t> &column_map, idx_t table_index,
34
+ unordered_map<string, column_t> &column_map, LogicalGet &get,
35
35
  bool hive_enabled, bool filename_enabled);
36
36
 
37
37
  //! Returns the compiled regex pattern to match hive partitions
@@ -87,7 +87,8 @@ struct MultiFileReader {
87
87
  DUCKDB_API static vector<string> GetFileList(ClientContext &context, const Value &input, const string &name,
88
88
  FileGlobOptions options = FileGlobOptions::DISALLOW_EMPTY);
89
89
  //! Parse the named parameters of a multi-file reader
90
- DUCKDB_API static bool ParseOption(const string &key, const Value &val, MultiFileReaderOptions &options);
90
+ DUCKDB_API static bool ParseOption(const string &key, const Value &val, MultiFileReaderOptions &options,
91
+ ClientContext &context);
91
92
  //! Perform complex filter pushdown into the multi-file reader, potentially filtering out files that should be read
92
93
  //! If "true" the first file has been eliminated
93
94
  DUCKDB_API static bool ComplexFilterPushdown(ClientContext &context, vector<string> &files,
@@ -102,7 +103,7 @@ struct MultiFileReader {
102
103
  const MultiFileReaderBindData &options, const string &filename,
103
104
  const vector<string> &local_names, const vector<LogicalType> &global_types,
104
105
  const vector<string> &global_names, const vector<column_t> &global_column_ids,
105
- MultiFileReaderData &reader_data);
106
+ MultiFileReaderData &reader_data, ClientContext &context);
106
107
  //! Create all required mappings from the global types/names to the file-local types/names
107
108
  DUCKDB_API static void CreateMapping(const string &file_name, const vector<LogicalType> &local_types,
108
109
  const vector<string> &local_names, const vector<LogicalType> &global_types,
@@ -157,9 +158,10 @@ struct MultiFileReader {
157
158
  static void InitializeReader(READER_CLASS &reader, const MultiFileReaderOptions &options,
158
159
  const MultiFileReaderBindData &bind_data, const vector<LogicalType> &global_types,
159
160
  const vector<string> &global_names, const vector<column_t> &global_column_ids,
160
- optional_ptr<TableFilterSet> table_filters, const string &initial_file) {
161
+ optional_ptr<TableFilterSet> table_filters, const string &initial_file,
162
+ ClientContext &context) {
161
163
  FinalizeBind(options, bind_data, reader.GetFileName(), reader.GetNames(), global_types, global_names,
162
- global_column_ids, reader.reader_data);
164
+ global_column_ids, reader.reader_data, context);
163
165
  CreateMapping(reader.GetFileName(), reader.GetTypes(), reader.GetNames(), global_types, global_names,
164
166
  global_column_ids, table_filters, reader.reader_data, initial_file);
165
167
  reader.reader_data.filters = table_filters;
@@ -9,8 +9,9 @@
9
9
  #pragma once
10
10
 
11
11
  #include "duckdb/common/types.hpp"
12
+ #include "duckdb/common/case_insensitive_map.hpp"
12
13
  #include "duckdb/common/hive_partitioning.hpp"
13
- #include "re2/re2.h"
14
+ #include "duckdb/main/client_context.hpp"
14
15
 
15
16
  namespace duckdb {
16
17
  class Serializer;
@@ -22,51 +23,18 @@ struct MultiFileReaderOptions {
22
23
  bool hive_partitioning = false;
23
24
  bool auto_detect_hive_partitioning = true;
24
25
  bool union_by_name = false;
26
+ bool hive_types_autocast = true;
27
+ case_insensitive_map_t<LogicalType> hive_types_schema;
25
28
 
26
29
  DUCKDB_API void Serialize(Serializer &serializer) const;
27
30
  DUCKDB_API static MultiFileReaderOptions Deserialize(Deserializer &source);
28
31
  DUCKDB_API void AddBatchInfo(BindInfo &bind_info) const;
29
-
30
- static bool AutoDetectHivePartitioning(const vector<string> &files) {
31
- if (files.empty()) {
32
- return false;
33
- }
34
-
35
- std::unordered_set<string> uset;
36
- idx_t splits_size;
37
- {
38
- // front file
39
- auto splits = StringUtil::Split(files.front(), FileSystem::PathSeparator());
40
- splits_size = splits.size();
41
- if (splits.size() < 2) {
42
- return false;
43
- }
44
- for (auto it = splits.begin(); it != std::prev(splits.end()); it++) {
45
- auto part = StringUtil::Split(*it, "=");
46
- if (part.size() == 2) {
47
- uset.insert(part.front());
48
- }
49
- }
50
- }
51
- if (uset.empty()) {
52
- return false;
53
- }
54
- for (auto &file : files) {
55
- auto splits = StringUtil::Split(file, FileSystem::PathSeparator());
56
- if (splits.size() != splits_size) {
57
- return false;
58
- }
59
- for (auto it = splits.begin(); it != std::prev(splits.end()); it++) {
60
- auto part = StringUtil::Split(*it, "=");
61
- if (part.size() == 2) {
62
- if (uset.find(part.front()) == uset.end()) {
63
- return false;
64
- }
65
- }
66
- }
67
- }
68
- return true;
69
- }
32
+ DUCKDB_API void AutoDetectHivePartitioning(const vector<string> &files, ClientContext &context);
33
+ DUCKDB_API static bool AutoDetectHivePartitioningInternal(const vector<string> &files);
34
+ DUCKDB_API void AutoDetectHiveTypesInternal(const string &file, ClientContext &context);
35
+ DUCKDB_API void VerifyHiveTypesArePartitions(const std::map<string, string> &partitions) const;
36
+ DUCKDB_API LogicalType GetHiveLogicalType(const string &hive_partition_column) const;
37
+ DUCKDB_API Value GetHivePartitionValue(const string &base, const string &entry, ClientContext &context) const;
70
38
  };
71
39
 
72
40
  } // namespace duckdb
@@ -8,6 +8,9 @@
8
8
 
9
9
  #pragma once
10
10
 
11
+ #ifdef __MVS__
12
+ #include <time.h>
13
+ #endif
11
14
  #include <mutex>
12
15
 
13
16
  namespace duckdb {
@@ -8,13 +8,18 @@
8
8
 
9
9
  #pragma once
10
10
 
11
+ #include "duckdb/common/assert.hpp"
11
12
  #include "duckdb/common/constants.hpp"
13
+ #include "duckdb/common/hugeint.hpp"
12
14
  #include "duckdb/common/limits.hpp"
13
15
  #include "duckdb/common/exception.hpp"
16
+ #include "duckdb/common/typedefs.hpp"
14
17
  #include "duckdb/common/types/string_type.hpp"
15
18
  #include "duckdb/common/types.hpp"
16
19
  #include "duckdb/common/operator/convert_to_string.hpp"
17
20
  #include "duckdb/common/types/null_value.hpp"
21
+ #include "duckdb/common/types/bit.hpp"
22
+ #include "duckdb/common/types/vector.hpp"
18
23
 
19
24
  namespace duckdb {
20
25
  struct ValidityMask;
@@ -652,6 +657,15 @@ struct CastFromBlob {
652
657
  template <>
653
658
  duckdb::string_t CastFromBlob::Operation(duckdb::string_t input, Vector &vector);
654
659
 
660
+ struct CastFromBlobToBit {
661
+ template <class SRC>
662
+ static inline string_t Operation(SRC input, Vector &result) {
663
+ throw NotImplementedException("Cast from blob could not be performed!");
664
+ }
665
+ };
666
+ template <>
667
+ string_t CastFromBlobToBit::Operation(string_t input, Vector &result);
668
+
655
669
  struct TryCastToBlob {
656
670
  template <class SRC, class DST>
657
671
  static inline bool Operation(SRC input, DST &result, Vector &result_vector, string *error_message,
@@ -659,7 +673,6 @@ struct TryCastToBlob {
659
673
  throw InternalException("Unsupported type for try cast to blob");
660
674
  }
661
675
  };
662
-
663
676
  template <>
664
677
  bool TryCastToBlob::Operation(string_t input, string_t &result, Vector &result_vector, string *error_message,
665
678
  bool strict);
@@ -667,14 +680,41 @@ bool TryCastToBlob::Operation(string_t input, string_t &result, Vector &result_v
667
680
  //===--------------------------------------------------------------------===//
668
681
  // Bits
669
682
  //===--------------------------------------------------------------------===//
670
- struct CastFromBit {
683
+ struct CastFromBitToString {
671
684
  template <class SRC>
672
685
  static inline string_t Operation(SRC input, Vector &result) {
673
686
  throw duckdb::NotImplementedException("Cast from bit could not be performed!");
674
687
  }
675
688
  };
676
689
  template <>
677
- duckdb::string_t CastFromBit::Operation(duckdb::string_t input, Vector &vector);
690
+ duckdb::string_t CastFromBitToString::Operation(duckdb::string_t input, Vector &vector);
691
+
692
+ struct CastFromBitToNumeric {
693
+ template <class SRC = string_t, class DST>
694
+ static inline bool Operation(SRC input, DST &result, bool strict = false) {
695
+ D_ASSERT(input.GetSize() > 1);
696
+
697
+ // TODO: Allow conversion if the significant bytes of the bitstring can be cast to the target type
698
+ // Currently only allows bitstring -> numeric if the full bitstring fits inside the numeric type
699
+ if (input.GetSize() - 1 > sizeof(DST)) {
700
+ throw ConversionException("Bitstring doesn't fit inside of %s", GetTypeId<DST>());
701
+ }
702
+ Bit::BitToNumeric(input, result);
703
+ return (true);
704
+ }
705
+ };
706
+ template <>
707
+ bool CastFromBitToNumeric::Operation(string_t input, bool &result, bool strict);
708
+ template <>
709
+ bool CastFromBitToNumeric::Operation(string_t input, hugeint_t &result, bool strict);
710
+
711
+ struct CastFromBitToBlob {
712
+ template <class SRC>
713
+ static inline string_t Operation(SRC input, Vector &result) {
714
+ D_ASSERT(input.GetSize() > 1);
715
+ return StringVector::AddStringOrBlob(result, Bit::BitToBlob(input));
716
+ }
717
+ };
678
718
 
679
719
  struct TryCastToBit {
680
720
  template <class SRC, class DST>
@@ -9,8 +9,11 @@
9
9
  #pragma once
10
10
 
11
11
  #include "duckdb/common/operator/cast_operators.hpp"
12
+ #include "duckdb/common/types/bit.hpp"
12
13
  #include "duckdb/common/types/hugeint.hpp"
14
+ #include "duckdb/common/types/string_type.hpp"
13
15
  #include "duckdb/common/types/value.hpp"
16
+ #include "duckdb/common/types/vector.hpp"
14
17
  #include <cmath>
15
18
 
16
19
  namespace duckdb {
@@ -442,6 +445,13 @@ bool TryCastWithOverflowCheck(hugeint_t value, double &result) {
442
445
  return Hugeint::TryCast(value, result);
443
446
  }
444
447
 
448
+ struct NumericTryCastToBit {
449
+ template <class SRC>
450
+ static inline string_t Operation(SRC input, Vector &result) {
451
+ return StringVector::AddStringOrBlob(result, Bit::NumericToBit(input));
452
+ }
453
+ };
454
+
445
455
  struct NumericTryCast {
446
456
  template <class SRC, class DST>
447
457
  static inline bool Operation(SRC input, DST &result, bool strict = false) {
@@ -8,6 +8,7 @@
8
8
 
9
9
  #pragma once
10
10
 
11
+ #include "duckdb/common/bswap.hpp"
11
12
  #include "duckdb/common/common.hpp"
12
13
  #include "duckdb/common/exception.hpp"
13
14
  #include "duckdb/common/types.hpp"
@@ -20,18 +21,6 @@
20
21
 
21
22
  namespace duckdb {
22
23
 
23
- #define BSWAP16(x) ((uint16_t)((((uint16_t)(x)&0xff00) >> 8) | (((uint16_t)(x)&0x00ff) << 8)))
24
-
25
- #define BSWAP32(x) \
26
- ((uint32_t)((((uint32_t)(x)&0xff000000) >> 24) | (((uint32_t)(x)&0x00ff0000) >> 8) | \
27
- (((uint32_t)(x)&0x0000ff00) << 8) | (((uint32_t)(x)&0x000000ff) << 24)))
28
-
29
- #define BSWAP64(x) \
30
- ((uint64_t)((((uint64_t)(x)&0xff00000000000000ull) >> 56) | (((uint64_t)(x)&0x00ff000000000000ull) >> 40) | \
31
- (((uint64_t)(x)&0x0000ff0000000000ull) >> 24) | (((uint64_t)(x)&0x000000ff00000000ull) >> 8) | \
32
- (((uint64_t)(x)&0x00000000ff000000ull) << 8) | (((uint64_t)(x)&0x0000000000ff0000ull) << 24) | \
33
- (((uint64_t)(x)&0x000000000000ff00ull) << 40) | (((uint64_t)(x)&0x00000000000000ffull) << 56)))
34
-
35
24
  struct Radix {
36
25
  public:
37
26
  static inline bool IsLittleEndian() {
@@ -134,19 +123,19 @@ inline void Radix::EncodeData(data_ptr_t dataptr, int8_t value) {
134
123
 
135
124
  template <>
136
125
  inline void Radix::EncodeData(data_ptr_t dataptr, int16_t value) {
137
- Store<uint16_t>(BSWAP16(value), dataptr);
126
+ Store<uint16_t>(BSwap<uint16_t>(value), dataptr);
138
127
  dataptr[0] = FlipSign(dataptr[0]);
139
128
  }
140
129
 
141
130
  template <>
142
131
  inline void Radix::EncodeData(data_ptr_t dataptr, int32_t value) {
143
- Store<uint32_t>(BSWAP32(value), dataptr);
132
+ Store<uint32_t>(BSwap<uint32_t>(value), dataptr);
144
133
  dataptr[0] = FlipSign(dataptr[0]);
145
134
  }
146
135
 
147
136
  template <>
148
137
  inline void Radix::EncodeData(data_ptr_t dataptr, int64_t value) {
149
- Store<uint64_t>(BSWAP64(value), dataptr);
138
+ Store<uint64_t>(BSwap<uint64_t>(value), dataptr);
150
139
  dataptr[0] = FlipSign(dataptr[0]);
151
140
  }
152
141
 
@@ -157,17 +146,17 @@ inline void Radix::EncodeData(data_ptr_t dataptr, uint8_t value) {
157
146
 
158
147
  template <>
159
148
  inline void Radix::EncodeData(data_ptr_t dataptr, uint16_t value) {
160
- Store<uint16_t>(BSWAP16(value), dataptr);
149
+ Store<uint16_t>(BSwap<uint16_t>(value), dataptr);
161
150
  }
162
151
 
163
152
  template <>
164
153
  inline void Radix::EncodeData(data_ptr_t dataptr, uint32_t value) {
165
- Store<uint32_t>(BSWAP32(value), dataptr);
154
+ Store<uint32_t>(BSwap<uint32_t>(value), dataptr);
166
155
  }
167
156
 
168
157
  template <>
169
158
  inline void Radix::EncodeData(data_ptr_t dataptr, uint64_t value) {
170
- Store<uint64_t>(BSWAP64(value), dataptr);
159
+ Store<uint64_t>(BSwap<uint64_t>(value), dataptr);
171
160
  }
172
161
 
173
162
  template <>
@@ -179,13 +168,13 @@ inline void Radix::EncodeData(data_ptr_t dataptr, hugeint_t value) {
179
168
  template <>
180
169
  inline void Radix::EncodeData(data_ptr_t dataptr, float value) {
181
170
  uint32_t converted_value = EncodeFloat(value);
182
- Store<uint32_t>(BSWAP32(converted_value), dataptr);
171
+ Store<uint32_t>(BSwap<uint32_t>(converted_value), dataptr);
183
172
  }
184
173
 
185
174
  template <>
186
175
  inline void Radix::EncodeData(data_ptr_t dataptr, double value) {
187
176
  uint64_t converted_value = EncodeDouble(value);
188
- Store<uint64_t>(BSWAP64(converted_value), dataptr);
177
+ Store<uint64_t>(BSwap<uint64_t>(converted_value), dataptr);
189
178
  }
190
179
 
191
180
  template <>