Skip to content

Commit 5365506

Browse files
authored
Merge pull request #4343 from weiznich/prepare/2.2.5
Prepare a diesel 2.2.5 release
2 parents 291e66d + f89990e commit 5365506

File tree

83 files changed

+1532
-1679
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+1532
-1679
lines changed

CHANGELOG.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,20 @@ Increasing the minimal supported Rust version will always be coupled at least wi
1010

1111
## Unreleased
1212

13-
## [2.2.4] 2024-09-3
13+
## [2.2.5] 2024-11-21
14+
15+
### Fixed
16+
17+
* Add a typedef for `Returning` and `Count` so that `#[auto_type]` works with such queries
18+
* Fixed an issue that allowed to pass non-boolean expressions to `.and()` and `.or()` which would
19+
result in queries failing at runtime
20+
* Officially deprecating the gitter room
21+
22+
### Removed
23+
24+
* Do not mention the gitter channel in our docs anymore
25+
26+
## [2.2.4] 2024-09-03
1427

1528
### Fixed
1629

@@ -2144,3 +2157,4 @@ queries or set `PIPES_AS_CONCAT` manually.
21442157
[2.2.2]: https://github.com/diesel-rs/diesel/compare/v.2.2.1...v2.2.2
21452158
[2.2.3]: https://github.com/diesel-rs/diesel/compare/v.2.2.2...v2.2.3
21462159
[2.2.4]: https://github.com/diesel-rs/diesel/compare/v.2.2.3...v2.2.4
2160+
[2.2.5]: https://github.com/diesel-rs/diesel/compare/v.2.2.4...v2.2.5

diesel/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "diesel"
3-
version = "2.2.4"
3+
version = "2.2.5"
44
license = "MIT OR Apache-2.0"
55
description = "A safe, extensible ORM and Query Builder for PostgreSQL, SQLite, and MySQL"
66
readme = "README.md"

diesel/src/expression_methods/bool_expression_methods.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ pub trait BoolExpressionMethods: Expression + Sized {
4141
fn and<T, ST>(self, other: T) -> dsl::And<Self, T, ST>
4242
where
4343
Self::SqlType: SqlType,
44-
ST: SqlType + TypedExpressionType,
44+
ST: SqlType + TypedExpressionType + BoolOrNullableBool,
4545
T: AsExpression<ST>,
4646
And<Self, T::Expression>: Expression,
4747
{
@@ -89,7 +89,7 @@ pub trait BoolExpressionMethods: Expression + Sized {
8989
fn or<T, ST>(self, other: T) -> dsl::Or<Self, T, ST>
9090
where
9191
Self::SqlType: SqlType,
92-
ST: SqlType + TypedExpressionType,
92+
ST: SqlType + TypedExpressionType + BoolOrNullableBool,
9393
T: AsExpression<ST>,
9494
Or<Self, T::Expression>: Expression,
9595
{

diesel/src/lib.rs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,8 @@
137137
//! ## Getting help
138138
//!
139139
//! If you run into problems, Diesel has an active community.
140-
//! Either open a new [discussion] thread at diesel github repository or
141-
//! use the active Gitter room at
142-
//! [gitter.im/diesel-rs/diesel](https://gitter.im/diesel-rs/diesel)
140+
//! Open a new [discussion] thread at diesel github repository
141+
//! and we will try to help you
143142
//!
144143
//! [discussion]: https://github.com/diesel-rs/diesel/discussions/categories/q-a
145144
//!
@@ -358,6 +357,7 @@ pub mod helper_types {
358357
use super::query_dsl::methods::*;
359358
use super::query_dsl::*;
360359
use super::query_source::{aliasing, joins};
360+
use crate::dsl::CountStar;
361361
use crate::query_builder::select_clause::SelectClause;
362362

363363
#[doc(inline)]
@@ -676,6 +676,16 @@ pub mod helper_types {
676676
<U as crate::query_builder::update_statement::UpdateAutoTypeHelper>::Where,
677677
<V as crate::AsChangeset>::Changeset,
678678
>;
679+
680+
/// Represents the return type of
681+
/// [`InsertStatement::returning`](crate::query_builder::InsertStatement::returning),
682+
/// [`UpdateStatement::returning`] and
683+
/// [`DeleteStatement::returning`](crate::query_builder::DeleteStatement::returning)
684+
pub type Returning<Q, S> =
685+
<Q as crate::query_builder::returning_clause::ReturningClauseHelper<S>>::WithReturning;
686+
687+
#[doc(hidden)] // used for `QueryDsl::count`
688+
pub type Count<Q> = Select<Q, CountStar>;
679689
}
680690

681691
pub mod prelude {

diesel/src/query_builder/returning_clause.rs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1+
use super::DeleteStatement;
2+
use super::InsertStatement;
3+
use super::UpdateStatement;
14
use super::{AstPass, QueryFragment};
25
use crate::backend::{Backend, DieselReserveSpecialization};
36
use crate::query_builder::QueryId;
47
use crate::result::QueryResult;
8+
use crate::QuerySource;
59

610
#[derive(Debug, Clone, Copy, QueryId)]
711
pub struct NoReturningClause;
@@ -52,3 +56,28 @@ where
5256
Ok(())
5357
}
5458
}
59+
60+
pub trait ReturningClauseHelper<S> {
61+
type WithReturning;
62+
}
63+
64+
impl<S, T, U, Op> ReturningClauseHelper<S> for InsertStatement<T, U, Op>
65+
where
66+
T: QuerySource,
67+
{
68+
type WithReturning = InsertStatement<T, U, Op, ReturningClause<S>>;
69+
}
70+
71+
impl<S, T, U, V> ReturningClauseHelper<S> for UpdateStatement<T, U, V>
72+
where
73+
T: QuerySource,
74+
{
75+
type WithReturning = UpdateStatement<T, U, V, ReturningClause<S>>;
76+
}
77+
78+
impl<S, T, U> ReturningClauseHelper<S> for DeleteStatement<T, U>
79+
where
80+
T: QuerySource,
81+
{
82+
type WithReturning = DeleteStatement<T, U, ReturningClause<S>>;
83+
}

diesel/src/test_helpers.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#![allow(missing_docs)]
12
extern crate dotenvy;
23

34
use crate::prelude::*;

diesel_cli/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "diesel_cli"
3-
version = "2.2.4"
3+
version = "2.2.5"
44
license = "MIT OR Apache-2.0"
55
description = "Provides the CLI for the Diesel crate"
66
readme = "README.md"

diesel_compile_tests/Cargo.lock

Lines changed: 12 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

diesel_compile_tests/tests/fail/aggregate_expression_requires_column_from_same_table.stderr

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ error[E0277]: Cannot select `posts::columns::id` from `users::table`
66
|
77
= note: `posts::columns::id` is no valid selection for `users::table`
88
= help: the following other types implement trait `SelectableExpression<QS>`:
9-
<posts::columns::id as SelectableExpression<JoinOn<Join, On>>>
10-
<posts::columns::id as SelectableExpression<Only<posts::table>>>
11-
<posts::columns::id as SelectableExpression<SelectStatement<FromClause<From>>>>
12-
<posts::columns::id as SelectableExpression<Tablesample<posts::table, TSM>>>
13-
<posts::columns::id as SelectableExpression<posts::table>>
14-
<posts::columns::id as SelectableExpression<query_source::joins::Join<Left, Right, Inner>>>
15-
<posts::columns::id as SelectableExpression<query_source::joins::Join<Left, Right, LeftOuter>>>
9+
`posts::columns::id` implements `SelectableExpression<JoinOn<Join, On>>`
10+
`posts::columns::id` implements `SelectableExpression<Only<posts::table>>`
11+
`posts::columns::id` implements `SelectableExpression<SelectStatement<FromClause<From>>>`
12+
`posts::columns::id` implements `SelectableExpression<Tablesample<posts::table, TSM>>`
13+
`posts::columns::id` implements `SelectableExpression<posts::table>`
14+
`posts::columns::id` implements `SelectableExpression<query_source::joins::Join<Left, Right, Inner>>`
15+
`posts::columns::id` implements `SelectableExpression<query_source::joins::Join<Left, Right, LeftOuter>>`
1616
= note: required for `diesel::expression::functions::aggregate_folding::sum_utils::sum<diesel::sql_types::Integer, posts::columns::id>` to implement `SelectableExpression<users::table>`
1717
= note: required for `SelectStatement<FromClause<users::table>>` to implement `SelectDsl<diesel::expression::functions::aggregate_folding::sum_utils::sum<diesel::sql_types::Integer, posts::columns::id>>`
1818

@@ -41,13 +41,13 @@ error[E0277]: Cannot select `posts::columns::id` from `users::table`
4141
|
4242
= note: `posts::columns::id` is no valid selection for `users::table`
4343
= help: the following other types implement trait `SelectableExpression<QS>`:
44-
<posts::columns::id as SelectableExpression<JoinOn<Join, On>>>
45-
<posts::columns::id as SelectableExpression<Only<posts::table>>>
46-
<posts::columns::id as SelectableExpression<SelectStatement<FromClause<From>>>>
47-
<posts::columns::id as SelectableExpression<Tablesample<posts::table, TSM>>>
48-
<posts::columns::id as SelectableExpression<posts::table>>
49-
<posts::columns::id as SelectableExpression<query_source::joins::Join<Left, Right, Inner>>>
50-
<posts::columns::id as SelectableExpression<query_source::joins::Join<Left, Right, LeftOuter>>>
44+
`posts::columns::id` implements `SelectableExpression<JoinOn<Join, On>>`
45+
`posts::columns::id` implements `SelectableExpression<Only<posts::table>>`
46+
`posts::columns::id` implements `SelectableExpression<SelectStatement<FromClause<From>>>`
47+
`posts::columns::id` implements `SelectableExpression<Tablesample<posts::table, TSM>>`
48+
`posts::columns::id` implements `SelectableExpression<posts::table>`
49+
`posts::columns::id` implements `SelectableExpression<query_source::joins::Join<Left, Right, Inner>>`
50+
`posts::columns::id` implements `SelectableExpression<query_source::joins::Join<Left, Right, LeftOuter>>`
5151
= note: required for `diesel::expression::functions::aggregate_folding::avg_utils::avg<diesel::sql_types::Integer, posts::columns::id>` to implement `SelectableExpression<users::table>`
5252
= note: required for `SelectStatement<FromClause<users::table>>` to implement `SelectDsl<diesel::expression::functions::aggregate_folding::avg_utils::avg<diesel::sql_types::Integer, posts::columns::id>>`
5353

@@ -76,13 +76,13 @@ error[E0277]: Cannot select `posts::columns::id` from `users::table`
7676
|
7777
= note: `posts::columns::id` is no valid selection for `users::table`
7878
= help: the following other types implement trait `SelectableExpression<QS>`:
79-
<posts::columns::id as SelectableExpression<JoinOn<Join, On>>>
80-
<posts::columns::id as SelectableExpression<Only<posts::table>>>
81-
<posts::columns::id as SelectableExpression<SelectStatement<FromClause<From>>>>
82-
<posts::columns::id as SelectableExpression<Tablesample<posts::table, TSM>>>
83-
<posts::columns::id as SelectableExpression<posts::table>>
84-
<posts::columns::id as SelectableExpression<query_source::joins::Join<Left, Right, Inner>>>
85-
<posts::columns::id as SelectableExpression<query_source::joins::Join<Left, Right, LeftOuter>>>
79+
`posts::columns::id` implements `SelectableExpression<JoinOn<Join, On>>`
80+
`posts::columns::id` implements `SelectableExpression<Only<posts::table>>`
81+
`posts::columns::id` implements `SelectableExpression<SelectStatement<FromClause<From>>>`
82+
`posts::columns::id` implements `SelectableExpression<Tablesample<posts::table, TSM>>`
83+
`posts::columns::id` implements `SelectableExpression<posts::table>`
84+
`posts::columns::id` implements `SelectableExpression<query_source::joins::Join<Left, Right, Inner>>`
85+
`posts::columns::id` implements `SelectableExpression<query_source::joins::Join<Left, Right, LeftOuter>>`
8686
= note: required for `diesel::expression::functions::aggregate_ordering::max_utils::max<diesel::sql_types::Integer, posts::columns::id>` to implement `SelectableExpression<users::table>`
8787
= note: required for `SelectStatement<FromClause<users::table>>` to implement `SelectDsl<diesel::expression::functions::aggregate_ordering::max_utils::max<diesel::sql_types::Integer, posts::columns::id>>`
8888

@@ -111,13 +111,13 @@ error[E0277]: Cannot select `posts::columns::id` from `users::table`
111111
|
112112
= note: `posts::columns::id` is no valid selection for `users::table`
113113
= help: the following other types implement trait `SelectableExpression<QS>`:
114-
<posts::columns::id as SelectableExpression<JoinOn<Join, On>>>
115-
<posts::columns::id as SelectableExpression<Only<posts::table>>>
116-
<posts::columns::id as SelectableExpression<SelectStatement<FromClause<From>>>>
117-
<posts::columns::id as SelectableExpression<Tablesample<posts::table, TSM>>>
118-
<posts::columns::id as SelectableExpression<posts::table>>
119-
<posts::columns::id as SelectableExpression<query_source::joins::Join<Left, Right, Inner>>>
120-
<posts::columns::id as SelectableExpression<query_source::joins::Join<Left, Right, LeftOuter>>>
114+
`posts::columns::id` implements `SelectableExpression<JoinOn<Join, On>>`
115+
`posts::columns::id` implements `SelectableExpression<Only<posts::table>>`
116+
`posts::columns::id` implements `SelectableExpression<SelectStatement<FromClause<From>>>`
117+
`posts::columns::id` implements `SelectableExpression<Tablesample<posts::table, TSM>>`
118+
`posts::columns::id` implements `SelectableExpression<posts::table>`
119+
`posts::columns::id` implements `SelectableExpression<query_source::joins::Join<Left, Right, Inner>>`
120+
`posts::columns::id` implements `SelectableExpression<query_source::joins::Join<Left, Right, LeftOuter>>`
121121
= note: required for `diesel::expression::functions::aggregate_ordering::min_utils::min<diesel::sql_types::Integer, posts::columns::id>` to implement `SelectableExpression<users::table>`
122122
= note: required for `SelectStatement<FromClause<users::table>>` to implement `SelectDsl<diesel::expression::functions::aggregate_ordering::min_utils::min<diesel::sql_types::Integer, posts::columns::id>>`
123123

diesel_compile_tests/tests/fail/alias_and_group_by.stderr

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,4 @@ note: required for `columns::id` to implement `ValidGrouping<columns::name>`
1717
= note: associated types for the current `impl` cannot be restricted in `where` clauses
1818
= note: 1 redundant requirement hidden
1919
= note: required for `AliasedField<user1, columns::id>` to implement `ValidGrouping<AliasedField<user1, columns::name>>`
20-
= note: required for `SelectStatement<FromClause<Alias<user1>>, DefaultSelectClause<FromClause<...>>, ..., ..., ..., ..., ...>` to implement `SelectDsl<AliasedField<user1, columns::id>>`
21-
= note: consider using `--verbose` to print the full type name to the console
20+
= note: required for `SelectStatement<FromClause<Alias<user1>>, diesel::query_builder::select_clause::DefaultSelectClause<FromClause<Alias<user1>>>, diesel::query_builder::distinct_clause::NoDistinctClause, diesel::query_builder::where_clause::NoWhereClause, diesel::query_builder::order_clause::NoOrderClause, LimitOffsetClause<NoLimitClause, NoOffsetClause>, diesel::query_builder::group_by_clause::GroupByClause<AliasedField<user1, columns::name>>>` to implement `SelectDsl<AliasedField<user1, columns::id>>`

0 commit comments

Comments
 (0)