Found while probing #324's migration in the round-7 review. Pre-existing and out of that PR's scope.
A tenant row whose schema exists but is empty (no tables) makes sqitch verify fail hard for seven changes: events-and-sessions, fix-tenant-workflows, payments-amount-cents, refund-amounts-cents, payments-typed-obligation, and two others — seven errors in a single run.
enrollment-reenrol-after-drop is the one that stays ok, because its loop guards with both information_schema.schemata and to_regclass(format('%I.enrollments', s)). Schema existence is not table existence, and only the second guard catches that.
The fixture is trivially reproducible now: create a tenant row and its schema without running clone_schema.
Worth fixing because sqitch.conf sets [deploy] verify = true, so any of these can block a deploy on a database that has one half-provisioned tenant.
Found while probing #324's migration in the round-7 review. Pre-existing and out of that PR's scope.
A tenant row whose schema exists but is empty (no tables) makes
sqitch verifyfail hard for seven changes:events-and-sessions,fix-tenant-workflows,payments-amount-cents,refund-amounts-cents,payments-typed-obligation, and two others — seven errors in a single run.enrollment-reenrol-after-dropis the one that staysok, because its loop guards with bothinformation_schema.schemataandto_regclass(format('%I.enrollments', s)). Schema existence is not table existence, and only the second guard catches that.The fixture is trivially reproducible now: create a tenant row and its schema without running
clone_schema.Worth fixing because
sqitch.confsets[deploy] verify = true, so any of these can block a deploy on a database that has one half-provisioned tenant.