duckdb 0.8.2-dev2090.0 → 0.8.2-dev2133.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/binding.gyp +3 -0
  2. package/package.json +1 -1
  3. package/src/duckdb/extension/json/buffered_json_reader.cpp +2 -0
  4. package/src/duckdb/extension/json/include/buffered_json_reader.hpp +5 -19
  5. package/src/duckdb/extension/json/include/json_enums.hpp +60 -0
  6. package/src/duckdb/extension/json/include/json_scan.hpp +14 -10
  7. package/src/duckdb/extension/json/include/json_transform.hpp +3 -0
  8. package/src/duckdb/extension/json/json_enums.cpp +105 -0
  9. package/src/duckdb/extension/json/json_functions/json_transform.cpp +2 -0
  10. package/src/duckdb/extension/json/json_scan.cpp +44 -0
  11. package/src/duckdb/extension/json/serialize_json.cpp +92 -0
  12. package/src/duckdb/extension/parquet/include/parquet_reader.hpp +3 -0
  13. package/src/duckdb/extension/parquet/parquet_extension.cpp +23 -0
  14. package/src/duckdb/extension/parquet/parquet_reader.cpp +3 -0
  15. package/src/duckdb/extension/parquet/serialize_parquet.cpp +26 -0
  16. package/src/duckdb/src/common/local_file_system.cpp +17 -14
  17. package/src/duckdb/src/common/serializer/format_serializer.cpp +15 -0
  18. package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +26 -0
  19. package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +47 -0
  20. package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +28 -0
  21. package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +10 -0
  22. package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +22 -3
  23. package/src/duckdb/src/function/aggregate/distributive/count.cpp +0 -11
  24. package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +1 -9
  25. package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +27 -0
  26. package/src/duckdb/src/function/scalar_function.cpp +2 -1
  27. package/src/duckdb/src/function/table/read_csv.cpp +18 -0
  28. package/src/duckdb/src/function/table/table_scan.cpp +35 -0
  29. package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
  30. package/src/duckdb/src/function/table_function.cpp +4 -3
  31. package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +5 -1
  32. package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +2 -0
  33. package/src/duckdb/src/include/duckdb/common/serializer/format_deserializer.hpp +32 -0
  34. package/src/duckdb/src/include/duckdb/common/serializer/format_serializer.hpp +45 -15
  35. package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +10 -0
  36. package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_reader_options.hpp +2 -0
  37. package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +11 -2
  38. package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +81 -0
  39. package/src/duckdb/src/include/duckdb/function/scalar/strftime_format.hpp +8 -0
  40. package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +8 -0
  41. package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +7 -0
  42. package/src/duckdb/src/include/duckdb/function/table_function.hpp +8 -0
  43. package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +3 -0
  44. package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +4 -0
  45. package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +3 -0
  46. package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +4 -0
  47. package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +2 -0
  48. package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +4 -0
  49. package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +2 -0
  50. package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +7 -1
  51. package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +7 -1
  52. package/src/duckdb/src/main/extension/extension_helper.cpp +13 -0
  53. package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +23 -0
  54. package/src/duckdb/src/planner/expression/bound_function_expression.cpp +22 -0
  55. package/src/duckdb/src/planner/expression/bound_window_expression.cpp +47 -0
  56. package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +8 -0
  57. package/src/duckdb/src/planner/operator/logical_get.cpp +69 -0
  58. package/src/duckdb/src/storage/serialization/serialize_expression.cpp +9 -0
  59. package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +6 -0
  60. package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +190 -0
  61. package/src/duckdb/src/storage/serialization/serialize_table_filter.cpp +97 -0
  62. package/src/duckdb/ub_src_common_serializer.cpp +2 -0
  63. package/src/duckdb/ub_src_storage_serialization.cpp +2 -0
@@ -162,4 +162,51 @@ unique_ptr<Expression> BoundWindowExpression::Deserialize(ExpressionDeserializat
162
162
  return std::move(result);
163
163
  }
164
164
 
165
+ void BoundWindowExpression::FormatSerialize(FormatSerializer &serializer) const {
166
+ Expression::FormatSerialize(serializer);
167
+ serializer.WriteProperty("return_type", return_type);
168
+ serializer.WriteProperty("children", children);
169
+ if (type == ExpressionType::WINDOW_AGGREGATE) {
170
+ D_ASSERT(aggregate);
171
+ FunctionSerializer::FormatSerialize(serializer, *aggregate, bind_info.get());
172
+ }
173
+ serializer.WriteProperty("partitions", partitions);
174
+ serializer.WriteProperty("orders", orders);
175
+ serializer.WriteOptionalProperty("filters", filter_expr);
176
+ serializer.WriteProperty("ignore_nulls", ignore_nulls);
177
+ serializer.WriteProperty("start", start);
178
+ serializer.WriteProperty("end", end);
179
+ serializer.WriteOptionalProperty("start_expr", start_expr);
180
+ serializer.WriteOptionalProperty("end_expr", end_expr);
181
+ serializer.WriteOptionalProperty("offset_expr", offset_expr);
182
+ serializer.WriteOptionalProperty("default_expr", default_expr);
183
+ }
184
+
185
+ unique_ptr<Expression> BoundWindowExpression::FormatDeserialize(FormatDeserializer &deserializer) {
186
+ auto expression_type = deserializer.Get<ExpressionType>();
187
+ auto return_type = deserializer.ReadProperty<LogicalType>("return_type");
188
+ auto children = deserializer.ReadProperty<vector<unique_ptr<Expression>>>("children");
189
+ unique_ptr<AggregateFunction> aggregate;
190
+ unique_ptr<FunctionData> bind_info;
191
+ if (expression_type == ExpressionType::WINDOW_AGGREGATE) {
192
+ auto entry = FunctionSerializer::FormatDeserialize<AggregateFunction, AggregateFunctionCatalogEntry>(
193
+ deserializer, CatalogType::AGGREGATE_FUNCTION_ENTRY, children);
194
+ aggregate = make_uniq<AggregateFunction>(std::move(entry.first));
195
+ bind_info = std::move(entry.second);
196
+ }
197
+ auto result =
198
+ make_uniq<BoundWindowExpression>(expression_type, return_type, std::move(aggregate), std::move(bind_info));
199
+ deserializer.ReadProperty("partitions", result->partitions);
200
+ deserializer.ReadProperty("orders", result->orders);
201
+ deserializer.ReadOptionalProperty("filters", result->filter_expr);
202
+ deserializer.ReadProperty("ignore_nulls", result->ignore_nulls);
203
+ deserializer.ReadProperty("start", result->start);
204
+ deserializer.ReadProperty("end", result->end);
205
+ deserializer.ReadOptionalProperty("start_expr", result->start_expr);
206
+ deserializer.ReadOptionalProperty("end_expr", result->end_expr);
207
+ deserializer.ReadOptionalProperty("offset_expr", result->offset_expr);
208
+ deserializer.ReadOptionalProperty("default_expr", result->default_expr);
209
+ return std::move(result);
210
+ }
211
+
165
212
  } // namespace duckdb
@@ -59,6 +59,14 @@ unique_ptr<LogicalOperator> LogicalCopyToFile::Deserialize(LogicalDeserializatio
59
59
  return std::move(result);
60
60
  }
61
61
 
62
+ void LogicalCopyToFile::FormatSerialize(FormatSerializer &serializer) const {
63
+ throw SerializationException("LogicalCopyToFile not implemented yet");
64
+ }
65
+
66
+ unique_ptr<LogicalOperator> LogicalCopyToFile::FormatDeserialize(FormatDeserializer &deserializer) {
67
+ throw SerializationException("LogicalCopyToFile not implemented yet");
68
+ }
69
+
62
70
  idx_t LogicalCopyToFile::EstimateCardinality(ClientContext &context) {
63
71
  return 1;
64
72
  }
@@ -8,9 +8,14 @@
8
8
  #include "duckdb/function/table/table_scan.hpp"
9
9
  #include "duckdb/main/config.hpp"
10
10
  #include "duckdb/storage/data_table.hpp"
11
+ #include "duckdb/common/serializer/format_serializer.hpp"
12
+ #include "duckdb/common/serializer/format_deserializer.hpp"
11
13
 
12
14
  namespace duckdb {
13
15
 
16
+ LogicalGet::LogicalGet() : LogicalOperator(LogicalOperatorType::LOGICAL_GET) {
17
+ }
18
+
14
19
  LogicalGet::LogicalGet(idx_t table_index, TableFunction function, unique_ptr<FunctionData> bind_data,
15
20
  vector<LogicalType> returned_types, vector<string> returned_names)
16
21
  : LogicalOperator(LogicalOperatorType::LOGICAL_GET), table_index(table_index), function(std::move(function)),
@@ -199,6 +204,70 @@ unique_ptr<LogicalOperator> LogicalGet::Deserialize(LogicalDeserializationState
199
204
  return std::move(result);
200
205
  }
201
206
 
207
+ void LogicalGet::FormatSerialize(FormatSerializer &serializer) const {
208
+ LogicalOperator::FormatSerialize(serializer);
209
+ serializer.WriteProperty("table_index", table_index);
210
+ serializer.WriteProperty("returned_types", returned_types);
211
+ serializer.WriteProperty("names", names);
212
+ serializer.WriteProperty("column_ids", column_ids);
213
+ serializer.WriteProperty("projection_ids", projection_ids);
214
+ serializer.WriteProperty("table_filters", table_filters);
215
+ FunctionSerializer::FormatSerialize(serializer, function, bind_data.get());
216
+ if (!function.format_serialize) {
217
+ D_ASSERT(!function.format_deserialize);
218
+ // no serialize method: serialize input values and named_parameters for rebinding purposes
219
+ serializer.WriteProperty("parameters", parameters);
220
+ serializer.WriteProperty("named_parameters", named_parameters);
221
+ serializer.WriteProperty("input_table_types", input_table_types);
222
+ serializer.WriteProperty("input_table_names", input_table_names);
223
+ }
224
+ serializer.WriteProperty("projected_input", projected_input);
225
+ }
226
+
227
+ unique_ptr<LogicalOperator> LogicalGet::FormatDeserialize(FormatDeserializer &deserializer) {
228
+ auto result = unique_ptr<LogicalGet>(new LogicalGet());
229
+ deserializer.ReadProperty("table_index", result->table_index);
230
+ deserializer.ReadProperty("returned_types", result->returned_types);
231
+ deserializer.ReadProperty("names", result->names);
232
+ deserializer.ReadProperty("column_ids", result->column_ids);
233
+ deserializer.ReadProperty("projection_ids", result->projection_ids);
234
+ deserializer.ReadProperty("table_filters", result->table_filters);
235
+ auto entry = FunctionSerializer::FormatDeserializeBase<TableFunction, TableFunctionCatalogEntry>(
236
+ deserializer, CatalogType::TABLE_FUNCTION_ENTRY);
237
+ auto &function = entry.first;
238
+ auto has_serialize = entry.second;
239
+
240
+ unique_ptr<FunctionData> bind_data;
241
+ if (!has_serialize) {
242
+ deserializer.ReadProperty("parameters", result->parameters);
243
+ deserializer.ReadProperty("named_parameters", result->named_parameters);
244
+ deserializer.ReadProperty("input_table_types", result->input_table_types);
245
+ deserializer.ReadProperty("input_table_names", result->input_table_names);
246
+ TableFunctionBindInput input(result->parameters, result->named_parameters, result->input_table_types,
247
+ result->input_table_names, function.function_info.get());
248
+
249
+ vector<LogicalType> bind_return_types;
250
+ vector<string> bind_names;
251
+ if (!function.bind) {
252
+ throw InternalException("Table function \"%s\" has neither bind nor (de)serialize", function.name);
253
+ }
254
+ bind_data = function.bind(deserializer.Get<ClientContext &>(), input, bind_return_types, bind_names);
255
+ if (result->returned_types != bind_return_types) {
256
+ throw SerializationException(
257
+ "Table function deserialization failure - bind returned different return types than were serialized");
258
+ }
259
+ // names can actually be different because of aliases - only the sizes cannot be different
260
+ if (result->names.size() != bind_names.size()) {
261
+ throw SerializationException(
262
+ "Table function deserialization failure - bind returned different returned names than were serialized");
263
+ }
264
+ } else {
265
+ bind_data = FunctionSerializer::FunctionDeserialize(deserializer, function);
266
+ }
267
+ deserializer.ReadProperty("projected_input", result->projected_input);
268
+ return std::move(result);
269
+ }
270
+
202
271
  vector<idx_t> LogicalGet::GetTableIndex() const {
203
272
  return vector<idx_t> {table_index};
204
273
  }
@@ -22,6 +22,9 @@ unique_ptr<Expression> Expression::FormatDeserialize(FormatDeserializer &deseria
22
22
  deserializer.Set<ExpressionType>(type);
23
23
  unique_ptr<Expression> result;
24
24
  switch (expression_class) {
25
+ case ExpressionClass::BOUND_AGGREGATE:
26
+ result = BoundAggregateExpression::FormatDeserialize(deserializer);
27
+ break;
25
28
  case ExpressionClass::BOUND_BETWEEN:
26
29
  result = BoundBetweenExpression::FormatDeserialize(deserializer);
27
30
  break;
@@ -46,6 +49,9 @@ unique_ptr<Expression> Expression::FormatDeserialize(FormatDeserializer &deseria
46
49
  case ExpressionClass::BOUND_DEFAULT:
47
50
  result = BoundDefaultExpression::FormatDeserialize(deserializer);
48
51
  break;
52
+ case ExpressionClass::BOUND_FUNCTION:
53
+ result = BoundFunctionExpression::FormatDeserialize(deserializer);
54
+ break;
49
55
  case ExpressionClass::BOUND_LAMBDA:
50
56
  result = BoundLambdaExpression::FormatDeserialize(deserializer);
51
57
  break;
@@ -64,6 +70,9 @@ unique_ptr<Expression> Expression::FormatDeserialize(FormatDeserializer &deseria
64
70
  case ExpressionClass::BOUND_UNNEST:
65
71
  result = BoundUnnestExpression::FormatDeserialize(deserializer);
66
72
  break;
73
+ case ExpressionClass::BOUND_WINDOW:
74
+ result = BoundWindowExpression::FormatDeserialize(deserializer);
75
+ break;
67
76
  default:
68
77
  throw SerializationException("Unsupported type for deserialization of Expression!");
69
78
  }
@@ -40,6 +40,9 @@ unique_ptr<LogicalOperator> LogicalOperator::FormatDeserialize(FormatDeserialize
40
40
  case LogicalOperatorType::LOGICAL_COMPARISON_JOIN:
41
41
  result = LogicalComparisonJoin::FormatDeserialize(deserializer);
42
42
  break;
43
+ case LogicalOperatorType::LOGICAL_COPY_TO_FILE:
44
+ result = LogicalCopyToFile::FormatDeserialize(deserializer);
45
+ break;
43
46
  case LogicalOperatorType::LOGICAL_CREATE_MACRO:
44
47
  result = LogicalCreate::FormatDeserialize(deserializer);
45
48
  break;
@@ -97,6 +100,9 @@ unique_ptr<LogicalOperator> LogicalOperator::FormatDeserialize(FormatDeserialize
97
100
  case LogicalOperatorType::LOGICAL_FILTER:
98
101
  result = LogicalFilter::FormatDeserialize(deserializer);
99
102
  break;
103
+ case LogicalOperatorType::LOGICAL_GET:
104
+ result = LogicalGet::FormatDeserialize(deserializer);
105
+ break;
100
106
  case LogicalOperatorType::LOGICAL_INSERT:
101
107
  result = LogicalInsert::FormatDeserialize(deserializer);
102
108
  break;
@@ -22,6 +22,12 @@
22
22
  #include "duckdb/planner/expression/bound_parameter_data.hpp"
23
23
  #include "duckdb/planner/joinside.hpp"
24
24
  #include "duckdb/parser/parsed_data/vacuum_info.hpp"
25
+ #include "duckdb/planner/table_filter.hpp"
26
+ #include "duckdb/common/multi_file_reader_options.hpp"
27
+ #include "duckdb/common/multi_file_reader.hpp"
28
+ #include "duckdb/execution/operator/persistent/csv_reader_options.hpp"
29
+ #include "duckdb/function/scalar/strftime_format.hpp"
30
+ #include "duckdb/function/table/read_csv.hpp"
25
31
 
26
32
  namespace duckdb {
27
33
 
@@ -79,6 +85,86 @@ BoundPivotInfo BoundPivotInfo::FormatDeserialize(FormatDeserializer &deserialize
79
85
  return result;
80
86
  }
81
87
 
88
+ void BufferedCSVReaderOptions::FormatSerialize(FormatSerializer &serializer) const {
89
+ serializer.WriteProperty("has_delimiter", has_delimiter);
90
+ serializer.WriteProperty("delimiter", delimiter);
91
+ serializer.WriteProperty("has_quote", has_quote);
92
+ serializer.WriteProperty("quote", quote);
93
+ serializer.WriteProperty("has_escape", has_escape);
94
+ serializer.WriteProperty("escape", escape);
95
+ serializer.WriteProperty("has_header", has_header);
96
+ serializer.WriteProperty("header", header);
97
+ serializer.WriteProperty("ignore_errors", ignore_errors);
98
+ serializer.WriteProperty("num_cols", num_cols);
99
+ serializer.WriteProperty("buffer_sample_size", buffer_sample_size);
100
+ serializer.WriteProperty("null_str", null_str);
101
+ serializer.WriteProperty("compression", compression);
102
+ serializer.WriteProperty("new_line", new_line);
103
+ serializer.WriteProperty("allow_quoted_nulls", allow_quoted_nulls);
104
+ serializer.WriteProperty("skip_rows", skip_rows);
105
+ serializer.WriteProperty("skip_rows_set", skip_rows_set);
106
+ serializer.WriteProperty("maximum_line_size", maximum_line_size);
107
+ serializer.WriteProperty("normalize_names", normalize_names);
108
+ serializer.WriteProperty("force_not_null", force_not_null);
109
+ serializer.WriteProperty("all_varchar", all_varchar);
110
+ serializer.WriteProperty("sample_chunk_size", sample_chunk_size);
111
+ serializer.WriteProperty("sample_chunks", sample_chunks);
112
+ serializer.WriteProperty("auto_detect", auto_detect);
113
+ serializer.WriteProperty("file_path", file_path);
114
+ serializer.WriteProperty("decimal_separator", decimal_separator);
115
+ serializer.WriteProperty("null_padding", null_padding);
116
+ serializer.WriteProperty("buffer_size", buffer_size);
117
+ serializer.WriteProperty("file_options", file_options);
118
+ serializer.WriteProperty("force_quote", force_quote);
119
+ serializer.WriteProperty("date_format", date_format);
120
+ serializer.WriteProperty("has_format", has_format);
121
+ serializer.WriteProperty("rejects_table_name", rejects_table_name);
122
+ serializer.WriteProperty("rejects_limit", rejects_limit);
123
+ serializer.WriteProperty("rejects_recovery_columns", rejects_recovery_columns);
124
+ serializer.WriteProperty("rejects_recovery_column_ids", rejects_recovery_column_ids);
125
+ }
126
+
127
+ BufferedCSVReaderOptions BufferedCSVReaderOptions::FormatDeserialize(FormatDeserializer &deserializer) {
128
+ BufferedCSVReaderOptions result;
129
+ deserializer.ReadProperty("has_delimiter", result.has_delimiter);
130
+ deserializer.ReadProperty("delimiter", result.delimiter);
131
+ deserializer.ReadProperty("has_quote", result.has_quote);
132
+ deserializer.ReadProperty("quote", result.quote);
133
+ deserializer.ReadProperty("has_escape", result.has_escape);
134
+ deserializer.ReadProperty("escape", result.escape);
135
+ deserializer.ReadProperty("has_header", result.has_header);
136
+ deserializer.ReadProperty("header", result.header);
137
+ deserializer.ReadProperty("ignore_errors", result.ignore_errors);
138
+ deserializer.ReadProperty("num_cols", result.num_cols);
139
+ deserializer.ReadProperty("buffer_sample_size", result.buffer_sample_size);
140
+ deserializer.ReadProperty("null_str", result.null_str);
141
+ deserializer.ReadProperty("compression", result.compression);
142
+ deserializer.ReadProperty("new_line", result.new_line);
143
+ deserializer.ReadProperty("allow_quoted_nulls", result.allow_quoted_nulls);
144
+ deserializer.ReadProperty("skip_rows", result.skip_rows);
145
+ deserializer.ReadProperty("skip_rows_set", result.skip_rows_set);
146
+ deserializer.ReadProperty("maximum_line_size", result.maximum_line_size);
147
+ deserializer.ReadProperty("normalize_names", result.normalize_names);
148
+ deserializer.ReadProperty("force_not_null", result.force_not_null);
149
+ deserializer.ReadProperty("all_varchar", result.all_varchar);
150
+ deserializer.ReadProperty("sample_chunk_size", result.sample_chunk_size);
151
+ deserializer.ReadProperty("sample_chunks", result.sample_chunks);
152
+ deserializer.ReadProperty("auto_detect", result.auto_detect);
153
+ deserializer.ReadProperty("file_path", result.file_path);
154
+ deserializer.ReadProperty("decimal_separator", result.decimal_separator);
155
+ deserializer.ReadProperty("null_padding", result.null_padding);
156
+ deserializer.ReadProperty("buffer_size", result.buffer_size);
157
+ deserializer.ReadProperty("file_options", result.file_options);
158
+ deserializer.ReadProperty("force_quote", result.force_quote);
159
+ deserializer.ReadProperty("date_format", result.date_format);
160
+ deserializer.ReadProperty("has_format", result.has_format);
161
+ deserializer.ReadProperty("rejects_table_name", result.rejects_table_name);
162
+ deserializer.ReadProperty("rejects_limit", result.rejects_limit);
163
+ deserializer.ReadProperty("rejects_recovery_columns", result.rejects_recovery_columns);
164
+ deserializer.ReadProperty("rejects_recovery_column_ids", result.rejects_recovery_column_ids);
165
+ return result;
166
+ }
167
+
82
168
  void CaseCheck::FormatSerialize(FormatSerializer &serializer) const {
83
169
  serializer.WriteProperty("when_expr", *when_expr);
84
170
  serializer.WriteProperty("then_expr", *then_expr);
@@ -121,6 +207,18 @@ ColumnDefinition ColumnDefinition::FormatDeserialize(FormatDeserializer &deseria
121
207
  return result;
122
208
  }
123
209
 
210
+ void ColumnInfo::FormatSerialize(FormatSerializer &serializer) const {
211
+ serializer.WriteProperty("names", names);
212
+ serializer.WriteProperty("types", types);
213
+ }
214
+
215
+ ColumnInfo ColumnInfo::FormatDeserialize(FormatDeserializer &deserializer) {
216
+ ColumnInfo result;
217
+ deserializer.ReadProperty("names", result.names);
218
+ deserializer.ReadProperty("types", result.types);
219
+ return result;
220
+ }
221
+
124
222
  void ColumnList::FormatSerialize(FormatSerializer &serializer) const {
125
223
  serializer.WriteProperty("columns", columns);
126
224
  }
@@ -155,6 +253,18 @@ CommonTableExpressionMap CommonTableExpressionMap::FormatDeserialize(FormatDeser
155
253
  return result;
156
254
  }
157
255
 
256
+ void HivePartitioningIndex::FormatSerialize(FormatSerializer &serializer) const {
257
+ serializer.WriteProperty("value", value);
258
+ serializer.WriteProperty("index", index);
259
+ }
260
+
261
+ HivePartitioningIndex HivePartitioningIndex::FormatDeserialize(FormatDeserializer &deserializer) {
262
+ auto value = deserializer.ReadProperty<string>("value");
263
+ auto index = deserializer.ReadProperty<idx_t>("index");
264
+ HivePartitioningIndex result(std::move(value), index);
265
+ return result;
266
+ }
267
+
158
268
  void JoinCondition::FormatSerialize(FormatSerializer &serializer) const {
159
269
  serializer.WriteProperty("left", *left);
160
270
  serializer.WriteProperty("right", *right);
@@ -181,6 +291,38 @@ LogicalType LogicalType::FormatDeserialize(FormatDeserializer &deserializer) {
181
291
  return result;
182
292
  }
183
293
 
294
+ void MultiFileReaderBindData::FormatSerialize(FormatSerializer &serializer) const {
295
+ serializer.WriteProperty("filename_idx", filename_idx);
296
+ serializer.WriteProperty("hive_partitioning_indexes", hive_partitioning_indexes);
297
+ }
298
+
299
+ MultiFileReaderBindData MultiFileReaderBindData::FormatDeserialize(FormatDeserializer &deserializer) {
300
+ MultiFileReaderBindData result;
301
+ deserializer.ReadProperty("filename_idx", result.filename_idx);
302
+ deserializer.ReadProperty("hive_partitioning_indexes", result.hive_partitioning_indexes);
303
+ return result;
304
+ }
305
+
306
+ void MultiFileReaderOptions::FormatSerialize(FormatSerializer &serializer) const {
307
+ serializer.WriteProperty("filename", filename);
308
+ serializer.WriteProperty("hive_partitioning", hive_partitioning);
309
+ serializer.WriteProperty("auto_detect_hive_partitioning", auto_detect_hive_partitioning);
310
+ serializer.WriteProperty("union_by_name", union_by_name);
311
+ serializer.WriteProperty("hive_types_autocast", hive_types_autocast);
312
+ serializer.WriteProperty("hive_types_schema", hive_types_schema);
313
+ }
314
+
315
+ MultiFileReaderOptions MultiFileReaderOptions::FormatDeserialize(FormatDeserializer &deserializer) {
316
+ MultiFileReaderOptions result;
317
+ deserializer.ReadProperty("filename", result.filename);
318
+ deserializer.ReadProperty("hive_partitioning", result.hive_partitioning);
319
+ deserializer.ReadProperty("auto_detect_hive_partitioning", result.auto_detect_hive_partitioning);
320
+ deserializer.ReadProperty("union_by_name", result.union_by_name);
321
+ deserializer.ReadProperty("hive_types_autocast", result.hive_types_autocast);
322
+ deserializer.ReadProperty("hive_types_schema", result.hive_types_schema);
323
+ return result;
324
+ }
325
+
184
326
  void OrderByNode::FormatSerialize(FormatSerializer &serializer) const {
185
327
  serializer.WriteProperty("type", type);
186
328
  serializer.WriteProperty("null_order", null_order);
@@ -211,6 +353,34 @@ PivotColumn PivotColumn::FormatDeserialize(FormatDeserializer &deserializer) {
211
353
  return result;
212
354
  }
213
355
 
356
+ void ReadCSVData::FormatSerialize(FormatSerializer &serializer) const {
357
+ serializer.WriteProperty("files", files);
358
+ serializer.WriteProperty("csv_types", csv_types);
359
+ serializer.WriteProperty("csv_names", csv_names);
360
+ serializer.WriteProperty("return_types", return_types);
361
+ serializer.WriteProperty("return_names", return_names);
362
+ serializer.WriteProperty("filename_col_idx", filename_col_idx);
363
+ serializer.WriteProperty("options", options);
364
+ serializer.WriteProperty("single_threaded", single_threaded);
365
+ serializer.WriteProperty("reader_bind", reader_bind);
366
+ serializer.WriteProperty("column_info", column_info);
367
+ }
368
+
369
+ unique_ptr<ReadCSVData> ReadCSVData::FormatDeserialize(FormatDeserializer &deserializer) {
370
+ auto result = duckdb::unique_ptr<ReadCSVData>(new ReadCSVData());
371
+ deserializer.ReadProperty("files", result->files);
372
+ deserializer.ReadProperty("csv_types", result->csv_types);
373
+ deserializer.ReadProperty("csv_names", result->csv_names);
374
+ deserializer.ReadProperty("return_types", result->return_types);
375
+ deserializer.ReadProperty("return_names", result->return_names);
376
+ deserializer.ReadProperty("filename_col_idx", result->filename_col_idx);
377
+ deserializer.ReadProperty("options", result->options);
378
+ deserializer.ReadProperty("single_threaded", result->single_threaded);
379
+ deserializer.ReadProperty("reader_bind", result->reader_bind);
380
+ deserializer.ReadProperty("column_info", result->column_info);
381
+ return result;
382
+ }
383
+
214
384
  void SampleOptions::FormatSerialize(FormatSerializer &serializer) const {
215
385
  serializer.WriteProperty("sample_size", sample_size);
216
386
  serializer.WriteProperty("is_percentage", is_percentage);
@@ -227,6 +397,26 @@ unique_ptr<SampleOptions> SampleOptions::FormatDeserialize(FormatDeserializer &d
227
397
  return result;
228
398
  }
229
399
 
400
+ void StrpTimeFormat::FormatSerialize(FormatSerializer &serializer) const {
401
+ serializer.WriteProperty("format_specifier", format_specifier);
402
+ }
403
+
404
+ StrpTimeFormat StrpTimeFormat::FormatDeserialize(FormatDeserializer &deserializer) {
405
+ auto format_specifier = deserializer.ReadProperty<string>("format_specifier");
406
+ StrpTimeFormat result(format_specifier);
407
+ return result;
408
+ }
409
+
410
+ void TableFilterSet::FormatSerialize(FormatSerializer &serializer) const {
411
+ serializer.WriteProperty("filters", filters);
412
+ }
413
+
414
+ TableFilterSet TableFilterSet::FormatDeserialize(FormatDeserializer &deserializer) {
415
+ TableFilterSet result;
416
+ deserializer.ReadProperty("filters", result.filters);
417
+ return result;
418
+ }
419
+
230
420
  void VacuumOptions::FormatSerialize(FormatSerializer &serializer) const {
231
421
  serializer.WriteProperty("vacuum", vacuum);
232
422
  serializer.WriteProperty("analyze", analyze);
@@ -0,0 +1,97 @@
1
+ //===----------------------------------------------------------------------===//
2
+ // This file is automatically generated by scripts/generate_serialization.py
3
+ // Do not edit this file manually, your changes will be overwritten
4
+ //===----------------------------------------------------------------------===//
5
+
6
+ #include "duckdb/common/serializer/format_serializer.hpp"
7
+ #include "duckdb/common/serializer/format_deserializer.hpp"
8
+ #include "duckdb/planner/table_filter.hpp"
9
+ #include "duckdb/planner/filter/null_filter.hpp"
10
+ #include "duckdb/planner/filter/constant_filter.hpp"
11
+ #include "duckdb/planner/filter/conjunction_filter.hpp"
12
+
13
+ namespace duckdb {
14
+
15
+ void TableFilter::FormatSerialize(FormatSerializer &serializer) const {
16
+ serializer.WriteProperty("filter_type", filter_type);
17
+ }
18
+
19
+ unique_ptr<TableFilter> TableFilter::FormatDeserialize(FormatDeserializer &deserializer) {
20
+ auto filter_type = deserializer.ReadProperty<TableFilterType>("filter_type");
21
+ unique_ptr<TableFilter> result;
22
+ switch (filter_type) {
23
+ case TableFilterType::CONJUNCTION_AND:
24
+ result = ConjunctionAndFilter::FormatDeserialize(deserializer);
25
+ break;
26
+ case TableFilterType::CONJUNCTION_OR:
27
+ result = ConjunctionOrFilter::FormatDeserialize(deserializer);
28
+ break;
29
+ case TableFilterType::CONSTANT_COMPARISON:
30
+ result = ConstantFilter::FormatDeserialize(deserializer);
31
+ break;
32
+ case TableFilterType::IS_NOT_NULL:
33
+ result = IsNotNullFilter::FormatDeserialize(deserializer);
34
+ break;
35
+ case TableFilterType::IS_NULL:
36
+ result = IsNullFilter::FormatDeserialize(deserializer);
37
+ break;
38
+ default:
39
+ throw SerializationException("Unsupported type for deserialization of TableFilter!");
40
+ }
41
+ return result;
42
+ }
43
+
44
+ void ConjunctionAndFilter::FormatSerialize(FormatSerializer &serializer) const {
45
+ TableFilter::FormatSerialize(serializer);
46
+ serializer.WriteProperty("child_filters", child_filters);
47
+ }
48
+
49
+ unique_ptr<TableFilter> ConjunctionAndFilter::FormatDeserialize(FormatDeserializer &deserializer) {
50
+ auto result = duckdb::unique_ptr<ConjunctionAndFilter>(new ConjunctionAndFilter());
51
+ deserializer.ReadProperty("child_filters", result->child_filters);
52
+ return std::move(result);
53
+ }
54
+
55
+ void ConjunctionOrFilter::FormatSerialize(FormatSerializer &serializer) const {
56
+ TableFilter::FormatSerialize(serializer);
57
+ serializer.WriteProperty("child_filters", child_filters);
58
+ }
59
+
60
+ unique_ptr<TableFilter> ConjunctionOrFilter::FormatDeserialize(FormatDeserializer &deserializer) {
61
+ auto result = duckdb::unique_ptr<ConjunctionOrFilter>(new ConjunctionOrFilter());
62
+ deserializer.ReadProperty("child_filters", result->child_filters);
63
+ return std::move(result);
64
+ }
65
+
66
+ void ConstantFilter::FormatSerialize(FormatSerializer &serializer) const {
67
+ TableFilter::FormatSerialize(serializer);
68
+ serializer.WriteProperty("comparison_type", comparison_type);
69
+ serializer.WriteProperty("constant", constant);
70
+ }
71
+
72
+ unique_ptr<TableFilter> ConstantFilter::FormatDeserialize(FormatDeserializer &deserializer) {
73
+ auto comparison_type = deserializer.ReadProperty<ExpressionType>("comparison_type");
74
+ auto constant = deserializer.ReadProperty<Value>("constant");
75
+ auto result = duckdb::unique_ptr<ConstantFilter>(new ConstantFilter(comparison_type, constant));
76
+ return std::move(result);
77
+ }
78
+
79
+ void IsNotNullFilter::FormatSerialize(FormatSerializer &serializer) const {
80
+ TableFilter::FormatSerialize(serializer);
81
+ }
82
+
83
+ unique_ptr<TableFilter> IsNotNullFilter::FormatDeserialize(FormatDeserializer &deserializer) {
84
+ auto result = duckdb::unique_ptr<IsNotNullFilter>(new IsNotNullFilter());
85
+ return std::move(result);
86
+ }
87
+
88
+ void IsNullFilter::FormatSerialize(FormatSerializer &serializer) const {
89
+ TableFilter::FormatSerialize(serializer);
90
+ }
91
+
92
+ unique_ptr<TableFilter> IsNullFilter::FormatDeserialize(FormatDeserializer &deserializer) {
93
+ auto result = duckdb::unique_ptr<IsNullFilter>(new IsNullFilter());
94
+ return std::move(result);
95
+ }
96
+
97
+ } // namespace duckdb
@@ -10,3 +10,5 @@
10
10
 
11
11
  #include "src/common/serializer/buffered_serializer.cpp"
12
12
 
13
+ #include "src/common/serializer/format_serializer.cpp"
14
+
@@ -20,6 +20,8 @@
20
20
 
21
21
  #include "src/storage/serialization/serialize_statement.cpp"
22
22
 
23
+ #include "src/storage/serialization/serialize_table_filter.cpp"
24
+
23
25
  #include "src/storage/serialization/serialize_tableref.cpp"
24
26
 
25
27
  #include "src/storage/serialization/serialize_types.cpp"