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}"