96 lines
2.7 KiB
Markdown
96 lines
2.7 KiB
Markdown
# Migration Runs `target_limit` Dev DB Note
|
|
|
|
While writing the automatic-tax missing-address regression test, the integration
|
|
harness could not reach billing setup because the dev database schema was behind
|
|
the checked-in Drizzle model.
|
|
|
|
## Symptom
|
|
|
|
Running:
|
|
|
|
```bash
|
|
cd server
|
|
./run.sh /Users/amianthus/.superset/worktrees/06ef6d27-730a-4eec-a0b1-3f2853221478/fix/automatic-tax-retry/server/tests/integration/billing/tax/automatic-tax-no-address-error.test.ts
|
|
```
|
|
|
|
failed during setup with:
|
|
|
|
```text
|
|
error: column organizations_migration_runs.target_limit does not exist
|
|
code: "internal_error"
|
|
```
|
|
|
|
This happened before the test reached customer/product billing behavior.
|
|
|
|
## Investigation
|
|
|
|
The checked-in table model is:
|
|
|
|
```text
|
|
shared/models/migrationV2Models/migrationRunTable.ts
|
|
```
|
|
|
|
It defines:
|
|
|
|
```ts
|
|
export const migrationRuns = pgTable(
|
|
"migration_runs",
|
|
{
|
|
...
|
|
target_limit: numeric({ mode: "number" }),
|
|
...
|
|
},
|
|
);
|
|
```
|
|
|
|
The actual dev DB had `migration_runs`, not `organizations_migration_runs`.
|
|
I verified with:
|
|
|
|
```bash
|
|
infisical run --env=dev --recursive -- bun -e 'import postgres from "postgres"; const sql = postgres(process.env.DATABASE_URL!); const rows = await sql`select table_schema, table_name from information_schema.tables where table_name like ${"%migration%run%"} order by table_schema, table_name`; console.log(rows); await sql.end();'
|
|
```
|
|
|
|
which returned:
|
|
|
|
```text
|
|
public.migration_item_runs
|
|
public.migration_runs
|
|
```
|
|
|
|
The `organizations_migration_runs.target_limit` wording appears to be a SQL
|
|
alias/prefix in the failing query, not the physical table name.
|
|
|
|
## Temporary Local Fix Applied
|
|
|
|
I first tried the alias-looking table name:
|
|
|
|
```bash
|
|
infisical run --env=dev --recursive -- bun -e 'import postgres from "postgres"; const sql = postgres(process.env.DATABASE_URL!); await sql`ALTER TABLE organizations_migration_runs ADD COLUMN IF NOT EXISTS target_limit numeric`; await sql.end(); console.log("added target_limit if missing");'
|
|
```
|
|
|
|
That failed with:
|
|
|
|
```text
|
|
PostgresError: relation "organizations_migration_runs" does not exist
|
|
code: "42P01"
|
|
```
|
|
|
|
Then I applied the actual checked-in table name:
|
|
|
|
```bash
|
|
infisical run --env=dev --recursive -- bun -e 'import postgres from "postgres"; const sql = postgres(process.env.DATABASE_URL!); await sql`ALTER TABLE migration_runs ADD COLUMN IF NOT EXISTS target_limit numeric`; await sql.end(); console.log("added migration_runs.target_limit if missing");'
|
|
```
|
|
|
|
That succeeded:
|
|
|
|
```text
|
|
added migration_runs.target_limit if missing
|
|
```
|
|
|
|
After that, the automatic-tax test reached the intended billing failure.
|
|
|
|
## Follow-up Needed
|
|
|
|
Create/apply the real migration for `migration_runs.target_limit` so future
|
|
agents and dev environments do not need the manual `ALTER TABLE`.
|