Represents JSONB subscripts. This is abstracted because the subscript support depends on the database version.
Constants
SUBSCRIPT | = | ["".freeze, "[".freeze, "]".freeze].freeze |
Attributes
expression | [R] |
The expression being subscripted |
sub | [R] |
The subscript to use |
Public Class methods
new(expression, sub)
Set the expression and subscript to the given arguments
[show source]
# File lib/sequel/extensions/pg_json_ops.rb 880 def initialize(expression, sub) 881 @expression = expression 882 @sub = sub 883 freeze 884 end
Public Instance methods
sequel_ast_transform(transformer)
Support transforming of jsonb subscripts
[show source]
# File lib/sequel/extensions/pg_json_ops.rb 894 def sequel_ast_transform(transformer) 895 self.class.new(transformer.call(@expression), transformer.call(@sub)) 896 end
to_s_append(ds, sql)
Use subscripts instead of -> operator on PostgreSQL 14+
[show source]
# File lib/sequel/extensions/pg_json_ops.rb 887 def to_s_append(ds, sql) 888 server_version = ds.db.server_version 889 frag = server_version && server_version >= 140000 ? SUBSCRIPT : JSONOp::GET 890 ds.literal_append(sql, Sequel::SQL::PlaceholderLiteralString.new(frag, [@expression, @sub])) 891 end