Method: GoodData::CloudResources::MSSQLClient#realize_query

Defined in:
lib/gooddata/cloud_resources/mssql/mssql_client.rb

#realize_query(query, _params) ⇒ Object



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
       = result.
      col_count = .column_count
      CSV.open(filename, 'wb') do |csv|
        csv << Array(1..col_count).map { |i| .get_column_name(i) } # build the header
        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