Sha256: 3a20c9b516282e65b6dc99e369184fa778e25c1783dcb45d02c4e72e743c0cfb
Contents?: true
Size: 1.87 KB
Versions: 2
Compression:
Stored size: 1.87 KB
Contents
# frozen_string_literal: true require 'sequel/adapters/postgres' module Sequel # # A simplistic and not fully functional CockroachDB adapter # # TODO: to replace with a better alternative once available # module Cockroach class Database < Sequel::Postgres::Database set_adapter_scheme :cockroach set_adapter_scheme :cockroachdb # Cockroach DB only supports one savepoint def supports_savepoints? false end def server_version(*) 80000 # mimics Postgres v8 # 100000 # mimics Postgres v10 end # 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 # 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 private def dataset_class_default Dataset end end class Dataset < Sequel::Postgres::Dataset def default_timestamp_format "'%Y-%m-%d %H:%M:%S%N%:z'" end end # class Dataset end # module Cockroach end # module Sequel
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
mimi-db-0.3.5 | lib/mimi/db/extensions/sequel-cockroachdb.rb |
mimi-db-0.3.4 | lib/mimi/db/extensions/sequel-cockroachdb.rb |