[server] fix deserialize_schema to handle properly pg schema (closes 17076486) 3.25
authorDavid Douard <david.douard@logilab.fr>
Wed, 03 May 2017 21:55:41 +0200
branch3.25
changeset 12194 2f9da7a8ecb6
parent 12193 e4ee04d442be
child 12195 81cf4cf60411
[server] fix deserialize_schema to handle properly pg schema (closes 17076486) Postgres behaviour is to look first for a table in the configured schema then fall back to 'public' if no table is found. This must be implemented in deserialize_schema when listing existing tables to check for computed relations (cw_cwcomputedrtype) otherwise computed relations may not work when using non-default pg schema.
cubicweb/server/schemaserial.py
--- a/cubicweb/server/schemaserial.py	Wed May 10 15:07:18 2017 +0200
+++ b/cubicweb/server/schemaserial.py	Wed May 03 21:55:41 2017 +0200
@@ -92,6 +92,9 @@
 
     # Computed Rtype
     tables = set(t.lower() for t in dbhelper.list_tables(cnx.cnxset.cu))
+    # on postgres, ensure the default schema name (public) is also checked
+    if dbhelper.backend_name == 'postgres':
+        tables.update(t.lower() for t in dbhelper.list_tables(cnx.cnxset.cu, 'public'))
     has_computed_relations = 'cw_cwcomputedrtype' in tables
     # computed attribute
     try: