# HG changeset patch # User Julien Cristau # Date 1395828489 -3600 # Node ID 7e4897901c6474e818b1805c12ca7b2ec87a7e96 # Parent fe267b7336f308161a812505ce34efad1588d2a7 [migration] Improve update of in-memory schema during 3.18 CWAttribute.defaultval change We weren't updating the schema properly so a bunch of structures still had the old rdef with 'String' as object. That caused failures to add new attributes later in the migration as their default value would be a Binary object but the schema would expect a String. Closes #3683640 diff -r fe267b7336f3 -r 7e4897901c64 misc/migration/3.18.0_Any.py --- a/misc/migration/3.18.0_Any.py Thu Mar 27 14:32:21 2014 +0100 +++ b/misc/migration/3.18.0_Any.py Wed Mar 26 11:08:09 2014 +0100 @@ -74,7 +74,12 @@ rql('SET X to_entity B WHERE X is CWAttribute, X from_entity Y, Y name "CWAttribute", ' 'X relation_type Z, Z name "defaultval", B name "Bytes", NOT X to_entity B') -schema['defaultval'].rdefs.values()[0].object = schema['Bytes'] +oldrdef = schema['CWAttribute'].rdef('defaultval') +import yams.buildobjs as ybo +newrdef = ybo.RelationDefinition('CWAttribute', 'defaultval', 'Bytes') +newrdef.eid = oldrdef.eid +schema.add_relation_def(newrdef) +schema.del_relation_def('CWAttribute', 'defaultval', 'String') commit()