56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
# File 'lib/gooddata/cloud_resources/mssql/mssql_client.rb', line 56
def realize_query(query, _params)
GoodData.gd_logger.info("Realize SQL query: type=mssql status=started")
connect
filename = "#{SecureRandom.urlsafe_base64(6)}_#{Time.now.to_i}.csv"
measure = Benchmark.measure do
statement = @connection.create_statement
statement.set_fetch_size(MSSQL_FETCH_SIZE)
has_result = statement.execute(query)
if has_result
result = statement.get_result_set
metadata = result.get_meta_data
col_count = metadata.column_count
CSV.open(filename, 'wb') do |csv|
csv << Array(1..col_count).map { |i| metadata.get_column_name(i) }
csv << Array(1..col_count).map { |i| result.get_string(i)&.to_s } while result.next
end
end
end
GoodData.gd_logger.info("Realize SQL query: type=mssql status=finished duration=#{measure.real}")
filename
ensure
@connection&.close
@connection = nil
end
|