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)