duckdb 0.8.1-dev96.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. package/binding.gyp +8 -8
  2. package/package.json +3 -1
  3. package/src/duckdb/extension/icu/icu-datepart.cpp +1 -1
  4. package/src/duckdb/extension/icu/icu-extension.cpp +1 -1
  5. package/src/duckdb/extension/icu/icu-makedate.cpp +5 -4
  6. package/src/duckdb/extension/icu/icu-strptime.cpp +1 -1
  7. package/src/duckdb/extension/icu/third_party/icu/i18n/nfsubs.cpp +0 -2
  8. package/src/duckdb/extension/json/buffered_json_reader.cpp +23 -14
  9. package/src/duckdb/extension/json/include/buffered_json_reader.hpp +6 -6
  10. package/src/duckdb/extension/json/include/json_common.hpp +12 -2
  11. package/src/duckdb/extension/json/include/json_scan.hpp +5 -2
  12. package/src/duckdb/extension/json/json_functions/json_contains.cpp +5 -0
  13. package/src/duckdb/extension/json/json_functions/json_create.cpp +10 -10
  14. package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +2 -2
  15. package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +2 -2
  16. package/src/duckdb/extension/json/json_functions/json_structure.cpp +5 -3
  17. package/src/duckdb/extension/json/json_functions/json_transform.cpp +11 -11
  18. package/src/duckdb/extension/json/json_functions/read_json.cpp +2 -1
  19. package/src/duckdb/extension/json/json_functions.cpp +6 -3
  20. package/src/duckdb/extension/json/json_scan.cpp +43 -27
  21. package/src/duckdb/extension/parquet/column_reader.cpp +5 -1
  22. package/src/duckdb/extension/parquet/include/decode_utils.hpp +6 -0
  23. package/src/duckdb/extension/parquet/parquet-extension.cpp +26 -1
  24. package/src/duckdb/src/catalog/catalog.cpp +5 -17
  25. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +7 -1
  26. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +121 -0
  27. package/src/duckdb/src/catalog/catalog_search_path.cpp +49 -12
  28. package/src/duckdb/src/catalog/default/default_types.cpp +9 -84
  29. package/src/duckdb/src/common/adbc/adbc.cpp +118 -12
  30. package/src/duckdb/src/common/adbc/driver_manager.cpp +0 -20
  31. package/src/duckdb/src/common/arrow/arrow_converter.cpp +11 -12
  32. package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +4 -3
  33. package/src/duckdb/src/common/exception.cpp +4 -1
  34. package/src/duckdb/src/common/exception_format_value.cpp +24 -15
  35. package/src/duckdb/src/common/multi_file_reader.cpp +3 -0
  36. package/src/duckdb/src/common/random_engine.cpp +1 -1
  37. package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +5 -4
  38. package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +44 -7
  39. package/src/duckdb/src/common/types/time.cpp +2 -8
  40. package/src/duckdb/src/common/types/timestamp.cpp +37 -1
  41. package/src/duckdb/src/common/types/value.cpp +1 -0
  42. package/src/duckdb/src/common/types.cpp +4 -0
  43. package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
  44. package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
  45. package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +30 -33
  46. package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +52 -65
  47. package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
  48. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +39 -40
  49. package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
  50. package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
  51. package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
  52. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +88 -100
  53. package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
  54. package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
  55. package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +37 -38
  56. package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
  57. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +44 -80
  58. package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
  59. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +104 -122
  60. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +57 -93
  61. package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +22 -23
  62. package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +18 -19
  63. package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
  64. package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
  65. package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
  66. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
  67. package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
  68. package/src/duckdb/src/core_functions/function_list.cpp +1 -0
  69. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +1 -1
  70. package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +3 -0
  71. package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +14 -0
  72. package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +1 -1
  73. package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +23 -6
  74. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +1 -2
  75. package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +3 -0
  76. package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -3
  77. package/src/duckdb/src/execution/index/art/art.cpp +80 -7
  78. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +20 -1
  79. package/src/duckdb/src/execution/index/art/leaf.cpp +11 -11
  80. package/src/duckdb/src/execution/index/art/leaf_segment.cpp +10 -0
  81. package/src/duckdb/src/execution/index/art/node.cpp +48 -35
  82. package/src/duckdb/src/execution/index/art/node16.cpp +3 -0
  83. package/src/duckdb/src/execution/index/art/node256.cpp +1 -0
  84. package/src/duckdb/src/execution/index/art/node4.cpp +3 -0
  85. package/src/duckdb/src/execution/index/art/node48.cpp +2 -0
  86. package/src/duckdb/src/execution/index/art/prefix.cpp +2 -0
  87. package/src/duckdb/src/execution/join_hashtable.cpp +2 -0
  88. package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +26 -9
  89. package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +5 -2
  90. package/src/duckdb/src/execution/operator/helper/physical_set.cpp +5 -1
  91. package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +3 -6
  92. package/src/duckdb/src/execution/operator/projection/physical_tableinout_function.cpp +1 -0
  93. package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +8 -3
  94. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +0 -1
  95. package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +29 -3
  96. package/src/duckdb/src/execution/reservoir_sample.cpp +18 -4
  97. package/src/duckdb/src/function/aggregate/distributive/count.cpp +159 -21
  98. package/src/duckdb/src/function/aggregate/distributive/first.cpp +67 -74
  99. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +7 -7
  100. package/src/duckdb/src/function/cast/list_casts.cpp +2 -4
  101. package/src/duckdb/src/function/pragma/pragma_queries.cpp +33 -23
  102. package/src/duckdb/src/function/scalar/list/list_extract.cpp +1 -1
  103. package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +1 -1
  104. package/src/duckdb/src/function/scalar/string/regexp/regexp_util.cpp +6 -2
  105. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +2 -2
  106. package/src/duckdb/src/function/table/arrow.cpp +2 -2
  107. package/src/duckdb/src/function/table/checkpoint.cpp +3 -0
  108. package/src/duckdb/src/function/table/read_csv.cpp +15 -17
  109. package/src/duckdb/src/function/table/repeat.cpp +3 -0
  110. package/src/duckdb/src/function/table/repeat_row.cpp +8 -1
  111. package/src/duckdb/src/function/table/system/pragma_storage_info.cpp +4 -4
  112. package/src/duckdb/src/function/table/system/test_vector_types.cpp +81 -25
  113. package/src/duckdb/src/function/table/table_scan.cpp +2 -2
  114. package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
  115. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +0 -3
  116. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -0
  117. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +11 -1
  118. package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +8 -2
  119. package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +97 -0
  120. package/src/duckdb/src/include/duckdb/common/arrow/arrow_appender.hpp +1 -1
  121. package/src/duckdb/src/include/duckdb/common/arrow/arrow_converter.hpp +2 -3
  122. package/src/duckdb/src/include/duckdb/common/arrow/arrow_options.hpp +8 -1
  123. package/src/duckdb/src/include/duckdb/common/arrow/result_arrow_wrapper.hpp +0 -1
  124. package/src/duckdb/src/include/duckdb/common/bit_utils.hpp +16 -22
  125. package/src/duckdb/src/include/duckdb/common/exception.hpp +3 -0
  126. package/src/duckdb/src/include/duckdb/common/types/time.hpp +2 -0
  127. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +4 -14
  128. package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +92 -57
  129. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
  130. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
  131. package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
  132. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
  133. package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
  134. package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
  135. package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +9 -0
  136. package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +2 -6
  137. package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +16 -36
  138. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +10 -4
  139. package/src/duckdb/src/include/duckdb/execution/index/art/fixed_size_allocator.hpp +3 -0
  140. package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +1 -1
  141. package/src/duckdb/src/include/duckdb/execution/index/art/leaf_segment.hpp +2 -0
  142. package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +13 -3
  143. package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +1 -0
  144. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +9 -30
  145. package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
  146. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +4 -2
  147. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +1 -1
  148. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -1
  149. package/src/duckdb/src/include/duckdb/function/table_function.hpp +3 -2
  150. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +4 -1
  151. package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +3 -1
  152. package/src/duckdb/src/include/duckdb/main/config.hpp +5 -0
  153. package/src/duckdb/src/include/duckdb/main/database_manager.hpp +1 -0
  154. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +142 -136
  155. package/src/duckdb/src/include/duckdb/main/query_result.hpp +6 -0
  156. package/src/duckdb/src/include/duckdb/main/settings.hpp +19 -0
  157. package/src/duckdb/src/include/duckdb/optimizer/unnest_rewriter.hpp +4 -0
  158. package/src/duckdb/src/include/duckdb/parallel/meta_pipeline.hpp +12 -3
  159. package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
  160. package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +1 -1
  161. package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +2 -2
  162. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +0 -2
  163. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +1 -1
  164. package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +3 -0
  165. package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
  166. package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +5 -0
  167. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +6 -2
  168. package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +4 -0
  169. package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +5 -1
  170. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +5 -1
  171. package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +6 -2
  172. package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +4 -0
  173. package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/byte_reader.hpp +4 -0
  174. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +1 -1
  175. package/src/duckdb/src/include/duckdb/storage/in_memory_block_manager.hpp +13 -13
  176. package/src/duckdb/src/include/duckdb/storage/index.hpp +4 -2
  177. package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +0 -6
  178. package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +1 -1
  179. package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +2 -1
  180. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +2 -2
  181. package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +2 -1
  182. package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +2 -1
  183. package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +2 -1
  184. package/src/duckdb/src/include/duckdb/storage/table_storage_info.hpp +0 -2
  185. package/src/duckdb/src/main/attached_database.cpp +8 -0
  186. package/src/duckdb/src/main/capi/arrow-c.cpp +4 -4
  187. package/src/duckdb/src/main/capi/config-c.cpp +2 -5
  188. package/src/duckdb/src/main/client_context.cpp +4 -3
  189. package/src/duckdb/src/main/config.cpp +2 -0
  190. package/src/duckdb/src/main/database.cpp +1 -0
  191. package/src/duckdb/src/main/database_manager.cpp +21 -0
  192. package/src/duckdb/src/main/query_result.cpp +6 -2
  193. package/src/duckdb/src/main/settings/settings.cpp +41 -6
  194. package/src/duckdb/src/optimizer/unnest_rewriter.cpp +27 -16
  195. package/src/duckdb/src/parallel/executor.cpp +38 -14
  196. package/src/duckdb/src/parallel/meta_pipeline.cpp +17 -3
  197. package/src/duckdb/src/parser/column_definition.cpp +5 -8
  198. package/src/duckdb/src/parser/parsed_data/create_info.cpp +0 -3
  199. package/src/duckdb/src/parser/parser.cpp +95 -35
  200. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +1 -0
  201. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +3 -0
  202. package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +0 -2
  203. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +0 -3
  204. package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +3 -0
  205. package/src/duckdb/src/parser/transformer.cpp +0 -2
  206. package/src/duckdb/src/planner/bind_context.cpp +3 -4
  207. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +0 -2
  208. package/src/duckdb/src/planner/binder/expression/bind_positional_reference_expression.cpp +8 -3
  209. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +31 -15
  210. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +0 -27
  211. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +18 -1
  212. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +0 -25
  213. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -114
  214. package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +6 -1
  215. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +5 -0
  216. package/src/duckdb/src/planner/bound_result_modifier.cpp +14 -0
  217. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +6 -5
  218. package/src/duckdb/src/planner/expression/bound_default_expression.cpp +7 -1
  219. package/src/duckdb/src/planner/expression.cpp +3 -0
  220. package/src/duckdb/src/planner/expression_binder.cpp +3 -2
  221. package/src/duckdb/src/planner/operator/logical_distinct.cpp +5 -4
  222. package/src/duckdb/src/planner/operator/logical_pivot.cpp +14 -2
  223. package/src/duckdb/src/planner/planner.cpp +5 -15
  224. package/src/duckdb/src/storage/data_table.cpp +10 -8
  225. package/src/duckdb/src/storage/index.cpp +13 -0
  226. package/src/duckdb/src/storage/storage_manager.cpp +6 -0
  227. package/src/duckdb/src/storage/table/column_data.cpp +7 -3
  228. package/src/duckdb/src/storage/table/list_column_data.cpp +5 -4
  229. package/src/duckdb/src/storage/table/row_group.cpp +4 -3
  230. package/src/duckdb/src/storage/table/row_group_collection.cpp +6 -3
  231. package/src/duckdb/src/storage/table/standard_column_data.cpp +4 -3
  232. package/src/duckdb/src/storage/table/struct_column_data.cpp +4 -3
  233. package/src/duckdb/src/storage/wal_replay.cpp +4 -5
  234. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +0 -1
  235. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +0 -14
  236. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +12828 -12956
  237. package/src/duckdb/third_party/zstd/compress/zstd_compress.cpp +3 -0
  238. package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_cwksp.h +4 -0
  239. package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +5 -5
  240. package/src/duckdb/ub_src_parser_transform_statement.cpp +0 -2
  241. package/test/extension.test.ts +11 -0
  242. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_database_info.hpp +0 -46
  243. package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +0 -27
@@ -8,40 +8,13 @@
8
8
 
9
9
  #pragma once
10
10
 
11
- #include "duckdb/function/function.hpp"
12
- #include "duckdb/storage/statistics/base_statistics.hpp"
13
- #include "duckdb/storage/statistics/node_statistics.hpp"
11
+ #include "duckdb/function/aggregate_state.hpp"
14
12
  #include "duckdb/planner/bound_result_modifier.hpp"
15
13
  #include "duckdb/planner/expression.hpp"
16
14
  #include "duckdb/common/vector_operations/aggregate_executor.hpp"
17
15
 
18
16
  namespace duckdb {
19
17
 
20
- enum class AggregateType : uint8_t { NON_DISTINCT = 1, DISTINCT = 2 };
21
- //! Whether or not the input order influences the result of the aggregate
22
- enum class AggregateOrderDependent : uint8_t { ORDER_DEPENDENT = 1, NOT_ORDER_DEPENDENT = 2 };
23
-
24
- class BoundAggregateExpression;
25
-
26
- struct AggregateInputData {
27
- AggregateInputData(FunctionData *bind_data_p, Allocator &allocator_p)
28
- : bind_data(bind_data_p), allocator(allocator_p) {
29
- }
30
- FunctionData *bind_data;
31
- Allocator &allocator;
32
- };
33
-
34
- struct AggregateStatisticsInput {
35
- AggregateStatisticsInput(FunctionData *bind_data_p, vector<BaseStatistics> &child_stats_p,
36
- NodeStatistics *node_stats_p)
37
- : bind_data(bind_data_p), child_stats(child_stats_p), node_stats(node_stats_p) {
38
- }
39
-
40
- FunctionData *bind_data;
41
- vector<BaseStatistics> &child_stats;
42
- NodeStatistics *node_stats;
43
- };
44
-
45
18
  //! The type used for sizing hashed aggregate function states
46
19
  typedef idx_t (*aggregate_size_t)();
47
20
  //! The type used for initializing hashed aggregate function states
@@ -76,7 +49,7 @@ typedef void (*aggregate_window_t)(Vector inputs[], const ValidityMask &filter_m
76
49
 
77
50
  typedef void (*aggregate_serialize_t)(FieldWriter &writer, const FunctionData *bind_data,
78
51
  const AggregateFunction &function);
79
- typedef unique_ptr<FunctionData> (*aggregate_deserialize_t)(ClientContext &context, FieldReader &reader,
52
+ typedef unique_ptr<FunctionData> (*aggregate_deserialize_t)(PlanDeserializationState &context, FieldReader &reader,
80
53
  AggregateFunction &function);
81
54
 
82
55
  class AggregateFunction : public BaseScalarFunction {
@@ -215,7 +188,7 @@ public:
215
188
 
216
189
  template <class STATE, class OP>
217
190
  static void StateInitialize(data_ptr_t state) {
218
- OP::Initialize((STATE *)state);
191
+ OP::Initialize(*reinterpret_cast<STATE *>(state));
219
192
  }
220
193
 
221
194
  template <class STATE, class OP>
@@ -281,6 +254,12 @@ public:
281
254
  AggregateExecutor::Finalize<STATE, RESULT_TYPE, OP>(states, aggr_input_data, result, count, offset);
282
255
  }
283
256
 
257
+ template <class STATE, class OP>
258
+ static void StateVoidFinalize(Vector &states, AggregateInputData &aggr_input_data, Vector &result, idx_t count,
259
+ idx_t offset) {
260
+ AggregateExecutor::VoidFinalize<STATE, OP>(states, aggr_input_data, result, count, offset);
261
+ }
262
+
284
263
  template <class STATE, class OP>
285
264
  static void StateDestroy(Vector &states, AggregateInputData &aggr_input_data, idx_t count) {
286
265
  AggregateExecutor::Destroy<STATE, OP>(states, aggr_input_data, count);
@@ -0,0 +1,95 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // DuckDB
3
+ //
4
+ // duckdb/function/aggregate_state.hpp
5
+ //
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #pragma once
10
+
11
+ #include "duckdb/function/function.hpp"
12
+ #include "duckdb/storage/statistics/base_statistics.hpp"
13
+ #include "duckdb/storage/statistics/node_statistics.hpp"
14
+
15
+ namespace duckdb {
16
+
17
+ enum class AggregateType : uint8_t { NON_DISTINCT = 1, DISTINCT = 2 };
18
+ //! Whether or not the input order influences the result of the aggregate
19
+ enum class AggregateOrderDependent : uint8_t { ORDER_DEPENDENT = 1, NOT_ORDER_DEPENDENT = 2 };
20
+
21
+ class BoundAggregateExpression;
22
+
23
+ struct AggregateInputData {
24
+ AggregateInputData(optional_ptr<FunctionData> bind_data_p, Allocator &allocator_p)
25
+ : bind_data(bind_data_p), allocator(allocator_p) {
26
+ }
27
+ optional_ptr<FunctionData> bind_data;
28
+ Allocator &allocator;
29
+ };
30
+
31
+ struct AggregateUnaryInput {
32
+ AggregateUnaryInput(AggregateInputData &input_p, ValidityMask &input_mask_p)
33
+ : input(input_p), input_mask(input_mask_p), input_idx(0) {
34
+ }
35
+
36
+ AggregateInputData &input;
37
+ ValidityMask &input_mask;
38
+ idx_t input_idx;
39
+
40
+ inline bool RowIsValid() {
41
+ return input_mask.RowIsValid(input_idx);
42
+ }
43
+ };
44
+
45
+ struct AggregateBinaryInput {
46
+ AggregateBinaryInput(AggregateInputData &input_p, ValidityMask &left_mask_p, ValidityMask &right_mask_p)
47
+ : input(input_p), left_mask(left_mask_p), right_mask(right_mask_p) {
48
+ }
49
+
50
+ AggregateInputData &input;
51
+ ValidityMask &left_mask;
52
+ ValidityMask &right_mask;
53
+ idx_t lidx;
54
+ idx_t ridx;
55
+ };
56
+
57
+ struct AggregateFinalizeData {
58
+ AggregateFinalizeData(Vector &result_p, AggregateInputData &input_p)
59
+ : result(result_p), input(input_p), result_idx(0) {
60
+ }
61
+
62
+ Vector &result;
63
+ AggregateInputData &input;
64
+ idx_t result_idx;
65
+
66
+ inline void ReturnNull() {
67
+ switch (result.GetVectorType()) {
68
+ case VectorType::FLAT_VECTOR:
69
+ FlatVector::SetNull(result, result_idx, true);
70
+ break;
71
+ case VectorType::CONSTANT_VECTOR:
72
+ ConstantVector::SetNull(result, true);
73
+ break;
74
+ default:
75
+ throw InternalException("Invalid result vector type for aggregate");
76
+ }
77
+ }
78
+
79
+ inline string_t ReturnString(string_t value) {
80
+ return StringVector::AddStringOrBlob(result, value);
81
+ }
82
+ };
83
+
84
+ struct AggregateStatisticsInput {
85
+ AggregateStatisticsInput(optional_ptr<FunctionData> bind_data_p, vector<BaseStatistics> &child_stats_p,
86
+ optional_ptr<NodeStatistics> node_stats_p)
87
+ : bind_data(bind_data_p), child_stats(child_stats_p), node_stats(node_stats_p) {
88
+ }
89
+
90
+ optional_ptr<FunctionData> bind_data;
91
+ vector<BaseStatistics> &child_stats;
92
+ optional_ptr<NodeStatistics> node_stats;
93
+ };
94
+
95
+ } // namespace duckdb
@@ -25,8 +25,10 @@ public:
25
25
  bool serialize = function.serialize;
26
26
  writer.WriteField(serialize);
27
27
  if (serialize) {
28
- D_ASSERT(function.deserialize);
29
28
  function.serialize(writer, bind_info, function);
29
+ // First check if serialize throws a NotImplementedException, in which case it doesn't require a deserialize
30
+ // function
31
+ D_ASSERT(function.deserialize);
30
32
  }
31
33
  }
32
34
 
@@ -64,7 +66,7 @@ public:
64
66
  throw SerializationException("Function requires deserialization but no deserialization function for %s",
65
67
  function.name);
66
68
  }
67
- bind_info = function.deserialize(context, reader, function);
69
+ bind_info = function.deserialize(state, reader, function);
68
70
  } else {
69
71
  D_ASSERT(!function.serialize);
70
72
  D_ASSERT(!function.deserialize);
@@ -68,7 +68,7 @@ struct VariableReturnBindData : public FunctionData {
68
68
  writer.WriteSerializable(info.stype);
69
69
  }
70
70
 
71
- static unique_ptr<FunctionData> Deserialize(ClientContext &context, FieldReader &reader,
71
+ static unique_ptr<FunctionData> Deserialize(PlanDeserializationState &context, FieldReader &reader,
72
72
  ScalarFunction &bound_function) {
73
73
  auto stype = reader.ReadRequiredSerializable<LogicalType, LogicalType>();
74
74
  return make_uniq<VariableReturnBindData>(std::move(stype));
@@ -14,6 +14,7 @@
14
14
  #include "duckdb/common/vector_operations/vector_operations.hpp"
15
15
  #include "duckdb/execution/expression_executor_state.hpp"
16
16
  #include "duckdb/function/function.hpp"
17
+ #include "duckdb/planner/plan_serialization.hpp"
17
18
  #include "duckdb/storage/statistics/base_statistics.hpp"
18
19
  #include "duckdb/common/optional_ptr.hpp"
19
20
 
@@ -65,7 +66,7 @@ typedef void (*dependency_function_t)(BoundFunctionExpression &expr, DependencyL
65
66
 
66
67
  typedef void (*function_serialize_t)(FieldWriter &writer, const FunctionData *bind_data,
67
68
  const ScalarFunction &function);
68
- typedef unique_ptr<FunctionData> (*function_deserialize_t)(ClientContext &context, FieldReader &reader,
69
+ typedef unique_ptr<FunctionData> (*function_deserialize_t)(PlanDeserializationState &state, FieldReader &reader,
69
70
  ScalarFunction &function);
70
71
 
71
72
  class ScalarFunction : public BaseScalarFunction {
@@ -9,12 +9,12 @@
9
9
  #pragma once
10
10
 
11
11
  #include "duckdb/common/enums/operator_result_type.hpp"
12
+ #include "duckdb/common/optional_ptr.hpp"
12
13
  #include "duckdb/execution/execution_context.hpp"
13
14
  #include "duckdb/function/function.hpp"
14
15
  #include "duckdb/planner/bind_context.hpp"
15
16
  #include "duckdb/planner/logical_operator.hpp"
16
17
  #include "duckdb/storage/statistics/node_statistics.hpp"
17
- #include "duckdb/common/optional_ptr.hpp"
18
18
 
19
19
  #include <functional>
20
20
 
@@ -204,7 +204,7 @@ typedef string (*table_function_to_string_t)(const FunctionData *bind_data);
204
204
 
205
205
  typedef void (*table_function_serialize_t)(FieldWriter &writer, const FunctionData *bind_data,
206
206
  const TableFunction &function);
207
- typedef unique_ptr<FunctionData> (*table_function_deserialize_t)(ClientContext &context, FieldReader &reader,
207
+ typedef unique_ptr<FunctionData> (*table_function_deserialize_t)(PlanDeserializationState &context, FieldReader &reader,
208
208
  TableFunction &function);
209
209
 
210
210
  class TableFunction : public SimpleNamedParameterFunction {
@@ -265,6 +265,7 @@ public:
265
265
 
266
266
  table_function_serialize_t serialize;
267
267
  table_function_deserialize_t deserialize;
268
+ bool verify_serialization = true;
268
269
 
269
270
  //! Whether or not the table function supports projection pushdown. If not supported a projection will be added
270
271
  //! that filters out unused columns.
@@ -40,7 +40,7 @@ public:
40
40
  //! Create an attached database instance with the specified storage extension
41
41
  AttachedDatabase(DatabaseInstance &db, Catalog &catalog, StorageExtension &ext, string name, AttachInfo &info,
42
42
  AccessMode access_mode);
43
- ~AttachedDatabase();
43
+ ~AttachedDatabase() override;
44
44
 
45
45
  void Initialize();
46
46
 
@@ -57,6 +57,8 @@ public:
57
57
  bool IsSystem() const;
58
58
  bool IsTemporary() const;
59
59
  bool IsReadOnly() const;
60
+ bool IsInitialDatabase() const;
61
+ void SetInitialDatabase();
60
62
 
61
63
  static string ExtractDatabaseName(const string &dbpath);
62
64
 
@@ -67,6 +69,7 @@ private:
67
69
  unique_ptr<TransactionManager> transaction_manager;
68
70
  AttachedDatabaseType type;
69
71
  optional_ptr<Catalog> parent_catalog;
72
+ bool is_initial_database = false;
70
73
  };
71
74
 
72
75
  } // namespace duckdb
@@ -13,6 +13,8 @@
13
13
  #include "duckdb/common/types.hpp"
14
14
  #include "duckdb/common/types/data_chunk.hpp"
15
15
  #include "duckdb/main/appender.hpp"
16
+ #include "duckdb/common/arrow/arrow_options.hpp"
17
+
16
18
  #include <cstring>
17
19
  #include <cassert>
18
20
 
@@ -46,7 +48,7 @@ struct PendingStatementWrapper {
46
48
  struct ArrowResultWrapper {
47
49
  unique_ptr<MaterializedQueryResult> result;
48
50
  unique_ptr<DataChunk> current_chunk;
49
- string timezone_config;
51
+ ArrowOptions options;
50
52
  };
51
53
 
52
54
  struct AppenderWrapper {
@@ -28,6 +28,7 @@
28
28
  #include "duckdb/optimizer/optimizer_extension.hpp"
29
29
  #include "duckdb/parser/parser_extension.hpp"
30
30
  #include "duckdb/planner/operator_extension.hpp"
31
+ #include "duckdb/common/arrow/arrow_options.hpp"
31
32
 
32
33
  namespace duckdb {
33
34
  class BufferPool;
@@ -135,6 +136,8 @@ struct DBConfigOptions {
135
136
  WindowAggregationMode window_mode = WindowAggregationMode::WINDOW;
136
137
  //! Whether or not preserving insertion order should be preserved
137
138
  bool preserve_insertion_order = true;
139
+ //! Whether Arrow Arrays use Large or Regular buffers
140
+ ArrowOffsetSize arrow_offset_size = ArrowOffsetSize::REGULAR;
138
141
  //! Database configuration variables as controlled by SET
139
142
  case_insensitive_map_t<Value> set_variables;
140
143
  //! Database configuration variable default values;
@@ -151,6 +154,8 @@ struct DBConfigOptions {
151
154
  DebugInitialize debug_initialize = DebugInitialize::NO_INITIALIZE;
152
155
  //! The set of unrecognized (other) options
153
156
  unordered_map<string, Value> unrecognized_options;
157
+ //! Whether or not the configuration settings can be altered
158
+ bool lock_configuration = false;
154
159
  //! Whether to print bindings when printing the plan (debug mode only)
155
160
  static bool debug_print_bindings;
156
161
 
@@ -44,6 +44,7 @@ public:
44
44
  //! Returns a reference to the system catalog
45
45
  Catalog &GetSystemCatalog();
46
46
  static const string &GetDefaultDatabase(ClientContext &context);
47
+ void SetDefaultDatabase(ClientContext &context, const string &new_value);
47
48
 
48
49
  optional_ptr<AttachedDatabase> GetDatabaseFromPath(ClientContext &context, const string &path);
49
50
  vector<reference<AttachedDatabase>> GetDatabases(ClientContext &context);
@@ -17,142 +17,148 @@ struct ExtensionEntry {
17
17
  char extension[48];
18
18
  };
19
19
 
20
- static constexpr ExtensionEntry EXTENSION_FUNCTIONS[] = {
21
- {"->>", "json"},
22
- {"array_to_json", "json"},
23
- {"create_fts_index", "fts"},
24
- {"current_localtime", "icu"},
25
- {"current_localtimestamp", "icu"},
26
- {"dbgen", "tpch"},
27
- {"drop_fts_index", "fts"},
28
- {"dsdgen", "tpcds"},
29
- {"excel_text", "excel"},
30
- {"from_json", "json"},
31
- {"from_json_strict", "json"},
32
- {"from_substrait", "substrait"},
33
- {"from_substrait_json", "substrait"},
34
- {"get_substrait", "substrait"},
35
- {"get_substrait_json", "substrait"},
36
- {"icu_calendar_names", "icu"},
37
- {"icu_sort_key", "icu"},
38
- {"json", "json"},
39
- {"json_array", "json"},
40
- {"json_array_length", "json"},
41
- {"json_contains", "json"},
42
- {"json_extract", "json"},
43
- {"json_extract_path", "json"},
44
- {"json_extract_path_text", "json"},
45
- {"json_extract_string", "json"},
46
- {"json_group_array", "json"},
47
- {"json_group_object", "json"},
48
- {"json_group_structure", "json"},
49
- {"json_keys", "json"},
50
- {"json_merge_patch", "json"},
51
- {"json_object", "json"},
52
- {"json_quote", "json"},
53
- {"json_structure", "json"},
54
- {"json_transform", "json"},
55
- {"json_transform_strict", "json"},
56
- {"json_type", "json"},
57
- {"json_valid", "json"},
58
- {"json_serialize_sql", "json"},
59
- {"json_deserialize_sql", "json"},
60
- {"json_serialize_sql", "json"},
61
- {"json_execute_serialized_sql", "json"},
62
- {"make_timestamptz", "icu"},
63
- {"parquet_metadata", "parquet"},
64
- {"parquet_scan", "parquet"},
65
- {"parquet_schema", "parquet"},
66
- {"pg_timezone_names", "icu"},
67
- {"postgres_attach", "postgres_scanner"},
68
- {"postgres_scan", "postgres_scanner"},
69
- {"postgres_scan_pushdown", "postgres_scanner"},
70
- {"read_json", "json"},
71
- {"read_json_auto", "json"},
72
- {"read_json_objects", "json"},
73
- {"read_json_objects_auto", "json"},
74
- {"read_ndjson", "json"},
75
- {"read_ndjson_auto", "json"},
76
- {"read_ndjson_objects", "json"},
77
- {"read_parquet", "parquet"},
78
- {"row_to_json", "json"},
79
- {"scan_arrow_ipc", "arrow"},
80
- {"sqlite_attach", "sqlite_scanner"},
81
- {"sqlite_scan", "sqlite_scanner"},
82
- {"stem", "fts"},
83
- {"text", "excel"},
84
- {"to_arrow_ipc", "arrow"},
85
- {"to_json", "json"},
86
- {"tpcds", "tpcds"},
87
- {"tpcds_answers", "tpcds"},
88
- {"tpcds_queries", "tpcds"},
89
- {"tpch", "tpch"},
90
- {"tpch_answers", "tpch"},
91
- {"tpch_queries", "tpch"},
92
- {"visualize_diff_profiling_output", "visualizer"},
93
- {"visualize_json_profiling_output", "visualizer"},
94
- {"visualize_last_profiling_output", "visualizer"},
95
- {"st_distance_spheroid", "spatial"},
96
- {"st_boundary", "spatial"},
97
- {"st_makeline", "spatial"},
98
- {"st_buffer", "spatial"},
99
- {"st_x", "spatial"},
100
- {"st_isring", "spatial"},
101
- {"st_centroid", "spatial"},
102
- {"st_read", "spatial"},
103
- {"st_geomfromwkb", "spatial"},
104
- {"st_list_proj_crs", "spatial"},
105
- {"st_isvalid", "spatial"},
106
- {"st_polygon2dfromwkb", "spatial"},
107
- {"st_disjoint", "spatial"},
108
- {"st_length", "spatial"},
109
- {"st_difference", "spatial"},
110
- {"st_area", "spatial"},
111
- {"st_union", "spatial"},
112
- {"st_isclosed", "spatial"},
113
- {"st_asgeojson", "spatial"},
114
- {"st_intersection", "spatial"},
115
- {"st_transform", "spatial"},
116
- {"st_dwithin", "spatial"},
117
- {"st_perimeter", "spatial"},
118
- {"st_issimple", "spatial"},
119
- {"st_geometrytype", "spatial"},
120
- {"st_simplifypreservetopology", "spatial"},
121
- {"st_distance", "spatial"},
122
- {"st_astext", "spatial"},
123
- {"st_overlaps", "spatial"},
124
- {"st_convexhull", "spatial"},
125
- {"st_normalize", "spatial"},
126
- {"st_drivers", "spatial"},
127
- {"st_point2dfromwkb", "spatial"},
128
- {"st_point2d", "spatial"},
129
- {"st_y", "spatial"},
130
- {"st_dwithin_spheroid", "spatial"},
131
- {"st_isempty", "spatial"},
132
- {"st_simplify", "spatial"},
133
- {"st_area_spheroid", "spatial"},
134
- {"st_within", "spatial"},
135
- {"st_length_spheroid", "spatial"},
136
- {"st_point3d", "spatial"},
137
- {"st_containsproperly", "spatial"},
138
- {"st_contains", "spatial"},
139
- {"st_collect", "spatial"},
140
- {"st_touches", "spatial"},
141
- {"st_linestring2dfromwkb", "spatial"},
142
- {"st_flipcoordinates", "spatial"},
143
- {"st_ashexwkb", "spatial"},
144
- {"st_geomfromtext", "spatial"},
145
- {"st_point4d", "spatial"},
146
- {"st_point", "spatial"},
147
- {"st_coveredby", "spatial"},
148
- {"st_perimeter_spheroid", "spatial"},
149
- {"st_intersects", "spatial"},
150
- {"st_crosses", "spatial"},
151
- {"st_covers", "spatial"},
152
- {"st_envelope", "spatial"},
153
- {"st_aswkb", "spatial"},
154
- {"st_equals", "spatial"},
155
- };
20
+ static constexpr ExtensionEntry EXTENSION_FUNCTIONS[] = {{"->>", "json"},
21
+ {"array_to_json", "json"},
22
+ {"create_fts_index", "fts"},
23
+ {"current_localtime", "icu"},
24
+ {"current_localtimestamp", "icu"},
25
+ {"dbgen", "tpch"},
26
+ {"drop_fts_index", "fts"},
27
+ {"dsdgen", "tpcds"},
28
+ {"excel_text", "excel"},
29
+ {"from_json", "json"},
30
+ {"from_json_strict", "json"},
31
+ {"from_substrait", "substrait"},
32
+ {"from_substrait_json", "substrait"},
33
+ {"get_substrait", "substrait"},
34
+ {"get_substrait_json", "substrait"},
35
+ {"icu_calendar_names", "icu"},
36
+ {"icu_sort_key", "icu"},
37
+ {"json", "json"},
38
+ {"json_array", "json"},
39
+ {"json_array_length", "json"},
40
+ {"json_contains", "json"},
41
+ {"json_extract", "json"},
42
+ {"json_extract_path", "json"},
43
+ {"json_extract_path_text", "json"},
44
+ {"json_extract_string", "json"},
45
+ {"json_group_array", "json"},
46
+ {"json_group_object", "json"},
47
+ {"json_group_structure", "json"},
48
+ {"json_keys", "json"},
49
+ {"json_merge_patch", "json"},
50
+ {"json_object", "json"},
51
+ {"json_quote", "json"},
52
+ {"json_structure", "json"},
53
+ {"json_transform", "json"},
54
+ {"json_transform_strict", "json"},
55
+ {"json_type", "json"},
56
+ {"json_valid", "json"},
57
+ {"json_serialize_sql", "json"},
58
+ {"json_deserialize_sql", "json"},
59
+ {"json_serialize_sql", "json"},
60
+ {"json_execute_serialized_sql", "json"},
61
+ {"make_timestamptz", "icu"},
62
+ {"parquet_metadata", "parquet"},
63
+ {"parquet_scan", "parquet"},
64
+ {"parquet_schema", "parquet"},
65
+ {"pg_timezone_names", "icu"},
66
+ {"postgres_attach", "postgres_scanner"},
67
+ {"postgres_scan", "postgres_scanner"},
68
+ {"postgres_scan_pushdown", "postgres_scanner"},
69
+ {"read_json", "json"},
70
+ {"read_json_auto", "json"},
71
+ {"read_json_objects", "json"},
72
+ {"read_json_objects_auto", "json"},
73
+ {"read_ndjson", "json"},
74
+ {"read_ndjson_auto", "json"},
75
+ {"read_ndjson_objects", "json"},
76
+ {"read_parquet", "parquet"},
77
+ {"row_to_json", "json"},
78
+ {"scan_arrow_ipc", "arrow"},
79
+ {"sqlite_attach", "sqlite_scanner"},
80
+ {"sqlite_scan", "sqlite_scanner"},
81
+ {"stem", "fts"},
82
+ {"text", "excel"},
83
+ {"to_arrow_ipc", "arrow"},
84
+ {"to_json", "json"},
85
+ {"tpcds", "tpcds"},
86
+ {"tpcds_answers", "tpcds"},
87
+ {"tpcds_queries", "tpcds"},
88
+ {"tpch", "tpch"},
89
+ {"tpch_answers", "tpch"},
90
+ {"tpch_queries", "tpch"},
91
+ {"visualize_diff_profiling_output", "visualizer"},
92
+ {"visualize_json_profiling_output", "visualizer"},
93
+ {"visualize_last_profiling_output", "visualizer"},
94
+ {"st_distance_spheroid", "spatial"},
95
+ {"st_boundary", "spatial"},
96
+ {"st_makeline", "spatial"},
97
+ {"st_buffer", "spatial"},
98
+ {"st_x", "spatial"},
99
+ {"st_isring", "spatial"},
100
+ {"st_centroid", "spatial"},
101
+ {"st_read", "spatial"},
102
+ {"st_geomfromwkb", "spatial"},
103
+ {"st_list_proj_crs", "spatial"},
104
+ {"st_isvalid", "spatial"},
105
+ {"st_polygon2dfromwkb", "spatial"},
106
+ {"st_disjoint", "spatial"},
107
+ {"st_length", "spatial"},
108
+ {"st_difference", "spatial"},
109
+ {"st_area", "spatial"},
110
+ {"st_union", "spatial"},
111
+ {"st_isclosed", "spatial"},
112
+ {"st_asgeojson", "spatial"},
113
+ {"st_intersection", "spatial"},
114
+ {"st_transform", "spatial"},
115
+ {"st_dwithin", "spatial"},
116
+ {"st_perimeter", "spatial"},
117
+ {"st_issimple", "spatial"},
118
+ {"st_geometrytype", "spatial"},
119
+ {"st_simplifypreservetopology", "spatial"},
120
+ {"st_distance", "spatial"},
121
+ {"st_astext", "spatial"},
122
+ {"st_overlaps", "spatial"},
123
+ {"st_convexhull", "spatial"},
124
+ {"st_normalize", "spatial"},
125
+ {"st_drivers", "spatial"},
126
+ {"st_point2dfromwkb", "spatial"},
127
+ {"st_point2d", "spatial"},
128
+ {"st_y", "spatial"},
129
+ {"st_dwithin_spheroid", "spatial"},
130
+ {"st_isempty", "spatial"},
131
+ {"st_simplify", "spatial"},
132
+ {"st_area_spheroid", "spatial"},
133
+ {"st_within", "spatial"},
134
+ {"st_length_spheroid", "spatial"},
135
+ {"st_point3d", "spatial"},
136
+ {"st_containsproperly", "spatial"},
137
+ {"st_contains", "spatial"},
138
+ {"st_collect", "spatial"},
139
+ {"st_touches", "spatial"},
140
+ {"st_linestring2dfromwkb", "spatial"},
141
+ {"st_flipcoordinates", "spatial"},
142
+ {"st_ashexwkb", "spatial"},
143
+ {"st_geomfromtext", "spatial"},
144
+ {"st_point4d", "spatial"},
145
+ {"st_point", "spatial"},
146
+ {"st_coveredby", "spatial"},
147
+ {"st_perimeter_spheroid", "spatial"},
148
+ {"st_intersects", "spatial"},
149
+ {"st_crosses", "spatial"},
150
+ {"st_covers", "spatial"},
151
+ {"st_envelope", "spatial"},
152
+ {"st_aswkb", "spatial"},
153
+ {"st_equals", "spatial"},
154
+ {"st_collectionextract", "spatial"},
155
+ {"st_npoints", "spatial"},
156
+ {"st_pointonsurface", "spatial"},
157
+ {"st_dimension", "spatial"},
158
+ {"st_removerepeatedpoints", "spatial"},
159
+ {"st_geomfromgeojson", "spatial"},
160
+ {"st_readosm", "spatial"},
161
+ {"st_numpoints", "spatial"}};
156
162
 
157
163
  static constexpr ExtensionEntry EXTENSION_SETTINGS[] = {
158
164
  {"binary_as_string", "parquet"},