duckdb 0.7.2-dev654.0 → 0.7.2-dev832.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 +2 -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 +12 -4
- package/src/duckdb/extension/json/json_scan.cpp +2 -2
- package/src/duckdb/extension/json/json_serializer.cpp +217 -0
- 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/column_data_collection_segment.cpp +11 -6
- package/src/duckdb/src/common/types/value.cpp +117 -0
- package/src/duckdb/src/common/types/vector.cpp +140 -1
- package/src/duckdb/src/common/types.cpp +166 -89
- package/src/duckdb/src/common/vector_operations/vector_cast.cpp +2 -1
- package/src/duckdb/src/execution/aggregate_hashtable.cpp +10 -5
- package/src/duckdb/src/execution/expression_executor/execute_cast.cpp +2 -1
- package/src/duckdb/src/execution/index/art/art.cpp +5 -5
- package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +3 -0
- package/src/duckdb/src/execution/partitionable_hashtable.cpp +14 -2
- package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
- package/src/duckdb/src/function/cast/enum_casts.cpp +25 -3
- package/src/duckdb/src/function/cast/list_casts.cpp +17 -4
- package/src/duckdb/src/function/cast/map_cast.cpp +5 -2
- package/src/duckdb/src/function/cast/string_cast.cpp +36 -10
- package/src/duckdb/src/function/cast/struct_cast.cpp +23 -3
- package/src/duckdb/src/function/cast/union_casts.cpp +33 -7
- 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/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/optional_ptr.hpp +45 -0
- 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 -0
- 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/execution/aggregate_hashtable.hpp +1 -0
- package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/partitionable_hashtable.hpp +3 -0
- package/src/duckdb/src/include/duckdb/function/cast/bound_cast_data.hpp +84 -0
- package/src/duckdb/src/include/duckdb/function/cast/cast_function_set.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +28 -64
- 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/data_table.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/index.hpp +4 -3
- package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +2 -2
- 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_bool_expr.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_function.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_subquery_expression.cpp +4 -0
- package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +3 -1
- 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/data_table.cpp +15 -13
- package/src/duckdb/src/storage/index.cpp +12 -1
- package/src/duckdb/src/storage/local_storage.cpp +20 -23
- package/src/duckdb/src/verification/deserialized_statement_verifier.cpp +0 -1
- 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/utils.cpp +12 -0
- package/test/extension.test.ts +44 -26
@@ -1,5 +1,7 @@
|
|
1
1
|
#include "duckdb/parser/expression/between_expression.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
|
|
@@ -45,4 +47,19 @@ unique_ptr<ParsedExpression> BetweenExpression::Deserialize(ExpressionType type,
|
|
45
47
|
return make_unique<BetweenExpression>(std::move(input), std::move(lower), std::move(upper));
|
46
48
|
}
|
47
49
|
|
50
|
+
void BetweenExpression::FormatSerialize(FormatSerializer &serializer) const {
|
51
|
+
ParsedExpression::FormatSerialize(serializer);
|
52
|
+
serializer.WriteProperty("input", *input);
|
53
|
+
serializer.WriteProperty("lower", *lower);
|
54
|
+
serializer.WriteProperty("upper", *upper);
|
55
|
+
}
|
56
|
+
|
57
|
+
unique_ptr<ParsedExpression> BetweenExpression::FormatDeserialize(ExpressionType type,
|
58
|
+
FormatDeserializer &deserializer) {
|
59
|
+
auto input = deserializer.ReadProperty<unique_ptr<ParsedExpression>>("input");
|
60
|
+
auto lower = deserializer.ReadProperty<unique_ptr<ParsedExpression>>("lower");
|
61
|
+
auto upper = deserializer.ReadProperty<unique_ptr<ParsedExpression>>("upper");
|
62
|
+
return make_unique<BetweenExpression>(std::move(input), std::move(lower), std::move(upper));
|
63
|
+
}
|
64
|
+
|
48
65
|
} // namespace duckdb
|
@@ -3,8 +3,23 @@
|
|
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
|
|
11
|
+
void CaseCheck::FormatSerialize(FormatSerializer &serializer) const {
|
12
|
+
serializer.WriteProperty("when_expr", when_expr);
|
13
|
+
serializer.WriteProperty("then_expr", then_expr);
|
14
|
+
}
|
15
|
+
|
16
|
+
CaseCheck CaseCheck::FormatDeserialize(FormatDeserializer &deserializer) {
|
17
|
+
CaseCheck check;
|
18
|
+
deserializer.ReadProperty("when_expr", check.when_expr);
|
19
|
+
deserializer.ReadProperty("then_expr", check.then_expr);
|
20
|
+
return check;
|
21
|
+
}
|
22
|
+
|
8
23
|
CaseExpression::CaseExpression() : ParsedExpression(ExpressionType::CASE_EXPR, ExpressionClass::CASE) {
|
9
24
|
}
|
10
25
|
|
@@ -69,4 +84,17 @@ unique_ptr<ParsedExpression> CaseExpression::Deserialize(ExpressionType type, Fi
|
|
69
84
|
return std::move(result);
|
70
85
|
}
|
71
86
|
|
87
|
+
void CaseExpression::FormatSerialize(FormatSerializer &serializer) const {
|
88
|
+
ParsedExpression::FormatSerialize(serializer);
|
89
|
+
serializer.WriteProperty("case_checks", case_checks);
|
90
|
+
serializer.WriteProperty("else_expr", *else_expr);
|
91
|
+
}
|
92
|
+
|
93
|
+
unique_ptr<ParsedExpression> CaseExpression::FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer) {
|
94
|
+
auto result = make_unique<CaseExpression>();
|
95
|
+
deserializer.ReadProperty("case_checks", result->case_checks);
|
96
|
+
deserializer.ReadProperty("else_expr", result->else_expr);
|
97
|
+
return std::move(result);
|
98
|
+
}
|
99
|
+
|
72
100
|
} // 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
|
CastExpression::CastExpression(LogicalType target, unique_ptr<ParsedExpression> child, bool try_cast_p)
|
@@ -48,4 +51,18 @@ unique_ptr<ParsedExpression> CastExpression::Deserialize(ExpressionType type, Fi
|
|
48
51
|
return make_unique_base<ParsedExpression, CastExpression>(cast_type, std::move(child), try_cast);
|
49
52
|
}
|
50
53
|
|
54
|
+
void CastExpression::FormatSerialize(FormatSerializer &serializer) const {
|
55
|
+
ParsedExpression::FormatSerialize(serializer);
|
56
|
+
serializer.WriteProperty("child", *child);
|
57
|
+
serializer.WriteProperty("cast_type", cast_type);
|
58
|
+
serializer.WriteProperty("try_cast", try_cast);
|
59
|
+
}
|
60
|
+
|
61
|
+
unique_ptr<ParsedExpression> CastExpression::FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer) {
|
62
|
+
auto child = deserializer.ReadProperty<unique_ptr<ParsedExpression>>("child");
|
63
|
+
auto cast_type = deserializer.ReadProperty<LogicalType>("cast_type");
|
64
|
+
auto try_cast = deserializer.ReadProperty<bool>("try_cast");
|
65
|
+
return make_unique_base<ParsedExpression, CastExpression>(cast_type, std::move(child), try_cast);
|
66
|
+
}
|
67
|
+
|
51
68
|
} // 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
|
CollateExpression::CollateExpression(string collation_p, unique_ptr<ParsedExpression> child)
|
@@ -42,4 +45,17 @@ unique_ptr<ParsedExpression> CollateExpression::Deserialize(ExpressionType type,
|
|
42
45
|
return make_unique_base<ParsedExpression, CollateExpression>(collation, std::move(child));
|
43
46
|
}
|
44
47
|
|
48
|
+
void CollateExpression::FormatSerialize(FormatSerializer &serializer) const {
|
49
|
+
ParsedExpression::FormatSerialize(serializer);
|
50
|
+
serializer.WriteProperty("child", *child);
|
51
|
+
serializer.WriteProperty("collation", collation);
|
52
|
+
}
|
53
|
+
|
54
|
+
unique_ptr<ParsedExpression> CollateExpression::FormatDeserialize(ExpressionType type,
|
55
|
+
FormatDeserializer &deserializer) {
|
56
|
+
auto child = deserializer.ReadProperty<unique_ptr<ParsedExpression>>("child");
|
57
|
+
auto collation = deserializer.ReadProperty<string>("collation");
|
58
|
+
return make_unique_base<ParsedExpression, CollateExpression>(collation, std::move(child));
|
59
|
+
}
|
60
|
+
|
45
61
|
} // namespace duckdb
|
@@ -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
|
|