Class: Nquery::DataSources::PostgresqlAdapter
- Inherits:
-
Adapter
- Object
- Adapter
- Nquery::DataSources::PostgresqlAdapter
show all
- Defined in:
- lib/nquery/data_sources/postgresql_adapter.rb
Instance Method Summary
collapse
Methods inherited from Adapter
for, #initialize
Instance Method Details
#columns(table_name) ⇒ Object
10
11
12
13
14
|
# File 'lib/nquery/data_sources/postgresql_adapter.rb', line 10
def columns(table_name)
with_connection do |conn|
conn.columns(table_name).map { |c| { name: c.name, type: c.type.to_s } }
end
end
|
#execute_readonly(statement, timeout: 15, row_limit: 10_000) ⇒ Object
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/nquery/data_sources/postgresql_adapter.rb', line 16
def execute_readonly(statement, timeout: 15, row_limit: 10_000)
with_connection do |conn|
rows = []
columns = []
duration = Benchmark.realtime do
conn.transaction do
conn.execute("SET TRANSACTION READ ONLY")
conn.execute("SET statement_timeout = '#{timeout.to_i}s'")
result = conn.exec_query("#{statement.strip.sub(/;\s*\z/, '')} LIMIT #{row_limit.to_i}")
columns = result.columns
rows = result.rows
raise ActiveRecord::Rollback
end
end
{ columns: columns, rows: rows, row_count: rows.size, duration_ms: (duration * 1000).round }
end
end
|
#tables ⇒ Object
6
7
8
|
# File 'lib/nquery/data_sources/postgresql_adapter.rb', line 6
def tables
with_connection { |conn| conn.tables }
end
|