Class: Presto::Client::Query

Inherits:
Object
  • Object
show all
Defined in:
lib/presto/client/query.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api) ⇒ Query

Returns a new instance of Query.



39
40
41
# File 'lib/presto/client/query.rb', line 39

def initialize(api)
  @api = api
end

Class Method Details

.start(query, options) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/presto/client/query.rb', line 24

def self.start(query, options)
  server = options[:server]
  unless server
    raise ArgumentError, ":server option is required"
  end

  faraday = Faraday.new(url: "http://#{server}") do |faraday|
    #faraday.request :url_encoded
    faraday.response :logger if options[:http_debug]
    faraday.adapter Faraday.default_adapter
  end

  new StatementClient.new(faraday, query, options)
end

Instance Method Details

#advanceObject



47
48
49
# File 'lib/presto/client/query.rb', line 47

def advance
  @api.advance
end

#cancelObject



100
101
102
# File 'lib/presto/client/query.rb', line 100

def cancel
  @api.cancel_leaf_stage
end

#closeObject



104
105
106
107
# File 'lib/presto/client/query.rb', line 104

def close
  @api.cancel_leaf_stage
  nil
end

#columnsObject



58
59
60
61
62
63
64
# File 'lib/presto/client/query.rb', line 58

def columns
  wait_for_data

  raise_error unless @api.query_succeeded?

  return @api.current_results.columns
end

#current_resultsObject



43
44
45
# File 'lib/presto/client/query.rb', line 43

def current_results
  @api.current_results
end

#each_row(&block) ⇒ Object



74
75
76
77
78
# File 'lib/presto/client/query.rb', line 74

def each_row(&block)
  each_row_chunk {|chunk|
    chunk.each(&block)
  }
end

#each_row_chunk(&block) ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/presto/client/query.rb', line 80

def each_row_chunk(&block)
  wait_for_data

  raise_error unless @api.query_succeeded?

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

  begin
    if data = @api.current_results.data
      block.call(data)
    end
  end while @api.advance
end

#query_infoObject



96
97
98
# File 'lib/presto/client/query.rb', line 96

def query_info
  @api.query_info
end

#rowsObject



66
67
68
69
70
71
72
# File 'lib/presto/client/query.rb', line 66

def rows
  rows = []
  each_row_chunk {|chunk|
    rows.concat(chunk)
  }
  return rows
end