| Class | Sequel::Postgres::HStore |
| In: |
lib/sequel/extensions/pg_hstore_ops.rb
lib/sequel/extensions/pg_hstore.rb |
| Parent: | Object |
| 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. |
| __getobj__ | -> | to_hash |
| Return the underlying hash used by this HStore instance. | ||
Use custom marshal loading, since underlying hash uses a default proc.
# File lib/sequel/extensions/pg_hstore.rb, line 197
197: def self._load(args)
198: new(Hash[Marshal.load(args)])
199: end
Use custom marshal dumping, since underlying hash uses a default proc.
# 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.
# File lib/sequel/extensions/pg_hstore.rb, line 234
234: def fetch(key, *args, &block)
235: super(key.to_s, *args, &block)
236: end
Append a literalize version of the hstore to the sql.
# 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.
# 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