File tree Expand file tree Collapse file tree 1 file changed +7
-1
lines changed
lib/arel/engines/sql/compilers Expand file tree Collapse file tree 1 file changed +7
-1
lines changed Original file line number Diff line number Diff line change @@ -45,6 +45,10 @@ def taken_clause
4545 "TOP (#{ relation . taken . to_i } ) "
4646 end
4747
48+ def expression_select?
49+ relation . select_clauses . any? { |sc | sc . match /(COUNT|SUM|MAX|MIN|AVG)\s *\( .*\) / }
50+ end
51+
4852 def eager_limiting_select?
4953 single_distinct_select? && taken_only? && relation . group_clauses . blank?
5054 end
@@ -92,7 +96,7 @@ def select_sql_without_skipped(windowed=false)
9296 havings = relation . having_clauses
9397 orders = relation . order_clauses
9498 if windowed
95- selects = selects . map { |sc | clause_without_expression ( sc ) }
99+ selects = expression_select? ? selects : selects . map { |sc | clause_without_expression ( sc ) }
96100 elsif eager_limiting_select?
97101 groups = selects . map { |sc | clause_without_expression ( sc ) }
98102 selects = selects . map { |sc | "#{ taken_clause } #{ clause_without_expression ( sc ) } " }
@@ -140,6 +144,8 @@ def rowtable_select_clauses
140144 relation . select_clauses . map do |sc |
141145 sc . split ( ',' ) . map { |c | c . split ( ' AS ' ) . last . strip } . join ( ', ' )
142146 end
147+ elsif expression_select?
148+ [ '*' ]
143149 else
144150 relation . select_clauses . map do |sc |
145151 sc . gsub /\[ #{ relation . table . name } \] \. / , '[__rnt].'
You can’t perform that action at this time.
0 commit comments