duckdb 0.7.2-dev717.0 → 0.7.2-dev865.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/lib/duckdb.d.ts +12 -1
- package/lib/duckdb.js +19 -0
- package/package.json +1 -1
- package/src/duckdb/extension/json/include/json_common.hpp +1 -0
- package/src/duckdb/extension/json/include/json_functions.hpp +1 -0
- package/src/duckdb/extension/json/include/json_serializer.hpp +77 -0
- package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +147 -0
- package/src/duckdb/extension/json/json_functions.cpp +1 -0
- package/src/duckdb/extension/json/json_scan.cpp +2 -2
- package/src/duckdb/extension/json/json_serializer.cpp +217 -0
- package/src/duckdb/src/catalog/catalog.cpp +21 -5
- package/src/duckdb/src/common/enums/expression_type.cpp +8 -222
- package/src/duckdb/src/common/enums/join_type.cpp +3 -22
- package/src/duckdb/src/common/exception.cpp +2 -2
- package/src/duckdb/src/common/serializer/enum_serializer.cpp +1172 -0
- package/src/duckdb/src/common/types/value.cpp +117 -93
- package/src/duckdb/src/common/types/vector.cpp +140 -1
- package/src/duckdb/src/common/types.cpp +166 -89
- package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +3 -0
- package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +5 -8
- package/src/duckdb/src/function/scalar/date/date_part.cpp +2 -2
- package/src/duckdb/src/function/scalar/date/date_trunc.cpp +2 -2
- package/src/duckdb/src/function/scalar/list/list_aggregates.cpp +1 -1
- package/src/duckdb/src/function/scalar/list/list_lambdas.cpp +4 -0
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +8 -8
- package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +243 -0
- package/src/duckdb/src/function/scalar/string/regexp/regexp_util.cpp +79 -0
- package/src/duckdb/src/function/scalar/string/regexp.cpp +21 -80
- package/src/duckdb/src/function/table/arrow_conversion.cpp +7 -1
- package/src/duckdb/src/function/table/table_scan.cpp +1 -1
- package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/enums/aggregate_handling.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/enums/expression_type.hpp +2 -3
- package/src/duckdb/src/include/duckdb/common/enums/joinref_type.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/enums/order_type.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/enums/set_operation_type.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/exception.hpp +40 -9
- package/src/duckdb/src/include/duckdb/common/preserved_error.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/serializer/enum_serializer.hpp +113 -0
- package/src/duckdb/src/include/duckdb/common/serializer/format_deserializer.hpp +336 -0
- package/src/duckdb/src/include/duckdb/common/serializer/format_serializer.hpp +268 -0
- package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +126 -0
- package/src/duckdb/src/include/duckdb/common/string_util.hpp +12 -0
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +2 -31
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/types.hpp +8 -2
- package/src/duckdb/src/include/duckdb/function/scalar/regexp.hpp +81 -1
- package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/default_expression.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/sample_options.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/query_node/recursive_cte_node.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/query_node/select_node.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/query_node/set_operation_node.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/query_node.hpp +11 -1
- package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +24 -1
- package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +2 -1
- package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +6 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +4 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +9 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tableref.hpp +3 -1
- package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats.hpp +9 -52
- package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats_union.hpp +62 -0
- package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +6 -3
- package/src/duckdb/src/include/duckdb/storage/table/column_data_checkpointer.hpp +3 -2
- package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +5 -3
- package/src/duckdb/src/include/duckdb/storage/table/persistent_table_data.hpp +4 -1
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +6 -3
- package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +5 -3
- package/src/duckdb/src/include/duckdb/storage/table/row_group_segment_tree.hpp +37 -0
- package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +8 -1
- package/src/duckdb/src/include/duckdb/storage/table/segment_base.hpp +4 -3
- package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +271 -26
- package/src/duckdb/src/main/extension/extension_install.cpp +7 -2
- package/src/duckdb/src/optimizer/deliminator.cpp +1 -1
- package/src/duckdb/src/optimizer/filter_combiner.cpp +1 -1
- package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +3 -3
- package/src/duckdb/src/optimizer/rule/move_constants.cpp +2 -2
- package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +1 -1
- package/src/duckdb/src/parser/common_table_expression_info.cpp +19 -0
- package/src/duckdb/src/parser/expression/between_expression.cpp +17 -0
- package/src/duckdb/src/parser/expression/case_expression.cpp +28 -0
- package/src/duckdb/src/parser/expression/cast_expression.cpp +17 -0
- package/src/duckdb/src/parser/expression/collate_expression.cpp +16 -0
- package/src/duckdb/src/parser/expression/columnref_expression.cpp +15 -0
- package/src/duckdb/src/parser/expression/comparison_expression.cpp +16 -0
- package/src/duckdb/src/parser/expression/conjunction_expression.cpp +15 -0
- package/src/duckdb/src/parser/expression/constant_expression.cpp +14 -0
- package/src/duckdb/src/parser/expression/default_expression.cpp +7 -0
- package/src/duckdb/src/parser/expression/function_expression.cpp +35 -0
- package/src/duckdb/src/parser/expression/lambda_expression.cpp +16 -0
- package/src/duckdb/src/parser/expression/operator_expression.cpp +15 -0
- package/src/duckdb/src/parser/expression/parameter_expression.cpp +15 -0
- package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +14 -0
- package/src/duckdb/src/parser/expression/star_expression.cpp +20 -0
- package/src/duckdb/src/parser/expression/subquery_expression.cpp +20 -0
- package/src/duckdb/src/parser/expression/window_expression.cpp +43 -0
- package/src/duckdb/src/parser/parsed_data/sample_options.cpp +22 -10
- package/src/duckdb/src/parser/parsed_expression.cpp +72 -0
- package/src/duckdb/src/parser/query_node/recursive_cte_node.cpp +21 -0
- package/src/duckdb/src/parser/query_node/select_node.cpp +31 -0
- package/src/duckdb/src/parser/query_node/set_operation_node.cpp +17 -0
- package/src/duckdb/src/parser/query_node.cpp +50 -0
- package/src/duckdb/src/parser/result_modifier.cpp +78 -0
- package/src/duckdb/src/parser/statement/select_statement.cpp +12 -0
- package/src/duckdb/src/parser/tableref/basetableref.cpp +21 -0
- package/src/duckdb/src/parser/tableref/emptytableref.cpp +4 -0
- package/src/duckdb/src/parser/tableref/expressionlistref.cpp +17 -0
- package/src/duckdb/src/parser/tableref/joinref.cpp +25 -0
- package/src/duckdb/src/parser/tableref/pivotref.cpp +53 -0
- package/src/duckdb/src/parser/tableref/subqueryref.cpp +15 -0
- package/src/duckdb/src/parser/tableref/table_function.cpp +17 -0
- package/src/duckdb/src/parser/tableref.cpp +46 -0
- package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +11 -0
- package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +1 -1
- package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +22 -4
- package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +4 -0
- package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +1 -1
- package/src/duckdb/src/planner/expression/bound_expression.cpp +4 -0
- package/src/duckdb/src/storage/checkpoint/table_data_reader.cpp +3 -11
- package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +6 -0
- package/src/duckdb/src/storage/checkpoint_manager.cpp +1 -0
- package/src/duckdb/src/storage/compression/numeric_constant.cpp +2 -2
- package/src/duckdb/src/storage/data_table.cpp +1 -1
- package/src/duckdb/src/storage/statistics/numeric_stats.cpp +145 -83
- package/src/duckdb/src/storage/statistics/numeric_stats_union.cpp +65 -0
- package/src/duckdb/src/storage/storage_info.cpp +1 -1
- package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +1 -6
- package/src/duckdb/src/storage/table/column_data.cpp +29 -35
- package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +5 -5
- package/src/duckdb/src/storage/table/column_segment.cpp +8 -7
- package/src/duckdb/src/storage/table/list_column_data.cpp +2 -1
- package/src/duckdb/src/storage/table/persistent_table_data.cpp +2 -1
- package/src/duckdb/src/storage/table/row_group.cpp +9 -9
- package/src/duckdb/src/storage/table/row_group_collection.cpp +82 -66
- package/src/duckdb/src/storage/table/scan_state.cpp +22 -3
- package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -0
- package/src/duckdb/src/storage/table/struct_column_data.cpp +1 -0
- package/src/duckdb/src/verification/deserialized_statement_verifier.cpp +0 -1
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +11780 -11512
- package/src/duckdb/third_party/re2/re2/re2.cc +9 -0
- package/src/duckdb/third_party/re2/re2/re2.h +2 -0
- package/src/duckdb/ub_extension_json_json_functions.cpp +2 -0
- package/src/duckdb/ub_src_common_serializer.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar_string_regexp.cpp +4 -0
- package/src/duckdb/ub_src_parser.cpp +2 -0
- package/src/duckdb/ub_src_storage_statistics.cpp +2 -0
- package/src/duckdb/ub_src_storage_table.cpp +0 -2
- package/src/utils.cpp +12 -0
- package/test/extension.test.ts +44 -26
- package/src/duckdb/src/storage/table/segment_tree.cpp +0 -179
@@ -5,6 +5,9 @@
|
|
5
5
|
#include "duckdb/common/string_util.hpp"
|
6
6
|
#include "duckdb/parser/qualified_name.hpp"
|
7
7
|
|
8
|
+
#include "duckdb/common/serializer/format_serializer.hpp"
|
9
|
+
#include "duckdb/common/serializer/format_deserializer.hpp"
|
10
|
+
|
8
11
|
namespace duckdb {
|
9
12
|
|
10
13
|
ColumnRefExpression::ColumnRefExpression(string column_name, string table_name)
|
@@ -100,4 +103,16 @@ unique_ptr<ParsedExpression> ColumnRefExpression::Deserialize(ExpressionType typ
|
|
100
103
|
return std::move(expression);
|
101
104
|
}
|
102
105
|
|
106
|
+
void ColumnRefExpression::FormatSerialize(FormatSerializer &serializer) const {
|
107
|
+
ParsedExpression::FormatSerialize(serializer);
|
108
|
+
serializer.WriteProperty("column_names", column_names);
|
109
|
+
}
|
110
|
+
|
111
|
+
unique_ptr<ParsedExpression> ColumnRefExpression::FormatDeserialize(ExpressionType type,
|
112
|
+
FormatDeserializer &deserializer) {
|
113
|
+
auto column_names = deserializer.ReadProperty<vector<string>>("column_names");
|
114
|
+
auto expression = make_unique<ColumnRefExpression>(std::move(column_names));
|
115
|
+
return std::move(expression);
|
116
|
+
}
|
117
|
+
|
103
118
|
} // namespace duckdb
|
@@ -4,6 +4,9 @@
|
|
4
4
|
#include "duckdb/common/field_writer.hpp"
|
5
5
|
#include "duckdb/parser/expression/cast_expression.hpp"
|
6
6
|
|
7
|
+
#include "duckdb/common/serializer/format_serializer.hpp"
|
8
|
+
#include "duckdb/common/serializer/format_deserializer.hpp"
|
9
|
+
|
7
10
|
namespace duckdb {
|
8
11
|
|
9
12
|
ComparisonExpression::ComparisonExpression(ExpressionType type, unique_ptr<ParsedExpression> left,
|
@@ -42,4 +45,17 @@ unique_ptr<ParsedExpression> ComparisonExpression::Deserialize(ExpressionType ty
|
|
42
45
|
return make_unique<ComparisonExpression>(type, std::move(left_child), std::move(right_child));
|
43
46
|
}
|
44
47
|
|
48
|
+
void ComparisonExpression::FormatSerialize(FormatSerializer &serializer) const {
|
49
|
+
ParsedExpression::FormatSerialize(serializer);
|
50
|
+
serializer.WriteProperty("left", *left);
|
51
|
+
serializer.WriteProperty("right", *right);
|
52
|
+
}
|
53
|
+
|
54
|
+
unique_ptr<ParsedExpression> ComparisonExpression::FormatDeserialize(ExpressionType type,
|
55
|
+
FormatDeserializer &deserializer) {
|
56
|
+
auto left = deserializer.ReadProperty<unique_ptr<ParsedExpression>>("left");
|
57
|
+
auto right = deserializer.ReadProperty<unique_ptr<ParsedExpression>>("right");
|
58
|
+
return make_unique<ComparisonExpression>(type, std::move(left), std::move(right));
|
59
|
+
}
|
60
|
+
|
45
61
|
} // namespace duckdb
|
@@ -3,6 +3,9 @@
|
|
3
3
|
#include "duckdb/common/field_writer.hpp"
|
4
4
|
#include "duckdb/parser/expression_util.hpp"
|
5
5
|
|
6
|
+
#include "duckdb/common/serializer/format_serializer.hpp"
|
7
|
+
#include "duckdb/common/serializer/format_deserializer.hpp"
|
8
|
+
|
6
9
|
namespace duckdb {
|
7
10
|
|
8
11
|
ConjunctionExpression::ConjunctionExpression(ExpressionType type)
|
@@ -65,4 +68,16 @@ unique_ptr<ParsedExpression> ConjunctionExpression::Deserialize(ExpressionType t
|
|
65
68
|
return std::move(result);
|
66
69
|
}
|
67
70
|
|
71
|
+
void ConjunctionExpression::FormatSerialize(FormatSerializer &serializer) const {
|
72
|
+
ParsedExpression::FormatSerialize(serializer);
|
73
|
+
serializer.WriteProperty("children", children);
|
74
|
+
}
|
75
|
+
|
76
|
+
unique_ptr<ParsedExpression> ConjunctionExpression::FormatDeserialize(ExpressionType type,
|
77
|
+
FormatDeserializer &deserializer) {
|
78
|
+
auto result = make_unique<ConjunctionExpression>(type);
|
79
|
+
result->children = deserializer.ReadProperty<vector<unique_ptr<ParsedExpression>>>("children");
|
80
|
+
return std::move(result);
|
81
|
+
}
|
82
|
+
|
68
83
|
} // namespace duckdb
|
@@ -5,6 +5,9 @@
|
|
5
5
|
#include "duckdb/common/types/hash.hpp"
|
6
6
|
#include "duckdb/common/value_operations/value_operations.hpp"
|
7
7
|
|
8
|
+
#include "duckdb/common/serializer/format_serializer.hpp"
|
9
|
+
#include "duckdb/common/serializer/format_deserializer.hpp"
|
10
|
+
|
8
11
|
namespace duckdb {
|
9
12
|
|
10
13
|
ConstantExpression::ConstantExpression(Value val)
|
@@ -38,4 +41,15 @@ unique_ptr<ParsedExpression> ConstantExpression::Deserialize(ExpressionType type
|
|
38
41
|
return make_unique<ConstantExpression>(std::move(value));
|
39
42
|
}
|
40
43
|
|
44
|
+
void ConstantExpression::FormatSerialize(FormatSerializer &serializer) const {
|
45
|
+
ParsedExpression::FormatSerialize(serializer);
|
46
|
+
serializer.WriteProperty("value", value);
|
47
|
+
}
|
48
|
+
|
49
|
+
unique_ptr<ParsedExpression> ConstantExpression::FormatDeserialize(ExpressionType type,
|
50
|
+
FormatDeserializer &deserializer) {
|
51
|
+
auto value = deserializer.ReadProperty<Value>("value");
|
52
|
+
return make_unique<ConstantExpression>(std::move(value));
|
53
|
+
}
|
54
|
+
|
41
55
|
} // namespace duckdb
|
@@ -2,6 +2,9 @@
|
|
2
2
|
|
3
3
|
#include "duckdb/common/exception.hpp"
|
4
4
|
|
5
|
+
#include "duckdb/common/serializer/format_serializer.hpp"
|
6
|
+
#include "duckdb/common/serializer/format_deserializer.hpp"
|
7
|
+
|
5
8
|
namespace duckdb {
|
6
9
|
|
7
10
|
DefaultExpression::DefaultExpression() : ParsedExpression(ExpressionType::VALUE_DEFAULT, ExpressionClass::DEFAULT) {
|
@@ -24,4 +27,8 @@ unique_ptr<ParsedExpression> DefaultExpression::Deserialize(ExpressionType type,
|
|
24
27
|
return make_unique<DefaultExpression>();
|
25
28
|
}
|
26
29
|
|
30
|
+
void DefaultExpression::FormatSerialize(FormatSerializer &serializer) const {
|
31
|
+
ParsedExpression::FormatSerialize(serializer);
|
32
|
+
}
|
33
|
+
|
27
34
|
} // namespace duckdb
|
@@ -6,6 +6,9 @@
|
|
6
6
|
#include "duckdb/common/field_writer.hpp"
|
7
7
|
#include "duckdb/common/types/hash.hpp"
|
8
8
|
|
9
|
+
#include "duckdb/common/serializer/format_serializer.hpp"
|
10
|
+
#include "duckdb/common/serializer/format_deserializer.hpp"
|
11
|
+
|
9
12
|
namespace duckdb {
|
10
13
|
|
11
14
|
FunctionExpression::FunctionExpression(string catalog, string schema, const string &function_name,
|
@@ -122,4 +125,36 @@ void FunctionExpression::Verify() const {
|
|
122
125
|
D_ASSERT(!function_name.empty());
|
123
126
|
}
|
124
127
|
|
128
|
+
void FunctionExpression::FormatSerialize(FormatSerializer &serializer) const {
|
129
|
+
ParsedExpression::FormatSerialize(serializer);
|
130
|
+
serializer.WriteProperty("function_name", function_name);
|
131
|
+
serializer.WriteProperty("schema", schema);
|
132
|
+
serializer.WriteProperty("children", children);
|
133
|
+
serializer.WriteOptionalProperty("filter", filter);
|
134
|
+
serializer.WriteProperty("order_bys", (ResultModifier &)*order_bys);
|
135
|
+
serializer.WriteProperty("distinct", distinct);
|
136
|
+
serializer.WriteProperty("is_operator", is_operator);
|
137
|
+
serializer.WriteProperty("export_state", export_state);
|
138
|
+
serializer.WriteProperty("catalog", catalog);
|
139
|
+
}
|
140
|
+
|
141
|
+
unique_ptr<ParsedExpression> FunctionExpression::FormatDeserialize(ExpressionType type,
|
142
|
+
FormatDeserializer &deserializer) {
|
143
|
+
auto function_name = deserializer.ReadProperty<string>("function_name");
|
144
|
+
auto schema = deserializer.ReadProperty<string>("schema");
|
145
|
+
auto children = deserializer.ReadProperty<vector<unique_ptr<ParsedExpression>>>("children");
|
146
|
+
auto filter = deserializer.ReadOptionalProperty<unique_ptr<ParsedExpression>>("filter");
|
147
|
+
auto order_bys = unique_ptr_cast<ResultModifier, OrderModifier>(
|
148
|
+
deserializer.ReadProperty<unique_ptr<ResultModifier>>("order_bys"));
|
149
|
+
auto distinct = deserializer.ReadProperty<bool>("distinct");
|
150
|
+
auto is_operator = deserializer.ReadProperty<bool>("is_operator");
|
151
|
+
auto export_state = deserializer.ReadProperty<bool>("export_state");
|
152
|
+
auto catalog = deserializer.ReadProperty<string>("catalog");
|
153
|
+
|
154
|
+
unique_ptr<FunctionExpression> function;
|
155
|
+
function = make_unique<FunctionExpression>(catalog, schema, function_name, std::move(children), std::move(filter),
|
156
|
+
std::move(order_bys), distinct, is_operator, export_state);
|
157
|
+
return std::move(function);
|
158
|
+
}
|
159
|
+
|
125
160
|
} // namespace duckdb
|
@@ -3,6 +3,9 @@
|
|
3
3
|
#include "duckdb/common/types/hash.hpp"
|
4
4
|
#include "duckdb/common/string_util.hpp"
|
5
5
|
|
6
|
+
#include "duckdb/common/serializer/format_serializer.hpp"
|
7
|
+
#include "duckdb/common/serializer/format_deserializer.hpp"
|
8
|
+
|
6
9
|
namespace duckdb {
|
7
10
|
|
8
11
|
LambdaExpression::LambdaExpression(unique_ptr<ParsedExpression> lhs, unique_ptr<ParsedExpression> expr)
|
@@ -41,4 +44,17 @@ unique_ptr<ParsedExpression> LambdaExpression::Deserialize(ExpressionType type,
|
|
41
44
|
return make_unique<LambdaExpression>(std::move(lhs), std::move(expr));
|
42
45
|
}
|
43
46
|
|
47
|
+
void LambdaExpression::FormatSerialize(FormatSerializer &serializer) const {
|
48
|
+
ParsedExpression::FormatSerialize(serializer);
|
49
|
+
serializer.WriteProperty("lhs", *lhs);
|
50
|
+
serializer.WriteProperty("expr", *expr);
|
51
|
+
}
|
52
|
+
|
53
|
+
unique_ptr<ParsedExpression> LambdaExpression::FormatDeserialize(ExpressionType type,
|
54
|
+
FormatDeserializer &deserializer) {
|
55
|
+
auto lhs = deserializer.ReadProperty<unique_ptr<ParsedExpression>>("lhs");
|
56
|
+
auto expr = deserializer.ReadProperty<unique_ptr<ParsedExpression>>("expr");
|
57
|
+
return make_unique<LambdaExpression>(std::move(lhs), std::move(expr));
|
58
|
+
}
|
59
|
+
|
44
60
|
} // namespace duckdb
|
@@ -3,6 +3,9 @@
|
|
3
3
|
#include "duckdb/common/exception.hpp"
|
4
4
|
#include "duckdb/common/field_writer.hpp"
|
5
5
|
|
6
|
+
#include "duckdb/common/serializer/format_serializer.hpp"
|
7
|
+
#include "duckdb/common/serializer/format_deserializer.hpp"
|
8
|
+
|
6
9
|
namespace duckdb {
|
7
10
|
|
8
11
|
OperatorExpression::OperatorExpression(ExpressionType type, unique_ptr<ParsedExpression> left,
|
@@ -55,4 +58,16 @@ unique_ptr<ParsedExpression> OperatorExpression::Deserialize(ExpressionType type
|
|
55
58
|
return std::move(expression);
|
56
59
|
}
|
57
60
|
|
61
|
+
void OperatorExpression::FormatSerialize(FormatSerializer &serializer) const {
|
62
|
+
ParsedExpression::FormatSerialize(serializer);
|
63
|
+
serializer.WriteProperty("children", children);
|
64
|
+
}
|
65
|
+
|
66
|
+
unique_ptr<ParsedExpression> OperatorExpression::FormatDeserialize(ExpressionType type,
|
67
|
+
FormatDeserializer &deserializer) {
|
68
|
+
auto expression = make_unique<OperatorExpression>(type);
|
69
|
+
expression->children = deserializer.ReadProperty<vector<unique_ptr<ParsedExpression>>>("children");
|
70
|
+
return std::move(expression);
|
71
|
+
}
|
72
|
+
|
58
73
|
} // namespace duckdb
|
@@ -5,6 +5,9 @@
|
|
5
5
|
#include "duckdb/common/types/hash.hpp"
|
6
6
|
#include "duckdb/common/to_string.hpp"
|
7
7
|
|
8
|
+
#include "duckdb/common/serializer/format_serializer.hpp"
|
9
|
+
#include "duckdb/common/serializer/format_deserializer.hpp"
|
10
|
+
|
8
11
|
namespace duckdb {
|
9
12
|
|
10
13
|
ParameterExpression::ParameterExpression()
|
@@ -41,4 +44,16 @@ unique_ptr<ParsedExpression> ParameterExpression::Deserialize(ExpressionType typ
|
|
41
44
|
return std::move(expression);
|
42
45
|
}
|
43
46
|
|
47
|
+
void ParameterExpression::FormatSerialize(FormatSerializer &serializer) const {
|
48
|
+
ParsedExpression::FormatSerialize(serializer);
|
49
|
+
serializer.WriteProperty("parameter_nr", parameter_nr);
|
50
|
+
}
|
51
|
+
|
52
|
+
unique_ptr<ParsedExpression> ParameterExpression::FormatDeserialize(ExpressionType type,
|
53
|
+
FormatDeserializer &deserializer) {
|
54
|
+
auto expression = make_unique<ParameterExpression>();
|
55
|
+
expression->parameter_nr = deserializer.ReadProperty<idx_t>("parameter_nr");
|
56
|
+
return std::move(expression);
|
57
|
+
}
|
58
|
+
|
44
59
|
} // namespace duckdb
|
@@ -5,6 +5,9 @@
|
|
5
5
|
#include "duckdb/common/types/hash.hpp"
|
6
6
|
#include "duckdb/common/to_string.hpp"
|
7
7
|
|
8
|
+
#include "duckdb/common/serializer/format_serializer.hpp"
|
9
|
+
#include "duckdb/common/serializer/format_deserializer.hpp"
|
10
|
+
|
8
11
|
namespace duckdb {
|
9
12
|
|
10
13
|
PositionalReferenceExpression::PositionalReferenceExpression(idx_t index)
|
@@ -40,4 +43,15 @@ unique_ptr<ParsedExpression> PositionalReferenceExpression::Deserialize(Expressi
|
|
40
43
|
return std::move(expression);
|
41
44
|
}
|
42
45
|
|
46
|
+
void PositionalReferenceExpression::FormatSerialize(FormatSerializer &serializer) const {
|
47
|
+
ParsedExpression::FormatSerialize(serializer);
|
48
|
+
serializer.WriteProperty("index", index);
|
49
|
+
}
|
50
|
+
|
51
|
+
unique_ptr<ParsedExpression> PositionalReferenceExpression::FormatDeserialize(ExpressionType type,
|
52
|
+
FormatDeserializer &deserializer) {
|
53
|
+
auto expression = make_unique<PositionalReferenceExpression>(deserializer.ReadProperty<idx_t>("index"));
|
54
|
+
return std::move(expression);
|
55
|
+
}
|
56
|
+
|
43
57
|
} // namespace duckdb
|
@@ -3,6 +3,9 @@
|
|
3
3
|
#include "duckdb/common/exception.hpp"
|
4
4
|
#include "duckdb/common/field_writer.hpp"
|
5
5
|
|
6
|
+
#include "duckdb/common/serializer/format_serializer.hpp"
|
7
|
+
#include "duckdb/common/serializer/format_deserializer.hpp"
|
8
|
+
|
6
9
|
namespace duckdb {
|
7
10
|
|
8
11
|
StarExpression::StarExpression(string relation_name_p)
|
@@ -128,4 +131,21 @@ unique_ptr<ParsedExpression> StarExpression::Copy() const {
|
|
128
131
|
return std::move(copy);
|
129
132
|
}
|
130
133
|
|
134
|
+
void StarExpression::FormatSerialize(FormatSerializer &serializer) const {
|
135
|
+
ParsedExpression::FormatSerialize(serializer);
|
136
|
+
serializer.WriteProperty("relation_name", relation_name);
|
137
|
+
serializer.WriteProperty("exclude_list", exclude_list);
|
138
|
+
serializer.WriteProperty("replace_list", replace_list);
|
139
|
+
serializer.WriteProperty("columns", columns);
|
140
|
+
}
|
141
|
+
|
142
|
+
unique_ptr<ParsedExpression> StarExpression::FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer) {
|
143
|
+
auto result = make_unique<StarExpression>();
|
144
|
+
deserializer.ReadProperty("relation_name", result->relation_name);
|
145
|
+
deserializer.ReadProperty("exclude_list", result->exclude_list);
|
146
|
+
deserializer.ReadProperty("replace_list", result->replace_list);
|
147
|
+
deserializer.ReadProperty("columns", result->columns);
|
148
|
+
return std::move(result);
|
149
|
+
}
|
150
|
+
|
131
151
|
} // namespace duckdb
|
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
#include "duckdb/common/exception.hpp"
|
4
4
|
#include "duckdb/common/field_writer.hpp"
|
5
|
+
#include "duckdb/common/serializer/format_deserializer.hpp"
|
6
|
+
#include "duckdb/common/serializer/format_serializer.hpp"
|
5
7
|
|
6
8
|
namespace duckdb {
|
7
9
|
|
@@ -72,4 +74,22 @@ unique_ptr<ParsedExpression> SubqueryExpression::Deserialize(ExpressionType type
|
|
72
74
|
return std::move(expression);
|
73
75
|
}
|
74
76
|
|
77
|
+
void SubqueryExpression::FormatSerialize(FormatSerializer &serializer) const {
|
78
|
+
ParsedExpression::FormatSerialize(serializer);
|
79
|
+
serializer.WriteProperty("subquery_type", subquery_type);
|
80
|
+
serializer.WriteProperty("subquery", *subquery.get());
|
81
|
+
serializer.WriteOptionalProperty("child", child);
|
82
|
+
serializer.WriteProperty("comparison_type", comparison_type);
|
83
|
+
}
|
84
|
+
|
85
|
+
unique_ptr<ParsedExpression> SubqueryExpression::FormatDeserialize(ExpressionType type,
|
86
|
+
FormatDeserializer &deserializer) {
|
87
|
+
auto expression = make_unique<SubqueryExpression>();
|
88
|
+
deserializer.ReadProperty("subquery_type", expression->subquery_type);
|
89
|
+
deserializer.ReadProperty("subquery", expression->subquery);
|
90
|
+
deserializer.ReadOptionalProperty("child", expression->child);
|
91
|
+
deserializer.ReadProperty("comparison_type", expression->comparison_type);
|
92
|
+
return std::move(expression);
|
93
|
+
}
|
94
|
+
|
75
95
|
} // namespace duckdb
|
@@ -4,6 +4,10 @@
|
|
4
4
|
#include "duckdb/common/field_writer.hpp"
|
5
5
|
#include "duckdb/common/string_util.hpp"
|
6
6
|
|
7
|
+
#include "duckdb/common/serializer/enum_serializer.hpp"
|
8
|
+
#include "duckdb/common/serializer/format_serializer.hpp"
|
9
|
+
#include "duckdb/common/serializer/format_deserializer.hpp"
|
10
|
+
|
7
11
|
namespace duckdb {
|
8
12
|
|
9
13
|
WindowExpression::WindowExpression(ExpressionType type, string catalog_name, string schema, const string &function_name)
|
@@ -139,6 +143,45 @@ void WindowExpression::Serialize(FieldWriter &writer) const {
|
|
139
143
|
writer.WriteString(catalog);
|
140
144
|
}
|
141
145
|
|
146
|
+
void WindowExpression::FormatSerialize(FormatSerializer &serializer) const {
|
147
|
+
ParsedExpression::FormatSerialize(serializer);
|
148
|
+
serializer.WriteProperty("function_name", function_name);
|
149
|
+
serializer.WriteProperty("schema", schema);
|
150
|
+
serializer.WriteProperty("children", children);
|
151
|
+
serializer.WriteProperty("partitions", partitions);
|
152
|
+
serializer.WriteProperty("orders", orders);
|
153
|
+
serializer.WriteProperty("start", start);
|
154
|
+
serializer.WriteProperty("end", end);
|
155
|
+
serializer.WriteOptionalProperty("start_expr", start_expr);
|
156
|
+
serializer.WriteOptionalProperty("end_expr", end_expr);
|
157
|
+
serializer.WriteOptionalProperty("offset_expr", offset_expr);
|
158
|
+
serializer.WriteOptionalProperty("default_expr", default_expr);
|
159
|
+
serializer.WriteProperty("ignore_nulls", ignore_nulls);
|
160
|
+
serializer.WriteOptionalProperty("filter_expr", filter_expr);
|
161
|
+
serializer.WriteProperty("catalog", catalog);
|
162
|
+
}
|
163
|
+
|
164
|
+
unique_ptr<ParsedExpression> WindowExpression::FormatDeserialize(ExpressionType type,
|
165
|
+
FormatDeserializer &deserializer) {
|
166
|
+
auto function_name = deserializer.ReadProperty<string>("function_name");
|
167
|
+
auto schema = deserializer.ReadProperty<string>("schema");
|
168
|
+
auto expr = make_unique<WindowExpression>(type, INVALID_CATALOG, std::move(schema), function_name);
|
169
|
+
|
170
|
+
deserializer.ReadProperty("children", expr->children);
|
171
|
+
deserializer.ReadProperty("partitions", expr->partitions);
|
172
|
+
deserializer.ReadProperty("orders", expr->orders);
|
173
|
+
deserializer.ReadProperty("start", expr->start);
|
174
|
+
deserializer.ReadProperty("end", expr->end);
|
175
|
+
deserializer.ReadOptionalProperty("start_expr", expr->start_expr);
|
176
|
+
deserializer.ReadOptionalProperty("end_expr", expr->end_expr);
|
177
|
+
deserializer.ReadOptionalProperty("offset_expr", expr->offset_expr);
|
178
|
+
deserializer.ReadOptionalProperty("default_expr", expr->default_expr);
|
179
|
+
deserializer.ReadProperty("ignore_nulls", expr->ignore_nulls);
|
180
|
+
deserializer.ReadOptionalProperty("filter_expr", expr->filter_expr);
|
181
|
+
deserializer.ReadProperty("catalog", expr->catalog);
|
182
|
+
return std::move(expr);
|
183
|
+
}
|
184
|
+
|
142
185
|
unique_ptr<ParsedExpression> WindowExpression::Deserialize(ExpressionType type, FieldReader &reader) {
|
143
186
|
auto function_name = reader.ReadRequired<string>();
|
144
187
|
auto schema = reader.ReadRequired<string>();
|
@@ -1,19 +1,13 @@
|
|
1
1
|
#include "duckdb/parser/parsed_data/sample_options.hpp"
|
2
2
|
#include "duckdb/common/field_writer.hpp"
|
3
|
+
#include "duckdb/common/serializer/enum_serializer.hpp"
|
4
|
+
#include "duckdb/common/serializer/format_serializer.hpp"
|
5
|
+
#include "duckdb/common/serializer/format_deserializer.hpp"
|
3
6
|
|
4
7
|
namespace duckdb {
|
5
8
|
|
6
9
|
string SampleMethodToString(SampleMethod method) {
|
7
|
-
|
8
|
-
case SampleMethod::SYSTEM_SAMPLE:
|
9
|
-
return "System";
|
10
|
-
case SampleMethod::BERNOULLI_SAMPLE:
|
11
|
-
return "Bernoulli";
|
12
|
-
case SampleMethod::RESERVOIR_SAMPLE:
|
13
|
-
return "Reservoir";
|
14
|
-
default:
|
15
|
-
return "Unknown";
|
16
|
-
}
|
10
|
+
return EnumSerializer::EnumToString(method);
|
17
11
|
}
|
18
12
|
|
19
13
|
void SampleOptions::Serialize(Serializer &serializer) {
|
@@ -25,6 +19,24 @@ void SampleOptions::Serialize(Serializer &serializer) {
|
|
25
19
|
writer.Finalize();
|
26
20
|
}
|
27
21
|
|
22
|
+
void SampleOptions::FormatSerialize(FormatSerializer &serializer) const {
|
23
|
+
serializer.WriteProperty("sample_size", sample_size);
|
24
|
+
serializer.WriteProperty("is_percentage", is_percentage);
|
25
|
+
serializer.WriteProperty("method", method);
|
26
|
+
serializer.WriteProperty("seed", seed);
|
27
|
+
}
|
28
|
+
|
29
|
+
std::unique_ptr<SampleOptions> SampleOptions::FormatDeserialize(FormatDeserializer &deserializer) {
|
30
|
+
auto result = make_unique<SampleOptions>();
|
31
|
+
|
32
|
+
deserializer.ReadProperty("sample_size", result->sample_size);
|
33
|
+
deserializer.ReadProperty("is_percentage", result->is_percentage);
|
34
|
+
deserializer.ReadProperty("method", result->method);
|
35
|
+
deserializer.ReadProperty("seed", result->seed);
|
36
|
+
|
37
|
+
return result;
|
38
|
+
}
|
39
|
+
|
28
40
|
unique_ptr<SampleOptions> SampleOptions::Deserialize(Deserializer &source) {
|
29
41
|
auto result = make_unique<SampleOptions>();
|
30
42
|
|
@@ -5,6 +5,8 @@
|
|
5
5
|
#include "duckdb/common/types/hash.hpp"
|
6
6
|
#include "duckdb/parser/expression/list.hpp"
|
7
7
|
#include "duckdb/parser/parsed_expression_iterator.hpp"
|
8
|
+
#include "duckdb/common/serializer/format_serializer.hpp"
|
9
|
+
#include "duckdb/common/serializer/format_deserializer.hpp"
|
8
10
|
|
9
11
|
namespace duckdb {
|
10
12
|
|
@@ -107,6 +109,76 @@ void ParsedExpression::Serialize(Serializer &serializer) const {
|
|
107
109
|
writer.Finalize();
|
108
110
|
}
|
109
111
|
|
112
|
+
void ParsedExpression::FormatSerialize(FormatSerializer &serializer) const {
|
113
|
+
serializer.WriteProperty("class", GetExpressionClass());
|
114
|
+
serializer.WriteProperty("type", type);
|
115
|
+
serializer.WriteProperty("alias", alias);
|
116
|
+
}
|
117
|
+
|
118
|
+
unique_ptr<ParsedExpression> ParsedExpression::FormatDeserialize(FormatDeserializer &deserializer) {
|
119
|
+
auto expression_class = deserializer.ReadProperty<ExpressionClass>("class");
|
120
|
+
auto type = deserializer.ReadProperty<ExpressionType>("type");
|
121
|
+
auto alias = deserializer.ReadProperty<string>("alias");
|
122
|
+
unique_ptr<ParsedExpression> result;
|
123
|
+
switch (expression_class) {
|
124
|
+
case ExpressionClass::BETWEEN:
|
125
|
+
result = BetweenExpression::FormatDeserialize(type, deserializer);
|
126
|
+
break;
|
127
|
+
case ExpressionClass::CASE:
|
128
|
+
result = CaseExpression::FormatDeserialize(type, deserializer);
|
129
|
+
break;
|
130
|
+
case ExpressionClass::CAST:
|
131
|
+
result = CastExpression::FormatDeserialize(type, deserializer);
|
132
|
+
break;
|
133
|
+
case ExpressionClass::COLLATE:
|
134
|
+
result = CollateExpression::FormatDeserialize(type, deserializer);
|
135
|
+
break;
|
136
|
+
case ExpressionClass::COLUMN_REF:
|
137
|
+
result = ColumnRefExpression::FormatDeserialize(type, deserializer);
|
138
|
+
break;
|
139
|
+
case ExpressionClass::COMPARISON:
|
140
|
+
result = ComparisonExpression::FormatDeserialize(type, deserializer);
|
141
|
+
break;
|
142
|
+
case ExpressionClass::CONJUNCTION:
|
143
|
+
result = ConjunctionExpression::FormatDeserialize(type, deserializer);
|
144
|
+
break;
|
145
|
+
case ExpressionClass::CONSTANT:
|
146
|
+
result = ConstantExpression::FormatDeserialize(type, deserializer);
|
147
|
+
break;
|
148
|
+
case ExpressionClass::DEFAULT:
|
149
|
+
result = make_unique<DefaultExpression>();
|
150
|
+
break;
|
151
|
+
case ExpressionClass::FUNCTION:
|
152
|
+
result = FunctionExpression::FormatDeserialize(type, deserializer);
|
153
|
+
break;
|
154
|
+
case ExpressionClass::LAMBDA:
|
155
|
+
result = LambdaExpression::FormatDeserialize(type, deserializer);
|
156
|
+
break;
|
157
|
+
case ExpressionClass::OPERATOR:
|
158
|
+
result = OperatorExpression::FormatDeserialize(type, deserializer);
|
159
|
+
break;
|
160
|
+
case ExpressionClass::PARAMETER:
|
161
|
+
result = ParameterExpression::FormatDeserialize(type, deserializer);
|
162
|
+
break;
|
163
|
+
case ExpressionClass::POSITIONAL_REFERENCE:
|
164
|
+
result = PositionalReferenceExpression::FormatDeserialize(type, deserializer);
|
165
|
+
break;
|
166
|
+
case ExpressionClass::STAR:
|
167
|
+
result = StarExpression::FormatDeserialize(type, deserializer);
|
168
|
+
break;
|
169
|
+
case ExpressionClass::SUBQUERY:
|
170
|
+
result = SubqueryExpression::FormatDeserialize(type, deserializer);
|
171
|
+
break;
|
172
|
+
case ExpressionClass::WINDOW:
|
173
|
+
result = WindowExpression::FormatDeserialize(type, deserializer);
|
174
|
+
break;
|
175
|
+
default:
|
176
|
+
throw SerializationException("Unsupported type for expression deserialization!");
|
177
|
+
}
|
178
|
+
result->alias = alias;
|
179
|
+
return result;
|
180
|
+
}
|
181
|
+
|
110
182
|
unique_ptr<ParsedExpression> ParsedExpression::Deserialize(Deserializer &source) {
|
111
183
|
FieldReader reader(source);
|
112
184
|
auto expression_class = reader.ReadRequired<ExpressionClass>();
|
@@ -1,5 +1,7 @@
|
|
1
1
|
#include "duckdb/parser/query_node/recursive_cte_node.hpp"
|
2
2
|
#include "duckdb/common/field_writer.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
|
|
@@ -64,4 +66,23 @@ unique_ptr<QueryNode> RecursiveCTENode::Deserialize(FieldReader &reader) {
|
|
64
66
|
return std::move(result);
|
65
67
|
}
|
66
68
|
|
69
|
+
void RecursiveCTENode::FormatSerialize(FormatSerializer &serializer) const {
|
70
|
+
QueryNode::FormatSerialize(serializer);
|
71
|
+
serializer.WriteProperty("cte_name", ctename);
|
72
|
+
serializer.WriteProperty("union_all", union_all);
|
73
|
+
serializer.WriteProperty("left", *left);
|
74
|
+
serializer.WriteProperty("right", *right);
|
75
|
+
serializer.WriteProperty("aliases", aliases);
|
76
|
+
}
|
77
|
+
|
78
|
+
unique_ptr<QueryNode> RecursiveCTENode::FormatDeserialize(FormatDeserializer &deserializer) {
|
79
|
+
auto result = make_unique<RecursiveCTENode>();
|
80
|
+
deserializer.ReadProperty("cte_name", result->ctename);
|
81
|
+
deserializer.ReadProperty("union_all", result->union_all);
|
82
|
+
deserializer.ReadProperty("left", result->left);
|
83
|
+
deserializer.ReadProperty("right", result->right);
|
84
|
+
deserializer.ReadProperty("aliases", result->aliases);
|
85
|
+
return std::move(result);
|
86
|
+
}
|
87
|
+
|
67
88
|
} // namespace duckdb
|
@@ -2,6 +2,8 @@
|
|
2
2
|
#include "duckdb/parser/expression_util.hpp"
|
3
3
|
#include "duckdb/common/field_writer.hpp"
|
4
4
|
#include "duckdb/parser/keyword_helper.hpp"
|
5
|
+
#include "duckdb/common/serializer/format_serializer.hpp"
|
6
|
+
#include "duckdb/common/serializer/format_deserializer.hpp"
|
5
7
|
|
6
8
|
namespace duckdb {
|
7
9
|
|
@@ -192,6 +194,35 @@ void SelectNode::Serialize(FieldWriter &writer) const {
|
|
192
194
|
writer.WriteOptional(qualify);
|
193
195
|
}
|
194
196
|
|
197
|
+
void SelectNode::FormatSerialize(FormatSerializer &serializer) const {
|
198
|
+
QueryNode::FormatSerialize(serializer);
|
199
|
+
serializer.WriteProperty("select_list", select_list);
|
200
|
+
serializer.WriteOptionalProperty("from_table", from_table);
|
201
|
+
serializer.WriteOptionalProperty("where_clause", where_clause);
|
202
|
+
serializer.WriteProperty("group_expressions", groups.group_expressions);
|
203
|
+
serializer.WriteProperty("group_sets", groups.grouping_sets);
|
204
|
+
serializer.WriteProperty("aggregate_handling", aggregate_handling);
|
205
|
+
serializer.WriteOptionalProperty("having", having);
|
206
|
+
serializer.WriteOptionalProperty("sample", sample);
|
207
|
+
serializer.WriteOptionalProperty("qualify", qualify);
|
208
|
+
}
|
209
|
+
|
210
|
+
unique_ptr<QueryNode> SelectNode::FormatDeserialize(FormatDeserializer &deserializer) {
|
211
|
+
auto result = make_unique<SelectNode>();
|
212
|
+
|
213
|
+
deserializer.ReadProperty("select_list", result->select_list);
|
214
|
+
deserializer.ReadOptionalProperty("from_table", result->from_table);
|
215
|
+
deserializer.ReadOptionalProperty("where_clause", result->where_clause);
|
216
|
+
deserializer.ReadProperty("group_expressions", result->groups.group_expressions);
|
217
|
+
deserializer.ReadProperty("group_sets", result->groups.grouping_sets);
|
218
|
+
deserializer.ReadProperty("aggregate_handling", result->aggregate_handling);
|
219
|
+
deserializer.ReadOptionalProperty("having", result->having);
|
220
|
+
deserializer.ReadOptionalProperty("sample", result->sample);
|
221
|
+
deserializer.ReadOptionalProperty("qualify", result->qualify);
|
222
|
+
|
223
|
+
return std::move(result);
|
224
|
+
}
|
225
|
+
|
195
226
|
unique_ptr<QueryNode> SelectNode::Deserialize(FieldReader &reader) {
|
196
227
|
auto result = make_unique<SelectNode>();
|
197
228
|
result->select_list = reader.ReadRequiredSerializableList<ParsedExpression>();
|
@@ -1,6 +1,8 @@
|
|
1
1
|
#include "duckdb/parser/query_node/set_operation_node.hpp"
|
2
2
|
|
3
3
|
#include "duckdb/common/field_writer.hpp"
|
4
|
+
#include "duckdb/common/serializer/format_serializer.hpp"
|
5
|
+
#include "duckdb/common/serializer/format_deserializer.hpp"
|
4
6
|
|
5
7
|
namespace duckdb {
|
6
8
|
|
@@ -81,4 +83,19 @@ unique_ptr<QueryNode> SetOperationNode::Deserialize(FieldReader &reader) {
|
|
81
83
|
return std::move(result);
|
82
84
|
}
|
83
85
|
|
86
|
+
void SetOperationNode::FormatSerialize(duckdb::FormatSerializer &serializer) const {
|
87
|
+
QueryNode::FormatSerialize(serializer);
|
88
|
+
serializer.WriteProperty("set_op_type", setop_type);
|
89
|
+
serializer.WriteProperty("left", *left);
|
90
|
+
serializer.WriteProperty("right", *right);
|
91
|
+
}
|
92
|
+
|
93
|
+
unique_ptr<QueryNode> SetOperationNode::FormatDeserialize(duckdb::FormatDeserializer &deserializer) {
|
94
|
+
auto result = make_unique<SetOperationNode>();
|
95
|
+
deserializer.ReadProperty("set_op_type", result->setop_type);
|
96
|
+
deserializer.ReadProperty("left", result->left);
|
97
|
+
deserializer.ReadProperty("right", result->right);
|
98
|
+
return std::move(result);
|
99
|
+
}
|
100
|
+
|
84
101
|
} // namespace duckdb
|