[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
for eschema in schema.entities():
if not (eschema.final or 'cw_source' in eschema.subjrels):
add_relation_definition(eschema.type, 'cw_source', 'CWSource', ask_confirm=False)
sql('INSERT INTO cw_source_relation(eid_from, eid_to) '
'SELECT e.eid,s.cw_eid FROM entities as e, cw_CWSource as s '
'WHERE s.cw_name=e.source AND NOT EXISTS(SELECT 1 FROM cw_source_relation WHERE eid_from=e.eid AND eid_to=s.cw_eid)')
commit()