We tried to add one more properties of Slices, so it involved the addition of columns in the table of slices. We modified the models.py, views.py and added new version file. However, if run the caravel db grade from the initialization, the migration will fail because in the version file
c3a8f8611885_materializing_permission.py, the migration process will use models.Slice in models.py.
session = db.Session(bind=bind)
for slc in session.query(models.Slice).all():
if slc.datasource:
slc.perm = slc.datasource.perm
session.merge(slc)
session.commit()
db.session.close()
At this time, the database has not been fully upgraded and some columns in slice that has not been added, so using models.Slice will cause runtime error. This issue has not been found before mainly because there is no commit modifying the table of slices. This version file will affect all the modification on slice tables after this version.
Basically, this migration add the perm column for slices and copy the content perm column of corresponding datasource. In my opinion, it is not necessary to do this modification in migration. The perm column can be leaved as blank and whenever the query result of this column is empty, the perm of datasource will be queryed and used as the perm of certain slice.
We tried to add one more properties of Slices, so it involved the addition of columns in the table of slices. We modified the models.py, views.py and added new version file. However, if run the
caravel db gradefrom the initialization, the migration will fail because in the version filec3a8f8611885_materializing_permission.py, the migration process will use
models.Slicein models.py.At this time, the database has not been fully upgraded and some columns in slice that has not been added, so using
models.Slicewill cause runtime error. This issue has not been found before mainly because there is no commit modifying the table of slices. This version file will affect all the modification on slice tables after this version.Basically, this migration add the
permcolumn for slices and copy the contentpermcolumn of corresponding datasource. In my opinion, it is not necessary to do this modification in migration. Thepermcolumn can be leaved as blank and whenever the query result of this column is empty, thepermof datasource will be queryed and used as thepermof certain slice.