duckdb 0.8.1-dev65.0 → 0.8.1

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 (672) hide show
  1. package/binding.gyp +8 -8
  2. package/package.json +3 -1
  3. package/src/duckdb/extension/icu/icu-datepart.cpp +2 -2
  4. package/src/duckdb/extension/icu/icu-extension.cpp +1 -1
  5. package/src/duckdb/extension/icu/icu-makedate.cpp +5 -4
  6. package/src/duckdb/extension/icu/icu-strptime.cpp +1 -1
  7. package/src/duckdb/extension/icu/third_party/icu/i18n/nfsubs.cpp +0 -2
  8. package/src/duckdb/extension/json/buffered_json_reader.cpp +23 -14
  9. package/src/duckdb/extension/json/include/buffered_json_reader.hpp +6 -6
  10. package/src/duckdb/extension/json/include/json_common.hpp +13 -3
  11. package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
  12. package/src/duckdb/extension/json/include/json_scan.hpp +5 -2
  13. package/src/duckdb/extension/json/json_functions/json_contains.cpp +5 -0
  14. package/src/duckdb/extension/json/json_functions/json_create.cpp +16 -16
  15. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +3 -3
  16. package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +2 -2
  17. package/src/duckdb/extension/json/json_functions/json_structure.cpp +5 -3
  18. package/src/duckdb/extension/json/json_functions/json_transform.cpp +12 -12
  19. package/src/duckdb/extension/json/json_functions/read_json.cpp +2 -1
  20. package/src/duckdb/extension/json/json_functions.cpp +6 -3
  21. package/src/duckdb/extension/json/json_scan.cpp +43 -27
  22. package/src/duckdb/extension/parquet/column_reader.cpp +57 -52
  23. package/src/duckdb/extension/parquet/column_writer.cpp +57 -45
  24. package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +1 -1
  25. package/src/duckdb/extension/parquet/include/column_reader.hpp +5 -4
  26. package/src/duckdb/extension/parquet/include/column_writer.hpp +24 -0
  27. package/src/duckdb/extension/parquet/include/decode_utils.hpp +6 -0
  28. package/src/duckdb/extension/parquet/include/list_column_reader.hpp +1 -1
  29. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
  30. package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
  31. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
  32. package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
  33. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
  34. package/src/duckdb/extension/parquet/parquet-extension.cpp +27 -2
  35. package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
  36. package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
  37. package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
  38. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
  39. package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
  40. package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
  41. package/src/duckdb/src/catalog/catalog.cpp +5 -17
  42. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +7 -1
  43. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +121 -0
  44. package/src/duckdb/src/catalog/catalog_search_path.cpp +49 -12
  45. package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
  46. package/src/duckdb/src/catalog/default/default_types.cpp +9 -84
  47. package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
  48. package/src/duckdb/src/common/adbc/adbc.cpp +118 -12
  49. package/src/duckdb/src/common/adbc/driver_manager.cpp +0 -20
  50. package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
  51. package/src/duckdb/src/common/arrow/arrow_converter.cpp +11 -12
  52. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +11 -10
  53. package/src/duckdb/src/common/checksum.cpp +1 -1
  54. package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
  55. package/src/duckdb/src/common/crypto/md5.cpp +9 -9
  56. package/src/duckdb/src/common/exception.cpp +4 -1
  57. package/src/duckdb/src/common/exception_format_value.cpp +24 -15
  58. package/src/duckdb/src/common/field_writer.cpp +1 -1
  59. package/src/duckdb/src/common/fsst.cpp +11 -6
  60. package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
  61. package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
  62. package/src/duckdb/src/common/local_file_system.cpp +11 -11
  63. package/src/duckdb/src/common/multi_file_reader.cpp +3 -0
  64. package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
  65. package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
  66. package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
  67. package/src/duckdb/src/common/random_engine.cpp +1 -1
  68. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
  69. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
  70. package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
  71. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
  72. package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
  73. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
  74. package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
  75. package/src/duckdb/src/common/serializer.cpp +1 -1
  76. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  77. package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
  78. package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
  79. package/src/duckdb/src/common/types/bit.cpp +5 -5
  80. package/src/duckdb/src/common/types/blob.cpp +8 -8
  81. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
  82. package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
  83. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  84. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  85. package/src/duckdb/src/common/types/hash.cpp +2 -2
  86. package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
  87. package/src/duckdb/src/common/types/list_segment.cpp +77 -49
  88. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
  89. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +5 -4
  90. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
  91. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +61 -24
  92. package/src/duckdb/src/common/types/string_heap.cpp +1 -1
  93. package/src/duckdb/src/common/types/time.cpp +2 -8
  94. package/src/duckdb/src/common/types/timestamp.cpp +37 -1
  95. package/src/duckdb/src/common/types/value.cpp +3 -2
  96. package/src/duckdb/src/common/types/vector.cpp +98 -101
  97. package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
  98. package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
  99. package/src/duckdb/src/common/types.cpp +48 -33
  100. package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
  101. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
  102. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
  103. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
  104. package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
  105. package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
  106. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +33 -36
  107. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +53 -66
  108. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
  109. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +44 -44
  110. package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
  111. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
  112. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
  113. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +91 -103
  114. package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
  115. package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
  116. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +37 -38
  117. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
  118. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +49 -85
  119. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
  120. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +116 -134
  121. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +63 -100
  122. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
  123. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +22 -23
  124. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
  125. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
  126. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
  127. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
  128. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
  129. package/src/duckdb/src/core_functions/function_list.cpp +1 -0
  130. package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
  131. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +46 -46
  132. package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +3 -0
  133. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
  134. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
  135. package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
  136. package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
  137. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +14 -0
  138. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +4 -4
  139. package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
  140. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +26 -9
  141. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +7 -9
  142. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
  143. package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
  144. package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
  145. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +4 -1
  146. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
  147. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +6 -6
  148. package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
  149. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
  150. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
  151. package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
  152. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  153. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
  154. package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
  155. package/src/duckdb/src/execution/expression_executor.cpp +28 -28
  156. package/src/duckdb/src/execution/index/art/art.cpp +110 -39
  157. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +23 -5
  158. package/src/duckdb/src/execution/index/art/leaf.cpp +11 -11
  159. package/src/duckdb/src/execution/index/art/leaf_segment.cpp +10 -0
  160. package/src/duckdb/src/execution/index/art/node.cpp +48 -35
  161. package/src/duckdb/src/execution/index/art/node16.cpp +3 -0
  162. package/src/duckdb/src/execution/index/art/node256.cpp +1 -0
  163. package/src/duckdb/src/execution/index/art/node4.cpp +3 -0
  164. package/src/duckdb/src/execution/index/art/node48.cpp +2 -0
  165. package/src/duckdb/src/execution/index/art/prefix.cpp +2 -0
  166. package/src/duckdb/src/execution/join_hashtable.cpp +6 -4
  167. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
  168. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
  169. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  170. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
  171. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
  172. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
  173. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +26 -9
  174. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
  175. package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +5 -2
  176. package/src/duckdb/src/execution/operator/helper/physical_set.cpp +5 -1
  177. package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
  178. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
  179. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  180. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
  181. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +3 -6
  182. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
  183. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
  184. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
  185. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
  186. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
  187. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
  188. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
  189. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  190. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
  191. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
  192. package/src/duckdb/src/execution/operator/projection/physical_tableinout_function.cpp +1 -0
  193. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +10 -5
  194. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
  195. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
  196. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
  197. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +0 -1
  198. package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +29 -3
  199. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  200. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
  201. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  202. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
  203. package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
  204. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
  205. package/src/duckdb/src/execution/reservoir_sample.cpp +20 -6
  206. package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
  207. package/src/duckdb/src/function/aggregate/distributive/count.cpp +159 -21
  208. package/src/duckdb/src/function/aggregate/distributive/first.cpp +68 -75
  209. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +14 -14
  210. package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
  211. package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
  212. package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
  213. package/src/duckdb/src/function/cast/list_casts.cpp +2 -4
  214. package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
  215. package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
  216. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
  217. package/src/duckdb/src/function/pragma/pragma_queries.cpp +33 -23
  218. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
  219. package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
  220. package/src/duckdb/src/function/scalar/list/list_extract.cpp +4 -4
  221. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +3 -4
  222. package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
  223. package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
  224. package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
  225. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
  226. package/src/duckdb/src/function/scalar/string/regexp/regexp_util.cpp +6 -2
  227. package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
  228. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
  229. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
  230. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +27 -25
  231. package/src/duckdb/src/function/scalar_function.cpp +3 -3
  232. package/src/duckdb/src/function/table/arrow.cpp +6 -6
  233. package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
  234. package/src/duckdb/src/function/table/checkpoint.cpp +4 -1
  235. package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
  236. package/src/duckdb/src/function/table/glob.cpp +1 -1
  237. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
  238. package/src/duckdb/src/function/table/range.cpp +4 -4
  239. package/src/duckdb/src/function/table/read_csv.cpp +19 -21
  240. package/src/duckdb/src/function/table/repeat.cpp +5 -2
  241. package/src/duckdb/src/function/table/repeat_row.cpp +10 -3
  242. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
  243. package/src/duckdb/src/function/table/system/pragma_storage_info.cpp +4 -4
  244. package/src/duckdb/src/function/table/system/test_vector_types.cpp +82 -26
  245. package/src/duckdb/src/function/table/table_scan.cpp +4 -4
  246. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  247. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  248. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -5
  249. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -0
  250. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +11 -1
  251. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
  252. package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +8 -2
  253. package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +97 -0
  254. package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
  255. package/src/duckdb/src/include/duckdb/common/arrow/arrow_appender.hpp +1 -1
  256. package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
  257. package/src/duckdb/src/include/duckdb/common/arrow/arrow_converter.hpp +2 -3
  258. package/src/duckdb/src/include/duckdb/common/arrow/arrow_options.hpp +8 -1
  259. package/src/duckdb/src/include/duckdb/common/arrow/result_arrow_wrapper.hpp +0 -1
  260. package/src/duckdb/src/include/duckdb/common/bit_utils.hpp +16 -22
  261. package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
  262. package/src/duckdb/src/include/duckdb/common/exception.hpp +5 -2
  263. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
  264. package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
  265. package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
  266. package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
  267. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
  268. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
  269. package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
  270. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
  271. package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
  272. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
  273. package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
  274. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
  275. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
  276. package/src/duckdb/src/include/duckdb/common/types/time.hpp +2 -0
  277. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +4 -14
  278. package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
  279. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
  280. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
  281. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +112 -76
  282. package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
  283. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
  284. package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
  285. package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
  286. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
  287. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
  288. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
  289. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
  290. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
  291. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
  292. package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +9 -0
  293. package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +2 -6
  294. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +16 -36
  295. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
  296. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +13 -7
  297. package/src/duckdb/src/include/duckdb/execution/index/art/fixed_size_allocator.hpp +3 -0
  298. package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +1 -1
  299. package/src/duckdb/src/include/duckdb/execution/index/art/leaf_segment.hpp +2 -0
  300. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +13 -3
  301. package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +1 -0
  302. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
  303. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
  304. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
  305. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
  306. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +9 -30
  307. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
  308. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
  309. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
  310. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
  311. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
  312. package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
  313. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +4 -2
  314. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
  315. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
  316. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +1 -1
  317. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +4 -3
  318. package/src/duckdb/src/include/duckdb/function/table_function.hpp +9 -8
  319. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +4 -1
  320. package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +3 -1
  321. package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
  322. package/src/duckdb/src/include/duckdb/main/config.hpp +5 -0
  323. package/src/duckdb/src/include/duckdb/main/database_manager.hpp +1 -0
  324. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +142 -136
  325. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  326. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
  327. package/src/duckdb/src/include/duckdb/main/query_result.hpp +23 -0
  328. package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
  329. package/src/duckdb/src/include/duckdb/main/settings.hpp +19 -0
  330. package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
  331. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
  332. package/src/duckdb/src/include/duckdb/optimizer/unnest_rewriter.hpp +4 -0
  333. package/src/duckdb/src/include/duckdb/parallel/meta_pipeline.hpp +12 -3
  334. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
  335. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
  336. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
  337. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
  338. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  339. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
  340. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
  341. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
  342. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
  343. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  344. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
  345. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
  346. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
  347. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
  348. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
  349. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  350. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  351. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  352. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
  353. package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
  354. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
  355. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
  356. package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
  357. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  358. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
  359. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
  360. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
  361. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
  362. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -2
  363. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
  364. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  365. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +3 -3
  366. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
  367. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
  368. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
  369. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +106 -92
  370. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -2
  371. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
  372. package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
  373. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +37 -1
  374. package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
  375. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
  376. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
  377. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
  378. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
  379. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
  380. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
  381. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
  382. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
  383. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
  384. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
  385. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
  386. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
  387. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
  388. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
  389. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
  390. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
  391. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
  392. package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
  393. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
  394. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
  395. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
  396. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
  397. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +7 -2
  398. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +6 -2
  399. package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +4 -0
  400. package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +5 -1
  401. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +5 -1
  402. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
  403. package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +6 -2
  404. package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +4 -0
  405. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
  406. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
  407. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  408. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/byte_reader.hpp +4 -0
  409. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
  410. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
  411. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
  412. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
  413. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +1 -1
  414. package/src/duckdb/src/include/duckdb/storage/in_memory_block_manager.hpp +13 -13
  415. package/src/duckdb/src/include/duckdb/storage/index.hpp +6 -4
  416. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  417. package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +0 -6
  418. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
  419. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  420. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
  421. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
  422. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +1 -1
  423. package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +2 -1
  424. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +2 -2
  425. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +2 -1
  426. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
  427. package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +2 -1
  428. package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +2 -1
  429. package/src/duckdb/src/include/duckdb/storage/table_storage_info.hpp +0 -2
  430. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
  431. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
  432. package/src/duckdb/src/main/attached_database.cpp +8 -0
  433. package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
  434. package/src/duckdb/src/main/capi/arrow-c.cpp +13 -13
  435. package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
  436. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  437. package/src/duckdb/src/main/capi/config-c.cpp +3 -6
  438. package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
  439. package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
  440. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
  441. package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
  442. package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
  443. package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
  444. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
  445. package/src/duckdb/src/main/capi/result-c.cpp +23 -23
  446. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  447. package/src/duckdb/src/main/client_context.cpp +7 -6
  448. package/src/duckdb/src/main/config.cpp +2 -0
  449. package/src/duckdb/src/main/database.cpp +1 -0
  450. package/src/duckdb/src/main/database_manager.cpp +22 -1
  451. package/src/duckdb/src/main/error_manager.cpp +1 -1
  452. package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
  453. package/src/duckdb/src/main/query_result.cpp +6 -2
  454. package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
  455. package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
  456. package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
  457. package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
  458. package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
  459. package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
  460. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  461. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  462. package/src/duckdb/src/main/relation.cpp +1 -1
  463. package/src/duckdb/src/main/settings/settings.cpp +41 -6
  464. package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
  465. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  466. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
  467. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
  468. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
  469. package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
  470. package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
  471. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
  472. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
  473. package/src/duckdb/src/optimizer/unnest_rewriter.cpp +27 -16
  474. package/src/duckdb/src/parallel/executor.cpp +39 -15
  475. package/src/duckdb/src/parallel/meta_pipeline.cpp +17 -3
  476. package/src/duckdb/src/parser/base_expression.cpp +2 -5
  477. package/src/duckdb/src/parser/column_definition.cpp +5 -8
  478. package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
  479. package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
  480. package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
  481. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
  482. package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
  483. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
  484. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
  485. package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
  486. package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
  487. package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
  488. package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
  489. package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
  490. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
  491. package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
  492. package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
  493. package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
  494. package/src/duckdb/src/parser/parsed_data/create_info.cpp +0 -3
  495. package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
  496. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
  497. package/src/duckdb/src/parser/parser.cpp +98 -38
  498. package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
  499. package/src/duckdb/src/parser/query_node.cpp +7 -6
  500. package/src/duckdb/src/parser/result_modifier.cpp +25 -18
  501. package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
  502. package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
  503. package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
  504. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
  505. package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
  506. package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
  507. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
  508. package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
  509. package/src/duckdb/src/parser/tableref.cpp +12 -3
  510. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
  511. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
  512. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
  513. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
  514. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
  515. package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
  516. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
  517. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
  518. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
  519. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +70 -75
  520. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
  521. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
  522. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
  523. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
  524. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +31 -29
  525. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
  526. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
  527. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
  528. package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +0 -2
  529. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
  530. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
  531. package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
  532. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
  533. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
  534. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
  535. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
  536. package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
  537. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
  538. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
  539. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
  540. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
  541. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
  542. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
  543. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
  544. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
  545. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
  546. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
  547. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
  548. package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
  549. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -25
  550. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
  551. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
  552. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
  553. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
  554. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
  555. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
  556. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
  557. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
  558. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
  559. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
  560. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
  561. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
  562. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
  563. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
  564. package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
  565. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
  566. package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
  567. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
  568. package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
  569. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
  570. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
  571. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
  572. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +30 -27
  573. package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
  574. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
  575. package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
  576. package/src/duckdb/src/parser/transformer.cpp +45 -47
  577. package/src/duckdb/src/planner/bind_context.cpp +9 -10
  578. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -3
  579. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
  580. package/src/duckdb/src/planner/binder/expression/bind_positional_reference_expression.cpp +8 -3
  581. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
  582. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
  583. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +39 -23
  584. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
  585. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +1 -28
  586. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +18 -1
  587. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +0 -25
  588. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
  589. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -114
  590. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +7 -2
  591. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +7 -2
  592. package/src/duckdb/src/planner/binder.cpp +1 -1
  593. package/src/duckdb/src/planner/bound_result_modifier.cpp +30 -11
  594. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +11 -10
  595. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
  596. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
  597. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
  598. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
  599. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
  600. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
  601. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
  602. package/src/duckdb/src/planner/expression/bound_default_expression.cpp +7 -1
  603. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
  604. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
  605. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
  606. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
  607. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
  608. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
  609. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
  610. package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
  611. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
  612. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
  613. package/src/duckdb/src/planner/expression.cpp +18 -0
  614. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
  615. package/src/duckdb/src/planner/expression_binder.cpp +3 -2
  616. package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
  617. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
  618. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  619. package/src/duckdb/src/planner/logical_operator.cpp +3 -4
  620. package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
  621. package/src/duckdb/src/planner/operator/logical_distinct.cpp +5 -4
  622. package/src/duckdb/src/planner/operator/logical_pivot.cpp +14 -2
  623. package/src/duckdb/src/planner/planner.cpp +5 -15
  624. package/src/duckdb/src/planner/table_filter.cpp +1 -1
  625. package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
  626. package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
  627. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
  628. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
  629. package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
  630. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
  631. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
  632. package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
  633. package/src/duckdb/src/storage/compression/rle.cpp +8 -8
  634. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
  635. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
  636. package/src/duckdb/src/storage/data_table.cpp +12 -10
  637. package/src/duckdb/src/storage/index.cpp +13 -0
  638. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  639. package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
  640. package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
  641. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
  642. package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
  643. package/src/duckdb/src/storage/storage_manager.cpp +6 -0
  644. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
  645. package/src/duckdb/src/storage/table/column_data.cpp +7 -3
  646. package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
  647. package/src/duckdb/src/storage/table/list_column_data.cpp +8 -7
  648. package/src/duckdb/src/storage/table/row_group.cpp +8 -7
  649. package/src/duckdb/src/storage/table/row_group_collection.cpp +6 -3
  650. package/src/duckdb/src/storage/table/standard_column_data.cpp +5 -4
  651. package/src/duckdb/src/storage/table/struct_column_data.cpp +4 -3
  652. package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
  653. package/src/duckdb/src/storage/wal_replay.cpp +5 -6
  654. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
  655. package/src/duckdb/src/transaction/commit_state.cpp +8 -8
  656. package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
  657. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
  658. package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
  659. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  660. package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
  661. package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
  662. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +0 -1
  663. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +0 -14
  664. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +12828 -12956
  665. package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
  666. package/src/duckdb/third_party/zstd/compress/zstd_compress.cpp +3 -0
  667. package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_cwksp.h +4 -0
  668. package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +5 -5
  669. package/src/duckdb/ub_src_parser_transform_statement.cpp +0 -2
  670. package/test/extension.test.ts +11 -0
  671. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_database_info.hpp +0 -46
  672. package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +0 -28
package/binding.gyp CHANGED
@@ -237,18 +237,18 @@
237
237
  "src/duckdb/third_party/zstd/compress/zstd_lazy.cpp",
238
238
  "src/duckdb/third_party/zstd/compress/zstd_ldm.cpp",
239
239
  "src/duckdb/third_party/zstd/compress/zstd_opt.cpp",
240
- "src/duckdb/extension/icu/./icu-dateadd.cpp",
241
- "src/duckdb/extension/icu/./icu-datetrunc.cpp",
242
- "src/duckdb/extension/icu/./icu-datesub.cpp",
243
- "src/duckdb/extension/icu/./icu-table-range.cpp",
244
- "src/duckdb/extension/icu/./icu-timebucket.cpp",
245
240
  "src/duckdb/extension/icu/./icu-list-range.cpp",
241
+ "src/duckdb/extension/icu/./icu-datefunc.cpp",
246
242
  "src/duckdb/extension/icu/./icu-datepart.cpp",
247
- "src/duckdb/extension/icu/./icu-timezone.cpp",
243
+ "src/duckdb/extension/icu/./icu-datetrunc.cpp",
244
+ "src/duckdb/extension/icu/./icu-table-range.cpp",
245
+ "src/duckdb/extension/icu/./icu-dateadd.cpp",
248
246
  "src/duckdb/extension/icu/./icu-extension.cpp",
249
- "src/duckdb/extension/icu/./icu-makedate.cpp",
250
- "src/duckdb/extension/icu/./icu-datefunc.cpp",
251
247
  "src/duckdb/extension/icu/./icu-strptime.cpp",
248
+ "src/duckdb/extension/icu/./icu-datesub.cpp",
249
+ "src/duckdb/extension/icu/./icu-makedate.cpp",
250
+ "src/duckdb/extension/icu/./icu-timezone.cpp",
251
+ "src/duckdb/extension/icu/./icu-timebucket.cpp",
252
252
  "src/duckdb/ub_extension_icu_third_party_icu_common.cpp",
253
253
  "src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp",
254
254
  "src/duckdb/extension/icu/third_party/icu/stubdata/stubdata.cpp",
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.1-dev65.0",
5
+ "version": "0.8.1",
6
6
  "description": "DuckDB node.js API",
7
7
  "gypfile": true,
8
8
  "dependencies": {
@@ -28,11 +28,13 @@
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/chai": "^4.3.4",
31
+ "@types/chai-as-promised": "^7.1.5",
31
32
  "@types/mocha": "^10.0.0",
32
33
  "@types/node": "^18.11.0",
33
34
  "apache-arrow": "^9.0.0",
34
35
  "aws-sdk": "^2.790.0",
35
36
  "chai": "^4.3.6",
37
+ "chai-as-promised": "^7.1.1",
36
38
  "jsdoc3-parser": "^2.0.0",
37
39
  "mocha": "^8.3.0",
38
40
  "ts-node": "^10.9.1",
@@ -329,7 +329,7 @@ struct ICUDatePart : public ICUDateFunc {
329
329
  input.ToUnifiedFormat(count, rdata);
330
330
 
331
331
  const auto &arg_valid = rdata.validity;
332
- auto tdata = (const INPUT_TYPE *)rdata.data;
332
+ auto tdata = UnifiedVectorFormat::GetData<INPUT_TYPE>(rdata);
333
333
 
334
334
  result.SetVectorType(VectorType::FLAT_VECTOR);
335
335
  auto &child_entries = StructVector::GetEntries(result);
@@ -432,7 +432,7 @@ struct ICUDatePart : public ICUDateFunc {
432
432
  throw NotImplementedException("FIXME: serialize icu-datepart");
433
433
  }
434
434
 
435
- static duckdb::unique_ptr<FunctionData> DeserializeFunction(ClientContext &context, FieldReader &reader,
435
+ static duckdb::unique_ptr<FunctionData> DeserializeFunction(PlanDeserializationState &state, FieldReader &reader,
436
436
  ScalarFunction &bound_function) {
437
437
  throw NotImplementedException("FIXME: serialize icu-datepart");
438
438
  }
@@ -145,7 +145,7 @@ static void ICUCollateSerialize(FieldWriter &writer, const FunctionData *bind_da
145
145
  throw NotImplementedException("FIXME: serialize icu-collate");
146
146
  }
147
147
 
148
- static duckdb::unique_ptr<FunctionData> ICUCollateDeserialize(ClientContext &context, FieldReader &reader,
148
+ static duckdb::unique_ptr<FunctionData> ICUCollateDeserialize(PlanDeserializationState &state, FieldReader &reader,
149
149
  ScalarFunction &bound_function) {
150
150
  throw NotImplementedException("FIXME: serialize icu-collate");
151
151
  }
@@ -1,3 +1,4 @@
1
+ #include "duckdb/common/operator/cast_operators.hpp"
1
2
  #include "duckdb/common/types/date.hpp"
2
3
  #include "duckdb/common/types/time.hpp"
3
4
  #include "duckdb/common/types/timestamp.hpp"
@@ -36,8 +37,8 @@ struct ICUMakeDate : public ICUDateFunc {
36
37
 
37
38
  static bool CastToDate(Vector &source, Vector &result, idx_t count, CastParameters &parameters) {
38
39
  auto &cast_data = parameters.cast_data->Cast<CastData>();
39
- auto info = (BindData *)cast_data.info.get();
40
- CalendarPtr calendar(info->calendar->clone());
40
+ auto &info = cast_data.info->Cast<BindData>();
41
+ CalendarPtr calendar(info.calendar->clone());
41
42
 
42
43
  UnaryExecutor::Execute<timestamp_t, date_t>(
43
44
  source, result, count, [&](timestamp_t input) { return Operation(calendar.get(), input); });
@@ -67,7 +68,7 @@ struct ICUMakeTimestampTZFunc : public ICUDateFunc {
67
68
  static inline timestamp_t Operation(icu::Calendar *calendar, T yyyy, T mm, T dd, T hr, T mn, double ss) {
68
69
  const auto year = yyyy + (yyyy < 0);
69
70
 
70
- const auto secs = int32_t(ss);
71
+ const auto secs = Cast::Operation<double, int32_t>(ss);
71
72
  ss -= secs;
72
73
  ss *= Interval::MSECS_PER_SEC;
73
74
  const auto millis = int32_t(ss);
@@ -87,7 +88,7 @@ struct ICUMakeTimestampTZFunc : public ICUDateFunc {
87
88
  template <typename T>
88
89
  static void Execute(DataChunk &input, ExpressionState &state, Vector &result) {
89
90
  auto &func_expr = state.expr.Cast<BoundFunctionExpression>();
90
- auto &info = (BindData &)*func_expr.bind_info;
91
+ auto &info = func_expr.bind_info->Cast<BindData>();
91
92
  CalendarPtr calendar_ptr(info.calendar->clone());
92
93
  auto calendar = calendar_ptr.get();
93
94
 
@@ -53,7 +53,7 @@ struct ICUStrptime : public ICUDateFunc {
53
53
  throw NotImplementedException("FIXME: serialize icu-strptime");
54
54
  }
55
55
 
56
- static duckdb::unique_ptr<FunctionData> Deserialize(ClientContext &context, FieldReader &reader,
56
+ static duckdb::unique_ptr<FunctionData> Deserialize(PlanDeserializationState &state, FieldReader &reader,
57
57
  ScalarFunction &bound_function) {
58
58
  throw NotImplementedException("FIXME: serialize icu-strptime");
59
59
  }
@@ -1310,10 +1310,8 @@ NumeratorSubstitution::doParse(const UnicodeString& text,
1310
1310
  // compute the 'effective' base and prescale the value down
1311
1311
  int64_t n = result.getLong(status); // force conversion!
1312
1312
  int64_t d = 1;
1313
- int32_t pow = 0;
1314
1313
  while (d <= n) {
1315
1314
  d *= 10;
1316
- ++pow;
1317
1315
  }
1318
1316
  // now add the zeros
1319
1317
  while (zeroCount > 0) {
@@ -30,6 +30,10 @@ JSONFileHandle::JSONFileHandle(unique_ptr<FileHandle> file_handle_p, Allocator &
30
30
  requested_reads(0), actual_reads(0), cached_size(0) {
31
31
  }
32
32
 
33
+ bool JSONFileHandle::IsOpen() const {
34
+ return file_handle != nullptr;
35
+ }
36
+
33
37
  void JSONFileHandle::Close() {
34
38
  if (file_handle) {
35
39
  file_handle->Close();
@@ -62,19 +66,20 @@ idx_t JSONFileHandle::GetPositionAndSize(idx_t &position, idx_t requested_size)
62
66
  if (actual_size != 0) {
63
67
  requested_reads++;
64
68
  }
69
+
65
70
  return actual_size;
66
71
  }
67
72
 
68
- void JSONFileHandle::ReadAtPosition(const char *pointer, idx_t size, idx_t position, bool sample_run) {
73
+ void JSONFileHandle::ReadAtPosition(char *pointer, idx_t size, idx_t position, bool sample_run) {
69
74
  D_ASSERT(size != 0);
70
75
  if (plain_file_source) {
71
- file_handle->Read((void *)pointer, size, position);
76
+ file_handle->Read(pointer, size, position);
72
77
  actual_reads++;
73
78
  return;
74
79
  }
75
80
 
76
81
  if (sample_run) { // Cache the buffer
77
- file_handle->Read((void *)pointer, size, position);
82
+ file_handle->Read(pointer, size, position);
78
83
  actual_reads++;
79
84
  cached_buffers.emplace_back(allocator.Allocate(size));
80
85
  memcpy(cached_buffers.back().get(), pointer, size);
@@ -87,12 +92,12 @@ void JSONFileHandle::ReadAtPosition(const char *pointer, idx_t size, idx_t posit
87
92
  actual_reads++;
88
93
  }
89
94
  if (size != 0) {
90
- file_handle->Read((void *)pointer, size, position);
95
+ file_handle->Read(pointer, size, position);
91
96
  actual_reads++;
92
97
  }
93
98
  }
94
99
 
95
- idx_t JSONFileHandle::Read(const char *pointer, idx_t requested_size, bool sample_run) {
100
+ idx_t JSONFileHandle::Read(char *pointer, idx_t requested_size, bool sample_run) {
96
101
  D_ASSERT(requested_size != 0);
97
102
  if (plain_file_source) {
98
103
  auto actual_size = ReadInternal(pointer, requested_size);
@@ -121,7 +126,7 @@ idx_t JSONFileHandle::Read(const char *pointer, idx_t requested_size, bool sampl
121
126
  return actual_size;
122
127
  }
123
128
 
124
- idx_t JSONFileHandle::ReadFromCache(const char *&pointer, idx_t &size, idx_t &position) {
129
+ idx_t JSONFileHandle::ReadFromCache(char *&pointer, idx_t &size, idx_t &position) {
125
130
  idx_t read_size = 0;
126
131
  idx_t total_offset = 0;
127
132
 
@@ -134,7 +139,7 @@ idx_t JSONFileHandle::ReadFromCache(const char *&pointer, idx_t &size, idx_t &po
134
139
  if (position < total_offset + cached_buffer.GetSize()) {
135
140
  idx_t within_buffer_offset = position - total_offset;
136
141
  idx_t copy_size = MinValue<idx_t>(size, cached_buffer.GetSize() - within_buffer_offset);
137
- memcpy((void *)pointer, cached_buffer.get() + within_buffer_offset, copy_size);
142
+ memcpy(pointer, cached_buffer.get() + within_buffer_offset, copy_size);
138
143
 
139
144
  read_size += copy_size;
140
145
  pointer += copy_size;
@@ -147,11 +152,11 @@ idx_t JSONFileHandle::ReadFromCache(const char *&pointer, idx_t &size, idx_t &po
147
152
  return read_size;
148
153
  }
149
154
 
150
- idx_t JSONFileHandle::ReadInternal(const char *pointer, const idx_t requested_size) {
155
+ idx_t JSONFileHandle::ReadInternal(char *pointer, const idx_t requested_size) {
151
156
  // Deal with reading from pipes
152
157
  idx_t total_read_size = 0;
153
158
  while (total_read_size < requested_size) {
154
- auto read_size = file_handle->Read((void *)(pointer + total_read_size), requested_size - total_read_size);
159
+ auto read_size = file_handle->Read(pointer + total_read_size, requested_size - total_read_size);
155
160
  if (read_size == 0) {
156
161
  break;
157
162
  }
@@ -165,6 +170,7 @@ BufferedJSONReader::BufferedJSONReader(ClientContext &context, BufferedJSONReade
165
170
  }
166
171
 
167
172
  void BufferedJSONReader::OpenJSONFile() {
173
+ D_ASSERT(!IsDone());
168
174
  lock_guard<mutex> guard(lock);
169
175
  auto &file_system = FileSystem::GetFileSystem(context);
170
176
  auto regular_file_handle =
@@ -186,6 +192,13 @@ bool BufferedJSONReader::IsOpen() const {
186
192
  return file_handle != nullptr;
187
193
  }
188
194
 
195
+ bool BufferedJSONReader::IsDone() const {
196
+ if (file_handle) {
197
+ return !file_handle->IsOpen();
198
+ }
199
+ return false;
200
+ }
201
+
189
202
  BufferedJSONReaderOptions &BufferedJSONReader::GetOptions() {
190
203
  return options;
191
204
  }
@@ -212,10 +225,6 @@ void BufferedJSONReader::SetRecordType(duckdb::JSONRecordType type) {
212
225
  options.record_type = type;
213
226
  }
214
227
 
215
- bool BufferedJSONReader::IsParallel() const {
216
- return options.format == JSONFormat::NEWLINE_DELIMITED && file_handle->CanSeek();
217
- }
218
-
219
228
  const string &BufferedJSONReader::GetFileName() const {
220
229
  return file_name;
221
230
  }
@@ -288,7 +297,7 @@ void BufferedJSONReader::ThrowTransformError(idx_t buf_index, idx_t line_or_obje
288
297
  const string &error_message) {
289
298
  string unit = options.format == JSONFormat::NEWLINE_DELIMITED ? "line" : "record/value";
290
299
  auto line = GetLineNumber(buf_index, line_or_object_in_buf);
291
- throw InvalidInputException("JSON transform error in file \"%s\", in %s %llu: %s.", file_name, unit, line,
300
+ throw InvalidInputException("JSON transform error in file \"%s\", in %s %llu: %s", file_name, unit, line,
292
301
  error_message);
293
302
  }
294
303
 
@@ -71,6 +71,7 @@ public:
71
71
  struct JSONFileHandle {
72
72
  public:
73
73
  JSONFileHandle(unique_ptr<FileHandle> file_handle, Allocator &allocator);
74
+ bool IsOpen() const;
74
75
  void Close();
75
76
 
76
77
  idx_t FileSize() const;
@@ -80,15 +81,15 @@ public:
80
81
  void Seek(idx_t position);
81
82
 
82
83
  idx_t GetPositionAndSize(idx_t &position, idx_t requested_size);
83
- void ReadAtPosition(const char *pointer, idx_t size, idx_t position, bool sample_run);
84
- idx_t Read(const char *pointer, idx_t requested_size, bool sample_run);
84
+ void ReadAtPosition(char *pointer, idx_t size, idx_t position, bool sample_run);
85
+ idx_t Read(char *pointer, idx_t requested_size, bool sample_run);
85
86
 
86
87
  void Reset();
87
88
  bool RequestedReadsComplete();
88
89
 
89
90
  private:
90
- idx_t ReadFromCache(const char *&pointer, idx_t &size, idx_t &position);
91
- idx_t ReadInternal(const char *pointer, const idx_t requested_size);
91
+ idx_t ReadFromCache(char *&pointer, idx_t &size, idx_t &position);
92
+ idx_t ReadInternal(char *pointer, const idx_t requested_size);
92
93
 
93
94
  private:
94
95
  //! The JSON file handle
@@ -139,6 +140,7 @@ public:
139
140
  void OpenJSONFile();
140
141
  void CloseJSONFile();
141
142
  bool IsOpen() const;
143
+ bool IsDone() const;
142
144
 
143
145
  BufferedJSONReaderOptions &GetOptions();
144
146
  const BufferedJSONReaderOptions &GetOptions() const;
@@ -148,8 +150,6 @@ public:
148
150
  JSONRecordType GetRecordType() const;
149
151
  void SetRecordType(JSONRecordType type);
150
152
 
151
- bool IsParallel() const;
152
-
153
153
  const string &GetFileName() const;
154
154
  JSONFileHandle &GetFileHandle() const;
155
155
 
@@ -38,7 +38,7 @@ private:
38
38
 
39
39
  static inline void *Reallocate(void *ctx, void *ptr, size_t old_size, size_t size) {
40
40
  auto alloc = (ArenaAllocator *)ctx;
41
- return alloc->ReallocateAligned((data_ptr_t)ptr, old_size, size);
41
+ return alloc->ReallocateAligned(data_ptr_cast(ptr), old_size, size);
42
42
  }
43
43
 
44
44
  static inline void Free(void *ctx, void *ptr) {
@@ -170,6 +170,16 @@ public:
170
170
  }
171
171
 
172
172
  public:
173
+ template <class T>
174
+ static T *AllocateArray(yyjson_alc *alc, idx_t count) {
175
+ return reinterpret_cast<T *>(alc->malloc(alc->ctx, sizeof(T) * count));
176
+ }
177
+
178
+ template <class T>
179
+ static T *AllocateArray(yyjson_mut_doc *doc, idx_t count) {
180
+ return AllocateArray<T>(&doc->alc, count);
181
+ }
182
+
173
183
  static inline yyjson_mut_doc *CreateDocument(yyjson_alc *alc) {
174
184
  D_ASSERT(alc);
175
185
  return yyjson_mut_doc_new(alc);
@@ -419,11 +429,11 @@ private:
419
429
 
420
430
  template <>
421
431
  inline char *JSONCommon::WriteVal(yyjson_val *val, yyjson_alc *alc, idx_t &len) {
422
- return yyjson_val_write_opts(val, JSONCommon::WRITE_FLAG, alc, (size_t *)&len, nullptr);
432
+ return yyjson_val_write_opts(val, JSONCommon::WRITE_FLAG, alc, reinterpret_cast<size_t *>(&len), nullptr);
423
433
  }
424
434
  template <>
425
435
  inline char *JSONCommon::WriteVal(yyjson_mut_val *val, yyjson_alc *alc, idx_t &len) {
426
- return yyjson_mut_val_write_opts(val, JSONCommon::WRITE_FLAG, alc, (size_t *)&len, nullptr);
436
+ return yyjson_mut_val_write_opts(val, JSONCommon::WRITE_FLAG, alc, reinterpret_cast<size_t *>(&len), nullptr);
427
437
  }
428
438
 
429
439
  template <>
@@ -89,7 +89,7 @@ public:
89
89
  UnifiedVectorFormat input_data;
90
90
  auto &input_vector = args.data[0];
91
91
  input_vector.ToUnifiedFormat(count, input_data);
92
- auto inputs = (string_t *)input_data.data;
92
+ auto inputs = UnifiedVectorFormat::GetData<string_t>(input_data);
93
93
 
94
94
  ListVector::Reserve(result, list_size);
95
95
  auto list_entries = FlatVector::GetData<list_entry_t>(result);
@@ -232,6 +232,8 @@ private:
232
232
  void ThrowObjectSizeError(const idx_t object_size);
233
233
  void ThrowInvalidAtEndError();
234
234
 
235
+ bool IsParallel(JSONScanGlobalState &gstate) const;
236
+
235
237
  private:
236
238
  //! Bind data
237
239
  const JSONScanData &bind_data;
@@ -245,7 +247,7 @@ private:
245
247
  bool is_last;
246
248
 
247
249
  //! Current buffer read info
248
- const char *buffer_ptr;
250
+ char *buffer_ptr;
249
251
  idx_t buffer_size;
250
252
  idx_t buffer_offset;
251
253
  idx_t prev_buffer_remainder;
@@ -290,7 +292,8 @@ public:
290
292
  vector<unique_ptr<Expression>> &filters);
291
293
 
292
294
  static void Serialize(FieldWriter &writer, const FunctionData *bind_data_p, const TableFunction &function);
293
- static unique_ptr<FunctionData> Deserialize(ClientContext &context, FieldReader &reader, TableFunction &function);
295
+ static unique_ptr<FunctionData> Deserialize(PlanDeserializationState &state, FieldReader &reader,
296
+ TableFunction &function);
294
297
 
295
298
  static void TableFunctionDefaults(TableFunction &table_function);
296
299
  };
@@ -114,6 +114,11 @@ static void JSONContainsFunction(DataChunk &args, ExpressionState &state, Vector
114
114
  auto &needles = args.data[1];
115
115
 
116
116
  if (needles.GetVectorType() == VectorType::CONSTANT_VECTOR) {
117
+ if (ConstantVector::IsNull(needles)) {
118
+ result.SetVectorType(VectorType::CONSTANT_VECTOR);
119
+ ConstantVector::SetNull(result, true);
120
+ return;
121
+ }
117
122
  auto &needle_str = *ConstantVector::GetData<string_t>(needles);
118
123
  auto needle_doc = JSONCommon::ReadDocument(needle_str, JSONCommon::READ_FLAG, lstate.json_allocator.GetYYAlc());
119
124
  UnaryExecutor::Execute<string_t, bool>(haystacks, result, args.size(), [&](string_t haystack_str) {
@@ -225,7 +225,7 @@ static void AddKeyValuePairs(yyjson_mut_doc *doc, yyjson_mut_val *objs[], Vector
225
225
  idx_t count) {
226
226
  UnifiedVectorFormat key_data;
227
227
  key_v.ToUnifiedFormat(count, key_data);
228
- auto keys = (string_t *)key_data.data;
228
+ auto keys = UnifiedVectorFormat::GetData<string_t>(key_data);
229
229
 
230
230
  for (idx_t i = 0; i < count; i++) {
231
231
  auto key_idx = key_data.sel->get_index(i);
@@ -253,7 +253,7 @@ template <class INPUT_TYPE, class TARGET_TYPE>
253
253
  static void TemplatedCreateValues(yyjson_mut_doc *doc, yyjson_mut_val *vals[], Vector &value_v, idx_t count) {
254
254
  UnifiedVectorFormat value_data;
255
255
  value_v.ToUnifiedFormat(count, value_data);
256
- auto values = (INPUT_TYPE *)value_data.data;
256
+ auto values = UnifiedVectorFormat::GetData<INPUT_TYPE>(value_data);
257
257
 
258
258
  const auto type_is_json = JSONCommon::LogicalTypeIsJSON(value_v.GetType());
259
259
  for (idx_t i = 0; i < count; i++) {
@@ -276,7 +276,7 @@ static void CreateValuesStruct(const StructNames &names, yyjson_mut_doc *doc, yy
276
276
  vals[i] = yyjson_mut_obj(doc);
277
277
  }
278
278
  // Initialize re-usable array for the nested values
279
- auto nested_vals = (yyjson_mut_val **)doc->alc.malloc(doc->alc.ctx, sizeof(yyjson_mut_val *) * count);
279
+ auto nested_vals = JSONCommon::AllocateArray<yyjson_mut_val *>(doc, count);
280
280
 
281
281
  // Add the key/value pairs to the values
282
282
  auto &entries = StructVector::GetEntries(value_v);
@@ -301,17 +301,17 @@ static void CreateValuesMap(const StructNames &names, yyjson_mut_doc *doc, yyjso
301
301
  // Create nested keys
302
302
  auto &map_key_v = MapVector::GetKeys(value_v);
303
303
  auto map_key_count = ListVector::GetListSize(value_v);
304
- auto nested_keys = (yyjson_mut_val **)doc->alc.malloc(doc->alc.ctx, sizeof(yyjson_mut_val *) * map_key_count);
304
+ auto nested_keys = JSONCommon::AllocateArray<yyjson_mut_val *>(doc, map_key_count);
305
305
  TemplatedCreateValues<string_t, string_t>(doc, nested_keys, map_key_v, map_key_count);
306
306
  // Create nested values
307
307
  auto &map_val_v = MapVector::GetValues(value_v);
308
308
  auto map_val_count = ListVector::GetListSize(value_v);
309
- auto nested_vals = (yyjson_mut_val **)doc->alc.malloc(doc->alc.ctx, sizeof(yyjson_mut_val *) * map_val_count);
309
+ auto nested_vals = JSONCommon::AllocateArray<yyjson_mut_val *>(doc, map_val_count);
310
310
  CreateValues(names, doc, nested_vals, map_val_v, map_val_count);
311
311
  // Add the key/value pairs to the values
312
312
  UnifiedVectorFormat map_data;
313
313
  value_v.ToUnifiedFormat(count, map_data);
314
- auto map_key_list_entries = (list_entry_t *)map_data.data;
314
+ auto map_key_list_entries = UnifiedVectorFormat::GetData<list_entry_t>(map_data);
315
315
  for (idx_t i = 0; i < count; i++) {
316
316
  idx_t idx = map_data.sel->get_index(i);
317
317
  if (!map_data.validity.RowIsValid(idx)) {
@@ -338,7 +338,7 @@ static void CreateValuesUnion(const StructNames &names, yyjson_mut_doc *doc, yyj
338
338
  }
339
339
 
340
340
  // Initialize re-usable array for the nested values
341
- auto nested_vals = (yyjson_mut_val **)doc->alc.malloc(doc->alc.ctx, sizeof(yyjson_mut_val *) * count);
341
+ auto nested_vals = JSONCommon::AllocateArray<yyjson_mut_val *>(doc, count);
342
342
 
343
343
  auto &tag_v = UnionVector::GetTags(value_v);
344
344
  UnifiedVectorFormat tag_data;
@@ -358,14 +358,14 @@ static void CreateValuesUnion(const StructNames &names, yyjson_mut_doc *doc, yyj
358
358
  // and the rows where the member is not matching the tag
359
359
  UnifiedVectorFormat key_data;
360
360
  member_key_v.ToUnifiedFormat(count, key_data);
361
- auto keys = (string_t *)key_data.data;
361
+ auto keys = UnifiedVectorFormat::GetData<string_t>(key_data);
362
362
 
363
363
  for (idx_t i = 0; i < count; i++) {
364
364
  auto tag_idx = tag_data.sel->get_index(i);
365
365
  if (!tag_data.validity.RowIsValid(tag_idx)) {
366
366
  continue;
367
367
  }
368
- auto tag = ((uint8_t *)tag_data.data)[tag_idx];
368
+ auto tag = (UnifiedVectorFormat::GetData<uint8_t>(tag_data))[tag_idx];
369
369
  if (tag != member_idx) {
370
370
  continue;
371
371
  }
@@ -384,13 +384,13 @@ static void CreateValuesList(const StructNames &names, yyjson_mut_doc *doc, yyjs
384
384
  // Initialize array for the nested values
385
385
  auto &child_v = ListVector::GetEntry(value_v);
386
386
  auto child_count = ListVector::GetListSize(value_v);
387
- auto nested_vals = (yyjson_mut_val **)doc->alc.malloc(doc->alc.ctx, sizeof(yyjson_mut_val *) * child_count);
387
+ auto nested_vals = JSONCommon::AllocateArray<yyjson_mut_val *>(doc, child_count);
388
388
  // Fill nested_vals with list values
389
389
  CreateValues(names, doc, nested_vals, child_v, child_count);
390
390
  // Now we add the values to the appropriate JSON arrays
391
391
  UnifiedVectorFormat list_data;
392
392
  value_v.ToUnifiedFormat(count, list_data);
393
- auto list_entries = (list_entry_t *)list_data.data;
393
+ auto list_entries = UnifiedVectorFormat::GetData<list_entry_t>(list_data);
394
394
  for (idx_t i = 0; i < count; i++) {
395
395
  idx_t idx = list_data.sel->get_index(i);
396
396
  if (!list_data.validity.RowIsValid(idx)) {
@@ -501,12 +501,12 @@ static void ObjectFunction(DataChunk &args, ExpressionState &state, Vector &resu
501
501
  // Initialize values
502
502
  const idx_t count = args.size();
503
503
  auto doc = JSONCommon::CreateDocument(alc);
504
- auto objs = (yyjson_mut_val **)alc->malloc(alc->ctx, sizeof(yyjson_mut_val *) * count);
504
+ auto objs = JSONCommon::AllocateArray<yyjson_mut_val *>(doc, count);
505
505
  for (idx_t i = 0; i < count; i++) {
506
506
  objs[i] = yyjson_mut_obj(doc);
507
507
  }
508
508
  // Initialize a re-usable value array
509
- auto vals = (yyjson_mut_val **)alc->malloc(alc->ctx, sizeof(yyjson_mut_val *) * count);
509
+ auto vals = JSONCommon::AllocateArray<yyjson_mut_val *>(doc, count);
510
510
  // Loop through key/value pairs
511
511
  for (idx_t pair_idx = 0; pair_idx < args.data.size() / 2; pair_idx++) {
512
512
  Vector &key_v = args.data[pair_idx * 2];
@@ -533,12 +533,12 @@ static void ArrayFunction(DataChunk &args, ExpressionState &state, Vector &resul
533
533
  // Initialize arrays
534
534
  const idx_t count = args.size();
535
535
  auto doc = JSONCommon::CreateDocument(alc);
536
- auto arrs = (yyjson_mut_val **)alc->malloc(alc->ctx, sizeof(yyjson_mut_val *) * count);
536
+ auto arrs = JSONCommon::AllocateArray<yyjson_mut_val *>(doc, count);
537
537
  for (idx_t i = 0; i < count; i++) {
538
538
  arrs[i] = yyjson_mut_arr(doc);
539
539
  }
540
540
  // Initialize a re-usable value array
541
- auto vals = (yyjson_mut_val **)alc->malloc(alc->ctx, sizeof(yyjson_mut_val *) * count);
541
+ auto vals = JSONCommon::AllocateArray<yyjson_mut_val *>(doc, count);
542
542
  // Loop through args
543
543
  for (auto &v : args.data) {
544
544
  CreateValues(info.const_struct_names, doc, vals, v, count);
@@ -561,7 +561,7 @@ static void ToJSONFunctionInternal(const StructNames &names, Vector &input, cons
561
561
  yyjson_alc *alc) {
562
562
  // Initialize array for values
563
563
  auto doc = JSONCommon::CreateDocument(alc);
564
- auto vals = (yyjson_mut_val **)alc->malloc(alc->ctx, sizeof(yyjson_mut_val *) * count);
564
+ auto vals = JSONCommon::AllocateArray<yyjson_mut_val *>(doc, count);
565
565
  CreateValues(names, doc, vals, input, count);
566
566
 
567
567
  // Write JSON values to string
@@ -36,7 +36,7 @@ static inline void ReadObjects(yyjson_mut_doc *doc, Vector &input, yyjson_mut_va
36
36
  UnifiedVectorFormat input_data;
37
37
  auto &input_vector = input;
38
38
  input_vector.ToUnifiedFormat(count, input_data);
39
- auto inputs = (string_t *)input_data.data;
39
+ auto inputs = UnifiedVectorFormat::GetData<string_t>(input_data);
40
40
 
41
41
  // Read the documents
42
42
  for (idx_t i = 0; i < count; i++) {
@@ -59,11 +59,11 @@ static void MergePatchFunction(DataChunk &args, ExpressionState &state, Vector &
59
59
  const auto count = args.size();
60
60
 
61
61
  // Read the first json arg
62
- auto origs = (yyjson_mut_val **)alc->malloc(alc->ctx, sizeof(yyjson_mut_val *) * count);
62
+ auto origs = JSONCommon::AllocateArray<yyjson_mut_val *>(alc, count);
63
63
  ReadObjects(doc, args.data[0], origs, count);
64
64
 
65
65
  // Read the next json args one by one and merge them into the first json arg
66
- auto patches = (yyjson_mut_val **)alc->malloc(alc->ctx, sizeof(yyjson_mut_val *) * count);
66
+ auto patches = JSONCommon::AllocateArray<yyjson_mut_val *>(alc, count);
67
67
  for (idx_t arg_idx = 1; arg_idx < args.data.size(); arg_idx++) {
68
68
  ReadObjects(doc, args.data[arg_idx], patches, count);
69
69
  for (idx_t i = 0; i < count; i++) {
@@ -108,7 +108,7 @@ static void JsonSerializeFunction(DataChunk &args, ExpressionState &state, Vecto
108
108
  idx_t len;
109
109
  auto data = yyjson_mut_val_write_opts(result_obj,
110
110
  info.format ? JSONCommon::WRITE_PRETTY_FLAG : JSONCommon::WRITE_FLAG,
111
- alc, (size_t *)&len, nullptr);
111
+ alc, reinterpret_cast<size_t *>(&len), nullptr);
112
112
  if (data == nullptr) {
113
113
  throw SerializationException(
114
114
  "Failed to serialize json, perhaps the query contains invalid utf8 characters?");
@@ -124,7 +124,7 @@ static void JsonSerializeFunction(DataChunk &args, ExpressionState &state, Vecto
124
124
  idx_t len;
125
125
  auto data = yyjson_mut_val_write_opts(result_obj,
126
126
  info.format ? JSONCommon::WRITE_PRETTY_FLAG : JSONCommon::WRITE_FLAG,
127
- alc, (size_t *)&len, nullptr);
127
+ alc, reinterpret_cast<size_t *>(&len), nullptr);
128
128
  return StringVector::AddString(result, data, len);
129
129
  }
130
130
  });
@@ -150,7 +150,8 @@ void JSONStructureNode::RefineCandidateTypesArray(yyjson_val *vals[], idx_t coun
150
150
  }
151
151
 
152
152
  idx_t offset = 0;
153
- auto child_vals = (yyjson_val **)allocator.AllocateAligned(total_list_size * sizeof(yyjson_val *));
153
+ auto child_vals =
154
+ reinterpret_cast<yyjson_val **>(allocator.AllocateAligned(total_list_size * sizeof(yyjson_val *)));
154
155
 
155
156
  size_t idx, max;
156
157
  yyjson_val *child_val;
@@ -173,11 +174,12 @@ void JSONStructureNode::RefineCandidateTypesObject(yyjson_val *vals[], idx_t cou
173
174
  vector<yyjson_val **> child_vals;
174
175
  child_vals.reserve(child_count);
175
176
  for (idx_t child_idx = 0; child_idx < child_count; child_idx++) {
176
- child_vals.emplace_back((yyjson_val **)allocator.AllocateAligned(count * sizeof(yyjson_val *)));
177
+ child_vals.emplace_back(
178
+ reinterpret_cast<yyjson_val **>(allocator.AllocateAligned(count * sizeof(yyjson_val *))));
177
179
  }
178
180
 
179
181
  idx_t found_key_count;
180
- auto found_keys = (bool *)allocator.AllocateAligned(sizeof(bool) * child_count);
182
+ auto found_keys = reinterpret_cast<bool *>(allocator.AllocateAligned(sizeof(bool) * child_count));
181
183
 
182
184
  const auto &key_map = desc.key_map;
183
185
  size_t idx, max;