app/services/hyrax/workflow/permission_query.rb in hyrax-1.0.2 vs app/services/hyrax/workflow/permission_query.rb in hyrax-1.0.3

- old
+ new

@@ -255,11 +255,14 @@ entity_agent_id_subquery = entity_responsibilities.project(entity_responsibilities[:agent_id]).where( entity_responsibilities[:workflow_role_id].in(workflow_role_id_subquery) .and(entity_responsibilities[:entity_id].eq(entity.id)) ) - # PostgreSQL requires an explicit cast from string to integer - cast = Arel::Nodes::NamedFunction.new "CAST", [agent_table[:proxy_for_id].as("integer")] + # Default to "integer" for adapters like Postgres and Sqlite, but cast + # to "signed" for Mysql. The type CAST causes a SQL syntax error for an + # unsupported type depending on which adapter is being used. + type = ActiveRecord::Base.connection.adapter_name.casecmp("mysql2").zero? ? "signed" : "integer" + cast = Arel::Nodes::NamedFunction.new "CAST", [agent_table[:proxy_for_id].as(type)] sub_query_for_user = agent_table.project(cast).where( agent_table[:id].in(workflow_agent_id_subquery) .or(agent_table[:id].in(entity_agent_id_subquery)) ).where(