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
@@ -13,6 +13,7 @@
13
13
  #include "duckdb/planner/table_filter.hpp"
14
14
  #include "duckdb/storage/checkpoint/table_data_writer.hpp"
15
15
  #include "duckdb/storage/storage_manager.hpp"
16
+ #include "duckdb/storage/table_storage_info.hpp"
16
17
  #include "duckdb/storage/table/persistent_table_data.hpp"
17
18
  #include "duckdb/storage/table/row_group.hpp"
18
19
  #include "duckdb/storage/table/standard_column_data.hpp"
@@ -1201,13 +1202,14 @@ void DataTable::WALAddIndex(ClientContext &context, unique_ptr<Index> index,
1201
1202
  // intermediate holds scanned chunks of the underlying data to create the index
1202
1203
  DataChunk intermediate;
1203
1204
  vector<LogicalType> intermediate_types;
1204
- auto column_ids = index->column_ids;
1205
- column_ids.push_back(COLUMN_IDENTIFIER_ROW_ID);
1206
- for (auto &id : index->column_ids) {
1207
- auto &col = column_definitions[id];
1208
- intermediate_types.push_back(col.Type());
1205
+ vector<column_t> column_ids;
1206
+ for (auto &it : column_definitions) {
1207
+ intermediate_types.push_back(it.Type());
1208
+ column_ids.push_back(it.Oid());
1209
1209
  }
1210
+ column_ids.push_back(COLUMN_IDENTIFIER_ROW_ID);
1210
1211
  intermediate_types.emplace_back(LogicalType::ROW_TYPE);
1212
+
1211
1213
  intermediate.Initialize(allocator, intermediate_types);
1212
1214
 
1213
1215
  // holds the result of executing the index expression on the intermediate chunks
@@ -1299,10 +1301,10 @@ void DataTable::CommitDropTable() {
1299
1301
  }
1300
1302
 
1301
1303
  //===--------------------------------------------------------------------===//
1302
- // GetStorageInfo
1304
+ // GetColumnSegmentInfo
1303
1305
  //===--------------------------------------------------------------------===//
1304
- void DataTable::GetStorageInfo(TableStorageInfo &result) {
1305
- row_groups->GetStorageInfo(result);
1306
+ vector<ColumnSegmentInfo> DataTable::GetColumnSegmentInfo() {
1307
+ return row_groups->GetColumnSegmentInfo();
1306
1308
  }
1307
1309
 
1308
1310
  } // namespace duckdb
@@ -59,6 +59,19 @@ bool Index::MergeIndexes(Index &other_index) {
59
59
  }
60
60
  }
61
61
 
62
+ string Index::VerifyAndToString(const bool only_verify) {
63
+
64
+ IndexLock state;
65
+ InitializeLock(state);
66
+
67
+ switch (this->type) {
68
+ case IndexType::ART:
69
+ return Cast<ART>().VerifyAndToString(state, only_verify);
70
+ default:
71
+ throw InternalException("Unimplemented index type for VerifyAndToString");
72
+ }
73
+ }
74
+
62
75
  void Index::Vacuum() {
63
76
 
64
77
  IndexLock state;
@@ -12,6 +12,7 @@
12
12
  #include "duckdb/transaction/transaction_manager.hpp"
13
13
  #include "duckdb/common/serializer/buffered_file_reader.hpp"
14
14
  #include "duckdb/main/attached_database.hpp"
15
+ #include "duckdb/main/database_manager.hpp"
15
16
 
16
17
  namespace duckdb {
17
18
 
@@ -98,6 +99,11 @@ void SingleFileStorageManager::LoadDatabase() {
98
99
  auto &fs = FileSystem::Get(db);
99
100
  auto &config = DBConfig::Get(db);
100
101
  bool truncate_wal = false;
102
+ if (!config.options.enable_external_access) {
103
+ if (!db.IsInitialDatabase()) {
104
+ throw PermissionException("Attaching on-disk databases is disabled through configuration");
105
+ }
106
+ }
101
107
 
102
108
  StorageManagerOptions options;
103
109
  options.read_only = read_only;
@@ -488,7 +488,8 @@ shared_ptr<ColumnData> ColumnData::Deserialize(BlockManager &block_manager, Data
488
488
  return entry;
489
489
  }
490
490
 
491
- void ColumnData::GetStorageInfo(idx_t row_group_index, vector<idx_t> col_path, TableStorageInfo &result) {
491
+ void ColumnData::GetColumnSegmentInfo(idx_t row_group_index, vector<idx_t> col_path,
492
+ vector<ColumnSegmentInfo> &result) {
492
493
  D_ASSERT(!col_path.empty());
493
494
 
494
495
  // convert the column path to a string
@@ -515,7 +516,10 @@ void ColumnData::GetStorageInfo(idx_t row_group_index, vector<idx_t> col_path, T
515
516
  column_info.segment_count = segment->count;
516
517
  column_info.compression_type = CompressionTypeToString(segment->function.get().type);
517
518
  column_info.segment_stats = segment->stats.statistics.ToString();
518
- column_info.has_updates = updates ? true : false;
519
+ {
520
+ lock_guard<mutex> ulock(update_lock);
521
+ column_info.has_updates = updates ? true : false;
522
+ }
519
523
  // persistent
520
524
  // block_id
521
525
  // block_offset
@@ -526,7 +530,7 @@ void ColumnData::GetStorageInfo(idx_t row_group_index, vector<idx_t> col_path, T
526
530
  } else {
527
531
  column_info.persistent = false;
528
532
  }
529
- result.column_segments.push_back(std::move(column_info));
533
+ result.emplace_back(column_info);
530
534
 
531
535
  segment_idx++;
532
536
  segment = (ColumnSegment *)data.GetNextSegment(segment);
@@ -349,12 +349,13 @@ void ListColumnData::DeserializeColumn(Deserializer &source) {
349
349
  child_column->DeserializeColumn(source);
350
350
  }
351
351
 
352
- void ListColumnData::GetStorageInfo(idx_t row_group_index, vector<idx_t> col_path, TableStorageInfo &result) {
353
- ColumnData::GetStorageInfo(row_group_index, col_path, result);
352
+ void ListColumnData::GetColumnSegmentInfo(duckdb::idx_t row_group_index, vector<duckdb::idx_t> col_path,
353
+ vector<duckdb::ColumnSegmentInfo> &result) {
354
+ ColumnData::GetColumnSegmentInfo(row_group_index, col_path, result);
354
355
  col_path.push_back(0);
355
- validity.GetStorageInfo(row_group_index, col_path, result);
356
+ validity.GetColumnSegmentInfo(row_group_index, col_path, result);
356
357
  col_path.back() = 1;
357
- child_column->GetStorageInfo(row_group_index, col_path, result);
358
+ child_column->GetColumnSegmentInfo(row_group_index, col_path, result);
358
359
  }
359
360
 
360
361
  } // namespace duckdb
@@ -6,6 +6,7 @@
6
6
  #include "duckdb/storage/table/column_data.hpp"
7
7
  #include "duckdb/storage/table/column_checkpoint_state.hpp"
8
8
  #include "duckdb/storage/table/update_segment.hpp"
9
+ #include "duckdb/storage/table_storage_info.hpp"
9
10
  #include "duckdb/common/chrono.hpp"
10
11
  #include "duckdb/planner/table_filter.hpp"
11
12
  #include "duckdb/execution/expression_executor.hpp"
@@ -912,12 +913,12 @@ RowGroupPointer RowGroup::Deserialize(Deserializer &main_source, const vector<Lo
912
913
  }
913
914
 
914
915
  //===--------------------------------------------------------------------===//
915
- // GetStorageInfo
916
+ // GetColumnSegmentInfo
916
917
  //===--------------------------------------------------------------------===//
917
- void RowGroup::GetStorageInfo(idx_t row_group_index, TableStorageInfo &result) {
918
+ void RowGroup::GetColumnSegmentInfo(idx_t row_group_index, vector<ColumnSegmentInfo> &result) {
918
919
  for (idx_t col_idx = 0; col_idx < GetColumnCount(); col_idx++) {
919
920
  auto &col_data = GetColumn(col_idx);
920
- col_data.GetStorageInfo(row_group_index, {col_idx}, result);
921
+ col_data.GetColumnSegmentInfo(row_group_index, {col_idx}, result);
921
922
  }
922
923
  }
923
924
 
@@ -9,6 +9,7 @@
9
9
  #include "duckdb/storage/meta_block_reader.hpp"
10
10
  #include "duckdb/storage/table/append_state.hpp"
11
11
  #include "duckdb/storage/table/scan_state.hpp"
12
+ #include "duckdb/storage/table_storage_info.hpp"
12
13
 
13
14
  namespace duckdb {
14
15
 
@@ -622,12 +623,14 @@ void RowGroupCollection::CommitDropTable() {
622
623
  }
623
624
 
624
625
  //===--------------------------------------------------------------------===//
625
- // GetStorageInfo
626
+ // GetColumnSegmentInfo
626
627
  //===--------------------------------------------------------------------===//
627
- void RowGroupCollection::GetStorageInfo(TableStorageInfo &result) {
628
+ vector<ColumnSegmentInfo> RowGroupCollection::GetColumnSegmentInfo() {
629
+ vector<ColumnSegmentInfo> result;
628
630
  for (auto &row_group : row_groups->Segments()) {
629
- row_group.GetStorageInfo(row_group.index, result);
631
+ row_group.GetColumnSegmentInfo(row_group.index, result);
630
632
  }
633
+ return result;
631
634
  }
632
635
 
633
636
  //===--------------------------------------------------------------------===//
@@ -207,10 +207,11 @@ void StandardColumnData::DeserializeColumn(Deserializer &source) {
207
207
  validity.DeserializeColumn(source);
208
208
  }
209
209
 
210
- void StandardColumnData::GetStorageInfo(idx_t row_group_index, vector<idx_t> col_path, TableStorageInfo &result) {
211
- ColumnData::GetStorageInfo(row_group_index, col_path, result);
210
+ void StandardColumnData::GetColumnSegmentInfo(duckdb::idx_t row_group_index, vector<duckdb::idx_t> col_path,
211
+ vector<duckdb::ColumnSegmentInfo> &result) {
212
+ ColumnData::GetColumnSegmentInfo(row_group_index, col_path, result);
212
213
  col_path.push_back(0);
213
- validity.GetStorageInfo(row_group_index, std::move(col_path), result);
214
+ validity.GetColumnSegmentInfo(row_group_index, std::move(col_path), result);
214
215
  }
215
216
 
216
217
  void StandardColumnData::Verify(RowGroup &parent) {
@@ -273,12 +273,13 @@ void StructColumnData::DeserializeColumn(Deserializer &source) {
273
273
  this->count = validity.count;
274
274
  }
275
275
 
276
- void StructColumnData::GetStorageInfo(idx_t row_group_index, vector<idx_t> col_path, TableStorageInfo &result) {
276
+ void StructColumnData::GetColumnSegmentInfo(duckdb::idx_t row_group_index, vector<duckdb::idx_t> col_path,
277
+ vector<duckdb::ColumnSegmentInfo> &result) {
277
278
  col_path.push_back(0);
278
- validity.GetStorageInfo(row_group_index, col_path, result);
279
+ validity.GetColumnSegmentInfo(row_group_index, col_path, result);
279
280
  for (idx_t i = 0; i < sub_columns.size(); i++) {
280
281
  col_path.back() = i + 1;
281
- sub_columns[i]->GetStorageInfo(row_group_index, col_path, result);
282
+ sub_columns[i]->GetColumnSegmentInfo(row_group_index, col_path, result);
282
283
  }
283
284
  }
284
285
 
@@ -195,15 +195,16 @@ void ReplayState::ReplayEntry(WALType entry_type) {
195
195
  // Replay Table
196
196
  //===--------------------------------------------------------------------===//
197
197
  void ReplayState::ReplayCreateTable() {
198
-
199
198
  auto info = TableCatalogEntry::Deserialize(source, context);
200
199
  if (deserialize_only) {
201
200
  return;
202
201
  }
203
202
 
204
203
  // bind the constraints to the table again
204
+
205
205
  auto binder = Binder::CreateBinder(context);
206
- auto bound_info = binder->BindCreateTableInfo(std::move(info));
206
+ auto &schema = catalog.GetSchema(context, info->schema);
207
+ auto bound_info = binder->BindCreateTableInfo(std::move(info), schema);
207
208
 
208
209
  catalog.CreateTable(context, *bound_info);
209
210
  }
@@ -282,9 +283,7 @@ void ReplayState::ReplayDropSchema() {
282
283
  //===--------------------------------------------------------------------===//
283
284
  void ReplayState::ReplayCreateType() {
284
285
  auto info = TypeCatalogEntry::Deserialize(source);
285
- if (Catalog::TypeExists(context, info->catalog, info->schema, info->name)) {
286
- return;
287
- }
286
+ info->on_conflict = OnCreateConflict::IGNORE_ON_CONFLICT;
288
287
  catalog.CreateType(context, *info);
289
288
  }
290
289
 
@@ -426,7 +426,6 @@ typedef enum PGNodeTag {
426
426
  T_PGImportStmt,
427
427
  T_PGAttachStmt,
428
428
  T_PGDetachStmt,
429
- T_PGCreateDatabaseStmt,
430
429
  T_PGUseStmt,
431
430
 
432
431
  /*
@@ -2119,20 +2119,6 @@ typedef struct PGDetachStmt
2119
2119
  bool missing_ok;
2120
2120
  } PGDetachStmt;
2121
2121
 
2122
-
2123
-
2124
- /* ----------------------
2125
- * CREATE DATABASE Statement
2126
- * ----------------------
2127
- */
2128
- typedef struct PGCreateDatabaseStmt
2129
- {
2130
- PGNodeTag type;
2131
- PGRangeVar *name; /* The name of the created database */
2132
- char *extension; /* The name of the extension which will create the database */
2133
- char *path; /* The file path of the to-be-created database */
2134
- } PGCreateDatabaseStmt;
2135
-
2136
2122
  /* ----------------------
2137
2123
  * Use Statement
2138
2124
  * ----------------------