Module: ActiveRecord::ConnectionAdapters::CockroachDB::DatabaseStatements

Included in:
ActiveRecord::ConnectionAdapters::CockroachDBAdapter
Defined in:
lib/active_record/connection_adapters/cockroachdb/database_statements.rb

Instance Method Summary collapse

Instance Method Details

#insert_fixtures_set(fixture_set, tables_to_delete = []) ⇒ Object

Overridden to avoid using transactions for schema creation.



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/active_record/connection_adapters/cockroachdb/database_statements.rb', line 20

def insert_fixtures_set(fixture_set, tables_to_delete = [])
  fixture_inserts = build_fixture_statements(fixture_set)
  table_deletes = tables_to_delete.map { |table| "DELETE FROM #{quote_table_name(table)}" }
  statements = table_deletes + fixture_inserts

  with_multi_statements do
    disable_referential_integrity do
      execute_batch(statements, "Fixtures Load")
    end
  end
end

#transaction_isolation_levelsObject

Since CockroachDB will run all transactions with serializable isolation, READ UNCOMMITTED, READ COMMITTED, and REPEATABLE READ are all aliases for SERIALIZABLE. This lets the adapter support all isolation levels, but READ UNCOMMITTED has been removed from this list because the ActiveRecord transaction isolation test fails for READ UNCOMMITTED. See www.cockroachlabs.com/docs/v19.2/transactions.html#isolation-levels



11
12
13
14
15
16
17
# File 'lib/active_record/connection_adapters/cockroachdb/database_statements.rb', line 11

def transaction_isolation_levels
  {
    read_committed:   "READ COMMITTED",
    repeatable_read:  "REPEATABLE READ",
    serializable:     "SERIALIZABLE"
  }
end