pub unsafe trait SqlTranslatable {
    // Required methods
    fn argument_sql() -> Result<SqlMapping, ArgumentError>;
    fn return_sql() -> Result<Returns, ReturnsError>;

    // Provided methods
    fn type_name() -> &'static str { ... }
    fn variadic() -> bool { ... }
    fn optional() -> bool { ... }
    fn entity() -> FunctionMetadataTypeEntity { ... }
}
Expand description

A value which can be represented in SQL

§Safety

By implementing this, you assert you are not lying to either Postgres or Rust in doing so. This trait asserts a safe translation exists between values of this type from Rust to SQL, or from SQL into Rust. If you are mistaken about how this works, either the Postgres C API or the Rust handling in PGRX may emit undefined behavior.

It cannot be made private or sealed due to details of the structure of the PGRX framework. Nonetheless, if you are not confident the translation is valid: do not implement this trait.

Required Methods§

Provided Methods§

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl SqlTranslatable for &CStr

source§

impl SqlTranslatable for bool

source§

impl SqlTranslatable for char

source§

impl SqlTranslatable for f32

source§

impl SqlTranslatable for f64

source§

impl SqlTranslatable for i8

source§

impl SqlTranslatable for i16

source§

impl SqlTranslatable for i32

source§

impl SqlTranslatable for i64

source§

impl SqlTranslatable for u8

source§

impl SqlTranslatable for u32

source§

impl SqlTranslatable for CString

source§

impl SqlTranslatable for String

source§

impl SqlTranslatable for CStr

source§

impl<'a> SqlTranslatable for &'a str

source§

impl<'a> SqlTranslatable for &'a [u8]

source§

impl<E> SqlTranslatable for Result<(), E>
where E: Any + Display,

source§

impl<T> SqlTranslatable for Option<T>
where T: SqlTranslatable,

source§

impl<T> SqlTranslatable for *mut T
where T: SqlTranslatable,

source§

impl<T> SqlTranslatable for &T
where T: SqlTranslatable,

source§

impl<T> SqlTranslatable for Vec<T>
where T: SqlTranslatable,

source§

impl<T, E> SqlTranslatable for Result<T, E>
where T: SqlTranslatable, E: Any + Display,

Implementors§