| 
					
				 | 
			
			
				@@ -15,7 +15,7 @@ module Blazer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               # use token so we fetch cached results after query is run 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               client_request_token: Digest::MD5.hexdigest(statement), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               query_execution_context: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                database: settings["database"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                database: settings["database"] || "default", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               result_configuration: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 output_location: settings["output_location"] 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -47,11 +47,32 @@ module Blazer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             column_types = column_info.map(&:type) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             untyped_rows = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # paginated 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             resp.each do |page| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               untyped_rows.concat page.result_set.rows.map { |r| r.data.map(&:var_char_value) } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            rows = untyped_rows[1..-1] # TODO use column_types 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            utc = ActiveSupport::TimeZone['Etc/UTC'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            rows = untyped_rows[1..-1] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            column_types.each_with_index do |ct, i| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              # TODO more column_types 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              case ct 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              when "timestamp" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rows.each do |row| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  row[i] = utc.parse(row[i]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              when "bigint" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rows.each do |row| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  row[i] = row[i].to_i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              when "double" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rows.each do |row| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  row[i] = row[i].to_f 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             error = Blazer::TIMEOUT_MESSAGE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           end 
			 |