duckdb 0.6.2-dev781.0 → 0.6.2-dev891.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 (320) hide show
  1. package/binding.gyp +1 -1
  2. package/package.json +1 -1
  3. package/src/connection.cpp +2 -1
  4. package/src/duckdb/extension/icu/icu-dateadd.cpp +3 -3
  5. package/src/duckdb/extension/icu/icu-datepart.cpp +3 -3
  6. package/src/duckdb/extension/icu/icu-datesub.cpp +2 -2
  7. package/src/duckdb/extension/icu/icu-datetrunc.cpp +1 -1
  8. package/src/duckdb/extension/icu/icu-extension.cpp +1 -1
  9. package/src/duckdb/extension/icu/icu-makedate.cpp +1 -1
  10. package/src/duckdb/extension/icu/icu-strptime.cpp +2 -2
  11. package/src/duckdb/extension/icu/icu-timezone.cpp +6 -5
  12. package/src/duckdb/extension/json/json-extension.cpp +1 -1
  13. package/src/duckdb/extension/parquet/column_reader.cpp +7 -0
  14. package/src/duckdb/extension/parquet/parquet-extension.cpp +1 -1
  15. package/src/duckdb/src/catalog/catalog.cpp +516 -177
  16. package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +1 -0
  17. package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +66 -49
  18. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +15 -16
  19. package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +1 -1
  20. package/src/duckdb/src/catalog/catalog_entry.cpp +6 -2
  21. package/src/duckdb/src/catalog/catalog_search_path.cpp +177 -22
  22. package/src/duckdb/src/catalog/catalog_set.cpp +134 -72
  23. package/src/duckdb/src/catalog/catalog_transaction.cpp +28 -0
  24. package/src/duckdb/src/catalog/default/default_views.cpp +4 -4
  25. package/src/duckdb/src/catalog/dependency_list.cpp +13 -0
  26. package/src/duckdb/src/catalog/dependency_manager.cpp +19 -13
  27. package/src/duckdb/src/common/constants.cpp +8 -0
  28. package/src/duckdb/src/common/enums/catalog_type.cpp +2 -0
  29. package/src/duckdb/src/common/enums/logical_operator_type.cpp +2 -0
  30. package/src/duckdb/src/common/enums/physical_operator_type.cpp +2 -0
  31. package/src/duckdb/src/common/enums/statement_type.cpp +2 -0
  32. package/src/duckdb/src/common/file_system.cpp +1 -1
  33. package/src/duckdb/src/common/string_util.cpp +5 -1
  34. package/src/duckdb/src/execution/index/art/art.cpp +1 -1
  35. package/src/duckdb/src/execution/operator/helper/physical_transaction.cpp +1 -0
  36. package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +1 -1
  37. package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +3 -2
  38. package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +1 -1
  39. package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +1 -1
  40. package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +4 -3
  41. package/src/duckdb/src/execution/operator/schema/physical_alter.cpp +1 -1
  42. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +72 -0
  43. package/src/duckdb/src/execution/operator/schema/physical_create_function.cpp +2 -1
  44. package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +3 -3
  45. package/src/duckdb/src/execution/operator/schema/physical_create_schema.cpp +5 -1
  46. package/src/duckdb/src/execution/operator/schema/physical_create_sequence.cpp +2 -1
  47. package/src/duckdb/src/execution/operator/schema/physical_create_table.cpp +2 -2
  48. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
  49. package/src/duckdb/src/execution/operator/schema/physical_create_view.cpp +2 -1
  50. package/src/duckdb/src/execution/operator/schema/physical_drop.cpp +10 -2
  51. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +4 -4
  52. package/src/duckdb/src/execution/physical_plan/plan_create_index.cpp +1 -1
  53. package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +2 -3
  54. package/src/duckdb/src/execution/physical_plan/plan_delete.cpp +1 -1
  55. package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +1 -1
  56. package/src/duckdb/src/execution/physical_plan/plan_simple.cpp +4 -0
  57. package/src/duckdb/src/execution/physical_plan/plan_update.cpp +1 -1
  58. package/src/duckdb/src/execution/physical_plan_generator.cpp +3 -2
  59. package/src/duckdb/src/function/built_in_functions.cpp +88 -0
  60. package/src/duckdb/src/function/function.cpp +0 -79
  61. package/src/duckdb/src/function/function_binder.cpp +2 -1
  62. package/src/duckdb/src/function/pragma/pragma_queries.cpp +10 -1
  63. package/src/duckdb/src/function/scalar/date/current.cpp +2 -2
  64. package/src/duckdb/src/function/scalar/list/list_aggregates.cpp +3 -2
  65. package/src/duckdb/src/function/scalar/sequence/nextval.cpp +14 -17
  66. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +2 -2
  67. package/src/duckdb/src/function/scalar/system/system_functions.cpp +7 -4
  68. package/src/duckdb/src/function/table/checkpoint.cpp +37 -4
  69. package/src/duckdb/src/function/table/read_csv.cpp +1 -1
  70. package/src/duckdb/src/function/table/system/duckdb_columns.cpp +32 -25
  71. package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +26 -22
  72. package/src/duckdb/src/function/table/system/duckdb_dependencies.cpp +1 -1
  73. package/src/duckdb/src/function/table/system/duckdb_extensions.cpp +1 -1
  74. package/src/duckdb/src/function/table/system/duckdb_functions.cpp +22 -15
  75. package/src/duckdb/src/function/table/system/duckdb_indexes.cpp +25 -18
  76. package/src/duckdb/src/function/table/system/duckdb_schemas.cpp +16 -8
  77. package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +26 -19
  78. package/src/duckdb/src/function/table/system/duckdb_tables.cpp +24 -17
  79. package/src/duckdb/src/function/table/system/duckdb_types.cpp +22 -16
  80. package/src/duckdb/src/function/table/system/duckdb_views.cpp +20 -13
  81. package/src/duckdb/src/function/table/system/pragma_collations.cpp +3 -4
  82. package/src/duckdb/src/function/table/system/pragma_database_list.cpp +20 -12
  83. package/src/duckdb/src/function/table/system/pragma_database_size.cpp +39 -24
  84. package/src/duckdb/src/function/table/system/pragma_storage_info.cpp +1 -7
  85. package/src/duckdb/src/function/table/system/pragma_table_info.cpp +3 -2
  86. package/src/duckdb/src/function/table/system_functions.cpp +0 -1
  87. package/src/duckdb/src/function/table/table_scan.cpp +13 -10
  88. package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
  89. package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +102 -81
  90. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/aggregate_function_catalog_entry.hpp +4 -0
  91. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/collate_catalog_entry.hpp +4 -0
  92. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/copy_function_catalog_entry.hpp +4 -0
  93. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/index_catalog_entry.hpp +4 -0
  94. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/pragma_function_catalog_entry.hpp +4 -0
  95. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/scalar_function_catalog_entry.hpp +4 -0
  96. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/scalar_macro_catalog_entry.hpp +4 -0
  97. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +21 -14
  98. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +4 -0
  99. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +4 -0
  100. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_function_catalog_entry.hpp +4 -0
  101. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_macro_catalog_entry.hpp +4 -0
  102. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +4 -0
  103. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/view_catalog_entry.hpp +4 -0
  104. package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -0
  105. package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +30 -11
  106. package/src/duckdb/src/include/duckdb/catalog/catalog_set.hpp +35 -20
  107. package/src/duckdb/src/include/duckdb/catalog/catalog_transaction.hpp +32 -0
  108. package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +27 -0
  109. package/src/duckdb/src/include/duckdb/catalog/dependency_manager.hpp +6 -4
  110. package/src/duckdb/src/include/duckdb/common/allocator.hpp +3 -0
  111. package/src/duckdb/src/include/duckdb/common/constants.hpp +8 -3
  112. package/src/duckdb/src/include/duckdb/common/enums/catalog_type.hpp +1 -0
  113. package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +1 -0
  114. package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +1 -0
  115. package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +10 -4
  116. package/src/duckdb/src/include/duckdb/common/file_system.hpp +2 -0
  117. package/src/duckdb/src/include/duckdb/common/string_util.hpp +3 -0
  118. package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +2 -2
  119. package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_attach.hpp +33 -0
  120. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +2 -1
  121. package/src/duckdb/src/include/duckdb/function/aggregate/algebraic_functions.hpp +1 -0
  122. package/src/duckdb/src/include/duckdb/function/aggregate/distributive_functions.hpp +1 -0
  123. package/src/duckdb/src/include/duckdb/function/aggregate/holistic_functions.hpp +1 -0
  124. package/src/duckdb/src/include/duckdb/function/aggregate/nested_functions.hpp +1 -0
  125. package/src/duckdb/src/include/duckdb/function/aggregate/regression_functions.hpp +1 -0
  126. package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +78 -0
  127. package/src/duckdb/src/include/duckdb/function/function.hpp +0 -61
  128. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +1 -2
  129. package/src/duckdb/src/include/duckdb/function/pragma/pragma_functions.hpp +1 -0
  130. package/src/duckdb/src/include/duckdb/function/scalar/blob_functions.hpp +1 -0
  131. package/src/duckdb/src/include/duckdb/function/scalar/date_functions.hpp +1 -0
  132. package/src/duckdb/src/include/duckdb/function/scalar/enum_functions.hpp +1 -0
  133. package/src/duckdb/src/include/duckdb/function/scalar/generic_functions.hpp +1 -0
  134. package/src/duckdb/src/include/duckdb/function/scalar/math_functions.hpp +1 -0
  135. package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +1 -0
  136. package/src/duckdb/src/include/duckdb/function/scalar/operators.hpp +1 -0
  137. package/src/duckdb/src/include/duckdb/function/scalar/regexp.hpp +1 -0
  138. package/src/duckdb/src/include/duckdb/function/scalar/sequence_functions.hpp +1 -0
  139. package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +1 -0
  140. package/src/duckdb/src/include/duckdb/function/scalar/trigonometric_functions.hpp +1 -0
  141. package/src/duckdb/src/include/duckdb/function/scalar/uuid_functions.hpp +1 -0
  142. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -1
  143. package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +1 -0
  144. package/src/duckdb/src/include/duckdb/function/table/range.hpp +1 -0
  145. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +1 -0
  146. package/src/duckdb/src/include/duckdb/function/table/summary.hpp +1 -0
  147. package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +1 -4
  148. package/src/duckdb/src/include/duckdb/function/table/table_scan.hpp +1 -0
  149. package/src/duckdb/src/include/duckdb/function/table_function.hpp +2 -1
  150. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +64 -0
  151. package/src/duckdb/src/include/duckdb/main/client_context.hpp +3 -3
  152. package/src/duckdb/src/include/duckdb/main/client_data.hpp +2 -1
  153. package/src/duckdb/src/include/duckdb/main/config.hpp +3 -0
  154. package/src/duckdb/src/include/duckdb/main/database.hpp +6 -6
  155. package/src/duckdb/src/include/duckdb/main/database_manager.hpp +69 -0
  156. package/src/duckdb/src/include/duckdb/main/settings.hpp +10 -0
  157. package/src/duckdb/src/include/duckdb/main/valid_checker.hpp +2 -2
  158. package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +3 -1
  159. package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +3 -1
  160. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_function_info.hpp +2 -2
  161. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +18 -1
  162. package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +53 -56
  163. package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +39 -0
  164. package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +4 -1
  165. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_aggregate_function_info.hpp +3 -18
  166. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_collation_info.hpp +4 -13
  167. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_copy_function_info.hpp +3 -12
  168. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_index_info.hpp +1 -1
  169. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +5 -3
  170. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_pragma_function_info.hpp +3 -14
  171. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_function_info.hpp +3 -19
  172. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_info.hpp +3 -1
  173. package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +7 -34
  174. package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +7 -1
  175. package/src/duckdb/src/include/duckdb/parser/parsed_data/exported_table_data.hpp +3 -0
  176. package/src/duckdb/src/include/duckdb/parser/parser_extension.hpp +2 -2
  177. package/src/duckdb/src/include/duckdb/parser/qualified_name.hpp +10 -2
  178. package/src/duckdb/src/include/duckdb/parser/query_error_context.hpp +2 -2
  179. package/src/duckdb/src/include/duckdb/parser/statement/attach_statement.hpp +29 -0
  180. package/src/duckdb/src/include/duckdb/parser/statement/export_statement.hpp +1 -0
  181. package/src/duckdb/src/include/duckdb/parser/statement/insert_statement.hpp +2 -0
  182. package/src/duckdb/src/include/duckdb/parser/statement/list.hpp +1 -0
  183. package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +4 -1
  184. package/src/duckdb/src/include/duckdb/parser/tokens.hpp +1 -0
  185. package/src/duckdb/src/include/duckdb/parser/transformer.hpp +2 -0
  186. package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -0
  187. package/src/duckdb/src/include/duckdb/planner/binder.hpp +11 -1
  188. package/src/duckdb/src/include/duckdb/planner/parsed_data/bound_create_table_info.hpp +2 -1
  189. package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +1 -0
  190. package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +13 -6
  191. package/src/duckdb/src/include/duckdb/storage/data_table.hpp +10 -2
  192. package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +2 -2
  193. package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +2 -2
  194. package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +9 -12
  195. package/src/duckdb/src/include/duckdb/storage/table/data_table_info.hpp +3 -7
  196. package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +5 -6
  197. package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +9 -7
  198. package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +3 -1
  199. package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +64 -0
  200. package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +14 -23
  201. package/src/duckdb/src/include/duckdb/transaction/transaction_context.hpp +12 -8
  202. package/src/duckdb/src/include/duckdb/transaction/transaction_manager.hpp +5 -10
  203. package/src/duckdb/src/include/duckdb/transaction/undo_buffer.hpp +1 -1
  204. package/src/duckdb/src/main/attached_database.cpp +97 -0
  205. package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
  206. package/src/duckdb/src/main/client_context.cpp +28 -22
  207. package/src/duckdb/src/main/client_data.cpp +5 -2
  208. package/src/duckdb/src/main/config.cpp +1 -0
  209. package/src/duckdb/src/main/database.cpp +54 -40
  210. package/src/duckdb/src/main/database_manager.cpp +95 -0
  211. package/src/duckdb/src/main/materialized_query_result.cpp +1 -1
  212. package/src/duckdb/src/main/prepared_statement_data.cpp +1 -2
  213. package/src/duckdb/src/main/query_result.cpp +4 -4
  214. package/src/duckdb/src/main/settings/settings.cpp +22 -6
  215. package/src/duckdb/src/main/stream_query_result.cpp +1 -1
  216. package/src/duckdb/src/parser/expression/columnref_expression.cpp +9 -3
  217. package/src/duckdb/src/parser/expression/function_expression.cpp +15 -13
  218. package/src/duckdb/src/parser/expression/window_expression.cpp +6 -4
  219. package/src/duckdb/src/parser/parsed_data/alter_function_info.cpp +7 -7
  220. package/src/duckdb/src/parser/parsed_data/alter_info.cpp +12 -2
  221. package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +96 -98
  222. package/src/duckdb/src/parser/parsed_data/create_aggregate_function_info.cpp +27 -0
  223. package/src/duckdb/src/parser/parsed_data/create_collation_info.cpp +23 -0
  224. package/src/duckdb/src/parser/parsed_data/create_copy_function_info.cpp +21 -0
  225. package/src/duckdb/src/parser/parsed_data/create_info.cpp +3 -0
  226. package/src/duckdb/src/parser/parsed_data/create_pragma_function_info.cpp +23 -0
  227. package/src/duckdb/src/parser/parsed_data/create_scalar_function_info.cpp +3 -1
  228. package/src/duckdb/src/parser/parsed_data/create_table_function_info.cpp +28 -0
  229. package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +9 -3
  230. package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +49 -0
  231. package/src/duckdb/src/parser/statement/attach_statement.cpp +15 -0
  232. package/src/duckdb/src/parser/statement/insert_statement.cpp +6 -2
  233. package/src/duckdb/src/parser/tableref/basetableref.cpp +9 -4
  234. package/src/duckdb/src/parser/transform/constraint/transform_constraint.cpp +15 -13
  235. package/src/duckdb/src/parser/transform/expression/transform_function.cpp +17 -7
  236. package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +4 -9
  237. package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +4 -0
  238. package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +5 -4
  239. package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +8 -10
  240. package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +32 -0
  241. package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +7 -2
  242. package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +1 -0
  243. package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +1 -0
  244. package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +1 -0
  245. package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +1 -0
  246. package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +5 -5
  247. package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +1 -0
  248. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +6 -13
  249. package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +6 -6
  250. package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +11 -2
  251. package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -1
  252. package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +1 -0
  253. package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -36
  254. package/src/duckdb/src/parser/transform/statement/transform_show.cpp +3 -1
  255. package/src/duckdb/src/parser/transform/statement/transform_use.cpp +21 -0
  256. package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +11 -3
  257. package/src/duckdb/src/parser/transformer.cpp +4 -0
  258. package/src/duckdb/src/planner/bind_context.cpp +11 -2
  259. package/src/duckdb/src/planner/binder/expression/bind_cast_expression.cpp +1 -1
  260. package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +43 -13
  261. package/src/duckdb/src/planner/binder/expression/bind_comparison_expression.cpp +1 -1
  262. package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +2 -3
  263. package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +2 -3
  264. package/src/duckdb/src/planner/binder/statement/bind_attach.cpp +20 -0
  265. package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +7 -4
  266. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +79 -27
  267. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +11 -7
  268. package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +1 -1
  269. package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +13 -5
  270. package/src/duckdb/src/planner/binder/statement/bind_export.cpp +6 -3
  271. package/src/duckdb/src/planner/binder/statement/bind_extension.cpp +1 -1
  272. package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +3 -2
  273. package/src/duckdb/src/planner/binder/statement/bind_pragma.cpp +2 -2
  274. package/src/duckdb/src/planner/binder/statement/bind_prepare.cpp +0 -2
  275. package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +11 -6
  276. package/src/duckdb/src/planner/binder/statement/bind_update.cpp +1 -1
  277. package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +10 -6
  278. package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +2 -4
  279. package/src/duckdb/src/planner/binder.cpp +17 -2
  280. package/src/duckdb/src/planner/logical_operator.cpp +5 -12
  281. package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +3 -4
  282. package/src/duckdb/src/planner/operator/logical_create.cpp +1 -4
  283. package/src/duckdb/src/planner/operator/logical_create_index.cpp +2 -2
  284. package/src/duckdb/src/planner/operator/logical_delete.cpp +2 -3
  285. package/src/duckdb/src/planner/operator/logical_insert.cpp +1 -1
  286. package/src/duckdb/src/planner/operator/logical_update.cpp +1 -1
  287. package/src/duckdb/src/planner/parsed_data/bound_create_table_info.cpp +1 -1
  288. package/src/duckdb/src/planner/planner.cpp +3 -2
  289. package/src/duckdb/src/planner/pragma_handler.cpp +1 -1
  290. package/src/duckdb/src/storage/buffer_manager.cpp +5 -0
  291. package/src/duckdb/src/storage/checkpoint_manager.cpp +10 -17
  292. package/src/duckdb/src/storage/data_table.cpp +34 -24
  293. package/src/duckdb/src/storage/local_storage.cpp +7 -3
  294. package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
  295. package/src/duckdb/src/storage/storage_manager.cpp +25 -42
  296. package/src/duckdb/src/storage/table/column_data.cpp +2 -1
  297. package/src/duckdb/src/storage/table/row_group.cpp +7 -2
  298. package/src/duckdb/src/storage/wal_replay.cpp +6 -22
  299. package/src/duckdb/src/storage/write_ahead_log.cpp +3 -3
  300. package/src/duckdb/src/transaction/meta_transaction.cpp +106 -0
  301. package/src/duckdb/src/transaction/transaction.cpp +21 -21
  302. package/src/duckdb/src/transaction/transaction_context.cpp +44 -8
  303. package/src/duckdb/src/transaction/transaction_manager.cpp +20 -20
  304. package/src/duckdb/src/transaction/undo_buffer.cpp +1 -3
  305. package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +2 -0
  306. package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +27 -1
  307. package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +99 -97
  308. package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +1 -0
  309. package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +15206 -14793
  310. package/src/duckdb/ub_src_catalog.cpp +4 -0
  311. package/src/duckdb/ub_src_execution_operator_schema.cpp +2 -0
  312. package/src/duckdb/ub_src_function.cpp +2 -0
  313. package/src/duckdb/ub_src_function_table_system.cpp +0 -2
  314. package/src/duckdb/ub_src_main.cpp +4 -0
  315. package/src/duckdb/ub_src_parser_parsed_data.cpp +12 -0
  316. package/src/duckdb/ub_src_parser_statement.cpp +2 -0
  317. package/src/duckdb/ub_src_parser_transform_statement.cpp +4 -0
  318. package/src/duckdb/ub_src_planner_binder_statement.cpp +2 -0
  319. package/src/duckdb/ub_src_transaction.cpp +2 -0
  320. package/src/duckdb/src/function/table/system/pragma_functions.cpp +0 -120
@@ -28,8 +28,7 @@ bool PreparedStatementData::RequireRebind(ClientContext &context, const vector<V
28
28
  // parameters not yet bound: query always requires a rebind
29
29
  return true;
30
30
  }
31
- auto &catalog = Catalog::GetCatalog(context);
32
- if (catalog.GetCatalogVersion() != catalog_version) {
31
+ if (Catalog::GetSystemCatalog(context).GetCatalogVersion() != catalog_version) {
33
32
  //! context is out of bounds
34
33
  return true;
35
34
  }
@@ -5,10 +5,10 @@
5
5
 
6
6
  namespace duckdb {
7
7
 
8
- BaseQueryResult::BaseQueryResult(QueryResultType type, StatementType statement_type, StatementProperties properties,
8
+ BaseQueryResult::BaseQueryResult(QueryResultType type, StatementType statement_type, StatementProperties properties_p,
9
9
  vector<LogicalType> types_p, vector<string> names_p)
10
- : type(type), statement_type(statement_type), properties(properties), types(move(types_p)), names(move(names_p)),
11
- success(true) {
10
+ : type(type), statement_type(statement_type), properties(move(properties_p)), types(move(types_p)),
11
+ names(move(names_p)), success(true) {
12
12
  D_ASSERT(types.size() == names.size());
13
13
  }
14
14
 
@@ -53,7 +53,7 @@ idx_t BaseQueryResult::ColumnCount() {
53
53
 
54
54
  QueryResult::QueryResult(QueryResultType type, StatementType statement_type, StatementProperties properties,
55
55
  vector<LogicalType> types_p, vector<string> names_p, ClientProperties client_properties_p)
56
- : BaseQueryResult(type, statement_type, properties, move(types_p), move(names_p)),
56
+ : BaseQueryResult(type, statement_type, move(properties), move(types_p), move(names_p)),
57
57
  client_properties(move(client_properties_p)) {
58
58
  }
59
59
 
@@ -11,6 +11,8 @@
11
11
  #include "duckdb/planner/expression_binder.hpp"
12
12
  #include "duckdb/storage/buffer_manager.hpp"
13
13
  #include "duckdb/storage/storage_manager.hpp"
14
+ #include "duckdb/main/database_manager.hpp"
15
+ #include "duckdb/main/attached_database.hpp"
14
16
  #include "duckdb/main/database.hpp"
15
17
 
16
18
  namespace duckdb {
@@ -532,7 +534,6 @@ Value ExternalThreadsSetting::GetSetting(ClientContext &context) {
532
534
  //===--------------------------------------------------------------------===//
533
535
  // File Search Path
534
536
  //===--------------------------------------------------------------------===//
535
-
536
537
  void FileSearchPathSetting::ResetLocal(ClientContext &context) {
537
538
  auto &client_data = ClientData::Get(context);
538
539
  client_data.file_search_path.clear();
@@ -647,6 +648,22 @@ Value LogQueryPathSetting::GetSetting(ClientContext &context) {
647
648
  return client_data.log_query_writer ? Value(client_data.log_query_writer->path) : Value();
648
649
  }
649
650
 
651
+ //===--------------------------------------------------------------------===//
652
+ // Immediate Transaction Mode
653
+ //===--------------------------------------------------------------------===//
654
+ void ImmediateTransactionModeSetting::SetGlobal(DatabaseInstance *db, DBConfig &config, const Value &input) {
655
+ config.options.immediate_transaction_mode = BooleanValue::Get(input);
656
+ }
657
+
658
+ void ImmediateTransactionModeSetting::ResetGlobal(DatabaseInstance *db, DBConfig &config) {
659
+ config.options.immediate_transaction_mode = DBConfig().options.immediate_transaction_mode;
660
+ }
661
+
662
+ Value ImmediateTransactionModeSetting::GetSetting(ClientContext &context) {
663
+ auto &config = DBConfig::GetConfig(context);
664
+ return Value::BOOLEAN(config.options.immediate_transaction_mode);
665
+ }
666
+
650
667
  //===--------------------------------------------------------------------===//
651
668
  // Maximum Expression Depth
652
669
  //===--------------------------------------------------------------------===//
@@ -845,7 +862,6 @@ Value ProgressBarTimeSetting::GetSetting(ClientContext &context) {
845
862
  //===--------------------------------------------------------------------===//
846
863
  // Schema
847
864
  //===--------------------------------------------------------------------===//
848
-
849
865
  void SchemaSetting::ResetLocal(ClientContext &context) {
850
866
  // FIXME: catalog_search_path is controlled by both SchemaSetting and SearchPathSetting
851
867
  auto &client_data = ClientData::Get(context);
@@ -855,7 +871,7 @@ void SchemaSetting::ResetLocal(ClientContext &context) {
855
871
  void SchemaSetting::SetLocal(ClientContext &context, const Value &input) {
856
872
  auto parameter = input.ToString();
857
873
  auto &client_data = ClientData::Get(context);
858
- client_data.catalog_search_path->Set(parameter, true);
874
+ client_data.catalog_search_path->Set(CatalogSearchEntry::Parse(parameter), true);
859
875
  }
860
876
 
861
877
  Value SchemaSetting::GetSetting(ClientContext &context) {
@@ -865,7 +881,6 @@ Value SchemaSetting::GetSetting(ClientContext &context) {
865
881
  //===--------------------------------------------------------------------===//
866
882
  // Search Path
867
883
  //===--------------------------------------------------------------------===//
868
-
869
884
  void SearchPathSetting::ResetLocal(ClientContext &context) {
870
885
  // FIXME: catalog_search_path is controlled by both SchemaSetting and SearchPathSetting
871
886
  auto &client_data = ClientData::Get(context);
@@ -875,12 +890,13 @@ void SearchPathSetting::ResetLocal(ClientContext &context) {
875
890
  void SearchPathSetting::SetLocal(ClientContext &context, const Value &input) {
876
891
  auto parameter = input.ToString();
877
892
  auto &client_data = ClientData::Get(context);
878
- client_data.catalog_search_path->Set(parameter, false);
893
+ client_data.catalog_search_path->Set(CatalogSearchEntry::ParseList(parameter), false);
879
894
  }
880
895
 
881
896
  Value SearchPathSetting::GetSetting(ClientContext &context) {
882
897
  auto &client_data = ClientData::Get(context);
883
- return Value(StringUtil::Join(client_data.catalog_search_path->GetSetPaths(), ","));
898
+ auto &set_paths = client_data.catalog_search_path->GetSetPaths();
899
+ return Value(CatalogSearchEntry::ListToString(set_paths));
884
900
  }
885
901
 
886
902
  //===--------------------------------------------------------------------===//
@@ -8,7 +8,7 @@ namespace duckdb {
8
8
  StreamQueryResult::StreamQueryResult(StatementType statement_type, StatementProperties properties,
9
9
  shared_ptr<ClientContext> context_p, vector<LogicalType> types,
10
10
  vector<string> names)
11
- : QueryResult(QueryResultType::STREAM_RESULT, statement_type, properties, move(types), move(names),
11
+ : QueryResult(QueryResultType::STREAM_RESULT, statement_type, move(properties), move(types), move(names),
12
12
  context_p->GetClientProperties()),
13
13
  context(move(context_p)) {
14
14
  D_ASSERT(context);
@@ -29,13 +29,19 @@ bool ColumnRefExpression::IsQualified() const {
29
29
  }
30
30
 
31
31
  const string &ColumnRefExpression::GetColumnName() const {
32
- D_ASSERT(column_names.size() <= 3);
32
+ D_ASSERT(column_names.size() <= 4);
33
33
  return column_names.back();
34
34
  }
35
35
 
36
36
  const string &ColumnRefExpression::GetTableName() const {
37
- D_ASSERT(column_names.size() >= 2 && column_names.size() <= 3);
38
- return column_names.size() == 3 ? column_names[1] : column_names[0];
37
+ D_ASSERT(column_names.size() >= 2 && column_names.size() <= 4);
38
+ if (column_names.size() == 4) {
39
+ return column_names[2];
40
+ }
41
+ if (column_names.size() == 3) {
42
+ return column_names[1];
43
+ }
44
+ return column_names[0];
39
45
  }
40
46
 
41
47
  string ColumnRefExpression::GetName() const {
@@ -8,13 +8,14 @@
8
8
 
9
9
  namespace duckdb {
10
10
 
11
- FunctionExpression::FunctionExpression(string schema, const string &function_name,
11
+ FunctionExpression::FunctionExpression(string catalog, string schema, const string &function_name,
12
12
  vector<unique_ptr<ParsedExpression>> children_p,
13
13
  unique_ptr<ParsedExpression> filter, unique_ptr<OrderModifier> order_bys_p,
14
14
  bool distinct, bool is_operator, bool export_state_p)
15
- : ParsedExpression(ExpressionType::FUNCTION, ExpressionClass::FUNCTION), schema(std::move(schema)),
16
- function_name(StringUtil::Lower(function_name)), is_operator(is_operator), children(move(children_p)),
17
- distinct(distinct), filter(move(filter)), order_bys(move(order_bys_p)), export_state(export_state_p) {
15
+ : ParsedExpression(ExpressionType::FUNCTION, ExpressionClass::FUNCTION), catalog(move(catalog)),
16
+ schema(std::move(schema)), function_name(StringUtil::Lower(function_name)), is_operator(is_operator),
17
+ children(move(children_p)), distinct(distinct), filter(move(filter)), order_bys(move(order_bys_p)),
18
+ export_state(export_state_p) {
18
19
  D_ASSERT(!function_name.empty());
19
20
  if (!order_bys) {
20
21
  order_bys = make_unique<OrderModifier>();
@@ -24,8 +25,8 @@ FunctionExpression::FunctionExpression(string schema, const string &function_nam
24
25
  FunctionExpression::FunctionExpression(const string &function_name, vector<unique_ptr<ParsedExpression>> children_p,
25
26
  unique_ptr<ParsedExpression> filter, unique_ptr<OrderModifier> order_bys,
26
27
  bool distinct, bool is_operator, bool export_state_p)
27
- : FunctionExpression(INVALID_SCHEMA, function_name, move(children_p), move(filter), move(order_bys), distinct,
28
- is_operator, export_state_p) {
28
+ : FunctionExpression(INVALID_CATALOG, INVALID_SCHEMA, function_name, move(children_p), move(filter),
29
+ move(order_bys), distinct, is_operator, export_state_p) {
29
30
  }
30
31
 
31
32
  string FunctionExpression::ToString() const {
@@ -34,7 +35,8 @@ string FunctionExpression::ToString() const {
34
35
  }
35
36
 
36
37
  bool FunctionExpression::Equals(const FunctionExpression *a, const FunctionExpression *b) {
37
- if (a->schema != b->schema || a->function_name != b->function_name || b->distinct != a->distinct) {
38
+ if (a->catalog != b->catalog || a->schema != b->schema || a->function_name != b->function_name ||
39
+ b->distinct != a->distinct) {
38
40
  return false;
39
41
  }
40
42
  if (b->children.size() != a->children.size()) {
@@ -80,9 +82,8 @@ unique_ptr<ParsedExpression> FunctionExpression::Copy() const {
80
82
  order_copy.reset(static_cast<OrderModifier *>(order_bys->Copy().release()));
81
83
  }
82
84
 
83
- auto copy = make_unique<FunctionExpression>(function_name, move(copy_children), move(filter_copy), move(order_copy),
84
- distinct, is_operator, export_state);
85
- copy->schema = schema;
85
+ auto copy = make_unique<FunctionExpression>(catalog, schema, function_name, move(copy_children), move(filter_copy),
86
+ move(order_copy), distinct, is_operator, export_state);
86
87
  copy->CopyProperties(*this);
87
88
  return move(copy);
88
89
  }
@@ -96,6 +97,7 @@ void FunctionExpression::Serialize(FieldWriter &writer) const {
96
97
  writer.WriteField<bool>(distinct);
97
98
  writer.WriteField<bool>(is_operator);
98
99
  writer.WriteField<bool>(export_state);
100
+ writer.WriteString(catalog);
99
101
  }
100
102
 
101
103
  unique_ptr<ParsedExpression> FunctionExpression::Deserialize(ExpressionType type, FieldReader &reader) {
@@ -107,11 +109,11 @@ unique_ptr<ParsedExpression> FunctionExpression::Deserialize(ExpressionType type
107
109
  auto distinct = reader.ReadRequired<bool>();
108
110
  auto is_operator = reader.ReadRequired<bool>();
109
111
  auto export_state = reader.ReadField<bool>(false);
112
+ auto catalog = reader.ReadField<string>(INVALID_CATALOG);
110
113
 
111
114
  unique_ptr<FunctionExpression> function;
112
- function = make_unique<FunctionExpression>(function_name, move(children), move(filter), move(order_bys), distinct,
113
- is_operator, export_state);
114
- function->schema = schema;
115
+ function = make_unique<FunctionExpression>(catalog, schema, function_name, move(children), move(filter),
116
+ move(order_bys), distinct, is_operator, export_state);
115
117
  return move(function);
116
118
  }
117
119
 
@@ -6,8 +6,8 @@
6
6
 
7
7
  namespace duckdb {
8
8
 
9
- WindowExpression::WindowExpression(ExpressionType type, string schema, const string &function_name)
10
- : ParsedExpression(type, ExpressionClass::WINDOW), schema(move(schema)),
9
+ WindowExpression::WindowExpression(ExpressionType type, string catalog_name, string schema, const string &function_name)
10
+ : ParsedExpression(type, ExpressionClass::WINDOW), catalog(move(catalog_name)), schema(move(schema)),
11
11
  function_name(StringUtil::Lower(function_name)), ignore_nulls(false) {
12
12
  switch (type) {
13
13
  case ExpressionType::WINDOW_AGGREGATE:
@@ -86,7 +86,7 @@ bool WindowExpression::Equals(const WindowExpression *a, const WindowExpression
86
86
  }
87
87
 
88
88
  unique_ptr<ParsedExpression> WindowExpression::Copy() const {
89
- auto new_window = make_unique<WindowExpression>(type, schema, function_name);
89
+ auto new_window = make_unique<WindowExpression>(type, catalog, schema, function_name);
90
90
  new_window->CopyProperties(*this);
91
91
 
92
92
  for (auto &child : children) {
@@ -136,12 +136,13 @@ void WindowExpression::Serialize(FieldWriter &writer) const {
136
136
  writer.WriteOptional(default_expr);
137
137
  writer.WriteField<bool>(ignore_nulls);
138
138
  writer.WriteOptional(filter_expr);
139
+ writer.WriteString(catalog);
139
140
  }
140
141
 
141
142
  unique_ptr<ParsedExpression> WindowExpression::Deserialize(ExpressionType type, FieldReader &reader) {
142
143
  auto function_name = reader.ReadRequired<string>();
143
144
  auto schema = reader.ReadRequired<string>();
144
- auto expr = make_unique<WindowExpression>(type, schema, function_name);
145
+ auto expr = make_unique<WindowExpression>(type, INVALID_CATALOG, move(schema), function_name);
145
146
  expr->children = reader.ReadRequiredSerializableList<ParsedExpression>();
146
147
  expr->partitions = reader.ReadRequiredSerializableList<ParsedExpression>();
147
148
 
@@ -159,6 +160,7 @@ unique_ptr<ParsedExpression> WindowExpression::Deserialize(ExpressionType type,
159
160
  expr->default_expr = reader.ReadOptional<ParsedExpression>(nullptr);
160
161
  expr->ignore_nulls = reader.ReadRequired<bool>();
161
162
  expr->filter_expr = reader.ReadOptional<ParsedExpression>(nullptr);
163
+ expr->catalog = reader.ReadField<string>(INVALID_CATALOG);
162
164
  return move(expr);
163
165
  }
164
166
 
@@ -8,8 +8,9 @@ namespace duckdb {
8
8
  //===--------------------------------------------------------------------===//
9
9
  // AlterFunctionInfo
10
10
  //===--------------------------------------------------------------------===//
11
- AlterFunctionInfo::AlterFunctionInfo(AlterFunctionType type, string schema_p, string table_p, bool if_exists)
12
- : AlterInfo(AlterType::ALTER_FUNCTION, move(move(schema_p)), move(table_p), if_exists), alter_function_type(type) {
11
+ AlterFunctionInfo::AlterFunctionInfo(AlterFunctionType type, AlterEntryData data)
12
+ : AlterInfo(AlterType::ALTER_FUNCTION, move(data.catalog), move(data.schema), move(data.name), data.if_exists),
13
+ alter_function_type(type) {
13
14
  }
14
15
  AlterFunctionInfo::~AlterFunctionInfo() {
15
16
  }
@@ -20,6 +21,7 @@ CatalogType AlterFunctionInfo::GetCatalogType() const {
20
21
 
21
22
  void AlterFunctionInfo::Serialize(FieldWriter &writer) const {
22
23
  writer.WriteField<AlterFunctionType>(alter_function_type);
24
+ writer.WriteString(catalog);
23
25
  writer.WriteString(schema);
24
26
  writer.WriteString(name);
25
27
  writer.WriteField(if_exists);
@@ -37,17 +39,15 @@ unique_ptr<AlterInfo> AlterFunctionInfo::Deserialize(FieldReader &reader) {
37
39
  //===--------------------------------------------------------------------===//
38
40
  // AddFunctionOverloadInfo
39
41
  //===--------------------------------------------------------------------===//
40
- AddFunctionOverloadInfo::AddFunctionOverloadInfo(string schema_p, string name_p, bool if_exists_p,
41
- ScalarFunctionSet new_overloads_p)
42
- : AlterFunctionInfo(AlterFunctionType::ADD_FUNCTION_OVERLOADS, move(schema_p), move(name_p), if_exists_p),
43
- new_overloads(move(new_overloads_p)) {
42
+ AddFunctionOverloadInfo::AddFunctionOverloadInfo(AlterEntryData data, ScalarFunctionSet new_overloads_p)
43
+ : AlterFunctionInfo(AlterFunctionType::ADD_FUNCTION_OVERLOADS, move(data)), new_overloads(move(new_overloads_p)) {
44
44
  this->allow_internal = true;
45
45
  }
46
46
  AddFunctionOverloadInfo::~AddFunctionOverloadInfo() {
47
47
  }
48
48
 
49
49
  unique_ptr<AlterInfo> AddFunctionOverloadInfo::Copy() const {
50
- return make_unique_base<AlterInfo, AddFunctionOverloadInfo>(schema, name, if_exists, new_overloads);
50
+ return make_unique_base<AlterInfo, AddFunctionOverloadInfo>(GetAlterEntryData(), new_overloads);
51
51
  }
52
52
 
53
53
  } // namespace duckdb
@@ -6,8 +6,9 @@
6
6
 
7
7
  namespace duckdb {
8
8
 
9
- AlterInfo::AlterInfo(AlterType type, string schema_p, string name_p, bool if_exists)
10
- : type(type), if_exists(if_exists), schema(move(schema_p)), name(move(name_p)), allow_internal(false) {
9
+ AlterInfo::AlterInfo(AlterType type, string catalog_p, string schema_p, string name_p, bool if_exists)
10
+ : type(type), if_exists(if_exists), catalog(move(catalog_p)), schema(move(schema_p)), name(move(name_p)),
11
+ allow_internal(false) {
11
12
  }
12
13
 
13
14
  AlterInfo::~AlterInfo() {
@@ -43,4 +44,13 @@ unique_ptr<AlterInfo> AlterInfo::Deserialize(Deserializer &source) {
43
44
  return result;
44
45
  }
45
46
 
47
+ AlterEntryData AlterInfo::GetAlterEntryData() const {
48
+ AlterEntryData data;
49
+ data.catalog = catalog;
50
+ data.schema = schema;
51
+ data.name = name;
52
+ data.if_exists = if_exists;
53
+ return data;
54
+ }
55
+
46
56
  } // namespace duckdb