class Trino::Client::Query

Public Class Methods

faraday_client(options) click to toggle source
# File lib/trino/client/query.rb, line 42
def self.faraday_client(options)
  Trino::Client.faraday_client(options)
end
kill(query_id, options) click to toggle source
# File lib/trino/client/query.rb, line 34
def self.kill(query_id, options)
  faraday = faraday_client(options)
  response = faraday.delete do |req|
    req.url "/v1/query/#{query_id}"
  end
  return response.status / 100 == 2
end
new(api) click to toggle source
# File lib/trino/client/query.rb, line 46
def initialize(api)
  @api = api
end
resume(next_uri, options) click to toggle source
# File lib/trino/client/query.rb, line 30
def self.resume(next_uri, options)
  new StatementClient.new(faraday_client(options), nil, options, next_uri)
end
start(query, options) click to toggle source
# File lib/trino/client/query.rb, line 26
def self.start(query, options)
  new StatementClient.new(faraday_client(options), query, options)
end

Public Instance Methods

advance() click to toggle source
# File lib/trino/client/query.rb, line 58
def advance
  @api.advance
end
cancel() click to toggle source
# File lib/trino/client/query.rb, line 124
def cancel
  @api.cancel_leaf_stage
end
close() click to toggle source
# File lib/trino/client/query.rb, line 128
def close
  @api.close
  nil
end
columns() click to toggle source
# File lib/trino/client/query.rb, line 82
def columns
  wait_for_columns

  return @api.current_results.columns
end
current_results() click to toggle source
# File lib/trino/client/query.rb, line 50
def current_results
  @api.current_results
end
current_results_headers() click to toggle source
# File lib/trino/client/query.rb, line 54
def current_results_headers
  @api.current_results_headers
end
each_row(&block) click to toggle source
# File lib/trino/client/query.rb, line 96
def each_row(&block)
  each_row_chunk {|chunk|
    chunk.each(&block)
  }
end
each_row_chunk(&block) click to toggle source
# File lib/trino/client/query.rb, line 102
def each_row_chunk(&block)
  wait_for_data

  if self.columns == nil
    raise TrinoError, "Query #{@api.current_results.id} has no columns"
  end

  begin
    if data = @api.current_results.data
      block.call(data)
    end
  end while advance_and_raise
end
next_uri() click to toggle source
# File lib/trino/client/query.rb, line 120
def next_uri
  @api.current_results.next_uri
end
query_info() click to toggle source
# File lib/trino/client/query.rb, line 116
def query_info
  @api.query_info
end
raise_if_failed() click to toggle source
# File lib/trino/client/query.rb, line 133
def raise_if_failed
  if @api.client_aborted?
    raise TrinoClientError, "Query aborted by user"
  elsif @api.query_failed?
    results = @api.current_results
    error = results.error
    raise TrinoQueryError.new("Query #{results.id} failed: #{error.message}", results.id, error.error_code, error.error_name, error.failure_info)
  end
end
rows() click to toggle source
# File lib/trino/client/query.rb, line 88
def rows
  rows = []
  each_row_chunk {|chunk|
    rows.concat(chunk)
  }
  return rows
end

Private Instance Methods

advance_and_raise() click to toggle source
# File lib/trino/client/query.rb, line 62
def advance_and_raise
  cont = @api.advance
  raise_if_failed
  cont
end
wait_for_columns() click to toggle source
# File lib/trino/client/query.rb, line 68
def wait_for_columns
  while @api.current_results.columns == nil && advance_and_raise
  end
end
wait_for_data() click to toggle source
# File lib/trino/client/query.rb, line 73
def wait_for_data
  while @api.current_results.data == nil && advance_and_raise
  end
end