Skip to content

feat(pls): add get_generators utility to retrieve generator blocks even when datasource is invalid #4781

feat(pls): add get_generators utility to retrieve generator blocks even when datasource is invalid

feat(pls): add get_generators utility to retrieve generator blocks even when datasource is invalid #4781

Workflow file for this run

name: 'QE: WASM Query Engine size'
on:
pull_request:
paths-ignore:
- '.github/**'
- '!.github/workflows/wasm-size.yml'
- '!.github/workflows/include/rust-wasm-setup/action.yml'
- '*.md'
- 'LICENSE'
- 'CODEOWNERS'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
pr-wasm-size:
name: calculate module sizes (pr)
runs-on: ubuntu-latest
outputs:
postgresql_qe_size: ${{ steps.measure-qe.outputs.postgresql_qe_size }}
postgresql_qe_size_gz: ${{ steps.measure-qe.outputs.postgresql_qe_size_gz }}
mysql_qe_size: ${{ steps.measure-qe.outputs.mysql_qe_size }}
mysql_qe_size_gz: ${{ steps.measure-qe.outputs.mysql_qe_size_gz }}
sqlite_qe_size: ${{ steps.measure-qe.outputs.sqlite_qe_size }}
sqlite_qe_size_gz: ${{ steps.measure-qe.outputs.sqlite_qe_size_gz }}
sqlserver_qe_size: ${{ steps.measure-qe.outputs.sqlserver_qe_size }}
sqlserver_qe_size_gz: ${{ steps.measure-qe.outputs.sqlserver_qe_size_gz }}
cockroachdb_qe_size: ${{ steps.measure-qe.outputs.cockroachdb_qe_size }}
cockroachdb_qe_size_gz: ${{ steps.measure-qe.outputs.cockroachdb_qe_size_gz }}
postgresql_qc_size: ${{ steps.measure-qc.outputs.postgresql_qc_size }}
postgresql_qc_size_gz: ${{ steps.measure-qc.outputs.postgresql_qc_size_gz }}
mysql_qc_size: ${{ steps.measure-qc.outputs.mysql_qc_size }}
mysql_qc_size_gz: ${{ steps.measure-qc.outputs.mysql_qc_size_gz }}
sqlite_qc_size: ${{ steps.measure-qc.outputs.sqlite_qc_size }}
sqlite_qc_size_gz: ${{ steps.measure-qc.outputs.sqlite_qc_size_gz }}
sqlserver_qc_size: ${{ steps.measure-qc.outputs.sqlserver_qc_size }}
sqlserver_qc_size_gz: ${{ steps.measure-qc.outputs.sqlserver_qc_size_gz }}
cockroachdb_qc_size: ${{ steps.measure-qc.outputs.cockroachdb_qc_size }}
cockroachdb_qc_size_gz: ${{ steps.measure-qc.outputs.cockroachdb_qc_size_gz }}
steps:
- name: Checkout PR branch
uses: actions/checkout@v4
- uses: ./.github/workflows/include/rust-wasm-setup
- name: Build and measure QE on PR branch
id: measure-qe
run: |
export ENGINE_SIZE_OUTPUT=$GITHUB_OUTPUT
make measure-qe-wasm
- name: Build and measure QC on PR branch
id: measure-qc
run: |
export ENGINE_SIZE_OUTPUT=$GITHUB_OUTPUT
make measure-qc-wasm
base-wasm-size:
name: calculate module sizes (base branch)
runs-on: ubuntu-latest
outputs:
postgresql_qe_size: ${{ steps.measure-qe.outputs.postgresql_qe_size }}
postgresql_qe_size_gz: ${{ steps.measure-qe.outputs.postgresql_qe_size_gz }}
mysql_qe_size: ${{ steps.measure-qe.outputs.mysql_qe_size }}
mysql_qe_size_gz: ${{ steps.measure-qe.outputs.mysql_qe_size_gz }}
sqlite_qe_size: ${{ steps.measure-qe.outputs.sqlite_qe_size }}
sqlite_qe_size_gz: ${{ steps.measure-qe.outputs.sqlite_qe_size_gz }}
sqlserver_qe_size: ${{ steps.measure-qe.outputs.sqlserver_qe_size }}
sqlserver_qe_size_gz: ${{ steps.measure-qe.outputs.sqlserver_qe_size_gz }}
cockroachdb_qe_size: ${{ steps.measure-qe.outputs.cockroachdb_qe_size }}
cockroachdb_qe_size_gz: ${{ steps.measure-qe.outputs.cockroachdb_qe_size_gz }}
postgresql_qc_size: ${{ steps.measure-qc.outputs.postgresql_qc_size }}
postgresql_qc_size_gz: ${{ steps.measure-qc.outputs.postgresql_qc_size_gz }}
mysql_qc_size: ${{ steps.measure-qc.outputs.mysql_qc_size }}
mysql_qc_size_gz: ${{ steps.measure-qc.outputs.mysql_qc_size_gz }}
sqlite_qc_size: ${{ steps.measure-qc.outputs.sqlite_qc_size }}
sqlite_qc_size_gz: ${{ steps.measure-qc.outputs.sqlite_qc_size_gz }}
sqlserver_qc_size: ${{ steps.measure-qc.outputs.sqlserver_qc_size }}
sqlserver_qc_size_gz: ${{ steps.measure-qc.outputs.sqlserver_qc_size_gz }}
cockroachdb_qc_size: ${{ steps.measure-qc.outputs.cockroachdb_qc_size }}
cockroachdb_qc_size_gz: ${{ steps.measure-qc.outputs.cockroachdb_qc_size_gz }}
steps:
- name: Checkout base branch
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.base.sha }}
- uses: ./.github/workflows/include/rust-wasm-setup
- name: Build and measure QE on base branch
id: measure-qe
run: |
export ENGINE_SIZE_OUTPUT=$GITHUB_OUTPUT
make measure-qe-wasm
- name: Build and measure QC on base branch
id: measure-qc
run: |
export ENGINE_SIZE_OUTPUT=$GITHUB_OUTPUT
make measure-qc-wasm
report-diff:
name: report module size
runs-on: ubuntu-latest
needs:
- pr-wasm-size
- base-wasm-size
permissions:
pull-requests: write
steps:
- name: Compute difference
id: compute
run: |
fmt() {
echo "$1" | numfmt --format '%.3f' --to=iec-i --suffix=B
}
compute_diff() {
local provider="$1"
local base="$2"
local pr="$3"
local diff=$(fmt "$(($pr - $base))")
echo "${provider}_base=$(fmt "$base")" >> $GITHUB_OUTPUT
echo "${provider}_pr=$(fmt "$pr")" >> $GITHUB_OUTPUT
echo "${provider}_diff=$diff" >> $GITHUB_OUTPUT
}
compute_diff "postgresql_qe" "${{ needs.base-wasm-size.outputs.postgresql_qe_size }}" "${{ needs.pr-wasm-size.outputs.postgresql_qe_size }}"
compute_diff "postgresql_qe_gz" "${{ needs.base-wasm-size.outputs.postgresql_qe_size_gz }}" "${{ needs.pr-wasm-size.outputs.postgresql_qe_size_gz }}"
compute_diff "postgresql_qc" "${{ needs.base-wasm-size.outputs.postgresql_qc_size }}" "${{ needs.pr-wasm-size.outputs.postgresql_qc_size }}"
compute_diff "postgresql_qc_gz" "${{ needs.base-wasm-size.outputs.postgresql_qc_size_gz }}" "${{ needs.pr-wasm-size.outputs.postgresql_qc_size_gz }}"
compute_diff "mysql_qe" "${{ needs.base-wasm-size.outputs.mysql_qe_size }}" "${{ needs.pr-wasm-size.outputs.mysql_qe_size }}"
compute_diff "mysql_qe_gz" "${{ needs.base-wasm-size.outputs.mysql_qe_size_gz }}" "${{ needs.pr-wasm-size.outputs.mysql_qe_size_gz }}"
compute_diff "mysql_qc" "${{ needs.base-wasm-size.outputs.mysql_qc_size }}" "${{ needs.pr-wasm-size.outputs.mysql_qc_size }}"
compute_diff "mysql_qc_gz" "${{ needs.base-wasm-size.outputs.mysql_qc_size_gz }}" "${{ needs.pr-wasm-size.outputs.mysql_qc_size_gz }}"
compute_diff "sqlite_qe" "${{ needs.base-wasm-size.outputs.sqlite_qe_size }}" "${{ needs.pr-wasm-size.outputs.sqlite_qe_size }}"
compute_diff "sqlite_qe_gz" "${{ needs.base-wasm-size.outputs.sqlite_qe_size_gz }}" "${{ needs.pr-wasm-size.outputs.sqlite_qe_size_gz }}"
compute_diff "sqlite_qc" "${{ needs.base-wasm-size.outputs.sqlite_qc_size }}" "${{ needs.pr-wasm-size.outputs.sqlite_qc_size }}"
compute_diff "sqlite_qc_gz" "${{ needs.base-wasm-size.outputs.sqlite_qc_size_gz }}" "${{ needs.pr-wasm-size.outputs.sqlite_qc_size_gz }}"
compute_diff "sqlserver_qe" "${{ needs.base-wasm-size.outputs.sqlserver_qe_size }}" "${{ needs.pr-wasm-size.outputs.sqlserver_qe_size }}"
compute_diff "sqlserver_qe_gz" "${{ needs.base-wasm-size.outputs.sqlserver_qe_size_gz }}" "${{ needs.pr-wasm-size.outputs.sqlserver_qe_size_gz }}"
compute_diff "sqlserver_qc" "${{ needs.base-wasm-size.outputs.sqlserver_qc_size }}" "${{ needs.pr-wasm-size.outputs.sqlserver_qc_size }}"
compute_diff "sqlserver_qc_gz" "${{ needs.base-wasm-size.outputs.sqlserver_qc_size_gz }}" "${{ needs.pr-wasm-size.outputs.sqlserver_qc_size_gz }}"
compute_diff "cockroachdb_qe" "${{ needs.base-wasm-size.outputs.cockroachdb_qe_size }}" "${{ needs.pr-wasm-size.outputs.cockroachdb_qe_size }}"
compute_diff "cockroachdb_qe_gz" "${{ needs.base-wasm-size.outputs.cockroachdb_qe_size_gz }}" "${{ needs.pr-wasm-size.outputs.cockroachdb_qe_size_gz }}"
compute_diff "cockroachdb_qc" "${{ needs.base-wasm-size.outputs.cockroachdb_qc_size }}" "${{ needs.pr-wasm-size.outputs.cockroachdb_qc_size }}"
compute_diff "cockroachdb_qc_gz" "${{ needs.base-wasm-size.outputs.cockroachdb_qc_size_gz }}" "${{ needs.pr-wasm-size.outputs.cockroachdb_qc_size_gz }}"
- name: Find past report comment
uses: peter-evans/find-comment@v3
id: findReportComment
with:
issue-number: ${{ github.event.pull_request.number }}
body-includes: '<!-- wasm-size -->'
- name: Create or update report
uses: peter-evans/create-or-update-comment@v4
# Only run on branches from our repository
# It avoids an expected failure on forks
if: ${{ github.event.pull_request.head.repo.full_name == github.repository }}
with:
comment-id: ${{ steps.findReportComment.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }}
body: |
<!-- wasm-size -->
### WASM Query Engine File Size
| Engine | This PR | Base branch | Diff |
|--------------------|-----------------------------------------------------|-----------------------------------------------------|-----------------------------------------------------|
| Postgres | ${{ steps.compute.outputs.postgresql_qe_pr }} | ${{ steps.compute.outputs.postgresql_qe_base }} | ${{ steps.compute.outputs.postgresql_qe_diff }} |
| Postgres (gzip) | ${{ steps.compute.outputs.postgresql_qe_gz_pr }} | ${{ steps.compute.outputs.postgresql_qe_gz_base }} | ${{ steps.compute.outputs.postgresql_qe_gz_diff }} |
| Mysql | ${{ steps.compute.outputs.mysql_qe_pr }} | ${{ steps.compute.outputs.mysql_qe_base }} | ${{ steps.compute.outputs.mysql_qe_diff }} |
| Mysql (gzip) | ${{ steps.compute.outputs.mysql_qe_gz_pr }} | ${{ steps.compute.outputs.mysql_qe_gz_base }} | ${{ steps.compute.outputs.mysql_qe_gz_diff }} |
| Sqlite | ${{ steps.compute.outputs.sqlite_qe_pr }} | ${{ steps.compute.outputs.sqlite_qe_base }} | ${{ steps.compute.outputs.sqlite_qe_diff }} |
| Sqlite (gzip) | ${{ steps.compute.outputs.sqlite_qe_gz_pr }} | ${{ steps.compute.outputs.sqlite_qe_gz_base }} | ${{ steps.compute.outputs.sqlite_qe_gz_diff }} |
| SQL Server | ${{ steps.compute.outputs.sqlserver_qe_pr }} | ${{ steps.compute.outputs.sqlserver_qe_base }} | ${{ steps.compute.outputs.sqlserver_qe_diff }} |
| SQL Server (gzip) | ${{ steps.compute.outputs.sqlserver_qe_gz_pr }} | ${{ steps.compute.outputs.sqlserver_qe_gz_base }} | ${{ steps.compute.outputs.sqlserver_qe_gz_diff }} |
| CockroachDB | ${{ steps.compute.outputs.cockroachdb_qe_pr }} | ${{ steps.compute.outputs.cockroachdb_qe_base }} | ${{ steps.compute.outputs.cockroachdb_qe_diff }} |
| CockroachDB (gzip) | ${{ steps.compute.outputs.cockroachdb_qe_gz_pr }} | ${{ steps.compute.outputs.cockroachdb_qe_gz_base }} | ${{ steps.compute.outputs.cockroachdb_qe_gz_diff }} |
### WASM Query Compiler File Size
| Engine | This PR | Base branch | Diff |
|--------------------|-----------------------------------------------------|-----------------------------------------------------|-----------------------------------------------------|
| Postgres | ${{ steps.compute.outputs.postgresql_qc_pr }} | ${{ steps.compute.outputs.postgresql_qc_base }} | ${{ steps.compute.outputs.postgresql_qc_diff }} |
| Postgres (gzip) | ${{ steps.compute.outputs.postgresql_qc_gz_pr }} | ${{ steps.compute.outputs.postgresql_qc_gz_base }} | ${{ steps.compute.outputs.postgresql_qc_gz_diff }} |
| Mysql | ${{ steps.compute.outputs.mysql_qc_pr }} | ${{ steps.compute.outputs.mysql_qc_base }} | ${{ steps.compute.outputs.mysql_qc_diff }} |
| Mysql (gzip) | ${{ steps.compute.outputs.mysql_qc_gz_pr }} | ${{ steps.compute.outputs.mysql_qc_gz_base }} | ${{ steps.compute.outputs.mysql_qc_gz_diff }} |
| Sqlite | ${{ steps.compute.outputs.sqlite_qc_pr }} | ${{ steps.compute.outputs.sqlite_qc_base }} | ${{ steps.compute.outputs.sqlite_qc_diff }} |
| Sqlite (gzip) | ${{ steps.compute.outputs.sqlite_qc_gz_pr }} | ${{ steps.compute.outputs.sqlite_qc_gz_base }} | ${{ steps.compute.outputs.sqlite_qc_gz_diff }} |
| SQL Server | ${{ steps.compute.outputs.sqlserver_qc_pr }} | ${{ steps.compute.outputs.sqlserver_qc_base }} | ${{ steps.compute.outputs.sqlserver_qc_diff }} |
| SQL Server (gzip) | ${{ steps.compute.outputs.sqlserver_qc_gz_pr }} | ${{ steps.compute.outputs.sqlserver_qc_gz_base }} | ${{ steps.compute.outputs.sqlserver_qc_gz_diff }} |
| CockroachDB | ${{ steps.compute.outputs.cockroachdb_qc_pr }} | ${{ steps.compute.outputs.cockroachdb_qc_base }} | ${{ steps.compute.outputs.cockroachdb_qc_diff }} |
| CockroachDB (gzip) | ${{ steps.compute.outputs.cockroachdb_qc_gz_pr }} | ${{ steps.compute.outputs.cockroachdb_qc_gz_base }} | ${{ steps.compute.outputs.cockroachdb_qc_gz_diff }} |
edit-mode: replace