duckdb 1.1.2-dev4.0 → 1.1.3

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 (288) hide show
  1. package/package.json +1 -1
  2. package/src/duckdb/extension/icu/third_party/icu/common/putil.cpp +0 -5
  3. package/src/duckdb/extension/icu/third_party/icu/common/rbbiscan.cpp +1 -1
  4. package/src/duckdb/extension/icu/third_party/icu/common/rbbitblb.cpp +1 -1
  5. package/src/duckdb/extension/icu/third_party/icu/common/ucurr.cpp +1 -1
  6. package/src/duckdb/extension/icu/third_party/icu/common/uresbund.cpp +1 -1
  7. package/src/duckdb/extension/icu/third_party/icu/common/uresimp.h +31 -31
  8. package/src/duckdb/extension/icu/third_party/icu/common/ustring.cpp +1 -1
  9. package/src/duckdb/extension/icu/third_party/icu/common/uvector.cpp +1 -1
  10. package/src/duckdb/extension/icu/third_party/icu/i18n/coleitr.cpp +12 -12
  11. package/src/duckdb/extension/icu/third_party/icu/i18n/format.cpp +1 -1
  12. package/src/duckdb/extension/icu/third_party/icu/i18n/listformatter.cpp +4 -4
  13. package/src/duckdb/extension/icu/third_party/icu/i18n/number_decimalquantity.h +1 -1
  14. package/src/duckdb/extension/icu/third_party/icu/i18n/tzgnames.cpp +1 -1
  15. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/coleitr.h +28 -28
  16. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/format.h +7 -7
  17. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/ucol.h +1 -1
  18. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/ucoleitr.h +41 -41
  19. package/src/duckdb/extension/icu/third_party/icu/i18n/unicode/umsg.h +41 -41
  20. package/src/duckdb/extension/icu/third_party/icu/i18n/usrchimp.h +3 -3
  21. package/src/duckdb/extension/json/include/json_common.hpp +1 -1
  22. package/src/duckdb/extension/json/json_functions/json_structure.cpp +13 -7
  23. package/src/duckdb/extension/parquet/column_writer.cpp +2 -1
  24. package/src/duckdb/extension/parquet/geo_parquet.cpp +24 -9
  25. package/src/duckdb/extension/parquet/include/geo_parquet.hpp +3 -1
  26. package/src/duckdb/extension/parquet/include/parquet_reader.hpp +1 -0
  27. package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +1 -1
  28. package/src/duckdb/extension/parquet/include/templated_column_reader.hpp +0 -4
  29. package/src/duckdb/extension/parquet/parquet_extension.cpp +20 -6
  30. package/src/duckdb/extension/parquet/parquet_reader.cpp +1 -2
  31. package/src/duckdb/extension/parquet/parquet_writer.cpp +1 -1
  32. package/src/duckdb/extension/parquet/serialize_parquet.cpp +0 -2
  33. package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +8 -1
  34. package/src/duckdb/src/catalog/default/default_functions.cpp +5 -5
  35. package/src/duckdb/src/common/allocator.cpp +3 -2
  36. package/src/duckdb/src/common/arrow/arrow_appender.cpp +1 -0
  37. package/src/duckdb/src/common/arrow/arrow_converter.cpp +11 -0
  38. package/src/duckdb/src/common/arrow/schema_metadata.cpp +6 -4
  39. package/src/duckdb/src/common/enum_util.cpp +33 -0
  40. package/src/duckdb/src/common/exception.cpp +3 -0
  41. package/src/duckdb/src/common/extra_type_info.cpp +1 -44
  42. package/src/duckdb/src/common/field_writer.cpp +97 -0
  43. package/src/duckdb/src/common/render_tree.cpp +7 -5
  44. package/src/duckdb/src/common/row_operations/row_match.cpp +359 -0
  45. package/src/duckdb/src/common/serializer/buffered_deserializer.cpp +27 -0
  46. package/src/duckdb/src/common/serializer/buffered_serializer.cpp +36 -0
  47. package/src/duckdb/src/common/serializer/format_serializer.cpp +15 -0
  48. package/src/duckdb/src/common/serializer.cpp +24 -0
  49. package/src/duckdb/src/common/sort/comparators.cpp +2 -2
  50. package/src/duckdb/src/common/types/bit.cpp +57 -34
  51. package/src/duckdb/src/common/types/data_chunk.cpp +32 -29
  52. package/src/duckdb/src/common/types/vector_cache.cpp +12 -6
  53. package/src/duckdb/src/common/vector_operations/comparison_operators.cpp +14 -0
  54. package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +20 -1
  55. package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +2 -2
  56. package/src/duckdb/src/core_functions/aggregate/holistic/approx_top_k.cpp +32 -7
  57. package/src/duckdb/src/core_functions/function_list.cpp +1 -2
  58. package/src/duckdb/src/core_functions/scalar/bit/bitstring.cpp +23 -5
  59. package/src/duckdb/src/core_functions/scalar/date/date_diff.cpp +12 -6
  60. package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +1 -1
  61. package/src/duckdb/src/execution/expression_executor/execute_between.cpp +4 -3
  62. package/src/duckdb/src/execution/expression_executor/execute_case.cpp +4 -3
  63. package/src/duckdb/src/execution/expression_executor/execute_cast.cpp +2 -1
  64. package/src/duckdb/src/execution/expression_executor/execute_comparison.cpp +3 -2
  65. package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +2 -1
  66. package/src/duckdb/src/execution/expression_executor/execute_function.cpp +2 -1
  67. package/src/duckdb/src/execution/expression_executor/execute_operator.cpp +3 -2
  68. package/src/duckdb/src/execution/expression_executor/execute_reference.cpp +1 -1
  69. package/src/duckdb/src/execution/expression_executor.cpp +9 -3
  70. package/src/duckdb/src/execution/expression_executor_state.cpp +11 -9
  71. package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +238 -0
  72. package/src/duckdb/src/execution/index/art/plan_art.cpp +94 -0
  73. package/src/duckdb/src/execution/index/index_type_set.cpp +4 -1
  74. package/src/duckdb/src/execution/join_hashtable.cpp +7 -8
  75. package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +6 -4
  76. package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.cpp +4 -4
  77. package/src/duckdb/src/execution/operator/csv_scanner/scanner/base_scanner.cpp +1 -1
  78. package/src/duckdb/src/execution/operator/csv_scanner/scanner/csv_schema.cpp +44 -5
  79. package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +28 -24
  80. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +25 -26
  81. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +5 -3
  82. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +4 -4
  83. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +2 -2
  84. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_refinement.cpp +1 -1
  85. package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_replacement.cpp +1 -1
  86. package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine.cpp +1 -1
  87. package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine_cache.cpp +2 -2
  88. package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_file_scanner.cpp +1 -1
  89. package/src/duckdb/src/execution/operator/csv_scanner/table_function/global_csv_state.cpp +1 -1
  90. package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +73 -27
  91. package/src/duckdb/src/execution/operator/helper/physical_buffered_collector.cpp +1 -1
  92. package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +695 -0
  93. package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +1487 -0
  94. package/src/duckdb/src/execution/operator/persistent/csv_buffer.cpp +72 -0
  95. package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +158 -0
  96. package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +280 -0
  97. package/src/duckdb/src/execution/operator/persistent/parallel_csv_reader.cpp +666 -0
  98. package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +14 -4
  99. package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +207 -0
  100. package/src/duckdb/src/execution/partitionable_hashtable.cpp +207 -0
  101. package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +6 -1
  102. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +0 -4
  103. package/src/duckdb/src/execution/physical_plan/plan_create_index.cpp +14 -87
  104. package/src/duckdb/src/execution/physical_plan/plan_export.cpp +1 -1
  105. package/src/duckdb/src/execution/physical_plan/plan_get.cpp +1 -1
  106. package/src/duckdb/src/execution/reservoir_sample.cpp +1 -1
  107. package/src/duckdb/src/execution/window_executor.cpp +3 -3
  108. package/src/duckdb/src/function/pragma/pragma_queries.cpp +1 -1
  109. package/src/duckdb/src/function/scalar/strftime_format.cpp +1 -2
  110. package/src/duckdb/src/function/scalar/string/concat.cpp +118 -151
  111. package/src/duckdb/src/function/table/arrow.cpp +13 -0
  112. package/src/duckdb/src/function/table/arrow_conversion.cpp +12 -7
  113. package/src/duckdb/src/function/table/copy_csv.cpp +1 -1
  114. package/src/duckdb/src/function/table/read_csv.cpp +2 -30
  115. package/src/duckdb/src/function/table/sniff_csv.cpp +2 -1
  116. package/src/duckdb/src/function/table/system/duckdb_secrets.cpp +15 -7
  117. package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
  118. package/src/duckdb/src/include/duckdb/catalog/catalog_entry_retriever.hpp +1 -1
  119. package/src/duckdb/src/include/duckdb/common/atomic.hpp +13 -1
  120. package/src/duckdb/src/include/duckdb/common/bitpacking.hpp +3 -4
  121. package/src/duckdb/src/include/duckdb/common/enum_util.hpp +8 -0
  122. package/src/duckdb/src/include/duckdb/common/enums/metric_type.hpp +2 -0
  123. package/src/duckdb/src/include/duckdb/common/exception.hpp +10 -0
  124. package/src/duckdb/src/include/duckdb/common/extra_type_info/enum_type_info.hpp +53 -0
  125. package/src/duckdb/src/include/duckdb/common/insertion_order_preserving_map.hpp +5 -5
  126. package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +5 -0
  127. package/src/duckdb/src/include/duckdb/common/types/bit.hpp +36 -33
  128. package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +10 -13
  129. package/src/duckdb/src/include/duckdb/common/types/uhugeint.hpp +1 -1
  130. package/src/duckdb/src/include/duckdb/common/types/vector_cache.hpp +7 -5
  131. package/src/duckdb/src/include/duckdb/common/windows_undefs.hpp +2 -1
  132. package/src/duckdb/src/include/duckdb/core_functions/aggregate/minmax_n_helpers.hpp +2 -0
  133. package/src/duckdb/src/include/duckdb/core_functions/scalar/bit_functions.hpp +1 -1
  134. package/src/duckdb/src/include/duckdb/core_functions/scalar/list_functions.hpp +0 -6
  135. package/src/duckdb/src/include/duckdb/core_functions/scalar/math_functions.hpp +1 -1
  136. package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +3 -2
  137. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +3 -0
  138. package/src/duckdb/src/include/duckdb/execution/index/index_type.hpp +16 -1
  139. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_buffer_manager.hpp +4 -4
  140. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_reader_options.hpp +4 -2
  141. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_schema.hpp +3 -2
  142. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/sniffer/csv_sniffer.hpp +91 -36
  143. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/sniffer/sniff_result.hpp +36 -0
  144. package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/string_value_scanner.hpp +1 -1
  145. package/src/duckdb/src/include/duckdb/execution/operator/join/perfect_hash_join_executor.hpp +0 -1
  146. package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_export.hpp +2 -5
  147. package/src/duckdb/src/include/duckdb/function/table_function.hpp +1 -1
  148. package/src/duckdb/src/include/duckdb/main/database.hpp +5 -0
  149. package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +1 -0
  150. package/src/duckdb/src/include/duckdb/main/profiling_info.hpp +20 -22
  151. package/src/duckdb/src/include/duckdb/main/query_profiler.hpp +7 -9
  152. package/src/duckdb/src/include/duckdb/main/secret/secret.hpp +8 -1
  153. package/src/duckdb/src/include/duckdb/main/table_description.hpp +14 -0
  154. package/src/duckdb/src/include/duckdb/optimizer/unnest_rewriter.hpp +5 -5
  155. package/src/duckdb/src/include/duckdb/parser/parsed_data/exported_table_data.hpp +15 -5
  156. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +2 -0
  157. package/src/duckdb/src/include/duckdb/planner/expression_binder/order_binder.hpp +4 -0
  158. package/src/duckdb/src/include/duckdb/planner/operator/logical_export.hpp +10 -13
  159. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +1 -0
  160. package/src/duckdb/src/include/duckdb/storage/metadata/metadata_manager.hpp +2 -2
  161. package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +1 -1
  162. package/src/duckdb/src/include/duckdb/storage/statistics/distinct_statistics.hpp +0 -2
  163. package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +1 -0
  164. package/src/duckdb/src/include/duckdb/transaction/duck_transaction.hpp +5 -1
  165. package/src/duckdb/src/include/duckdb.h +2 -2
  166. package/src/duckdb/src/main/appender.cpp +3 -0
  167. package/src/duckdb/src/main/capi/profiling_info-c.cpp +5 -2
  168. package/src/duckdb/src/main/client_context.cpp +8 -2
  169. package/src/duckdb/src/main/connection.cpp +1 -1
  170. package/src/duckdb/src/main/database.cpp +13 -0
  171. package/src/duckdb/src/main/extension/extension_helper.cpp +1 -1
  172. package/src/duckdb/src/main/extension/extension_install.cpp +9 -1
  173. package/src/duckdb/src/main/extension/extension_load.cpp +3 -2
  174. package/src/duckdb/src/main/extension_install_info.cpp +1 -1
  175. package/src/duckdb/src/main/profiling_info.cpp +78 -58
  176. package/src/duckdb/src/main/query_profiler.cpp +79 -89
  177. package/src/duckdb/src/main/relation/read_csv_relation.cpp +1 -1
  178. package/src/duckdb/src/main/secret/secret.cpp +2 -1
  179. package/src/duckdb/src/main/secret/secret_manager.cpp +14 -0
  180. package/src/duckdb/src/optimizer/cte_filter_pusher.cpp +4 -2
  181. package/src/duckdb/src/optimizer/deliminator.cpp +0 -7
  182. package/src/duckdb/src/optimizer/in_clause_rewriter.cpp +7 -0
  183. package/src/duckdb/src/optimizer/pushdown/pushdown_left_join.cpp +4 -1
  184. package/src/duckdb/src/optimizer/unnest_rewriter.cpp +21 -21
  185. package/src/duckdb/src/parallel/task_scheduler.cpp +9 -0
  186. package/src/duckdb/src/parser/parsed_data/exported_table_data.cpp +22 -0
  187. package/src/duckdb/src/parser/parsed_expression_iterator.cpp +3 -0
  188. package/src/duckdb/src/parser/statement/insert_statement.cpp +7 -1
  189. package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +1 -1
  190. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +89 -87
  191. package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +2 -2
  192. package/src/duckdb/src/planner/binder/expression/bind_macro_expression.cpp +4 -9
  193. package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +4 -0
  194. package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +2 -2
  195. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +4 -1
  196. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +4 -3
  197. package/src/duckdb/src/planner/expression_binder/order_binder.cpp +13 -3
  198. package/src/duckdb/src/planner/expression_binder.cpp +1 -1
  199. package/src/duckdb/src/planner/operator/logical_export.cpp +28 -0
  200. package/src/duckdb/src/planner/table_binding.cpp +1 -2
  201. package/src/duckdb/src/planner/table_filter.cpp +6 -2
  202. package/src/duckdb/src/storage/buffer/buffer_pool.cpp +2 -1
  203. package/src/duckdb/src/storage/checkpoint_manager.cpp +1 -1
  204. package/src/duckdb/src/storage/compression/bitpacking.cpp +7 -3
  205. package/src/duckdb/src/storage/compression/dictionary_compression.cpp +1 -1
  206. package/src/duckdb/src/storage/metadata/metadata_manager.cpp +2 -2
  207. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +16 -0
  208. package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +29 -0
  209. package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +15 -0
  210. package/src/duckdb/src/storage/single_file_block_manager.cpp +2 -1
  211. package/src/duckdb/src/storage/statistics/distinct_statistics.cpp +3 -5
  212. package/src/duckdb/src/storage/storage_info.cpp +4 -4
  213. package/src/duckdb/src/storage/table/row_group_collection.cpp +1 -1
  214. package/src/duckdb/src/storage/table/row_version_manager.cpp +5 -1
  215. package/src/duckdb/src/storage/temporary_file_manager.cpp +1 -1
  216. package/src/duckdb/src/transaction/duck_transaction.cpp +15 -14
  217. package/src/duckdb/third_party/brotli/common/brotli_platform.h +1 -1
  218. package/src/duckdb/third_party/brotli/dec/decode.cpp +1 -1
  219. package/src/duckdb/third_party/brotli/enc/memory.cpp +4 -4
  220. package/src/duckdb/third_party/fsst/libfsst.cpp +1 -1
  221. package/src/duckdb/third_party/hyperloglog/sds.cpp +1 -1
  222. package/src/duckdb/third_party/hyperloglog/sds.hpp +1 -1
  223. package/src/duckdb/third_party/libpg_query/include/common/keywords.hpp +1 -1
  224. package/src/duckdb/third_party/libpg_query/include/datatype/timestamp.hpp +1 -1
  225. package/src/duckdb/third_party/libpg_query/include/mb/pg_wchar.hpp +1 -1
  226. package/src/duckdb/third_party/libpg_query/include/nodes/bitmapset.hpp +1 -1
  227. package/src/duckdb/third_party/libpg_query/include/nodes/lockoptions.hpp +1 -1
  228. package/src/duckdb/third_party/libpg_query/include/nodes/makefuncs.hpp +1 -1
  229. package/src/duckdb/third_party/libpg_query/include/nodes/pg_list.hpp +1 -1
  230. package/src/duckdb/third_party/libpg_query/include/nodes/value.hpp +1 -1
  231. package/src/duckdb/third_party/libpg_query/include/parser/gramparse.hpp +1 -1
  232. package/src/duckdb/third_party/libpg_query/include/parser/parser.hpp +1 -1
  233. package/src/duckdb/third_party/libpg_query/include/parser/scanner.hpp +1 -1
  234. package/src/duckdb/third_party/libpg_query/include/parser/scansup.hpp +1 -1
  235. package/src/duckdb/third_party/libpg_query/include/pg_functions.hpp +1 -1
  236. package/src/duckdb/third_party/libpg_query/pg_functions.cpp +1 -1
  237. package/src/duckdb/third_party/libpg_query/src_backend_nodes_list.cpp +1 -1
  238. package/src/duckdb/third_party/libpg_query/src_backend_nodes_makefuncs.cpp +1 -1
  239. package/src/duckdb/third_party/libpg_query/src_backend_nodes_value.cpp +1 -1
  240. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +1964 -1964
  241. package/src/duckdb/third_party/libpg_query/src_backend_parser_parser.cpp +1 -1
  242. package/src/duckdb/third_party/libpg_query/src_backend_parser_scansup.cpp +1 -1
  243. package/src/duckdb/third_party/libpg_query/src_common_keywords.cpp +1 -1
  244. package/src/duckdb/third_party/lz4/lz4.cpp +1 -1
  245. package/src/duckdb/third_party/mbedtls/include/des_alt.h +1 -1
  246. package/src/duckdb/third_party/mbedtls/include/mbedtls/aes_alt.h +1 -1
  247. package/src/duckdb/third_party/mbedtls/include/mbedtls/aria_alt.h +1 -1
  248. package/src/duckdb/third_party/mbedtls/include/mbedtls/asn1write.h +1 -1
  249. package/src/duckdb/third_party/mbedtls/include/mbedtls/camellia_alt.h +1 -1
  250. package/src/duckdb/third_party/mbedtls/include/mbedtls/ccm_alt.h +1 -1
  251. package/src/duckdb/third_party/mbedtls/include/mbedtls/chacha20.h +1 -1
  252. package/src/duckdb/third_party/mbedtls/include/mbedtls/chachapoly.h +1 -1
  253. package/src/duckdb/third_party/mbedtls/include/mbedtls/cmac.h +1 -1
  254. package/src/duckdb/third_party/mbedtls/include/mbedtls/config_psa.h +1 -1
  255. package/src/duckdb/third_party/mbedtls/include/mbedtls/ecdsa.h +1 -1
  256. package/src/duckdb/third_party/mbedtls/include/mbedtls/ecp.h +1 -1
  257. package/src/duckdb/third_party/mbedtls/include/mbedtls/gcm_alt.h +1 -1
  258. package/src/duckdb/third_party/mbedtls/include/mbedtls/md5.h +1 -1
  259. package/src/duckdb/third_party/mbedtls/include/mbedtls/nist_kw.h +1 -1
  260. package/src/duckdb/third_party/mbedtls/include/mbedtls/pkcs12.h +1 -1
  261. package/src/duckdb/third_party/mbedtls/include/mbedtls/pkcs5.h +1 -1
  262. package/src/duckdb/third_party/mbedtls/include/mbedtls/psa_util.h +1 -1
  263. package/src/duckdb/third_party/mbedtls/include/mbedtls/ripemd160.h +1 -1
  264. package/src/duckdb/third_party/mbedtls/include/mbedtls/threading.h +1 -1
  265. package/src/duckdb/third_party/mbedtls/include/mbedtls/timing.h +1 -1
  266. package/src/duckdb/third_party/mbedtls/include/platform_alt.h +1 -1
  267. package/src/duckdb/third_party/mbedtls/include/psa/crypto.h +1 -1
  268. package/src/duckdb/third_party/mbedtls/include/rsa_alt.h +1 -1
  269. package/src/duckdb/third_party/mbedtls/include/sha1_alt.h +1 -1
  270. package/src/duckdb/third_party/mbedtls/include/sha256_alt.h +1 -1
  271. package/src/duckdb/third_party/mbedtls/include/sha512_alt.h +1 -1
  272. package/src/duckdb/third_party/mbedtls/include/ssl_misc.h +1 -1
  273. package/src/duckdb/third_party/mbedtls/library/aesni.h +1 -1
  274. package/src/duckdb/third_party/mbedtls/library/padlock.h +1 -1
  275. package/src/duckdb/third_party/miniz/miniz.cpp +1 -1
  276. package/src/duckdb/third_party/parquet/parquet_types.cpp +1 -1
  277. package/src/duckdb/third_party/parquet/windows_compatibility.h +1 -1
  278. package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
  279. package/src/duckdb/third_party/pcg/pcg_uint128.hpp +1 -1
  280. package/src/duckdb/third_party/skiplist/Node.h +4 -4
  281. package/src/duckdb/third_party/snappy/snappy.cc +1 -1
  282. package/src/duckdb/third_party/snappy/snappy_version.hpp +1 -1
  283. package/src/duckdb/third_party/thrift/thrift/thrift-config.h +1 -1
  284. package/src/duckdb/third_party/zstd/decompress/zstd_decompress_block.cpp +1 -1
  285. package/src/duckdb/third_party/zstd/include/zstd_static.h +1 -1
  286. package/src/duckdb/ub_src_execution_index_art.cpp +2 -0
  287. package/src/duckdb/ub_src_parser_parsed_data.cpp +2 -0
  288. package/src/duckdb/ub_src_planner_operator.cpp +2 -0
@@ -0,0 +1,53 @@
1
+ #pragma once
2
+
3
+ #include "duckdb/common/extra_type_info.hpp"
4
+ #include "duckdb/common/serializer/deserializer.hpp"
5
+ #include "duckdb/common/string_map_set.hpp"
6
+
7
+ namespace duckdb {
8
+
9
+ template <class T>
10
+ struct EnumTypeInfoTemplated : public EnumTypeInfo {
11
+ explicit EnumTypeInfoTemplated(Vector &values_insert_order_p, idx_t size_p)
12
+ : EnumTypeInfo(values_insert_order_p, size_p) {
13
+ D_ASSERT(values_insert_order_p.GetType().InternalType() == PhysicalType::VARCHAR);
14
+
15
+ UnifiedVectorFormat vdata;
16
+ values_insert_order.ToUnifiedFormat(size_p, vdata);
17
+
18
+ auto data = UnifiedVectorFormat::GetData<string_t>(vdata);
19
+ for (idx_t i = 0; i < size_p; i++) {
20
+ auto idx = vdata.sel->get_index(i);
21
+ if (!vdata.validity.RowIsValid(idx)) {
22
+ throw InternalException("Attempted to create ENUM type with NULL value");
23
+ }
24
+ if (values.count(data[idx]) > 0) {
25
+ throw InvalidInputException("Attempted to create ENUM type with duplicate value %s",
26
+ data[idx].GetString());
27
+ }
28
+ values[data[idx]] = UnsafeNumericCast<T>(i);
29
+ }
30
+ }
31
+
32
+ static shared_ptr<EnumTypeInfoTemplated> Deserialize(Deserializer &deserializer, uint32_t size) {
33
+ Vector values_insert_order(LogicalType::VARCHAR, size);
34
+ auto strings = FlatVector::GetData<string_t>(values_insert_order);
35
+
36
+ deserializer.ReadList(201, "values", [&](Deserializer::List &list, idx_t i) {
37
+ strings[i] = StringVector::AddStringOrBlob(values_insert_order, list.ReadElement<string>());
38
+ });
39
+ return make_shared_ptr<EnumTypeInfoTemplated>(values_insert_order, size);
40
+ }
41
+
42
+ const string_map_t<T> &GetValues() const {
43
+ return values;
44
+ }
45
+
46
+ EnumTypeInfoTemplated(const EnumTypeInfoTemplated &) = delete;
47
+ EnumTypeInfoTemplated &operator=(const EnumTypeInfoTemplated &) = delete;
48
+
49
+ private:
50
+ string_map_t<T> values;
51
+ };
52
+
53
+ } // namespace duckdb
@@ -95,13 +95,13 @@ public:
95
95
  map.resize(nz);
96
96
  }
97
97
 
98
- void insert(const string &key, V &value) { // NOLINT: match stl API
99
- map.push_back(make_pair(key, std::move(value)));
98
+ void insert(const string &key, V &&value) { // NOLINT: match stl API
99
+ map.emplace_back(key, std::move(value));
100
100
  map_idx[key] = map.size() - 1;
101
101
  }
102
102
 
103
- void insert(const string &key, V &&value) { // NOLINT: match stl API
104
- map.push_back(make_pair(key, std::move(value)));
103
+ void insert(const string &key, const V &value) { // NOLINT: match stl API
104
+ map.emplace_back(key, value);
105
105
  map_idx[key] = map.size() - 1;
106
106
  }
107
107
 
@@ -133,7 +133,7 @@ public:
133
133
  V &operator[](const string &key) {
134
134
  if (!contains(key)) {
135
135
  auto v = V();
136
- insert(key, v);
136
+ insert(key, std::move(v));
137
137
  }
138
138
  return map[map_idx[key]].second;
139
139
  }
@@ -255,6 +255,11 @@ struct MultiFileReader {
255
255
  static void PruneReaders(BIND_DATA &data, MultiFileList &file_list) {
256
256
  unordered_set<string> file_set;
257
257
 
258
+ // Avoid materializing the file list if there's nothing to prune
259
+ if (!data.initial_reader && data.union_readers.empty()) {
260
+ return;
261
+ }
262
+
258
263
  for (const auto &file : file_list.Files()) {
259
264
  file_set.insert(file);
260
265
  }
@@ -17,85 +17,88 @@
17
17
 
18
18
  namespace duckdb {
19
19
 
20
+ using bitstring_t = duckdb::string_t;
21
+
20
22
  //! The Bit class is a static class that holds helper functions for the BIT type.
21
23
  class Bit {
22
24
  public:
23
25
  //! Returns the number of bits in the bit string
24
- DUCKDB_API static idx_t BitLength(string_t bits);
26
+ DUCKDB_API static idx_t BitLength(bitstring_t bits);
25
27
  //! Returns the number of set bits in the bit string
26
- DUCKDB_API static idx_t BitCount(string_t bits);
28
+ DUCKDB_API static idx_t BitCount(bitstring_t bits);
27
29
  //! Returns the number of bytes in the bit string
28
- DUCKDB_API static idx_t OctetLength(string_t bits);
30
+ DUCKDB_API static idx_t OctetLength(bitstring_t bits);
29
31
  //! Extracts the nth bit from bit string; the first (leftmost) bit is indexed 0
30
- DUCKDB_API static idx_t GetBit(string_t bit_string, idx_t n);
32
+ DUCKDB_API static idx_t GetBit(bitstring_t bit_string, idx_t n);
31
33
  //! Sets the nth bit in bit string to newvalue; the first (leftmost) bit is indexed 0
32
- DUCKDB_API static void SetBit(string_t &bit_string, idx_t n, idx_t new_value);
34
+ DUCKDB_API static void SetBit(bitstring_t &bit_string, idx_t n, idx_t new_value);
33
35
  //! Returns first starting index of the specified substring within bits, or zero if it's not present.
34
- DUCKDB_API static idx_t BitPosition(string_t substring, string_t bits);
36
+ DUCKDB_API static idx_t BitPosition(bitstring_t substring, bitstring_t bits);
35
37
  //! Converts bits to a string, writing the output to the designated output string.
36
38
  //! The string needs to have space for at least GetStringSize(bits) bytes.
37
- DUCKDB_API static void ToString(string_t bits, char *output);
38
- DUCKDB_API static string ToString(string_t str);
39
+ DUCKDB_API static void ToString(bitstring_t bits, char *output);
40
+ DUCKDB_API static string ToString(bitstring_t bits);
39
41
  //! Returns the bit size of a string -> bit conversion
40
42
  DUCKDB_API static bool TryGetBitStringSize(string_t str, idx_t &result_size, string *error_message);
41
43
  //! Convert a string to a bit. This function should ONLY be called after calling GetBitSize, since it does NOT
42
44
  //! perform data validation.
43
- DUCKDB_API static void ToBit(string_t str, string_t &output);
45
+ DUCKDB_API static void ToBit(string_t str, bitstring_t &output);
44
46
 
45
47
  DUCKDB_API static string ToBit(string_t str);
46
48
 
47
49
  //! output needs to have enough space allocated before calling this function (blob size + 1)
48
- DUCKDB_API static void BlobToBit(string_t blob, string_t &output);
50
+ DUCKDB_API static void BlobToBit(string_t blob, bitstring_t &output);
49
51
 
50
52
  DUCKDB_API static string BlobToBit(string_t blob);
51
53
 
52
54
  //! output_str needs to have enough space allocated before calling this function (sizeof(T) + 1)
53
55
  template <class T>
54
- static void NumericToBit(T numeric, string_t &output_str);
56
+ static void NumericToBit(T numeric, bitstring_t &output_str);
55
57
 
56
58
  template <class T>
57
59
  static string NumericToBit(T numeric);
58
60
 
59
61
  //! bit is expected to fit inside of output num (bit size <= sizeof(T) + 1)
60
62
  template <class T>
61
- static void BitToNumeric(string_t bit, T &output_num);
63
+ static void BitToNumeric(bitstring_t bit, T &output_num);
62
64
 
63
65
  template <class T>
64
- static T BitToNumeric(string_t bit);
66
+ static T BitToNumeric(bitstring_t bit);
65
67
 
66
68
  //! bit is expected to fit inside of output_blob (bit size = output_blob + 1)
67
- static void BitToBlob(string_t bit, string_t &output_blob);
69
+ static void BitToBlob(bitstring_t bit, string_t &output_blob);
68
70
 
69
- static string BitToBlob(string_t bit);
71
+ static string BitToBlob(bitstring_t bit);
70
72
 
71
73
  //! Creates a new bitstring of determined length
72
- DUCKDB_API static void BitString(const string_t &input, const idx_t &len, string_t &result);
73
- DUCKDB_API static void SetEmptyBitString(string_t &target, string_t &input);
74
- DUCKDB_API static void SetEmptyBitString(string_t &target, idx_t len);
74
+ DUCKDB_API static void BitString(const string_t &input, idx_t len, bitstring_t &result);
75
+ DUCKDB_API static void ExtendBitString(const bitstring_t &input, idx_t bit_length, bitstring_t &result);
76
+ DUCKDB_API static void SetEmptyBitString(bitstring_t &target, string_t &input);
77
+ DUCKDB_API static void SetEmptyBitString(bitstring_t &target, idx_t len);
75
78
  DUCKDB_API static idx_t ComputeBitstringLen(idx_t len);
76
79
 
77
- DUCKDB_API static void RightShift(const string_t &bit_string, const idx_t &shif, string_t &result);
78
- DUCKDB_API static void LeftShift(const string_t &bit_string, const idx_t &shift, string_t &result);
79
- DUCKDB_API static void BitwiseAnd(const string_t &rhs, const string_t &lhs, string_t &result);
80
- DUCKDB_API static void BitwiseOr(const string_t &rhs, const string_t &lhs, string_t &result);
81
- DUCKDB_API static void BitwiseXor(const string_t &rhs, const string_t &lhs, string_t &result);
82
- DUCKDB_API static void BitwiseNot(const string_t &rhs, string_t &result);
80
+ DUCKDB_API static void RightShift(const bitstring_t &bit_string, idx_t shift, bitstring_t &result);
81
+ DUCKDB_API static void LeftShift(const bitstring_t &bit_string, idx_t shift, bitstring_t &result);
82
+ DUCKDB_API static void BitwiseAnd(const bitstring_t &rhs, const bitstring_t &lhs, bitstring_t &result);
83
+ DUCKDB_API static void BitwiseOr(const bitstring_t &rhs, const bitstring_t &lhs, bitstring_t &result);
84
+ DUCKDB_API static void BitwiseXor(const bitstring_t &rhs, const bitstring_t &lhs, bitstring_t &result);
85
+ DUCKDB_API static void BitwiseNot(const bitstring_t &rhs, bitstring_t &result);
83
86
 
84
- DUCKDB_API static void Verify(const string_t &input);
87
+ DUCKDB_API static void Verify(const bitstring_t &input);
85
88
 
86
89
  private:
87
- static void Finalize(string_t &str);
88
- static idx_t GetBitInternal(string_t bit_string, idx_t n);
89
- static void SetBitInternal(string_t &bit_string, idx_t n, idx_t new_value);
90
+ static void Finalize(bitstring_t &str);
91
+ static idx_t GetBitInternal(bitstring_t bit_string, idx_t n);
92
+ static void SetBitInternal(bitstring_t &bit_string, idx_t n, idx_t new_value);
90
93
  static idx_t GetBitIndex(idx_t n);
91
- static uint8_t GetFirstByte(const string_t &str);
94
+ static uint8_t GetFirstByte(const bitstring_t &str);
92
95
  };
93
96
 
94
97
  //===--------------------------------------------------------------------===//
95
98
  // Bit Template definitions
96
99
  //===--------------------------------------------------------------------===//
97
100
  template <class T>
98
- void Bit::NumericToBit(T numeric, string_t &output_str) {
101
+ void Bit::NumericToBit(T numeric, bitstring_t &output_str) {
99
102
  D_ASSERT(output_str.GetSize() >= sizeof(T) + 1);
100
103
 
101
104
  auto output = output_str.GetDataWriteable();
@@ -113,20 +116,20 @@ template <class T>
113
116
  string Bit::NumericToBit(T numeric) {
114
117
  auto bit_len = sizeof(T) + 1;
115
118
  auto buffer = make_unsafe_uniq_array_uninitialized<char>(bit_len);
116
- string_t output_str(buffer.get(), UnsafeNumericCast<uint32_t>(bit_len));
119
+ bitstring_t output_str(buffer.get(), UnsafeNumericCast<uint32_t>(bit_len));
117
120
  Bit::NumericToBit(numeric, output_str);
118
121
  return output_str.GetString();
119
122
  }
120
123
 
121
124
  template <class T>
122
- T Bit::BitToNumeric(string_t bit) {
125
+ T Bit::BitToNumeric(bitstring_t bit) {
123
126
  T output;
124
127
  Bit::BitToNumeric(bit, output);
125
128
  return (output);
126
129
  }
127
130
 
128
131
  template <class T>
129
- void Bit::BitToNumeric(string_t bit, T &output_num) {
132
+ void Bit::BitToNumeric(bitstring_t bit, T &output_num) {
130
133
  D_ASSERT(bit.GetSize() <= sizeof(T) + 1);
131
134
 
132
135
  output_num = 0;
@@ -83,22 +83,19 @@ public:
83
83
  //! Set the DataChunk to own the data of data chunk, destroying the other chunk in the process
84
84
  DUCKDB_API void Move(DataChunk &chunk);
85
85
 
86
- //! Initializes the DataChunk with the specified types to an empty DataChunk
87
- //! This will create one vector of the specified type for each LogicalType in the
88
- //! types list. The vector will be referencing vector to the data owned by
89
- //! the DataChunk.
86
+ //! Initializes a DataChunk with the given types and without any vector data allocation.
87
+ DUCKDB_API void InitializeEmpty(const vector<LogicalType> &types);
88
+
89
+ //! Initializes a DataChunk with the given types. Then, if the corresponding boolean in the initialize-vector is
90
+ //! true, it initializes the vector for that data type.
91
+ DUCKDB_API void Initialize(ClientContext &context, const vector<LogicalType> &types,
92
+ idx_t capacity = STANDARD_VECTOR_SIZE);
90
93
  DUCKDB_API void Initialize(Allocator &allocator, const vector<LogicalType> &types,
91
94
  idx_t capacity = STANDARD_VECTOR_SIZE);
92
- DUCKDB_API void Initialize(ClientContext &context, const vector<LogicalType> &types,
95
+ DUCKDB_API void Initialize(ClientContext &context, const vector<LogicalType> &types, const vector<bool> &initialize,
96
+ idx_t capacity = STANDARD_VECTOR_SIZE);
97
+ DUCKDB_API void Initialize(Allocator &allocator, const vector<LogicalType> &types, const vector<bool> &initialize,
93
98
  idx_t capacity = STANDARD_VECTOR_SIZE);
94
- //! Initializes an empty DataChunk with the given types. The vectors will *not* have any data allocated for them.
95
- DUCKDB_API void InitializeEmpty(const vector<LogicalType> &types);
96
-
97
- DUCKDB_API void InitializeEmpty(vector<LogicalType>::const_iterator begin, vector<LogicalType>::const_iterator end);
98
- DUCKDB_API void Initialize(Allocator &allocator, vector<LogicalType>::const_iterator begin,
99
- vector<LogicalType>::const_iterator end, idx_t capacity = STANDARD_VECTOR_SIZE);
100
- DUCKDB_API void Initialize(ClientContext &context, vector<LogicalType>::const_iterator begin,
101
- vector<LogicalType>::const_iterator end, idx_t capacity = STANDARD_VECTOR_SIZE);
102
99
 
103
100
  //! Append the other DataChunk to this one. The column count and types of
104
101
  //! the two DataChunks have to match exactly. Throws an exception if there
@@ -76,7 +76,7 @@ public:
76
76
 
77
77
  template <bool CHECK_OVERFLOW = true>
78
78
  inline static uhugeint_t Divide(uhugeint_t lhs, uhugeint_t rhs) {
79
- // division between two same-size unsigned intergers can only go wrong with division by zero
79
+ // division between two same-size unsigned integers can only go wrong with division by zero
80
80
  if (rhs == 0) {
81
81
  throw OutOfRangeException("Division of UHUGEINT by zero!");
82
82
  }
@@ -16,18 +16,20 @@ namespace duckdb {
16
16
  class Allocator;
17
17
  class Vector;
18
18
 
19
- //! The VectorCache holds cached data that allows for re-use of the same memory by vectors
19
+ //! The VectorCache holds cached vector data.
20
+ //! It enables re-using the same memory for different vectors.
20
21
  class VectorCache {
21
22
  public:
22
- //! Instantiate a vector cache with the given type and capacity
23
- DUCKDB_API explicit VectorCache(Allocator &allocator, const LogicalType &type,
24
- idx_t capacity = STANDARD_VECTOR_SIZE);
23
+ //! Instantiate an empty vector cache.
24
+ DUCKDB_API VectorCache();
25
+ //! Instantiate a vector cache with the given type and capacity.
26
+ DUCKDB_API VectorCache(Allocator &allocator, const LogicalType &type, const idx_t capacity = STANDARD_VECTOR_SIZE);
25
27
 
28
+ public:
26
29
  buffer_ptr<VectorBuffer> buffer;
27
30
 
28
31
  public:
29
32
  void ResetFromCache(Vector &result) const;
30
-
31
33
  const LogicalType &GetType() const;
32
34
  };
33
35
 
@@ -6,7 +6,8 @@
6
6
  //
7
7
  //===----------------------------------------------------------------------===//
8
8
 
9
- #pragma once
9
+ // Do not add a header inclusion guard to this file. Otherwise these Win32 macros
10
+ // may get defined and stomp on DuckDB symbols
10
11
 
11
12
  #ifdef WIN32
12
13
 
@@ -40,6 +40,8 @@ struct HeapEntry<string_t> {
40
40
  HeapEntry(HeapEntry &&other) noexcept {
41
41
  if (other.value.IsInlined()) {
42
42
  value = other.value;
43
+ capacity = 0;
44
+ allocated_data = nullptr;
43
45
  } else {
44
46
  capacity = other.capacity;
45
47
  allocated_data = other.allocated_data;
@@ -48,7 +48,7 @@ struct BitStringFun {
48
48
  static constexpr const char *Description = "Pads the bitstring until the specified length";
49
49
  static constexpr const char *Example = "bitstring('1010'::BIT, 7)";
50
50
 
51
- static ScalarFunction GetFunction();
51
+ static ScalarFunctionSet GetFunctions();
52
52
  };
53
53
 
54
54
  } // namespace duckdb
@@ -330,12 +330,6 @@ struct ListNegativeDotProductFun {
330
330
  static constexpr const char *Name = "list_negative_dot_product";
331
331
  };
332
332
 
333
- struct ListNegativeInnerProductFunAlias {
334
- using ALIAS = ListNegativeInnerProductFun;
335
-
336
- static constexpr const char *Name = "<#>";
337
- };
338
-
339
333
  struct UnpivotListFun {
340
334
  static constexpr const char *Name = "unpivot_list";
341
335
  static constexpr const char *Parameters = "any,...";
@@ -427,7 +427,7 @@ struct AcoshFun {
427
427
  static constexpr const char *Name = "acosh";
428
428
  static constexpr const char *Parameters = "x";
429
429
  static constexpr const char *Description = "Computes the inverse hyperbolic cos of x";
430
- static constexpr const char *Example = "acosh(0.5)";
430
+ static constexpr const char *Example = "acosh(2.3)";
431
431
 
432
432
  static ScalarFunction GetFunction();
433
433
  };
@@ -28,10 +28,11 @@ struct ExpressionState {
28
28
  vector<unique_ptr<ExpressionState>> child_states;
29
29
  vector<LogicalType> types;
30
30
  DataChunk intermediate_chunk;
31
+ vector<bool> initialize;
31
32
 
32
33
  public:
33
- void AddChild(Expression *expr);
34
- void Finalize(bool empty = false);
34
+ void AddChild(Expression &child_expr);
35
+ void Finalize();
35
36
  Allocator &GetAllocator();
36
37
  bool HasContext();
37
38
  DUCKDB_API ClientContext &GetContext();
@@ -55,6 +55,9 @@ public:
55
55
  return std::move(art);
56
56
  }
57
57
 
58
+ //! Plan index construction.
59
+ static unique_ptr<PhysicalOperator> CreatePlan(PlanIndexInput &input);
60
+
58
61
  //! Root of the tree.
59
62
  Node tree = Node();
60
63
  //! Fixed-size allocators holding the ART nodes.
@@ -18,6 +18,8 @@
18
18
  namespace duckdb {
19
19
 
20
20
  class BoundIndex;
21
+ class PhysicalOperator;
22
+ class LogicalCreateIndex;
21
23
  enum class IndexConstraintType : uint8_t;
22
24
  class Expression;
23
25
  class TableIOManager;
@@ -43,7 +45,19 @@ struct CreateIndexInput {
43
45
  options(options) {};
44
46
  };
45
47
 
48
+ struct PlanIndexInput {
49
+ ClientContext &context;
50
+ LogicalCreateIndex &op;
51
+ unique_ptr<PhysicalOperator> &table_scan;
52
+
53
+ PlanIndexInput(ClientContext &context_p, LogicalCreateIndex &op_p, unique_ptr<PhysicalOperator> &table_scan_p)
54
+ : context(context_p), op(op_p), table_scan(table_scan_p) {
55
+ }
56
+ };
57
+
46
58
  typedef unique_ptr<BoundIndex> (*index_create_function_t)(CreateIndexInput &input);
59
+ typedef unique_ptr<PhysicalOperator> (*index_plan_function_t)(PlanIndexInput &input);
60
+
47
61
  //! A index "type"
48
62
  class IndexType {
49
63
  public:
@@ -51,7 +65,8 @@ public:
51
65
  string name;
52
66
 
53
67
  // Callbacks
54
- index_create_function_t create_instance;
68
+ index_plan_function_t create_plan = nullptr;
69
+ index_create_function_t create_instance = nullptr;
55
70
  };
56
71
 
57
72
  } // namespace duckdb
@@ -35,15 +35,15 @@ public:
35
35
 
36
36
  void UnpinBuffer(const idx_t cache_idx);
37
37
  //! Returns the buffer size set for this CSV buffer manager
38
- idx_t GetBufferSize();
38
+ idx_t GetBufferSize() const;
39
39
  //! Returns the number of buffers in the cached_buffers cache
40
- idx_t BufferCount();
40
+ idx_t BufferCount() const;
41
41
  //! If this buffer manager is done. In the context of a buffer manager it means that it read all buffers at least
42
42
  //! once.
43
- bool Done();
43
+ bool Done() const;
44
44
 
45
45
  void ResetBufferManager();
46
- string GetFilePath();
46
+ string GetFilePath() const;
47
47
 
48
48
  ClientContext &context;
49
49
  idx_t skip_rows = 0;
@@ -168,8 +168,10 @@ struct CSVReaderOptions {
168
168
  void SetReadOption(const string &loption, const Value &value, vector<string> &expected_names);
169
169
  void SetWriteOption(const string &loption, const Value &value);
170
170
  void SetDateFormat(LogicalTypeId type, const string &format, bool read_format);
171
- void ToNamedParameters(named_parameter_map_t &out);
172
- void FromNamedParameters(named_parameter_map_t &in, ClientContext &context);
171
+ void ToNamedParameters(named_parameter_map_t &out) const;
172
+ void FromNamedParameters(const named_parameter_map_t &in, ClientContext &context);
173
+ //! Verify options are not conflicting
174
+ void Verify();
173
175
 
174
176
  string ToString(const string &current_file_path) const;
175
177
  //! If the type for column with idx i was manually set
@@ -9,6 +9,7 @@
9
9
  #pragma once
10
10
 
11
11
  #include "duckdb/common/types.hpp"
12
+ #include "duckdb/execution/operator/csv_scanner/sniffer/sniff_result.hpp"
12
13
 
13
14
  namespace duckdb {
14
15
  //! Basic CSV Column Info
@@ -23,8 +24,8 @@ struct CSVColumnInfo {
23
24
  struct CSVSchema {
24
25
  void Initialize(vector<string> &names, vector<LogicalType> &types, const string &file_path);
25
26
  bool Empty() const;
26
- bool SchemasMatch(string &error_message, vector<string> &names, vector<LogicalType> &types,
27
- const string &cur_file_path);
27
+ bool SchemasMatch(string &error_message, SnifferResult &sniffer_result, const string &cur_file_path,
28
+ bool is_minimal_sniffer) const;
28
29
 
29
30
  private:
30
31
  static bool CanWeCastIt(LogicalTypeId source, LogicalTypeId destination);