duckdb 0.7.2-dev1457.0 → 0.7.2-dev1533.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 (593) hide show
  1. package/binding.gyp +8 -8
  2. package/package.json +1 -1
  3. package/src/duckdb/extension/icu/icu-dateadd.cpp +2 -2
  4. package/src/duckdb/extension/icu/icu-datepart.cpp +3 -3
  5. package/src/duckdb/extension/icu/icu-datesub.cpp +2 -2
  6. package/src/duckdb/extension/icu/icu-datetrunc.cpp +1 -1
  7. package/src/duckdb/extension/icu/icu-extension.cpp +3 -3
  8. package/src/duckdb/extension/icu/icu-list-range.cpp +1 -1
  9. package/src/duckdb/extension/icu/icu-makedate.cpp +1 -1
  10. package/src/duckdb/extension/icu/icu-strptime.cpp +7 -7
  11. package/src/duckdb/extension/icu/icu-timebucket.cpp +6 -6
  12. package/src/duckdb/extension/icu/icu-timezone.cpp +4 -4
  13. package/src/duckdb/extension/json/include/json_executors.hpp +2 -2
  14. package/src/duckdb/extension/json/json_functions/copy_json.cpp +4 -4
  15. package/src/duckdb/extension/json/json_functions/json_create.cpp +3 -3
  16. package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +3 -3
  17. package/src/duckdb/extension/json/json_functions.cpp +2 -2
  18. package/src/duckdb/extension/parquet/parquet-extension.cpp +28 -28
  19. package/src/duckdb/extension/parquet/parquet_metadata.cpp +3 -3
  20. package/src/duckdb/src/catalog/catalog_entry/duck_index_entry.cpp +2 -2
  21. package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +9 -9
  22. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +17 -17
  23. package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +3 -3
  24. package/src/duckdb/src/catalog/catalog_entry/scalar_macro_catalog_entry.cpp +2 -2
  25. package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +2 -2
  26. package/src/duckdb/src/catalog/catalog_entry/sequence_catalog_entry.cpp +2 -2
  27. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +5 -5
  28. package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +2 -2
  29. package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +3 -3
  30. package/src/duckdb/src/catalog/catalog_entry.cpp +2 -2
  31. package/src/duckdb/src/catalog/catalog_set.cpp +28 -28
  32. package/src/duckdb/src/catalog/default/default_functions.cpp +2 -1
  33. package/src/duckdb/src/catalog/dependency_manager.cpp +4 -4
  34. package/src/duckdb/src/common/enums/logical_operator_type.cpp +2 -0
  35. package/src/duckdb/src/common/enums/physical_operator_type.cpp +2 -0
  36. package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
  37. package/src/duckdb/src/common/multi_file_reader.cpp +1 -1
  38. package/src/duckdb/src/common/row_operations/row_aggregate.cpp +3 -0
  39. package/src/duckdb/src/common/string_util.cpp +24 -2
  40. package/src/duckdb/src/common/tree_renderer.cpp +2 -4
  41. package/src/duckdb/src/common/types.cpp +3 -1
  42. package/src/duckdb/src/execution/column_binding_resolver.cpp +5 -5
  43. package/src/duckdb/src/execution/expression_executor.cpp +4 -3
  44. package/src/duckdb/src/execution/expression_executor_state.cpp +1 -1
  45. package/src/duckdb/src/execution/index/art/art.cpp +6 -8
  46. package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +7 -7
  47. package/src/duckdb/src/execution/operator/aggregate/grouped_aggregate_data.cpp +2 -2
  48. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +33 -33
  49. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +13 -13
  50. package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +3 -3
  51. package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +20 -20
  52. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +12 -12
  53. package/src/duckdb/src/execution/operator/helper/physical_batch_collector.cpp +5 -5
  54. package/src/duckdb/src/execution/operator/helper/physical_explain_analyze.cpp +2 -2
  55. package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +5 -5
  56. package/src/duckdb/src/execution/operator/helper/physical_limit_percent.cpp +4 -4
  57. package/src/duckdb/src/execution/operator/helper/physical_materialized_collector.cpp +4 -4
  58. package/src/duckdb/src/execution/operator/helper/physical_reservoir_sample.cpp +2 -2
  59. package/src/duckdb/src/execution/operator/helper/physical_streaming_limit.cpp +2 -2
  60. package/src/duckdb/src/execution/operator/helper/physical_streaming_sample.cpp +2 -2
  61. package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +4 -4
  62. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +8 -8
  63. package/src/duckdb/src/execution/operator/join/physical_cross_product.cpp +3 -3
  64. package/src/duckdb/src/execution/operator/join/physical_delim_join.cpp +3 -3
  65. package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +12 -12
  66. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +12 -12
  67. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +6 -5
  68. package/src/duckdb/src/execution/operator/join/physical_join.cpp +2 -2
  69. package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +13 -13
  70. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +10 -10
  71. package/src/duckdb/src/execution/operator/join/physical_positional_join.cpp +3 -3
  72. package/src/duckdb/src/execution/operator/order/physical_order.cpp +11 -11
  73. package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +6 -6
  74. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +7 -7
  75. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +8 -8
  76. package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +5 -5
  77. package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +1 -1
  78. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +8 -8
  79. package/src/duckdb/src/execution/operator/persistent/physical_update.cpp +7 -7
  80. package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +81 -0
  81. package/src/duckdb/src/execution/operator/projection/physical_tableinout_function.cpp +5 -5
  82. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +4 -5
  83. package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +1 -1
  84. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +4 -4
  85. package/src/duckdb/src/execution/operator/scan/physical_table_scan.cpp +7 -7
  86. package/src/duckdb/src/execution/operator/schema/physical_alter.cpp +1 -1
  87. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +1 -1
  88. package/src/duckdb/src/execution/operator/schema/physical_create_function.cpp +1 -1
  89. package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +8 -7
  90. package/src/duckdb/src/execution/operator/schema/physical_create_schema.cpp +1 -1
  91. package/src/duckdb/src/execution/operator/schema/physical_create_sequence.cpp +1 -1
  92. package/src/duckdb/src/execution/operator/schema/physical_create_table.cpp +1 -1
  93. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +3 -3
  94. package/src/duckdb/src/execution/operator/schema/physical_create_view.cpp +1 -1
  95. package/src/duckdb/src/execution/operator/schema/physical_detach.cpp +1 -1
  96. package/src/duckdb/src/execution/operator/schema/physical_drop.cpp +1 -1
  97. package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +2 -2
  98. package/src/duckdb/src/execution/physical_operator.cpp +2 -2
  99. package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +4 -4
  100. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +2 -2
  101. package/src/duckdb/src/execution/physical_plan/plan_create_index.cpp +1 -1
  102. package/src/duckdb/src/execution/physical_plan/plan_delete.cpp +1 -1
  103. package/src/duckdb/src/execution/physical_plan/plan_delim_join.cpp +2 -2
  104. package/src/duckdb/src/execution/physical_plan/plan_distinct.cpp +4 -1
  105. package/src/duckdb/src/execution/physical_plan/plan_pivot.cpp +14 -0
  106. package/src/duckdb/src/execution/physical_plan/plan_projection.cpp +1 -1
  107. package/src/duckdb/src/execution/physical_plan/plan_window.cpp +8 -8
  108. package/src/duckdb/src/execution/physical_plan_generator.cpp +49 -42
  109. package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +14 -14
  110. package/src/duckdb/src/function/aggregate/algebraic/avg.cpp +2 -2
  111. package/src/duckdb/src/function/aggregate/distributive/bitstring_agg.cpp +1 -1
  112. package/src/duckdb/src/function/aggregate/distributive/string_agg.cpp +2 -2
  113. package/src/duckdb/src/function/aggregate/holistic/approximate_quantile.cpp +1 -1
  114. package/src/duckdb/src/function/aggregate/holistic/quantile.cpp +1 -1
  115. package/src/duckdb/src/function/aggregate/holistic/reservoir_quantile.cpp +1 -1
  116. package/src/duckdb/src/function/aggregate/nested/list.cpp +3 -3
  117. package/src/duckdb/src/function/cast/enum_casts.cpp +3 -3
  118. package/src/duckdb/src/function/cast/list_casts.cpp +2 -2
  119. package/src/duckdb/src/function/cast/string_cast.cpp +6 -6
  120. package/src/duckdb/src/function/cast/struct_cast.cpp +4 -4
  121. package/src/duckdb/src/function/cast/union_casts.cpp +6 -6
  122. package/src/duckdb/src/function/function.cpp +4 -4
  123. package/src/duckdb/src/function/function_binder.cpp +2 -1
  124. package/src/duckdb/src/function/macro_function.cpp +3 -3
  125. package/src/duckdb/src/function/pragma/pragma_queries.cpp +1 -1
  126. package/src/duckdb/src/function/pragma_function.cpp +1 -1
  127. package/src/duckdb/src/function/scalar/date/date_part.cpp +1 -1
  128. package/src/duckdb/src/function/scalar/date/strftime.cpp +6 -6
  129. package/src/duckdb/src/function/scalar/generic/alias.cpp +1 -1
  130. package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +3 -3
  131. package/src/duckdb/src/function/scalar/generic/current_setting.cpp +2 -2
  132. package/src/duckdb/src/function/scalar/generic/stats.cpp +3 -3
  133. package/src/duckdb/src/function/scalar/list/list_aggregates.cpp +5 -5
  134. package/src/duckdb/src/function/scalar/list/list_lambdas.cpp +3 -3
  135. package/src/duckdb/src/function/scalar/list/list_sort.cpp +3 -3
  136. package/src/duckdb/src/function/scalar/math/numeric.cpp +3 -3
  137. package/src/duckdb/src/function/scalar/math/random.cpp +2 -2
  138. package/src/duckdb/src/function/scalar/math/setseed.cpp +2 -2
  139. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -2
  140. package/src/duckdb/src/function/scalar/sequence/nextval.cpp +4 -4
  141. package/src/duckdb/src/function/scalar/string/like.cpp +1 -1
  142. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +5 -5
  143. package/src/duckdb/src/function/scalar/string/regexp.cpp +11 -11
  144. package/src/duckdb/src/function/scalar/string/string_split.cpp +3 -3
  145. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +3 -3
  146. package/src/duckdb/src/function/scalar/struct/struct_pack.cpp +2 -2
  147. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +2 -2
  148. package/src/duckdb/src/function/scalar/union/union_extract.cpp +2 -2
  149. package/src/duckdb/src/function/scalar_macro_function.cpp +3 -3
  150. package/src/duckdb/src/function/table/arrow.cpp +5 -5
  151. package/src/duckdb/src/function/table/checkpoint.cpp +1 -1
  152. package/src/duckdb/src/function/table/glob.cpp +1 -1
  153. package/src/duckdb/src/function/table/pragma_detailed_profiling_output.cpp +1 -1
  154. package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
  155. package/src/duckdb/src/function/table/range.cpp +5 -5
  156. package/src/duckdb/src/function/table/read_csv.cpp +10 -10
  157. package/src/duckdb/src/function/table/repeat.cpp +1 -1
  158. package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +12 -12
  159. package/src/duckdb/src/function/table/system/duckdb_databases.cpp +1 -1
  160. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +2 -2
  161. package/src/duckdb/src/function/table/system/duckdb_indexes.cpp +1 -1
  162. package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +1 -1
  163. package/src/duckdb/src/function/table/system/duckdb_tables.cpp +2 -2
  164. package/src/duckdb/src/function/table/system/duckdb_views.cpp +1 -1
  165. package/src/duckdb/src/function/table/system/pragma_storage_info.cpp +1 -1
  166. package/src/duckdb/src/function/table/system/pragma_table_info.cpp +3 -3
  167. package/src/duckdb/src/function/table/system/test_vector_types.cpp +1 -1
  168. package/src/duckdb/src/function/table/table_scan.cpp +31 -31
  169. package/src/duckdb/src/function/table/unnest.cpp +4 -4
  170. package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
  171. package/src/duckdb/src/function/table_macro_function.cpp +2 -2
  172. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +13 -0
  173. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_index_entry.hpp +2 -2
  174. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +1 -1
  175. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/index_catalog_entry.hpp +4 -4
  176. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/macro_catalog_entry.hpp +3 -2
  177. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/scalar_macro_catalog_entry.hpp +1 -1
  178. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +2 -2
  179. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +2 -2
  180. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +2 -2
  181. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_macro_catalog_entry.hpp +1 -1
  182. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +2 -2
  183. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/view_catalog_entry.hpp +3 -3
  184. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +14 -3
  185. package/src/duckdb/src/include/duckdb/catalog/catalog_set.hpp +5 -5
  186. package/src/duckdb/src/include/duckdb/common/case_insensitive_map.hpp +2 -3
  187. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +1 -0
  188. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +2 -0
  189. package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +1 -1
  190. package/src/duckdb/src/include/duckdb/common/string_util.hpp +3 -0
  191. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +1 -1
  192. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_hash_aggregate.hpp +3 -0
  193. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_perfecthash_aggregate.hpp +3 -0
  194. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_streaming_window.hpp +3 -0
  195. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_ungrouped_aggregate.hpp +3 -0
  196. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +3 -0
  197. package/src/duckdb/src/include/duckdb/execution/operator/filter/physical_filter.hpp +3 -0
  198. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_execute.hpp +3 -0
  199. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_explain_analyze.hpp +3 -0
  200. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit.hpp +3 -0
  201. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit_percent.hpp +3 -0
  202. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_load.hpp +3 -0
  203. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_pragma.hpp +3 -0
  204. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_prepare.hpp +3 -0
  205. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_reset.hpp +3 -0
  206. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_set.hpp +3 -0
  207. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_streaming_limit.hpp +3 -0
  208. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_streaming_sample.hpp +3 -0
  209. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_transaction.hpp +3 -0
  210. package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_vacuum.hpp +3 -0
  211. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_blockwise_nl_join.hpp +3 -0
  212. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_cross_product.hpp +3 -0
  213. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_delim_join.hpp +3 -0
  214. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_hash_join.hpp +3 -0
  215. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_iejoin.hpp +3 -0
  216. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_index_join.hpp +3 -0
  217. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_join.hpp +3 -0
  218. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_nested_loop_join.hpp +3 -4
  219. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp +3 -0
  220. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_positional_join.hpp +3 -0
  221. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_order.hpp +3 -0
  222. package/src/duckdb/src/include/duckdb/execution/operator/order/physical_top_n.hpp +3 -0
  223. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +3 -0
  224. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +3 -0
  225. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_delete.hpp +3 -0
  226. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_export.hpp +3 -0
  227. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_insert.hpp +3 -0
  228. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_update.hpp +3 -0
  229. package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_pivot.hpp +38 -0
  230. package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_projection.hpp +3 -0
  231. package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_tableinout_function.hpp +4 -2
  232. package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_unnest.hpp +3 -1
  233. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +3 -0
  234. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_dummy_scan.hpp +3 -0
  235. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_empty_result.hpp +3 -0
  236. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_expression_scan.hpp +3 -0
  237. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_positional_scan.hpp +3 -0
  238. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_table_scan.hpp +3 -0
  239. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_alter.hpp +3 -0
  240. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_attach.hpp +3 -0
  241. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_function.hpp +3 -0
  242. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_index.hpp +3 -0
  243. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_schema.hpp +3 -0
  244. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_sequence.hpp +3 -0
  245. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_table.hpp +3 -0
  246. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_type.hpp +3 -0
  247. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_view.hpp +3 -0
  248. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_detach.hpp +3 -0
  249. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_drop.hpp +3 -0
  250. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +3 -0
  251. package/src/duckdb/src/include/duckdb/execution/operator/set/physical_union.hpp +4 -0
  252. package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +18 -57
  253. package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +150 -0
  254. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +1 -0
  255. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +11 -0
  256. package/src/duckdb/src/include/duckdb/function/copy_function.hpp +22 -0
  257. package/src/duckdb/src/include/duckdb/function/function.hpp +20 -4
  258. package/src/duckdb/src/include/duckdb/function/macro_function.hpp +3 -3
  259. package/src/duckdb/src/include/duckdb/function/pragma_function.hpp +1 -1
  260. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +1 -1
  261. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +11 -0
  262. package/src/duckdb/src/include/duckdb/function/scalar_macro_function.hpp +2 -2
  263. package/src/duckdb/src/include/duckdb/function/table_function.hpp +22 -0
  264. package/src/duckdb/src/include/duckdb/function/table_macro_function.hpp +3 -3
  265. package/src/duckdb/src/include/duckdb/main/client_config.hpp +3 -2
  266. package/src/duckdb/src/include/duckdb/main/settings.hpp +10 -0
  267. package/src/duckdb/src/include/duckdb/optimizer/rule/like_optimizations.hpp +1 -1
  268. package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +18 -0
  269. package/src/duckdb/src/include/duckdb/parser/constraint.hpp +18 -0
  270. package/src/duckdb/src/include/duckdb/parser/constraints/check_constraint.hpp +3 -0
  271. package/src/duckdb/src/include/duckdb/parser/constraints/foreign_key_constraint.hpp +3 -0
  272. package/src/duckdb/src/include/duckdb/parser/constraints/not_null_constraint.hpp +3 -0
  273. package/src/duckdb/src/include/duckdb/parser/constraints/unique_constraint.hpp +3 -0
  274. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +3 -0
  275. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +3 -0
  276. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +3 -0
  277. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +3 -0
  278. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +3 -0
  279. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +3 -0
  280. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +3 -0
  281. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +3 -0
  282. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +3 -0
  283. package/src/duckdb/src/include/duckdb/parser/expression/default_expression.hpp +3 -0
  284. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +3 -0
  285. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +3 -0
  286. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +3 -0
  287. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +3 -0
  288. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +3 -0
  289. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +3 -0
  290. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +3 -0
  291. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +3 -0
  292. package/src/duckdb/src/include/duckdb/parser/query_node/list.hpp +3 -0
  293. package/src/duckdb/src/include/duckdb/parser/query_node/recursive_cte_node.hpp +3 -0
  294. package/src/duckdb/src/include/duckdb/parser/query_node/select_node.hpp +3 -0
  295. package/src/duckdb/src/include/duckdb/parser/query_node/set_operation_node.hpp +3 -0
  296. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +18 -0
  297. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +18 -0
  298. package/src/duckdb/src/include/duckdb/parser/statement/alter_statement.hpp +3 -0
  299. package/src/duckdb/src/include/duckdb/parser/statement/attach_statement.hpp +3 -0
  300. package/src/duckdb/src/include/duckdb/parser/statement/call_statement.hpp +3 -0
  301. package/src/duckdb/src/include/duckdb/parser/statement/copy_statement.hpp +3 -0
  302. package/src/duckdb/src/include/duckdb/parser/statement/create_statement.hpp +3 -0
  303. package/src/duckdb/src/include/duckdb/parser/statement/delete_statement.hpp +3 -0
  304. package/src/duckdb/src/include/duckdb/parser/statement/detach_statement.hpp +3 -0
  305. package/src/duckdb/src/include/duckdb/parser/statement/drop_statement.hpp +3 -0
  306. package/src/duckdb/src/include/duckdb/parser/statement/execute_statement.hpp +3 -0
  307. package/src/duckdb/src/include/duckdb/parser/statement/explain_statement.hpp +3 -0
  308. package/src/duckdb/src/include/duckdb/parser/statement/export_statement.hpp +3 -0
  309. package/src/duckdb/src/include/duckdb/parser/statement/extension_statement.hpp +3 -0
  310. package/src/duckdb/src/include/duckdb/parser/statement/insert_statement.hpp +3 -0
  311. package/src/duckdb/src/include/duckdb/parser/statement/list.hpp +1 -0
  312. package/src/duckdb/src/include/duckdb/parser/statement/load_statement.hpp +3 -0
  313. package/src/duckdb/src/include/duckdb/parser/statement/logical_plan_statement.hpp +3 -0
  314. package/src/duckdb/src/include/duckdb/parser/statement/multi_statement.hpp +3 -0
  315. package/src/duckdb/src/include/duckdb/parser/statement/pragma_statement.hpp +3 -0
  316. package/src/duckdb/src/include/duckdb/parser/statement/prepare_statement.hpp +3 -0
  317. package/src/duckdb/src/include/duckdb/parser/statement/relation_statement.hpp +3 -0
  318. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +3 -0
  319. package/src/duckdb/src/include/duckdb/parser/statement/set_statement.hpp +3 -0
  320. package/src/duckdb/src/include/duckdb/parser/statement/show_statement.hpp +3 -0
  321. package/src/duckdb/src/include/duckdb/parser/statement/transaction_statement.hpp +3 -0
  322. package/src/duckdb/src/include/duckdb/parser/statement/update_statement.hpp +3 -0
  323. package/src/duckdb/src/include/duckdb/parser/statement/vacuum_statement.hpp +3 -0
  324. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +3 -0
  325. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +3 -0
  326. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +3 -0
  327. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +3 -0
  328. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +14 -0
  329. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +3 -0
  330. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +3 -0
  331. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +17 -0
  332. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -0
  333. package/src/duckdb/src/include/duckdb/planner/binder.hpp +2 -0
  334. package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +18 -0
  335. package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +17 -0
  336. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +5 -1
  337. package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +17 -0
  338. package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +1 -0
  339. package/src/duckdb/src/include/duckdb/planner/constraints/bound_check_constraint.hpp +3 -0
  340. package/src/duckdb/src/include/duckdb/planner/constraints/bound_foreign_key_constraint.hpp +3 -0
  341. package/src/duckdb/src/include/duckdb/planner/constraints/bound_not_null_constraint.hpp +3 -0
  342. package/src/duckdb/src/include/duckdb/planner/constraints/bound_unique_constraint.hpp +3 -0
  343. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +4 -0
  344. package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +3 -0
  345. package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +3 -0
  346. package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +3 -0
  347. package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +3 -0
  348. package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +3 -0
  349. package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +3 -0
  350. package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +3 -0
  351. package/src/duckdb/src/include/duckdb/planner/expression/bound_default_expression.hpp +3 -0
  352. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +3 -0
  353. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +3 -0
  354. package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +3 -0
  355. package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +3 -0
  356. package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +3 -0
  357. package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +3 -0
  358. package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +3 -0
  359. package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +3 -0
  360. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +4 -1
  361. package/src/duckdb/src/include/duckdb/planner/expression_binder/table_function_binder.hpp +1 -1
  362. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +2 -0
  363. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +17 -0
  364. package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -0
  365. package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +1 -0
  366. package/src/duckdb/src/include/duckdb/planner/operator/logical_aggregate.hpp +3 -0
  367. package/src/duckdb/src/include/duckdb/planner/operator/logical_any_join.hpp +3 -0
  368. package/src/duckdb/src/include/duckdb/planner/operator/logical_asof_join.hpp +3 -0
  369. package/src/duckdb/src/include/duckdb/planner/operator/logical_column_data_get.hpp +3 -0
  370. package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +3 -0
  371. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +3 -0
  372. package/src/duckdb/src/include/duckdb/planner/operator/logical_create.hpp +3 -0
  373. package/src/duckdb/src/include/duckdb/planner/operator/logical_create_index.hpp +3 -0
  374. package/src/duckdb/src/include/duckdb/planner/operator/logical_create_table.hpp +3 -0
  375. package/src/duckdb/src/include/duckdb/planner/operator/logical_cross_product.hpp +3 -0
  376. package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +3 -0
  377. package/src/duckdb/src/include/duckdb/planner/operator/logical_delete.hpp +3 -0
  378. package/src/duckdb/src/include/duckdb/planner/operator/logical_delim_get.hpp +3 -0
  379. package/src/duckdb/src/include/duckdb/planner/operator/logical_delim_join.hpp +3 -0
  380. package/src/duckdb/src/include/duckdb/planner/operator/logical_distinct.hpp +12 -4
  381. package/src/duckdb/src/include/duckdb/planner/operator/logical_dummy_scan.hpp +3 -0
  382. package/src/duckdb/src/include/duckdb/planner/operator/logical_empty_result.hpp +3 -0
  383. package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +3 -0
  384. package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +3 -0
  385. package/src/duckdb/src/include/duckdb/planner/operator/logical_export.hpp +3 -0
  386. package/src/duckdb/src/include/duckdb/planner/operator/logical_expression_get.hpp +3 -0
  387. package/src/duckdb/src/include/duckdb/planner/operator/logical_extension_operator.hpp +4 -0
  388. package/src/duckdb/src/include/duckdb/planner/operator/logical_filter.hpp +3 -0
  389. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +3 -0
  390. package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +3 -0
  391. package/src/duckdb/src/include/duckdb/planner/operator/logical_join.hpp +3 -0
  392. package/src/duckdb/src/include/duckdb/planner/operator/logical_limit.hpp +3 -0
  393. package/src/duckdb/src/include/duckdb/planner/operator/logical_limit_percent.hpp +3 -0
  394. package/src/duckdb/src/include/duckdb/planner/operator/logical_order.hpp +3 -0
  395. package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +36 -0
  396. package/src/duckdb/src/include/duckdb/planner/operator/logical_positional_join.hpp +3 -0
  397. package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +3 -0
  398. package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +3 -0
  399. package/src/duckdb/src/include/duckdb/planner/operator/logical_projection.hpp +3 -0
  400. package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +9 -5
  401. package/src/duckdb/src/include/duckdb/planner/operator/logical_reset.hpp +3 -0
  402. package/src/duckdb/src/include/duckdb/planner/operator/logical_sample.hpp +3 -0
  403. package/src/duckdb/src/include/duckdb/planner/operator/logical_set.hpp +3 -0
  404. package/src/duckdb/src/include/duckdb/planner/operator/logical_set_operation.hpp +3 -0
  405. package/src/duckdb/src/include/duckdb/planner/operator/logical_show.hpp +3 -0
  406. package/src/duckdb/src/include/duckdb/planner/operator/logical_simple.hpp +3 -0
  407. package/src/duckdb/src/include/duckdb/planner/operator/logical_top_n.hpp +3 -0
  408. package/src/duckdb/src/include/duckdb/planner/operator/logical_unconditional_join.hpp +3 -0
  409. package/src/duckdb/src/include/duckdb/planner/operator/logical_unnest.hpp +3 -0
  410. package/src/duckdb/src/include/duckdb/planner/operator/logical_update.hpp +3 -0
  411. package/src/duckdb/src/include/duckdb/planner/operator/logical_window.hpp +3 -0
  412. package/src/duckdb/src/include/duckdb/planner/query_node/bound_recursive_cte_node.hpp +3 -0
  413. package/src/duckdb/src/include/duckdb/planner/query_node/bound_select_node.hpp +3 -0
  414. package/src/duckdb/src/include/duckdb/planner/query_node/bound_set_operation_node.hpp +3 -0
  415. package/src/duckdb/src/include/duckdb/planner/query_node/list.hpp +3 -0
  416. package/src/duckdb/src/include/duckdb/planner/tableref/bound_basetableref.hpp +3 -0
  417. package/src/duckdb/src/include/duckdb/planner/tableref/bound_cteref.hpp +3 -0
  418. package/src/duckdb/src/include/duckdb/planner/tableref/bound_dummytableref.hpp +3 -0
  419. package/src/duckdb/src/include/duckdb/planner/tableref/bound_expressionlistref.hpp +3 -0
  420. package/src/duckdb/src/include/duckdb/planner/tableref/bound_joinref.hpp +3 -0
  421. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +43 -0
  422. package/src/duckdb/src/include/duckdb/planner/tableref/bound_pos_join_ref.hpp +3 -0
  423. package/src/duckdb/src/include/duckdb/planner/tableref/bound_subqueryref.hpp +3 -0
  424. package/src/duckdb/src/include/duckdb/planner/tableref/bound_table_function.hpp +3 -0
  425. package/src/duckdb/src/include/duckdb/planner/tableref/list.hpp +1 -0
  426. package/src/duckdb/src/include/duckdb/storage/index.hpp +15 -2
  427. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +17 -17
  428. package/src/duckdb/src/include/duckdb/transaction/commit_state.hpp +1 -1
  429. package/src/duckdb/src/main/capi/table_function-c.cpp +9 -9
  430. package/src/duckdb/src/main/client_context.cpp +1 -1
  431. package/src/duckdb/src/main/config.cpp +1 -0
  432. package/src/duckdb/src/main/query_profiler.cpp +2 -2
  433. package/src/duckdb/src/main/relation/aggregate_relation.cpp +1 -1
  434. package/src/duckdb/src/main/relation/filter_relation.cpp +1 -1
  435. package/src/duckdb/src/main/relation/projection_relation.cpp +1 -1
  436. package/src/duckdb/src/main/relation.cpp +1 -1
  437. package/src/duckdb/src/main/settings/settings.cpp +17 -1
  438. package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +3 -3
  439. package/src/duckdb/src/optimizer/common_aggregate_optimizer.cpp +1 -1
  440. package/src/duckdb/src/optimizer/cse_optimizer.cpp +1 -1
  441. package/src/duckdb/src/optimizer/deliminator.cpp +11 -11
  442. package/src/duckdb/src/optimizer/expression_heuristics.cpp +11 -11
  443. package/src/duckdb/src/optimizer/expression_rewriter.cpp +1 -1
  444. package/src/duckdb/src/optimizer/filter_combiner.cpp +40 -38
  445. package/src/duckdb/src/optimizer/filter_pullup.cpp +2 -2
  446. package/src/duckdb/src/optimizer/filter_pushdown.cpp +1 -1
  447. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +8 -8
  448. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +24 -24
  449. package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +12 -12
  450. package/src/duckdb/src/optimizer/pullup/pullup_filter.cpp +1 -1
  451. package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
  452. package/src/duckdb/src/optimizer/pullup/pullup_set_operation.cpp +3 -3
  453. package/src/duckdb/src/optimizer/pushdown/pushdown_aggregate.cpp +3 -3
  454. package/src/duckdb/src/optimizer/pushdown/pushdown_filter.cpp +1 -1
  455. package/src/duckdb/src/optimizer/pushdown/pushdown_get.cpp +1 -1
  456. package/src/duckdb/src/optimizer/pushdown/pushdown_inner_join.cpp +3 -3
  457. package/src/duckdb/src/optimizer/pushdown/pushdown_left_join.cpp +3 -3
  458. package/src/duckdb/src/optimizer/pushdown/pushdown_limit.cpp +1 -1
  459. package/src/duckdb/src/optimizer/pushdown/pushdown_mark_join.cpp +3 -3
  460. package/src/duckdb/src/optimizer/pushdown/pushdown_projection.cpp +2 -2
  461. package/src/duckdb/src/optimizer/pushdown/pushdown_set_operation.cpp +4 -4
  462. package/src/duckdb/src/optimizer/pushdown/pushdown_single_join.cpp +1 -1
  463. package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -2
  464. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +13 -9
  465. package/src/duckdb/src/optimizer/rule/arithmetic_simplification.cpp +20 -20
  466. package/src/duckdb/src/optimizer/rule/case_simplification.cpp +8 -8
  467. package/src/duckdb/src/optimizer/rule/comparison_simplification.cpp +14 -14
  468. package/src/duckdb/src/optimizer/rule/conjunction_simplification.cpp +5 -5
  469. package/src/duckdb/src/optimizer/rule/date_part_simplification.cpp +2 -2
  470. package/src/duckdb/src/optimizer/rule/distributivity.cpp +16 -16
  471. package/src/duckdb/src/optimizer/rule/empty_needle_removal.cpp +4 -5
  472. package/src/duckdb/src/optimizer/rule/enum_comparison.cpp +8 -9
  473. package/src/duckdb/src/optimizer/rule/in_clause_simplification_rule.cpp +13 -13
  474. package/src/duckdb/src/optimizer/rule/like_optimizations.cpp +12 -12
  475. package/src/duckdb/src/optimizer/rule/move_constants.cpp +31 -31
  476. package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +4 -4
  477. package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +10 -10
  478. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +9 -8
  479. package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +2 -2
  480. package/src/duckdb/src/optimizer/statistics_propagator.cpp +31 -20
  481. package/src/duckdb/src/optimizer/topn_optimizer.cpp +2 -2
  482. package/src/duckdb/src/optimizer/unnest_rewriter.cpp +13 -13
  483. package/src/duckdb/src/parser/column_definition.cpp +3 -3
  484. package/src/duckdb/src/parser/expression/columnref_expression.cpp +2 -5
  485. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +1 -1
  486. package/src/duckdb/src/parser/expression/constant_expression.cpp +1 -1
  487. package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +1 -1
  488. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +20 -20
  489. package/src/duckdb/src/parser/parser.cpp +10 -10
  490. package/src/duckdb/src/parser/query_node/recursive_cte_node.cpp +4 -4
  491. package/src/duckdb/src/parser/query_node/select_node.cpp +10 -10
  492. package/src/duckdb/src/parser/query_node/set_operation_node.cpp +4 -4
  493. package/src/duckdb/src/parser/statement/insert_statement.cpp +1 -1
  494. package/src/duckdb/src/parser/statement/select_statement.cpp +2 -2
  495. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +1 -1
  496. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +3 -3
  497. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +2 -42
  498. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +1 -1
  499. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +1 -1
  500. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +0 -1
  501. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +5 -2
  502. package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +5 -5
  503. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +20 -20
  504. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +3 -3
  505. package/src/duckdb/src/planner/bind_context.cpp +11 -0
  506. package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +47 -4
  507. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +5 -6
  508. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +2 -2
  509. package/src/duckdb/src/planner/binder/expression/bind_macro_expression.cpp +3 -3
  510. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +8 -8
  511. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +23 -29
  512. package/src/duckdb/src/planner/binder/query_node/bind_setop_node.cpp +2 -2
  513. package/src/duckdb/src/planner/binder/query_node/bind_table_macro_node.cpp +1 -1
  514. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +3 -3
  515. package/src/duckdb/src/planner/binder/query_node/plan_recursive_cte_node.cpp +2 -3
  516. package/src/duckdb/src/planner/binder/query_node/plan_select_node.cpp +0 -2
  517. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +1 -1
  518. package/src/duckdb/src/planner/binder/statement/bind_call.cpp +3 -2
  519. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +1 -1
  520. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +17 -16
  521. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +7 -6
  522. package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +3 -2
  523. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +1 -1
  524. package/src/duckdb/src/planner/binder/statement/bind_extension.cpp +1 -1
  525. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +4 -4
  526. package/src/duckdb/src/planner/binder/statement/bind_set.cpp +2 -2
  527. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -1
  528. package/src/duckdb/src/planner/binder/statement/bind_vacuum.cpp +2 -2
  529. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +4 -3
  530. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +303 -78
  531. package/src/duckdb/src/planner/binder/tableref/bind_subqueryref.cpp +4 -4
  532. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +10 -10
  533. package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +6 -6
  534. package/src/duckdb/src/planner/binder/tableref/plan_pivotref.cpp +13 -0
  535. package/src/duckdb/src/planner/binder.cpp +52 -48
  536. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +8 -8
  537. package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
  538. package/src/duckdb/src/planner/expression/bound_case_expression.cpp +1 -1
  539. package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +5 -5
  540. package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
  541. package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +3 -4
  542. package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
  543. package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
  544. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +4 -4
  545. package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -4
  546. package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
  547. package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +2 -2
  548. package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +3 -3
  549. package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
  550. package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +2 -2
  551. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +16 -16
  552. package/src/duckdb/src/planner/expression_binder/alter_binder.cpp +1 -1
  553. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +3 -3
  554. package/src/duckdb/src/planner/expression_binder/check_binder.cpp +1 -1
  555. package/src/duckdb/src/planner/expression_binder/constant_binder.cpp +11 -1
  556. package/src/duckdb/src/planner/expression_binder/group_binder.cpp +2 -2
  557. package/src/duckdb/src/planner/expression_binder/index_binder.cpp +1 -1
  558. package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +3 -3
  559. package/src/duckdb/src/planner/expression_binder/order_binder.cpp +3 -3
  560. package/src/duckdb/src/planner/expression_binder/qualify_binder.cpp +2 -1
  561. package/src/duckdb/src/planner/expression_binder/table_function_binder.cpp +7 -3
  562. package/src/duckdb/src/planner/expression_binder.cpp +24 -32
  563. package/src/duckdb/src/planner/expression_iterator.cpp +17 -17
  564. package/src/duckdb/src/planner/joinside.cpp +2 -2
  565. package/src/duckdb/src/planner/logical_operator.cpp +3 -0
  566. package/src/duckdb/src/planner/logical_operator_visitor.cpp +26 -26
  567. package/src/duckdb/src/planner/operator/logical_distinct.cpp +3 -1
  568. package/src/duckdb/src/planner/operator/logical_filter.cpp +1 -1
  569. package/src/duckdb/src/planner/operator/logical_join.cpp +1 -1
  570. package/src/duckdb/src/planner/operator/logical_pivot.cpp +35 -0
  571. package/src/duckdb/src/planner/operator/logical_recursive_cte.cpp +1 -1
  572. package/src/duckdb/src/planner/pragma_handler.cpp +2 -2
  573. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +25 -23
  574. package/src/duckdb/src/planner/subquery/rewrite_correlated_expressions.cpp +2 -2
  575. package/src/duckdb/src/planner/table_binding.cpp +8 -8
  576. package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +1 -1
  577. package/src/duckdb/src/storage/data_table.cpp +2 -1
  578. package/src/duckdb/src/storage/index.cpp +4 -5
  579. package/src/duckdb/src/storage/local_storage.cpp +2 -1
  580. package/src/duckdb/src/storage/table/row_group_collection.cpp +1 -1
  581. package/src/duckdb/src/storage/write_ahead_log.cpp +42 -42
  582. package/src/duckdb/src/transaction/commit_state.cpp +35 -35
  583. package/src/duckdb/src/transaction/duck_transaction.cpp +1 -1
  584. package/src/duckdb/src/transaction/rollback_state.cpp +1 -1
  585. package/src/duckdb/src/verification/deserialized_statement_verifier.cpp +1 -1
  586. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +773 -793
  587. package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +1 -11
  588. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +17408 -17751
  589. package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +5 -5
  590. package/src/duckdb/ub_src_execution_operator_projection.cpp +2 -0
  591. package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
  592. package/src/duckdb/ub_src_planner_binder_tableref.cpp +2 -0
  593. package/src/duckdb/ub_src_planner_operator.cpp +2 -0
@@ -32,7 +32,7 @@ static unique_ptr<GlobalTableFunctionState> GlobFunctionInit(ClientContext &cont
32
32
  }
33
33
 
34
34
  static void GlobFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
35
- auto &bind_data = (GlobFunctionBindData &)*data_p.bind_data;
35
+ auto &bind_data = data_p.bind_data->Cast<GlobFunctionBindData>();
36
36
  auto &state = (GlobFunctionState &)*data_p.global_state;
37
37
 
38
38
  idx_t count = 0;
@@ -108,7 +108,7 @@ static void ExtractFunctions(ColumnDataCollection &collection, ExpressionInfo &i
108
108
 
109
109
  static void PragmaDetailedProfilingOutputFunction(ClientContext &context, TableFunctionInput &data_p,
110
110
  DataChunk &output) {
111
- auto &state = (PragmaDetailedProfilingOutputOperatorData &)*data_p.global_state;
111
+ auto &state = data_p.global_state->Cast<PragmaDetailedProfilingOutputOperatorData>();
112
112
  auto &data = (PragmaDetailedProfilingOutputData &)*data_p.bind_data;
113
113
 
114
114
  if (!state.initialized) {
@@ -61,7 +61,7 @@ unique_ptr<GlobalTableFunctionState> PragmaLastProfilingOutputInit(ClientContext
61
61
  }
62
62
 
63
63
  static void PragmaLastProfilingOutputFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
64
- auto &state = (PragmaLastProfilingOutputOperatorData &)*data_p.global_state;
64
+ auto &state = data_p.global_state->Cast<PragmaLastProfilingOutputOperatorData>();
65
65
  auto &data = (PragmaLastProfilingOutputData &)*data_p.bind_data;
66
66
  if (!state.initialized) {
67
67
  // create a ColumnDataCollection
@@ -91,7 +91,7 @@ static unique_ptr<GlobalTableFunctionState> RangeFunctionInit(ClientContext &con
91
91
  }
92
92
 
93
93
  static void RangeFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
94
- auto &bind_data = (RangeFunctionBindData &)*data_p.bind_data;
94
+ auto &bind_data = data_p.bind_data->Cast<RangeFunctionBindData>();
95
95
  auto &state = (RangeFunctionState &)*data_p.global_state;
96
96
 
97
97
  auto increment = bind_data.increment;
@@ -112,7 +112,7 @@ static void RangeFunction(ClientContext &context, TableFunctionInput &data_p, Da
112
112
  }
113
113
 
114
114
  unique_ptr<NodeStatistics> RangeCardinality(ClientContext &context, const FunctionData *bind_data_p) {
115
- auto &bind_data = (RangeFunctionBindData &)*bind_data_p;
115
+ auto &bind_data = bind_data_p->Cast<RangeFunctionBindData>();
116
116
  idx_t cardinality = Hugeint::Cast<idx_t>((bind_data.end - bind_data.start) / bind_data.increment);
117
117
  return make_uniq<NodeStatistics>(cardinality, cardinality);
118
118
  }
@@ -134,7 +134,7 @@ public:
134
134
  other.inclusive_bound == inclusive_bound && other.greater_than_check == greater_than_check;
135
135
  }
136
136
 
137
- bool Finished(timestamp_t current_value) {
137
+ bool Finished(timestamp_t current_value) const {
138
138
  if (greater_than_check) {
139
139
  if (inclusive_bound) {
140
140
  return current_value > end;
@@ -207,12 +207,12 @@ struct RangeDateTimeState : public GlobalTableFunctionState {
207
207
  };
208
208
 
209
209
  static unique_ptr<GlobalTableFunctionState> RangeDateTimeInit(ClientContext &context, TableFunctionInitInput &input) {
210
- auto &bind_data = (RangeDateTimeBindData &)*input.bind_data;
210
+ auto &bind_data = input.bind_data->Cast<RangeDateTimeBindData>();
211
211
  return make_uniq<RangeDateTimeState>(bind_data.start);
212
212
  }
213
213
 
214
214
  static void RangeDateTimeFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
215
- auto &bind_data = (RangeDateTimeBindData &)*data_p.bind_data;
215
+ auto &bind_data = data_p.bind_data->Cast<RangeDateTimeBindData>();
216
216
  auto &state = (RangeDateTimeState &)*data_p.global_state;
217
217
  if (state.finished) {
218
218
  return;
@@ -277,7 +277,7 @@ public:
277
277
  public:
278
278
  idx_t MaxThreads() const override;
279
279
  //! Updates the CSV reader with the next buffer to read. Returns false if no more buffers are available.
280
- bool Next(ClientContext &context, ReadCSVData &bind_data, unique_ptr<ParallelCSVReader> &reader);
280
+ bool Next(ClientContext &context, const ReadCSVData &bind_data, unique_ptr<ParallelCSVReader> &reader);
281
281
  //! Verify if the CSV File was read correctly
282
282
  void Verify();
283
283
 
@@ -402,7 +402,7 @@ void ParallelCSVGlobalState::Verify() {
402
402
  }
403
403
  }
404
404
 
405
- bool ParallelCSVGlobalState::Next(ClientContext &context, ReadCSVData &bind_data,
405
+ bool ParallelCSVGlobalState::Next(ClientContext &context, const ReadCSVData &bind_data,
406
406
  unique_ptr<ParallelCSVReader> &reader) {
407
407
  lock_guard<mutex> parallel_lock(main_mutex);
408
408
  if (!current_buffer) {
@@ -506,8 +506,8 @@ public:
506
506
 
507
507
  unique_ptr<LocalTableFunctionState> ParallelReadCSVInitLocal(ExecutionContext &context, TableFunctionInitInput &input,
508
508
  GlobalTableFunctionState *global_state_p) {
509
- auto &csv_data = (ReadCSVData &)*input.bind_data;
510
- auto &global_state = (ParallelCSVGlobalState &)*global_state_p;
509
+ auto &csv_data = input.bind_data->Cast<ReadCSVData>();
510
+ auto &global_state = global_state_p->Cast<ParallelCSVGlobalState>();
511
511
  unique_ptr<ParallelCSVReader> csv_reader;
512
512
  auto has_next = global_state.Next(context.client, csv_data, csv_reader);
513
513
  if (!has_next) {
@@ -518,9 +518,9 @@ unique_ptr<LocalTableFunctionState> ParallelReadCSVInitLocal(ExecutionContext &c
518
518
  }
519
519
 
520
520
  static void ParallelReadCSVFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
521
- auto &bind_data = (ReadCSVData &)*data_p.bind_data;
522
- auto &csv_global_state = (ParallelCSVGlobalState &)*data_p.global_state;
523
- auto &csv_local_state = (ParallelCSVLocalState &)*data_p.local_state;
521
+ auto &bind_data = data_p.bind_data->Cast<ReadCSVData>();
522
+ auto &csv_global_state = data_p.global_state->Cast<ParallelCSVGlobalState>();
523
+ auto &csv_local_state = data_p.local_state->Cast<ParallelCSVLocalState>();
524
524
 
525
525
  if (!csv_local_state.csv_reader) {
526
526
  // no csv_reader was set, this can happen when a filename-based filter has filtered out all possible files
@@ -694,7 +694,7 @@ unique_ptr<LocalTableFunctionState> SingleThreadedReadCSVInitLocal(ExecutionCont
694
694
  static void SingleThreadedCSVFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
695
695
  auto &bind_data = (ReadCSVData &)*data_p.bind_data;
696
696
  auto &data = (SingleThreadedCSVState &)*data_p.global_state;
697
- auto &lstate = (SingleThreadedCSVLocalState &)*data_p.local_state;
697
+ auto &lstate = data_p.local_state->Cast<SingleThreadedCSVLocalState>();
698
698
  if (!lstate.csv_reader) {
699
699
  // no csv_reader was set, this can happen when a filename-based filter has filtered out all possible files
700
700
  return;
@@ -771,10 +771,10 @@ static idx_t CSVReaderGetBatchIndex(ClientContext &context, const FunctionData *
771
771
  LocalTableFunctionState *local_state, GlobalTableFunctionState *global_state) {
772
772
  auto &bind_data = (ReadCSVData &)*bind_data_p;
773
773
  if (bind_data.single_threaded) {
774
- auto &data = (SingleThreadedCSVLocalState &)*local_state;
774
+ auto &data = local_state->Cast<SingleThreadedCSVLocalState>();
775
775
  return data.file_index;
776
776
  }
777
- auto &data = (ParallelCSVLocalState &)*local_state;
777
+ auto &data = local_state->Cast<ParallelCSVLocalState>();
778
778
  return data.csv_reader->buffer->batch_index;
779
779
  }
780
780
 
@@ -32,7 +32,7 @@ static unique_ptr<GlobalTableFunctionState> RepeatInit(ClientContext &context, T
32
32
 
33
33
  static void RepeatFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
34
34
  auto &bind_data = (const RepeatFunctionData &)*data_p.bind_data;
35
- auto &state = (RepeatOperatorData &)*data_p.global_state;
35
+ auto &state = data_p.global_state->Cast<RepeatOperatorData>();
36
36
 
37
37
  idx_t remaining = MinValue<idx_t>(bind_data.target_count - state.current_count, STANDARD_VECTOR_SIZE);
38
38
  output.data[0].Reference(bind_data.value);
@@ -137,7 +137,7 @@ void DuckDBConstraintsFunction(ClientContext &context, TableFunctionInput &data_
137
137
  auto &entry = data.entries[data.offset];
138
138
  D_ASSERT(entry->type == CatalogType::TABLE_ENTRY);
139
139
 
140
- auto &table = (TableCatalogEntry &)*entry;
140
+ auto &table = entry->Cast<TableCatalogEntry>();
141
141
  auto &constraints = table.GetConstraints();
142
142
  bool is_duck_table = table.IsDuckTable();
143
143
  for (; data.constraint_offset < constraints.size() && count < STANDARD_VECTOR_SIZE; data.constraint_offset++) {
@@ -151,7 +151,7 @@ void DuckDBConstraintsFunction(ClientContext &context, TableFunctionInput &data_
151
151
  constraint_type = "CHECK";
152
152
  break;
153
153
  case ConstraintType::UNIQUE: {
154
- auto &unique = (UniqueConstraint &)*constraint;
154
+ auto &unique = constraint->Cast<UniqueConstraint>();
155
155
  constraint_type = unique.is_primary_key ? "PRIMARY KEY" : "UNIQUE";
156
156
  break;
157
157
  }
@@ -163,7 +163,7 @@ void DuckDBConstraintsFunction(ClientContext &context, TableFunctionInput &data_
163
163
  continue;
164
164
  }
165
165
  auto &bound_constraints = table.GetBoundConstraints();
166
- auto &bound_foreign_key = (const BoundForeignKeyConstraint &)*bound_constraints[data.constraint_offset];
166
+ auto &bound_foreign_key = bound_constraints[data.constraint_offset]->Cast<BoundForeignKeyConstraint>();
167
167
  if (bound_foreign_key.info.type == ForeignKeyType::FK_TYPE_PRIMARY_KEY_TABLE) {
168
168
  // Those are already covered by PRIMARY KEY and UNIQUE entries
169
169
  continue;
@@ -193,15 +193,15 @@ void DuckDBConstraintsFunction(ClientContext &context, TableFunctionInput &data_
193
193
  UniqueKeyInfo uk_info;
194
194
 
195
195
  if (is_duck_table) {
196
- auto &bound_constraint = (BoundConstraint &)*table.GetBoundConstraints()[data.constraint_offset];
196
+ auto &bound_constraint = *table.GetBoundConstraints()[data.constraint_offset];
197
197
  switch (bound_constraint.type) {
198
198
  case ConstraintType::UNIQUE: {
199
- auto &bound_unique = (BoundUniqueConstraint &)bound_constraint;
199
+ auto &bound_unique = bound_constraint.Cast<BoundUniqueConstraint>();
200
200
  uk_info = {table.schema->name, table.name, bound_unique.keys};
201
201
  break;
202
202
  }
203
203
  case ConstraintType::FOREIGN_KEY: {
204
- const auto &bound_foreign_key = (const BoundForeignKeyConstraint &)bound_constraint;
204
+ const auto &bound_foreign_key = bound_constraint.Cast<BoundForeignKeyConstraint>();
205
205
  const auto &info = bound_foreign_key.info;
206
206
  // find the other table
207
207
  auto table_entry = Catalog::GetEntry<TableCatalogEntry>(context, table.catalog->GetName(),
@@ -242,36 +242,36 @@ void DuckDBConstraintsFunction(ClientContext &context, TableFunctionInput &data_
242
242
  // expression, VARCHAR
243
243
  Value expression_text;
244
244
  if (constraint->type == ConstraintType::CHECK) {
245
- auto &check = (CheckConstraint &)*constraint;
245
+ auto &check = constraint->Cast<CheckConstraint>();
246
246
  expression_text = Value(check.expression->ToString());
247
247
  }
248
248
  output.SetValue(col++, count, expression_text);
249
249
 
250
250
  vector<LogicalIndex> column_index_list;
251
251
  if (is_duck_table) {
252
- auto &bound_constraint = (BoundConstraint &)*table.GetBoundConstraints()[data.constraint_offset];
252
+ auto &bound_constraint = *table.GetBoundConstraints()[data.constraint_offset];
253
253
  switch (bound_constraint.type) {
254
254
  case ConstraintType::CHECK: {
255
- auto &bound_check = (BoundCheckConstraint &)bound_constraint;
255
+ auto &bound_check = bound_constraint.Cast<BoundCheckConstraint>();
256
256
  for (auto &col_idx : bound_check.bound_columns) {
257
257
  column_index_list.push_back(table.GetColumns().PhysicalToLogical(col_idx));
258
258
  }
259
259
  break;
260
260
  }
261
261
  case ConstraintType::UNIQUE: {
262
- auto &bound_unique = (BoundUniqueConstraint &)bound_constraint;
262
+ auto &bound_unique = bound_constraint.Cast<BoundUniqueConstraint>();
263
263
  for (auto &col_idx : bound_unique.keys) {
264
264
  column_index_list.push_back(col_idx);
265
265
  }
266
266
  break;
267
267
  }
268
268
  case ConstraintType::NOT_NULL: {
269
- auto &bound_not_null = (BoundNotNullConstraint &)bound_constraint;
269
+ auto &bound_not_null = bound_constraint.Cast<BoundNotNullConstraint>();
270
270
  column_index_list.push_back(table.GetColumns().PhysicalToLogical(bound_not_null.index));
271
271
  break;
272
272
  }
273
273
  case ConstraintType::FOREIGN_KEY: {
274
- auto &bound_foreign_key = (const BoundForeignKeyConstraint &)bound_constraint;
274
+ auto &bound_foreign_key = bound_constraint.Cast<BoundForeignKeyConstraint>();
275
275
  for (auto &col_idx : bound_foreign_key.info.fk_keys) {
276
276
  column_index_list.push_back(table.GetColumns().PhysicalToLogical(col_idx));
277
277
  }
@@ -53,7 +53,7 @@ void DuckDBDatabasesFunction(ClientContext &context, TableFunctionInput &data_p,
53
53
  while (data.offset < data.entries.size() && count < STANDARD_VECTOR_SIZE) {
54
54
  auto &entry = data.entries[data.offset++];
55
55
 
56
- auto &attached = (AttachedDatabase &)*entry;
56
+ auto &attached = entry->Cast<AttachedDatabase>();
57
57
  // return values:
58
58
 
59
59
  idx_t col = 0;
@@ -213,7 +213,7 @@ struct MacroExtractor {
213
213
  vector<Value> results;
214
214
  for (auto &param : entry.function->parameters) {
215
215
  D_ASSERT(param->type == ExpressionType::COLUMN_REF);
216
- auto &colref = (ColumnRefExpression &)*param;
216
+ auto &colref = param->Cast<ColumnRefExpression>();
217
217
  results.emplace_back(colref.GetColumnName());
218
218
  }
219
219
  for (auto &param_entry : entry.function->default_parameters) {
@@ -269,7 +269,7 @@ struct TableMacroExtractor {
269
269
  vector<Value> results;
270
270
  for (auto &param : entry.function->parameters) {
271
271
  D_ASSERT(param->type == ExpressionType::COLUMN_REF);
272
- auto &colref = (ColumnRefExpression &)*param;
272
+ auto &colref = param->Cast<ColumnRefExpression>();
273
273
  results.emplace_back(colref.GetColumnName());
274
274
  }
275
275
  for (auto &param_entry : entry.function->default_parameters) {
@@ -83,7 +83,7 @@ void DuckDBIndexesFunction(ClientContext &context, TableFunctionInput &data_p, D
83
83
  while (data.offset < data.entries.size() && count < STANDARD_VECTOR_SIZE) {
84
84
  auto &entry = data.entries[data.offset++];
85
85
 
86
- auto &index = (IndexCatalogEntry &)*entry;
86
+ auto &index = entry->Cast<IndexCatalogEntry>();
87
87
  // return values:
88
88
 
89
89
  idx_t col = 0;
@@ -88,7 +88,7 @@ void DuckDBSequencesFunction(ClientContext &context, TableFunctionInput &data_p,
88
88
  while (data.offset < data.entries.size() && count < STANDARD_VECTOR_SIZE) {
89
89
  auto &entry = data.entries[data.offset++];
90
90
 
91
- auto &seq = (SequenceCatalogEntry &)*entry;
91
+ auto &seq = entry->Cast<SequenceCatalogEntry>();
92
92
  // return values:
93
93
  idx_t col = 0;
94
94
  // database_name, VARCHAR
@@ -82,7 +82,7 @@ unique_ptr<GlobalTableFunctionState> DuckDBTablesInit(ClientContext &context, Ta
82
82
  static bool TableHasPrimaryKey(TableCatalogEntry &table) {
83
83
  for (auto &constraint : table.GetConstraints()) {
84
84
  if (constraint->type == ConstraintType::UNIQUE) {
85
- auto &unique = (UniqueConstraint &)*constraint;
85
+ auto &unique = constraint->Cast<UniqueConstraint>();
86
86
  if (unique.is_primary_key) {
87
87
  return true;
88
88
  }
@@ -116,7 +116,7 @@ void DuckDBTablesFunction(ClientContext &context, TableFunctionInput &data_p, Da
116
116
  if (entry->type != CatalogType::TABLE_ENTRY) {
117
117
  continue;
118
118
  }
119
- auto &table = (TableCatalogEntry &)*entry;
119
+ auto &table = entry->Cast<TableCatalogEntry>();
120
120
  auto storage_info = table.GetStorageInfo(context);
121
121
  // return values:
122
122
  idx_t col = 0;
@@ -78,7 +78,7 @@ void DuckDBViewsFunction(ClientContext &context, TableFunctionInput &data_p, Dat
78
78
  if (entry->type != CatalogType::VIEW_ENTRY) {
79
79
  continue;
80
80
  }
81
- auto &view = (ViewCatalogEntry &)*entry;
81
+ auto &view = entry->Cast<ViewCatalogEntry>();
82
82
 
83
83
  // return values:
84
84
  idx_t col = 0;
@@ -92,7 +92,7 @@ unique_ptr<GlobalTableFunctionState> PragmaStorageInfoInit(ClientContext &contex
92
92
 
93
93
  static void PragmaStorageInfoFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
94
94
  auto &bind_data = (PragmaStorageFunctionData &)*data_p.bind_data;
95
- auto &data = (PragmaStorageOperatorData &)*data_p.global_state;
95
+ auto &data = data_p.global_state->Cast<PragmaStorageOperatorData>();
96
96
  idx_t count = 0;
97
97
  auto &columns = bind_data.table_entry->GetColumns();
98
98
  while (data.offset < bind_data.storage_info.column_segments.size() && count < STANDARD_VECTOR_SIZE) {
@@ -71,14 +71,14 @@ static void CheckConstraints(TableCatalogEntry *table, const ColumnDefinition &c
71
71
  for (auto &constraint : table->GetConstraints()) {
72
72
  switch (constraint->type) {
73
73
  case ConstraintType::NOT_NULL: {
74
- auto &not_null = (NotNullConstraint &)*constraint;
74
+ auto &not_null = constraint->Cast<NotNullConstraint>();
75
75
  if (not_null.index == column.Logical()) {
76
76
  out_not_null = true;
77
77
  }
78
78
  break;
79
79
  }
80
80
  case ConstraintType::UNIQUE: {
81
- auto &unique = (UniqueConstraint &)*constraint;
81
+ auto &unique = constraint->Cast<UniqueConstraint>();
82
82
 
83
83
  if (unique.is_primary_key) {
84
84
  if (unique.index == column.Logical()) {
@@ -165,7 +165,7 @@ static void PragmaTableInfoView(PragmaTableOperatorData &data, ViewCatalogEntry
165
165
 
166
166
  static void PragmaTableInfoFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
167
167
  auto &bind_data = (PragmaTableFunctionData &)*data_p.bind_data;
168
- auto &state = (PragmaTableOperatorData &)*data_p.global_state;
168
+ auto &state = data_p.global_state->Cast<PragmaTableOperatorData>();
169
169
  switch (bind_data.entry->type) {
170
170
  case CatalogType::TABLE_ENTRY:
171
171
  PragmaTableInfoTable(state, (TableCatalogEntry *)bind_data.entry, output);
@@ -204,7 +204,7 @@ static unique_ptr<FunctionData> TestVectorTypesBind(ClientContext &context, Tabl
204
204
  }
205
205
 
206
206
  unique_ptr<GlobalTableFunctionState> TestVectorTypesInit(ClientContext &context, TableFunctionInitInput &input) {
207
- auto &bind_data = (TestVectorBindData &)*input.bind_data;
207
+ auto &bind_data = input.bind_data->Cast<TestVectorBindData>();
208
208
 
209
209
  auto result = make_uniq<TestVectorTypesData>();
210
210
 
@@ -42,7 +42,7 @@ static storage_t GetStorageIndex(TableCatalogEntry &table, column_t column_id) {
42
42
  struct TableScanGlobalState : public GlobalTableFunctionState {
43
43
  TableScanGlobalState(ClientContext &context, const FunctionData *bind_data_p) {
44
44
  D_ASSERT(bind_data_p);
45
- auto &bind_data = (const TableScanBindData &)*bind_data_p;
45
+ auto &bind_data = bind_data_p->Cast<TableScanBindData>();
46
46
  max_threads = bind_data.table->GetStorage().MaxThreads(context);
47
47
  }
48
48
 
@@ -64,7 +64,7 @@ struct TableScanGlobalState : public GlobalTableFunctionState {
64
64
  static unique_ptr<LocalTableFunctionState> TableScanInitLocal(ExecutionContext &context, TableFunctionInitInput &input,
65
65
  GlobalTableFunctionState *gstate) {
66
66
  auto result = make_uniq<TableScanLocalState>();
67
- auto &bind_data = (TableScanBindData &)*input.bind_data;
67
+ auto &bind_data = input.bind_data->Cast<TableScanBindData>();
68
68
  vector<column_t> column_ids = input.column_ids;
69
69
  for (auto &col : column_ids) {
70
70
  auto storage_idx = GetStorageIndex(*bind_data.table, col);
@@ -73,7 +73,7 @@ static unique_ptr<LocalTableFunctionState> TableScanInitLocal(ExecutionContext &
73
73
  result->scan_state.Initialize(std::move(column_ids), input.filters);
74
74
  TableScanParallelStateNext(context.client, input.bind_data, result.get(), gstate);
75
75
  if (input.CanRemoveFilterColumns()) {
76
- auto &tsgs = (TableScanGlobalState &)*gstate;
76
+ auto &tsgs = gstate->Cast<TableScanGlobalState>();
77
77
  result->all_columns.Initialize(context.client, tsgs.scanned_types);
78
78
  }
79
79
  return std::move(result);
@@ -82,7 +82,7 @@ static unique_ptr<LocalTableFunctionState> TableScanInitLocal(ExecutionContext &
82
82
  unique_ptr<GlobalTableFunctionState> TableScanInitGlobal(ClientContext &context, TableFunctionInitInput &input) {
83
83
 
84
84
  D_ASSERT(input.bind_data);
85
- auto &bind_data = (const TableScanBindData &)*input.bind_data;
85
+ auto &bind_data = input.bind_data->Cast<TableScanBindData>();
86
86
  auto result = make_uniq<TableScanGlobalState>(context, input.bind_data);
87
87
  bind_data.table->GetStorage().InitializeParallelScan(context, result->state);
88
88
  if (input.CanRemoveFilterColumns()) {
@@ -101,7 +101,7 @@ unique_ptr<GlobalTableFunctionState> TableScanInitGlobal(ClientContext &context,
101
101
 
102
102
  static unique_ptr<BaseStatistics> TableScanStatistics(ClientContext &context, const FunctionData *bind_data_p,
103
103
  column_t column_id) {
104
- auto &bind_data = (const TableScanBindData &)*bind_data_p;
104
+ auto &bind_data = bind_data_p->Cast<TableScanBindData>();
105
105
  auto &local_storage = LocalStorage::Get(context, *bind_data.table->catalog);
106
106
  if (local_storage.Find(bind_data.table->GetStoragePtr())) {
107
107
  // we don't emit any statistics for tables that have outstanding transaction-local data
@@ -111,9 +111,9 @@ static unique_ptr<BaseStatistics> TableScanStatistics(ClientContext &context, co
111
111
  }
112
112
 
113
113
  static void TableScanFunc(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
114
- auto &bind_data = (TableScanBindData &)*data_p.bind_data;
115
- auto &gstate = (TableScanGlobalState &)*data_p.global_state;
116
- auto &state = (TableScanLocalState &)*data_p.local_state;
114
+ auto &bind_data = data_p.bind_data->Cast<TableScanBindData>();
115
+ auto &gstate = data_p.global_state->Cast<TableScanGlobalState>();
116
+ auto &state = data_p.local_state->Cast<TableScanLocalState>();
117
117
  auto &transaction = DuckTransaction::Get(context, *bind_data.table->catalog);
118
118
  auto &storage = bind_data.table->GetStorage();
119
119
  do {
@@ -138,9 +138,9 @@ static void TableScanFunc(ClientContext &context, TableFunctionInput &data_p, Da
138
138
 
139
139
  bool TableScanParallelStateNext(ClientContext &context, const FunctionData *bind_data_p,
140
140
  LocalTableFunctionState *local_state, GlobalTableFunctionState *global_state) {
141
- auto &bind_data = (const TableScanBindData &)*bind_data_p;
142
- auto &parallel_state = (TableScanGlobalState &)*global_state;
143
- auto &state = (TableScanLocalState &)*local_state;
141
+ auto &bind_data = bind_data_p->Cast<TableScanBindData>();
142
+ auto &parallel_state = global_state->Cast<TableScanGlobalState>();
143
+ auto &state = local_state->Cast<TableScanLocalState>();
144
144
  auto &storage = bind_data.table->GetStorage();
145
145
 
146
146
  return storage.NextParallelScan(context, parallel_state.state, state.scan_state);
@@ -148,8 +148,8 @@ bool TableScanParallelStateNext(ClientContext &context, const FunctionData *bind
148
148
 
149
149
  double TableScanProgress(ClientContext &context, const FunctionData *bind_data_p,
150
150
  const GlobalTableFunctionState *gstate_p) {
151
- auto &bind_data = (TableScanBindData &)*bind_data_p;
152
- auto &gstate = (TableScanGlobalState &)*gstate_p;
151
+ auto &bind_data = bind_data_p->Cast<TableScanBindData>();
152
+ auto &gstate = gstate_p->Cast<TableScanGlobalState>();
153
153
  auto &storage = bind_data.table->GetStorage();
154
154
  idx_t total_rows = storage.GetTotalRows();
155
155
  if (total_rows == 0) {
@@ -169,7 +169,7 @@ double TableScanProgress(ClientContext &context, const FunctionData *bind_data_p
169
169
 
170
170
  idx_t TableScanGetBatchIndex(ClientContext &context, const FunctionData *bind_data_p,
171
171
  LocalTableFunctionState *local_state, GlobalTableFunctionState *gstate_p) {
172
- auto &state = (TableScanLocalState &)*local_state;
172
+ auto &state = local_state->Cast<TableScanLocalState>();
173
173
  if (state.scan_state.table_state.row_group) {
174
174
  return state.scan_state.table_state.batch_index;
175
175
  }
@@ -184,12 +184,12 @@ BindInfo TableScanGetBindInfo(const FunctionData *bind_data) {
184
184
  }
185
185
 
186
186
  void TableScanDependency(DependencyList &entries, const FunctionData *bind_data_p) {
187
- auto &bind_data = (const TableScanBindData &)*bind_data_p;
187
+ auto &bind_data = bind_data_p->Cast<TableScanBindData>();
188
188
  entries.AddDependency(bind_data.table);
189
189
  }
190
190
 
191
191
  unique_ptr<NodeStatistics> TableScanCardinality(ClientContext &context, const FunctionData *bind_data_p) {
192
- auto &bind_data = (const TableScanBindData &)*bind_data_p;
192
+ auto &bind_data = bind_data_p->Cast<TableScanBindData>();
193
193
  auto &local_storage = LocalStorage::Get(context, *bind_data.table->catalog);
194
194
  auto &storage = bind_data.table->GetStorage();
195
195
  idx_t estimated_cardinality = storage.info->cardinality + local_storage.AddedRows(bind_data.table->GetStoragePtr());
@@ -211,7 +211,7 @@ struct IndexScanGlobalState : public GlobalTableFunctionState {
211
211
  };
212
212
 
213
213
  static unique_ptr<GlobalTableFunctionState> IndexScanInitGlobal(ClientContext &context, TableFunctionInitInput &input) {
214
- auto &bind_data = (const TableScanBindData &)*input.bind_data;
214
+ auto &bind_data = input.bind_data->Cast<TableScanBindData>();
215
215
  data_ptr_t row_id_data = nullptr;
216
216
  if (!bind_data.result_ids.empty()) {
217
217
  row_id_data = (data_ptr_t)&bind_data.result_ids[0];
@@ -228,8 +228,8 @@ static unique_ptr<GlobalTableFunctionState> IndexScanInitGlobal(ClientContext &c
228
228
  }
229
229
 
230
230
  static void IndexScanFunction(ClientContext &context, TableFunctionInput &data_p, DataChunk &output) {
231
- auto &bind_data = (const TableScanBindData &)*data_p.bind_data;
232
- auto &state = (IndexScanGlobalState &)*data_p.global_state;
231
+ auto &bind_data = data_p.bind_data->Cast<TableScanBindData>();
232
+ auto &state = data_p.global_state->Cast<IndexScanGlobalState>();
233
233
  auto &transaction = DuckTransaction::Get(context, *bind_data.table->catalog);
234
234
  auto &local_storage = LocalStorage::Get(transaction);
235
235
 
@@ -245,7 +245,7 @@ static void IndexScanFunction(ClientContext &context, TableFunctionInput &data_p
245
245
 
246
246
  static void RewriteIndexExpression(Index &index, LogicalGet &get, Expression &expr, bool &rewrite_possible) {
247
247
  if (expr.type == ExpressionType::BOUND_COLUMN_REF) {
248
- auto &bound_colref = (BoundColumnRefExpression &)expr;
248
+ auto &bound_colref = expr.Cast<BoundColumnRefExpression>();
249
249
  // bound column ref: rewrite to fit in the current set of bound column ids
250
250
  bound_colref.binding.table_index = get.table_index;
251
251
  column_t referenced_column = index.column_ids[bound_colref.binding.column_index];
@@ -265,7 +265,7 @@ static void RewriteIndexExpression(Index &index, LogicalGet &get, Expression &ex
265
265
 
266
266
  void TableScanPushdownComplexFilter(ClientContext &context, LogicalGet &get, FunctionData *bind_data_p,
267
267
  vector<unique_ptr<Expression>> &filters) {
268
- auto &bind_data = (TableScanBindData &)*bind_data_p;
268
+ auto &bind_data = bind_data_p->Cast<TableScanBindData>();
269
269
  auto table = bind_data.table;
270
270
  auto &storage = table->GetStorage();
271
271
 
@@ -321,13 +321,13 @@ void TableScanPushdownComplexFilter(ClientContext &context, LogicalGet &get, Fun
321
321
  // bindings[0] = the expression
322
322
  // bindings[1] = the index expression
323
323
  // bindings[2] = the constant
324
- auto comparison = (BoundComparisonExpression *)bindings[0];
324
+ auto &comparison = bindings[0]->Cast<BoundComparisonExpression>();
325
325
  D_ASSERT(bindings[0]->GetExpressionClass() == ExpressionClass::BOUND_COMPARISON);
326
326
  D_ASSERT(bindings[2]->type == ExpressionType::VALUE_CONSTANT);
327
327
 
328
- auto constant_value = ((BoundConstantExpression *)bindings[2])->value;
329
- auto comparison_type = comparison->type;
330
- if (comparison->left->type == ExpressionType::VALUE_CONSTANT) {
328
+ auto constant_value = bindings[2]->Cast<BoundConstantExpression>().value;
329
+ auto comparison_type = comparison.type;
330
+ if (comparison.left->type == ExpressionType::VALUE_CONSTANT) {
331
331
  // the expression is on the right side, we flip them around
332
332
  comparison_type = FlipComparisonExpression(comparison_type);
333
333
  }
@@ -348,7 +348,7 @@ void TableScanPushdownComplexFilter(ClientContext &context, LogicalGet &get, Fun
348
348
  }
349
349
  } else if (expr->type == ExpressionType::COMPARE_BETWEEN) {
350
350
  // BETWEEN expression
351
- auto &between = (BoundBetweenExpression &)*expr;
351
+ auto &between = expr->Cast<BoundBetweenExpression>();
352
352
  if (!between.input->Equals(index_expression.get())) {
353
353
  // expression doesn't match the current index expression
354
354
  continue;
@@ -358,10 +358,10 @@ void TableScanPushdownComplexFilter(ClientContext &context, LogicalGet &get, Fun
358
358
  // not a constant comparison
359
359
  continue;
360
360
  }
361
- low_value = ((BoundConstantExpression &)*between.lower).value;
361
+ low_value = (between.lower->Cast<BoundConstantExpression>()).value;
362
362
  low_comparison_type = between.lower_inclusive ? ExpressionType::COMPARE_GREATERTHANOREQUALTO
363
363
  : ExpressionType::COMPARE_GREATERTHAN;
364
- high_value = ((BoundConstantExpression &)*between.upper).value;
364
+ high_value = (between.upper->Cast<BoundConstantExpression>()).value;
365
365
  high_comparison_type = between.upper_inclusive ? ExpressionType::COMPARE_LESSTHANOREQUALTO
366
366
  : ExpressionType::COMPARE_LESSTHAN;
367
367
  break;
@@ -400,13 +400,13 @@ void TableScanPushdownComplexFilter(ClientContext &context, LogicalGet &get, Fun
400
400
  }
401
401
 
402
402
  string TableScanToString(const FunctionData *bind_data_p) {
403
- auto &bind_data = (const TableScanBindData &)*bind_data_p;
403
+ auto &bind_data = bind_data_p->Cast<TableScanBindData>();
404
404
  string result = bind_data.table->name;
405
405
  return result;
406
406
  }
407
407
 
408
408
  static void TableScanSerialize(FieldWriter &writer, const FunctionData *bind_data_p, const TableFunction &function) {
409
- auto &bind_data = (TableScanBindData &)*bind_data_p;
409
+ auto &bind_data = bind_data_p->Cast<TableScanBindData>();
410
410
 
411
411
  writer.WriteString(bind_data.table->schema->name);
412
412
  writer.WriteString(bind_data.table->name);
@@ -479,7 +479,7 @@ TableCatalogEntry *TableScanFunction::GetTableEntry(const TableFunction &functio
479
479
  if (function.function != TableScanFunc || !bind_data_p) {
480
480
  return nullptr;
481
481
  }
482
- auto &bind_data = (TableScanBindData &)*bind_data_p;
482
+ auto &bind_data = bind_data_p->Cast<TableScanBindData>();
483
483
  return bind_data.table;
484
484
  }
485
485
 
@@ -53,7 +53,7 @@ static unique_ptr<FunctionData> UnnestBind(ClientContext &context, TableFunction
53
53
 
54
54
  static unique_ptr<LocalTableFunctionState> UnnestLocalInit(ExecutionContext &context, TableFunctionInitInput &input,
55
55
  GlobalTableFunctionState *global_state) {
56
- auto &gstate = (UnnestGlobalState &)*global_state;
56
+ auto &gstate = global_state->Cast<UnnestGlobalState>();
57
57
 
58
58
  auto result = make_uniq<UnnestLocalState>();
59
59
  result->operator_state = PhysicalUnnest::GetState(context, gstate.select_list);
@@ -61,7 +61,7 @@ static unique_ptr<LocalTableFunctionState> UnnestLocalInit(ExecutionContext &con
61
61
  }
62
62
 
63
63
  static unique_ptr<GlobalTableFunctionState> UnnestInit(ClientContext &context, TableFunctionInitInput &input) {
64
- auto &bind_data = (UnnestBindData &)*input.bind_data;
64
+ auto &bind_data = input.bind_data->Cast<UnnestBindData>();
65
65
  auto result = make_uniq<UnnestGlobalState>();
66
66
  auto ref = make_uniq<BoundReferenceExpression>(bind_data.input_type, 0);
67
67
  auto bound_unnest = make_uniq<BoundUnnestExpression>(ListType::GetChildType(bind_data.input_type));
@@ -72,8 +72,8 @@ static unique_ptr<GlobalTableFunctionState> UnnestInit(ClientContext &context, T
72
72
 
73
73
  static OperatorResultType UnnestFunction(ExecutionContext &context, TableFunctionInput &data_p, DataChunk &input,
74
74
  DataChunk &output) {
75
- auto &state = (UnnestGlobalState &)*data_p.global_state;
76
- auto &lstate = (UnnestLocalState &)*data_p.local_state;
75
+ auto &state = data_p.global_state->Cast<UnnestGlobalState>();
76
+ auto &lstate = data_p.local_state->Cast<UnnestLocalState>();
77
77
  return PhysicalUnnest::ExecuteInternal(context, input, output, *lstate.operator_state, state.select_list, false);
78
78
  }
79
79
 
@@ -1,8 +1,8 @@
1
1
  #ifndef DUCKDB_VERSION
2
- #define DUCKDB_VERSION "0.7.2-dev1457"
2
+ #define DUCKDB_VERSION "0.7.2-dev1533"
3
3
  #endif
4
4
  #ifndef DUCKDB_SOURCE_ID
5
- #define DUCKDB_SOURCE_ID "5b9bcdfbd9"
5
+ #define DUCKDB_SOURCE_ID "ff7a0b41a9"
6
6
  #endif
7
7
  #include "duckdb/function/table/system_functions.hpp"
8
8
  #include "duckdb/main/database.hpp"
@@ -20,14 +20,14 @@ TableMacroFunction::TableMacroFunction(unique_ptr<QueryNode> query_node)
20
20
  TableMacroFunction::TableMacroFunction(void) : MacroFunction(MacroType::TABLE_MACRO) {
21
21
  }
22
22
 
23
- unique_ptr<MacroFunction> TableMacroFunction::Copy() {
23
+ unique_ptr<MacroFunction> TableMacroFunction::Copy() const {
24
24
  auto result = make_uniq<TableMacroFunction>();
25
25
  result->query_node = query_node->Copy();
26
26
  this->CopyProperties(*result);
27
27
  return std::move(result);
28
28
  }
29
29
 
30
- string TableMacroFunction::ToSQL(const string &schema, const string &name) {
30
+ string TableMacroFunction::ToSQL(const string &schema, const string &name) const {
31
31
  return MacroFunction::ToSQL(schema, name) + StringUtil::Format("TABLE (%s);", query_node->ToString());
32
32
  }
33
33