duckdb 0.7.1 → 0.7.2-dev1034.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 (590) hide show
  1. package/binding.gyp +12 -7
  2. package/lib/duckdb.d.ts +55 -2
  3. package/lib/duckdb.js +20 -1
  4. package/package.json +1 -1
  5. package/src/connection.cpp +1 -2
  6. package/src/database.cpp +1 -1
  7. package/src/duckdb/extension/icu/icu-extension.cpp +4 -0
  8. package/src/duckdb/extension/icu/icu-list-range.cpp +207 -0
  9. package/src/duckdb/extension/icu/icu-table-range.cpp +194 -0
  10. package/src/duckdb/extension/icu/include/icu-list-range.hpp +17 -0
  11. package/src/duckdb/extension/icu/include/icu-table-range.hpp +17 -0
  12. package/src/duckdb/extension/json/include/json_common.hpp +1 -0
  13. package/src/duckdb/extension/json/include/json_functions.hpp +2 -0
  14. package/src/duckdb/extension/json/include/json_serializer.hpp +77 -0
  15. package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +147 -0
  16. package/src/duckdb/extension/json/json_functions/read_json.cpp +6 -5
  17. package/src/duckdb/extension/json/json_functions.cpp +12 -4
  18. package/src/duckdb/extension/json/json_scan.cpp +2 -2
  19. package/src/duckdb/extension/json/json_serializer.cpp +217 -0
  20. package/src/duckdb/extension/parquet/column_reader.cpp +94 -15
  21. package/src/duckdb/extension/parquet/column_writer.cpp +0 -1
  22. package/src/duckdb/extension/parquet/include/column_reader.hpp +1 -2
  23. package/src/duckdb/extension/parquet/include/decode_utils.hpp +5 -4
  24. package/src/duckdb/extension/parquet/include/generated_column_reader.hpp +1 -11
  25. package/src/duckdb/extension/parquet/include/parquet_timestamp.hpp +2 -1
  26. package/src/duckdb/extension/parquet/parquet-extension.cpp +12 -2
  27. package/src/duckdb/extension/parquet/parquet_reader.cpp +1 -1
  28. package/src/duckdb/extension/parquet/parquet_statistics.cpp +26 -32
  29. package/src/duckdb/extension/parquet/parquet_timestamp.cpp +16 -6
  30. package/src/duckdb/src/catalog/catalog.cpp +34 -5
  31. package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +4 -0
  32. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +2 -21
  33. package/src/duckdb/src/catalog/catalog_entry/scalar_function_catalog_entry.cpp +7 -6
  34. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +3 -3
  35. package/src/duckdb/src/catalog/catalog_entry/table_function_catalog_entry.cpp +20 -1
  36. package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +8 -2
  37. package/src/duckdb/src/catalog/catalog_set.cpp +1 -0
  38. package/src/duckdb/src/catalog/default/default_functions.cpp +3 -0
  39. package/src/duckdb/src/catalog/dependency_list.cpp +12 -0
  40. package/src/duckdb/src/catalog/duck_catalog.cpp +34 -7
  41. package/src/duckdb/src/common/arrow/arrow_appender.cpp +48 -4
  42. package/src/duckdb/src/common/arrow/arrow_converter.cpp +1 -1
  43. package/src/duckdb/src/common/box_renderer.cpp +109 -23
  44. package/src/duckdb/src/common/enums/expression_type.cpp +8 -222
  45. package/src/duckdb/src/common/enums/join_type.cpp +3 -22
  46. package/src/duckdb/src/common/enums/logical_operator_type.cpp +2 -0
  47. package/src/duckdb/src/common/enums/statement_type.cpp +2 -0
  48. package/src/duckdb/src/common/exception.cpp +15 -1
  49. package/src/duckdb/src/common/field_writer.cpp +1 -0
  50. package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
  51. package/src/duckdb/src/common/preserved_error.cpp +7 -5
  52. package/src/duckdb/src/common/serializer/buffered_deserializer.cpp +4 -0
  53. package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +15 -2
  54. package/src/duckdb/src/common/serializer/enum_serializer.cpp +1176 -0
  55. package/src/duckdb/src/common/sort/sort_state.cpp +5 -7
  56. package/src/duckdb/src/common/sort/sorted_block.cpp +0 -1
  57. package/src/duckdb/src/common/string_util.cpp +4 -1
  58. package/src/duckdb/src/common/types/bit.cpp +166 -87
  59. package/src/duckdb/src/common/types/blob.cpp +1 -1
  60. package/src/duckdb/src/common/types/chunk_collection.cpp +2 -2
  61. package/src/duckdb/src/common/types/column_data_collection.cpp +39 -2
  62. package/src/duckdb/src/common/types/column_data_collection_segment.cpp +11 -6
  63. package/src/duckdb/src/common/types/data_chunk.cpp +1 -1
  64. package/src/duckdb/src/common/types/time.cpp +13 -0
  65. package/src/duckdb/src/common/types/value.cpp +320 -154
  66. package/src/duckdb/src/common/types/vector.cpp +155 -127
  67. package/src/duckdb/src/common/types.cpp +313 -153
  68. package/src/duckdb/src/common/vector_operations/vector_cast.cpp +2 -1
  69. package/src/duckdb/src/execution/aggregate_hashtable.cpp +10 -5
  70. package/src/duckdb/src/execution/column_binding_resolver.cpp +21 -5
  71. package/src/duckdb/src/execution/expression_executor/execute_cast.cpp +2 -1
  72. package/src/duckdb/src/execution/index/art/art.cpp +6 -5
  73. package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +4 -5
  74. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +117 -26
  75. package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +3 -0
  76. package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +5 -3
  77. package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +64 -17
  78. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +2 -2
  79. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +12 -4
  80. package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +6 -11
  81. package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +3 -1
  82. package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +6 -3
  83. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +6 -14
  84. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +2 -2
  85. package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +34 -0
  86. package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +20 -5
  87. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +20 -40
  88. package/src/duckdb/src/execution/partitionable_hashtable.cpp +14 -2
  89. package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +21 -16
  90. package/src/duckdb/src/execution/physical_plan/plan_asof_join.cpp +97 -0
  91. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +95 -47
  92. package/src/duckdb/src/execution/physical_plan/plan_distinct.cpp +5 -8
  93. package/src/duckdb/src/execution/physical_plan/plan_positional_join.cpp +14 -5
  94. package/src/duckdb/src/execution/physical_plan_generator.cpp +3 -0
  95. package/src/duckdb/src/execution/window_segment_tree.cpp +173 -1
  96. package/src/duckdb/src/function/aggregate/algebraic/avg.cpp +0 -6
  97. package/src/duckdb/src/function/aggregate/distributive/bitagg.cpp +99 -95
  98. package/src/duckdb/src/function/aggregate/distributive/bitstring_agg.cpp +269 -0
  99. package/src/duckdb/src/function/aggregate/distributive/bool.cpp +2 -0
  100. package/src/duckdb/src/function/aggregate/distributive/count.cpp +3 -4
  101. package/src/duckdb/src/function/aggregate/distributive/first.cpp +1 -0
  102. package/src/duckdb/src/function/aggregate/distributive/minmax.cpp +2 -0
  103. package/src/duckdb/src/function/aggregate/distributive/sum.cpp +19 -16
  104. package/src/duckdb/src/function/aggregate/distributive_functions.cpp +1 -0
  105. package/src/duckdb/src/function/aggregate/holistic/approximate_quantile.cpp +5 -2
  106. package/src/duckdb/src/function/aggregate/holistic/mode.cpp +1 -1
  107. package/src/duckdb/src/function/aggregate/holistic/quantile.cpp +16 -1
  108. package/src/duckdb/src/function/aggregate/nested/list.cpp +8 -8
  109. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +58 -16
  110. package/src/duckdb/src/function/cast/bit_cast.cpp +0 -2
  111. package/src/duckdb/src/function/cast/blob_cast.cpp +0 -1
  112. package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
  113. package/src/duckdb/src/function/cast/enum_casts.cpp +25 -3
  114. package/src/duckdb/src/function/cast/list_casts.cpp +17 -4
  115. package/src/duckdb/src/function/cast/map_cast.cpp +5 -2
  116. package/src/duckdb/src/function/cast/string_cast.cpp +36 -10
  117. package/src/duckdb/src/function/cast/struct_cast.cpp +24 -4
  118. package/src/duckdb/src/function/cast/time_casts.cpp +2 -2
  119. package/src/duckdb/src/function/cast/union_casts.cpp +33 -7
  120. package/src/duckdb/src/function/function_binder.cpp +1 -8
  121. package/src/duckdb/src/function/scalar/bit/bitstring.cpp +100 -0
  122. package/src/duckdb/src/function/scalar/date/current.cpp +0 -2
  123. package/src/duckdb/src/function/scalar/date/date_diff.cpp +0 -1
  124. package/src/duckdb/src/function/scalar/date/date_part.cpp +18 -26
  125. package/src/duckdb/src/function/scalar/date/date_sub.cpp +0 -1
  126. package/src/duckdb/src/function/scalar/date/date_trunc.cpp +10 -14
  127. package/src/duckdb/src/function/scalar/generic/stats.cpp +2 -4
  128. package/src/duckdb/src/function/scalar/list/contains_or_position.cpp +4 -146
  129. package/src/duckdb/src/function/scalar/list/flatten.cpp +5 -12
  130. package/src/duckdb/src/function/scalar/list/list_aggregates.cpp +1 -1
  131. package/src/duckdb/src/function/scalar/list/list_concat.cpp +8 -12
  132. package/src/duckdb/src/function/scalar/list/list_extract.cpp +5 -12
  133. package/src/duckdb/src/function/scalar/list/list_lambdas.cpp +7 -3
  134. package/src/duckdb/src/function/scalar/list/list_value.cpp +6 -10
  135. package/src/duckdb/src/function/scalar/map/map.cpp +47 -1
  136. package/src/duckdb/src/function/scalar/map/map_entries.cpp +61 -0
  137. package/src/duckdb/src/function/scalar/map/map_extract.cpp +68 -26
  138. package/src/duckdb/src/function/scalar/map/map_keys_values.cpp +97 -0
  139. package/src/duckdb/src/function/scalar/math/numeric.cpp +101 -17
  140. package/src/duckdb/src/function/scalar/math_functions.cpp +3 -0
  141. package/src/duckdb/src/function/scalar/nested_functions.cpp +3 -0
  142. package/src/duckdb/src/function/scalar/operators/add.cpp +0 -9
  143. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +29 -48
  144. package/src/duckdb/src/function/scalar/operators/bitwise.cpp +0 -63
  145. package/src/duckdb/src/function/scalar/operators/multiply.cpp +5 -6
  146. package/src/duckdb/src/function/scalar/operators/subtract.cpp +0 -6
  147. package/src/duckdb/src/function/scalar/string/caseconvert.cpp +2 -6
  148. package/src/duckdb/src/function/scalar/string/hex.cpp +201 -0
  149. package/src/duckdb/src/function/scalar/string/instr.cpp +2 -6
  150. package/src/duckdb/src/function/scalar/string/length.cpp +2 -6
  151. package/src/duckdb/src/function/scalar/string/like.cpp +2 -6
  152. package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +243 -0
  153. package/src/duckdb/src/function/scalar/string/regexp/regexp_util.cpp +79 -0
  154. package/src/duckdb/src/function/scalar/string/regexp.cpp +21 -80
  155. package/src/duckdb/src/function/scalar/string/substring.cpp +2 -6
  156. package/src/duckdb/src/function/scalar/string_functions.cpp +2 -0
  157. package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +5 -10
  158. package/src/duckdb/src/function/scalar/struct/struct_insert.cpp +11 -14
  159. package/src/duckdb/src/function/scalar/struct/struct_pack.cpp +6 -7
  160. package/src/duckdb/src/function/table/arrow.cpp +5 -2
  161. package/src/duckdb/src/function/table/arrow_conversion.cpp +25 -1
  162. package/src/duckdb/src/function/table/checkpoint.cpp +5 -1
  163. package/src/duckdb/src/function/table/read_csv.cpp +55 -0
  164. package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +2 -2
  165. package/src/duckdb/src/function/table/system/test_all_types.cpp +2 -2
  166. package/src/duckdb/src/function/table/table_scan.cpp +1 -1
  167. package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
  168. package/src/duckdb/src/function/table_function.cpp +30 -11
  169. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +6 -0
  170. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +1 -1
  171. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_function_catalog_entry.hpp +6 -8
  172. package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +3 -0
  173. package/src/duckdb/src/include/duckdb/catalog/duck_catalog.hpp +2 -1
  174. package/src/duckdb/src/include/duckdb/common/box_renderer.hpp +8 -2
  175. package/src/duckdb/src/include/duckdb/common/constants.hpp +0 -19
  176. package/src/duckdb/src/include/duckdb/common/enums/aggregate_handling.hpp +2 -0
  177. package/src/duckdb/src/include/duckdb/common/enums/expression_type.hpp +2 -3
  178. package/src/duckdb/src/include/duckdb/common/enums/joinref_type.hpp +7 -4
  179. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +1 -0
  180. package/src/duckdb/src/include/duckdb/common/enums/order_type.hpp +2 -0
  181. package/src/duckdb/src/include/duckdb/common/enums/set_operation_type.hpp +2 -1
  182. package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +2 -1
  183. package/src/duckdb/src/include/duckdb/common/enums/tableref_type.hpp +2 -1
  184. package/src/duckdb/src/include/duckdb/common/exception.hpp +69 -2
  185. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +12 -4
  186. package/src/duckdb/src/include/duckdb/common/{http_stats.hpp → http_state.hpp} +18 -4
  187. package/src/duckdb/src/include/duckdb/common/operator/multiply.hpp +2 -0
  188. package/src/duckdb/src/include/duckdb/common/optional_ptr.hpp +45 -0
  189. package/src/duckdb/src/include/duckdb/common/preserved_error.hpp +6 -1
  190. package/src/duckdb/src/include/duckdb/common/serializer/buffered_deserializer.hpp +4 -2
  191. package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_reader.hpp +8 -2
  192. package/src/duckdb/src/include/duckdb/common/serializer/enum_serializer.hpp +113 -0
  193. package/src/duckdb/src/include/duckdb/common/serializer/format_deserializer.hpp +336 -0
  194. package/src/duckdb/src/include/duckdb/common/serializer/format_serializer.hpp +268 -0
  195. package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +126 -0
  196. package/src/duckdb/src/include/duckdb/common/serializer.hpp +13 -0
  197. package/src/duckdb/src/include/duckdb/common/string_util.hpp +25 -0
  198. package/src/duckdb/src/include/duckdb/common/types/bit.hpp +12 -7
  199. package/src/duckdb/src/include/duckdb/common/types/time.hpp +3 -0
  200. package/src/duckdb/src/include/duckdb/common/types/value.hpp +17 -48
  201. package/src/duckdb/src/include/duckdb/common/types/value_map.hpp +1 -1
  202. package/src/duckdb/src/include/duckdb/common/types/vector.hpp +3 -1
  203. package/src/duckdb/src/include/duckdb/common/types.hpp +45 -8
  204. package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +2 -2
  205. package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +1 -0
  206. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +2 -2
  207. package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_perfecthash_aggregate.hpp +1 -1
  208. package/src/duckdb/src/include/duckdb/execution/operator/join/physical_cross_product.hpp +2 -0
  209. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_file_handle.hpp +1 -0
  210. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_reader_options.hpp +6 -0
  211. package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_projection.hpp +5 -0
  212. package/src/duckdb/src/include/duckdb/execution/partitionable_hashtable.hpp +3 -0
  213. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +1 -3
  214. package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +54 -0
  215. package/src/duckdb/src/include/duckdb/function/aggregate/distributive_functions.hpp +5 -0
  216. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +18 -6
  217. package/src/duckdb/src/include/duckdb/function/cast/bound_cast_data.hpp +84 -0
  218. package/src/duckdb/src/include/duckdb/function/cast/cast_function_set.hpp +2 -2
  219. package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +28 -64
  220. package/src/duckdb/src/include/duckdb/function/function_binder.hpp +3 -6
  221. package/src/duckdb/src/include/duckdb/function/scalar/bit_functions.hpp +4 -0
  222. package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +138 -0
  223. package/src/duckdb/src/include/duckdb/function/scalar/math_functions.hpp +8 -0
  224. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +59 -0
  225. package/src/duckdb/src/include/duckdb/function/scalar/regexp.hpp +81 -1
  226. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +4 -0
  227. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
  228. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +12 -1
  229. package/src/duckdb/src/include/duckdb/function/table_function.hpp +10 -0
  230. package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +2 -0
  231. package/src/duckdb/src/include/duckdb/main/client_data.hpp +3 -3
  232. package/src/duckdb/src/include/duckdb/main/config.hpp +3 -0
  233. package/src/duckdb/src/include/duckdb/main/connection_manager.hpp +2 -0
  234. package/src/duckdb/src/include/duckdb/main/database.hpp +1 -0
  235. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +2 -0
  236. package/src/duckdb/src/include/duckdb/main/prepared_statement.hpp +2 -0
  237. package/src/duckdb/src/include/duckdb/main/relation/explain_relation.hpp +2 -1
  238. package/src/duckdb/src/include/duckdb/main/relation.hpp +2 -1
  239. package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +2 -0
  240. package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
  241. package/src/duckdb/src/include/duckdb/optimizer/rule/list.hpp +1 -0
  242. package/src/duckdb/src/include/duckdb/optimizer/rule/ordered_aggregate_optimizer.hpp +24 -0
  243. package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +4 -0
  244. package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +3 -0
  245. package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +2 -0
  246. package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +5 -0
  247. package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +2 -0
  248. package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +2 -0
  249. package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +2 -0
  250. package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +2 -0
  251. package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +2 -0
  252. package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +3 -0
  253. package/src/duckdb/src/include/duckdb/parser/expression/default_expression.hpp +1 -0
  254. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +4 -2
  255. package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +2 -0
  256. package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +2 -0
  257. package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +2 -0
  258. package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +2 -0
  259. package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +4 -2
  260. package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +2 -0
  261. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +5 -0
  262. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +5 -1
  263. package/src/duckdb/src/include/duckdb/parser/parsed_data/{alter_function_info.hpp → alter_scalar_function_info.hpp} +13 -13
  264. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_function_info.hpp +47 -0
  265. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +6 -0
  266. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_function_info.hpp +2 -1
  267. package/src/duckdb/src/include/duckdb/parser/parsed_data/sample_options.hpp +2 -0
  268. package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -0
  269. package/src/duckdb/src/include/duckdb/parser/query_node/recursive_cte_node.hpp +3 -0
  270. package/src/duckdb/src/include/duckdb/parser/query_node/select_node.hpp +5 -0
  271. package/src/duckdb/src/include/duckdb/parser/query_node/set_operation_node.hpp +3 -0
  272. package/src/duckdb/src/include/duckdb/parser/query_node.hpp +13 -2
  273. package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +24 -1
  274. package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +2 -1
  275. package/src/duckdb/src/include/duckdb/parser/statement/multi_statement.hpp +28 -0
  276. package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +6 -1
  277. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +4 -0
  278. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -0
  279. package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +3 -0
  280. package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +3 -0
  281. package/src/duckdb/src/include/duckdb/parser/tableref/list.hpp +1 -0
  282. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +87 -0
  283. package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +3 -0
  284. package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +3 -0
  285. package/src/duckdb/src/include/duckdb/parser/tableref.hpp +3 -1
  286. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +2 -0
  287. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +33 -0
  288. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -0
  289. package/src/duckdb/src/include/duckdb/planner/binder.hpp +15 -4
  290. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +3 -0
  291. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +3 -0
  292. package/src/duckdb/src/include/duckdb/planner/expression_binder/base_select_binder.hpp +64 -0
  293. package/src/duckdb/src/include/duckdb/planner/expression_binder/having_binder.hpp +2 -2
  294. package/src/duckdb/src/include/duckdb/planner/expression_binder/order_binder.hpp +4 -1
  295. package/src/duckdb/src/include/duckdb/planner/expression_binder/qualify_binder.hpp +2 -2
  296. package/src/duckdb/src/include/duckdb/planner/expression_binder/select_binder.hpp +9 -38
  297. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
  298. package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -0
  299. package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +1 -0
  300. package/src/duckdb/src/include/duckdb/planner/operator/logical_asof_join.hpp +22 -0
  301. package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +5 -2
  302. package/src/duckdb/src/include/duckdb/planner/operator/logical_distinct.hpp +3 -0
  303. package/src/duckdb/src/include/duckdb/planner/query_node/bound_select_node.hpp +8 -2
  304. package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +2 -0
  305. package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +76 -44
  306. package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +3 -2
  307. package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +1 -1
  308. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
  309. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_fetch.hpp +1 -1
  310. package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_scan.hpp +1 -1
  311. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
  312. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_fetch.hpp +1 -1
  313. package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_scan.hpp +1 -1
  314. package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +5 -2
  315. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +3 -3
  316. package/src/duckdb/src/include/duckdb/storage/index.hpp +4 -3
  317. package/src/duckdb/src/include/duckdb/storage/meta_block_reader.hpp +7 -0
  318. package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +93 -29
  319. package/src/duckdb/src/include/duckdb/storage/statistics/column_statistics.hpp +22 -3
  320. package/src/duckdb/src/include/duckdb/storage/statistics/distinct_statistics.hpp +8 -6
  321. package/src/duckdb/src/include/duckdb/storage/statistics/list_stats.hpp +41 -0
  322. package/src/duckdb/src/include/duckdb/storage/statistics/node_statistics.hpp +26 -0
  323. package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats.hpp +114 -0
  324. package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats_union.hpp +62 -0
  325. package/src/duckdb/src/include/duckdb/storage/statistics/segment_statistics.hpp +2 -7
  326. package/src/duckdb/src/include/duckdb/storage/statistics/string_stats.hpp +74 -0
  327. package/src/duckdb/src/include/duckdb/storage/statistics/struct_stats.hpp +42 -0
  328. package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +2 -3
  329. package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +2 -1
  330. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +6 -3
  331. package/src/duckdb/src/include/duckdb/storage/table/column_data_checkpointer.hpp +3 -2
  332. package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +7 -5
  333. package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +1 -1
  334. package/src/duckdb/src/include/duckdb/storage/table/persistent_table_data.hpp +6 -2
  335. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +10 -6
  336. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +8 -5
  337. package/src/duckdb/src/include/duckdb/storage/table/row_group_segment_tree.hpp +37 -0
  338. package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +10 -1
  339. package/src/duckdb/src/include/duckdb/storage/table/segment_base.hpp +4 -3
  340. package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +271 -26
  341. package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +5 -0
  342. package/src/duckdb/src/include/duckdb/storage/table/update_segment.hpp +0 -1
  343. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +1 -1
  344. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +2 -2
  345. package/src/duckdb/src/include/duckdb.h +50 -2
  346. package/src/duckdb/src/include/duckdb.hpp +0 -1
  347. package/src/duckdb/src/main/capi/pending-c.cpp +16 -3
  348. package/src/duckdb/src/main/capi/result-c.cpp +27 -1
  349. package/src/duckdb/src/main/capi/stream-c.cpp +25 -0
  350. package/src/duckdb/src/main/client_context.cpp +38 -34
  351. package/src/duckdb/src/main/client_data.cpp +7 -6
  352. package/src/duckdb/src/main/config.cpp +70 -1
  353. package/src/duckdb/src/main/database.cpp +19 -2
  354. package/src/duckdb/src/main/extension/extension_install.cpp +7 -2
  355. package/src/duckdb/src/main/prepared_statement.cpp +4 -0
  356. package/src/duckdb/src/main/query_profiler.cpp +17 -15
  357. package/src/duckdb/src/main/relation/explain_relation.cpp +3 -3
  358. package/src/duckdb/src/main/relation.cpp +3 -2
  359. package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +1 -0
  360. package/src/duckdb/src/optimizer/deliminator.cpp +1 -1
  361. package/src/duckdb/src/optimizer/filter_combiner.cpp +1 -1
  362. package/src/duckdb/src/optimizer/filter_pullup.cpp +3 -1
  363. package/src/duckdb/src/optimizer/filter_pushdown.cpp +14 -8
  364. package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +105 -71
  365. package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +31 -12
  366. package/src/duckdb/src/optimizer/optimizer.cpp +1 -0
  367. package/src/duckdb/src/optimizer/pullup/pullup_from_left.cpp +2 -2
  368. package/src/duckdb/src/optimizer/pushdown/pushdown_aggregate.cpp +33 -5
  369. package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +1 -1
  370. package/src/duckdb/src/optimizer/pushdown/pushdown_inner_join.cpp +3 -0
  371. package/src/duckdb/src/optimizer/pushdown/pushdown_left_join.cpp +5 -12
  372. package/src/duckdb/src/optimizer/pushdown/pushdown_mark_join.cpp +2 -2
  373. package/src/duckdb/src/optimizer/pushdown/pushdown_single_join.cpp +1 -1
  374. package/src/duckdb/src/optimizer/remove_unused_columns.cpp +1 -0
  375. package/src/duckdb/src/optimizer/rule/move_constants.cpp +10 -4
  376. package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +30 -0
  377. package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +9 -2
  378. package/src/duckdb/src/optimizer/statistics/expression/propagate_aggregate.cpp +9 -3
  379. package/src/duckdb/src/optimizer/statistics/expression/propagate_and_compress.cpp +6 -7
  380. package/src/duckdb/src/optimizer/statistics/expression/propagate_cast.cpp +14 -11
  381. package/src/duckdb/src/optimizer/statistics/expression/propagate_columnref.cpp +1 -1
  382. package/src/duckdb/src/optimizer/statistics/expression/propagate_comparison.cpp +13 -15
  383. package/src/duckdb/src/optimizer/statistics/expression/propagate_conjunction.cpp +0 -1
  384. package/src/duckdb/src/optimizer/statistics/expression/propagate_constant.cpp +3 -75
  385. package/src/duckdb/src/optimizer/statistics/expression/propagate_function.cpp +7 -2
  386. package/src/duckdb/src/optimizer/statistics/expression/propagate_operator.cpp +10 -0
  387. package/src/duckdb/src/optimizer/statistics/operator/propagate_aggregate.cpp +2 -3
  388. package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +29 -32
  389. package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +5 -5
  390. package/src/duckdb/src/optimizer/statistics/operator/propagate_set_operation.cpp +3 -3
  391. package/src/duckdb/src/optimizer/statistics_propagator.cpp +2 -1
  392. package/src/duckdb/src/optimizer/unnest_rewriter.cpp +2 -2
  393. package/src/duckdb/src/parallel/meta_pipeline.cpp +0 -4
  394. package/src/duckdb/src/parser/common_table_expression_info.cpp +19 -0
  395. package/src/duckdb/src/parser/expression/between_expression.cpp +17 -0
  396. package/src/duckdb/src/parser/expression/case_expression.cpp +28 -0
  397. package/src/duckdb/src/parser/expression/cast_expression.cpp +17 -0
  398. package/src/duckdb/src/parser/expression/collate_expression.cpp +16 -0
  399. package/src/duckdb/src/parser/expression/columnref_expression.cpp +15 -0
  400. package/src/duckdb/src/parser/expression/comparison_expression.cpp +16 -0
  401. package/src/duckdb/src/parser/expression/conjunction_expression.cpp +17 -0
  402. package/src/duckdb/src/parser/expression/constant_expression.cpp +14 -0
  403. package/src/duckdb/src/parser/expression/default_expression.cpp +7 -0
  404. package/src/duckdb/src/parser/expression/function_expression.cpp +35 -0
  405. package/src/duckdb/src/parser/expression/lambda_expression.cpp +16 -0
  406. package/src/duckdb/src/parser/expression/operator_expression.cpp +15 -0
  407. package/src/duckdb/src/parser/expression/parameter_expression.cpp +15 -0
  408. package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +14 -0
  409. package/src/duckdb/src/parser/expression/star_expression.cpp +26 -6
  410. package/src/duckdb/src/parser/expression/subquery_expression.cpp +20 -0
  411. package/src/duckdb/src/parser/expression/window_expression.cpp +43 -0
  412. package/src/duckdb/src/parser/parsed_data/alter_info.cpp +7 -3
  413. package/src/duckdb/src/parser/parsed_data/alter_scalar_function_info.cpp +56 -0
  414. package/src/duckdb/src/parser/parsed_data/alter_table_function_info.cpp +51 -0
  415. package/src/duckdb/src/parser/parsed_data/create_scalar_function_info.cpp +3 -2
  416. package/src/duckdb/src/parser/parsed_data/create_table_function_info.cpp +6 -0
  417. package/src/duckdb/src/parser/parsed_data/sample_options.cpp +22 -10
  418. package/src/duckdb/src/parser/parsed_expression.cpp +72 -0
  419. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +15 -1
  420. package/src/duckdb/src/parser/query_node/recursive_cte_node.cpp +21 -0
  421. package/src/duckdb/src/parser/query_node/select_node.cpp +31 -0
  422. package/src/duckdb/src/parser/query_node/set_operation_node.cpp +17 -0
  423. package/src/duckdb/src/parser/query_node.cpp +51 -1
  424. package/src/duckdb/src/parser/result_modifier.cpp +78 -0
  425. package/src/duckdb/src/parser/statement/multi_statement.cpp +18 -0
  426. package/src/duckdb/src/parser/statement/select_statement.cpp +12 -0
  427. package/src/duckdb/src/parser/tableref/basetableref.cpp +21 -0
  428. package/src/duckdb/src/parser/tableref/emptytableref.cpp +4 -0
  429. package/src/duckdb/src/parser/tableref/expressionlistref.cpp +17 -0
  430. package/src/duckdb/src/parser/tableref/joinref.cpp +29 -0
  431. package/src/duckdb/src/parser/tableref/pivotref.cpp +373 -0
  432. package/src/duckdb/src/parser/tableref/subqueryref.cpp +15 -0
  433. package/src/duckdb/src/parser/tableref/table_function.cpp +17 -0
  434. package/src/duckdb/src/parser/tableref.cpp +49 -0
  435. package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +11 -0
  436. package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +1 -1
  437. package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +17 -2
  438. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +63 -42
  439. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +1 -1
  440. package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +1 -1
  441. package/src/duckdb/src/parser/transform/helpers/transform_alias.cpp +12 -6
  442. package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +24 -0
  443. package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +7 -0
  444. package/src/duckdb/src/parser/transform/helpers/transform_orderby.cpp +0 -7
  445. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +3 -2
  446. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +4 -0
  447. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +4 -0
  448. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +179 -0
  449. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +3 -4
  450. package/src/duckdb/src/parser/transform/statement/transform_select.cpp +8 -0
  451. package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +2 -3
  452. package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +12 -1
  453. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +121 -0
  454. package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +2 -0
  455. package/src/duckdb/src/parser/transformer.cpp +15 -3
  456. package/src/duckdb/src/planner/bind_context.cpp +18 -25
  457. package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +9 -7
  458. package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +4 -3
  459. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +23 -12
  460. package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +3 -2
  461. package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +176 -0
  462. package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +4 -0
  463. package/src/duckdb/src/planner/binder/expression/bind_unnest_expression.cpp +163 -24
  464. package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +2 -2
  465. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +109 -94
  466. package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +11 -0
  467. package/src/duckdb/src/planner/binder/query_node/plan_select_node.cpp +9 -4
  468. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +5 -3
  469. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +3 -2
  470. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +9 -1
  471. package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +1 -1
  472. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +12 -8
  473. package/src/duckdb/src/planner/binder/statement/bind_logical_plan.cpp +17 -0
  474. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +4 -2
  475. package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +19 -3
  476. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +366 -0
  477. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +11 -1
  478. package/src/duckdb/src/planner/binder/tableref/plan_cteref.cpp +1 -0
  479. package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +61 -13
  480. package/src/duckdb/src/planner/binder.cpp +19 -24
  481. package/src/duckdb/src/planner/bound_result_modifier.cpp +27 -1
  482. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +9 -2
  483. package/src/duckdb/src/planner/expression/bound_expression.cpp +4 -0
  484. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +1 -1
  485. package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +146 -0
  486. package/src/duckdb/src/planner/expression_binder/having_binder.cpp +6 -3
  487. package/src/duckdb/src/planner/expression_binder/qualify_binder.cpp +3 -3
  488. package/src/duckdb/src/planner/expression_binder/select_binder.cpp +1 -132
  489. package/src/duckdb/src/planner/expression_binder.cpp +10 -3
  490. package/src/duckdb/src/planner/expression_iterator.cpp +17 -10
  491. package/src/duckdb/src/planner/filter/constant_filter.cpp +4 -6
  492. package/src/duckdb/src/planner/logical_operator.cpp +7 -2
  493. package/src/duckdb/src/planner/logical_operator_visitor.cpp +6 -0
  494. package/src/duckdb/src/planner/operator/logical_asof_join.cpp +8 -0
  495. package/src/duckdb/src/planner/operator/logical_distinct.cpp +3 -0
  496. package/src/duckdb/src/planner/planner.cpp +2 -1
  497. package/src/duckdb/src/planner/pragma_handler.cpp +10 -2
  498. package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +3 -1
  499. package/src/duckdb/src/storage/buffer_manager.cpp +44 -46
  500. package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +1 -1
  501. package/src/duckdb/src/storage/checkpoint/table_data_reader.cpp +4 -15
  502. package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +10 -4
  503. package/src/duckdb/src/storage/checkpoint_manager.cpp +9 -3
  504. package/src/duckdb/src/storage/compression/bitpacking.cpp +28 -24
  505. package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +43 -45
  506. package/src/duckdb/src/storage/compression/numeric_constant.cpp +9 -10
  507. package/src/duckdb/src/storage/compression/patas.cpp +1 -1
  508. package/src/duckdb/src/storage/compression/rle.cpp +19 -15
  509. package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +5 -5
  510. package/src/duckdb/src/storage/data_table.cpp +20 -20
  511. package/src/duckdb/src/storage/index.cpp +12 -1
  512. package/src/duckdb/src/storage/local_storage.cpp +20 -23
  513. package/src/duckdb/src/storage/meta_block_reader.cpp +22 -0
  514. package/src/duckdb/src/storage/statistics/base_statistics.cpp +373 -128
  515. package/src/duckdb/src/storage/statistics/column_statistics.cpp +57 -3
  516. package/src/duckdb/src/storage/statistics/distinct_statistics.cpp +8 -9
  517. package/src/duckdb/src/storage/statistics/list_stats.cpp +121 -0
  518. package/src/duckdb/src/storage/statistics/numeric_stats.cpp +591 -0
  519. package/src/duckdb/src/storage/statistics/numeric_stats_union.cpp +65 -0
  520. package/src/duckdb/src/storage/statistics/segment_statistics.cpp +2 -11
  521. package/src/duckdb/src/storage/statistics/string_stats.cpp +273 -0
  522. package/src/duckdb/src/storage/statistics/struct_stats.cpp +133 -0
  523. package/src/duckdb/src/storage/storage_info.cpp +2 -2
  524. package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +4 -10
  525. package/src/duckdb/src/storage/table/column_data.cpp +45 -46
  526. package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +7 -8
  527. package/src/duckdb/src/storage/table/column_segment.cpp +13 -14
  528. package/src/duckdb/src/storage/table/list_column_data.cpp +41 -59
  529. package/src/duckdb/src/storage/table/persistent_table_data.cpp +2 -1
  530. package/src/duckdb/src/storage/table/row_group.cpp +38 -32
  531. package/src/duckdb/src/storage/table/row_group_collection.cpp +94 -78
  532. package/src/duckdb/src/storage/table/scan_state.cpp +22 -3
  533. package/src/duckdb/src/storage/table/standard_column_data.cpp +7 -6
  534. package/src/duckdb/src/storage/table/struct_column_data.cpp +16 -16
  535. package/src/duckdb/src/storage/table/table_statistics.cpp +27 -7
  536. package/src/duckdb/src/storage/table/update_segment.cpp +20 -18
  537. package/src/duckdb/src/storage/wal_replay.cpp +8 -5
  538. package/src/duckdb/src/storage/write_ahead_log.cpp +2 -2
  539. package/src/duckdb/src/transaction/commit_state.cpp +11 -7
  540. package/src/duckdb/src/verification/deserialized_statement_verifier.cpp +0 -1
  541. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +35 -0
  542. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +36 -2
  543. package/src/duckdb/third_party/libpg_query/include/nodes/primnodes.hpp +3 -3
  544. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +1022 -530
  545. package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +8 -0
  546. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +24462 -22828
  547. package/src/duckdb/third_party/re2/re2/re2.cc +9 -0
  548. package/src/duckdb/third_party/re2/re2/re2.h +2 -0
  549. package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +4 -4
  550. package/src/duckdb/ub_extension_json_json_functions.cpp +2 -0
  551. package/src/duckdb/ub_src_common_serializer.cpp +2 -0
  552. package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
  553. package/src/duckdb/ub_src_function_aggregate_distributive.cpp +2 -0
  554. package/src/duckdb/ub_src_function_scalar_bit.cpp +2 -0
  555. package/src/duckdb/ub_src_function_scalar_map.cpp +4 -0
  556. package/src/duckdb/ub_src_function_scalar_string.cpp +2 -0
  557. package/src/duckdb/ub_src_function_scalar_string_regexp.cpp +4 -0
  558. package/src/duckdb/ub_src_main_capi.cpp +2 -0
  559. package/src/duckdb/ub_src_optimizer_rule.cpp +2 -0
  560. package/src/duckdb/ub_src_parser.cpp +2 -0
  561. package/src/duckdb/ub_src_parser_parsed_data.cpp +4 -2
  562. package/src/duckdb/ub_src_parser_statement.cpp +2 -0
  563. package/src/duckdb/ub_src_parser_tableref.cpp +2 -0
  564. package/src/duckdb/ub_src_parser_transform_statement.cpp +2 -0
  565. package/src/duckdb/ub_src_parser_transform_tableref.cpp +2 -0
  566. package/src/duckdb/ub_src_planner_binder_expression.cpp +2 -0
  567. package/src/duckdb/ub_src_planner_binder_tableref.cpp +2 -0
  568. package/src/duckdb/ub_src_planner_expression_binder.cpp +2 -0
  569. package/src/duckdb/ub_src_planner_operator.cpp +2 -0
  570. package/src/duckdb/ub_src_storage_statistics.cpp +6 -6
  571. package/src/duckdb/ub_src_storage_table.cpp +0 -2
  572. package/src/duckdb_node.hpp +2 -1
  573. package/src/statement.cpp +5 -5
  574. package/src/utils.cpp +27 -2
  575. package/test/extension.test.ts +44 -26
  576. package/test/syntax_error.test.ts +3 -1
  577. package/filelist.cache +0 -0
  578. package/src/duckdb/src/include/duckdb/main/loadable_extension.hpp +0 -59
  579. package/src/duckdb/src/include/duckdb/storage/statistics/list_statistics.hpp +0 -36
  580. package/src/duckdb/src/include/duckdb/storage/statistics/numeric_statistics.hpp +0 -75
  581. package/src/duckdb/src/include/duckdb/storage/statistics/string_statistics.hpp +0 -49
  582. package/src/duckdb/src/include/duckdb/storage/statistics/struct_statistics.hpp +0 -36
  583. package/src/duckdb/src/include/duckdb/storage/statistics/validity_statistics.hpp +0 -45
  584. package/src/duckdb/src/parser/parsed_data/alter_function_info.cpp +0 -55
  585. package/src/duckdb/src/storage/statistics/list_statistics.cpp +0 -94
  586. package/src/duckdb/src/storage/statistics/numeric_statistics.cpp +0 -307
  587. package/src/duckdb/src/storage/statistics/string_statistics.cpp +0 -220
  588. package/src/duckdb/src/storage/statistics/struct_statistics.cpp +0 -108
  589. package/src/duckdb/src/storage/statistics/validity_statistics.cpp +0 -91
  590. package/src/duckdb/src/storage/table/segment_tree.cpp +0 -179
@@ -4,6 +4,7 @@
4
4
  #include "duckdb/common/array.hpp"
5
5
  #include "duckdb/common/types/interval.hpp"
6
6
  #include "duckdb/common/types/uuid.hpp"
7
+ #include "duckdb/function/table/arrow.hpp"
7
8
 
8
9
  namespace duckdb {
9
10
 
@@ -127,7 +128,11 @@ struct ArrowScalarConverter {
127
128
  struct ArrowIntervalConverter {
128
129
  template <class TGT, class SRC>
129
130
  static TGT Operation(SRC input) {
130
- return Interval::GetMilli(input);
131
+ ArrowInterval result;
132
+ result.months = input.months;
133
+ result.days = input.days;
134
+ result.nanoseconds = input.micros * Interval::NANOS_PER_MICRO;
135
+ return result;
131
136
  }
132
137
 
133
138
  static bool SkipNulls() {
@@ -136,7 +141,6 @@ struct ArrowIntervalConverter {
136
141
 
137
142
  template <class TGT>
138
143
  static void SetNull(TGT &value) {
139
- value = 0;
140
144
  }
141
145
  };
142
146
 
@@ -185,11 +189,51 @@ struct ArrowScalarData : public ArrowScalarBaseData<TGT, SRC, OP> {
185
189
  //===--------------------------------------------------------------------===//
186
190
  template <class TGT>
187
191
  struct ArrowEnumData : public ArrowScalarBaseData<TGT> {
192
+ static idx_t GetLength(string_t input) {
193
+ return input.GetSize();
194
+ }
195
+ static void WriteData(data_ptr_t target, string_t input) {
196
+ memcpy(target, input.GetDataUnsafe(), input.GetSize());
197
+ }
198
+ static void EnumAppendVector(ArrowAppendData &append_data, const Vector &input, idx_t size) {
199
+ D_ASSERT(input.GetVectorType() == VectorType::FLAT_VECTOR);
200
+
201
+ // resize the validity mask and set up the validity buffer for iteration
202
+ ResizeValidity(append_data.validity, append_data.row_count + size);
203
+
204
+ // resize the offset buffer - the offset buffer holds the offsets into the child array
205
+ append_data.main_buffer.resize(append_data.main_buffer.size() + sizeof(uint32_t) * (size + 1));
206
+ auto data = (string_t *)FlatVector::GetData<string_t>(input);
207
+ auto offset_data = (uint32_t *)append_data.main_buffer.data();
208
+ if (append_data.row_count == 0) {
209
+ // first entry
210
+ offset_data[0] = 0;
211
+ }
212
+ // now append the string data to the auxiliary buffer
213
+ // the auxiliary buffer's length depends on the string lengths, so we resize as required
214
+ auto last_offset = offset_data[append_data.row_count];
215
+ for (idx_t i = 0; i < size; i++) {
216
+ auto offset_idx = append_data.row_count + i + 1;
217
+
218
+ auto string_length = GetLength(data[i]);
219
+
220
+ // append the offset data
221
+ auto current_offset = last_offset + string_length;
222
+ offset_data[offset_idx] = current_offset;
223
+
224
+ // resize the string buffer if required, and write the string data
225
+ append_data.aux_buffer.resize(current_offset);
226
+ WriteData(append_data.aux_buffer.data() + last_offset, data[i]);
227
+
228
+ last_offset = current_offset;
229
+ }
230
+ append_data.row_count += size;
231
+ }
188
232
  static void Initialize(ArrowAppendData &result, const LogicalType &type, idx_t capacity) {
189
233
  result.main_buffer.reserve(capacity * sizeof(TGT));
190
234
  // construct the enum child data
191
235
  auto enum_data = InitializeArrowChild(LogicalType::VARCHAR, EnumType::GetSize(type));
192
- enum_data->append_vector(*enum_data, EnumType::GetValuesInsertOrder(type), EnumType::GetSize(type));
236
+ EnumAppendVector(*enum_data, EnumType::GetValuesInsertOrder(type), EnumType::GetSize(type));
193
237
  result.child_data.push_back(std::move(enum_data));
194
238
  }
195
239
 
@@ -629,7 +673,7 @@ static void InitializeFunctionPointers(ArrowAppendData &append_data, const Logic
629
673
  }
630
674
  break;
631
675
  case LogicalTypeId::INTERVAL:
632
- InitializeFunctionPointers<ArrowScalarData<int64_t, interval_t, ArrowIntervalConverter>>(append_data);
676
+ InitializeFunctionPointers<ArrowScalarData<ArrowInterval, interval_t, ArrowIntervalConverter>>(append_data);
633
677
  break;
634
678
  case LogicalTypeId::STRUCT:
635
679
  InitializeFunctionPointers<ArrowStructData>(append_data);
@@ -150,7 +150,7 @@ void SetArrowFormat(DuckDBArrowSchemaHolder &root_holder, ArrowSchema &child, co
150
150
  child.format = "tsm:";
151
151
  break;
152
152
  case LogicalTypeId::INTERVAL:
153
- child.format = "tDm";
153
+ child.format = "tin";
154
154
  break;
155
155
  case LogicalTypeId::DECIMAL: {
156
156
  uint8_t width, scale;
@@ -197,6 +197,60 @@ list<ColumnDataCollection> BoxRenderer::FetchRenderCollections(ClientContext &co
197
197
  return collections;
198
198
  }
199
199
 
200
+ list<ColumnDataCollection> BoxRenderer::PivotCollections(ClientContext &context, list<ColumnDataCollection> input,
201
+ vector<string> &column_names,
202
+ vector<LogicalType> &result_types, idx_t row_count) {
203
+ auto &top = input.front();
204
+ auto &bottom = input.back();
205
+
206
+ vector<LogicalType> varchar_types;
207
+ vector<string> new_names;
208
+ new_names.emplace_back("Column");
209
+ new_names.emplace_back("Type");
210
+ varchar_types.emplace_back(LogicalType::VARCHAR);
211
+ varchar_types.emplace_back(LogicalType::VARCHAR);
212
+ for (idx_t r = 0; r < top.Count(); r++) {
213
+ new_names.emplace_back("Row " + to_string(r + 1));
214
+ varchar_types.emplace_back(LogicalType::VARCHAR);
215
+ }
216
+ for (idx_t r = 0; r < bottom.Count(); r++) {
217
+ auto row_index = row_count - bottom.Count() + r + 1;
218
+ new_names.emplace_back("Row " + to_string(row_index));
219
+ varchar_types.emplace_back(LogicalType::VARCHAR);
220
+ }
221
+ //
222
+ DataChunk row_chunk;
223
+ row_chunk.Initialize(Allocator::DefaultAllocator(), varchar_types);
224
+ std::list<ColumnDataCollection> result;
225
+ result.emplace_back(context, varchar_types);
226
+ result.emplace_back(context, varchar_types);
227
+ auto &res_coll = result.front();
228
+ ColumnDataAppendState append_state;
229
+ res_coll.InitializeAppend(append_state);
230
+ for (idx_t c = 0; c < top.ColumnCount(); c++) {
231
+ vector<column_t> column_ids {c};
232
+ auto row_index = row_chunk.size();
233
+ idx_t current_index = 0;
234
+ row_chunk.SetValue(current_index++, row_index, column_names[c]);
235
+ row_chunk.SetValue(current_index++, row_index, RenderType(result_types[c]));
236
+ for (auto &collection : input) {
237
+ for (auto &chunk : collection.Chunks(column_ids)) {
238
+ for (idx_t r = 0; r < chunk.size(); r++) {
239
+ row_chunk.SetValue(current_index++, row_index, chunk.GetValue(0, r));
240
+ }
241
+ }
242
+ }
243
+ row_chunk.SetCardinality(row_chunk.size() + 1);
244
+ if (row_chunk.size() == STANDARD_VECTOR_SIZE || c + 1 == top.ColumnCount()) {
245
+ res_coll.Append(append_state, row_chunk);
246
+ row_chunk.Reset();
247
+ }
248
+ }
249
+ column_names = std::move(new_names);
250
+ result_types = std::move(varchar_types);
251
+ return result;
252
+ }
253
+
200
254
  string ConvertRenderValue(const string &input) {
201
255
  return StringUtil::Replace(StringUtil::Replace(input, "\n", "\\n"), string("\0", 1), "\\0");
202
256
  }
@@ -213,11 +267,10 @@ string BoxRenderer::GetRenderValue(ColumnDataRowCollection &rows, idx_t c, idx_t
213
267
  }
214
268
  }
215
269
 
216
- vector<idx_t> BoxRenderer::ComputeRenderWidths(const vector<string> &names, const ColumnDataCollection &result,
270
+ vector<idx_t> BoxRenderer::ComputeRenderWidths(const vector<string> &names, const vector<LogicalType> &result_types,
217
271
  list<ColumnDataCollection> &collections, idx_t min_width,
218
272
  idx_t max_width, vector<idx_t> &column_map, idx_t &total_length) {
219
- auto column_count = result.ColumnCount();
220
- auto &result_types = result.Types();
273
+ auto column_count = result_types.size();
221
274
 
222
275
  vector<idx_t> widths;
223
276
  widths.reserve(column_count);
@@ -357,13 +410,15 @@ void BoxRenderer::RenderHeader(const vector<string> &names, const vector<Logical
357
410
  ss << std::endl;
358
411
 
359
412
  // render the types
360
- for (idx_t c = 0; c < column_count; c++) {
361
- auto column_idx = column_map[c];
362
- auto type = column_idx == SPLIT_COLUMN ? "" : RenderType(result_types[column_idx]);
363
- RenderValue(ss, type, widths[c]);
413
+ if (config.render_mode == RenderMode::ROWS) {
414
+ for (idx_t c = 0; c < column_count; c++) {
415
+ auto column_idx = column_map[c];
416
+ auto type = column_idx == SPLIT_COLUMN ? "" : RenderType(result_types[column_idx]);
417
+ RenderValue(ss, type, widths[c]);
418
+ }
419
+ ss << config.VERTICAL;
420
+ ss << std::endl;
364
421
  }
365
- ss << config.VERTICAL;
366
- ss << std::endl;
367
422
 
368
423
  // render the line under the header
369
424
  ss << config.LMIDDLE;
@@ -390,12 +445,14 @@ void BoxRenderer::RenderValues(const list<ColumnDataCollection> &collections, co
390
445
  auto column_count = column_map.size();
391
446
 
392
447
  vector<ValueRenderAlignment> alignments;
393
- for (idx_t c = 0; c < column_count; c++) {
394
- auto column_idx = column_map[c];
395
- if (column_idx == SPLIT_COLUMN) {
396
- alignments.push_back(ValueRenderAlignment::MIDDLE);
397
- } else {
398
- alignments.push_back(TypeAlignment(result_types[column_idx]));
448
+ if (config.render_mode == RenderMode::ROWS) {
449
+ for (idx_t c = 0; c < column_count; c++) {
450
+ auto column_idx = column_map[c];
451
+ if (column_idx == SPLIT_COLUMN) {
452
+ alignments.push_back(ValueRenderAlignment::MIDDLE);
453
+ } else {
454
+ alignments.push_back(TypeAlignment(result_types[column_idx]));
455
+ }
399
456
  }
400
457
  }
401
458
 
@@ -409,13 +466,28 @@ void BoxRenderer::RenderValues(const list<ColumnDataCollection> &collections, co
409
466
  } else {
410
467
  str = GetRenderValue(rows, column_idx, r);
411
468
  }
412
- RenderValue(ss, str, widths[c], alignments[c]);
469
+ ValueRenderAlignment alignment;
470
+ if (config.render_mode == RenderMode::ROWS) {
471
+ alignment = alignments[c];
472
+ } else {
473
+ if (c < 2) {
474
+ alignment = ValueRenderAlignment::LEFT;
475
+ } else if (c == SPLIT_COLUMN) {
476
+ alignment = ValueRenderAlignment::MIDDLE;
477
+ } else {
478
+ alignment = ValueRenderAlignment::RIGHT;
479
+ }
480
+ }
481
+ RenderValue(ss, str, widths[c], alignment);
413
482
  }
414
483
  ss << config.VERTICAL;
415
484
  ss << std::endl;
416
485
  }
417
486
 
418
487
  if (bottom_rows > 0) {
488
+ if (config.render_mode == RenderMode::COLUMNS) {
489
+ throw InternalException("Columns render mode does not support bottom rows");
490
+ }
419
491
  // render the bottom rows
420
492
  // first render the divider
421
493
  auto brows = bottom_collection.GetRows();
@@ -607,15 +679,19 @@ void BoxRenderer::Render(ClientContext &context, const vector<string> &names, co
607
679
 
608
680
  // fetch the top and bottom render collections from the result
609
681
  auto collections = FetchRenderCollections(context, result, top_rows, bottom_rows);
610
-
611
- auto &result_types = result.Types();
682
+ auto column_names = names;
683
+ auto result_types = result.Types();
684
+ if (config.render_mode == RenderMode::COLUMNS) {
685
+ collections = PivotCollections(context, std::move(collections), column_names, result_types, row_count);
686
+ }
612
687
 
613
688
  // for each column, figure out the width
614
689
  // start off by figuring out the name of the header by looking at the column name and column type
615
690
  idx_t min_width = has_hidden_rows || row_count == 0 ? minimum_row_length : 0;
616
691
  vector<idx_t> column_map;
617
692
  idx_t total_length;
618
- auto widths = ComputeRenderWidths(names, result, collections, min_width, max_width, column_map, total_length);
693
+ auto widths =
694
+ ComputeRenderWidths(column_names, result_types, collections, min_width, max_width, column_map, total_length);
619
695
 
620
696
  // render boundaries for the individual columns
621
697
  vector<idx_t> boundaries;
@@ -631,7 +707,7 @@ void BoxRenderer::Render(ClientContext &context, const vector<string> &names, co
631
707
 
632
708
  // now begin rendering
633
709
  // first render the header
634
- RenderHeader(names, result_types, column_map, widths, boundaries, total_length, row_count > 0, ss);
710
+ RenderHeader(column_names, result_types, column_map, widths, boundaries, total_length, row_count > 0, ss);
635
711
 
636
712
  // render the values, if there are any
637
713
  RenderValues(collections, column_map, widths, result_types, ss);
@@ -649,10 +725,20 @@ void BoxRenderer::Render(ClientContext &context, const vector<string> &names, co
649
725
  }
650
726
  }
651
727
  idx_t column_count = column_map.size();
652
- if (has_hidden_columns) {
653
- column_count--;
654
- column_count_str += " (" + to_string(column_count) + " shown)";
728
+ if (config.render_mode == RenderMode::COLUMNS) {
729
+ if (has_hidden_columns) {
730
+ has_hidden_rows = true;
731
+ shown_str = " (" + to_string(column_count - 3) + " shown)";
732
+ } else {
733
+ shown_str = string();
734
+ }
735
+ } else {
736
+ if (has_hidden_columns) {
737
+ column_count--;
738
+ column_count_str += " (" + to_string(column_count) + " shown)";
739
+ }
655
740
  }
741
+
656
742
  RenderRowCount(std::move(row_count_str), std::move(shown_str), column_count_str, boundaries, has_hidden_rows,
657
743
  has_hidden_columns, total_length, row_count, column_count, minimum_row_length, ss);
658
744
  }
@@ -1,150 +1,17 @@
1
1
  #include "duckdb/common/enums/expression_type.hpp"
2
2
 
3
3
  #include "duckdb/common/exception.hpp"
4
+ #include "duckdb/common/serializer/enum_serializer.hpp"
4
5
 
5
6
  namespace duckdb {
6
7
 
7
- // LCOV_EXCL_START
8
8
  string ExpressionTypeToString(ExpressionType type) {
9
- switch (type) {
10
- case ExpressionType::OPERATOR_CAST:
11
- return "CAST";
12
- case ExpressionType::OPERATOR_NOT:
13
- return "NOT";
14
- case ExpressionType::OPERATOR_IS_NULL:
15
- return "IS_NULL";
16
- case ExpressionType::OPERATOR_IS_NOT_NULL:
17
- return "IS_NOT_NULL";
18
- case ExpressionType::COMPARE_EQUAL:
19
- return "EQUAL";
20
- case ExpressionType::COMPARE_NOTEQUAL:
21
- return "NOTEQUAL";
22
- case ExpressionType::COMPARE_LESSTHAN:
23
- return "LESSTHAN";
24
- case ExpressionType::COMPARE_GREATERTHAN:
25
- return "GREATERTHAN";
26
- case ExpressionType::COMPARE_LESSTHANOREQUALTO:
27
- return "LESSTHANOREQUALTO";
28
- case ExpressionType::COMPARE_GREATERTHANOREQUALTO:
29
- return "GREATERTHANOREQUALTO";
30
- case ExpressionType::COMPARE_IN:
31
- return "IN";
32
- case ExpressionType::COMPARE_DISTINCT_FROM:
33
- return "DISTINCT_FROM";
34
- case ExpressionType::COMPARE_NOT_DISTINCT_FROM:
35
- return "NOT_DISTINCT_FROM";
36
- case ExpressionType::CONJUNCTION_AND:
37
- return "AND";
38
- case ExpressionType::CONJUNCTION_OR:
39
- return "OR";
40
- case ExpressionType::VALUE_CONSTANT:
41
- return "CONSTANT";
42
- case ExpressionType::VALUE_PARAMETER:
43
- return "PARAMETER";
44
- case ExpressionType::VALUE_TUPLE:
45
- return "TUPLE";
46
- case ExpressionType::VALUE_TUPLE_ADDRESS:
47
- return "TUPLE_ADDRESS";
48
- case ExpressionType::VALUE_NULL:
49
- return "NULL";
50
- case ExpressionType::VALUE_VECTOR:
51
- return "VECTOR";
52
- case ExpressionType::VALUE_SCALAR:
53
- return "SCALAR";
54
- case ExpressionType::AGGREGATE:
55
- return "AGGREGATE";
56
- case ExpressionType::WINDOW_AGGREGATE:
57
- return "WINDOW_AGGREGATE";
58
- case ExpressionType::WINDOW_RANK:
59
- return "RANK";
60
- case ExpressionType::WINDOW_RANK_DENSE:
61
- return "RANK_DENSE";
62
- case ExpressionType::WINDOW_PERCENT_RANK:
63
- return "PERCENT_RANK";
64
- case ExpressionType::WINDOW_ROW_NUMBER:
65
- return "ROW_NUMBER";
66
- case ExpressionType::WINDOW_FIRST_VALUE:
67
- return "FIRST_VALUE";
68
- case ExpressionType::WINDOW_LAST_VALUE:
69
- return "LAST_VALUE";
70
- case ExpressionType::WINDOW_NTH_VALUE:
71
- return "NTH_VALUE";
72
- case ExpressionType::WINDOW_CUME_DIST:
73
- return "CUME_DIST";
74
- case ExpressionType::WINDOW_LEAD:
75
- return "LEAD";
76
- case ExpressionType::WINDOW_LAG:
77
- return "LAG";
78
- case ExpressionType::WINDOW_NTILE:
79
- return "NTILE";
80
- case ExpressionType::FUNCTION:
81
- return "FUNCTION";
82
- case ExpressionType::CASE_EXPR:
83
- return "CASE";
84
- case ExpressionType::OPERATOR_NULLIF:
85
- return "NULLIF";
86
- case ExpressionType::OPERATOR_COALESCE:
87
- return "COALESCE";
88
- case ExpressionType::ARRAY_EXTRACT:
89
- return "ARRAY_EXTRACT";
90
- case ExpressionType::ARRAY_SLICE:
91
- return "ARRAY_SLICE";
92
- case ExpressionType::STRUCT_EXTRACT:
93
- return "STRUCT_EXTRACT";
94
- case ExpressionType::SUBQUERY:
95
- return "SUBQUERY";
96
- case ExpressionType::STAR:
97
- return "STAR";
98
- case ExpressionType::PLACEHOLDER:
99
- return "PLACEHOLDER";
100
- case ExpressionType::COLUMN_REF:
101
- return "COLUMN_REF";
102
- case ExpressionType::FUNCTION_REF:
103
- return "FUNCTION_REF";
104
- case ExpressionType::TABLE_REF:
105
- return "TABLE_REF";
106
- case ExpressionType::CAST:
107
- return "CAST";
108
- case ExpressionType::COMPARE_NOT_IN:
109
- return "COMPARE_NOT_IN";
110
- case ExpressionType::COMPARE_BETWEEN:
111
- return "COMPARE_BETWEEN";
112
- case ExpressionType::COMPARE_NOT_BETWEEN:
113
- return "COMPARE_NOT_BETWEEN";
114
- case ExpressionType::VALUE_DEFAULT:
115
- return "VALUE_DEFAULT";
116
- case ExpressionType::BOUND_REF:
117
- return "BOUND_REF";
118
- case ExpressionType::BOUND_COLUMN_REF:
119
- return "BOUND_COLUMN_REF";
120
- case ExpressionType::BOUND_FUNCTION:
121
- return "BOUND_FUNCTION";
122
- case ExpressionType::BOUND_AGGREGATE:
123
- return "BOUND_AGGREGATE";
124
- case ExpressionType::GROUPING_FUNCTION:
125
- return "GROUPING";
126
- case ExpressionType::ARRAY_CONSTRUCTOR:
127
- return "ARRAY_CONSTRUCTOR";
128
- case ExpressionType::TABLE_STAR:
129
- return "TABLE_STAR";
130
- case ExpressionType::BOUND_UNNEST:
131
- return "BOUND_UNNEST";
132
- case ExpressionType::COLLATE:
133
- return "COLLATE";
134
- case ExpressionType::POSITIONAL_REFERENCE:
135
- return "POSITIONAL_REFERENCE";
136
- case ExpressionType::BOUND_LAMBDA_REF:
137
- return "BOUND_LAMBDA_REF";
138
- case ExpressionType::LAMBDA:
139
- return "LAMBDA";
140
- case ExpressionType::ARROW:
141
- return "ARROW";
142
- case ExpressionType::INVALID:
143
- break;
144
- }
145
- return "INVALID";
9
+ return EnumSerializer::EnumToString(type);
10
+ }
11
+
12
+ string ExpressionClassToString(ExpressionClass type) {
13
+ return EnumSerializer::EnumToString(type);
146
14
  }
147
- // LCOV_EXCL_STOP
148
15
 
149
16
  string ExpressionTypeToOperator(ExpressionType type) {
150
17
  switch (type) {
@@ -173,7 +40,7 @@ string ExpressionTypeToOperator(ExpressionType type) {
173
40
  }
174
41
  }
175
42
 
176
- ExpressionType NegateComparisionExpression(ExpressionType type) {
43
+ ExpressionType NegateComparisonExpression(ExpressionType type) {
177
44
  ExpressionType negated_type = ExpressionType::INVALID;
178
45
  switch (type) {
179
46
  case ExpressionType::COMPARE_EQUAL:
@@ -200,7 +67,7 @@ ExpressionType NegateComparisionExpression(ExpressionType type) {
200
67
  return negated_type;
201
68
  }
202
69
 
203
- ExpressionType FlipComparisionExpression(ExpressionType type) {
70
+ ExpressionType FlipComparisonExpression(ExpressionType type) {
204
71
  ExpressionType flipped_type = ExpressionType::INVALID;
205
72
  switch (type) {
206
73
  case ExpressionType::COMPARE_NOT_DISTINCT_FROM:
@@ -244,85 +111,4 @@ ExpressionType OperatorToExpressionType(const string &op) {
244
111
  return ExpressionType::INVALID;
245
112
  }
246
113
 
247
- string ExpressionClassToString(ExpressionClass type) {
248
- switch (type) {
249
- case ExpressionClass::INVALID:
250
- return "INVALID";
251
- case ExpressionClass::AGGREGATE:
252
- return "AGGREGATE";
253
- case ExpressionClass::CASE:
254
- return "CASE";
255
- case ExpressionClass::CAST:
256
- return "CAST";
257
- case ExpressionClass::COLUMN_REF:
258
- return "COLUMN_REF";
259
- case ExpressionClass::COMPARISON:
260
- return "COMPARISON";
261
- case ExpressionClass::CONJUNCTION:
262
- return "CONJUNCTION";
263
- case ExpressionClass::CONSTANT:
264
- return "CONSTANT";
265
- case ExpressionClass::DEFAULT:
266
- return "DEFAULT";
267
- case ExpressionClass::FUNCTION:
268
- return "FUNCTION";
269
- case ExpressionClass::OPERATOR:
270
- return "OPERATOR";
271
- case ExpressionClass::STAR:
272
- return "STAR";
273
- case ExpressionClass::SUBQUERY:
274
- return "SUBQUERY";
275
- case ExpressionClass::WINDOW:
276
- return "WINDOW";
277
- case ExpressionClass::PARAMETER:
278
- return "PARAMETER";
279
- case ExpressionClass::COLLATE:
280
- return "COLLATE";
281
- case ExpressionClass::LAMBDA:
282
- return "LAMBDA";
283
- case ExpressionClass::POSITIONAL_REFERENCE:
284
- return "POSITIONAL_REFERENCE";
285
- case ExpressionClass::BETWEEN:
286
- return "BETWEEN";
287
- case ExpressionClass::BOUND_AGGREGATE:
288
- return "BOUND_AGGREGATE";
289
- case ExpressionClass::BOUND_CASE:
290
- return "BOUND_CASE";
291
- case ExpressionClass::BOUND_CAST:
292
- return "BOUND_CAST";
293
- case ExpressionClass::BOUND_COLUMN_REF:
294
- return "BOUND_COLUMN_REF";
295
- case ExpressionClass::BOUND_COMPARISON:
296
- return "BOUND_COMPARISON";
297
- case ExpressionClass::BOUND_CONJUNCTION:
298
- return "BOUND_CONJUNCTION";
299
- case ExpressionClass::BOUND_CONSTANT:
300
- return "BOUND_CONSTANT";
301
- case ExpressionClass::BOUND_DEFAULT:
302
- return "BOUND_DEFAULT";
303
- case ExpressionClass::BOUND_FUNCTION:
304
- return "BOUND_FUNCTION";
305
- case ExpressionClass::BOUND_OPERATOR:
306
- return "BOUND_OPERATOR";
307
- case ExpressionClass::BOUND_PARAMETER:
308
- return "BOUND_PARAMETER";
309
- case ExpressionClass::BOUND_REF:
310
- return "BOUND_REF";
311
- case ExpressionClass::BOUND_SUBQUERY:
312
- return "BOUND_SUBQUERY";
313
- case ExpressionClass::BOUND_WINDOW:
314
- return "BOUND_WINDOW";
315
- case ExpressionClass::BOUND_BETWEEN:
316
- return "BOUND_BETWEEN";
317
- case ExpressionClass::BOUND_UNNEST:
318
- return "BOUND_UNNEST";
319
- case ExpressionClass::BOUND_LAMBDA:
320
- return "BOUND_LAMBDA";
321
- case ExpressionClass::BOUND_EXPRESSION:
322
- return "BOUND_EXPRESSION";
323
- default:
324
- return "ExpressionClass::!!UNIMPLEMENTED_CASE!!";
325
- }
326
- }
327
-
328
114
  } // namespace duckdb
@@ -1,30 +1,11 @@
1
1
  #include "duckdb/common/enums/join_type.hpp"
2
+ #include "duckdb/common/serializer/enum_serializer.hpp"
2
3
 
3
4
  namespace duckdb {
4
5
 
5
6
  string JoinTypeToString(JoinType type) {
6
- switch (type) {
7
- case JoinType::LEFT:
8
- return "LEFT";
9
- case JoinType::RIGHT:
10
- return "RIGHT";
11
- case JoinType::INNER:
12
- return "INNER";
13
- case JoinType::OUTER:
14
- return "FULL";
15
- case JoinType::SEMI:
16
- return "SEMI";
17
- case JoinType::ANTI:
18
- return "ANTI";
19
- case JoinType::SINGLE:
20
- return "SINGLE";
21
- case JoinType::MARK:
22
- return "MARK";
23
- case JoinType::INVALID: // LCOV_EXCL_START
24
- break;
25
- }
26
- return "INVALID";
27
- } // LCOV_EXCL_STOP
7
+ return EnumSerializer::EnumToString(type);
8
+ }
28
9
 
29
10
  bool IsLeftOuterJoin(JoinType type) {
30
11
  return type == JoinType::LEFT || type == JoinType::OUTER;
@@ -20,6 +20,8 @@ string LogicalOperatorToString(LogicalOperatorType type) {
20
20
  return "EXPRESSION_GET";
21
21
  case LogicalOperatorType::LOGICAL_ANY_JOIN:
22
22
  return "ANY_JOIN";
23
+ case LogicalOperatorType::LOGICAL_ASOF_JOIN:
24
+ return "ASOF_JOIN";
23
25
  case LogicalOperatorType::LOGICAL_COMPARISON_JOIN:
24
26
  return "COMPARISON_JOIN";
25
27
  case LogicalOperatorType::LOGICAL_DELIM_JOIN:
@@ -59,6 +59,8 @@ string StatementTypeToString(StatementType type) {
59
59
  return "ATTACH";
60
60
  case StatementType::DETACH_STATEMENT:
61
61
  return "DETACH";
62
+ case StatementType::MULTI_STATEMENT:
63
+ return "MULTI";
62
64
  case StatementType::INVALID_STATEMENT:
63
65
  break;
64
66
  }
@@ -138,12 +138,23 @@ string Exception::ExceptionTypeToString(ExceptionType type) {
138
138
  return "Parameter Not Allowed";
139
139
  case ExceptionType::DEPENDENCY:
140
140
  return "Dependency";
141
+ case ExceptionType::HTTP:
142
+ return "HTTP";
141
143
  default:
142
144
  return "Unknown";
143
145
  }
144
146
  }
145
147
 
146
- void Exception::ThrowAsTypeWithMessage(ExceptionType type, const string &message) {
148
+ const HTTPException &Exception::AsHTTPException() const {
149
+ D_ASSERT(type == ExceptionType::HTTP);
150
+ const auto &e = static_cast<const HTTPException *>(this);
151
+ D_ASSERT(e->GetStatusCode() != 0);
152
+ D_ASSERT(e->GetHeaders().size() > 0);
153
+ return *e;
154
+ }
155
+
156
+ void Exception::ThrowAsTypeWithMessage(ExceptionType type, const string &message,
157
+ const std::shared_ptr<Exception> &original) {
147
158
  switch (type) {
148
159
  case ExceptionType::OUT_OF_RANGE:
149
160
  throw OutOfRangeException(message);
@@ -191,6 +202,9 @@ void Exception::ThrowAsTypeWithMessage(ExceptionType type, const string &message
191
202
  throw FatalException(message);
192
203
  case ExceptionType::DEPENDENCY:
193
204
  throw DependencyException(message);
205
+ case ExceptionType::HTTP: {
206
+ original->AsHTTPException().Throw();
207
+ }
194
208
  default:
195
209
  throw Exception(type, message);
196
210
  }
@@ -8,6 +8,7 @@ namespace duckdb {
8
8
  FieldWriter::FieldWriter(Serializer &serializer_p)
9
9
  : serializer(serializer_p), buffer(make_unique<BufferedSerializer>()), field_count(0), finalized(false) {
10
10
  buffer->SetVersion(serializer.GetVersion());
11
+ buffer->is_query_plan = serializer.is_query_plan;
11
12
  }
12
13
 
13
14
  FieldWriter::~FieldWriter() {
@@ -1477,7 +1477,7 @@ bool TryCastToBit::Operation(string_t input, string_t &result, Vector &result_ve
1477
1477
  }
1478
1478
 
1479
1479
  result = StringVector::EmptyString(result_vector, result_size);
1480
- Bit::ToBit(input, (data_ptr_t)result.GetDataWriteable());
1480
+ Bit::ToBit(input, result);
1481
1481
  result.Finalize();
1482
1482
  return true;
1483
1483
  }