Class Sequel::Postgres::HStore
In: lib/sequel/extensions/pg_hstore_ops.rb
lib/sequel/extensions/pg_hstore.rb
Parent: Object

Methods

_dump   _load   fetch   merge   op   parse   sql_literal_append   unquoted_literal  

Included Modules

Sequel::SQL::AliasMethods

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.

External Aliases

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

Public Class methods

Use custom marshal loading, since underlying hash uses a default proc.

[Source]

     # File lib/sequel/extensions/pg_hstore.rb, line 197
197:       def self._load(args)
198:         new(Hash[Marshal.load(args)])
199:       end

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 203
203:       def self.parse(str)
204:         new(Parser.new(str).parse)
205:       end

Public Instance methods

Use custom marshal dumping, since underlying hash uses a default proc.

[Source]

     # File lib/sequel/extensions/pg_hstore.rb, line 229
229:       def _dump(*)
230:         Marshal.dump(to_a)
231:       end

Override to force the key argument to a string.

[Source]

     # File lib/sequel/extensions/pg_hstore.rb, line 234
234:       def fetch(key, *args, &block)
235:         super(key.to_s, *args, &block)
236:       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 240
240:       def merge(hash, &block)
241:         self.class.new(super(convert_hash(hash), &block))
242:       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 319
319:         def op
320:           HStoreOp.new(self)
321:         end

Append a literalize version of the hstore to the sql.

[Source]

     # File lib/sequel/extensions/pg_hstore.rb, line 248
248:       def sql_literal_append(ds, sql)
249:         ds.literal_append(sql, unquoted_literal)
250:         sql << '::hstore'
251:       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 256
256:       def unquoted_literal
257:         str = String.new
258:         comma = false
259:         commas = ","
260:         quote = '"'
261:         kv_sep = "=>"
262:         null = "NULL"
263:         each do |k, v|
264:           str << commas if comma
265:           str << quote << escape_value(k) << quote
266:           str << kv_sep
267:           if v.nil?
268:             str << null
269:           else
270:             str << quote << escape_value(v) << quote
271:           end
272:           comma = true
273:         end
274:         str
275:       end

[Validate]