Thanks for the quick response. I take your point about it maybe being a non-issue, I wondered as much myself. The possible scenarios I'm considering here are: 1. Untrusted file from third-party lacks constraints that are normally expected, this file is now more vulnerable to application bugs until a potential future migration happens to fix it up, and might even have rows breaking those expected constraints. 2. Untrusted file from third-party lacks tables/columns that are normally expected, at some point these might be needed and will error. To mitigate the former I can reimplement all the constraints in the application, but I suppose the ideal case for both is to detect something is amiss sooner rather than later, before the user has built more work on top of the untrusted file. The schema table looks like the best way of making absolutely sure. Thanks for your time.