feat(pls): add get_generators
utility to retrieve generator blocks even when datasource is invalid
#4781
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |