diff --git a/diesel/src/insertable.rs b/diesel/src/insertable.rs index e2010457f6ce..39e6d576475a 100644 --- a/diesel/src/insertable.rs +++ b/diesel/src/insertable.rs @@ -115,7 +115,7 @@ where } } -pub trait InsertValues: QueryFragment { +pub trait InsertValues: QueryFragment { fn column_names(&self, out: AstPass<'_, '_, DB>) -> QueryResult<()>; } @@ -154,7 +154,7 @@ impl Default for DefaultableColumnInsertValue { } } -impl InsertValues +impl InsertValues for DefaultableColumnInsertValue> where DB: Backend + SqlDialect, @@ -168,7 +168,7 @@ where } } -impl InsertValues for ColumnInsertValue +impl InsertValues for ColumnInsertValue where DB: Backend, Col: Column, @@ -218,7 +218,7 @@ where } #[cfg(feature = "sqlite")] -impl InsertValues +impl InsertValues for DefaultableColumnInsertValue> where Col: Column, diff --git a/diesel/src/query_builder/insert_statement/insert_with_default_for_sqlite.rs b/diesel/src/query_builder/insert_statement/insert_with_default_for_sqlite.rs index ba477d9b50f7..6d75058d10a3 100644 --- a/diesel/src/query_builder/insert_statement/insert_with_default_for_sqlite.rs +++ b/diesel/src/query_builder/insert_statement/insert_with_default_for_sqlite.rs @@ -235,7 +235,7 @@ where T: Table + Copy + QueryId + 'static, T::FromClause: QueryFragment, Op: Copy + QueryId + QueryFragment, - V: InsertValues + CanInsertInSingleQuery + QueryId, + V: InsertValues + CanInsertInSingleQuery + QueryId, { fn execute((Yes, query): Self, conn: &mut C) -> QueryResult { conn.transaction(|conn| { diff --git a/diesel/src/query_builder/insert_statement/mod.rs b/diesel/src/query_builder/insert_statement/mod.rs index fd992de0c27b..a8e0ca566377 100644 --- a/diesel/src/query_builder/insert_statement/mod.rs +++ b/diesel/src/query_builder/insert_statement/mod.rs @@ -455,7 +455,7 @@ impl QueryFragment for ValuesClause where DB: Backend, Tab: Table, - T: InsertValues, + T: InsertValues, DefaultValues: QueryFragment, { fn walk_ast<'b>(&'b self, mut out: AstPass<'_, 'b, DB>) -> QueryResult<()> { diff --git a/diesel/src/type_impls/tuples.rs b/diesel/src/type_impls/tuples.rs index e47cc6273949..a59d273ed7bd 100644 --- a/diesel/src/type_impls/tuples.rs +++ b/diesel/src/type_impls/tuples.rs @@ -156,11 +156,11 @@ macro_rules! tuple_impls { } #[allow(unused_assignments)] - impl<$($T,)+ Tab, __DB> InsertValues for ($($T,)+) + impl<$($T,)+ Tab, __DB> InsertValues<__DB, Tab> for ($($T,)+) where Tab: Table, __DB: Backend, - $($T: InsertValues,)+ + $($T: InsertValues<__DB, Tab>,)+ { fn column_names(&self, mut out: AstPass<'_, '_, __DB>) -> QueryResult<()> { let mut needs_comma = false; diff --git a/diesel_compile_tests/tests/fail/columns_cannot_be_rhs_of_insert.stderr b/diesel_compile_tests/tests/fail/columns_cannot_be_rhs_of_insert.stderr index 54d0fa5ca62d..4d125ea25ee4 100644 --- a/diesel_compile_tests/tests/fail/columns_cannot_be_rhs_of_insert.stderr +++ b/diesel_compile_tests/tests/fail/columns_cannot_be_rhs_of_insert.stderr @@ -14,7 +14,7 @@ note: required for `columns::hair_color` to implement `AppearsOnTable