duckdb 0.8.2-dev2133.0 → 0.8.2-dev2208.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 (93) hide show
  1. package/package.json +1 -1
  2. package/src/duckdb/extension/json/json_functions.cpp +2 -1
  3. package/src/duckdb/extension/parquet/parquet_extension.cpp +2 -1
  4. package/src/duckdb/src/catalog/catalog.cpp +2 -6
  5. package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +1 -4
  6. package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +0 -4
  7. package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +7 -26
  8. package/src/duckdb/src/catalog/catalog_set.cpp +0 -63
  9. package/src/duckdb/src/catalog/dependency_manager.cpp +0 -36
  10. package/src/duckdb/src/common/extra_type_info.cpp +24 -46
  11. package/src/duckdb/src/common/field_writer.cpp +0 -1
  12. package/src/duckdb/src/common/file_system.cpp +6 -6
  13. package/src/duckdb/src/common/filename_pattern.cpp +1 -1
  14. package/src/duckdb/src/common/gzip_file_system.cpp +7 -12
  15. package/src/duckdb/src/common/multi_file_reader.cpp +8 -5
  16. package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +0 -9
  17. package/src/duckdb/src/common/types.cpp +12 -56
  18. package/src/duckdb/src/common/virtual_file_system.cpp +4 -0
  19. package/src/duckdb/src/core_functions/scalar/union/union_tag.cpp +1 -1
  20. package/src/duckdb/src/execution/column_binding_resolver.cpp +3 -7
  21. package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +1 -1
  22. package/src/duckdb/src/execution/operator/scan/physical_table_scan.cpp +0 -10
  23. package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +2 -1
  24. package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +2 -6
  25. package/src/duckdb/src/execution/physical_plan/plan_asof_join.cpp +1 -2
  26. package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +14 -1
  27. package/src/duckdb/src/execution/physical_plan/plan_create_index.cpp +3 -17
  28. package/src/duckdb/src/execution/physical_plan/plan_delim_join.cpp +2 -5
  29. package/src/duckdb/src/execution/physical_plan_generator.cpp +1 -5
  30. package/src/duckdb/src/function/cast/string_cast.cpp +0 -1
  31. package/src/duckdb/src/function/scalar_function.cpp +3 -19
  32. package/src/duckdb/src/function/table/read_csv.cpp +2 -1
  33. package/src/duckdb/src/function/table/system/test_all_types.cpp +4 -4
  34. package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
  35. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +0 -2
  36. package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +1 -4
  37. package/src/duckdb/src/include/duckdb/catalog/catalog_set.hpp +0 -6
  38. package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +2 -6
  39. package/src/duckdb/src/include/duckdb/common/field_writer.hpp +0 -4
  40. package/src/duckdb/src/include/duckdb/common/file_system.hpp +8 -8
  41. package/src/duckdb/src/include/duckdb/common/filename_pattern.hpp +1 -1
  42. package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +1 -1
  43. package/src/duckdb/src/include/duckdb/common/opener_file_system.hpp +4 -0
  44. package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_reader.hpp +0 -4
  45. package/src/duckdb/src/include/duckdb/common/serializer.hpp +0 -7
  46. package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +14 -10
  47. package/src/duckdb/src/include/duckdb/common/types.hpp +5 -10
  48. package/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp +2 -0
  49. package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_table_scan.hpp +0 -4
  50. package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +3 -2
  51. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +0 -3
  52. package/src/duckdb/src/include/duckdb/main/attached_database.hpp +1 -1
  53. package/src/duckdb/src/include/duckdb/optimizer/deliminator.hpp +2 -2
  54. package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +0 -2
  55. package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +1 -2
  56. package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +2 -4
  57. package/src/duckdb/src/include/duckdb/planner/operator/logical_create_index.hpp +10 -7
  58. package/src/duckdb/src/include/duckdb/planner/operator/logical_extension_operator.hpp +5 -0
  59. package/src/duckdb/src/include/duckdb/planner/operator_extension.hpp +1 -0
  60. package/src/duckdb/src/include/duckdb/storage/meta_block_reader.hpp +0 -3
  61. package/src/duckdb/src/main/attached_database.cpp +2 -2
  62. package/src/duckdb/src/main/database.cpp +1 -1
  63. package/src/duckdb/src/main/db_instance_cache.cpp +14 -6
  64. package/src/duckdb/src/main/extension/extension_install.cpp +1 -1
  65. package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +1 -2
  66. package/src/duckdb/src/optimizer/compressed_materialization.cpp +0 -1
  67. package/src/duckdb/src/optimizer/deliminator.cpp +7 -7
  68. package/src/duckdb/src/optimizer/unnest_rewriter.cpp +3 -5
  69. package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +16 -1
  70. package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +1 -1
  71. package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +3 -3
  72. package/src/duckdb/src/planner/binder/statement/bind_create.cpp +7 -23
  73. package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +0 -24
  74. package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +3 -5
  75. package/src/duckdb/src/planner/logical_operator.cpp +1 -6
  76. package/src/duckdb/src/planner/logical_operator_visitor.cpp +3 -6
  77. package/src/duckdb/src/planner/operator/logical_comparison_join.cpp +2 -14
  78. package/src/duckdb/src/planner/operator/logical_create_index.cpp +21 -12
  79. package/src/duckdb/src/planner/operator/logical_extension_operator.cpp +24 -0
  80. package/src/duckdb/src/planner/planner.cpp +0 -1
  81. package/src/duckdb/src/storage/checkpoint_manager.cpp +1 -5
  82. package/src/duckdb/src/storage/meta_block_reader.cpp +0 -9
  83. package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +2 -0
  84. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +27 -0
  85. package/src/duckdb/src/storage/storage_info.cpp +1 -1
  86. package/src/duckdb/src/storage/wal_replay.cpp +1 -3
  87. package/src/duckdb/ub_src_planner_operator.cpp +0 -4
  88. package/src/statement.cpp +0 -2
  89. package/test/columns.test.ts +1 -2
  90. package/src/duckdb/src/include/duckdb/planner/operator/logical_asof_join.hpp +0 -27
  91. package/src/duckdb/src/include/duckdb/planner/operator/logical_delim_join.hpp +0 -32
  92. package/src/duckdb/src/planner/operator/logical_asof_join.cpp +0 -14
  93. package/src/duckdb/src/planner/operator/logical_delim_join.cpp +0 -25
@@ -70,13 +70,10 @@ void LogicalOperatorVisitor::EnumerateExpressions(LogicalOperator &op,
70
70
  case LogicalOperatorType::LOGICAL_DELIM_JOIN:
71
71
  case LogicalOperatorType::LOGICAL_DEPENDENT_JOIN:
72
72
  case LogicalOperatorType::LOGICAL_COMPARISON_JOIN: {
73
- if (op.type == LogicalOperatorType::LOGICAL_DELIM_JOIN) {
74
- auto &delim_join = op.Cast<LogicalDelimJoin>();
75
- for (auto &expr : delim_join.duplicate_eliminated_columns) {
76
- callback(&expr);
77
- }
78
- }
79
73
  auto &join = op.Cast<LogicalComparisonJoin>();
74
+ for (auto &expr : join.duplicate_eliminated_columns) {
75
+ callback(&expr);
76
+ }
80
77
  for (auto &cond : join.conditions) {
81
78
  callback(&cond.left);
82
79
  callback(&cond.right);
@@ -1,7 +1,6 @@
1
1
  #include "duckdb/common/field_writer.hpp"
2
2
  #include "duckdb/common/string_util.hpp"
3
3
  #include "duckdb/planner/operator/logical_comparison_join.hpp"
4
- #include "duckdb/planner/operator/logical_delim_join.hpp"
5
4
  #include "duckdb/planner/expression/bound_comparison_expression.hpp"
6
5
  #include "duckdb/common/enum_util.hpp"
7
6
  namespace duckdb {
@@ -26,6 +25,7 @@ void LogicalComparisonJoin::Serialize(FieldWriter &writer) const {
26
25
  LogicalJoin::Serialize(writer);
27
26
  writer.WriteRegularSerializableList(mark_types);
28
27
  writer.WriteRegularSerializableList(conditions);
28
+ writer.WriteSerializableList(duplicate_eliminated_columns);
29
29
  }
30
30
 
31
31
  void LogicalComparisonJoin::Deserialize(LogicalComparisonJoin &comparison_join, LogicalDeserializationState &state,
@@ -33,6 +33,7 @@ void LogicalComparisonJoin::Deserialize(LogicalComparisonJoin &comparison_join,
33
33
  LogicalJoin::Deserialize(comparison_join, state, reader);
34
34
  comparison_join.mark_types = reader.ReadRequiredSerializableList<LogicalType, LogicalType>();
35
35
  comparison_join.conditions = reader.ReadRequiredSerializableList<JoinCondition, JoinCondition>(state.gstate);
36
+ comparison_join.duplicate_eliminated_columns = reader.ReadRequiredSerializableList<Expression>(state.gstate);
36
37
  }
37
38
 
38
39
  unique_ptr<LogicalOperator> LogicalComparisonJoin::Deserialize(LogicalDeserializationState &state,
@@ -42,17 +43,4 @@ unique_ptr<LogicalOperator> LogicalComparisonJoin::Deserialize(LogicalDeserializ
42
43
  return std::move(result);
43
44
  }
44
45
 
45
- unique_ptr<LogicalOperator> LogicalComparisonJoin::FromDelimJoin(LogicalDelimJoin &delim_join) {
46
- auto new_join = make_uniq<LogicalComparisonJoin>(delim_join.join_type);
47
- new_join->children = std::move(delim_join.children);
48
- new_join->conditions = std::move(delim_join.conditions);
49
- new_join->types = std::move(delim_join.types);
50
- new_join->mark_types = std::move(delim_join.mark_types);
51
- new_join->mark_index = delim_join.mark_index;
52
- new_join->left_projection_map = std::move(delim_join.left_projection_map);
53
- new_join->right_projection_map = std::move(delim_join.right_projection_map);
54
- new_join->join_stats = std::move(delim_join.join_stats);
55
- return std::move(new_join);
56
- }
57
-
58
46
  } // namespace duckdb
@@ -6,11 +6,9 @@
6
6
 
7
7
  namespace duckdb {
8
8
 
9
- LogicalCreateIndex::LogicalCreateIndex(unique_ptr<FunctionData> bind_data_p, unique_ptr<CreateIndexInfo> info_p,
10
- vector<unique_ptr<Expression>> expressions_p, TableCatalogEntry &table_p,
11
- TableFunction function_p)
12
- : LogicalOperator(LogicalOperatorType::LOGICAL_CREATE_INDEX), bind_data(std::move(bind_data_p)),
13
- info(std::move(info_p)), table(table_p), function(std::move(function_p)) {
9
+ LogicalCreateIndex::LogicalCreateIndex(unique_ptr<CreateIndexInfo> info_p, vector<unique_ptr<Expression>> expressions_p,
10
+ TableCatalogEntry &table_p)
11
+ : LogicalOperator(LogicalOperatorType::LOGICAL_CREATE_INDEX), info(std::move(info_p)), table(table_p) {
14
12
 
15
13
  for (auto &expr : expressions_p) {
16
14
  this->unbound_expressions.push_back(expr->Copy());
@@ -22,12 +20,21 @@ LogicalCreateIndex::LogicalCreateIndex(unique_ptr<FunctionData> bind_data_p, uni
22
20
  }
23
21
  }
24
22
 
23
+ LogicalCreateIndex::LogicalCreateIndex(ClientContext &context, unique_ptr<CreateInfo> info_p,
24
+ vector<unique_ptr<Expression>> expressions_p)
25
+ : LogicalOperator(LogicalOperatorType::LOGICAL_CREATE_INDEX),
26
+ info(unique_ptr_cast<CreateInfo, CreateIndexInfo>(std::move(info_p))), table(BindTable(context, *info)) {
27
+ for (auto &expr : expressions_p) {
28
+ this->unbound_expressions.push_back(expr->Copy());
29
+ }
30
+ this->expressions = std::move(expressions_p);
31
+ }
32
+
25
33
  void LogicalCreateIndex::Serialize(FieldWriter &writer) const {
26
34
  writer.WriteOptional(info);
27
35
  writer.WriteString(table.catalog.GetName());
28
36
  writer.WriteString(table.schema.name);
29
37
  writer.WriteString(table.name);
30
- FunctionSerializer::SerializeBase<TableFunction>(writer, function, bind_data.get());
31
38
  writer.WriteSerializableList(unbound_expressions);
32
39
  }
33
40
 
@@ -38,10 +45,6 @@ unique_ptr<LogicalOperator> LogicalCreateIndex::Deserialize(LogicalDeserializati
38
45
  auto catalog = reader.ReadRequired<string>();
39
46
  auto schema = reader.ReadRequired<string>();
40
47
  auto table_name = reader.ReadRequired<string>();
41
- unique_ptr<FunctionData> bind_data;
42
- bool has_deserialize;
43
- auto function = FunctionSerializer::DeserializeBaseInternal<TableFunction, TableFunctionCatalogEntry>(
44
- reader, state.gstate, CatalogType::TABLE_FUNCTION_ENTRY, bind_data, has_deserialize);
45
48
  auto unbound_expressions = reader.ReadRequiredSerializableList<Expression>(state.gstate);
46
49
  if (info->type != CatalogType::INDEX_ENTRY) {
47
50
  throw InternalException("Unexpected type: '%s', expected '%s'", CatalogTypeToString(info->type),
@@ -49,12 +52,18 @@ unique_ptr<LogicalOperator> LogicalCreateIndex::Deserialize(LogicalDeserializati
49
52
  }
50
53
  auto index_info = unique_ptr_cast<CreateInfo, CreateIndexInfo>(std::move(info));
51
54
  auto &table = Catalog::GetEntry<TableCatalogEntry>(context, catalog, schema, table_name);
52
- return make_uniq<LogicalCreateIndex>(std::move(bind_data), std::move(index_info), std::move(unbound_expressions),
53
- table, std::move(function));
55
+ return make_uniq<LogicalCreateIndex>(std::move(index_info), std::move(unbound_expressions), table);
54
56
  }
55
57
 
56
58
  void LogicalCreateIndex::ResolveTypes() {
57
59
  types.emplace_back(LogicalType::BIGINT);
58
60
  }
59
61
 
62
+ TableCatalogEntry &LogicalCreateIndex::BindTable(ClientContext &context, CreateIndexInfo &info) {
63
+ auto &catalog = info.catalog;
64
+ auto &schema = info.schema;
65
+ auto &table_name = info.table;
66
+ return Catalog::GetEntry<TableCatalogEntry>(context, catalog, schema, table_name);
67
+ }
68
+
60
69
  } // namespace duckdb
@@ -1,5 +1,7 @@
1
1
  #include "duckdb/planner/operator/logical_extension_operator.hpp"
2
2
  #include "duckdb/main/config.hpp"
3
+ #include "duckdb/common/serializer/format_serializer.hpp"
4
+ #include "duckdb/common/serializer/format_deserializer.hpp"
3
5
 
4
6
  namespace duckdb {
5
7
  unique_ptr<LogicalExtensionOperator> LogicalExtensionOperator::Deserialize(LogicalDeserializationState &state,
@@ -15,4 +17,26 @@ unique_ptr<LogicalExtensionOperator> LogicalExtensionOperator::Deserialize(Logic
15
17
 
16
18
  throw SerializationException("No serialization method exists for extension: " + extension_name);
17
19
  }
20
+
21
+ void LogicalExtensionOperator::FormatSerialize(FormatSerializer &serializer) const {
22
+ LogicalOperator::FormatSerialize(serializer);
23
+ serializer.WriteProperty("extension_name", GetExtensionName());
24
+ }
25
+
26
+ unique_ptr<LogicalOperator> LogicalExtensionOperator::FormatDeserialize(FormatDeserializer &deserializer) {
27
+ auto &config = DBConfig::GetConfig(deserializer.Get<ClientContext &>());
28
+ auto extension_name = deserializer.ReadProperty<string>("extension_name");
29
+ for (auto &extension : config.operator_extensions) {
30
+ if (extension->GetName() == extension_name) {
31
+ return extension->FormatDeserialize(deserializer);
32
+ }
33
+ }
34
+ throw SerializationException("No deserialization method exists for extension: " + extension_name);
35
+ }
36
+
37
+ string LogicalExtensionOperator::GetExtensionName() const {
38
+ throw SerializationException("LogicalExtensionOperator::GetExtensionName not implemented which is required for "
39
+ "serializing extension operators");
40
+ }
41
+
18
42
  } // namespace duckdb
@@ -176,7 +176,6 @@ void Planner::VerifyPlan(ClientContext &context, unique_ptr<LogicalOperator> &op
176
176
  }
177
177
 
178
178
  BufferedSerializer serializer;
179
- serializer.is_query_plan = true;
180
179
  try {
181
180
  op->Serialize(serializer);
182
181
  } catch (NotImplementedException &ex) {
@@ -131,7 +131,6 @@ void SingleFileCheckpointReader::LoadFromStorage() {
131
131
  con.BeginTransaction();
132
132
  // create the MetaBlockReader to read from the storage
133
133
  MetaBlockReader reader(block_manager, meta_block);
134
- reader.SetCatalog(catalog.GetAttached().GetCatalog());
135
134
  reader.SetContext(*con.context);
136
135
  LoadCheckpoint(*con.context, reader);
137
136
  con.Commit();
@@ -414,10 +413,7 @@ void CheckpointWriter::WriteType(TypeCatalogEntry &type) {
414
413
 
415
414
  void CheckpointReader::ReadType(ClientContext &context, MetaBlockReader &reader) {
416
415
  auto info = TypeCatalogEntry::Deserialize(reader);
417
- auto &catalog_entry = catalog.CreateType(context, *info)->Cast<TypeCatalogEntry>();
418
- if (info->type.id() == LogicalTypeId::ENUM) {
419
- EnumType::SetCatalog(info->type, &catalog_entry);
420
- }
416
+ catalog.CreateType(context, info->Cast<CreateTypeInfo>());
421
417
  }
422
418
 
423
419
  //===--------------------------------------------------------------------===//
@@ -43,10 +43,6 @@ ClientContext &MetaBlockReader::GetContext() {
43
43
  return *context;
44
44
  }
45
45
 
46
- optional_ptr<Catalog> MetaBlockReader::GetCatalog() {
47
- return catalog;
48
- }
49
-
50
46
  void MetaBlockReader::ReadNewBlock(block_id_t id) {
51
47
  auto &buffer_manager = block_manager.buffer_manager;
52
48
 
@@ -65,11 +61,6 @@ void MetaBlockReader::ReadNewBlock(block_id_t id) {
65
61
  offset = sizeof(block_id_t);
66
62
  }
67
63
 
68
- void MetaBlockReader::SetCatalog(Catalog &catalog_p) {
69
- D_ASSERT(!catalog);
70
- catalog = &catalog_p;
71
- }
72
-
73
64
  void MetaBlockReader::SetContext(ClientContext &context_p) {
74
65
  D_ASSERT(!context);
75
66
  context = &context_p;
@@ -75,6 +75,7 @@ unique_ptr<CreateInfo> CreateInfo::FormatDeserialize(FormatDeserializer &deseria
75
75
  void CreateIndexInfo::FormatSerialize(FormatSerializer &serializer) const {
76
76
  CreateInfo::FormatSerialize(serializer);
77
77
  serializer.WriteProperty("name", index_name);
78
+ serializer.WriteProperty("table", table);
78
79
  serializer.WriteProperty("index_type", index_type);
79
80
  serializer.WriteProperty("constraint_type", constraint_type);
80
81
  serializer.WriteProperty("parsed_expressions", parsed_expressions);
@@ -85,6 +86,7 @@ void CreateIndexInfo::FormatSerialize(FormatSerializer &serializer) const {
85
86
  unique_ptr<CreateInfo> CreateIndexInfo::FormatDeserialize(FormatDeserializer &deserializer) {
86
87
  auto result = duckdb::unique_ptr<CreateIndexInfo>(new CreateIndexInfo());
87
88
  deserializer.ReadProperty("name", result->index_name);
89
+ deserializer.ReadProperty("table", result->table);
88
90
  deserializer.ReadProperty("index_type", result->index_type);
89
91
  deserializer.ReadProperty("constraint_type", result->constraint_type);
90
92
  deserializer.ReadProperty("parsed_expressions", result->parsed_expressions);
@@ -31,6 +31,9 @@ unique_ptr<LogicalOperator> LogicalOperator::FormatDeserialize(FormatDeserialize
31
31
  case LogicalOperatorType::LOGICAL_ANY_JOIN:
32
32
  result = LogicalAnyJoin::FormatDeserialize(deserializer);
33
33
  break;
34
+ case LogicalOperatorType::LOGICAL_ASOF_JOIN:
35
+ result = LogicalComparisonJoin::FormatDeserialize(deserializer);
36
+ break;
34
37
  case LogicalOperatorType::LOGICAL_ATTACH:
35
38
  result = LogicalSimple::FormatDeserialize(deserializer);
36
39
  break;
@@ -43,6 +46,9 @@ unique_ptr<LogicalOperator> LogicalOperator::FormatDeserialize(FormatDeserialize
43
46
  case LogicalOperatorType::LOGICAL_COPY_TO_FILE:
44
47
  result = LogicalCopyToFile::FormatDeserialize(deserializer);
45
48
  break;
49
+ case LogicalOperatorType::LOGICAL_CREATE_INDEX:
50
+ result = LogicalCreateIndex::FormatDeserialize(deserializer);
51
+ break;
46
52
  case LogicalOperatorType::LOGICAL_CREATE_MACRO:
47
53
  result = LogicalCreate::FormatDeserialize(deserializer);
48
54
  break;
@@ -73,6 +79,9 @@ unique_ptr<LogicalOperator> LogicalOperator::FormatDeserialize(FormatDeserialize
73
79
  case LogicalOperatorType::LOGICAL_DELIM_GET:
74
80
  result = LogicalDelimGet::FormatDeserialize(deserializer);
75
81
  break;
82
+ case LogicalOperatorType::LOGICAL_DELIM_JOIN:
83
+ result = LogicalComparisonJoin::FormatDeserialize(deserializer);
84
+ break;
76
85
  case LogicalOperatorType::LOGICAL_DETACH:
77
86
  result = LogicalSimple::FormatDeserialize(deserializer);
78
87
  break;
@@ -97,6 +106,9 @@ unique_ptr<LogicalOperator> LogicalOperator::FormatDeserialize(FormatDeserialize
97
106
  case LogicalOperatorType::LOGICAL_EXPRESSION_GET:
98
107
  result = LogicalExpressionGet::FormatDeserialize(deserializer);
99
108
  break;
109
+ case LogicalOperatorType::LOGICAL_EXTENSION_OPERATOR:
110
+ result = LogicalExtensionOperator::FormatDeserialize(deserializer);
111
+ break;
100
112
  case LogicalOperatorType::LOGICAL_FILTER:
101
113
  result = LogicalFilter::FormatDeserialize(deserializer);
102
114
  break;
@@ -261,6 +273,7 @@ void LogicalComparisonJoin::FormatSerialize(FormatSerializer &serializer) const
261
273
  serializer.WriteProperty("right_projection_map", right_projection_map);
262
274
  serializer.WriteProperty("conditions", conditions);
263
275
  serializer.WriteProperty("mark_types", mark_types);
276
+ serializer.WriteProperty("duplicate_eliminated_columns", duplicate_eliminated_columns);
264
277
  }
265
278
 
266
279
  unique_ptr<LogicalOperator> LogicalComparisonJoin::FormatDeserialize(FormatDeserializer &deserializer) {
@@ -271,6 +284,7 @@ unique_ptr<LogicalOperator> LogicalComparisonJoin::FormatDeserialize(FormatDeser
271
284
  deserializer.ReadProperty("right_projection_map", result->right_projection_map);
272
285
  deserializer.ReadProperty("conditions", result->conditions);
273
286
  deserializer.ReadProperty("mark_types", result->mark_types);
287
+ deserializer.ReadProperty("duplicate_eliminated_columns", result->duplicate_eliminated_columns);
274
288
  return std::move(result);
275
289
  }
276
290
 
@@ -285,6 +299,19 @@ unique_ptr<LogicalOperator> LogicalCreate::FormatDeserialize(FormatDeserializer
285
299
  return std::move(result);
286
300
  }
287
301
 
302
+ void LogicalCreateIndex::FormatSerialize(FormatSerializer &serializer) const {
303
+ LogicalOperator::FormatSerialize(serializer);
304
+ serializer.WriteProperty("info", *info);
305
+ serializer.WriteProperty("unbound_expressions", unbound_expressions);
306
+ }
307
+
308
+ unique_ptr<LogicalOperator> LogicalCreateIndex::FormatDeserialize(FormatDeserializer &deserializer) {
309
+ auto info = deserializer.ReadProperty<unique_ptr<CreateInfo>>("info");
310
+ auto unbound_expressions = deserializer.ReadProperty<vector<unique_ptr<Expression>>>("unbound_expressions");
311
+ auto result = duckdb::unique_ptr<LogicalCreateIndex>(new LogicalCreateIndex(deserializer.Get<ClientContext &>(), std::move(info), std::move(unbound_expressions)));
312
+ return std::move(result);
313
+ }
314
+
288
315
  void LogicalCreateTable::FormatSerialize(FormatSerializer &serializer) const {
289
316
  LogicalOperator::FormatSerialize(serializer);
290
317
  serializer.WriteProperty("catalog", schema.ParentCatalog().GetName());
@@ -2,7 +2,7 @@
2
2
 
3
3
  namespace duckdb {
4
4
 
5
- const uint64_t VERSION_NUMBER = 53;
5
+ const uint64_t VERSION_NUMBER = 54;
6
6
 
7
7
  struct StorageVersionInfo {
8
8
  const char *version_name;
@@ -36,7 +36,6 @@ bool WriteAheadLog::Replay(AttachedDatabase &database, string &path) {
36
36
  // first deserialize the WAL to look for a checkpoint flag
37
37
  // if there is a checkpoint flag, we might have already flushed the contents of the WAL to disk
38
38
  ReplayState checkpoint_state(database, *con.context, *initial_reader);
39
- initial_reader->SetCatalog(checkpoint_state.catalog);
40
39
  checkpoint_state.deserialize_only = true;
41
40
  try {
42
41
  while (true) {
@@ -73,7 +72,6 @@ bool WriteAheadLog::Replay(AttachedDatabase &database, string &path) {
73
72
 
74
73
  // we need to recover from the WAL: actually set up the replay state
75
74
  BufferedFileReader reader(FileSystem::Get(database), path.c_str(), con.context.get());
76
- reader.SetCatalog(checkpoint_state.catalog);
77
75
  ReplayState state(database, *con.context, reader);
78
76
 
79
77
  // replay the WAL
@@ -284,7 +282,7 @@ void ReplayState::ReplayDropSchema() {
284
282
  void ReplayState::ReplayCreateType() {
285
283
  auto info = TypeCatalogEntry::Deserialize(source);
286
284
  info->on_conflict = OnCreateConflict::IGNORE_ON_CONFLICT;
287
- catalog.CreateType(context, *info);
285
+ catalog.CreateType(context, info->Cast<CreateTypeInfo>());
288
286
  }
289
287
 
290
288
  void ReplayState::ReplayDropType() {
@@ -2,8 +2,6 @@
2
2
 
3
3
  #include "src/planner/operator/logical_any_join.cpp"
4
4
 
5
- #include "src/planner/operator/logical_asof_join.cpp"
6
-
7
5
  #include "src/planner/operator/logical_column_data_get.cpp"
8
6
 
9
7
  #include "src/planner/operator/logical_comparison_join.cpp"
@@ -24,8 +22,6 @@
24
22
 
25
23
  #include "src/planner/operator/logical_delim_get.cpp"
26
24
 
27
- #include "src/planner/operator/logical_delim_join.cpp"
28
-
29
25
  #include "src/planner/operator/logical_dependent_join.cpp"
30
26
 
31
27
  #include "src/planner/operator/logical_distinct.cpp"
package/src/statement.cpp CHANGED
@@ -548,7 +548,6 @@ static Napi::Value TypeToObject(Napi::Env &env, const duckdb::LogicalType &type)
548
548
  obj.Set("value", TypeToObject(env, value_type));
549
549
  } break;
550
550
  case duckdb::LogicalTypeId::ENUM: {
551
- auto name = duckdb::EnumType::GetTypeName(type);
552
551
  auto &values_vec = duckdb::EnumType::GetValuesInsertOrder(type);
553
552
  auto enum_size = duckdb::EnumType::GetSize(type);
554
553
  auto arr = Napi::Array::New(env, enum_size);
@@ -556,7 +555,6 @@ static Napi::Value TypeToObject(Napi::Env &env, const duckdb::LogicalType &type)
556
555
  auto child_name = values_vec.GetValue(i).GetValue<duckdb::string>();
557
556
  arr.Set(i, child_name);
558
557
  }
559
- obj.Set("name", name);
560
558
  obj.Set("values", arr);
561
559
  } break;
562
560
  case duckdb::LogicalTypeId::UNION: {
@@ -48,8 +48,7 @@ describe('Column Types', function() {
48
48
  name: 'small_enum',
49
49
  type: {
50
50
  id: 'ENUM',
51
- sql_type: 'small_enum',
52
- name: 'small_enum',
51
+ sql_type: "ENUM('DUCK_DUCK_ENUM', 'GOOSE')",
53
52
  values: [
54
53
  "DUCK_DUCK_ENUM",
55
54
  "GOOSE"
@@ -1,27 +0,0 @@
1
- //===----------------------------------------------------------------------===//
2
- // DuckDB
3
- //
4
- // duckdb/planner/operator/logical_asof_join.hpp
5
- //
6
- //
7
- //===----------------------------------------------------------------------===//
8
-
9
- #pragma once
10
-
11
- #include "duckdb/planner/operator/logical_comparison_join.hpp"
12
-
13
- namespace duckdb {
14
-
15
- //! LogicalAsOfJoin represents a temporal-style join with one less-than inequality.
16
- //! This inequality matches the greatest value on the right that satisfies the condition.
17
- class LogicalAsOfJoin : public LogicalComparisonJoin {
18
- public:
19
- static constexpr const LogicalOperatorType TYPE = LogicalOperatorType::LOGICAL_ASOF_JOIN;
20
-
21
- public:
22
- explicit LogicalAsOfJoin(JoinType type);
23
-
24
- static unique_ptr<LogicalOperator> Deserialize(LogicalDeserializationState &state, FieldReader &reader);
25
- };
26
-
27
- } // namespace duckdb
@@ -1,32 +0,0 @@
1
- //===----------------------------------------------------------------------===//
2
- // DuckDB
3
- //
4
- // duckdb/planner/operator/logical_delim_join.hpp
5
- //
6
- //
7
- //===----------------------------------------------------------------------===//
8
-
9
- #pragma once
10
-
11
- #include "duckdb/planner/operator/logical_comparison_join.hpp"
12
-
13
- namespace duckdb {
14
-
15
- //! LogicalDelimJoin represents a special "duplicate eliminated" join. This join type is only used for subquery
16
- //! flattening, and involves performing duplicate elimination on the LEFT side which is then pushed into the RIGHT side.
17
- class LogicalDelimJoin : public LogicalComparisonJoin {
18
- public:
19
- static constexpr const LogicalOperatorType TYPE = LogicalOperatorType::LOGICAL_DELIM_JOIN;
20
-
21
- public:
22
- explicit LogicalDelimJoin(JoinType type);
23
-
24
- //! The set of columns that will be duplicate eliminated from the LHS and pushed into the RHS
25
- vector<unique_ptr<Expression>> duplicate_eliminated_columns;
26
-
27
- public:
28
- void Serialize(FieldWriter &writer) const override;
29
- static unique_ptr<LogicalOperator> Deserialize(LogicalDeserializationState &state, FieldReader &reader);
30
- };
31
-
32
- } // namespace duckdb
@@ -1,14 +0,0 @@
1
- #include "duckdb/planner/operator/logical_asof_join.hpp"
2
-
3
- namespace duckdb {
4
-
5
- LogicalAsOfJoin::LogicalAsOfJoin(JoinType type) : LogicalComparisonJoin(type, LogicalOperatorType::LOGICAL_ASOF_JOIN) {
6
- }
7
-
8
- unique_ptr<LogicalOperator> LogicalAsOfJoin::Deserialize(LogicalDeserializationState &state, FieldReader &reader) {
9
- auto result = make_uniq<LogicalAsOfJoin>(JoinType::INVALID);
10
- LogicalComparisonJoin::Deserialize(*result, state, reader);
11
- return std::move(result);
12
- }
13
-
14
- } // namespace duckdb
@@ -1,25 +0,0 @@
1
- #include "duckdb/common/field_writer.hpp"
2
- #include "duckdb/planner/operator/logical_delim_join.hpp"
3
-
4
- namespace duckdb {
5
-
6
- LogicalDelimJoin::LogicalDelimJoin(JoinType type)
7
- : LogicalComparisonJoin(type, LogicalOperatorType::LOGICAL_DELIM_JOIN) {
8
- }
9
-
10
- void LogicalDelimJoin::Serialize(FieldWriter &writer) const {
11
- LogicalComparisonJoin::Serialize(writer);
12
- if (type != LogicalOperatorType::LOGICAL_DELIM_JOIN) {
13
- throw InternalException("LogicalDelimJoin needs to have type LOGICAL_DELIM_JOIN");
14
- }
15
- writer.WriteSerializableList(duplicate_eliminated_columns);
16
- }
17
-
18
- unique_ptr<LogicalOperator> LogicalDelimJoin::Deserialize(LogicalDeserializationState &state, FieldReader &reader) {
19
- auto result = make_uniq<LogicalDelimJoin>(JoinType::INVALID);
20
- LogicalComparisonJoin::Deserialize(*result, state, reader);
21
- result->duplicate_eliminated_columns = reader.ReadRequiredSerializableList<Expression>(state.gstate);
22
- return std::move(result);
23
- }
24
-
25
- } // namespace duckdb