duckdb 0.8.2-dev161.0 → 0.8.2-dev1764.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 (504) 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_create.cpp +21 -2
  23. package/src/duckdb/extension/json/json_functions/json_structure.cpp +1 -1
  24. package/src/duckdb/extension/json/json_functions/json_transform.cpp +91 -38
  25. package/src/duckdb/extension/json/json_functions/json_type.cpp +1 -1
  26. package/src/duckdb/extension/json/json_functions.cpp +24 -24
  27. package/src/duckdb/extension/json/json_scan.cpp +3 -6
  28. package/src/duckdb/extension/parquet/column_reader.cpp +19 -21
  29. package/src/duckdb/extension/parquet/column_writer.cpp +77 -61
  30. package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +2 -2
  31. package/src/duckdb/extension/parquet/include/column_reader.hpp +14 -16
  32. package/src/duckdb/extension/parquet/include/column_writer.hpp +9 -7
  33. package/src/duckdb/extension/parquet/include/list_column_reader.hpp +2 -2
  34. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +3 -3
  35. package/src/duckdb/extension/parquet/include/parquet_decimal_utils.hpp +3 -3
  36. package/src/duckdb/extension/parquet/include/parquet_file_metadata_cache.hpp +2 -2
  37. package/src/duckdb/extension/parquet/include/parquet_statistics.hpp +2 -2
  38. package/src/duckdb/extension/parquet/include/parquet_support.hpp +9 -11
  39. package/src/duckdb/extension/parquet/include/parquet_writer.hpp +24 -5
  40. package/src/duckdb/extension/parquet/include/string_column_reader.hpp +1 -1
  41. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +2 -3
  42. package/src/duckdb/extension/parquet/include/zstd_file_system.hpp +2 -2
  43. package/src/duckdb/extension/parquet/parquet_extension.cpp +194 -20
  44. package/src/duckdb/extension/parquet/parquet_reader.cpp +6 -6
  45. package/src/duckdb/extension/parquet/parquet_statistics.cpp +7 -6
  46. package/src/duckdb/extension/parquet/parquet_writer.cpp +79 -16
  47. package/src/duckdb/extension/parquet/zstd_file_system.cpp +2 -2
  48. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +1 -1
  49. package/src/duckdb/src/catalog/catalog_search_path.cpp +5 -4
  50. package/src/duckdb/src/catalog/default/default_functions.cpp +16 -0
  51. package/src/duckdb/src/common/adbc/adbc.cpp +75 -10
  52. package/src/duckdb/src/common/adbc/driver_manager.cpp +6 -11
  53. package/src/duckdb/src/common/allocator.cpp +14 -2
  54. package/src/duckdb/src/common/arrow/arrow_appender.cpp +79 -12
  55. package/src/duckdb/src/common/arrow/arrow_converter.cpp +44 -19
  56. package/src/duckdb/src/common/assert.cpp +3 -0
  57. package/src/duckdb/src/common/enum_util.cpp +4619 -4446
  58. package/src/duckdb/src/common/enums/logical_operator_type.cpp +4 -0
  59. package/src/duckdb/src/common/enums/optimizer_type.cpp +2 -0
  60. package/src/duckdb/src/common/enums/physical_operator_type.cpp +4 -0
  61. package/src/duckdb/src/common/exception.cpp +2 -2
  62. package/src/duckdb/src/common/extra_type_info.cpp +506 -0
  63. package/src/duckdb/src/common/file_system.cpp +19 -0
  64. package/src/duckdb/src/common/hive_partitioning.cpp +10 -6
  65. package/src/duckdb/src/common/local_file_system.cpp +14 -14
  66. package/src/duckdb/src/common/multi_file_reader.cpp +184 -20
  67. package/src/duckdb/src/common/operator/cast_operators.cpp +35 -1
  68. package/src/duckdb/src/common/radix_partitioning.cpp +26 -8
  69. package/src/duckdb/src/common/re2_regex.cpp +1 -1
  70. package/src/duckdb/src/common/row_operations/row_external.cpp +1 -1
  71. package/src/duckdb/src/common/sort/merge_sorter.cpp +9 -16
  72. package/src/duckdb/src/common/sort/partition_state.cpp +70 -50
  73. package/src/duckdb/src/common/types/batched_data_collection.cpp +7 -2
  74. package/src/duckdb/src/common/types/bit.cpp +51 -0
  75. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +9 -6
  76. package/src/duckdb/src/common/types/column/column_data_collection.cpp +17 -2
  77. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +15 -6
  78. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  79. package/src/duckdb/src/common/types/data_chunk.cpp +2 -2
  80. package/src/duckdb/src/common/types/date.cpp +9 -0
  81. package/src/duckdb/src/common/types/list_segment.cpp +24 -74
  82. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +3 -9
  83. package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +2 -0
  84. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +2 -2
  85. package/src/duckdb/src/common/types/uuid.cpp +2 -2
  86. package/src/duckdb/src/common/types/validity_mask.cpp +33 -0
  87. package/src/duckdb/src/common/types/value.cpp +11 -6
  88. package/src/duckdb/src/common/types.cpp +9 -656
  89. package/src/duckdb/src/common/virtual_file_system.cpp +138 -1
  90. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +2 -0
  91. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +2 -2
  92. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +4 -4
  93. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +4 -4
  94. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +5 -4
  95. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +8 -8
  96. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +4 -3
  97. package/src/duckdb/src/core_functions/function_list.cpp +4 -2
  98. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +208 -42
  99. package/src/duckdb/src/core_functions/scalar/date/epoch.cpp +10 -24
  100. package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +19 -4
  101. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +4 -2
  102. package/src/duckdb/src/execution/aggregate_hashtable.cpp +34 -18
  103. package/src/duckdb/src/execution/expression_executor.cpp +1 -1
  104. package/src/duckdb/src/execution/index/art/art.cpp +149 -139
  105. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +1 -1
  106. package/src/duckdb/src/execution/index/art/iterator.cpp +129 -207
  107. package/src/duckdb/src/execution/index/art/leaf.cpp +8 -37
  108. package/src/duckdb/src/execution/index/art/node.cpp +113 -120
  109. package/src/duckdb/src/execution/index/art/node16.cpp +1 -10
  110. package/src/duckdb/src/execution/index/art/node256.cpp +1 -9
  111. package/src/duckdb/src/execution/index/art/node4.cpp +12 -13
  112. package/src/duckdb/src/execution/index/art/node48.cpp +1 -11
  113. package/src/duckdb/src/execution/index/art/prefix.cpp +228 -350
  114. package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
  115. package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -0
  116. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +8 -3
  117. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +32 -22
  118. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +512 -300
  119. package/src/duckdb/src/execution/operator/helper/physical_batch_collector.cpp +4 -3
  120. package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +5 -5
  121. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +444 -284
  122. package/src/duckdb/src/execution/operator/join/physical_comparison_join.cpp +1 -1
  123. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +21 -10
  124. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +28 -12
  125. package/src/duckdb/src/execution/operator/join/physical_join.cpp +1 -1
  126. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +23 -4
  127. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +41 -5
  128. package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +100 -13
  129. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +1 -1
  130. package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +20 -0
  131. package/src/duckdb/src/execution/operator/persistent/csv_rejects_table.cpp +48 -0
  132. package/src/duckdb/src/execution/operator/persistent/parallel_csv_reader.cpp +2 -3
  133. package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +6 -4
  134. package/src/duckdb/src/execution/operator/persistent/physical_fixed_batch_copy.cpp +3 -3
  135. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  136. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -1
  137. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +19 -0
  138. package/src/duckdb/src/execution/operator/scan/physical_table_scan.cpp +7 -2
  139. package/src/duckdb/src/execution/operator/set/physical_cte.cpp +160 -0
  140. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +15 -5
  141. package/src/duckdb/src/execution/partitionable_hashtable.cpp +41 -6
  142. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +30 -5
  143. package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +43 -10
  144. package/src/duckdb/src/execution/physical_plan/plan_asof_join.cpp +56 -33
  145. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +17 -13
  146. package/src/duckdb/src/execution/physical_plan/plan_cte.cpp +33 -0
  147. package/src/duckdb/src/execution/physical_plan/plan_get.cpp +2 -2
  148. package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +25 -4
  149. package/src/duckdb/src/execution/physical_plan_generator.cpp +4 -0
  150. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +290 -43
  151. package/src/duckdb/src/execution/window_segment_tree.cpp +286 -129
  152. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +2 -1
  153. package/src/duckdb/src/function/cast/bit_cast.cpp +34 -2
  154. package/src/duckdb/src/function/cast/blob_cast.cpp +3 -0
  155. package/src/duckdb/src/function/cast/numeric_casts.cpp +2 -0
  156. package/src/duckdb/src/function/function.cpp +3 -1
  157. package/src/duckdb/src/function/pragma/pragma_queries.cpp +5 -0
  158. package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +212 -0
  159. package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +249 -0
  160. package/src/duckdb/src/function/scalar/compressed_materialization_functions.cpp +29 -0
  161. package/src/duckdb/src/function/scalar/list/list_resize.cpp +162 -0
  162. package/src/duckdb/src/function/scalar/nested_functions.cpp +1 -0
  163. package/src/duckdb/src/function/scalar/string/like.cpp +12 -4
  164. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +12 -5
  165. package/src/duckdb/src/function/table/arrow.cpp +19 -0
  166. package/src/duckdb/src/function/table/arrow_conversion.cpp +35 -1
  167. package/src/duckdb/src/function/table/copy_csv.cpp +8 -1
  168. package/src/duckdb/src/function/table/read_csv.cpp +100 -17
  169. package/src/duckdb/src/function/table/system/test_all_types.cpp +7 -0
  170. package/src/duckdb/src/function/table/system_functions.cpp +1 -0
  171. package/src/duckdb/src/function/table/table_scan.cpp +9 -0
  172. package/src/duckdb/src/function/table/version/pragma_version.cpp +46 -2
  173. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +1 -0
  174. package/src/duckdb/src/include/duckdb/common/allocator.hpp +2 -0
  175. package/src/duckdb/src/include/duckdb/common/bswap.hpp +42 -0
  176. package/src/duckdb/src/include/duckdb/common/dl.hpp +3 -1
  177. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +616 -584
  178. package/src/duckdb/src/include/duckdb/common/enums/cte_materialize.hpp +21 -0
  179. package/src/duckdb/src/include/duckdb/common/enums/joinref_type.hpp +2 -1
  180. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +2 -0
  181. package/src/duckdb/src/include/duckdb/common/enums/optimizer_type.hpp +2 -0
  182. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +2 -0
  183. package/src/duckdb/src/include/duckdb/common/extra_operator_info.hpp +27 -0
  184. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +219 -0
  185. package/src/duckdb/src/include/duckdb/common/file_system.hpp +2 -0
  186. package/src/duckdb/src/include/duckdb/common/hive_partitioning.hpp +1 -1
  187. package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +6 -4
  188. package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +10 -42
  189. package/src/duckdb/src/include/duckdb/common/mutex.hpp +3 -0
  190. package/src/duckdb/src/include/duckdb/common/opener_file_system.hpp +2 -2
  191. package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +43 -3
  192. package/src/duckdb/src/include/duckdb/common/operator/numeric_cast.hpp +10 -0
  193. package/src/duckdb/src/include/duckdb/common/radix.hpp +9 -20
  194. package/src/duckdb/src/include/duckdb/common/radix_partitioning.hpp +6 -21
  195. package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +3 -3
  196. package/src/duckdb/src/include/duckdb/common/sort/partition_state.hpp +23 -8
  197. package/src/duckdb/src/include/duckdb/common/string_util.hpp +11 -0
  198. package/src/duckdb/src/include/duckdb/common/types/batched_data_collection.hpp +3 -1
  199. package/src/duckdb/src/include/duckdb/common/types/bit.hpp +81 -0
  200. package/src/duckdb/src/include/duckdb/common/types/column/column_data_allocator.hpp +1 -1
  201. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection.hpp +6 -1
  202. package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_segment.hpp +1 -1
  203. package/src/duckdb/src/include/duckdb/common/types/column/column_data_scan_states.hpp +3 -1
  204. package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +1 -1
  205. package/src/duckdb/src/include/duckdb/common/types/date.hpp +7 -5
  206. package/src/duckdb/src/include/duckdb/common/types/list_segment.hpp +6 -8
  207. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +5 -2
  208. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +1 -0
  209. package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +3 -0
  210. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +9 -0
  211. package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -0
  212. package/src/duckdb/src/include/duckdb/common/types.hpp +1 -15
  213. package/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp +38 -97
  214. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +4 -4
  215. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +3 -1
  216. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic_functions.hpp +3 -1
  217. package/src/duckdb/src/include/duckdb/core_functions/aggregate/distributive_functions.hpp +3 -1
  218. package/src/duckdb/src/include/duckdb/core_functions/aggregate/holistic_functions.hpp +3 -1
  219. package/src/duckdb/src/include/duckdb/core_functions/aggregate/nested_functions.hpp +3 -1
  220. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +1 -0
  221. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +3 -3
  222. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression_functions.hpp +3 -1
  223. package/src/duckdb/src/include/duckdb/core_functions/scalar/bit_functions.hpp +3 -1
  224. package/src/duckdb/src/include/duckdb/core_functions/scalar/blob_functions.hpp +3 -1
  225. package/src/duckdb/src/include/duckdb/core_functions/scalar/date_functions.hpp +31 -11
  226. package/src/duckdb/src/include/duckdb/core_functions/scalar/enum_functions.hpp +3 -1
  227. package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +3 -1
  228. package/src/duckdb/src/include/duckdb/core_functions/scalar/list_functions.hpp +3 -1
  229. package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +3 -1
  230. package/src/duckdb/src/include/duckdb/core_functions/scalar/math_functions.hpp +3 -1
  231. package/src/duckdb/src/include/duckdb/core_functions/scalar/operators_functions.hpp +3 -1
  232. package/src/duckdb/src/include/duckdb/core_functions/scalar/random_functions.hpp +3 -1
  233. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +3 -1
  234. package/src/duckdb/src/include/duckdb/core_functions/scalar/struct_functions.hpp +3 -1
  235. package/src/duckdb/src/include/duckdb/core_functions/scalar/union_functions.hpp +3 -1
  236. package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +21 -3
  237. package/src/duckdb/src/include/duckdb/execution/executor.hpp +3 -0
  238. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +4 -5
  239. package/src/duckdb/src/include/duckdb/execution/index/art/iterator.hpp +31 -27
  240. package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +6 -14
  241. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +4 -10
  242. package/src/duckdb/src/include/duckdb/execution/index/art/node16.hpp +3 -6
  243. package/src/duckdb/src/include/duckdb/execution/index/art/node256.hpp +3 -6
  244. package/src/duckdb/src/include/duckdb/execution/index/art/node4.hpp +5 -8
  245. package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +3 -6
  246. package/src/duckdb/src/include/duckdb/execution/index/art/prefix.hpp +63 -52
  247. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_asof_join.hpp +3 -10
  248. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_iejoin.hpp +1 -1
  249. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp +1 -1
  250. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_range_join.hpp +12 -1
  251. package/src/duckdb/src/include/duckdb/execution/operator/persistent/base_csv_reader.hpp +2 -2
  252. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_line_info.hpp +4 -3
  253. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_reader_options.hpp +8 -1
  254. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_rejects_table.hpp +36 -0
  255. package/src/duckdb/src/include/duckdb/execution/operator/persistent/parallel_csv_reader.hpp +1 -1
  256. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +10 -0
  257. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_table_scan.hpp +5 -1
  258. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +62 -0
  259. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +8 -2
  260. package/src/duckdb/src/include/duckdb/execution/partitionable_hashtable.hpp +5 -1
  261. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +3 -0
  262. package/src/duckdb/src/include/duckdb/execution/radix_partitioned_hashtable.hpp +10 -3
  263. package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +51 -40
  264. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +1 -1
  265. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +2 -2
  266. package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +1 -0
  267. package/src/duckdb/src/include/duckdb/function/scalar/compressed_materialization_functions.hpp +49 -0
  268. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +1 -1
  269. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +5 -0
  270. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +2 -0
  271. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +4 -0
  272. package/src/duckdb/src/include/duckdb/main/client_config.hpp +5 -0
  273. package/src/duckdb/src/include/duckdb/main/config.hpp +2 -0
  274. package/src/duckdb/src/include/duckdb/main/connection.hpp +1 -2
  275. package/src/duckdb/src/include/duckdb/main/extension/generated_extension_loader.hpp +22 -0
  276. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +2 -0
  277. package/src/duckdb/src/include/duckdb/main/relation/cross_product_relation.hpp +4 -1
  278. package/src/duckdb/src/include/duckdb/main/relation/join_relation.hpp +5 -2
  279. package/src/duckdb/src/include/duckdb/main/relation.hpp +4 -2
  280. package/src/duckdb/src/include/duckdb/main/settings.hpp +39 -1
  281. package/src/duckdb/src/include/duckdb/optimizer/column_binding_replacer.hpp +47 -0
  282. package/src/duckdb/src/include/duckdb/optimizer/compressed_materialization.hpp +132 -0
  283. package/src/duckdb/src/include/duckdb/optimizer/deliminator.hpp +13 -16
  284. package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +3 -0
  285. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +1 -1
  286. package/src/duckdb/src/include/duckdb/optimizer/join_order/estimated_properties.hpp +10 -1
  287. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +1 -1
  288. package/src/duckdb/src/include/duckdb/optimizer/join_order/join_relation.hpp +1 -1
  289. package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph.hpp +3 -0
  290. package/src/duckdb/src/include/duckdb/optimizer/matcher/set_matcher.hpp +13 -0
  291. package/src/duckdb/src/include/duckdb/optimizer/optimizer.hpp +3 -0
  292. package/src/duckdb/src/include/duckdb/optimizer/remove_duplicate_groups.hpp +40 -0
  293. package/src/duckdb/src/include/duckdb/optimizer/statistics_propagator.hpp +11 -3
  294. package/src/duckdb/src/include/duckdb/optimizer/topn_optimizer.hpp +2 -0
  295. package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +2 -0
  296. package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +5 -0
  297. package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +2 -0
  298. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +3 -0
  299. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +3 -0
  300. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +3 -0
  301. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +3 -0
  302. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +3 -0
  303. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +3 -0
  304. package/src/duckdb/src/include/duckdb/parser/expression/default_expression.hpp +1 -0
  305. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +3 -0
  306. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +3 -0
  307. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +3 -0
  308. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +3 -0
  309. package/src/duckdb/src/include/duckdb/parser/query_node/cte_node.hpp +54 -0
  310. package/src/duckdb/src/include/duckdb/parser/query_node/list.hpp +1 -0
  311. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -1
  312. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +1 -0
  313. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  314. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +3 -0
  315. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +1 -0
  316. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +15 -8
  317. package/src/duckdb/src/include/duckdb/planner/binder.hpp +12 -5
  318. package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +1 -0
  319. package/src/duckdb/src/include/duckdb/planner/column_binding.hpp +4 -0
  320. package/src/duckdb/src/include/duckdb/planner/constraints/bound_unique_constraint.hpp +3 -3
  321. package/src/duckdb/src/include/duckdb/planner/expression_binder/lateral_binder.hpp +0 -2
  322. package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -0
  323. package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +2 -1
  324. package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +5 -5
  325. package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +7 -2
  326. package/src/duckdb/src/include/duckdb/planner/operator/logical_dependent_join.hpp +43 -0
  327. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +4 -0
  328. package/src/duckdb/src/include/duckdb/planner/operator/logical_materialized_cte.hpp +49 -0
  329. package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +5 -4
  330. package/src/duckdb/src/include/duckdb/planner/query_node/bound_cte_node.hpp +44 -0
  331. package/src/duckdb/src/include/duckdb/planner/query_node/list.hpp +1 -0
  332. package/src/duckdb/src/include/duckdb/planner/subquery/flatten_dependent_join.hpp +2 -2
  333. package/src/duckdb/src/include/duckdb/planner/subquery/has_correlated_expressions.hpp +4 -1
  334. package/src/duckdb/src/include/duckdb/planner/subquery/recursive_dependent_join_planner.hpp +31 -0
  335. package/src/duckdb/src/include/duckdb/planner/subquery/rewrite_correlated_expressions.hpp +8 -2
  336. package/src/duckdb/src/include/duckdb/planner/tableref/bound_cteref.hpp +5 -2
  337. package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +1 -1
  338. package/src/duckdb/src/include/duckdb/storage/block_manager.hpp +3 -3
  339. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +1 -1
  340. package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +22 -0
  341. package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +2 -0
  342. package/src/duckdb/src/include/duckdb/storage/statistics/string_stats.hpp +4 -0
  343. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +3 -0
  344. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +3 -2
  345. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +1 -3
  346. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +2 -3
  347. package/src/duckdb/src/include/duckdb.h +28 -0
  348. package/src/duckdb/src/main/capi/arrow-c.cpp +155 -1
  349. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +1 -1
  350. package/src/duckdb/src/main/config.cpp +4 -0
  351. package/src/duckdb/src/main/database.cpp +1 -1
  352. package/src/duckdb/src/main/extension/extension_helper.cpp +93 -88
  353. package/src/duckdb/src/main/extension/extension_install.cpp +9 -0
  354. package/src/duckdb/src/main/extension/extension_load.cpp +10 -1
  355. package/src/duckdb/src/main/relation/cross_product_relation.cpp +4 -3
  356. package/src/duckdb/src/main/relation/join_relation.cpp +5 -5
  357. package/src/duckdb/src/main/relation.cpp +6 -5
  358. package/src/duckdb/src/main/settings/settings.cpp +79 -18
  359. package/src/duckdb/src/optimizer/column_binding_replacer.cpp +43 -0
  360. package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +1 -2
  361. package/src/duckdb/src/optimizer/compressed_materialization/compress_aggregate.cpp +140 -0
  362. package/src/duckdb/src/optimizer/compressed_materialization/compress_distinct.cpp +42 -0
  363. package/src/duckdb/src/optimizer/compressed_materialization/compress_order.cpp +65 -0
  364. package/src/duckdb/src/optimizer/compressed_materialization.cpp +478 -0
  365. package/src/duckdb/src/optimizer/deliminator.cpp +176 -321
  366. package/src/duckdb/src/optimizer/filter_pushdown.cpp +9 -0
  367. package/src/duckdb/src/optimizer/join_order/estimated_properties.cpp +7 -0
  368. package/src/duckdb/src/optimizer/join_order/join_node.cpp +2 -2
  369. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +113 -82
  370. package/src/duckdb/src/optimizer/join_order/join_relation_set.cpp +2 -6
  371. package/src/duckdb/src/optimizer/join_order/query_graph.cpp +22 -14
  372. package/src/duckdb/src/optimizer/optimizer.cpp +49 -14
  373. package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +5 -5
  374. package/src/duckdb/src/optimizer/pushdown/pushdown_get.cpp +0 -1
  375. package/src/duckdb/src/optimizer/remove_duplicate_groups.cpp +127 -0
  376. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +4 -0
  377. package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +154 -15
  378. package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +65 -8
  379. package/src/duckdb/src/optimizer/statistics/operator/propagate_order.cpp +1 -1
  380. package/src/duckdb/src/optimizer/statistics_propagator.cpp +7 -5
  381. package/src/duckdb/src/optimizer/topn_optimizer.cpp +20 -10
  382. package/src/duckdb/src/parallel/executor.cpp +15 -0
  383. package/src/duckdb/src/parallel/task_scheduler.cpp +11 -2
  384. package/src/duckdb/src/parser/common_table_expression_info.cpp +2 -0
  385. package/src/duckdb/src/parser/expression/between_expression.cpp +3 -15
  386. package/src/duckdb/src/parser/expression/case_expression.cpp +0 -13
  387. package/src/duckdb/src/parser/expression/cast_expression.cpp +3 -14
  388. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -13
  389. package/src/duckdb/src/parser/expression/columnref_expression.cpp +3 -12
  390. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -13
  391. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +0 -12
  392. package/src/duckdb/src/parser/expression/constant_expression.cpp +3 -11
  393. package/src/duckdb/src/parser/expression/default_expression.cpp +0 -4
  394. package/src/duckdb/src/parser/expression/function_expression.cpp +3 -32
  395. package/src/duckdb/src/parser/expression/lambda_expression.cpp +4 -14
  396. package/src/duckdb/src/parser/expression/operator_expression.cpp +0 -12
  397. package/src/duckdb/src/parser/expression/parameter_expression.cpp +0 -12
  398. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +4 -11
  399. package/src/duckdb/src/parser/expression/star_expression.cpp +0 -19
  400. package/src/duckdb/src/parser/expression/subquery_expression.cpp +0 -18
  401. package/src/duckdb/src/parser/expression/window_expression.cpp +3 -39
  402. package/src/duckdb/src/parser/parsed_expression.cpp +0 -70
  403. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +7 -0
  404. package/src/duckdb/src/parser/parser.cpp +8 -2
  405. package/src/duckdb/src/parser/query_node/cte_node.cpp +58 -0
  406. package/src/duckdb/src/parser/query_node/recursive_cte_node.cpp +0 -19
  407. package/src/duckdb/src/parser/query_node/select_node.cpp +0 -29
  408. package/src/duckdb/src/parser/query_node/set_operation_node.cpp +0 -15
  409. package/src/duckdb/src/parser/query_node.cpp +15 -37
  410. package/src/duckdb/src/parser/result_modifier.cpp +0 -74
  411. package/src/duckdb/src/parser/tableref/basetableref.cpp +0 -19
  412. package/src/duckdb/src/parser/tableref/emptytableref.cpp +0 -4
  413. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +0 -15
  414. package/src/duckdb/src/parser/tableref/joinref.cpp +3 -23
  415. package/src/duckdb/src/parser/tableref/pivotref.cpp +0 -23
  416. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -13
  417. package/src/duckdb/src/parser/tableref/table_function.cpp +0 -15
  418. package/src/duckdb/src/parser/tableref.cpp +0 -44
  419. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +55 -3
  420. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +2 -0
  421. package/src/duckdb/src/parser/transform/expression/transform_multi_assign_reference.cpp +44 -0
  422. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +19 -1
  423. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +13 -0
  424. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +6 -1
  425. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +6 -1
  426. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -2
  427. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +14 -11
  428. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +11 -2
  429. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +6 -1
  430. package/src/duckdb/src/parser/transformer.cpp +15 -0
  431. package/src/duckdb/src/planner/binder/query_node/bind_cte_node.cpp +64 -0
  432. package/src/duckdb/src/planner/binder/query_node/plan_cte_node.cpp +26 -0
  433. package/src/duckdb/src/planner/binder/query_node/plan_recursive_cte_node.cpp +5 -5
  434. package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +4 -4
  435. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +32 -29
  436. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +5 -4
  437. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +11 -2
  438. package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +32 -5
  439. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +116 -49
  440. package/src/duckdb/src/planner/binder/tableref/plan_cteref.cpp +1 -1
  441. package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +64 -26
  442. package/src/duckdb/src/planner/binder/tableref/plan_subqueryref.cpp +3 -3
  443. package/src/duckdb/src/planner/binder.cpp +44 -31
  444. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +1 -1
  445. package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +4 -31
  446. package/src/duckdb/src/planner/expression_binder.cpp +3 -0
  447. package/src/duckdb/src/planner/expression_iterator.cpp +6 -0
  448. package/src/duckdb/src/planner/logical_operator.cpp +5 -0
  449. package/src/duckdb/src/planner/logical_operator_visitor.cpp +2 -0
  450. package/src/duckdb/src/planner/operator/logical_cteref.cpp +3 -1
  451. package/src/duckdb/src/planner/operator/logical_dependent_join.cpp +26 -0
  452. package/src/duckdb/src/planner/operator/logical_get.cpp +9 -4
  453. package/src/duckdb/src/planner/operator/logical_materialized_cte.cpp +21 -0
  454. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +90 -38
  455. package/src/duckdb/src/planner/subquery/has_correlated_expressions.cpp +22 -7
  456. package/src/duckdb/src/planner/subquery/rewrite_correlated_expressions.cpp +65 -7
  457. package/src/duckdb/src/storage/arena_allocator.cpp +1 -2
  458. package/src/duckdb/src/storage/buffer/block_manager.cpp +3 -0
  459. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -0
  460. package/src/duckdb/src/storage/compression/rle.cpp +0 -1
  461. package/src/duckdb/src/storage/data_table.cpp +1 -1
  462. package/src/duckdb/src/storage/local_storage.cpp +3 -3
  463. package/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp +340 -0
  464. package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +122 -0
  465. package/src/duckdb/src/storage/serialization/serialize_result_modifier.cpp +86 -0
  466. package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +166 -0
  467. package/src/duckdb/src/storage/serialization/serialize_types.cpp +127 -0
  468. package/src/duckdb/src/storage/single_file_block_manager.cpp +23 -0
  469. package/src/duckdb/src/storage/statistics/string_stats.cpp +21 -2
  470. package/src/duckdb/src/storage/storage_info.cpp +1 -1
  471. package/src/duckdb/src/storage/table/chunk_info.cpp +17 -0
  472. package/src/duckdb/src/storage/table/row_group.cpp +25 -9
  473. package/src/duckdb/src/storage/table/row_group_collection.cpp +19 -18
  474. package/src/duckdb/third_party/concurrentqueue/concurrentqueue.h +2 -2
  475. package/src/duckdb/third_party/concurrentqueue/lightweightsemaphore.h +76 -0
  476. package/src/duckdb/third_party/fast_float/fast_float/fast_float.h +2 -0
  477. package/src/duckdb/third_party/httplib/httplib.hpp +10 -1
  478. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +9 -0
  479. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +2 -1
  480. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +12487 -12331
  481. package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +6 -6
  482. package/src/duckdb/ub_src_common.cpp +2 -0
  483. package/src/duckdb/ub_src_execution_index_art.cpp +0 -2
  484. package/src/duckdb/ub_src_execution_operator_persistent.cpp +2 -0
  485. package/src/duckdb/ub_src_execution_operator_set.cpp +2 -0
  486. package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
  487. package/src/duckdb/ub_src_function_scalar.cpp +2 -0
  488. package/src/duckdb/ub_src_function_scalar_compressed_materialization.cpp +4 -0
  489. package/src/duckdb/ub_src_function_scalar_list.cpp +2 -0
  490. package/src/duckdb/ub_src_optimizer.cpp +6 -0
  491. package/src/duckdb/ub_src_optimizer_compressed_materialization.cpp +6 -0
  492. package/src/duckdb/ub_src_optimizer_statistics_expression.cpp +0 -2
  493. package/src/duckdb/ub_src_parser_query_node.cpp +2 -0
  494. package/src/duckdb/ub_src_parser_transform_expression.cpp +2 -0
  495. package/src/duckdb/ub_src_planner_binder_query_node.cpp +4 -0
  496. package/src/duckdb/ub_src_planner_operator.cpp +4 -0
  497. package/src/duckdb/ub_src_storage_serialization.cpp +10 -0
  498. package/src/statement.cpp +10 -3
  499. package/test/columns.test.ts +24 -1
  500. package/test/test_all_types.test.ts +234 -0
  501. package/tsconfig.json +1 -0
  502. package/src/duckdb/src/execution/index/art/prefix_segment.cpp +0 -42
  503. package/src/duckdb/src/include/duckdb/execution/index/art/prefix_segment.hpp +0 -40
  504. package/src/duckdb/src/optimizer/statistics/expression/propagate_and_compress.cpp +0 -118
package/binding.gyp CHANGED
@@ -75,8 +75,9 @@
75
75
  "src/duckdb/ub_src_function.cpp",
76
76
  "src/duckdb/ub_src_function_cast.cpp",
77
77
  "src/duckdb/ub_src_function_pragma.cpp",
78
- "src/duckdb/ub_src_function_scalar_generic.cpp",
78
+ "src/duckdb/ub_src_function_scalar_compressed_materialization.cpp",
79
79
  "src/duckdb/ub_src_function_scalar.cpp",
80
+ "src/duckdb/ub_src_function_scalar_generic.cpp",
80
81
  "src/duckdb/ub_src_function_scalar_list.cpp",
81
82
  "src/duckdb/ub_src_function_scalar_operators.cpp",
82
83
  "src/duckdb/ub_src_function_scalar_sequence.cpp",
@@ -94,6 +95,7 @@
94
95
  "src/duckdb/ub_src_main_relation.cpp",
95
96
  "src/duckdb/ub_src_main_settings.cpp",
96
97
  "src/duckdb/ub_src_optimizer.cpp",
98
+ "src/duckdb/ub_src_optimizer_compressed_materialization.cpp",
97
99
  "src/duckdb/ub_src_optimizer_join_order.cpp",
98
100
  "src/duckdb/ub_src_optimizer_matcher.cpp",
99
101
  "src/duckdb/ub_src_optimizer_pullup.cpp",
@@ -130,6 +132,7 @@
130
132
  "src/duckdb/ub_src_storage_checkpoint.cpp",
131
133
  "src/duckdb/ub_src_storage_compression.cpp",
132
134
  "src/duckdb/ub_src_storage_compression_chimp.cpp",
135
+ "src/duckdb/ub_src_storage_serialization.cpp",
133
136
  "src/duckdb/ub_src_storage_statistics.cpp",
134
137
  "src/duckdb/ub_src_storage_table.cpp",
135
138
  "src/duckdb/ub_src_transaction.cpp",
@@ -237,18 +240,18 @@
237
240
  "src/duckdb/third_party/zstd/compress/zstd_lazy.cpp",
238
241
  "src/duckdb/third_party/zstd/compress/zstd_ldm.cpp",
239
242
  "src/duckdb/third_party/zstd/compress/zstd_opt.cpp",
240
- "src/duckdb/extension/icu/./icu-datepart.cpp",
241
- "src/duckdb/extension/icu/./icu-timezone.cpp",
242
- "src/duckdb/extension/icu/./icu-makedate.cpp",
243
- "src/duckdb/extension/icu/./icu-table-range.cpp",
244
- "src/duckdb/extension/icu/./icu-datefunc.cpp",
245
243
  "src/duckdb/extension/icu/./icu-list-range.cpp",
246
- "src/duckdb/extension/icu/./icu-dateadd.cpp",
244
+ "src/duckdb/extension/icu/./icu-table-range.cpp",
247
245
  "src/duckdb/extension/icu/./icu-datesub.cpp",
246
+ "src/duckdb/extension/icu/./icu-dateadd.cpp",
248
247
  "src/duckdb/extension/icu/./icu-timebucket.cpp",
249
- "src/duckdb/extension/icu/./icu-strptime.cpp",
248
+ "src/duckdb/extension/icu/./icu-makedate.cpp",
249
+ "src/duckdb/extension/icu/./icu-timezone.cpp",
250
+ "src/duckdb/extension/icu/./icu-datefunc.cpp",
251
+ "src/duckdb/extension/icu/./icu-datepart.cpp",
250
252
  "src/duckdb/extension/icu/./icu_extension.cpp",
251
253
  "src/duckdb/extension/icu/./icu-datetrunc.cpp",
254
+ "src/duckdb/extension/icu/./icu-strptime.cpp",
252
255
  "src/duckdb/ub_extension_icu_third_party_icu_common.cpp",
253
256
  "src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp",
254
257
  "src/duckdb/extension/icu/third_party/icu/stubdata/stubdata.cpp",
@@ -298,10 +301,10 @@
298
301
  ],
299
302
  "defines": [
300
303
  "NAPI_DISABLE_CPP_EXCEPTIONS=1",
301
- "NAPI_VERSION=5",
302
- "BUILD_PARQUET_EXTENSION",
303
- "BUILD_ICU_EXTENSION",
304
- "BUILD_JSON_EXTENSION"
304
+ "NAPI_VERSION=6",
305
+ "DUCKDB_EXTENSION_PARQUET_LINKED",
306
+ "DUCKDB_EXTENSION_ICU_LINKED",
307
+ "DUCKDB_EXTENSION_JSON_LINKED"
305
308
  ],
306
309
  "cflags_cc": [
307
310
  "-frtti",
package/binding.gyp.in CHANGED
@@ -17,7 +17,7 @@
17
17
  ],
18
18
  "defines": [
19
19
  "NAPI_DISABLE_CPP_EXCEPTIONS=1",
20
- "NAPI_VERSION=5",
20
+ "NAPI_VERSION=6",
21
21
  "${DEFINES}"
22
22
  ],
23
23
  "cflags_cc": [
package/configure.py CHANGED
@@ -20,7 +20,7 @@ scripts_dir = 'scripts'
20
20
  sys.path.append(scripts_dir)
21
21
  import package_build
22
22
 
23
- defines = ['BUILD_{}_EXTENSION'.format(ext.upper()) for ext in extensions]
23
+ defines = ['DUCKDB_EXTENSION_{}_LINKED'.format(ext.upper()) for ext in extensions]
24
24
 
25
25
  if os.environ.get('DUCKDB_NODE_BUILD_CACHE') == '1' and os.path.isfile(cache_file):
26
26
  with open(cache_file, 'rb') as f:
@@ -0,0 +1,10 @@
1
+ ################################################################################
2
+ # NodeJS DuckDB extension config
3
+ ################################################################################
4
+ #
5
+ # This is the default extension configuration for NodeJS builds. Basically it means that all these extensions are
6
+ # "baked in" to the NodeJS binaries Note that the configuration here is only when building Node using the main
7
+ # CMakeLists.txt file with the `BUILD_R` variable.
8
+ # TODO: unify this by making setup.py also use this configuration, making this the config for all Node builds
9
+ duckdb_extension_load(json)
10
+ duckdb_extension_load(icu)
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "duckdb",
3
3
  "main": "./lib/duckdb.js",
4
4
  "types": "./lib/duckdb.d.ts",
5
- "version": "0.8.2-dev161.0",
5
+ "version": "0.8.2-dev1764.0",
6
6
  "description": "DuckDB node.js API",
7
7
  "gypfile": true,
8
8
  "dependencies": {
@@ -198,7 +198,7 @@ struct ICUDateAdd : public ICUDateFunc {
198
198
  D_ASSERT(args.ColumnCount() == 1);
199
199
 
200
200
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
201
- auto &info = (BindData &)*func_expr.bind_info;
201
+ auto &info = func_expr.bind_info->Cast<BindData>();
202
202
  CalendarPtr calendar(info.calendar->clone());
203
203
 
204
204
  auto end_date = Timestamp::GetCurrentTimestamp();
@@ -218,7 +218,7 @@ struct ICUDateAdd : public ICUDateFunc {
218
218
  D_ASSERT(args.ColumnCount() == 2);
219
219
 
220
220
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
221
- auto &info = (BindData &)*func_expr.bind_info;
221
+ auto &info = func_expr.bind_info->Cast<BindData>();
222
222
  CalendarPtr calendar(info.calendar->clone());
223
223
 
224
224
  BinaryExecutor::Execute<TA, TB, TR>(args.data[0], args.data[1], result, args.size(), [&](TA left, TB right) {
@@ -37,7 +37,7 @@ ICUDateFunc::BindData::BindData(ClientContext &context) {
37
37
  }
38
38
 
39
39
  bool ICUDateFunc::BindData::Equals(const FunctionData &other_p) const {
40
- auto &other = (const ICUDateFunc::BindData &)other_p;
40
+ auto &other = other_p.Cast<const BindData>();
41
41
  return *calendar == *other.calendar;
42
42
  }
43
43
 
@@ -271,7 +271,7 @@ struct ICUDatePart : public ICUDateFunc {
271
271
  auto &date_arg = args.data[1];
272
272
 
273
273
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
274
- auto &info = (BIND_TYPE &)*func_expr.bind_info;
274
+ auto &info = func_expr.bind_info->Cast<BIND_TYPE>();
275
275
  CalendarPtr calendar_ptr(info.calendar->clone());
276
276
  auto calendar = calendar_ptr.get();
277
277
 
@@ -293,7 +293,7 @@ struct ICUDatePart : public ICUDateFunc {
293
293
  static void StructFunction(DataChunk &args, ExpressionState &state, Vector &result) {
294
294
  using BIND_TYPE = BindAdapterData<int64_t>;
295
295
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
296
- auto &info = (BIND_TYPE &)*func_expr.bind_info;
296
+ auto &info = func_expr.bind_info->Cast<BIND_TYPE>();
297
297
  CalendarPtr calendar_ptr(info.calendar->clone());
298
298
  auto calendar = calendar_ptr.get();
299
299
 
@@ -96,7 +96,7 @@ struct ICUCalendarSub : public ICUDateFunc {
96
96
  auto &enddate_arg = args.data[2];
97
97
 
98
98
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
99
- auto &info = (BindData &)*func_expr.bind_info;
99
+ auto &info = func_expr.bind_info->Cast<BindData>();
100
100
  CalendarPtr calendar(info.calendar->clone());
101
101
 
102
102
  if (part_arg.GetVectorType() == VectorType::CONSTANT_VECTOR) {
@@ -218,7 +218,7 @@ struct ICUCalendarDiff : public ICUDateFunc {
218
218
  auto &enddate_arg = args.data[2];
219
219
 
220
220
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
221
- auto &info = (BindData &)*func_expr.bind_info;
221
+ auto &info = func_expr.bind_info->Cast<BindData>();
222
222
  CalendarPtr calendar_ptr(info.calendar->clone());
223
223
  auto calendar = calendar_ptr.get();
224
224
 
@@ -99,7 +99,7 @@ struct ICUDateTrunc : public ICUDateFunc {
99
99
  auto &date_arg = args.data[1];
100
100
 
101
101
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
102
- auto &info = (BindData &)*func_expr.bind_info;
102
+ auto &info = func_expr.bind_info->Cast<BindData>();
103
103
  CalendarPtr calendar(info.calendar->clone());
104
104
 
105
105
  if (part_arg.GetVectorType() == VectorType::CONSTANT_VECTOR) {
@@ -128,7 +128,7 @@ struct ICUListRange : public ICUDateFunc {
128
128
  D_ASSERT(args.ColumnCount() == 3);
129
129
 
130
130
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
131
- auto &bind_info = (BindData &)*func_expr.bind_info;
131
+ auto &bind_info = func_expr.bind_info->Cast<BindData>();
132
132
  CalendarPtr calendar_ptr(bind_info.calendar->clone());
133
133
  auto calendar = calendar_ptr.get();
134
134
 
@@ -85,6 +85,12 @@ struct ICUMakeTimestampTZFunc : public ICUDateFunc {
85
85
  return GetTime(calendar, micros);
86
86
  }
87
87
 
88
+ template <typename T>
89
+ static void FromMicros(DataChunk &input, ExpressionState &state, Vector &result) {
90
+ UnaryExecutor::Execute<T, timestamp_t>(input.data[0], result, input.size(),
91
+ [&](T micros) { return timestamp_t(micros); });
92
+ }
93
+
88
94
  template <typename T>
89
95
  static void Execute(DataChunk &input, ExpressionState &state, Vector &result) {
90
96
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
@@ -138,6 +144,7 @@ struct ICUMakeTimestampTZFunc : public ICUDateFunc {
138
144
  ScalarFunctionSet set(name);
139
145
  set.AddFunction(GetSenaryFunction<int64_t>(LogicalType::BIGINT));
140
146
  set.AddFunction(GetSeptenaryFunction<int64_t>(LogicalType::BIGINT));
147
+ set.AddFunction(ScalarFunction({LogicalType::BIGINT}, LogicalType::TIMESTAMP_TZ, FromMicros<int64_t>));
141
148
 
142
149
  CreateScalarFunctionInfo func_info(set);
143
150
  auto &catalog = Catalog::GetSystemCatalog(context);
@@ -249,8 +249,8 @@ struct ICUStrptime : public ICUDateFunc {
249
249
 
250
250
  static bool CastFromVarchar(Vector &source, Vector &result, idx_t count, CastParameters &parameters) {
251
251
  auto &cast_data = parameters.cast_data->Cast<CastData>();
252
- auto info = (BindData *)cast_data.info.get();
253
- CalendarPtr cal(info->calendar->clone());
252
+ auto &info = cast_data.info->Cast<BindData>();
253
+ CalendarPtr cal(info.calendar->clone());
254
254
 
255
255
  UnaryExecutor::ExecuteWithNulls<string_t, timestamp_t>(
256
256
  source, result, count, [&](string_t input, ValidityMask &mask, idx_t idx) {
@@ -476,8 +476,8 @@ struct ICUStrftime : public ICUDateFunc {
476
476
 
477
477
  static bool CastToVarchar(Vector &source, Vector &result, idx_t count, CastParameters &parameters) {
478
478
  auto &cast_data = parameters.cast_data->Cast<CastData>();
479
- auto info = (BindData *)cast_data.info.get();
480
- CalendarPtr calendar(info->calendar->clone());
479
+ auto &info = cast_data.info->Cast<BindData>();
480
+ CalendarPtr calendar(info.calendar->clone());
481
481
 
482
482
  UnaryExecutor::ExecuteWithNulls<timestamp_t, string_t>(source, result, count,
483
483
  [&](timestamp_t input, ValidityMask &mask, idx_t idx) {
@@ -55,7 +55,7 @@ struct ICUTableRange {
55
55
  bool greater_than_check;
56
56
 
57
57
  bool Equals(const FunctionData &other_p) const override {
58
- auto &other = (const BindData &)other_p;
58
+ auto &other = other_p.Cast<const BindData>();
59
59
  return other.start == start && other.end == end && other.increment == increment &&
60
60
  other.inclusive_bound == inclusive_bound && other.greater_than_check == greater_than_check &&
61
61
  *calendar == *other.calendar;
@@ -65,7 +65,7 @@ struct ICUTableRange {
65
65
  return make_uniq<BindData>(*this);
66
66
  }
67
67
 
68
- bool Finished(timestamp_t current_value) {
68
+ bool Finished(timestamp_t current_value) const {
69
69
  if (greater_than_check) {
70
70
  if (inclusive_bound) {
71
71
  return current_value > end;
@@ -139,15 +139,15 @@ struct ICUTableRange {
139
139
  };
140
140
 
141
141
  static unique_ptr<GlobalTableFunctionState> Init(ClientContext &context, TableFunctionInitInput &input) {
142
- auto &bind_data = (BindData &)*input.bind_data;
142
+ auto &bind_data = input.bind_data->Cast<BindData>();
143
143
  return make_uniq<State>(bind_data.start);
144
144
  }
145
145
 
146
146
  static void ICUTableRangeFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
147
- auto &bind_data = (BindData &)*data_p.bind_data;
147
+ auto &bind_data = data_p.bind_data->Cast<BindData>();
148
148
  CalendarPtr calendar_ptr(bind_data.calendar->clone());
149
149
  auto calendar = calendar_ptr.get();
150
- auto &state = (State &)*data_p.global_state;
150
+ auto &state = data_p.global_state->Cast<State>();
151
151
  if (state.finished) {
152
152
  return;
153
153
  }
@@ -75,8 +75,8 @@ struct ICUTimeBucket : public ICUDateFunc {
75
75
 
76
76
  static inline timestamp_t WidthConvertibleToDaysCommon(int32_t bucket_width_days, const timestamp_t ts,
77
77
  const timestamp_t origin, icu::Calendar *calendar) {
78
- static part_trunc_t trunc_days = TruncationFactory(DatePartSpecifier::DAY);
79
- static part_sub_t sub_days = SubtractFactory(DatePartSpecifier::DAY);
78
+ const auto trunc_days = TruncationFactory(DatePartSpecifier::DAY);
79
+ const auto sub_days = SubtractFactory(DatePartSpecifier::DAY);
80
80
 
81
81
  uint64_t tmp_micros = SetTime(calendar, ts);
82
82
  trunc_days(calendar, tmp_micros);
@@ -97,8 +97,8 @@ struct ICUTimeBucket : public ICUDateFunc {
97
97
 
98
98
  static inline timestamp_t WidthConvertibleToMonthsCommon(int32_t bucket_width_months, const timestamp_t ts,
99
99
  const timestamp_t origin, icu::Calendar *calendar) {
100
- static part_trunc_t trunc_months = TruncationFactory(DatePartSpecifier::MONTH);
101
- static part_sub_t sub_months = SubtractFactory(DatePartSpecifier::MONTH);
100
+ const auto trunc_months = TruncationFactory(DatePartSpecifier::MONTH);
101
+ const auto sub_months = SubtractFactory(DatePartSpecifier::MONTH);
102
102
 
103
103
  uint64_t tmp_micros = SetTime(calendar, ts);
104
104
  trunc_months(calendar, tmp_micros);
@@ -126,7 +126,7 @@ struct ICUTimeBucket : public ICUDateFunc {
126
126
  D_ASSERT(args.ColumnCount() == 2);
127
127
 
128
128
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
129
- auto &info = (BindData &)*func_expr.bind_info;
129
+ auto &info = func_expr.bind_info->Cast<BindData>();
130
130
  CalendarPtr calendar(info.calendar->clone());
131
131
 
132
132
  BinaryExecutor::Execute<TA, TB, TR>(args.data[0], args.data[1], result, args.size(), [&](TA left, TB right) {
@@ -139,7 +139,7 @@ struct ICUTimeBucket : public ICUDateFunc {
139
139
  D_ASSERT(args.ColumnCount() == 3);
140
140
 
141
141
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
142
- auto &info = (BindData &)*func_expr.bind_info;
142
+ auto &info = func_expr.bind_info->Cast<BindData>();
143
143
  CalendarPtr calendar(info.calendar->clone());
144
144
 
145
145
  TernaryExecutor::Execute<TA, TB, TC, TR>(
@@ -153,7 +153,7 @@ struct ICUTimeBucket : public ICUDateFunc {
153
153
  if (!Value::IsFinite(ts)) {
154
154
  return ts;
155
155
  }
156
- static timestamp_t origin = Timestamp::FromEpochMicroSeconds(DEFAULT_ORIGIN_MICROS_1);
156
+ const auto origin = Timestamp::FromEpochMicroSeconds(DEFAULT_ORIGIN_MICROS_1);
157
157
  return WidthConvertibleToMicrosCommon(bucket_width.micros, ts, origin, calendar);
158
158
  }
159
159
  };
@@ -163,7 +163,7 @@ struct ICUTimeBucket : public ICUDateFunc {
163
163
  if (!Value::IsFinite(ts)) {
164
164
  return ts;
165
165
  }
166
- static timestamp_t origin = Timestamp::FromEpochMicroSeconds(DEFAULT_ORIGIN_MICROS_1);
166
+ const auto origin = Timestamp::FromEpochMicroSeconds(DEFAULT_ORIGIN_MICROS_1);
167
167
  return WidthConvertibleToDaysCommon(bucket_width.days, ts, origin, calendar);
168
168
  }
169
169
  };
@@ -173,7 +173,7 @@ struct ICUTimeBucket : public ICUDateFunc {
173
173
  if (!Value::IsFinite(ts)) {
174
174
  return ts;
175
175
  }
176
- static timestamp_t origin = Timestamp::FromEpochMicroSeconds(DEFAULT_ORIGIN_MICROS_2);
176
+ const auto origin = Timestamp::FromEpochMicroSeconds(DEFAULT_ORIGIN_MICROS_2);
177
177
  return WidthConvertibleToMonthsCommon(bucket_width.months, ts, origin, calendar);
178
178
  }
179
179
  };
@@ -200,7 +200,7 @@ struct ICUTimeBucket : public ICUDateFunc {
200
200
  if (!Value::IsFinite(ts)) {
201
201
  return ts;
202
202
  }
203
- static timestamp_t origin = Timestamp::FromEpochMicroSeconds(DEFAULT_ORIGIN_MICROS_1);
203
+ const auto origin = Timestamp::FromEpochMicroSeconds(DEFAULT_ORIGIN_MICROS_1);
204
204
  return Add(calendar,
205
205
  WidthConvertibleToMicrosCommon(bucket_width.micros, Sub(calendar, ts, offset), origin, calendar),
206
206
  offset);
@@ -213,7 +213,7 @@ struct ICUTimeBucket : public ICUDateFunc {
213
213
  if (!Value::IsFinite(ts)) {
214
214
  return ts;
215
215
  }
216
- static timestamp_t origin = Timestamp::FromEpochMicroSeconds(DEFAULT_ORIGIN_MICROS_1);
216
+ const auto origin = Timestamp::FromEpochMicroSeconds(DEFAULT_ORIGIN_MICROS_1);
217
217
  return Add(calendar,
218
218
  WidthConvertibleToDaysCommon(bucket_width.days, Sub(calendar, ts, offset), origin, calendar),
219
219
  offset);
@@ -226,7 +226,7 @@ struct ICUTimeBucket : public ICUDateFunc {
226
226
  if (!Value::IsFinite(ts)) {
227
227
  return ts;
228
228
  }
229
- static timestamp_t origin = Timestamp::FromEpochMicroSeconds(DEFAULT_ORIGIN_MICROS_2);
229
+ const auto origin = Timestamp::FromEpochMicroSeconds(DEFAULT_ORIGIN_MICROS_2);
230
230
  return Add(calendar,
231
231
  WidthConvertibleToMonthsCommon(bucket_width.months, Sub(calendar, ts, offset), origin, calendar),
232
232
  offset);
@@ -358,7 +358,7 @@ struct ICUTimeBucket : public ICUDateFunc {
358
358
  D_ASSERT(args.ColumnCount() == 2);
359
359
 
360
360
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
361
- auto &info = (BindData &)*func_expr.bind_info;
361
+ auto &info = func_expr.bind_info->Cast<BindData>();
362
362
  CalendarPtr calendar_ptr(info.calendar->clone());
363
363
  auto calendar = calendar_ptr.get();
364
364
  SetTimeZone(calendar, string_t("UTC"));
@@ -414,7 +414,7 @@ struct ICUTimeBucket : public ICUDateFunc {
414
414
  D_ASSERT(args.ColumnCount() == 3);
415
415
 
416
416
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
417
- auto &info = (BindData &)*func_expr.bind_info;
417
+ auto &info = func_expr.bind_info->Cast<BindData>();
418
418
  CalendarPtr calendar_ptr(info.calendar->clone());
419
419
  auto calendar = calendar_ptr.get();
420
420
  SetTimeZone(calendar, string_t("UTC"));
@@ -479,7 +479,7 @@ struct ICUTimeBucket : public ICUDateFunc {
479
479
  D_ASSERT(args.ColumnCount() == 3);
480
480
 
481
481
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
482
- auto &info = (BindData &)*func_expr.bind_info;
482
+ auto &info = func_expr.bind_info->Cast<BindData>();
483
483
  CalendarPtr calendar_ptr(info.calendar->clone());
484
484
  auto calendar = calendar_ptr.get();
485
485
  SetTimeZone(calendar, string_t("UTC"));
@@ -547,7 +547,7 @@ struct ICUTimeBucket : public ICUDateFunc {
547
547
  D_ASSERT(args.ColumnCount() == 3);
548
548
 
549
549
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
550
- auto &info = (BindData &)*func_expr.bind_info;
550
+ auto &info = func_expr.bind_info->Cast<BindData>();
551
551
  CalendarPtr calendar_ptr(info.calendar->clone());
552
552
  auto calendar = calendar_ptr.get();
553
553
 
@@ -40,7 +40,7 @@ static duckdb::unique_ptr<GlobalTableFunctionState> ICUTimeZoneInit(ClientContex
40
40
  }
41
41
 
42
42
  static void ICUTimeZoneFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
43
- auto &data = (ICUTimeZoneData &)*data_p.global_state;
43
+ auto &data = data_p.global_state->Cast<ICUTimeZoneData>();
44
44
  idx_t index = 0;
45
45
  while (index < STANDARD_VECTOR_SIZE) {
46
46
  UErrorCode status = U_ZERO_ERROR;
@@ -125,8 +125,8 @@ struct ICUFromNaiveTimestamp : public ICUDateFunc {
125
125
 
126
126
  static bool CastFromNaive(Vector &source, Vector &result, idx_t count, CastParameters &parameters) {
127
127
  auto &cast_data = parameters.cast_data->Cast<CastData>();
128
- auto info = (BindData *)cast_data.info.get();
129
- CalendarPtr calendar(info->calendar->clone());
128
+ auto &info = cast_data.info->Cast<BindData>();
129
+ CalendarPtr calendar(info.calendar->clone());
130
130
 
131
131
  UnaryExecutor::Execute<timestamp_t, timestamp_t>(
132
132
  source, result, count, [&](timestamp_t input) { return Operation(calendar.get(), input); });
@@ -188,8 +188,8 @@ struct ICUToNaiveTimestamp : public ICUDateFunc {
188
188
 
189
189
  static bool CastToNaive(Vector &source, Vector &result, idx_t count, CastParameters &parameters) {
190
190
  auto &cast_data = parameters.cast_data->Cast<CastData>();
191
- auto info = (BindData *)cast_data.info.get();
192
- CalendarPtr calendar(info->calendar->clone());
191
+ auto &info = cast_data.info->Cast<BindData>();
192
+ CalendarPtr calendar(info.calendar->clone());
193
193
 
194
194
  UnaryExecutor::Execute<timestamp_t, timestamp_t>(
195
195
  source, result, count, [&](timestamp_t input) { return Operation(calendar.get(), input); });
@@ -225,7 +225,7 @@ struct ICULocalTimestampFunc : public ICUDateFunc {
225
225
  }
226
226
 
227
227
  bool Equals(const FunctionData &other_p) const override {
228
- auto &other = (const BindDataNow &)other_p;
228
+ auto &other = other_p.Cast<const BindDataNow>();
229
229
  if (now != other.now) {
230
230
  return false;
231
231
  }
@@ -247,7 +247,7 @@ struct ICULocalTimestampFunc : public ICUDateFunc {
247
247
 
248
248
  static timestamp_t GetLocalTimestamp(ExpressionState &state) {
249
249
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
250
- auto &info = (BindDataNow &)*func_expr.bind_info;
250
+ auto &info = func_expr.bind_info->Cast<BindDataNow>();
251
251
  CalendarPtr calendar_ptr(info.calendar->clone());
252
252
  auto calendar = calendar_ptr.get();
253
253
 
@@ -296,7 +296,7 @@ struct ICUTimeZoneFunc : public ICUDateFunc {
296
296
  template <typename OP>
297
297
  static void Execute(DataChunk &input, ExpressionState &state, Vector &result) {
298
298
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
299
- auto &info = (BindData &)*func_expr.bind_info;
299
+ auto &info = func_expr.bind_info->Cast<BindData>();
300
300
  CalendarPtr calendar_ptr(info.calendar->clone());
301
301
  auto calendar = calendar_ptr.get();
302
302
 
@@ -67,13 +67,13 @@ static int32_t ICUGetSortKey(icu::Collator &collator, string_t input, duckdb::un
67
67
  int32_t &buffer_size) {
68
68
  icu::UnicodeString unicode_string =
69
69
  icu::UnicodeString::fromUTF8(icu::StringPiece(input.GetData(), input.GetSize()));
70
- int32_t string_size = collator.getSortKey(unicode_string, (uint8_t *)buffer.get(), buffer_size);
70
+ int32_t string_size = collator.getSortKey(unicode_string, reinterpret_cast<uint8_t *>(buffer.get()), buffer_size);
71
71
  if (string_size > buffer_size) {
72
72
  // have to resize the buffer
73
73
  buffer_size = string_size;
74
74
  buffer = duckdb::unique_ptr<char[]>(new char[buffer_size]);
75
75
 
76
- string_size = collator.getSortKey(unicode_string, (uint8_t *)buffer.get(), buffer_size);
76
+ string_size = collator.getSortKey(unicode_string, reinterpret_cast<uint8_t *>(buffer.get()), buffer_size);
77
77
  }
78
78
  return string_size;
79
79
  }
@@ -185,7 +185,7 @@ static duckdb::unique_ptr<GlobalTableFunctionState> ICUCalendarInit(ClientContex
185
185
  }
186
186
 
187
187
  static void ICUCalendarFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
188
- auto &data = (ICUCalendarData &)*data_p.global_state;
188
+ auto &data = data_p.global_state->Cast<ICUCalendarData>();
189
189
  idx_t index = 0;
190
190
  while (index < STANDARD_VECTOR_SIZE) {
191
191
  if (!data.calendars) {