X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/b78c39a9e242e44357fe7c5f0f70eb534ec2a9e3..be338ff6ecdfbc75e094b3e65134c9a841f3209c:/services/api/app/models/arvados_model.rb diff --git a/services/api/app/models/arvados_model.rb b/services/api/app/models/arvados_model.rb index 19f08e7297..c67a3961d9 100644 --- a/services/api/app/models/arvados_model.rb +++ b/services/api/app/models/arvados_model.rb @@ -596,16 +596,24 @@ class ArvadosModel < ActiveRecord::Base end end - def self.where_serialized(colname, value) + def self.where_serialized(colname, value, md5: false) + colsql = colname.to_s + if md5 + colsql = "md5(#{colsql})" + end if value.empty? # rails4 stores as null, rails3 stored as serialized [] or {} - sql = "#{colname.to_s} is null or #{colname.to_s} IN (?)" + sql = "#{colsql} is null or #{colsql} IN (?)" sorted = value else - sql = "#{colname.to_s} IN (?)" + sql = "#{colsql} IN (?)" sorted = deep_sort_hash(value) end - where(sql, [sorted.to_yaml, SafeJSON.dump(sorted)]) + params = [sorted.to_yaml, SafeJSON.dump(sorted)] + if md5 + params = params.map { |x| Digest::MD5.hexdigest(x) } + end + where(sql, params) end Serializer = { @@ -764,8 +772,8 @@ class ArvadosModel < ActiveRecord::Base end def is_audit_logging_enabled? - return Rails.configuration.max_audit_log_age == 0 - and Rails.configuration.max_audit_log_delete_batch > 0 + return !(Rails.configuration.max_audit_log_age.to_i == 0 && + Rails.configuration.max_audit_log_delete_batch.to_i > 0) end def log_start_state