diesel/query_builder/
distinct_clause.rs

1use crate::backend::DieselReserveSpecialization;
2use crate::query_builder::*;
3use crate::query_dsl::group_by_dsl::ValidDistinctForGroupBy;
4use crate::query_dsl::order_dsl::ValidOrderingForDistinct;
5
6#[derive(#[automatically_derived]
impl ::core::fmt::Debug for NoDistinctClause {
    #[inline]
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        ::core::fmt::Formatter::write_str(f, "NoDistinctClause")
    }
}Debug, #[automatically_derived]
impl ::core::clone::Clone for NoDistinctClause {
    #[inline]
    fn clone(&self) -> NoDistinctClause { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for NoDistinctClause { }Copy, const _: () =
    {
        use diesel;
        #[allow(non_camel_case_types)]
        impl diesel::query_builder::QueryId for NoDistinctClause {
            type QueryId = NoDistinctClause<>;
            const HAS_STATIC_QUERY_ID: bool = true;
            const IS_WINDOW_FUNCTION: bool = false;
        }
    };QueryId)]
7pub struct NoDistinctClause;
8#[derive(#[automatically_derived]
impl ::core::fmt::Debug for DistinctClause {
    #[inline]
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        ::core::fmt::Formatter::write_str(f, "DistinctClause")
    }
}Debug, #[automatically_derived]
impl ::core::clone::Clone for DistinctClause {
    #[inline]
    fn clone(&self) -> DistinctClause { *self }
}Clone, #[automatically_derived]
impl ::core::marker::Copy for DistinctClause { }Copy, const _: () =
    {
        use diesel;
        #[allow(non_camel_case_types)]
        impl diesel::query_builder::QueryId for DistinctClause {
            type QueryId = DistinctClause<>;
            const HAS_STATIC_QUERY_ID: bool = true;
            const IS_WINDOW_FUNCTION: bool = false;
        }
    };QueryId)]
9pub struct DistinctClause;
10
11impl<DB> QueryFragment<DB> for NoDistinctClause
12where
13    DB: Backend + DieselReserveSpecialization,
14{
15    fn walk_ast<'b>(&'b self, _: AstPass<'_, 'b, DB>) -> QueryResult<()> {
16        Ok(())
17    }
18}
19
20impl<DB> QueryFragment<DB> for DistinctClause
21where
22    DB: Backend + DieselReserveSpecialization,
23{
24    fn walk_ast<'b>(&'b self, mut out: AstPass<'_, 'b, DB>) -> QueryResult<()> {
25        out.push_sql("DISTINCT ");
26        Ok(())
27    }
28}
29
30impl<O> ValidOrderingForDistinct<NoDistinctClause> for O {}
31impl<O> ValidOrderingForDistinct<DistinctClause> for O {}
32impl<S, G> ValidDistinctForGroupBy<S, G> for NoDistinctClause {}
33impl<S, G> ValidDistinctForGroupBy<S, G> for DistinctClause {}
34
35// This is rexported from another location
36#[allow(unreachable_pub, unused_imports)]
37#[cfg(feature = "postgres_backend")]
38pub use crate::pg::DistinctOnClause;