Struct diesel::sql_types::Jsonb

source ·
pub struct Jsonb;
Available on crate feature postgres_backend only.
Expand description

The jsonb SQL type. This type can only be used with feature = "serde_json"

jsonb offers several advantages over regular JSON:

There are two JSON data types: json and jsonb. They accept almost identical sets of values as input. The major practical difference is one of efficiency. The json data type stores an exact copy of the input text, which processing functions must reparse on each execution; while jsonb data is stored in a decomposed binary format that makes it slightly slower to input due to added conversion overhead, but significantly faster to process, since no reparsing is needed. jsonb also supports indexing, which can be a significant advantage.

…In general, most applications should prefer to store JSON data as jsonb, unless there are quite specialized needs, such as legacy assumptions about ordering of object keys.

§ToSql impls

§FromSql impls

§Examples

table! {
    contacts {
        id -> Integer,
        name -> VarChar,
        address -> Jsonb,
    }
}

let santas_address: serde_json::Value = serde_json::from_str(r#"{
    "street": "Article Circle Expressway 1",
    "city": "North Pole",
    "postcode": "99705",
    "state": "Alaska"
}"#)?;
let inserted_address = insert_into(contacts)
    .values((name.eq("Claus"), address.eq(&santas_address)))
    .returning(address)
    .get_result::<serde_json::Value>(connection)?;
assert_eq!(santas_address, inserted_address);

Trait Implementations§

source§

impl<'__expr, '__expr2> AsExpression<Jsonb> for &'__expr2 &'__expr Value

Available on crate feature serde_json and (crate features postgres_backend or mysql_backend) only.
§

type Expression = Bound<Jsonb, &'__expr2 &'__expr Value>

The expression being returned
source§

fn as_expression(self) -> Self::Expression

Perform the conversion
source§

impl<'__expr> AsExpression<Jsonb> for &'__expr Value

Available on crate feature serde_json and (crate features postgres_backend or mysql_backend) only.
§

type Expression = Bound<Jsonb, &'__expr Value>

The expression being returned
source§

fn as_expression(self) -> Self::Expression

Perform the conversion
source§

impl AsExpression<Jsonb> for Value

Available on crate feature serde_json and (crate features postgres_backend or mysql_backend) only.
§

type Expression = Bound<Jsonb, Value>

The expression being returned
source§

fn as_expression(self) -> Self::Expression

Perform the conversion
source§

impl Clone for Jsonb

source§

fn clone(&self) -> Jsonb

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Jsonb

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Jsonb

source§

fn default() -> Jsonb

Returns the “default value” for a type. Read more
source§

impl FromSql<Jsonb, Pg> for Value

Available on crate feature serde_json only.
source§

fn from_sql(value: PgValue<'_>) -> Result<Self>

See the trait documentation.
source§

fn from_nullable_sql(bytes: Option<DB::RawValue<'_>>) -> Result<Self>

A specialized variant of from_sql for handling null values. Read more
source§

impl HasSqlType<Jsonb> for Pg

source§

fn metadata(_: &mut Self::MetadataLookup) -> PgTypeMetadata

Fetch the metadata for the given type Read more
source§

impl QueryId for Jsonb

§

type QueryId = Jsonb

A type which uniquely represents Self in a SQL query. Read more
source§

const HAS_STATIC_QUERY_ID: bool = true

Can the SQL generated by Self be uniquely identified by its type? Read more
source§

fn query_id() -> Option<TypeId>

Returns the type id of Self::QueryId if Self::HAS_STATIC_QUERY_ID. Returns None otherwise. Read more
source§

impl SqlType for Jsonb

§

type IsNull = NotNull

Is this type nullable? Read more
source§

impl ToSql<Jsonb, Pg> for Value

Available on crate feature serde_json only.
source§

fn to_sql<'b>(&'b self, out: &mut Output<'b, '_, Pg>) -> Result

See the trait documentation.
source§

impl Copy for Jsonb

source§

impl SingleValue for Jsonb

Auto Trait Implementations§

§

impl Freeze for Jsonb

§

impl RefUnwindSafe for Jsonb

§

impl Send for Jsonb

§

impl Sync for Jsonb

§

impl Unpin for Jsonb

§

impl UnwindSafe for Jsonb

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<ST, U, DB> CompatibleType<U, DB> for ST
where DB: Backend, ST: SqlType + SingleValue, U: FromSqlRow<ST, DB>,

§

type SqlType = ST

Available on crate feature i-implement-a-third-party-backend-and-opt-into-breaking-changes only.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoNotNullable for T
where T: SqlType<IsNull = NotNull>,

§

type NotNullable = T

The not nullable representation of this type. Read more
source§

impl<T> IntoNullable for T
where T: SqlType<IsNull = NotNull> + SingleValue,

§

type Nullable = Nullable<T>

The nullable representation of this type. Read more
source§

impl<T> IntoSql for T

source§

fn into_sql<T>(self) -> AsExprOf<Self, T>

Convert self to an expression for Diesel’s query builder. Read more
source§

fn as_sql<'a, T>(&'a self) -> AsExprOf<&'a Self, T>

Convert &self to an expression for Diesel’s query builder. Read more
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<ST> TypedExpressionType for ST
where ST: SingleValue,