Class Sequel::Postgres::HStore
In: lib/sequel/extensions/pg_hstore.rb
lib/sequel/extensions/pg_hstore_ops.rb
Parent: DelegateClass(Hash)

Methods

Classes and Modules

Module Sequel::Postgres::HStore::DatabaseMethods
Class Sequel::Postgres::HStore::Parser

Constants

DEFAULT_PROC = lambda{|h, k| h[k.to_s] unless k.is_a?(String)}   Default proc used for all underlying HStore hashes, so that even if you grab the underlying hash, it will still convert non-string keys to strings during lookup.
QUOTE = '"'.freeze
COMMA = ",".freeze
KV_SEP = "=>".freeze
NULL = "NULL".freeze
ESCAPE_RE = /("|\\)/.freeze
ESCAPE_REPLACE = '\\\\\1'.freeze
HSTORE_CAST = '::hstore'.freeze

External Aliases

__getobj__ -> to_hash
  Return the underlying hash used by this HStore instance.

Public Class methods

Parse the given string into an HStore, assuming the str is in PostgreSQL hstore output format.

[Source]

     # File lib/sequel/extensions/pg_hstore.rb, line 189
189:       def self.parse(str)
190:         new(Parser.new(str).parse)
191:       end

Public Instance methods

Override to force the key argument to a string.

[Source]

     # File lib/sequel/extensions/pg_hstore.rb, line 215
215:       def fetch(key, *args, &block)
216:         super(key.to_s, *args, &block)
217:       end

Convert the input hash to string keys and values before merging, and return a new HStore instance with the merged hash.

[Source]

     # File lib/sequel/extensions/pg_hstore.rb, line 221
221:       def merge(hash, &block)
222:         self.class.new(super(convert_hash(hash), &block))
223:       end

Wrap the receiver in an HStoreOp so you can easily use the PostgreSQL hstore functions and operators with it.

[Source]

     # File lib/sequel/extensions/pg_hstore_ops.rb, line 241
241:         def op
242:           HStoreOp.new(self)
243:         end

Append a literalize version of the hstore to the sql.

[Source]

     # File lib/sequel/extensions/pg_hstore.rb, line 229
229:       def sql_literal_append(ds, sql)
230:         ds.literal_append(sql, unquoted_literal)
231:         sql << HSTORE_CAST
232:       end

Return a string containing the unquoted, unstring-escaped literal version of the hstore. Separated out for use by the bound argument code.

[Source]

     # File lib/sequel/extensions/pg_hstore.rb, line 237
237:       def unquoted_literal
238:         str = ''
239:         comma = false
240:         commas = COMMA
241:         quote = QUOTE
242:         kv_sep = KV_SEP
243:         null = NULL
244:         each do |k, v|
245:           str << commas if comma
246:           str << quote << escape_value(k) << quote
247:           str << kv_sep
248:           if v.nil?
249:             str << null
250:           else
251:             str << quote << escape_value(v) << quote
252:           end
253:           comma = true
254:         end
255:         str
256:       end

[Validate]