diesel::pg::types::sql_types

Struct Jsonb

Source
pub struct Jsonb;
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

extern crate serde_json;
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"
}"#).unwrap();
let inserted_address = insert_into(contacts)
    .values((name.eq("Claus"), address.eq(&santas_address)))
    .returning(address)
    .get_result(&connection);
assert_eq!(Ok(santas_address), inserted_address);

Trait Implementations§

Source§

impl<'expr2, 'expr> AsExpression<Jsonb> for &'expr2 &'expr Value

Source§

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

Source§

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

Source§

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

Source§

fn from_sql(bytes: Option<&[u8]>) -> Result<Self>

See the trait documentation.
Source§

impl HasSqlType<Jsonb> for Pg

Source§

fn metadata(_: &PgMetadataLookup) -> PgTypeMetadata

Fetch the metadata for the given type Read more
Source§

impl QueryId for Jsonb

Source§

const HAS_STATIC_QUERY_ID: bool = true

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

type QueryId = Jsonb

A type which uniquely represents Self in a SQL query. 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 ToSql<Jsonb, Pg> for Value

Source§

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

See the trait documentation.
Source§

impl Copy for Jsonb

Source§

impl NotNull 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<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
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> IntoNullable for T
where T: NotNull,

Source§

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>
where Self: AsExpression<T> + Sized,

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

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

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

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

Source§

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>,

Source§

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>,

Source§

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.