# HG changeset patch # User sylvain.thenault@logilab.fr # Date 1231511391 -3600 # Node ID 06e7f2932afe9473cdcaeb237a7a0ae3ac061952 # Parent 3c19343f28481dade72d80f6c73bc5bef85bd27b db-check fixes diff -r 3c19343f2848 -r 06e7f2932afe server/checkintegrity.py --- a/server/checkintegrity.py Fri Jan 09 11:01:34 2009 +0100 +++ b/server/checkintegrity.py Fri Jan 09 15:29:51 2009 +0100 @@ -100,14 +100,14 @@ Entity.check = _check -def check_schema(session): +def check_schema(schema, session, eids, fix=1): """check serialized schema""" print 'Checking serialized schema' unique_constraints = ('SizeConstraint', 'FormatConstraint', 'VocabularyConstraint', 'RQLConstraint', 'RQLVocabularyConstraint') rql = ('Any COUNT(X),RN,EN,ECTN GROUPBY RN,EN,ECTN ORDERBY 1 ' - 'WHERE X is Econstraint, R constrained_by X, ' + 'WHERE X is EConstraint, R constrained_by X, ' 'R relation_type RT, R from_entity ET, RT name RN, ' 'ET name EN, X cstrtype ECT, ECT name ECTN') for count, rn, en, cstrname in session.execute(rql): @@ -188,15 +188,17 @@ continue if rschema.inlined: for subjtype in rschema.subjects(): - cursor = session.system_sql('SELECT %s FROM %s WHERE %s IS NOT NULL;' - % (rtype, subjtype, rtype)) + sql = 'SELECT %s FROM %s WHERE %s IS NOT NULL;' % ( + rtype, subjtype, rtype) + cursor = session.system_sql(sql) for row in cursor.fetchall(): eid = row[0] if not has_eid(cursor, eid, eids): bad_related_msg(rtype, 'object', eid, fix) if fix: - session.system_sql('UPDATE %s SET %s = NULL WHERE eid=%s;' - % (subjtype, rtype, eid)) + sql = 'UPDATE %s SET %s = NULL WHERE eid=%s;' % ( + subjtype, rtype, eid) + session.system_sql() continue cursor = session.system_sql('SELECT eid_from FROM %s_relation;' % rtype) for row in cursor.fetchall(): @@ -204,15 +206,18 @@ if not has_eid(cursor, eid, eids): bad_related_msg(rtype, 'subject', eid, fix) if fix: - session.system_sql( - 'DELETE FROM %s_relations WHERE eid_from=%s;' % (rtype, eid)) + sql = 'DELETE FROM %s_relation WHERE eid_from=%s;' % ( + rtype, eid) + session.system_sql(sql) cursor = session.system_sql('SELECT eid_to FROM %s_relation;' % rtype) for row in cursor.fetchall(): eid = row[0] if not has_eid(cursor, eid, eids): bad_related_msg(rtype, 'object', eid, fix) if fix: - session.system_sql('DELETE FROM relations WHERE eid_to=%s;' % eid) + sql = 'DELETE FROM %s_relation WHERE eid_to=%s;' % ( + rtype, eid) + session.system_sql(sql) def check_metadata(schema, session, eids, fix=1):