duckdb 0.8.1-dev31.0 → 0.8.1-dev341.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 (636) hide show
  1. package/binding.gyp +8 -8
  2. package/package.json +1 -1
  3. package/src/duckdb/extension/icu/icu-datepart.cpp +1 -1
  4. package/src/duckdb/extension/icu/icu-makedate.cpp +5 -4
  5. package/src/duckdb/extension/json/buffered_json_reader.cpp +23 -14
  6. package/src/duckdb/extension/json/include/buffered_json_reader.hpp +6 -6
  7. package/src/duckdb/extension/json/include/json_common.hpp +13 -3
  8. package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
  9. package/src/duckdb/extension/json/include/json_scan.hpp +3 -1
  10. package/src/duckdb/extension/json/json_functions/json_create.cpp +16 -16
  11. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +3 -3
  12. package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +2 -2
  13. package/src/duckdb/extension/json/json_functions/json_structure.cpp +5 -3
  14. package/src/duckdb/extension/json/json_functions/json_transform.cpp +12 -12
  15. package/src/duckdb/extension/json/json_functions/read_json.cpp +2 -1
  16. package/src/duckdb/extension/json/json_functions.cpp +6 -3
  17. package/src/duckdb/extension/json/json_scan.cpp +40 -25
  18. package/src/duckdb/extension/parquet/column_reader.cpp +57 -52
  19. package/src/duckdb/extension/parquet/column_writer.cpp +57 -45
  20. package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +1 -1
  21. package/src/duckdb/extension/parquet/include/column_reader.hpp +5 -4
  22. package/src/duckdb/extension/parquet/include/column_writer.hpp +24 -0
  23. package/src/duckdb/extension/parquet/include/decode_utils.hpp +6 -0
  24. package/src/duckdb/extension/parquet/include/list_column_reader.hpp +1 -1
  25. package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
  26. package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
  27. package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
  28. package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
  29. package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
  30. package/src/duckdb/extension/parquet/parquet-extension.cpp +25 -1
  31. package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
  32. package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
  33. package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
  34. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
  35. package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
  36. package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
  37. package/src/duckdb/src/catalog/catalog.cpp +5 -17
  38. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +113 -0
  39. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +7 -0
  40. package/src/duckdb/src/catalog/catalog_entry.cpp +4 -4
  41. package/src/duckdb/src/catalog/catalog_search_path.cpp +49 -12
  42. package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
  43. package/src/duckdb/src/catalog/default/default_types.cpp +9 -84
  44. package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
  45. package/src/duckdb/src/catalog/duck_catalog.cpp +1 -0
  46. package/src/duckdb/src/common/adbc/adbc.cpp +301 -106
  47. package/src/duckdb/src/common/adbc/driver_manager.cpp +10 -22
  48. package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
  49. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +7 -7
  50. package/src/duckdb/src/common/checksum.cpp +1 -1
  51. package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
  52. package/src/duckdb/src/common/crypto/md5.cpp +9 -9
  53. package/src/duckdb/src/common/exception.cpp +4 -1
  54. package/src/duckdb/src/common/exception_format_value.cpp +19 -14
  55. package/src/duckdb/src/common/field_writer.cpp +1 -1
  56. package/src/duckdb/src/common/file_system.cpp +15 -2
  57. package/src/duckdb/src/common/fsst.cpp +11 -6
  58. package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
  59. package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
  60. package/src/duckdb/src/common/local_file_system.cpp +11 -11
  61. package/src/duckdb/src/common/multi_file_reader.cpp +3 -0
  62. package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
  63. package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
  64. package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
  65. package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
  66. package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
  67. package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
  68. package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
  69. package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
  70. package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
  71. package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
  72. package/src/duckdb/src/common/serializer.cpp +1 -1
  73. package/src/duckdb/src/common/sort/comparators.cpp +1 -1
  74. package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
  75. package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
  76. package/src/duckdb/src/common/types/bit.cpp +5 -5
  77. package/src/duckdb/src/common/types/blob.cpp +8 -8
  78. package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
  79. package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
  80. package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
  81. package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
  82. package/src/duckdb/src/common/types/hash.cpp +2 -2
  83. package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
  84. package/src/duckdb/src/common/types/list_segment.cpp +77 -49
  85. package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
  86. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +5 -4
  87. package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
  88. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +61 -24
  89. package/src/duckdb/src/common/types/string_heap.cpp +1 -1
  90. package/src/duckdb/src/common/types/timestamp.cpp +37 -1
  91. package/src/duckdb/src/common/types/value.cpp +3 -2
  92. package/src/duckdb/src/common/types/vector.cpp +98 -101
  93. package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
  94. package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
  95. package/src/duckdb/src/common/types.cpp +44 -33
  96. package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
  97. package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
  98. package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
  99. package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
  100. package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
  101. package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
  102. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +32 -36
  103. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +53 -66
  104. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
  105. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +44 -44
  106. package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
  107. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
  108. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
  109. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +91 -103
  110. package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
  111. package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
  112. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +36 -37
  113. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
  114. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +48 -84
  115. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
  116. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +115 -133
  117. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +62 -99
  118. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
  119. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +22 -23
  120. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
  121. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
  122. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
  123. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
  124. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
  125. package/src/duckdb/src/core_functions/function_list.cpp +1 -0
  126. package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
  127. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +45 -45
  128. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
  129. package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
  130. package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
  131. package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
  132. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +14 -0
  133. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +3 -3
  134. package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
  135. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +3 -3
  136. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +6 -7
  137. package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
  138. package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
  139. package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
  140. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +4 -1
  141. package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
  142. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -3
  143. package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
  144. package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
  145. package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
  146. package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
  147. package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
  148. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
  149. package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
  150. package/src/duckdb/src/execution/expression_executor.cpp +28 -28
  151. package/src/duckdb/src/execution/index/art/art.cpp +110 -39
  152. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +23 -5
  153. package/src/duckdb/src/execution/index/art/leaf.cpp +10 -11
  154. package/src/duckdb/src/execution/index/art/leaf_segment.cpp +10 -0
  155. package/src/duckdb/src/execution/index/art/node.cpp +47 -35
  156. package/src/duckdb/src/execution/index/art/node16.cpp +3 -0
  157. package/src/duckdb/src/execution/index/art/node256.cpp +1 -0
  158. package/src/duckdb/src/execution/index/art/node4.cpp +3 -0
  159. package/src/duckdb/src/execution/index/art/node48.cpp +2 -0
  160. package/src/duckdb/src/execution/index/art/prefix.cpp +2 -0
  161. package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
  162. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
  163. package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
  164. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
  165. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
  166. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
  167. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
  168. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +26 -9
  169. package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
  170. package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +5 -2
  171. package/src/duckdb/src/execution/operator/helper/physical_set.cpp +5 -1
  172. package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
  173. package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
  174. package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
  175. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
  176. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
  177. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
  178. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
  179. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
  180. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
  181. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
  182. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
  183. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
  184. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
  185. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
  186. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -3
  187. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
  188. package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
  189. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
  190. package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +29 -3
  191. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  192. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
  193. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
  194. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
  195. package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
  196. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
  197. package/src/duckdb/src/execution/reservoir_sample.cpp +2 -2
  198. package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
  199. package/src/duckdb/src/function/aggregate/distributive/count.cpp +158 -20
  200. package/src/duckdb/src/function/aggregate/distributive/first.cpp +66 -74
  201. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +13 -13
  202. package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
  203. package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
  204. package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
  205. package/src/duckdb/src/function/cast/list_casts.cpp +2 -4
  206. package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
  207. package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
  208. package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
  209. package/src/duckdb/src/function/pragma/pragma_queries.cpp +33 -23
  210. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
  211. package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
  212. package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -3
  213. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -3
  214. package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
  215. package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
  216. package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
  217. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
  218. package/src/duckdb/src/function/scalar/string/regexp/regexp_util.cpp +6 -2
  219. package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
  220. package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
  221. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
  222. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +25 -23
  223. package/src/duckdb/src/function/scalar_function.cpp +3 -3
  224. package/src/duckdb/src/function/table/arrow.cpp +6 -6
  225. package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
  226. package/src/duckdb/src/function/table/checkpoint.cpp +1 -1
  227. package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
  228. package/src/duckdb/src/function/table/glob.cpp +1 -1
  229. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
  230. package/src/duckdb/src/function/table/range.cpp +4 -4
  231. package/src/duckdb/src/function/table/read_csv.cpp +17 -20
  232. package/src/duckdb/src/function/table/repeat.cpp +5 -2
  233. package/src/duckdb/src/function/table/repeat_row.cpp +10 -3
  234. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
  235. package/src/duckdb/src/function/table/system/test_vector_types.cpp +82 -26
  236. package/src/duckdb/src/function/table/table_scan.cpp +2 -2
  237. package/src/duckdb/src/function/table/unnest.cpp +1 -1
  238. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  239. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -5
  240. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -0
  241. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +6 -0
  242. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
  243. package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +8 -2
  244. package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +97 -0
  245. package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +5 -0
  246. package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
  247. package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
  248. package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
  249. package/src/duckdb/src/include/duckdb/common/exception.hpp +5 -2
  250. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
  251. package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
  252. package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
  253. package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
  254. package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
  255. package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
  256. package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
  257. package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
  258. package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
  259. package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
  260. package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
  261. package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
  262. package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
  263. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +4 -14
  264. package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
  265. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
  266. package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
  267. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +112 -76
  268. package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
  269. package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
  270. package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
  271. package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
  272. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
  273. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
  274. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
  275. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
  276. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
  277. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
  278. package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +9 -0
  279. package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +2 -6
  280. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +16 -36
  281. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
  282. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +13 -7
  283. package/src/duckdb/src/include/duckdb/execution/index/art/fixed_size_allocator.hpp +3 -0
  284. package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +1 -1
  285. package/src/duckdb/src/include/duckdb/execution/index/art/leaf_segment.hpp +2 -0
  286. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +13 -3
  287. package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +1 -0
  288. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
  289. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
  290. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
  291. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
  292. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +8 -29
  293. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
  294. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
  295. package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
  296. package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
  297. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
  298. package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
  299. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +3 -1
  300. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
  301. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
  302. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
  303. package/src/duckdb/src/include/duckdb/function/table_function.hpp +8 -7
  304. package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
  305. package/src/duckdb/src/include/duckdb/main/config.hpp +2 -0
  306. package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
  307. package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
  308. package/src/duckdb/src/include/duckdb/main/query_result.hpp +17 -0
  309. package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
  310. package/src/duckdb/src/include/duckdb/main/settings.hpp +9 -0
  311. package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
  312. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
  313. package/src/duckdb/src/include/duckdb/optimizer/unnest_rewriter.hpp +4 -0
  314. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
  315. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
  316. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
  317. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
  318. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
  319. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
  320. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
  321. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
  322. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
  323. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
  324. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
  325. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
  326. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
  327. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
  328. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
  329. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
  330. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
  331. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
  332. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
  333. package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
  334. package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
  335. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
  336. package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
  337. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
  338. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
  339. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
  340. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
  341. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
  342. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -2
  343. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
  344. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
  345. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +1 -1
  346. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
  347. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
  348. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
  349. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +106 -92
  350. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -2
  351. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
  352. package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
  353. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +34 -1
  354. package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
  355. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
  356. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
  357. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
  358. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
  359. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
  360. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
  361. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
  362. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
  363. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
  364. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
  365. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
  366. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
  367. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
  368. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
  369. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
  370. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
  371. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
  372. package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
  373. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
  374. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
  375. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
  376. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
  377. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +7 -2
  378. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +6 -2
  379. package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +4 -0
  380. package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +5 -1
  381. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +5 -1
  382. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
  383. package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +6 -2
  384. package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +4 -0
  385. package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
  386. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
  387. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
  388. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/byte_reader.hpp +4 -0
  389. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
  390. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
  391. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
  392. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
  393. package/src/duckdb/src/include/duckdb/storage/in_memory_block_manager.hpp +13 -13
  394. package/src/duckdb/src/include/duckdb/storage/index.hpp +6 -4
  395. package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
  396. package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +0 -6
  397. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
  398. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
  399. package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
  400. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
  401. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
  402. package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
  403. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
  404. package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
  405. package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
  406. package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
  407. package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
  408. package/src/duckdb/src/main/capi/config-c.cpp +3 -6
  409. package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
  410. package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
  411. package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
  412. package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
  413. package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
  414. package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
  415. package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
  416. package/src/duckdb/src/main/capi/result-c.cpp +23 -23
  417. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  418. package/src/duckdb/src/main/client_context.cpp +3 -3
  419. package/src/duckdb/src/main/config.cpp +1 -0
  420. package/src/duckdb/src/main/database_manager.cpp +1 -1
  421. package/src/duckdb/src/main/error_manager.cpp +1 -1
  422. package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
  423. package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
  424. package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
  425. package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
  426. package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
  427. package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
  428. package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
  429. package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
  430. package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
  431. package/src/duckdb/src/main/relation.cpp +1 -1
  432. package/src/duckdb/src/main/settings/settings.cpp +22 -6
  433. package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
  434. package/src/duckdb/src/optimizer/expression_heuristics.cpp +1 -0
  435. package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
  436. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
  437. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
  438. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
  439. package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
  440. package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
  441. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
  442. package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
  443. package/src/duckdb/src/optimizer/unnest_rewriter.cpp +27 -16
  444. package/src/duckdb/src/parallel/executor.cpp +1 -1
  445. package/src/duckdb/src/parser/base_expression.cpp +2 -5
  446. package/src/duckdb/src/parser/column_definition.cpp +5 -8
  447. package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
  448. package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
  449. package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
  450. package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
  451. package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
  452. package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
  453. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
  454. package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
  455. package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
  456. package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
  457. package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
  458. package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
  459. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
  460. package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
  461. package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
  462. package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
  463. package/src/duckdb/src/parser/parsed_data/create_info.cpp +0 -3
  464. package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
  465. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
  466. package/src/duckdb/src/parser/parser.cpp +4 -4
  467. package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
  468. package/src/duckdb/src/parser/query_node.cpp +7 -6
  469. package/src/duckdb/src/parser/result_modifier.cpp +25 -18
  470. package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
  471. package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
  472. package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
  473. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
  474. package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
  475. package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
  476. package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
  477. package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
  478. package/src/duckdb/src/parser/tableref.cpp +12 -3
  479. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
  480. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
  481. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
  482. package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
  483. package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
  484. package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
  485. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
  486. package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
  487. package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
  488. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +70 -75
  489. package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
  490. package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
  491. package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
  492. package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
  493. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +28 -29
  494. package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
  495. package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
  496. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
  497. package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +0 -2
  498. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
  499. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
  500. package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
  501. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
  502. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
  503. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
  504. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
  505. package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
  506. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
  507. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
  508. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
  509. package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
  510. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
  511. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
  512. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
  513. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
  514. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
  515. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
  516. package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
  517. package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
  518. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -25
  519. package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
  520. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
  521. package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
  522. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
  523. package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
  524. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
  525. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
  526. package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
  527. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
  528. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
  529. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
  530. package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
  531. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
  532. package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
  533. package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
  534. package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
  535. package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
  536. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
  537. package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
  538. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
  539. package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
  540. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
  541. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +30 -27
  542. package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
  543. package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
  544. package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
  545. package/src/duckdb/src/parser/transformer.cpp +45 -47
  546. package/src/duckdb/src/planner/bind_context.cpp +9 -10
  547. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -1
  548. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
  549. package/src/duckdb/src/planner/binder/expression/bind_positional_reference_expression.cpp +8 -3
  550. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
  551. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
  552. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +8 -8
  553. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
  554. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +1 -28
  555. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +18 -1
  556. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +0 -25
  557. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
  558. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -114
  559. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +4 -2
  560. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +5 -2
  561. package/src/duckdb/src/planner/binder.cpp +1 -1
  562. package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
  563. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
  564. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
  565. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
  566. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
  567. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
  568. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
  569. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
  570. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
  571. package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
  572. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
  573. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
  574. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
  575. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
  576. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
  577. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
  578. package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
  579. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
  580. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
  581. package/src/duckdb/src/planner/expression.cpp +15 -0
  582. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
  583. package/src/duckdb/src/planner/expression_binder.cpp +3 -2
  584. package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
  585. package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
  586. package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
  587. package/src/duckdb/src/planner/logical_operator.cpp +3 -4
  588. package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
  589. package/src/duckdb/src/planner/operator/logical_pivot.cpp +14 -2
  590. package/src/duckdb/src/planner/planner.cpp +5 -15
  591. package/src/duckdb/src/planner/table_filter.cpp +1 -1
  592. package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
  593. package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
  594. package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
  595. package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
  596. package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
  597. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
  598. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
  599. package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
  600. package/src/duckdb/src/storage/compression/rle.cpp +8 -8
  601. package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
  602. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
  603. package/src/duckdb/src/storage/data_table.cpp +8 -7
  604. package/src/duckdb/src/storage/index.cpp +14 -3
  605. package/src/duckdb/src/storage/local_storage.cpp +2 -1
  606. package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
  607. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  608. package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
  609. package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
  610. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
  611. package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
  612. package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
  613. package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
  614. package/src/duckdb/src/storage/table/list_column_data.cpp +3 -3
  615. package/src/duckdb/src/storage/table/row_group.cpp +4 -4
  616. package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
  617. package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
  618. package/src/duckdb/src/storage/wal_replay.cpp +5 -6
  619. package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
  620. package/src/duckdb/src/transaction/commit_state.cpp +8 -8
  621. package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
  622. package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
  623. package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
  624. package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
  625. package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
  626. package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
  627. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +0 -1
  628. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +0 -14
  629. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +12828 -12956
  630. package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
  631. package/src/duckdb/third_party/zstd/compress/zstd_compress.cpp +3 -0
  632. package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_cwksp.h +4 -0
  633. package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +5 -5
  634. package/src/duckdb/ub_src_parser_transform_statement.cpp +0 -2
  635. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_database_info.hpp +0 -46
  636. package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +0 -28
@@ -62,7 +62,7 @@ unique_ptr<GlobalTableFunctionState> PragmaLastProfilingOutputInit(ClientContext
62
62
 
63
63
  static void PragmaLastProfilingOutputFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
64
64
  auto &state = data_p.global_state->Cast<PragmaLastProfilingOutputOperatorData>();
65
- auto &data = (PragmaLastProfilingOutputData &)*data_p.bind_data;
65
+ auto &data = data_p.bind_data->CastNoConst<PragmaLastProfilingOutputData>();
66
66
  if (!state.initialized) {
67
67
  // create a ColumnDataCollection
68
68
  auto collection = make_uniq<ColumnDataCollection>(context, data.types);
@@ -18,7 +18,7 @@ struct RangeFunctionBindData : public TableFunctionData {
18
18
 
19
19
  public:
20
20
  bool Equals(const FunctionData &other_p) const override {
21
- auto &other = (const RangeFunctionBindData &)other_p;
21
+ auto &other = other_p.Cast<RangeFunctionBindData>();
22
22
  return other.start == start && other.end == end && other.increment == increment;
23
23
  }
24
24
  };
@@ -92,7 +92,7 @@ static unique_ptr<GlobalTableFunctionState> RangeFunctionInit(ClientContext &con
92
92
 
93
93
  static void RangeFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
94
94
  auto &bind_data = data_p.bind_data->Cast<RangeFunctionBindData>();
95
- auto &state = (RangeFunctionState &)*data_p.global_state;
95
+ auto &state = data_p.global_state->Cast<RangeFunctionState>();
96
96
 
97
97
  auto increment = bind_data.increment;
98
98
  auto end = bind_data.end;
@@ -129,7 +129,7 @@ struct RangeDateTimeBindData : public TableFunctionData {
129
129
 
130
130
  public:
131
131
  bool Equals(const FunctionData &other_p) const override {
132
- auto &other = (const RangeDateTimeBindData &)other_p;
132
+ auto &other = other_p.Cast<RangeDateTimeBindData>();
133
133
  return other.start == start && other.end == end && other.increment == increment &&
134
134
  other.inclusive_bound == inclusive_bound && other.greater_than_check == greater_than_check;
135
135
  }
@@ -213,7 +213,7 @@ static unique_ptr<GlobalTableFunctionState> RangeDateTimeInit(ClientContext &con
213
213
 
214
214
  static void RangeDateTimeFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
215
215
  auto &bind_data = data_p.bind_data->Cast<RangeDateTimeBindData>();
216
- auto &state = (RangeDateTimeState &)*data_p.global_state;
216
+ auto &state = data_p.global_state->Cast<RangeDateTimeState>();
217
217
  if (state.finished) {
218
218
  return;
219
219
  }
@@ -378,8 +378,8 @@ private:
378
378
  //! Current File Number
379
379
  idx_t file_number = 0;
380
380
  idx_t max_tuple_end = 0;
381
- //! the vector stores positions where threads ended the last line they read in the CSV File, and the set stores
382
- //! positions where they started reading the first line.
381
+ //! The vector stores positions where threads ended the last line they read in the CSV File, and the set stores
382
+ //! Positions where they started reading the first line.
383
383
  vector<vector<idx_t>> tuple_end;
384
384
  vector<set<idx_t>> tuple_start;
385
385
  //! Tuple end to batch
@@ -559,15 +559,13 @@ bool ParallelCSVGlobalState::Next(ClientContext &context, const ReadCSVData &bin
559
559
  }
560
560
  void ParallelCSVGlobalState::UpdateVerification(VerificationPositions positions, idx_t file_number_p, idx_t batch_idx) {
561
561
  lock_guard<mutex> parallel_lock(main_mutex);
562
- if (positions.beginning_of_first_line < positions.end_of_last_line) {
563
- if (positions.end_of_last_line > max_tuple_end) {
564
- max_tuple_end = positions.end_of_last_line;
565
- }
566
- tuple_end_to_batch[file_number_p][positions.end_of_last_line] = batch_idx;
567
- batch_to_tuple_end[file_number_p][batch_idx] = tuple_end[file_number_p].size();
568
- tuple_start[file_number_p].insert(positions.beginning_of_first_line);
569
- tuple_end[file_number_p].push_back(positions.end_of_last_line);
562
+ if (positions.end_of_last_line > max_tuple_end) {
563
+ max_tuple_end = positions.end_of_last_line;
570
564
  }
565
+ tuple_end_to_batch[file_number_p][positions.end_of_last_line] = batch_idx;
566
+ batch_to_tuple_end[file_number_p][batch_idx] = tuple_end[file_number_p].size();
567
+ tuple_start[file_number_p].insert(positions.beginning_of_first_line);
568
+ tuple_end[file_number_p].push_back(positions.end_of_last_line);
571
569
  }
572
570
 
573
571
  void ParallelCSVGlobalState::UpdateLinesRead(CSVBufferRead &buffer_read, idx_t file_idx) {
@@ -690,17 +688,14 @@ static void ParallelReadCSVFunction(ClientContext &context, TableFunctionInput &
690
688
  }
691
689
  if (csv_local_state.csv_reader->finished) {
692
690
  auto verification_updates = csv_local_state.csv_reader->GetVerificationPositions();
693
- if (verification_updates.beginning_of_first_line != verification_updates.end_of_last_line) {
694
- csv_global_state.UpdateVerification(verification_updates,
695
- csv_local_state.csv_reader->buffer->buffer->GetFileNumber(),
696
- csv_local_state.csv_reader->buffer->local_batch_index);
697
- }
691
+ csv_global_state.UpdateVerification(verification_updates,
692
+ csv_local_state.csv_reader->buffer->buffer->GetFileNumber(),
693
+ csv_local_state.csv_reader->buffer->local_batch_index);
698
694
  csv_global_state.UpdateLinesRead(*csv_local_state.csv_reader->buffer, csv_local_state.csv_reader->file_idx);
699
695
  auto has_next = csv_global_state.Next(context, bind_data, csv_local_state.csv_reader);
700
696
  if (csv_local_state.csv_reader) {
701
697
  csv_local_state.csv_reader->linenr = 0;
702
698
  }
703
-
704
699
  if (!has_next) {
705
700
  csv_global_state.DecrementThread();
706
701
  break;
@@ -861,16 +856,16 @@ static unique_ptr<GlobalTableFunctionState> SingleThreadedCSVInit(ClientContext
861
856
  unique_ptr<LocalTableFunctionState> SingleThreadedReadCSVInitLocal(ExecutionContext &context,
862
857
  TableFunctionInitInput &input,
863
858
  GlobalTableFunctionState *global_state_p) {
864
- auto &bind_data = (ReadCSVData &)*input.bind_data;
865
- auto &data = (SingleThreadedCSVState &)*global_state_p;
859
+ auto &bind_data = input.bind_data->CastNoConst<ReadCSVData>();
860
+ auto &data = global_state_p->Cast<SingleThreadedCSVState>();
866
861
  auto result = make_uniq<SingleThreadedCSVLocalState>();
867
862
  result->csv_reader = data.GetCSVReader(context.client, bind_data, result->file_index, result->total_size);
868
863
  return std::move(result);
869
864
  }
870
865
 
871
866
  static void SingleThreadedCSVFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
872
- auto &bind_data = (ReadCSVData &)*data_p.bind_data;
873
- auto &data = (SingleThreadedCSVState &)*data_p.global_state;
867
+ auto &bind_data = data_p.bind_data->CastNoConst<ReadCSVData>();
868
+ auto &data = data_p.global_state->Cast<SingleThreadedCSVState>();
874
869
  auto &lstate = data_p.local_state->Cast<SingleThreadedCSVLocalState>();
875
870
  if (!lstate.csv_reader) {
876
871
  // no csv_reader was set, this can happen when a filename-based filter has filtered out all possible files
@@ -1117,6 +1112,7 @@ void BufferedCSVReaderOptions::Deserialize(FieldReader &reader) {
1117
1112
 
1118
1113
  static void CSVReaderSerialize(FieldWriter &writer, const FunctionData *bind_data_p, const TableFunction &function) {
1119
1114
  auto &bind_data = bind_data_p->Cast<ReadCSVData>();
1115
+ writer.WriteString(function.extra_info);
1120
1116
  writer.WriteList<string>(bind_data.files);
1121
1117
  writer.WriteRegularSerializableList<LogicalType>(bind_data.csv_types);
1122
1118
  writer.WriteList<string>(bind_data.csv_names);
@@ -1135,6 +1131,7 @@ static void CSVReaderSerialize(FieldWriter &writer, const FunctionData *bind_dat
1135
1131
 
1136
1132
  static unique_ptr<FunctionData> CSVReaderDeserialize(ClientContext &context, FieldReader &reader,
1137
1133
  TableFunction &function) {
1134
+ function.extra_info = reader.ReadRequired<string>();
1138
1135
  auto result_data = make_uniq<ReadCSVData>();
1139
1136
  result_data->files = reader.ReadRequiredList<string>();
1140
1137
  result_data->csv_types = reader.ReadRequiredSerializableList<LogicalType, LogicalType>();
@@ -23,6 +23,9 @@ static unique_ptr<FunctionData> RepeatBind(ClientContext &context, TableFunction
23
23
  auto &inputs = input.inputs;
24
24
  return_types.push_back(inputs[0].type());
25
25
  names.push_back(inputs[0].ToString());
26
+ if (inputs[1].IsNull()) {
27
+ throw BinderException("Repeat second parameter cannot be NULL");
28
+ }
26
29
  return make_uniq<RepeatFunctionData>(inputs[0], inputs[1].GetValue<int64_t>());
27
30
  }
28
31
 
@@ -31,7 +34,7 @@ static unique_ptr<GlobalTableFunctionState> RepeatInit(ClientContext &context, T
31
34
  }
32
35
 
33
36
  static void RepeatFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
34
- auto &bind_data = (const RepeatFunctionData &)*data_p.bind_data;
37
+ auto &bind_data = data_p.bind_data->Cast<RepeatFunctionData>();
35
38
  auto &state = data_p.global_state->Cast<RepeatOperatorData>();
36
39
 
37
40
  idx_t remaining = MinValue<idx_t>(bind_data.target_count - state.current_count, STANDARD_VECTOR_SIZE);
@@ -41,7 +44,7 @@ static void RepeatFunction(ClientContext &context, TableFunctionInput &data_p, D
41
44
  }
42
45
 
43
46
  static unique_ptr<NodeStatistics> RepeatCardinality(ClientContext &context, const FunctionData *bind_data_p) {
44
- auto &bind_data = (const RepeatFunctionData &)*bind_data_p;
47
+ auto &bind_data = bind_data_p->Cast<RepeatFunctionData>();
45
48
  return make_uniq<NodeStatistics>(bind_data.target_count, bind_data.target_count);
46
49
  }
47
50
 
@@ -25,7 +25,14 @@ static unique_ptr<FunctionData> RepeatRowBind(ClientContext &context, TableFunct
25
25
  return_types.push_back(inputs[input_idx].type());
26
26
  names.push_back("column" + std::to_string(input_idx));
27
27
  }
28
- return make_uniq<RepeatRowFunctionData>(inputs, input.named_parameters["num_rows"].GetValue<int64_t>());
28
+ auto entry = input.named_parameters.find("num_rows");
29
+ if (entry == input.named_parameters.end()) {
30
+ throw BinderException("repeat_rows requires num_rows to be specified");
31
+ }
32
+ if (inputs.empty()) {
33
+ throw BinderException("repeat_rows requires at least one column to be specified");
34
+ }
35
+ return make_uniq<RepeatRowFunctionData>(inputs, entry->second.GetValue<int64_t>());
29
36
  }
30
37
 
31
38
  static unique_ptr<GlobalTableFunctionState> RepeatRowInit(ClientContext &context, TableFunctionInitInput &input) {
@@ -33,7 +40,7 @@ static unique_ptr<GlobalTableFunctionState> RepeatRowInit(ClientContext &context
33
40
  }
34
41
 
35
42
  static void RepeatRowFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
36
- auto &bind_data = (const RepeatRowFunctionData &)*data_p.bind_data;
43
+ auto &bind_data = data_p.bind_data->Cast<RepeatRowFunctionData>();
37
44
  auto &state = data_p.global_state->Cast<RepeatRowOperatorData>();
38
45
 
39
46
  idx_t remaining = MinValue<idx_t>(bind_data.target_count - state.current_count, STANDARD_VECTOR_SIZE);
@@ -45,7 +52,7 @@ static void RepeatRowFunction(ClientContext &context, TableFunctionInput &data_p
45
52
  }
46
53
 
47
54
  static unique_ptr<NodeStatistics> RepeatRowCardinality(ClientContext &context, const FunctionData *bind_data_p) {
48
- auto &bind_data = (const RepeatRowFunctionData &)*bind_data_p;
55
+ auto &bind_data = bind_data_p->Cast<RepeatRowFunctionData>();
49
56
  return make_uniq<NodeStatistics>(bind_data.target_count, bind_data.target_count);
50
57
  }
51
58
 
@@ -456,7 +456,7 @@ bool ExtractFunctionData(FunctionEntry &entry, idx_t function_idx, DataChunk &ou
456
456
  }
457
457
 
458
458
  void DuckDBFunctionsFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
459
- auto &data = (DuckDBFunctionsData &)*data_p.global_state;
459
+ auto &data = data_p.global_state->Cast<DuckDBFunctionsData>();
460
460
  if (data.offset >= data.entries.size()) {
461
461
  // finished returning values
462
462
  return;
@@ -6,8 +6,8 @@ namespace duckdb {
6
6
 
7
7
  // FLAT, CONSTANT, DICTIONARY, SEQUENCE
8
8
  struct TestVectorBindData : public TableFunctionData {
9
- LogicalType type;
10
- bool all_flat;
9
+ vector<LogicalType> types;
10
+ bool all_flat = false;
11
11
  };
12
12
 
13
13
  struct TestVectorTypesData : public GlobalTableFunctionState {
@@ -19,16 +19,41 @@ struct TestVectorTypesData : public GlobalTableFunctionState {
19
19
  };
20
20
 
21
21
  struct TestVectorInfo {
22
- TestVectorInfo(const LogicalType &type, const map<LogicalTypeId, TestType> &test_type_map,
22
+ TestVectorInfo(const vector<LogicalType> &types, const map<LogicalTypeId, TestType> &test_type_map,
23
23
  vector<unique_ptr<DataChunk>> &entries)
24
- : type(type), test_type_map(test_type_map), entries(entries) {
24
+ : types(types), test_type_map(test_type_map), entries(entries) {
25
25
  }
26
26
 
27
- const LogicalType &type;
27
+ const vector<LogicalType> &types;
28
28
  const map<LogicalTypeId, TestType> &test_type_map;
29
29
  vector<unique_ptr<DataChunk>> &entries;
30
30
  };
31
31
 
32
+ struct TestGeneratedValues {
33
+ public:
34
+ void AddColumn(vector<Value> values) {
35
+ if (!column_values.empty() && column_values[0].size() != values.size()) {
36
+ throw InternalException("Size mismatch when adding a column to TestGeneratedValues");
37
+ }
38
+ column_values.push_back(std::move(values));
39
+ }
40
+
41
+ const Value &GetValue(idx_t row, idx_t column) const {
42
+ return column_values[column][row];
43
+ }
44
+
45
+ idx_t Rows() const {
46
+ return column_values.empty() ? 0 : column_values[0].size();
47
+ }
48
+
49
+ idx_t Columns() const {
50
+ return column_values.size();
51
+ }
52
+
53
+ private:
54
+ vector<vector<Value>> column_values;
55
+ };
56
+
32
57
  struct TestVectorFlat {
33
58
  static constexpr const idx_t TEST_VECTOR_CARDINALITY = 3;
34
59
 
@@ -75,14 +100,25 @@ struct TestVectorFlat {
75
100
  return result;
76
101
  }
77
102
 
103
+ static TestGeneratedValues GenerateValues(TestVectorInfo &info) {
104
+ // generate the values for each column
105
+ TestGeneratedValues generated_values;
106
+ for (auto &type : info.types) {
107
+ generated_values.AddColumn(GenerateValues(info, type));
108
+ }
109
+ return generated_values;
110
+ }
111
+
78
112
  static void Generate(TestVectorInfo &info) {
79
- vector<Value> result_values = GenerateValues(info, info.type);
80
- for (idx_t cur_row = 0; cur_row < result_values.size(); cur_row += STANDARD_VECTOR_SIZE) {
113
+ auto result_values = GenerateValues(info);
114
+ for (idx_t cur_row = 0; cur_row < result_values.Rows(); cur_row += STANDARD_VECTOR_SIZE) {
81
115
  auto result = make_uniq<DataChunk>();
82
- result->Initialize(Allocator::DefaultAllocator(), {info.type});
83
- auto cardinality = MinValue<idx_t>(STANDARD_VECTOR_SIZE, result_values.size() - cur_row);
84
- for (idx_t i = 0; i < cardinality; i++) {
85
- result->data[0].SetValue(i, result_values[cur_row + i]);
116
+ result->Initialize(Allocator::DefaultAllocator(), info.types);
117
+ auto cardinality = MinValue<idx_t>(STANDARD_VECTOR_SIZE, result_values.Rows() - cur_row);
118
+ for (idx_t c = 0; c < info.types.size(); c++) {
119
+ for (idx_t i = 0; i < cardinality; i++) {
120
+ result->data[c].SetValue(i, result_values.GetValue(cur_row + i, c));
121
+ }
86
122
  }
87
123
  result->SetCardinality(cardinality);
88
124
  info.entries.push_back(std::move(result));
@@ -92,13 +128,15 @@ struct TestVectorFlat {
92
128
 
93
129
  struct TestVectorConstant {
94
130
  static void Generate(TestVectorInfo &info) {
95
- auto values = TestVectorFlat::GenerateValues(info, info.type);
131
+ auto values = TestVectorFlat::GenerateValues(info);
96
132
  for (idx_t cur_row = 0; cur_row < TestVectorFlat::TEST_VECTOR_CARDINALITY; cur_row += STANDARD_VECTOR_SIZE) {
97
133
  auto result = make_uniq<DataChunk>();
98
- result->Initialize(Allocator::DefaultAllocator(), {info.type});
134
+ result->Initialize(Allocator::DefaultAllocator(), info.types);
99
135
  auto cardinality = MinValue<idx_t>(STANDARD_VECTOR_SIZE, TestVectorFlat::TEST_VECTOR_CARDINALITY - cur_row);
100
- result->data[0].SetValue(0, values[0]);
101
- result->data[0].SetVectorType(VectorType::CONSTANT_VECTOR);
136
+ for (idx_t c = 0; c < info.types.size(); c++) {
137
+ result->data[c].SetValue(0, values.GetValue(0, c));
138
+ result->data[c].SetVectorType(VectorType::CONSTANT_VECTOR);
139
+ }
102
140
  result->SetCardinality(cardinality);
103
141
 
104
142
  info.entries.push_back(std::move(result));
@@ -160,9 +198,11 @@ struct TestVectorSequence {
160
198
  static void Generate(TestVectorInfo &info) {
161
199
  #if STANDARD_VECTOR_SIZE > 2
162
200
  auto result = make_uniq<DataChunk>();
163
- result->Initialize(Allocator::DefaultAllocator(), {info.type});
201
+ result->Initialize(Allocator::DefaultAllocator(), info.types);
164
202
 
165
- GenerateVector(info, info.type, result->data[0]);
203
+ for (idx_t c = 0; c < info.types.size(); c++) {
204
+ GenerateVector(info, info.types[c], result->data[c]);
205
+ }
166
206
  result->SetCardinality(3);
167
207
  info.entries.push_back(std::move(result));
168
208
  #endif
@@ -195,11 +235,23 @@ struct TestVectorDictionary {
195
235
  static unique_ptr<FunctionData> TestVectorTypesBind(ClientContext &context, TableFunctionBindInput &input,
196
236
  vector<LogicalType> &return_types, vector<string> &names) {
197
237
  auto result = make_uniq<TestVectorBindData>();
198
- result->type = input.inputs[0].type();
199
- result->all_flat = BooleanValue::Get(input.inputs[1]);
200
-
201
- return_types.push_back(result->type);
202
- names.emplace_back("test_vector");
238
+ for (idx_t i = 0; i < input.inputs.size(); i++) {
239
+ string name = "test_vector";
240
+ if (i > 0) {
241
+ name += to_string(i + 1);
242
+ }
243
+ auto &input_val = input.inputs[i];
244
+ names.emplace_back(name);
245
+ return_types.push_back(input_val.type());
246
+ result->types.push_back(input_val.type());
247
+ }
248
+ for (auto &entry : input.named_parameters) {
249
+ if (entry.first == "all_flat") {
250
+ result->all_flat = BooleanValue::Get(entry.second);
251
+ } else {
252
+ throw InternalException("Unrecognized named parameter for test_vector_types");
253
+ }
254
+ }
203
255
  return std::move(result);
204
256
  }
205
257
 
@@ -215,7 +267,7 @@ unique_ptr<GlobalTableFunctionState> TestVectorTypesInit(ClientContext &context,
215
267
  test_type_map.insert(make_pair(test_type.type.id(), std::move(test_type)));
216
268
  }
217
269
 
218
- TestVectorInfo info(bind_data.type, test_type_map, result->entries);
270
+ TestVectorInfo info(bind_data.types, test_type_map, result->entries);
219
271
  TestVectorFlat::Generate(info);
220
272
  TestVectorConstant::Generate(info);
221
273
  TestVectorDictionary::Generate(info);
@@ -233,7 +285,7 @@ unique_ptr<GlobalTableFunctionState> TestVectorTypesInit(ClientContext &context,
233
285
  }
234
286
 
235
287
  void TestVectorTypesFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
236
- auto &data = (TestVectorTypesData &)*data_p.global_state;
288
+ auto &data = data_p.global_state->Cast<TestVectorTypesData>();
237
289
  if (data.offset >= data.entries.size()) {
238
290
  // finished returning values
239
291
  return;
@@ -243,8 +295,12 @@ void TestVectorTypesFunction(ClientContext &context, TableFunctionInput &data_p,
243
295
  }
244
296
 
245
297
  void TestVectorTypesFun::RegisterFunction(BuiltinFunctions &set) {
246
- set.AddFunction(TableFunction("test_vector_types", {LogicalType::ANY, LogicalType::BOOLEAN},
247
- TestVectorTypesFunction, TestVectorTypesBind, TestVectorTypesInit));
298
+ TableFunction test_vector_types("test_vector_types", {LogicalType::ANY}, TestVectorTypesFunction,
299
+ TestVectorTypesBind, TestVectorTypesInit);
300
+ test_vector_types.varargs = LogicalType::ANY;
301
+ test_vector_types.named_parameters["all_flat"] = LogicalType::BOOLEAN;
302
+
303
+ set.AddFunction(std::move(test_vector_types));
248
304
  }
249
305
 
250
306
  } // namespace duckdb
@@ -215,7 +215,7 @@ static unique_ptr<GlobalTableFunctionState> IndexScanInitGlobal(ClientContext &c
215
215
  auto &bind_data = input.bind_data->Cast<TableScanBindData>();
216
216
  data_ptr_t row_id_data = nullptr;
217
217
  if (!bind_data.result_ids.empty()) {
218
- row_id_data = (data_ptr_t)&bind_data.result_ids[0];
218
+ row_id_data = (data_ptr_t)&bind_data.result_ids[0]; // NOLINT - this is not pretty
219
219
  }
220
220
  auto result = make_uniq<IndexScanGlobalState>(row_id_data);
221
221
  auto &local_storage = LocalStorage::Get(context, bind_data.table.catalog);
@@ -350,7 +350,7 @@ void TableScanPushdownComplexFilter(ClientContext &context, LogicalGet &get, Fun
350
350
  } else if (expr.type == ExpressionType::COMPARE_BETWEEN) {
351
351
  // BETWEEN expression
352
352
  auto &between = expr.Cast<BoundBetweenExpression>();
353
- if (!between.input->Equals(index_expression.get())) {
353
+ if (!between.input->Equals(*index_expression)) {
354
354
  // expression doesn't match the current index expression
355
355
  continue;
356
356
  }
@@ -18,7 +18,7 @@ public:
18
18
  }
19
19
 
20
20
  bool Equals(const FunctionData &other_p) const override {
21
- auto &other = (const UnnestBindData &)other_p;
21
+ auto &other = other_p.Cast<UnnestBindData>();
22
22
  return input_type == other.input_type;
23
23
  }
24
24
  };
@@ -1,8 +1,8 @@
1
1
  #ifndef DUCKDB_VERSION
2
- #define DUCKDB_VERSION "0.8.1-dev31"
2
+ #define DUCKDB_VERSION "0.8.1-dev341"
3
3
  #endif
4
4
  #ifndef DUCKDB_SOURCE_ID
5
- #define DUCKDB_SOURCE_ID "8598919810"
5
+ #define DUCKDB_SOURCE_ID "b7d8029940"
6
6
  #endif
7
7
  #include "duckdb/function/table/system_functions.hpp"
8
8
  #include "duckdb/main/database.hpp"
@@ -32,7 +32,7 @@ static unique_ptr<GlobalTableFunctionState> PragmaVersionInit(ClientContext &con
32
32
  }
33
33
 
34
34
  static void PragmaVersionFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
35
- auto &data = (PragmaVersionData &)*data_p.global_state;
35
+ auto &data = data_p.global_state->Cast<PragmaVersionData>();
36
36
  if (data.finished) {
37
37
  // finished returning values
38
38
  return;
@@ -229,9 +229,6 @@ public:
229
229
  DUCKDB_API static LogicalType GetType(ClientContext &context, const string &catalog_name, const string &schema,
230
230
  const string &name);
231
231
 
232
- static bool TypeExists(ClientContext &context, const string &catalog_name, const string &schema,
233
- const string &name);
234
-
235
232
  template <class T>
236
233
  optional_ptr<T> GetEntry(ClientContext &context, const string &schema_name, const string &name,
237
234
  OnEntryNotFound if_not_found, QueryErrorContext error_context = QueryErrorContext()) {
@@ -333,13 +330,13 @@ public:
333
330
  template <class TARGET>
334
331
  TARGET &Cast() {
335
332
  D_ASSERT(dynamic_cast<TARGET *>(this));
336
- return (TARGET &)*this;
333
+ return reinterpret_cast<TARGET &>(*this);
337
334
  }
338
335
 
339
336
  template <class TARGET>
340
337
  const TARGET &Cast() const {
341
338
  D_ASSERT(dynamic_cast<const TARGET *>(this));
342
- return (const TARGET &)*this;
339
+ return reinterpret_cast<const TARGET &>(*this);
343
340
  }
344
341
  };
345
342
 
@@ -45,6 +45,8 @@ public:
45
45
  return true;
46
46
  }
47
47
 
48
+ void BindUpdateConstraints(LogicalGet &get, LogicalProjection &proj, LogicalUpdate &update) override;
49
+
48
50
  private:
49
51
  unique_ptr<CatalogEntry> RenameColumn(ClientContext &context, RenameColumnInfo &info);
50
52
  unique_ptr<CatalogEntry> AddColumn(ClientContext &context, AddColumnInfo &info);
@@ -40,6 +40,10 @@ class TableColumnInfo;
40
40
  class TableIndexInfo;
41
41
  class TableStorageInfo;
42
42
 
43
+ class LogicalGet;
44
+ class LogicalProjection;
45
+ class LogicalUpdate;
46
+
43
47
  //! A table catalog entry
44
48
  class TableCatalogEntry : public StandardEntry {
45
49
  public:
@@ -102,6 +106,8 @@ public:
102
106
  //! Returns the storage info of this table
103
107
  virtual TableStorageInfo GetStorageInfo(ClientContext &context) = 0;
104
108
 
109
+ DUCKDB_API virtual void BindUpdateConstraints(LogicalGet &get, LogicalProjection &proj, LogicalUpdate &update);
110
+
105
111
  protected:
106
112
  // This is used to serialize the entry by #Serialize(Serializer& ). It is virtual to allow
107
113
  // Custom catalog implementations to override the default implementation. We can not make
@@ -72,12 +72,12 @@ public:
72
72
  template <class TARGET>
73
73
  TARGET &Cast() {
74
74
  D_ASSERT(dynamic_cast<TARGET *>(this));
75
- return (TARGET &)*this;
75
+ return reinterpret_cast<TARGET &>(*this);
76
76
  }
77
77
  template <class TARGET>
78
78
  const TARGET &Cast() const {
79
79
  D_ASSERT(dynamic_cast<const TARGET *>(this));
80
- return (const TARGET &)*this;
80
+ return reinterpret_cast<const TARGET &>(*this);
81
81
  }
82
82
  };
83
83
 
@@ -35,14 +35,16 @@ private:
35
35
  static string WriteOptionallyQuoted(const string &input);
36
36
  };
37
37
 
38
+ enum class CatalogSetPathType { SET_SCHEMA, SET_SCHEMAS };
39
+
38
40
  //! The schema search path, in order by which entries are searched if no schema entry is provided
39
41
  class CatalogSearchPath {
40
42
  public:
41
43
  DUCKDB_API explicit CatalogSearchPath(ClientContext &client_p);
42
44
  CatalogSearchPath(const CatalogSearchPath &other) = delete;
43
45
 
44
- DUCKDB_API void Set(CatalogSearchEntry new_value, bool is_set_schema);
45
- DUCKDB_API void Set(vector<CatalogSearchEntry> new_paths, bool is_set_schema = false);
46
+ DUCKDB_API void Set(CatalogSearchEntry new_value, CatalogSetPathType set_type);
47
+ DUCKDB_API void Set(vector<CatalogSearchEntry> new_paths, CatalogSetPathType set_type);
46
48
  DUCKDB_API void Reset();
47
49
 
48
50
  DUCKDB_API const vector<CatalogSearchEntry> &Get();
@@ -56,9 +58,13 @@ public:
56
58
  DUCKDB_API vector<string> GetSchemasForCatalog(const string &catalog);
57
59
  DUCKDB_API vector<string> GetCatalogsForSchema(const string &schema);
58
60
 
61
+ DUCKDB_API bool SchemaInSearchPath(ClientContext &context, const string &catalog_name, const string &schema_name);
62
+
59
63
  private:
60
64
  void SetPaths(vector<CatalogSearchEntry> new_paths);
61
65
 
66
+ string GetSetName(CatalogSetPathType set_type);
67
+
62
68
  private:
63
69
  ClientContext &context;
64
70
  vector<CatalogSearchEntry> paths;
@@ -0,0 +1,97 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/catalog/default/builtin_types/types.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+ // This file is generated by scripts/generate_builtin_types.py
9
+
10
+ #pragma once
11
+
12
+ #include "duckdb/common/types.hpp"
13
+ #include "duckdb/common/array.hpp"
14
+
15
+ namespace duckdb {
16
+
17
+ struct DefaultType {
18
+ const char *name;
19
+ LogicalTypeId type;
20
+ };
21
+
22
+ using builtin_type_array = std::array<DefaultType, 70>;
23
+
24
+ static constexpr const builtin_type_array BUILTIN_TYPES{{
25
+ {"decimal", LogicalTypeId::DECIMAL},
26
+ {"dec", LogicalTypeId::DECIMAL},
27
+ {"numeric", LogicalTypeId::DECIMAL},
28
+ {"time", LogicalTypeId::TIME},
29
+ {"date", LogicalTypeId::DATE},
30
+ {"timestamp", LogicalTypeId::TIMESTAMP},
31
+ {"datetime", LogicalTypeId::TIMESTAMP},
32
+ {"timestamp_us", LogicalTypeId::TIMESTAMP},
33
+ {"timestamp_ms", LogicalTypeId::TIMESTAMP_MS},
34
+ {"timestamp_ns", LogicalTypeId::TIMESTAMP_NS},
35
+ {"timestamp_s", LogicalTypeId::TIMESTAMP_SEC},
36
+ {"timestamptz", LogicalTypeId::TIMESTAMP_TZ},
37
+ {"timetz", LogicalTypeId::TIME_TZ},
38
+ {"interval", LogicalTypeId::INTERVAL},
39
+ {"varchar", LogicalTypeId::VARCHAR},
40
+ {"bpchar", LogicalTypeId::VARCHAR},
41
+ {"string", LogicalTypeId::VARCHAR},
42
+ {"char", LogicalTypeId::VARCHAR},
43
+ {"nvarchar", LogicalTypeId::VARCHAR},
44
+ {"text", LogicalTypeId::VARCHAR},
45
+ {"blob", LogicalTypeId::BLOB},
46
+ {"bytea", LogicalTypeId::BLOB},
47
+ {"varbinary", LogicalTypeId::BLOB},
48
+ {"binary", LogicalTypeId::BLOB},
49
+ {"hugeint", LogicalTypeId::HUGEINT},
50
+ {"int128", LogicalTypeId::HUGEINT},
51
+ {"bigint", LogicalTypeId::BIGINT},
52
+ {"oid", LogicalTypeId::BIGINT},
53
+ {"long", LogicalTypeId::BIGINT},
54
+ {"int8", LogicalTypeId::BIGINT},
55
+ {"int64", LogicalTypeId::BIGINT},
56
+ {"ubigint", LogicalTypeId::UBIGINT},
57
+ {"uint64", LogicalTypeId::UBIGINT},
58
+ {"integer", LogicalTypeId::INTEGER},
59
+ {"int", LogicalTypeId::INTEGER},
60
+ {"int4", LogicalTypeId::INTEGER},
61
+ {"signed", LogicalTypeId::INTEGER},
62
+ {"integral", LogicalTypeId::INTEGER},
63
+ {"int32", LogicalTypeId::INTEGER},
64
+ {"uinteger", LogicalTypeId::UINTEGER},
65
+ {"uint32", LogicalTypeId::UINTEGER},
66
+ {"smallint", LogicalTypeId::SMALLINT},
67
+ {"int2", LogicalTypeId::SMALLINT},
68
+ {"short", LogicalTypeId::SMALLINT},
69
+ {"int16", LogicalTypeId::SMALLINT},
70
+ {"usmallint", LogicalTypeId::USMALLINT},
71
+ {"uint16", LogicalTypeId::USMALLINT},
72
+ {"tinyint", LogicalTypeId::TINYINT},
73
+ {"int1", LogicalTypeId::TINYINT},
74
+ {"utinyint", LogicalTypeId::UTINYINT},
75
+ {"uint8", LogicalTypeId::UTINYINT},
76
+ {"struct", LogicalTypeId::STRUCT},
77
+ {"row", LogicalTypeId::STRUCT},
78
+ {"list", LogicalTypeId::LIST},
79
+ {"map", LogicalTypeId::MAP},
80
+ {"union", LogicalTypeId::UNION},
81
+ {"bit", LogicalTypeId::BIT},
82
+ {"bitstring", LogicalTypeId::BIT},
83
+ {"boolean", LogicalTypeId::BOOLEAN},
84
+ {"bool", LogicalTypeId::BOOLEAN},
85
+ {"logical", LogicalTypeId::BOOLEAN},
86
+ {"uuid", LogicalTypeId::UUID},
87
+ {"guid", LogicalTypeId::UUID},
88
+ {"enum", LogicalTypeId::ENUM},
89
+ {"null", LogicalTypeId::SQLNULL},
90
+ {"float", LogicalTypeId::FLOAT},
91
+ {"real", LogicalTypeId::FLOAT},
92
+ {"float4", LogicalTypeId::FLOAT},
93
+ {"double", LogicalTypeId::DOUBLE},
94
+ {"float8", LogicalTypeId::DOUBLE}
95
+ }};
96
+
97
+ } // namespace duckdb