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
@@ -287,6 +287,19 @@ private:
287
287
  const unordered_set<SchemaCatalogEntry *> &schemas);
288
288
 
289
289
  virtual void DropSchema(ClientContext &context, DropInfo *info) = 0;
290
+
291
+ public:
292
+ template <class TARGET>
293
+ TARGET &Cast() {
294
+ D_ASSERT(dynamic_cast<TARGET *>(this));
295
+ return (TARGET &)*this;
296
+ }
297
+
298
+ template <class TARGET>
299
+ const TARGET &Cast() const {
300
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
301
+ return (const TARGET &)*this;
302
+ }
290
303
  };
291
304
 
292
305
  } // namespace duckdb
@@ -22,8 +22,8 @@ public:
22
22
  shared_ptr<DataTableInfo> info;
23
23
 
24
24
  public:
25
- string GetSchemaName() override;
26
- string GetTableName() override;
25
+ string GetSchemaName() const override;
26
+ string GetTableName() const override;
27
27
  };
28
28
 
29
29
  } // namespace duckdb
@@ -31,7 +31,7 @@ public:
31
31
  //! Get statistics of a column (physical or virtual) within the table
32
32
  unique_ptr<BaseStatistics> GetStatistics(ClientContext &context, column_t column_id) override;
33
33
 
34
- unique_ptr<CatalogEntry> Copy(ClientContext &context) override;
34
+ unique_ptr<CatalogEntry> Copy(ClientContext &context) const override;
35
35
 
36
36
  void SetAsRoot() override;
37
37
 
@@ -33,12 +33,12 @@ public:
33
33
  vector<unique_ptr<ParsedExpression>> parsed_expressions;
34
34
 
35
35
  public:
36
- string ToSQL() override;
37
- void Serialize(Serializer &serializer);
36
+ string ToSQL() const override;
37
+ void Serialize(Serializer &serializer) const;
38
38
  static unique_ptr<CreateIndexInfo> Deserialize(Deserializer &source, ClientContext &context);
39
39
 
40
- virtual string GetSchemaName() = 0;
41
- virtual string GetTableName() = 0;
40
+ virtual string GetSchemaName() const = 0;
41
+ virtual string GetTableName() const = 0;
42
42
  };
43
43
 
44
44
  } // namespace duckdb
@@ -19,14 +19,15 @@ namespace duckdb {
19
19
  class MacroCatalogEntry : public StandardEntry {
20
20
  public:
21
21
  MacroCatalogEntry(Catalog *catalog, SchemaCatalogEntry *schema, CreateMacroInfo *info);
22
+
22
23
  //! The macro function
23
24
  unique_ptr<MacroFunction> function;
24
25
 
25
26
  public:
26
27
  //! Serialize the meta information
27
- virtual void Serialize(Serializer &serializer) = 0;
28
+ virtual void Serialize(Serializer &serializer) const = 0;
28
29
 
29
- string ToSQL() override {
30
+ string ToSQL() const override {
30
31
  return function->ToSQL(schema->name, name);
31
32
  }
32
33
  };
@@ -26,7 +26,7 @@ public:
26
26
 
27
27
  public:
28
28
  //! Serialize the meta information of the ScalarMacroCatalogEntry
29
- void Serialize(Serializer &serializer) override;
29
+ void Serialize(Serializer &serializer) const override;
30
30
  //! Deserializes to a CreateMacroInfo
31
31
  static unique_ptr<CreateMacroInfo> Deserialize(Deserializer &source, ClientContext &context);
32
32
  };
@@ -56,11 +56,11 @@ public:
56
56
  virtual void Scan(CatalogType type, const std::function<void(CatalogEntry *)> &callback) = 0;
57
57
 
58
58
  //! Serialize the meta information of the SchemaCatalogEntry a serializer
59
- virtual void Serialize(Serializer &serializer);
59
+ virtual void Serialize(Serializer &serializer) const;
60
60
  //! Deserializes to a CreateSchemaInfo
61
61
  static unique_ptr<CreateSchemaInfo> Deserialize(Deserializer &source);
62
62
 
63
- string ToSQL() override;
63
+ string ToSQL() const override;
64
64
 
65
65
  //! Creates an index with the given name in the schema
66
66
  virtual CatalogEntry *CreateIndex(ClientContext &context, CreateIndexInfo *info, TableCatalogEntry *table) = 0;
@@ -58,11 +58,11 @@ public:
58
58
 
59
59
  public:
60
60
  //! Serialize the meta information of the SequenceCatalogEntry a serializer
61
- virtual void Serialize(Serializer &serializer);
61
+ virtual void Serialize(Serializer &serializer) const;
62
62
  //! Deserializes to a CreateTableInfo
63
63
  static unique_ptr<CreateSequenceInfo> Deserialize(Deserializer &source);
64
64
 
65
- string ToSQL() override;
65
+ string ToSQL() const override;
66
66
 
67
67
  CatalogEntry *AlterOwnership(ClientContext &context, AlterInfo *info);
68
68
  };
@@ -75,13 +75,13 @@ public:
75
75
 
76
76
  //! Returns a list of the constraints of the table
77
77
  DUCKDB_API const vector<unique_ptr<Constraint>> &GetConstraints();
78
- DUCKDB_API string ToSQL() override;
78
+ DUCKDB_API string ToSQL() const override;
79
79
 
80
80
  //! Get statistics of a column (physical or virtual) within the table
81
81
  virtual unique_ptr<BaseStatistics> GetStatistics(ClientContext &context, column_t column_id) = 0;
82
82
 
83
83
  //! Serialize the meta information of the TableCatalogEntry a serializer
84
- virtual void Serialize(Serializer &serializer);
84
+ virtual void Serialize(Serializer &serializer) const;
85
85
  //! Deserializes to a CreateTableInfo
86
86
  static unique_ptr<CreateTableInfo> Deserialize(Deserializer &source, ClientContext &context);
87
87
 
@@ -25,7 +25,7 @@ public:
25
25
 
26
26
  public:
27
27
  //! Serialize the meta information of the ScalarMacroCatalogEntry
28
- void Serialize(Serializer &serializer) override;
28
+ void Serialize(Serializer &serializer) const override;
29
29
  //! Deserializes to a CreateMacroInfo
30
30
  static unique_ptr<CreateMacroInfo> Deserialize(Deserializer &source, ClientContext &context);
31
31
  };
@@ -30,10 +30,10 @@ public:
30
30
 
31
31
  public:
32
32
  //! Serialize the meta information of the TypeCatalogEntry a serializer
33
- virtual void Serialize(Serializer &serializer);
33
+ virtual void Serialize(Serializer &serializer) const;
34
34
  //! Deserializes to a TypeCatalogEntry
35
35
  static unique_ptr<CreateTypeInfo> Deserialize(Deserializer &source);
36
36
 
37
- string ToSQL() override;
37
+ string ToSQL() const override;
38
38
  };
39
39
  } // namespace duckdb
@@ -41,13 +41,13 @@ public:
41
41
  unique_ptr<CatalogEntry> AlterEntry(ClientContext &context, AlterInfo *info) override;
42
42
 
43
43
  //! Serialize the meta information of the ViewCatalogEntry a serializer
44
- virtual void Serialize(Serializer &serializer);
44
+ virtual void Serialize(Serializer &serializer) const;
45
45
  //! Deserializes to a CreateTableInfo
46
46
  static unique_ptr<CreateViewInfo> Deserialize(Deserializer &source, ClientContext &context);
47
47
 
48
- unique_ptr<CatalogEntry> Copy(ClientContext &context) override;
48
+ unique_ptr<CatalogEntry> Copy(ClientContext &context) const override;
49
49
 
50
- string ToSQL() override;
50
+ string ToSQL() const override;
51
51
 
52
52
  private:
53
53
  void Initialize(CreateViewInfo *info);
@@ -12,7 +12,6 @@
12
12
  #include "duckdb/common/enums/catalog_type.hpp"
13
13
  #include "duckdb/common/exception.hpp"
14
14
  #include "duckdb/common/atomic.hpp"
15
-
16
15
  #include <memory>
17
16
 
18
17
  namespace duckdb {
@@ -54,15 +53,27 @@ public:
54
53
  virtual unique_ptr<CatalogEntry> AlterEntry(ClientContext &context, AlterInfo *info);
55
54
  virtual void UndoAlter(ClientContext &context, AlterInfo *info);
56
55
 
57
- virtual unique_ptr<CatalogEntry> Copy(ClientContext &context);
56
+ virtual unique_ptr<CatalogEntry> Copy(ClientContext &context) const;
58
57
 
59
58
  //! Sets the CatalogEntry as the new root entry (i.e. the newest entry)
60
59
  // this is called on a rollback to an AlterEntry
61
60
  virtual void SetAsRoot();
62
61
 
63
62
  //! Convert the catalog entry to a SQL string that can be used to re-construct the catalog entry
64
- virtual string ToSQL();
63
+ virtual string ToSQL() const;
65
64
 
66
65
  virtual void Verify(Catalog &catalog);
66
+
67
+ public:
68
+ template <class TARGET>
69
+ TARGET &Cast() {
70
+ D_ASSERT(dynamic_cast<TARGET *>(this));
71
+ return (TARGET &)*this;
72
+ }
73
+ template <class TARGET>
74
+ const TARGET &Cast() const {
75
+ D_ASSERT(dynamic_cast<const TARGET *>(this));
76
+ return (const TARGET &)*this;
77
+ }
67
78
  };
68
79
  } // namespace duckdb
@@ -102,7 +102,7 @@ public:
102
102
 
103
103
  //! Rollback <entry> to be the currently valid entry for a certain catalog
104
104
  //! entry
105
- void Undo(CatalogEntry *entry);
105
+ void Undo(CatalogEntry &entry);
106
106
 
107
107
  //! Scan the catalog set, invoking the callback method for every committed entry
108
108
  DUCKDB_API void Scan(const std::function<void(CatalogEntry *)> &callback);
@@ -120,17 +120,17 @@ public:
120
120
  DUCKDB_API bool HasConflict(CatalogTransaction transaction, transaction_t timestamp);
121
121
  DUCKDB_API bool UseTimestamp(CatalogTransaction transaction, transaction_t timestamp);
122
122
 
123
- void UpdateTimestamp(CatalogEntry *entry, transaction_t timestamp);
123
+ void UpdateTimestamp(CatalogEntry &entry, transaction_t timestamp);
124
124
 
125
125
  void Verify(Catalog &catalog);
126
126
 
127
127
  private:
128
128
  //! Adjusts table dependencies on the event of an UNDO
129
- void AdjustTableDependencies(CatalogEntry *entry);
129
+ void AdjustTableDependencies(CatalogEntry &entry);
130
130
  //! Adjust one dependency
131
- void AdjustDependency(CatalogEntry *entry, TableCatalogEntry *table, ColumnDefinition &column, bool remove);
131
+ void AdjustDependency(CatalogEntry &entry, TableCatalogEntry &table, ColumnDefinition &column, bool remove);
132
132
  //! Adjust User dependency
133
- void AdjustUserDependency(CatalogEntry *entry, ColumnDefinition &column, bool remove);
133
+ void AdjustUserDependency(CatalogEntry &entry, ColumnDefinition &column, bool remove);
134
134
  //! Given a root entry, gets the entry valid for this transaction
135
135
  CatalogEntry *GetEntryForTransaction(CatalogTransaction transaction, CatalogEntry *current);
136
136
  CatalogEntry *GetCommittedEntry(CatalogEntry *current);
@@ -17,14 +17,13 @@ namespace duckdb {
17
17
 
18
18
  struct CaseInsensitiveStringHashFunction {
19
19
  uint64_t operator()(const string &str) const {
20
- std::hash<string> hasher;
21
- return hasher(StringUtil::Lower(str));
20
+ return StringUtil::CIHash(str);
22
21
  }
23
22
  };
24
23
 
25
24
  struct CaseInsensitiveStringEquality {
26
25
  bool operator()(const string &a, const string &b) const {
27
- return StringUtil::Lower(a) == StringUtil::Lower(b);
26
+ return StringUtil::CIEquals(a, b);
28
27
  }
29
28
  };
30
29
 
@@ -29,6 +29,7 @@ enum class LogicalOperatorType : uint8_t {
29
29
  LOGICAL_DISTINCT = 11,
30
30
  LOGICAL_SAMPLE = 12,
31
31
  LOGICAL_LIMIT_PERCENT = 13,
32
+ LOGICAL_PIVOT = 14,
32
33
 
33
34
  // -----------------------------
34
35
  // Data sources
@@ -33,6 +33,8 @@ enum class PhysicalOperatorType : uint8_t {
33
33
  RESERVOIR_SAMPLE,
34
34
  STREAMING_SAMPLE,
35
35
  STREAMING_WINDOW,
36
+ PIVOT,
37
+
36
38
  // -----------------------------
37
39
  // Scans
38
40
  // -----------------------------
@@ -22,7 +22,7 @@ struct MultiFileReaderOptions {
22
22
 
23
23
  DUCKDB_API void Serialize(Serializer &serializer) const;
24
24
  DUCKDB_API static MultiFileReaderOptions Deserialize(Deserializer &source);
25
- DUCKDB_API void AddBatchInfo(BindInfo &bind_info);
25
+ DUCKDB_API void AddBatchInfo(BindInfo &bind_info) const;
26
26
  };
27
27
 
28
28
  } // namespace duckdb
@@ -138,6 +138,9 @@ public:
138
138
  //! Convert a string to lowercase
139
139
  DUCKDB_API static string Lower(const string &str);
140
140
 
141
+ //! Case insensitive hash
142
+ DUCKDB_API static uint64_t CIHash(const string &str);
143
+
141
144
  //! Case insensitive equals
142
145
  DUCKDB_API static bool CIEquals(const string &l1, const string &l2);
143
146
 
@@ -84,7 +84,7 @@ public:
84
84
 
85
85
  //! Merge another index into this index. The lock obtained from InitializeLock must be held, and the other
86
86
  //! index must also be locked during the merge
87
- bool MergeIndexes(IndexLock &state, Index *other_index) override;
87
+ bool MergeIndexes(IndexLock &state, Index &other_index) override;
88
88
 
89
89
  //! Generate ART keys for an input chunk
90
90
  static void GenerateKeys(ArenaAllocator &allocator, DataChunk &input, vector<Key> &keys);
@@ -57,6 +57,9 @@ public:
57
57
  //! PhysicalHashAggregate is a group-by and aggregate implementation that uses a hash table to perform the grouping
58
58
  //! This only contains read-only variables, anything that is stateful instead gets stored in the Global/Local states
59
59
  class PhysicalHashAggregate : public PhysicalOperator {
60
+ public:
61
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::HASH_GROUP_BY;
62
+
60
63
  public:
61
64
  PhysicalHashAggregate(ClientContext &context, vector<LogicalType> types, vector<unique_ptr<Expression>> expressions,
62
65
  idx_t estimated_cardinality);
@@ -17,6 +17,9 @@ class PerfectAggregateHashTable;
17
17
 
18
18
  //! PhysicalPerfectHashAggregate performs a group-by and aggregation using a perfect hash table
19
19
  class PhysicalPerfectHashAggregate : public PhysicalOperator {
20
+ public:
21
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::PERFECT_HASH_GROUP_BY;
22
+
20
23
  public:
21
24
  PhysicalPerfectHashAggregate(ClientContext &context, vector<LogicalType> types,
22
25
  vector<unique_ptr<Expression>> aggregates, vector<unique_ptr<Expression>> groups,
@@ -15,6 +15,9 @@ namespace duckdb {
15
15
 
16
16
  //! PhysicalStreamingWindow implements streaming window functions (i.e. with an empty OVER clause)
17
17
  class PhysicalStreamingWindow : public PhysicalOperator {
18
+ public:
19
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::STREAMING_WINDOW;
20
+
18
21
  public:
19
22
  PhysicalStreamingWindow(vector<LogicalType> types, vector<unique_ptr<Expression>> select_list,
20
23
  idx_t estimated_cardinality,
@@ -21,6 +21,9 @@ namespace duckdb {
21
21
  //! PhysicalUngroupedAggregate is an aggregate operator that can only perform aggregates (1) without any groups, (2)
22
22
  //! without any DISTINCT aggregates, and (3) when all aggregates are combineable
23
23
  class PhysicalUngroupedAggregate : public PhysicalOperator {
24
+ public:
25
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::UNGROUPED_AGGREGATE;
26
+
24
27
  public:
25
28
  PhysicalUngroupedAggregate(vector<LogicalType> types, vector<unique_ptr<Expression>> expressions,
26
29
  idx_t estimated_cardinality);
@@ -17,6 +17,9 @@ namespace duckdb {
17
17
  //! PhysicalWindow implements window functions
18
18
  //! It assumes that all functions have a common partitioning and ordering
19
19
  class PhysicalWindow : public PhysicalOperator {
20
+ public:
21
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::WINDOW;
22
+
20
23
  public:
21
24
  PhysicalWindow(vector<LogicalType> types, vector<unique_ptr<Expression>> select_list, idx_t estimated_cardinality,
22
25
  PhysicalOperatorType type = PhysicalOperatorType::WINDOW);
@@ -17,6 +17,9 @@ namespace duckdb {
17
17
  //! from the result. Note that it does not physically change the data, it only
18
18
  //! adds a selection vector to the chunk.
19
19
  class PhysicalFilter : public CachingPhysicalOperator {
20
+ public:
21
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::FILTER;
22
+
20
23
  public:
21
24
  PhysicalFilter(vector<LogicalType> types, vector<unique_ptr<Expression>> select_list, idx_t estimated_cardinality);
22
25
 
@@ -14,6 +14,9 @@
14
14
  namespace duckdb {
15
15
 
16
16
  class PhysicalExecute : public PhysicalOperator {
17
+ public:
18
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::EXECUTE;
19
+
17
20
  public:
18
21
  explicit PhysicalExecute(PhysicalOperator *plan);
19
22
 
@@ -14,6 +14,9 @@
14
14
  namespace duckdb {
15
15
 
16
16
  class PhysicalExplainAnalyze : public PhysicalOperator {
17
+ public:
18
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::EXPLAIN_ANALYZE;
19
+
17
20
  public:
18
21
  PhysicalExplainAnalyze(vector<LogicalType> types)
19
22
  : PhysicalOperator(PhysicalOperatorType::EXPLAIN_ANALYZE, std::move(types), 1) {
@@ -15,6 +15,9 @@ namespace duckdb {
15
15
 
16
16
  //! PhyisicalLimit represents the LIMIT operator
17
17
  class PhysicalLimit : public PhysicalOperator {
18
+ public:
19
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::LIMIT;
20
+
18
21
  public:
19
22
  PhysicalLimit(vector<LogicalType> types, idx_t limit, idx_t offset, unique_ptr<Expression> limit_expression,
20
23
  unique_ptr<Expression> offset_expression, idx_t estimated_cardinality);
@@ -15,6 +15,9 @@ namespace duckdb {
15
15
 
16
16
  //! PhyisicalLimitPercent represents the LIMIT PERCENT operator
17
17
  class PhysicalLimitPercent : public PhysicalOperator {
18
+ public:
19
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::LIMIT_PERCENT;
20
+
18
21
  public:
19
22
  PhysicalLimitPercent(vector<LogicalType> types, double limit_percent, idx_t offset,
20
23
  unique_ptr<Expression> limit_expression, unique_ptr<Expression> offset_expression,
@@ -15,6 +15,9 @@ namespace duckdb {
15
15
 
16
16
  //! PhysicalLoad represents an extension LOAD operation
17
17
  class PhysicalLoad : public PhysicalOperator {
18
+ public:
19
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::LOAD;
20
+
18
21
  public:
19
22
  explicit PhysicalLoad(unique_ptr<LoadInfo> info, idx_t estimated_cardinality)
20
23
  : PhysicalOperator(PhysicalOperatorType::LOAD, {LogicalType::BOOLEAN}, estimated_cardinality),
@@ -16,6 +16,9 @@ namespace duckdb {
16
16
 
17
17
  //! PhysicalPragma represents the PRAGMA operator
18
18
  class PhysicalPragma : public PhysicalOperator {
19
+ public:
20
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::PRAGMA;
21
+
19
22
  public:
20
23
  PhysicalPragma(PragmaFunction function_p, PragmaInfo info_p, idx_t estimated_cardinality)
21
24
  : PhysicalOperator(PhysicalOperatorType::PRAGMA, {LogicalType::BOOLEAN}, estimated_cardinality),
@@ -15,6 +15,9 @@
15
15
  namespace duckdb {
16
16
 
17
17
  class PhysicalPrepare : public PhysicalOperator {
18
+ public:
19
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::PREPARE;
20
+
18
21
  public:
19
22
  PhysicalPrepare(string name, shared_ptr<PreparedStatementData> prepared, idx_t estimated_cardinality)
20
23
  : PhysicalOperator(PhysicalOperatorType::PREPARE, {LogicalType::BOOLEAN}, estimated_cardinality), name(name),
@@ -19,6 +19,9 @@ struct ExtensionOption;
19
19
 
20
20
  //! PhysicalReset represents a RESET operation (e.g. RESET a = 42)
21
21
  class PhysicalReset : public PhysicalOperator {
22
+ public:
23
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::RESET;
24
+
22
25
  public:
23
26
  PhysicalReset(const std::string &name_p, SetScope scope_p, idx_t estimated_cardinality)
24
27
  : PhysicalOperator(PhysicalOperatorType::RESET, {LogicalType::BOOLEAN}, estimated_cardinality), name(name_p),
@@ -19,6 +19,9 @@ struct ExtensionOption;
19
19
 
20
20
  //! PhysicalSet represents a SET operation (e.g. SET a = 42)
21
21
  class PhysicalSet : public PhysicalOperator {
22
+ public:
23
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::SET;
24
+
22
25
  public:
23
26
  PhysicalSet(const std::string &name_p, Value value_p, SetScope scope_p, idx_t estimated_cardinality)
24
27
  : PhysicalOperator(PhysicalOperatorType::SET, {LogicalType::BOOLEAN}, estimated_cardinality), name(name_p),
@@ -14,6 +14,9 @@
14
14
  namespace duckdb {
15
15
 
16
16
  class PhysicalStreamingLimit : public PhysicalOperator {
17
+ public:
18
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::STREAMING_LIMIT;
19
+
17
20
  public:
18
21
  PhysicalStreamingLimit(vector<LogicalType> types, idx_t limit, idx_t offset,
19
22
  unique_ptr<Expression> limit_expression, unique_ptr<Expression> offset_expression,
@@ -15,6 +15,9 @@ namespace duckdb {
15
15
 
16
16
  //! PhysicalStreamingSample represents a streaming sample using either system or bernoulli sampling
17
17
  class PhysicalStreamingSample : public PhysicalOperator {
18
+ public:
19
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::STREAMING_SAMPLE;
20
+
18
21
  public:
19
22
  PhysicalStreamingSample(vector<LogicalType> types, SampleMethod method, double percentage, int64_t seed,
20
23
  idx_t estimated_cardinality);
@@ -15,6 +15,9 @@ namespace duckdb {
15
15
 
16
16
  //! PhysicalTransaction represents a transaction operator (e.g. BEGIN or COMMIT)
17
17
  class PhysicalTransaction : public PhysicalOperator {
18
+ public:
19
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::TRANSACTION;
20
+
18
21
  public:
19
22
  explicit PhysicalTransaction(unique_ptr<TransactionInfo> info, idx_t estimated_cardinality)
20
23
  : PhysicalOperator(PhysicalOperatorType::TRANSACTION, {LogicalType::BOOLEAN}, estimated_cardinality),
@@ -16,6 +16,9 @@ namespace duckdb {
16
16
 
17
17
  //! PhysicalVacuum represents a VACUUM operation (i.e. VACUUM or ANALYZE)
18
18
  class PhysicalVacuum : public PhysicalOperator {
19
+ public:
20
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::VACUUM;
21
+
19
22
  public:
20
23
  PhysicalVacuum(unique_ptr<VacuumInfo> info, idx_t estimated_cardinality);
21
24
 
@@ -17,6 +17,9 @@ namespace duckdb {
17
17
  //! from the PhysicalNestedLoopJoin in that it does not require expressions to be comparisons between the LHS and the
18
18
  //! RHS.
19
19
  class PhysicalBlockwiseNLJoin : public PhysicalJoin {
20
+ public:
21
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::BLOCKWISE_NL_JOIN;
22
+
20
23
  public:
21
24
  PhysicalBlockwiseNLJoin(LogicalOperator &op, unique_ptr<PhysicalOperator> left, unique_ptr<PhysicalOperator> right,
22
25
  unique_ptr<Expression> condition, JoinType join_type, idx_t estimated_cardinality);
@@ -15,6 +15,9 @@ namespace duckdb {
15
15
 
16
16
  //! PhysicalCrossProduct represents a cross product between two tables
17
17
  class PhysicalCrossProduct : public CachingPhysicalOperator {
18
+ public:
19
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::CROSS_PRODUCT;
20
+
18
21
  public:
19
22
  PhysicalCrossProduct(vector<LogicalType> types, unique_ptr<PhysicalOperator> left,
20
23
  unique_ptr<PhysicalOperator> right, idx_t estimated_cardinality);
@@ -17,6 +17,9 @@ class PhysicalHashAggregate;
17
17
  //! PhysicalDelimJoin represents a join where the LHS will be duplicate eliminated and pushed into a
18
18
  //! PhysicalColumnDataScan in the RHS.
19
19
  class PhysicalDelimJoin : public PhysicalOperator {
20
+ public:
21
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::DELIM_JOIN;
22
+
20
23
  public:
21
24
  PhysicalDelimJoin(vector<LogicalType> types, unique_ptr<PhysicalOperator> original_join,
22
25
  vector<PhysicalOperator *> delim_scans, idx_t estimated_cardinality);
@@ -20,6 +20,9 @@ namespace duckdb {
20
20
 
21
21
  //! PhysicalHashJoin represents a hash loop join between two tables
22
22
  class PhysicalHashJoin : public PhysicalComparisonJoin {
23
+ public:
24
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::HASH_JOIN;
25
+
23
26
  public:
24
27
  PhysicalHashJoin(LogicalOperator &op, unique_ptr<PhysicalOperator> left, unique_ptr<PhysicalOperator> right,
25
28
  vector<JoinCondition> cond, JoinType join_type, const vector<idx_t> &left_projection_map,
@@ -16,6 +16,9 @@ namespace duckdb {
16
16
  //! PhysicalIEJoin represents a two inequality range join between
17
17
  //! two tables
18
18
  class PhysicalIEJoin : public PhysicalRangeJoin {
19
+ public:
20
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::IE_JOIN;
21
+
19
22
  public:
20
23
  PhysicalIEJoin(LogicalOperator &op, unique_ptr<PhysicalOperator> left, unique_ptr<PhysicalOperator> right,
21
24
  vector<JoinCondition> cond, JoinType join_type, idx_t estimated_cardinality);
@@ -18,6 +18,9 @@ namespace duckdb {
18
18
 
19
19
  //! PhysicalIndexJoin represents an index join between two tables
20
20
  class PhysicalIndexJoin : public CachingPhysicalOperator {
21
+ public:
22
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::INDEX_JOIN;
23
+
21
24
  public:
22
25
  PhysicalIndexJoin(LogicalOperator &op, unique_ptr<PhysicalOperator> left, unique_ptr<PhysicalOperator> right,
23
26
  vector<JoinCondition> cond, JoinType join_type, const vector<idx_t> &left_projection_map,
@@ -15,6 +15,9 @@ namespace duckdb {
15
15
 
16
16
  //! PhysicalJoin represents the base class of the join operators
17
17
  class PhysicalJoin : public CachingPhysicalOperator {
18
+ public:
19
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::INVALID;
20
+
18
21
  public:
19
22
  PhysicalJoin(LogicalOperator &op, PhysicalOperatorType type, JoinType join_type, idx_t estimated_cardinality);
20
23
 
@@ -12,13 +12,12 @@
12
12
  #include "duckdb/execution/operator/join/physical_comparison_join.hpp"
13
13
 
14
14
  namespace duckdb {
15
- idx_t nested_loop_join(ExpressionType op, Vector &left, Vector &right, idx_t &lpos, idx_t &rpos, sel_t lvector[],
16
- sel_t rvector[]);
17
- idx_t nested_loop_comparison(ExpressionType op, Vector &left, Vector &right, sel_t lvector[], sel_t rvector[],
18
- idx_t count);
19
15
 
20
16
  //! PhysicalNestedLoopJoin represents a nested loop join between two tables
21
17
  class PhysicalNestedLoopJoin : public PhysicalComparisonJoin {
18
+ public:
19
+ static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::NESTED_LOOP_JOIN;
20
+
22
21
  public:
23
22
  PhysicalNestedLoopJoin(LogicalOperator &op, unique_ptr<PhysicalOperator> left, unique_ptr<PhysicalOperator> right,
24
23
  vector<JoinCondition> cond, JoinType join_type, idx_t estimated_cardinality);