duckdb 0.8.2-dev3458.0 → 0.8.2-dev3949.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.
- package/binding.gyp +2 -0
- package/package.json +1 -1
- package/src/duckdb/extension/icu/icu_extension.cpp +5 -5
- package/src/duckdb/extension/json/include/json_deserializer.hpp +7 -16
- package/src/duckdb/extension/json/include/json_serializer.hpp +9 -15
- package/src/duckdb/extension/json/json_deserializer.cpp +29 -67
- package/src/duckdb/extension/json/json_scan.cpp +1 -1
- package/src/duckdb/extension/json/json_serializer.cpp +26 -69
- package/src/duckdb/src/common/enum_util.cpp +119 -7
- package/src/duckdb/src/common/extra_type_info.cpp +7 -3
- package/src/duckdb/src/common/radix_partitioning.cpp +8 -31
- package/src/duckdb/src/common/row_operations/row_aggregate.cpp +18 -3
- package/src/duckdb/src/common/serializer/binary_deserializer.cpp +62 -77
- package/src/duckdb/src/common/serializer/binary_serializer.cpp +84 -84
- package/src/duckdb/src/common/serializer/format_serializer.cpp +1 -1
- package/src/duckdb/src/common/sort/partition_state.cpp +41 -33
- package/src/duckdb/src/common/types/data_chunk.cpp +44 -8
- package/src/duckdb/src/common/types/hyperloglog.cpp +21 -0
- package/src/duckdb/src/common/types/interval.cpp +3 -0
- package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +252 -126
- package/src/duckdb/src/common/types/row/row_layout.cpp +3 -31
- package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +40 -32
- package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +39 -26
- package/src/duckdb/src/common/types/row/tuple_data_layout.cpp +11 -1
- package/src/duckdb/src/common/types/row/tuple_data_segment.cpp +21 -16
- package/src/duckdb/src/common/types/value.cpp +63 -42
- package/src/duckdb/src/common/types/vector.cpp +33 -67
- package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +3 -2
- package/src/duckdb/src/execution/aggregate_hashtable.cpp +222 -364
- package/src/duckdb/src/execution/join_hashtable.cpp +5 -6
- package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +240 -310
- package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +202 -173
- package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +36 -2
- package/src/duckdb/src/execution/operator/{persistent → csv_scanner}/base_csv_reader.cpp +58 -162
- package/src/duckdb/src/execution/operator/csv_scanner/buffered_csv_reader.cpp +434 -0
- package/src/duckdb/src/execution/operator/csv_scanner/csv_buffer.cpp +80 -0
- package/src/duckdb/src/execution/operator/csv_scanner/csv_buffer_manager.cpp +90 -0
- package/src/duckdb/src/execution/operator/csv_scanner/csv_file_handle.cpp +95 -0
- package/src/duckdb/src/execution/operator/{persistent → csv_scanner}/csv_reader_options.cpp +47 -28
- package/src/duckdb/src/execution/operator/csv_scanner/csv_state_machine.cpp +35 -0
- package/src/duckdb/src/execution/operator/csv_scanner/csv_state_machine_cache.cpp +107 -0
- package/src/duckdb/src/execution/operator/{persistent → csv_scanner}/parallel_csv_reader.cpp +44 -44
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +52 -0
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +336 -0
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +165 -0
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +398 -0
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_refinement.cpp +175 -0
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_replacement.cpp +39 -0
- package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +1 -1
- package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +1 -2
- package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +614 -574
- package/src/duckdb/src/execution/window_executor.cpp +6 -5
- package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -0
- package/src/duckdb/src/function/scalar/strftime_format.cpp +4 -4
- package/src/duckdb/src/function/table/copy_csv.cpp +94 -96
- package/src/duckdb/src/function/table/read_csv.cpp +150 -136
- package/src/duckdb/src/function/table/table_scan.cpp +0 -2
- package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
- package/src/duckdb/src/include/duckdb/common/enum_util.hpp +24 -0
- package/src/duckdb/src/include/duckdb/common/file_opener.hpp +9 -0
- package/src/duckdb/src/include/duckdb/common/fixed_size_map.hpp +208 -0
- package/src/duckdb/src/include/duckdb/common/optional_idx.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/perfect_map_set.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/printer.hpp +11 -0
- package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +43 -30
- package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +36 -35
- package/src/duckdb/src/include/duckdb/common/serializer/deserialization_data.hpp +18 -0
- package/src/duckdb/src/include/duckdb/common/serializer/encoding_util.hpp +132 -0
- package/src/duckdb/src/include/duckdb/common/serializer/format_deserializer.hpp +125 -150
- package/src/duckdb/src/include/duckdb/common/serializer/format_serializer.hpp +119 -107
- package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/shared_ptr.hpp +8 -0
- package/src/duckdb/src/include/duckdb/common/sort/partition_state.hpp +13 -7
- package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +5 -0
- package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +7 -1
- package/src/duckdb/src/include/duckdb/common/types/interval.hpp +7 -0
- package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +41 -9
- package/src/duckdb/src/include/duckdb/common/types/row/row_data_collection_scanner.hpp +5 -0
- package/src/duckdb/src/include/duckdb/common/types/row/row_layout.hpp +1 -23
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_allocator.hpp +14 -8
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +6 -3
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_layout.hpp +7 -0
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_segment.hpp +13 -8
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +3 -2
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/vector.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +125 -146
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_hash_aggregate.hpp +5 -4
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +4 -3
- package/src/duckdb/src/include/duckdb/execution/operator/{persistent → scan/csv}/base_csv_reader.hpp +17 -17
- package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/buffered_csv_reader.hpp +72 -0
- package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_buffer.hpp +110 -0
- package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_buffer_manager.hpp +103 -0
- package/src/duckdb/src/include/duckdb/execution/operator/{persistent → scan/csv}/csv_file_handle.hpp +8 -15
- package/src/duckdb/src/include/duckdb/execution/operator/{persistent → scan/csv}/csv_line_info.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/{persistent → scan/csv}/csv_reader_options.hpp +52 -28
- package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_sniffer.hpp +127 -0
- package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_state_machine.hpp +75 -0
- package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_state_machine_cache.hpp +51 -0
- package/src/duckdb/src/include/duckdb/execution/operator/{persistent → scan/csv}/parallel_csv_reader.hpp +21 -27
- package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/quote_rules.hpp +21 -0
- package/src/duckdb/src/include/duckdb/execution/radix_partitioned_hashtable.hpp +18 -27
- package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +5 -6
- package/src/duckdb/src/include/duckdb/function/scalar/strftime_format.hpp +4 -4
- package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +17 -12
- package/src/duckdb/src/include/duckdb/main/client_context_file_opener.hpp +1 -0
- package/src/duckdb/src/include/duckdb/main/client_data.hpp +2 -1
- package/src/duckdb/src/include/duckdb/main/config.hpp +1 -0
- package/src/duckdb/src/include/duckdb/main/connection.hpp +2 -2
- package/src/duckdb/src/include/duckdb/main/relation/read_csv_relation.hpp +6 -6
- package/src/duckdb/src/include/duckdb/parallel/event.hpp +12 -1
- package/src/duckdb/src/include/duckdb/storage/block.hpp +6 -0
- package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +7 -3
- package/src/duckdb/src/include/duckdb/storage/statistics/column_statistics.hpp +4 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/distinct_statistics.hpp +5 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/list_stats.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/string_stats.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/struct_stats.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +15 -3
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +4 -0
- package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +5 -0
- package/src/duckdb/src/include/duckdb/verification/deserialized_statement_verifier_v2.hpp +6 -0
- package/src/duckdb/src/include/duckdb/verification/statement_verifier.hpp +1 -0
- package/src/duckdb/src/include/duckdb.h +12 -0
- package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -0
- package/src/duckdb/src/main/client_context_file_opener.cpp +17 -0
- package/src/duckdb/src/main/client_verify.cpp +1 -0
- package/src/duckdb/src/main/config.cpp +2 -2
- package/src/duckdb/src/main/connection.cpp +3 -3
- package/src/duckdb/src/main/relation/read_csv_relation.cpp +19 -13
- package/src/duckdb/src/parallel/pipeline_finish_event.cpp +1 -1
- package/src/duckdb/src/parser/tableref/pivotref.cpp +0 -16
- package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +1 -1
- package/src/duckdb/src/planner/binder/statement/bind_export.cpp +41 -25
- package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +4 -4
- package/src/duckdb/src/planner/expression/bound_window_expression.cpp +10 -10
- package/src/duckdb/src/planner/logical_operator.cpp +1 -1
- package/src/duckdb/src/planner/planner.cpp +1 -1
- package/src/duckdb/src/storage/checkpoint_manager.cpp +4 -3
- package/src/duckdb/src/storage/serialization/serialize_constraint.cpp +1 -1
- package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +5 -5
- package/src/duckdb/src/storage/serialization/serialize_expression.cpp +10 -10
- package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +20 -20
- package/src/duckdb/src/storage/serialization/serialize_macro_function.cpp +2 -2
- package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +118 -89
- package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +3 -3
- package/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp +27 -27
- package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +16 -16
- package/src/duckdb/src/storage/serialization/serialize_result_modifier.cpp +8 -8
- package/src/duckdb/src/storage/serialization/serialize_statement.cpp +1 -1
- package/src/duckdb/src/storage/serialization/serialize_storage.cpp +39 -0
- package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +9 -9
- package/src/duckdb/src/storage/statistics/base_statistics.cpp +67 -4
- package/src/duckdb/src/storage/statistics/column_statistics.cpp +16 -0
- package/src/duckdb/src/storage/statistics/list_stats.cpp +21 -0
- package/src/duckdb/src/storage/statistics/numeric_stats.cpp +126 -1
- package/src/duckdb/src/storage/statistics/string_stats.cpp +23 -0
- package/src/duckdb/src/storage/statistics/struct_stats.cpp +27 -0
- package/src/duckdb/src/storage/storage_info.cpp +1 -1
- package/src/duckdb/src/storage/table/chunk_info.cpp +82 -3
- package/src/duckdb/src/storage/table/row_group.cpp +68 -1
- package/src/duckdb/src/storage/table/table_statistics.cpp +21 -0
- package/src/duckdb/src/storage/wal_replay.cpp +2 -2
- package/src/duckdb/src/verification/deserialized_statement_verifier_v2.cpp +15 -1
- package/src/duckdb/src/verification/statement_verifier.cpp +2 -0
- package/src/duckdb/third_party/utf8proc/include/utf8proc_wrapper.hpp +8 -0
- package/src/duckdb/ub_src_execution.cpp +0 -2
- package/src/duckdb/ub_src_execution_operator_csv_scanner.cpp +18 -0
- package/src/duckdb/ub_src_execution_operator_csv_scanner_sniffer.cpp +12 -0
- package/src/duckdb/ub_src_execution_operator_persistent.cpp +0 -12
- package/src/duckdb/ub_src_storage_serialization.cpp +2 -0
- package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +0 -1487
- package/src/duckdb/src/execution/operator/persistent/csv_buffer.cpp +0 -72
- package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +0 -158
- package/src/duckdb/src/execution/partitionable_hashtable.cpp +0 -207
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/buffered_csv_reader.hpp +0 -133
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +0 -74
- package/src/duckdb/src/include/duckdb/execution/partitionable_hashtable.hpp +0 -73
@@ -44,47 +44,63 @@ string SanitizeExportIdentifier(const string &str) {
|
|
44
44
|
return result;
|
45
45
|
}
|
46
46
|
|
47
|
-
bool
|
48
|
-
for (
|
49
|
-
|
47
|
+
bool ReferencedTableIsOrdered(string &referenced_table, catalog_entry_vector_t &ordered) {
|
48
|
+
for (auto &entry : ordered) {
|
49
|
+
auto &table_entry = entry.get().Cast<TableCatalogEntry>();
|
50
|
+
if (StringUtil::CIEquals(table_entry.name, referenced_table)) {
|
51
|
+
// The referenced table is already ordered
|
50
52
|
return true;
|
51
53
|
}
|
52
54
|
}
|
53
55
|
return false;
|
54
56
|
}
|
55
57
|
|
56
|
-
void ScanForeignKeyTable(
|
57
|
-
bool
|
58
|
-
|
59
|
-
|
58
|
+
void ScanForeignKeyTable(catalog_entry_vector_t &ordered, catalog_entry_vector_t &unordered,
|
59
|
+
bool move_primary_keys_only) {
|
60
|
+
catalog_entry_vector_t remaining;
|
61
|
+
|
62
|
+
for (auto &entry : unordered) {
|
63
|
+
auto &table_entry = entry.get().Cast<TableCatalogEntry>();
|
60
64
|
bool move_to_ordered = true;
|
61
|
-
auto &constraints = table_entry.
|
62
|
-
|
63
|
-
|
64
|
-
if (cond->type
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
65
|
+
auto &constraints = table_entry.GetConstraints();
|
66
|
+
|
67
|
+
for (auto &cond : constraints) {
|
68
|
+
if (cond->type != ConstraintType::FOREIGN_KEY) {
|
69
|
+
continue;
|
70
|
+
}
|
71
|
+
auto &fk = cond->Cast<ForeignKeyConstraint>();
|
72
|
+
if (fk.info.type != ForeignKeyType::FK_TYPE_FOREIGN_KEY_TABLE) {
|
73
|
+
continue;
|
74
|
+
}
|
75
|
+
|
76
|
+
if (move_primary_keys_only) {
|
77
|
+
// This table references a table, don't move it yet
|
78
|
+
move_to_ordered = false;
|
79
|
+
break;
|
80
|
+
} else if (!ReferencedTableIsOrdered(fk.info.table, ordered)) {
|
81
|
+
// The table that it references isn't ordered yet
|
82
|
+
move_to_ordered = false;
|
83
|
+
break;
|
72
84
|
}
|
73
85
|
}
|
86
|
+
|
74
87
|
if (move_to_ordered) {
|
75
88
|
ordered.push_back(table_entry);
|
76
|
-
i = unordered.erase(i);
|
77
89
|
} else {
|
78
|
-
|
90
|
+
remaining.push_back(table_entry);
|
79
91
|
}
|
80
92
|
}
|
93
|
+
unordered = remaining;
|
81
94
|
}
|
82
95
|
|
83
|
-
void ReorderTableEntries(
|
84
|
-
|
85
|
-
|
96
|
+
void ReorderTableEntries(catalog_entry_vector_t &tables) {
|
97
|
+
catalog_entry_vector_t ordered;
|
98
|
+
catalog_entry_vector_t unordered = tables;
|
99
|
+
// First only move the tables that don't have any dependencies
|
86
100
|
ScanForeignKeyTable(ordered, unordered, true);
|
87
101
|
while (!unordered.empty()) {
|
102
|
+
// Now we will start moving tables that have foreign key constraints
|
103
|
+
// if the tables they reference are already moved
|
88
104
|
ScanForeignKeyTable(ordered, unordered, false);
|
89
105
|
}
|
90
106
|
tables = ordered;
|
@@ -130,7 +146,7 @@ BoundStatement Binder::Bind(ExportStatement &stmt) {
|
|
130
146
|
|
131
147
|
// gather a list of all the tables
|
132
148
|
string catalog = stmt.database.empty() ? INVALID_CATALOG : stmt.database;
|
133
|
-
|
149
|
+
catalog_entry_vector_t tables;
|
134
150
|
auto schemas = Catalog::GetSchemas(context, catalog);
|
135
151
|
for (auto &schema : schemas) {
|
136
152
|
schema.get().Scan(context, CatalogType::TABLE_ENTRY, [&](CatalogEntry &entry) {
|
@@ -151,7 +167,7 @@ BoundStatement Binder::Bind(ExportStatement &stmt) {
|
|
151
167
|
|
152
168
|
unordered_set<string> table_name_index;
|
153
169
|
for (auto &t : tables) {
|
154
|
-
auto &table = t.get();
|
170
|
+
auto &table = t.get().Cast<TableCatalogEntry>();
|
155
171
|
auto info = make_uniq<CopyInfo>();
|
156
172
|
// we copy the options supplied to the EXPORT
|
157
173
|
info->format = stmt.info->format;
|
@@ -110,8 +110,8 @@ void BoundAggregateExpression::FormatSerialize(FormatSerializer &serializer) con
|
|
110
110
|
serializer.WriteProperty(201, "children", children);
|
111
111
|
FunctionSerializer::FormatSerialize(serializer, function, bind_info.get());
|
112
112
|
serializer.WriteProperty(203, "aggregate_type", aggr_type);
|
113
|
-
serializer.
|
114
|
-
serializer.
|
113
|
+
serializer.WritePropertyWithDefault(204, "filter", filter, unique_ptr<Expression>());
|
114
|
+
serializer.WritePropertyWithDefault(205, "order_bys", order_bys, unique_ptr<BoundOrderModifier>());
|
115
115
|
}
|
116
116
|
|
117
117
|
unique_ptr<Expression> BoundAggregateExpression::FormatDeserialize(FormatDeserializer &deserializer) {
|
@@ -120,10 +120,10 @@ unique_ptr<Expression> BoundAggregateExpression::FormatDeserialize(FormatDeseria
|
|
120
120
|
auto entry = FunctionSerializer::FormatDeserialize<AggregateFunction, AggregateFunctionCatalogEntry>(
|
121
121
|
deserializer, CatalogType::AGGREGATE_FUNCTION_ENTRY, children);
|
122
122
|
auto aggregate_type = deserializer.ReadProperty<AggregateType>(203, "aggregate_type");
|
123
|
-
auto filter = deserializer.
|
123
|
+
auto filter = deserializer.ReadPropertyWithDefault<unique_ptr<Expression>>(204, "filter", unique_ptr<Expression>());
|
124
124
|
auto result = make_uniq<BoundAggregateExpression>(std::move(entry.first), std::move(children), std::move(filter),
|
125
125
|
std::move(entry.second), aggregate_type);
|
126
|
-
deserializer.
|
126
|
+
deserializer.ReadPropertyWithDefault(205, "order_bys", result->order_bys, unique_ptr<BoundOrderModifier>());
|
127
127
|
return std::move(result);
|
128
128
|
}
|
129
129
|
|
@@ -172,14 +172,14 @@ void BoundWindowExpression::FormatSerialize(FormatSerializer &serializer) const
|
|
172
172
|
}
|
173
173
|
serializer.WriteProperty(202, "partitions", partitions);
|
174
174
|
serializer.WriteProperty(203, "orders", orders);
|
175
|
-
serializer.
|
175
|
+
serializer.WritePropertyWithDefault(204, "filters", filter_expr, unique_ptr<Expression>());
|
176
176
|
serializer.WriteProperty(205, "ignore_nulls", ignore_nulls);
|
177
177
|
serializer.WriteProperty(206, "start", start);
|
178
178
|
serializer.WriteProperty(207, "end", end);
|
179
|
-
serializer.
|
180
|
-
serializer.
|
181
|
-
serializer.
|
182
|
-
serializer.
|
179
|
+
serializer.WritePropertyWithDefault(208, "start_expr", start_expr, unique_ptr<Expression>());
|
180
|
+
serializer.WritePropertyWithDefault(209, "end_expr", end_expr, unique_ptr<Expression>());
|
181
|
+
serializer.WritePropertyWithDefault(210, "offset_expr", offset_expr, unique_ptr<Expression>());
|
182
|
+
serializer.WritePropertyWithDefault(211, "default_expr", default_expr, unique_ptr<Expression>());
|
183
183
|
}
|
184
184
|
|
185
185
|
unique_ptr<Expression> BoundWindowExpression::FormatDeserialize(FormatDeserializer &deserializer) {
|
@@ -198,14 +198,14 @@ unique_ptr<Expression> BoundWindowExpression::FormatDeserialize(FormatDeserializ
|
|
198
198
|
make_uniq<BoundWindowExpression>(expression_type, return_type, std::move(aggregate), std::move(bind_info));
|
199
199
|
deserializer.ReadProperty(202, "partitions", result->partitions);
|
200
200
|
deserializer.ReadProperty(203, "orders", result->orders);
|
201
|
-
deserializer.
|
201
|
+
deserializer.ReadPropertyWithDefault(204, "filters", result->filter_expr, unique_ptr<Expression>());
|
202
202
|
deserializer.ReadProperty(205, "ignore_nulls", result->ignore_nulls);
|
203
203
|
deserializer.ReadProperty(206, "start", result->start);
|
204
204
|
deserializer.ReadProperty(207, "end", result->end);
|
205
|
-
deserializer.
|
206
|
-
deserializer.
|
207
|
-
deserializer.
|
208
|
-
deserializer.
|
205
|
+
deserializer.ReadPropertyWithDefault(208, "start_expr", result->start_expr, unique_ptr<Expression>());
|
206
|
+
deserializer.ReadPropertyWithDefault(209, "end_expr", result->end_expr, unique_ptr<Expression>());
|
207
|
+
deserializer.ReadPropertyWithDefault(210, "offset_expr", result->offset_expr, unique_ptr<Expression>());
|
208
|
+
deserializer.ReadPropertyWithDefault(211, "default_expr", result->default_expr, unique_ptr<Expression>());
|
209
209
|
return std::move(result);
|
210
210
|
}
|
211
211
|
|
@@ -146,7 +146,7 @@ void LogicalOperator::Verify(ClientContext &context) {
|
|
146
146
|
|
147
147
|
// format (de)serialization of expressions
|
148
148
|
try {
|
149
|
-
auto blob = BinarySerializer::Serialize(*expressions[expr_idx]);
|
149
|
+
auto blob = BinarySerializer::Serialize(*expressions[expr_idx], true);
|
150
150
|
bound_parameter_map_t parameters;
|
151
151
|
auto result = BinaryDeserializer::Deserialize<Expression>(context, parameters, blob.data(), blob.size());
|
152
152
|
result->Hash();
|
@@ -169,7 +169,7 @@ void Planner::VerifyPlan(ClientContext &context, unique_ptr<LogicalOperator> &op
|
|
169
169
|
|
170
170
|
// format (de)serialization of this operator
|
171
171
|
try {
|
172
|
-
auto blob = BinarySerializer::Serialize(*op);
|
172
|
+
auto blob = BinarySerializer::Serialize(*op, true);
|
173
173
|
bound_parameter_map_t parameters;
|
174
174
|
auto result = BinaryDeserializer::Deserialize<LogicalOperator>(context, parameters, blob.data(), blob.size());
|
175
175
|
} catch (SerializationException &ex) {
|
@@ -34,7 +34,7 @@
|
|
34
34
|
|
35
35
|
namespace duckdb {
|
36
36
|
|
37
|
-
void ReorderTableEntries(
|
37
|
+
void ReorderTableEntries(catalog_entry_vector_t &tables);
|
38
38
|
|
39
39
|
SingleFileCheckpointWriter::SingleFileCheckpointWriter(AttachedDatabase &db, BlockManager &block_manager)
|
40
40
|
: CheckpointWriter(db), partial_block_manager(block_manager, CheckpointType::FULL_CHECKPOINT) {
|
@@ -157,7 +157,7 @@ void CheckpointWriter::WriteSchema(SchemaCatalogEntry &schema) {
|
|
157
157
|
// write the schema data
|
158
158
|
schema.Serialize(GetMetadataWriter());
|
159
159
|
// then, we fetch the tables/views/sequences information
|
160
|
-
|
160
|
+
catalog_entry_vector_t tables;
|
161
161
|
vector<reference<ViewCatalogEntry>> views;
|
162
162
|
schema.Scan(CatalogType::TABLE_ENTRY, [&](CatalogEntry &entry) {
|
163
163
|
if (entry.internal) {
|
@@ -235,7 +235,8 @@ void CheckpointWriter::WriteSchema(SchemaCatalogEntry &schema) {
|
|
235
235
|
// reorder tables because of foreign key constraint
|
236
236
|
ReorderTableEntries(tables);
|
237
237
|
// Write the tables
|
238
|
-
for (auto &
|
238
|
+
for (auto &entry : tables) {
|
239
|
+
auto &table = entry.get().Cast<TableCatalogEntry>();
|
239
240
|
WriteTable(table);
|
240
241
|
}
|
241
242
|
// Write the views
|
@@ -37,7 +37,7 @@ unique_ptr<Constraint> Constraint::FormatDeserialize(FormatDeserializer &deseria
|
|
37
37
|
|
38
38
|
void CheckConstraint::FormatSerialize(FormatSerializer &serializer) const {
|
39
39
|
Constraint::FormatSerialize(serializer);
|
40
|
-
serializer.WriteProperty(200, "expression",
|
40
|
+
serializer.WriteProperty(200, "expression", expression);
|
41
41
|
}
|
42
42
|
|
43
43
|
unique_ptr<Constraint> CheckConstraint::FormatDeserialize(FormatDeserializer &deserializer) {
|
@@ -102,7 +102,7 @@ unique_ptr<CreateInfo> CreateIndexInfo::FormatDeserialize(FormatDeserializer &de
|
|
102
102
|
void CreateMacroInfo::FormatSerialize(FormatSerializer &serializer) const {
|
103
103
|
CreateInfo::FormatSerialize(serializer);
|
104
104
|
serializer.WriteProperty(200, "name", name);
|
105
|
-
serializer.WriteProperty(201, "function",
|
105
|
+
serializer.WriteProperty(201, "function", function);
|
106
106
|
}
|
107
107
|
|
108
108
|
unique_ptr<CreateInfo> CreateMacroInfo::FormatDeserialize(FormatDeserializer &deserializer) {
|
@@ -149,7 +149,7 @@ void CreateTableInfo::FormatSerialize(FormatSerializer &serializer) const {
|
|
149
149
|
serializer.WriteProperty(200, "table", table);
|
150
150
|
serializer.WriteProperty(201, "columns", columns);
|
151
151
|
serializer.WriteProperty(202, "constraints", constraints);
|
152
|
-
serializer.
|
152
|
+
serializer.WritePropertyWithDefault(203, "query", query, unique_ptr<SelectStatement>());
|
153
153
|
}
|
154
154
|
|
155
155
|
unique_ptr<CreateInfo> CreateTableInfo::FormatDeserialize(FormatDeserializer &deserializer) {
|
@@ -157,7 +157,7 @@ unique_ptr<CreateInfo> CreateTableInfo::FormatDeserialize(FormatDeserializer &de
|
|
157
157
|
deserializer.ReadProperty(200, "table", result->table);
|
158
158
|
deserializer.ReadProperty(201, "columns", result->columns);
|
159
159
|
deserializer.ReadProperty(202, "constraints", result->constraints);
|
160
|
-
deserializer.
|
160
|
+
deserializer.ReadPropertyWithDefault(203, "query", result->query, unique_ptr<SelectStatement>());
|
161
161
|
return std::move(result);
|
162
162
|
}
|
163
163
|
|
@@ -179,7 +179,7 @@ void CreateViewInfo::FormatSerialize(FormatSerializer &serializer) const {
|
|
179
179
|
serializer.WriteProperty(200, "view_name", view_name);
|
180
180
|
serializer.WriteProperty(201, "aliases", aliases);
|
181
181
|
serializer.WriteProperty(202, "types", types);
|
182
|
-
serializer.
|
182
|
+
serializer.WritePropertyWithDefault(203, "query", query, unique_ptr<SelectStatement>());
|
183
183
|
}
|
184
184
|
|
185
185
|
unique_ptr<CreateInfo> CreateViewInfo::FormatDeserialize(FormatDeserializer &deserializer) {
|
@@ -187,7 +187,7 @@ unique_ptr<CreateInfo> CreateViewInfo::FormatDeserialize(FormatDeserializer &des
|
|
187
187
|
deserializer.ReadProperty(200, "view_name", result->view_name);
|
188
188
|
deserializer.ReadProperty(201, "aliases", result->aliases);
|
189
189
|
deserializer.ReadProperty(202, "types", result->types);
|
190
|
-
deserializer.
|
190
|
+
deserializer.ReadPropertyWithDefault(203, "query", result->query, unique_ptr<SelectStatement>());
|
191
191
|
return std::move(result);
|
192
192
|
}
|
193
193
|
|
@@ -83,9 +83,9 @@ unique_ptr<Expression> Expression::FormatDeserialize(FormatDeserializer &deseria
|
|
83
83
|
|
84
84
|
void BoundBetweenExpression::FormatSerialize(FormatSerializer &serializer) const {
|
85
85
|
Expression::FormatSerialize(serializer);
|
86
|
-
serializer.WriteProperty(200, "input",
|
87
|
-
serializer.WriteProperty(201, "lower",
|
88
|
-
serializer.WriteProperty(202, "upper",
|
86
|
+
serializer.WriteProperty(200, "input", input);
|
87
|
+
serializer.WriteProperty(201, "lower", lower);
|
88
|
+
serializer.WriteProperty(202, "upper", upper);
|
89
89
|
serializer.WriteProperty(203, "lower_inclusive", lower_inclusive);
|
90
90
|
serializer.WriteProperty(204, "upper_inclusive", upper_inclusive);
|
91
91
|
}
|
@@ -104,7 +104,7 @@ void BoundCaseExpression::FormatSerialize(FormatSerializer &serializer) const {
|
|
104
104
|
Expression::FormatSerialize(serializer);
|
105
105
|
serializer.WriteProperty(200, "return_type", return_type);
|
106
106
|
serializer.WriteProperty(201, "case_checks", case_checks);
|
107
|
-
serializer.WriteProperty(202, "else_expr",
|
107
|
+
serializer.WriteProperty(202, "else_expr", else_expr);
|
108
108
|
}
|
109
109
|
|
110
110
|
unique_ptr<Expression> BoundCaseExpression::FormatDeserialize(FormatDeserializer &deserializer) {
|
@@ -117,7 +117,7 @@ unique_ptr<Expression> BoundCaseExpression::FormatDeserialize(FormatDeserializer
|
|
117
117
|
|
118
118
|
void BoundCastExpression::FormatSerialize(FormatSerializer &serializer) const {
|
119
119
|
Expression::FormatSerialize(serializer);
|
120
|
-
serializer.WriteProperty(200, "child",
|
120
|
+
serializer.WriteProperty(200, "child", child);
|
121
121
|
serializer.WriteProperty(201, "return_type", return_type);
|
122
122
|
serializer.WriteProperty(202, "try_cast", try_cast);
|
123
123
|
}
|
@@ -147,8 +147,8 @@ unique_ptr<Expression> BoundColumnRefExpression::FormatDeserialize(FormatDeseria
|
|
147
147
|
|
148
148
|
void BoundComparisonExpression::FormatSerialize(FormatSerializer &serializer) const {
|
149
149
|
Expression::FormatSerialize(serializer);
|
150
|
-
serializer.WriteProperty(200, "left",
|
151
|
-
serializer.WriteProperty(201, "right",
|
150
|
+
serializer.WriteProperty(200, "left", left);
|
151
|
+
serializer.WriteProperty(201, "right", right);
|
152
152
|
}
|
153
153
|
|
154
154
|
unique_ptr<Expression> BoundComparisonExpression::FormatDeserialize(FormatDeserializer &deserializer) {
|
@@ -194,7 +194,7 @@ unique_ptr<Expression> BoundDefaultExpression::FormatDeserialize(FormatDeseriali
|
|
194
194
|
void BoundLambdaExpression::FormatSerialize(FormatSerializer &serializer) const {
|
195
195
|
Expression::FormatSerialize(serializer);
|
196
196
|
serializer.WriteProperty(200, "return_type", return_type);
|
197
|
-
serializer.WriteProperty(201, "lambda_expr",
|
197
|
+
serializer.WriteProperty(201, "lambda_expr", lambda_expr);
|
198
198
|
serializer.WriteProperty(202, "captures", captures);
|
199
199
|
serializer.WriteProperty(203, "parameter_count", parameter_count);
|
200
200
|
}
|
@@ -243,7 +243,7 @@ void BoundParameterExpression::FormatSerialize(FormatSerializer &serializer) con
|
|
243
243
|
Expression::FormatSerialize(serializer);
|
244
244
|
serializer.WriteProperty(200, "identifier", identifier);
|
245
245
|
serializer.WriteProperty(201, "return_type", return_type);
|
246
|
-
serializer.WriteProperty(202, "parameter_data",
|
246
|
+
serializer.WriteProperty(202, "parameter_data", parameter_data);
|
247
247
|
}
|
248
248
|
|
249
249
|
unique_ptr<Expression> BoundParameterExpression::FormatDeserialize(FormatDeserializer &deserializer) {
|
@@ -270,7 +270,7 @@ unique_ptr<Expression> BoundReferenceExpression::FormatDeserialize(FormatDeseria
|
|
270
270
|
void BoundUnnestExpression::FormatSerialize(FormatSerializer &serializer) const {
|
271
271
|
Expression::FormatSerialize(serializer);
|
272
272
|
serializer.WriteProperty(200, "return_type", return_type);
|
273
|
-
serializer.WriteProperty(201, "child",
|
273
|
+
serializer.WriteProperty(201, "child", child);
|
274
274
|
}
|
275
275
|
|
276
276
|
unique_ptr<Expression> BoundUnnestExpression::FormatDeserialize(FormatDeserializer &deserializer) {
|
@@ -218,7 +218,7 @@ void LogicalAnyJoin::FormatSerialize(FormatSerializer &serializer) const {
|
|
218
218
|
serializer.WriteProperty(201, "mark_index", mark_index);
|
219
219
|
serializer.WriteProperty(202, "left_projection_map", left_projection_map);
|
220
220
|
serializer.WriteProperty(203, "right_projection_map", right_projection_map);
|
221
|
-
serializer.WriteProperty(204, "condition",
|
221
|
+
serializer.WriteProperty(204, "condition", condition);
|
222
222
|
}
|
223
223
|
|
224
224
|
unique_ptr<LogicalOperator> LogicalAnyJoin::FormatDeserialize(FormatDeserializer &deserializer) {
|
@@ -254,7 +254,7 @@ void LogicalColumnDataGet::FormatSerialize(FormatSerializer &serializer) const {
|
|
254
254
|
LogicalOperator::FormatSerialize(serializer);
|
255
255
|
serializer.WriteProperty(200, "table_index", table_index);
|
256
256
|
serializer.WriteProperty(201, "chunk_types", chunk_types);
|
257
|
-
serializer.WriteProperty(202, "collection",
|
257
|
+
serializer.WriteProperty(202, "collection", collection);
|
258
258
|
}
|
259
259
|
|
260
260
|
unique_ptr<LogicalOperator> LogicalColumnDataGet::FormatDeserialize(FormatDeserializer &deserializer) {
|
@@ -290,7 +290,7 @@ unique_ptr<LogicalOperator> LogicalComparisonJoin::FormatDeserialize(FormatDeser
|
|
290
290
|
|
291
291
|
void LogicalCreate::FormatSerialize(FormatSerializer &serializer) const {
|
292
292
|
LogicalOperator::FormatSerialize(serializer);
|
293
|
-
serializer.WriteProperty(200, "info",
|
293
|
+
serializer.WriteProperty(200, "info", info);
|
294
294
|
}
|
295
295
|
|
296
296
|
unique_ptr<LogicalOperator> LogicalCreate::FormatDeserialize(FormatDeserializer &deserializer) {
|
@@ -301,7 +301,7 @@ unique_ptr<LogicalOperator> LogicalCreate::FormatDeserialize(FormatDeserializer
|
|
301
301
|
|
302
302
|
void LogicalCreateIndex::FormatSerialize(FormatSerializer &serializer) const {
|
303
303
|
LogicalOperator::FormatSerialize(serializer);
|
304
|
-
serializer.WriteProperty(200, "info",
|
304
|
+
serializer.WriteProperty(200, "info", info);
|
305
305
|
serializer.WriteProperty(201, "unbound_expressions", unbound_expressions);
|
306
306
|
}
|
307
307
|
|
@@ -316,7 +316,7 @@ void LogicalCreateTable::FormatSerialize(FormatSerializer &serializer) const {
|
|
316
316
|
LogicalOperator::FormatSerialize(serializer);
|
317
317
|
serializer.WriteProperty(200, "catalog", schema.ParentCatalog().GetName());
|
318
318
|
serializer.WriteProperty(201, "schema", schema.name);
|
319
|
-
serializer.WriteProperty(202, "info",
|
319
|
+
serializer.WriteProperty(202, "info", info->base);
|
320
320
|
}
|
321
321
|
|
322
322
|
unique_ptr<LogicalOperator> LogicalCreateTable::FormatDeserialize(FormatDeserializer &deserializer) {
|
@@ -374,14 +374,14 @@ void LogicalDistinct::FormatSerialize(FormatSerializer &serializer) const {
|
|
374
374
|
LogicalOperator::FormatSerialize(serializer);
|
375
375
|
serializer.WriteProperty(200, "distinct_type", distinct_type);
|
376
376
|
serializer.WriteProperty(201, "distinct_targets", distinct_targets);
|
377
|
-
serializer.
|
377
|
+
serializer.WritePropertyWithDefault(202, "order_by", order_by, unique_ptr<BoundOrderModifier>());
|
378
378
|
}
|
379
379
|
|
380
380
|
unique_ptr<LogicalOperator> LogicalDistinct::FormatDeserialize(FormatDeserializer &deserializer) {
|
381
381
|
auto distinct_type = deserializer.ReadProperty<DistinctType>(200, "distinct_type");
|
382
382
|
auto distinct_targets = deserializer.ReadProperty<vector<unique_ptr<Expression>>>(201, "distinct_targets");
|
383
383
|
auto result = duckdb::unique_ptr<LogicalDistinct>(new LogicalDistinct(std::move(distinct_targets), distinct_type));
|
384
|
-
deserializer.
|
384
|
+
deserializer.ReadPropertyWithDefault(202, "order_by", result->order_by, unique_ptr<BoundOrderModifier>());
|
385
385
|
return std::move(result);
|
386
386
|
}
|
387
387
|
|
@@ -468,8 +468,8 @@ void LogicalInsert::FormatSerialize(FormatSerializer &serializer) const {
|
|
468
468
|
serializer.WriteProperty(209, "action_type", action_type);
|
469
469
|
serializer.WriteProperty(210, "expected_set_types", expected_set_types);
|
470
470
|
serializer.WriteProperty(211, "on_conflict_filter", on_conflict_filter);
|
471
|
-
serializer.
|
472
|
-
serializer.
|
471
|
+
serializer.WritePropertyWithDefault(212, "on_conflict_condition", on_conflict_condition, unique_ptr<Expression>());
|
472
|
+
serializer.WritePropertyWithDefault(213, "do_update_condition", do_update_condition, unique_ptr<Expression>());
|
473
473
|
serializer.WriteProperty(214, "set_columns", set_columns);
|
474
474
|
serializer.WriteProperty(215, "set_types", set_types);
|
475
475
|
serializer.WriteProperty(216, "excluded_table_index", excluded_table_index);
|
@@ -491,8 +491,8 @@ unique_ptr<LogicalOperator> LogicalInsert::FormatDeserialize(FormatDeserializer
|
|
491
491
|
deserializer.ReadProperty(209, "action_type", result->action_type);
|
492
492
|
deserializer.ReadProperty(210, "expected_set_types", result->expected_set_types);
|
493
493
|
deserializer.ReadProperty(211, "on_conflict_filter", result->on_conflict_filter);
|
494
|
-
deserializer.
|
495
|
-
deserializer.
|
494
|
+
deserializer.ReadPropertyWithDefault(212, "on_conflict_condition", result->on_conflict_condition, unique_ptr<Expression>());
|
495
|
+
deserializer.ReadPropertyWithDefault(213, "do_update_condition", result->do_update_condition, unique_ptr<Expression>());
|
496
496
|
deserializer.ReadProperty(214, "set_columns", result->set_columns);
|
497
497
|
deserializer.ReadProperty(215, "set_types", result->set_types);
|
498
498
|
deserializer.ReadProperty(216, "excluded_table_index", result->excluded_table_index);
|
@@ -505,15 +505,15 @@ void LogicalLimit::FormatSerialize(FormatSerializer &serializer) const {
|
|
505
505
|
LogicalOperator::FormatSerialize(serializer);
|
506
506
|
serializer.WriteProperty(200, "limit_val", limit_val);
|
507
507
|
serializer.WriteProperty(201, "offset_val", offset_val);
|
508
|
-
serializer.
|
509
|
-
serializer.
|
508
|
+
serializer.WritePropertyWithDefault(202, "limit", limit, unique_ptr<Expression>());
|
509
|
+
serializer.WritePropertyWithDefault(203, "offset", offset, unique_ptr<Expression>());
|
510
510
|
}
|
511
511
|
|
512
512
|
unique_ptr<LogicalOperator> LogicalLimit::FormatDeserialize(FormatDeserializer &deserializer) {
|
513
513
|
auto limit_val = deserializer.ReadProperty<int64_t>(200, "limit_val");
|
514
514
|
auto offset_val = deserializer.ReadProperty<int64_t>(201, "offset_val");
|
515
|
-
auto limit = deserializer.
|
516
|
-
auto offset = deserializer.
|
515
|
+
auto limit = deserializer.ReadPropertyWithDefault<unique_ptr<Expression>>(202, "limit", unique_ptr<Expression>());
|
516
|
+
auto offset = deserializer.ReadPropertyWithDefault<unique_ptr<Expression>>(203, "offset", unique_ptr<Expression>());
|
517
517
|
auto result = duckdb::unique_ptr<LogicalLimit>(new LogicalLimit(limit_val, offset_val, std::move(limit), std::move(offset)));
|
518
518
|
return std::move(result);
|
519
519
|
}
|
@@ -522,15 +522,15 @@ void LogicalLimitPercent::FormatSerialize(FormatSerializer &serializer) const {
|
|
522
522
|
LogicalOperator::FormatSerialize(serializer);
|
523
523
|
serializer.WriteProperty(200, "limit_percent", limit_percent);
|
524
524
|
serializer.WriteProperty(201, "offset_val", offset_val);
|
525
|
-
serializer.
|
526
|
-
serializer.
|
525
|
+
serializer.WritePropertyWithDefault(202, "limit", limit, unique_ptr<Expression>());
|
526
|
+
serializer.WritePropertyWithDefault(203, "offset", offset, unique_ptr<Expression>());
|
527
527
|
}
|
528
528
|
|
529
529
|
unique_ptr<LogicalOperator> LogicalLimitPercent::FormatDeserialize(FormatDeserializer &deserializer) {
|
530
530
|
auto limit_percent = deserializer.ReadProperty<double>(200, "limit_percent");
|
531
531
|
auto offset_val = deserializer.ReadProperty<int64_t>(201, "offset_val");
|
532
|
-
auto limit = deserializer.
|
533
|
-
auto offset = deserializer.
|
532
|
+
auto limit = deserializer.ReadPropertyWithDefault<unique_ptr<Expression>>(202, "limit", unique_ptr<Expression>());
|
533
|
+
auto offset = deserializer.ReadPropertyWithDefault<unique_ptr<Expression>>(203, "offset", unique_ptr<Expression>());
|
534
534
|
auto result = duckdb::unique_ptr<LogicalLimitPercent>(new LogicalLimitPercent(limit_percent, offset_val, std::move(limit), std::move(offset)));
|
535
535
|
return std::move(result);
|
536
536
|
}
|
@@ -682,7 +682,7 @@ unique_ptr<LogicalOperator> LogicalShow::FormatDeserialize(FormatDeserializer &d
|
|
682
682
|
|
683
683
|
void LogicalSimple::FormatSerialize(FormatSerializer &serializer) const {
|
684
684
|
LogicalOperator::FormatSerialize(serializer);
|
685
|
-
serializer.WriteProperty(200, "info",
|
685
|
+
serializer.WriteProperty(200, "info", info);
|
686
686
|
}
|
687
687
|
|
688
688
|
unique_ptr<LogicalOperator> LogicalSimple::FormatDeserialize(FormatDeserializer &deserializer) {
|
@@ -39,7 +39,7 @@ unique_ptr<MacroFunction> MacroFunction::FormatDeserialize(FormatDeserializer &d
|
|
39
39
|
|
40
40
|
void ScalarMacroFunction::FormatSerialize(FormatSerializer &serializer) const {
|
41
41
|
MacroFunction::FormatSerialize(serializer);
|
42
|
-
serializer.WriteProperty(200, "expression",
|
42
|
+
serializer.WriteProperty(200, "expression", expression);
|
43
43
|
}
|
44
44
|
|
45
45
|
unique_ptr<MacroFunction> ScalarMacroFunction::FormatDeserialize(FormatDeserializer &deserializer) {
|
@@ -50,7 +50,7 @@ unique_ptr<MacroFunction> ScalarMacroFunction::FormatDeserialize(FormatDeseriali
|
|
50
50
|
|
51
51
|
void TableMacroFunction::FormatSerialize(FormatSerializer &serializer) const {
|
52
52
|
MacroFunction::FormatSerialize(serializer);
|
53
|
-
serializer.WriteProperty(200, "query_node",
|
53
|
+
serializer.WriteProperty(200, "query_node", query_node);
|
54
54
|
}
|
55
55
|
|
56
56
|
unique_ptr<MacroFunction> TableMacroFunction::FormatDeserialize(FormatDeserializer &deserializer) {
|