Class: FastCount::Adapters::SqliteAdapter

Inherits:
BaseAdapter
  • Object
show all
Defined in:
lib/fast_count/adapters/sqlite_adapter.rb

Overview

No one should use sqlite in production and moreover with lots of data, so we can just use ‘SELECT COUNT(*)`. Support for it is technically not needed, but was added for convenience in development.

Instance Method Summary collapse

Methods inherited from BaseAdapter

#initialize, #install, #uninstall

Constructor Details

This class inherits a constructor from FastCount::Adapters::BaseAdapter

Instance Method Details

#estimated_count(sql) ⇒ Object



15
16
17
# File 'lib/fast_count/adapters/sqlite_adapter.rb', line 15

def estimated_count(sql)
  @connection.select_value("SELECT COUNT(*) FROM (#{sql})")
end

#fast_count(table_name, _threshold) ⇒ Object



11
12
13
# File 'lib/fast_count/adapters/sqlite_adapter.rb', line 11

def fast_count(table_name, _threshold)
  @connection.select_value("SELECT COUNT(*) FROM #{@connection.quote_table_name(table_name)}")
end

#fast_distinct_count(table_name, column_name) ⇒ Object



19
20
21
22
23
24
25
# File 'lib/fast_count/adapters/sqlite_adapter.rb', line 19

def fast_distinct_count(table_name, column_name)
  @connection.select_value("    SELECT COUNT(*) FROM (\n      SELECT DISTINCT \#{@connection.quote_column_name(column_name)} FROM \#{@connection.quote_table_name(table_name)}\n    ) AS tmp\n  SQL\nend\n")