diff --git a/pydal/dialects/postgre.py b/pydal/dialects/postgre.py index 3b2d2ce9e..4a4e1e175 100644 --- a/pydal/dialects/postgre.py +++ b/pydal/dialects/postgre.py @@ -356,11 +356,11 @@ def any(self, val, query_env={}): def contains(self, first, second, case_sensitive=True, query_env={}): if first.type.startswith("list:"): - f = self.expand(second, "string", query_env=query_env) + f = self.expand(second, "string" if first.type == 'list:string' else "integer", query_env=query_env) s = self.any(first, query_env) - if case_sensitive is True: - return self.eq(f, s) - return self.ilike(f, s, escape="\\", query_env=query_env) + if not case_sensitive and first.type == 'list:string': + return self.ilike(f, s, escape="\\", query_env=query_env) + return self.eq(f, s) return super(PostgreDialectArrays, self).contains( first, second, case_sensitive=case_sensitive, query_env=query_env ) @@ -379,14 +379,8 @@ def eq(self, first, second=None, query_env={}): return super(PostgreDialectArrays, self).eq(first, second, query_env) -class PostgreDialectArraysJSON(PostgreDialectArrays): - @sqltype_for("json") - def type_json(self): - return "JSON" - - @sqltype_for("jsonb") - def type_jsonb(self): - return "JSONB" +class PostgreDialectArraysJSON(PostgreDialectArrays, PostgreDialectJSON): + pass @dialects.register_for(PostgreBoolean) @@ -396,11 +390,5 @@ def type_boolean(self): return "BOOLEAN" -class PostgreDialectBooleanJSON(PostgreDialectBoolean): - @sqltype_for("json") - def type_json(self): - return "JSON" - - @sqltype_for("jsonb") - def type_jsonb(self): - return "JSONB" +class PostgreDialectBooleanJSON(PostgreDialectBoolean, PostgreDialectJSON): + pass \ No newline at end of file