@@ -75,8 +75,9 @@ string SubstraitToDuckDB::RemoveExtension(const string &function_name) {
75
75
return name;
76
76
}
77
77
78
- SubstraitToDuckDB::SubstraitToDuckDB (shared_ptr<ClientContext> &context_p, const string &serialized, bool json)
79
- : context(context_p) {
78
+ SubstraitToDuckDB::SubstraitToDuckDB (shared_ptr<ClientContext> &context_p, const string &serialized, bool json,
79
+ bool acquire_lock_p)
80
+ : context(context_p), acquire_lock(acquire_lock_p) {
80
81
if (!json) {
81
82
if (!plan.ParseFromString (serialized)) {
82
83
throw std::runtime_error (" Was not possible to convert binary into Substrait plan" );
@@ -549,9 +550,9 @@ shared_ptr<Relation> SubstraitToDuckDB::TransformReadOp(const substrait::Rel &so
549
550
if (!table_info) {
550
551
throw CatalogException (" Table '%s' does not exist!" , table_name);
551
552
}
552
- return make_shared_ptr<TableRelation>(context, std::move (table_info), false );
553
+ scan = make_shared_ptr<TableRelation>(context, std::move (table_info), acquire_lock );
553
554
} catch (...) {
554
- scan = make_shared_ptr<ViewRelation>(context, DEFAULT_SCHEMA, table_name, false );
555
+ scan = make_shared_ptr<ViewRelation>(context, DEFAULT_SCHEMA, table_name, acquire_lock );
555
556
}
556
557
} else if (sget.has_local_files ()) {
557
558
vector<Value> parquet_files;
@@ -573,8 +574,8 @@ shared_ptr<Relation> SubstraitToDuckDB::TransformReadOp(const substrait::Rel &so
573
574
string name = " parquet_" + StringUtil::GenerateRandomName ();
574
575
named_parameter_map_t named_parameters ({{" binary_as_string" , Value::BOOLEAN (false )}});
575
576
vector<Value> parameters {Value::LIST (parquet_files)};
576
- auto scan_rel = make_shared_ptr<TableFunctionRelation>(context, " parquet_scan " , parameters,
577
- std::move (named_parameters), nullptr , true , false );
577
+ auto scan_rel = make_shared_ptr<TableFunctionRelation>(
578
+ context, " parquet_scan " , parameters, std::move (named_parameters), nullptr , true , acquire_lock );
578
579
auto rel = static_cast <Relation *>(scan_rel.get ());
579
580
scan = rel->Alias (name);
580
581
} else if (sget.has_virtual_table ()) {
@@ -590,7 +591,7 @@ shared_ptr<Relation> SubstraitToDuckDB::TransformReadOp(const substrait::Rel &so
590
591
expression_rows.emplace_back (expression_row);
591
592
}
592
593
vector<string> column_names;
593
- scan = make_shared_ptr<ValueRelation>(context, expression_rows, column_names, " values" , false );
594
+ scan = make_shared_ptr<ValueRelation>(context, expression_rows, column_names, " values" , acquire_lock );
594
595
} else {
595
596
throw NotImplementedException (" Unsupported type of read operator for substrait" );
596
597
}
0 commit comments