Skip to main content

easy_sql/
supported.rs

1//! Built-in SQL functions and operators supported by the easy-sql macros.
2//!
3//! The items below are recognized by [`query!`](crate::query) and [`query_lazy!`](crate::query_lazy)
4//! across all drivers. Individual drivers opt into support by implementing the corresponding
5//! marker traits (typically via [`impl_supports_fn`](crate::driver::impl_supports_fn),
6//! [`impl_supports_fn_any`](crate::driver::impl_supports_fn_any), or manual impls).
7//!
8//! For custom SQL functions not listed here, use
9//! [`custom_sql_function!`](crate::custom_sql_function).
10//!
11//! ## Built-in SQL functions
12//! - Aggregates:
13//!   - `COUNT` → [`SupportsCount`](crate::driver::functions::SupportsCount)
14//!   - `SUM` → [`SupportsSum`](crate::driver::functions::SupportsSum)
15//!   - `AVG` → [`SupportsAvg`](crate::driver::functions::SupportsAvg)
16//!   - `MIN` → [`SupportsMin`](crate::driver::functions::SupportsMin)
17//!   - `MAX` → [`SupportsMax`](crate::driver::functions::SupportsMax)
18//! - Text:
19//!   - `CONCAT` → [`SupportsConcat`](crate::driver::functions::SupportsConcat)
20//!   - `UPPER` → [`SupportsUpper`](crate::driver::functions::SupportsUpper)
21//!   - `LOWER` → [`SupportsLower`](crate::driver::functions::SupportsLower)
22//!   - `LENGTH` → [`SupportsLength`](crate::driver::functions::SupportsLength)
23//!   - `TRIM` → [`SupportsTrim`](crate::driver::functions::SupportsTrim)
24//!   - `SUBSTRING` → [`SupportsSubstring`](crate::driver::functions::SupportsSubstring)
25//!   - `SUBSTR` → [`SupportsSubstr`](crate::driver::functions::SupportsSubstr)
26//! - Null handling:
27//!   - `COALESCE` → [`SupportsCoalesce`](crate::driver::functions::SupportsCoalesce)
28//!   - `NULLIF` → [`SupportsNullif`](crate::driver::functions::SupportsNullif)
29//!   - `IFNULL` → [`SupportsIfnull`](crate::driver::functions::SupportsIfnull)
30//! - Date/time:
31//!   - `NOW` → [`SupportsNow`](crate::driver::functions::SupportsNow)
32//!   - `DATE` → [`SupportsDate`](crate::driver::functions::SupportsDate)
33//!   - `TIME` → [`SupportsTime`](crate::driver::functions::SupportsTime)
34//!   - `DATETIME` → [`SupportsDatetime`](crate::driver::functions::SupportsDatetime)
35//!   - `CURRENT_TIMESTAMP` → [`SupportsCurrentTimestamp`](crate::driver::functions::SupportsCurrentTimestamp)
36//!   - `CURRENT_DATE` → [`SupportsCurrentDate`](crate::driver::functions::SupportsCurrentDate)
37//!   - `CURRENT_TIME` → [`SupportsCurrentTime`](crate::driver::functions::SupportsCurrentTime)
38//! - Math:
39//!   - `ABS` → [`SupportsAbs`](crate::driver::functions::SupportsAbs)
40//!   - `ROUND` → [`SupportsRound`](crate::driver::functions::SupportsRound)
41//!   - `CEIL` → [`SupportsCeil`](crate::driver::functions::SupportsCeil)
42//!   - `CEILING` → [`SupportsCeiling`](crate::driver::functions::SupportsCeiling)
43//!   - `FLOOR` → [`SupportsFloor`](crate::driver::functions::SupportsFloor)
44//!   - `POWER` → [`SupportsPower`](crate::driver::functions::SupportsPower)
45//!   - `POW` → [`SupportsPow`](crate::driver::functions::SupportsPow)
46//!   - `SQRT` → [`SupportsSqrt`](crate::driver::functions::SupportsSqrt)
47//!   - `MOD` → [`SupportsMod`](crate::driver::functions::SupportsMod)
48//! - Misc:
49//!   - `CAST` → [`SupportsCast`](crate::driver::functions::SupportsCast)
50//!   - `DISTINCT` → [`SupportsDistinct`](crate::driver::functions::SupportsDistinct)
51//!
52//! ## Built-in operators
53//! - Boolean logic:
54//!   - `AND` → [`SupportsAnd`](crate::driver::operators::SupportsAnd)
55//!   - `OR` → [`SupportsOr`](crate::driver::operators::SupportsOr)
56//! - Arithmetic:
57//!   - `+` → [`SupportsAdd`](crate::driver::operators::SupportsAdd)
58//!   - `-` → [`SupportsSub`](crate::driver::operators::SupportsSub)
59//!   - `*` → [`SupportsMul`](crate::driver::operators::SupportsMul)
60//!   - `/` → [`SupportsDiv`](crate::driver::operators::SupportsDiv)
61//!   - `%` → [`SupportsModOperator`](crate::driver::operators::SupportsModOperator)
62//! - String/json:
63//!   - `||` → [`SupportsConcatOperator`](crate::driver::operators::SupportsConcatOperator)
64//!   - `->` → [`SupportsJsonExtract`](crate::driver::operators::SupportsJsonExtract)
65//!   - `->>` → [`SupportsJsonExtractText`](crate::driver::operators::SupportsJsonExtractText)
66//! - Bitwise:
67//!   - `&` → [`SupportsBitAnd`](crate::driver::operators::SupportsBitAnd)
68//!   - `|` → [`SupportsBitOr`](crate::driver::operators::SupportsBitOr)
69//!   - `<<` → [`SupportsBitShiftLeft`](crate::driver::operators::SupportsBitShiftLeft)
70//!   - `>>` → [`SupportsBitShiftRight`](crate::driver::operators::SupportsBitShiftRight)
71//! - Comparison:
72//!   - `=` → [`SupportsEqual`](crate::driver::operators::SupportsEqual)
73//!   - `!=` → [`SupportsNotEqual`](crate::driver::operators::SupportsNotEqual)
74//!   - `>` → [`SupportsGreaterThan`](crate::driver::operators::SupportsGreaterThan)
75//!   - `>=` → [`SupportsGreaterThanOrEqual`](crate::driver::operators::SupportsGreaterThanOrEqual)
76//!   - `<` → [`SupportsLessThan`](crate::driver::operators::SupportsLessThan)
77//!   - `<=` → [`SupportsLessThanOrEqual`](crate::driver::operators::SupportsLessThanOrEqual)
78//!   - `LIKE` → [`SupportsLike`](crate::driver::operators::SupportsLike)
79//!   - `IS NULL` → [`SupportsIsNull`](crate::driver::operators::SupportsIsNull)
80//!   - `IS NOT NULL` → [`SupportsIsNotNull`](crate::driver::operators::SupportsIsNotNull)
81//!   - `IN` → [`SupportsIn`](crate::driver::operators::SupportsIn)
82//!   - `BETWEEN` → [`SupportsBetween`](crate::driver::operators::SupportsBetween)