class Sequel::Postgres::JSONBSubscriptOp

Represents JSONB subscripts. This is abstracted because the subscript support depends on the database version.

Constants

SUBSCRIPT

Attributes

expression[R]

The expression being subscripted

sub[R]

The subscript to use

Public Class Methods

new(expression, sub) click to toggle source

Set the expression and subscript to the given arguments

    # File lib/sequel/extensions/pg_json_ops.rb
637 def initialize(expression, sub)
638   @expression = expression
639   @sub = sub
640   freeze
641 end

Public Instance Methods

sequel_ast_transform(transformer) click to toggle source

Support transforming of jsonb subscripts

    # File lib/sequel/extensions/pg_json_ops.rb
651 def sequel_ast_transform(transformer)
652   self.class.new(transformer.call(@expression), transformer.call(@sub))
653 end
to_s_append(ds, sql) click to toggle source

Use subscripts instead of -> operator on PostgreSQL 14+

    # File lib/sequel/extensions/pg_json_ops.rb
644 def to_s_append(ds, sql)
645   server_version = ds.db.server_version
646   frag = server_version && server_version >= 140000 ? SUBSCRIPT : JSONOp::GET
647   ds.literal_append(sql, Sequel::SQL::PlaceholderLiteralString.new(frag, [@expression, @sub]))
648 end