class Sequel::Cockroach::Database

Public Instance Methods

indexes(table_name) click to toggle source

Retrieves indexes for the given table

NOTE: Apparently CockroachDB is not fully compatible with Postgres or Sequel's Postgres adapter, and it can't correctly figure out indexes and their properties. As a workaround, a specific indexes() method is implemented here, which executes `SHOW INDEXES FROM …` and parses the results.

@param table_name [String,Symbol] @return [Hash] index_name => index_properties

# File lib/mimi/db/extensions/sequel-cockroachdb.rb, line 36
def indexes(table_name)
  idxs = {}
  results = fetch('show indexes from ' + table_name.to_s).all
  results.each do |idx_entry|
    idx_name = idx_entry[:Name].to_sym
    next if idx_name == :primary # ignore primary index
    idxs[idx_name] ||= { name: idx_name.to_s }
    idx = idxs[idx_name]
    idx[:unique] = idx_entry[:Unique]
    idx[:deferrable] = false
    idx[:columns] ||= []
    idx[:columns] << idx_entry[:Column].to_sym unless idx_entry[:Implicit]
  end
  idxs
end
server_version(*) click to toggle source
# File lib/mimi/db/extensions/sequel-cockroachdb.rb, line 21
def server_version(*)
  80000 # mimics Postgres v8
  # 100000 # mimics Postgres v10
end
supports_savepoints?() click to toggle source

Cockroach DB only supports one savepoint

# File lib/mimi/db/extensions/sequel-cockroachdb.rb, line 17
def supports_savepoints?
  false
end

Private Instance Methods

dataset_class_default() click to toggle source
# File lib/mimi/db/extensions/sequel-cockroachdb.rb, line 54
def dataset_class_default
  Dataset
end