lib/active_median/model.rb in active_median-0.3.1 vs lib/active_median/model.rb in active_median-0.3.2
- old
+ new
@@ -64,9 +64,18 @@
over = "PARTITION BY #{group_values.join(", ")}"
end
relation.select(*group_values, "PERCENTILE_CONT(#{percentile}) WITHIN GROUP (ORDER BY #{column}) OVER (#{over}) AS #{column_alias}").unscope(:group)
when /sqlite/i
+ db = connection.raw_connection
+ unless db.instance_variable_get(:@active_median_handler)
+ if db.get_first_value("SELECT 1 FROM pragma_function_list WHERE name = 'percentile'").nil?
+ require "active_median/sqlite_handler"
+ db.create_aggregate_handler(ActiveMedian::SQLiteHandler)
+ end
+ db.instance_variable_set(:@active_median_handler, true)
+ end
+
relation.select(*group_values, "PERCENTILE(#{column}, #{percentile} * 100) AS #{column_alias}")
when /postg/i, /redshift/i # postgis too
relation.select(*group_values, "PERCENTILE_CONT(#{percentile}) WITHIN GROUP (ORDER BY #{column}) AS #{column_alias}")
else
raise "Connection adapter not supported: #{connection.adapter_name}"