Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.
Sign upIntoUpdateTarget not implemented for a delete operation #1369
Comments
This comment has been minimized.
|
Thanks for the issue. It's unfortunate that Rust was not able to provide a better error message here. The reason that this occurs becomes more clear if you try to load You can work around this by running your subselect as a separate query. (Since you're using SQLite, there's no round-trip time to worry about). Your code works if changed to the following: let child = comments.select(parent).filter(parent.is_not_null()).load::<Option<i32>>()?;
let target = comments.filter(mode.eq(2)).filter(id.nullable().ne_any(child)); |
sgrif
closed this
Dec 12, 2017
This comment has been minimized.
Libbum
commented
Dec 12, 2017
|
Oh, I see! Thanks for the reasoning and suggested changes -- can confirm they do indeed work as expected. |
Libbum commentedDec 11, 2017
Setup
Versions
Feature Flags
Problem Description
I have a similar issue to #998 in that my delete operation is failing to build in a portion of my query.
What are you trying to accomplish?
The following sql:
implemented with the following query:
on a table:
What is the expected output?
queryshould successfully compile.What is the actual output?
A compilation failure stating that
IntoUpdateTargetis not implemented for thequery.Are you seeing any additional errors?
The complete error output is below:
error[E0277]: the trait bound
diesel::query_builder::SelectStatement<schema::comments::table, diesel::query_builder::select_clause::DefaultSelectClause, diesel::query_builder::distinct_clause::NoDistinctClause, diesel::query_builder::where_clause::WhereClause<diesel::expression::operators::And<diesel::expression::operators::Eq<schema::comments::columns::mode, diesel::expression::bound::Bound<diesel::types::Integer, i32>>, diesel::expression::array_comparison::NotIn<schema::comments::columns::id, diesel::expression::array_comparison::Subselect<diesel::query_builder::SelectStatement<schema::comments::table, diesel::query_builder::select_clause::SelectClause<schema::comments::columns::parent>, diesel::query_builder::distinct_clause::NoDistinctClause, diesel::query_builder::where_clause::WhereClause<diesel::dsl::IsNotNull<schema::comments::columns::parent>>>, diesel::types::Integer>>>>>: diesel::query_builder::IntoUpdateTargetis not satisfied--> src/models/comments/mod.rs:196:21
|
196 | let query = diesel::delete(target);
| ^^^^^^^^^^^^^^ the trait
diesel::query_builder::IntoUpdateTargetis not implemented fordiesel::query_builder::SelectStatement<schema::comments::table, diesel::query_builder::select_clause::DefaultSelectClause, diesel::query_builder::distinct_clause::NoDistinctClause, diesel::query_builder::where_clause::WhereClause<diesel::expression::operators::And<diesel::expression::operators::Eq<schema::comments::columns::mode, diesel::expression::bound::Bound<diesel::types::Integer, i32>>, diesel::expression::array_comparison::NotIn<schema::comments::columns::id, diesel::expression::array_comparison::Subselect<diesel::query_builder::SelectStatement<schema::comments::table, diesel::query_builder::select_clause::SelectClause<schema::comments::columns::parent>, diesel::query_builder::distinct_clause::NoDistinctClause, diesel::query_builder::where_clause::WhereClause<diesel::dsl::IsNotNull<schema::comments::columns::parent>>>, diesel::types::Integer>>>>>|
= help: the following implementations were found:
<diesel::query_builder::SelectStatement<F, diesel::query_builder::select_clause::DefaultSelectClause, diesel::query_builder::distinct_clause::NoDistinctClause, W> as diesel::query_builder::IntoUpdateTarget>
= note: required by
diesel::deleteerror[E0277]: the trait bound
diesel::query_builder::SelectStatement<schema::comments::table, diesel::query_builder::select_clause::DefaultSelectClause, diesel::query_builder::distinct_clause::NoDistinctClause, diesel::query_builder::where_clause::WhereClause<diesel::expression::operators::And<diesel::expression::operators::Eq<schema::comments::columns::mode, diesel::expression::bound::Bound<diesel::types::Integer, i32>>, diesel::expression::array_comparison::NotIn<schema::comments::columns::id, diesel::expression::array_comparison::Subselect<diesel::query_builder::SelectStatement<schema::comments::table, diesel::query_builder::select_clause::SelectClause<schema::comments::columns::parent>, diesel::query_builder::distinct_clause::NoDistinctClause, diesel::query_builder::where_clause::WhereClause<diesel::dsl::IsNotNull<schema::comments::columns::parent>>>, diesel::types::Integer>>>>>: diesel::query_builder::IntoUpdateTargetis not satisfied--> src/models/comments/mod.rs:196:21
|
196 | let query = diesel::delete(target);
| ^^^^^^^^^^^^^^^^^^^^^^ the trait
diesel::query_builder::IntoUpdateTargetis not implemented fordiesel::query_builder::SelectStatement<schema::comments::table, diesel::query_builder::select_clause::DefaultSelectClause, diesel::query_builder::distinct_clause::NoDistinctClause, diesel::query_builder::where_clause::WhereClause<diesel::expression::operators::And<diesel::expression::operators::Eq<schema::comments::columns::mode, diesel::expression::bound::Bound<diesel::types::Integer, i32>>, diesel::expression::array_comparison::NotIn<schema::comments::columns::id, diesel::expression::array_comparison::Subselect<diesel::query_builder::SelectStatement<schema::comments::table, diesel::query_builder::select_clause::SelectClause<schema::comments::columns::parent>, diesel::query_builder::distinct_clause::NoDistinctClause, diesel::query_builder::where_clause::WhereClause<diesel::dsl::IsNotNull<schema::comments::columns::parent>>>, diesel::types::Integer>>>>>|
= help: the following implementations were found:
<diesel::query_builder::SelectStatement<F, diesel::query_builder::select_clause::DefaultSelectClause, diesel::query_builder::distinct_clause::NoDistinctClause, W> as diesel::query_builder::IntoUpdateTarget>
error: aborting due to 2 previous errors
Steps to reproduce
Checklist