|
@@ -1,6 +1,8 @@
|
|
|
module Blazer
|
|
|
module Adapters
|
|
|
class DruidAdapter < BaseAdapter
|
|
|
+ TIMESTAMP_REGEX = /\A\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z\z/
|
|
|
+
|
|
|
def run_statement(statement, comment)
|
|
|
columns = []
|
|
|
rows = []
|
|
@@ -29,6 +31,16 @@ module Blazer
|
|
|
else
|
|
|
columns = response.first.keys || []
|
|
|
rows = response.map { |r| r.values }
|
|
|
+
|
|
|
+ # Druid doesn't return column types
|
|
|
+ # and no timestamp type in JSON
|
|
|
+ rows.each do |row|
|
|
|
+ row.each_with_index do |v, i|
|
|
|
+ if v.is_a?(String) && TIMESTAMP_REGEX.match(v)
|
|
|
+ row[i] = Time.parse(v)
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
end
|
|
|
rescue => e
|
|
|
error = e.message
|