| 
					
				 | 
			
			
				@@ -79,12 +79,15 @@ module Blazer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if @run_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         @timestamp = blazer_params[:timestamp].to_i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        @columns, @rows, @error, @cached_at = @data_source.run_results(@run_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        @success = !@rows.nil? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        @result = @data_source.run_results(@run_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        @success = !@result.nil? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if @success 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           @data_source.delete_results(@run_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          @just_cached = !@error && @cached_at.present? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          @columns = @result.columns 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          @rows = @result.rows 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          @error = @result.error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          @just_cached = !@result.error && @result.cached_at.present? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           @cached_at = nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           params[:data_source] = nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           render_run 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -101,20 +104,28 @@ module Blazer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         @run_id = Blazer.async ? SecureRandom.uuid : nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         options = {user: blazer_user, query: @query, refresh_cache: params[:check], run_id: @run_id} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        result = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if Blazer.async && request.format.symbol != :csv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          result = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           Blazer::RunStatementJob.perform_async(result, @data_source, @statement, options) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           wait_start = Time.now 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           loop do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             sleep(0.02) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             break if result.any? || Time.now - wait_start > 3 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          @result = result.first 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           @result = @data_source.run_main_statement(@statement, options) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if @result 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           @data_source.delete_results(@run_id) if @run_id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          @columns = @result.columns 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          @rows = @result.rows 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          @error = @result.error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          @cached_at = @result.cached_at 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          @just_cached = @result.just_cached 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           render_run 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           @timestamp = Time.now.to_i 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -166,12 +177,6 @@ module Blazer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def render_run 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      @columns = @result.columns 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      @rows = @result.rows 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      @error = @result.error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      @cached_at = @result.cached_at 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      @just_cached = @result.just_cached 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       @checks = @query ? @query.checks : [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       @first_row = @rows.first || [] 
			 |