Skip to content

Add IaC DB schema upgrade/downgrade scripts - #390

Open
Chanel (chanel-y) wants to merge 1 commit into
mainfrom
iac-downgrades-upgrades-scripts
Open

Add IaC DB schema upgrade/downgrade scripts#390
Chanel (chanel-y) wants to merge 1 commit into
mainfrom
iac-downgrades-upgrades-scripts

Conversation

@chanel-y

Copy link
Copy Markdown

The IaC extractor shipped no schema-migration scripts, so any mismatch between a database's dbscheme and a query pack's dbscheme was fatal (e.g. MRVA "database is not compatible with a QL library" errors). The dbscheme changed when Bicep support (82 bicep_* relations) was removed and yaml_comments/empty_location were added.

  • Add upgrade step iac/ql/lib/upgrades/e360fadd.../ (old bicep -> current): deletes the 82 bicep_* relations (compatibility: backwards).
  • Add downgrade step iac/downgrades/6b6bd68.../ (current -> old bicep): restores empty bicep tables, drops yaml_comments/empty_location (compatibility: partial).
  • Bootstrap iac/downgrades as a pack (qlpack.yml, initial/) and add iac/ql/lib/upgrades/initial/, matching go/rust/swift layout.
  • Teach misc/scripts/prepare-db-upgrade.sh about the iac language.
  • Fix iac/scripts/create-extractor-pack.ps1 (was a stale QL-for-QL copy) to mirror the .sh and ship the downgrades folder.

Verified with codeql 2.26.2: upgrading an old bicep DB to the current scheme and running an IaC query succeeds; downgrading a current DB back to the old scheme succeeds.

The IaC extractor shipped no schema-migration scripts, so any mismatch
between a database's dbscheme and a query pack's dbscheme was fatal (e.g.
MRVA "database is not compatible with a QL library" errors). The dbscheme
changed when Bicep support (82 bicep_* relations) was removed and
yaml_comments/empty_location were added.

- Add upgrade step iac/ql/lib/upgrades/e360fadd.../ (old bicep -> current):
  deletes the 82 bicep_* relations (compatibility: backwards).
- Add downgrade step iac/downgrades/6b6bd68.../ (current -> old bicep):
  restores empty bicep tables, drops yaml_comments/empty_location
  (compatibility: partial).
- Bootstrap iac/downgrades as a pack (qlpack.yml, initial/) and add
  iac/ql/lib/upgrades/initial/, matching go/rust/swift layout.
- Teach misc/scripts/prepare-db-upgrade.sh about the iac language.
- Fix iac/scripts/create-extractor-pack.ps1 (was a stale QL-for-QL copy)
  to mirror the .sh and ship the downgrades folder.

Verified with codeql 2.26.2: upgrading an old bicep DB to the current
scheme and running an IaC query succeeds; downgrading a current DB back
to the old scheme succeeds.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant