Skip to content

Commit 4b2f5ac

Browse files
committed
vendor: Update vendored sources to duckdb/duckdb@4e57d13
Add (de)serialization for ExtraOperatorInfo (duckdb/duckdb#17563)
1 parent d4dc29d commit 4b2f5ac

File tree

6 files changed

+51
-11
lines changed

6 files changed

+51
-11
lines changed

src/duckdb/src/execution/operator/scan/physical_table_scan.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ PhysicalTableScan::PhysicalTableScan(vector<LogicalType> types, TableFunction fu
1818
: PhysicalOperator(PhysicalOperatorType::TABLE_SCAN, std::move(types), estimated_cardinality),
1919
function(std::move(function_p)), bind_data(std::move(bind_data_p)), returned_types(std::move(returned_types_p)),
2020
column_ids(std::move(column_ids_p)), projection_ids(std::move(projection_ids_p)), names(std::move(names_p)),
21-
table_filters(std::move(table_filters_p)), extra_info(extra_info), parameters(std::move(parameters_p)),
21+
table_filters(std::move(table_filters_p)), extra_info(std::move(extra_info)), parameters(std::move(parameters_p)),
2222
virtual_columns(std::move(virtual_columns_p)) {
2323
}
2424

src/duckdb/src/execution/physical_plan/plan_get.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -139,10 +139,10 @@ PhysicalOperator &PhysicalPlanGenerator::CreatePlan(LogicalGet &op) {
139139
// create the table scan node
140140
if (!op.function.projection_pushdown) {
141141
// function does not support projection pushdown
142-
auto &table_scan = Make<PhysicalTableScan>(op.returned_types, op.function, std::move(op.bind_data),
143-
op.returned_types, column_ids, vector<column_t>(), op.names,
144-
std::move(table_filters), op.estimated_cardinality, op.extra_info,
145-
std::move(op.parameters), std::move(op.virtual_columns));
142+
auto &table_scan = Make<PhysicalTableScan>(
143+
op.returned_types, op.function, std::move(op.bind_data), op.returned_types, column_ids, vector<column_t>(),
144+
op.names, std::move(table_filters), op.estimated_cardinality, std::move(op.extra_info),
145+
std::move(op.parameters), std::move(op.virtual_columns));
146146
// first check if an additional projection is necessary
147147
if (column_ids.size() == op.returned_types.size()) {
148148
bool projection_necessary = false;
@@ -188,7 +188,7 @@ PhysicalOperator &PhysicalPlanGenerator::CreatePlan(LogicalGet &op) {
188188
auto &table_scan =
189189
Make<PhysicalTableScan>(op.types, op.function, std::move(op.bind_data), op.returned_types, column_ids,
190190
op.projection_ids, op.names, std::move(table_filters), op.estimated_cardinality,
191-
op.extra_info, std::move(op.parameters), std::move(op.virtual_columns));
191+
std::move(op.extra_info), std::move(op.parameters), std::move(op.virtual_columns));
192192
auto &cast_table_scan = table_scan.Cast<PhysicalTableScan>();
193193
cast_table_scan.dynamic_filters = op.dynamic_filters;
194194
if (filter) {

src/duckdb/src/function/table/version/pragma_version.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#ifndef DUCKDB_PATCH_VERSION
2-
#define DUCKDB_PATCH_VERSION "0-dev3663"
2+
#define DUCKDB_PATCH_VERSION "0-dev3669"
33
#endif
44
#ifndef DUCKDB_MINOR_VERSION
55
#define DUCKDB_MINOR_VERSION 3
@@ -8,10 +8,10 @@
88
#define DUCKDB_MAJOR_VERSION 1
99
#endif
1010
#ifndef DUCKDB_VERSION
11-
#define DUCKDB_VERSION "v1.3.0-dev3663"
11+
#define DUCKDB_VERSION "v1.3.0-dev3669"
1212
#endif
1313
#ifndef DUCKDB_SOURCE_ID
14-
#define DUCKDB_SOURCE_ID "98aee5d076"
14+
#define DUCKDB_SOURCE_ID "4e57d13663"
1515
#endif
1616
#include "duckdb/function/table/system_functions.hpp"
1717
#include "duckdb/main/database.hpp"

src/duckdb/src/include/duckdb/common/extra_operator_info.hpp

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,33 @@ class ExtraOperatorInfo {
2121
public:
2222
ExtraOperatorInfo() : file_filters(""), sample_options(nullptr) {
2323
}
24-
ExtraOperatorInfo(ExtraOperatorInfo &extra_info)
25-
: file_filters(extra_info.file_filters), sample_options(std::move(extra_info.sample_options)) {
24+
ExtraOperatorInfo(ExtraOperatorInfo &&extra_info) noexcept
25+
: file_filters(std::move(extra_info.file_filters)), sample_options(std::move(extra_info.sample_options)) {
2626
if (extra_info.total_files.IsValid()) {
2727
total_files = extra_info.total_files.GetIndex();
2828
}
2929
if (extra_info.filtered_files.IsValid()) {
3030
filtered_files = extra_info.filtered_files.GetIndex();
3131
}
3232
}
33+
ExtraOperatorInfo &operator=(ExtraOperatorInfo &&extra_info) noexcept {
34+
if (this != &extra_info) {
35+
file_filters = extra_info.file_filters;
36+
if (extra_info.total_files.IsValid()) {
37+
total_files = extra_info.total_files.GetIndex();
38+
}
39+
if (extra_info.filtered_files.IsValid()) {
40+
filtered_files = extra_info.filtered_files.GetIndex();
41+
}
42+
sample_options = std::move(extra_info.sample_options);
43+
}
44+
return *this;
45+
}
46+
47+
bool operator==(const ExtraOperatorInfo &other) const {
48+
return file_filters == other.file_filters && total_files == other.total_files &&
49+
filtered_files == other.filtered_files && sample_options == other.sample_options;
50+
}
3351

3452
//! Filters that have been pushed down into the main file list
3553
string file_filters;
@@ -39,6 +57,9 @@ class ExtraOperatorInfo {
3957
optional_idx filtered_files;
4058
//! Sample options that have been pushed down into the table scan
4159
unique_ptr<SampleOptions> sample_options;
60+
61+
void Serialize(Serializer &serializer) const;
62+
static ExtraOperatorInfo Deserialize(Deserializer &deserializer);
4263
};
4364

4465
} // namespace duckdb

src/duckdb/src/planner/operator/logical_get.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@ void LogicalGet::Serialize(Serializer &serializer) const {
219219
}
220220
serializer.WriteProperty(210, "projected_input", projected_input);
221221
serializer.WritePropertyWithDefault(211, "column_indexes", column_ids);
222+
serializer.WritePropertyWithDefault(212, "extra_info", extra_info, ExtraOperatorInfo {});
222223
}
223224

224225
unique_ptr<LogicalOperator> LogicalGet::Deserialize(Deserializer &deserializer) {
@@ -256,6 +257,7 @@ unique_ptr<LogicalOperator> LogicalGet::Deserialize(Deserializer &deserializer)
256257
result->column_ids.emplace_back(col_id);
257258
}
258259
}
260+
result->extra_info = deserializer.ReadPropertyWithExplicitDefault<ExtraOperatorInfo>(212, "extra_info", {});
259261
auto &context = deserializer.Get<ClientContext &>();
260262
virtual_column_map_t virtual_columns;
261263
if (!has_serialize) {

src/duckdb/src/storage/serialization/serialize_nodes.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
#include "duckdb/parser/parsed_data/exported_table_data.hpp"
3636
#include "duckdb/common/column_index.hpp"
3737
#include "duckdb/common/table_column.hpp"
38+
#include "duckdb/common/extra_operator_info.hpp"
3839

3940
namespace duckdb {
4041

@@ -302,6 +303,22 @@ ExportedTableInfo ExportedTableInfo::Deserialize(Deserializer &deserializer) {
302303
return result;
303304
}
304305

306+
void ExtraOperatorInfo::Serialize(Serializer &serializer) const {
307+
serializer.WritePropertyWithDefault<string>(100, "file_filters", file_filters);
308+
serializer.WriteProperty<optional_idx>(101, "total_files", total_files);
309+
serializer.WriteProperty<optional_idx>(102, "filtered_files", filtered_files);
310+
serializer.WritePropertyWithDefault<unique_ptr<SampleOptions>>(103, "sample_options", sample_options);
311+
}
312+
313+
ExtraOperatorInfo ExtraOperatorInfo::Deserialize(Deserializer &deserializer) {
314+
ExtraOperatorInfo result;
315+
deserializer.ReadPropertyWithDefault<string>(100, "file_filters", result.file_filters);
316+
deserializer.ReadProperty<optional_idx>(101, "total_files", result.total_files);
317+
deserializer.ReadProperty<optional_idx>(102, "filtered_files", result.filtered_files);
318+
deserializer.ReadPropertyWithDefault<unique_ptr<SampleOptions>>(103, "sample_options", result.sample_options);
319+
return result;
320+
}
321+
305322
void HivePartitioningIndex::Serialize(Serializer &serializer) const {
306323
serializer.WritePropertyWithDefault<string>(100, "value", value);
307324
serializer.WritePropertyWithDefault<idx_t>(101, "index", index);

0 commit comments

Comments
 (0)