Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
599 commits
Select commit Hold shift + click to select a range
167c558
Share PostgreSQL default variable map
adamziel Jun 19, 2026
72c13b5
Inline PostgreSQL SHOW CREATE table comment lookup
adamziel Jun 19, 2026
eacf639
Share PostgreSQL role authorization SQL
adamziel Jun 19, 2026
3bd5bea
Reuse PostgreSQL privilege relation SQL
adamziel Jun 19, 2026
50fc081
Inline PostgreSQL temporary drop identifier
adamziel Jun 19, 2026
2f3e180
Reuse PostgreSQL hidden metadata table list
adamziel Jun 19, 2026
31f024f
Inline PostgreSQL CTAS option token check
adamziel Jun 19, 2026
9d206dd
Inline PostgreSQL column comment marker wrappers
adamziel Jun 19, 2026
99fd040
Inline PostgreSQL duplicate conflict wrappers
adamziel Jun 19, 2026
0922cb2
Inline PostgreSQL single-use metadata helpers
adamziel Jun 19, 2026
0d1008a
Inline PostgreSQL temporal name wrappers
adamziel Jun 19, 2026
da7b2c4
Inline PostgreSQL static SHOW metadata adapters
adamziel Jun 19, 2026
d15f64b
Inline PostgreSQL default collation lookup
adamziel Jun 19, 2026
e602731
Inline PostgreSQL SQL mode wrapper
adamziel Jun 19, 2026
c727a3b
Inline PostgreSQL runtime function query scanners
adamziel Jun 19, 2026
ec78231
Inline PostgreSQL row count wrapper
adamziel Jun 19, 2026
26e782d
Inline PostgreSQL date format string wrapper
adamziel Jun 19, 2026
359e46d
Inline PostgreSQL column type comment wrapper
adamziel Jun 19, 2026
9437f9f
Remove PostgreSQL information_schema compatibility views
adamziel Jun 19, 2026
7dc82e4
Inline PostgreSQL one-call helpers
adamziel Jun 19, 2026
3555c35
Remove redundant PostgreSQL ON UPDATE sync
adamziel Jun 19, 2026
9d6cfde
Inline PostgreSQL information schema wrappers
adamziel Jun 19, 2026
164a0d6
Inline PostgreSQL catalog comment statements
adamziel Jun 19, 2026
34c9ed0
Inline PostgreSQL catalog type predicates
adamziel Jun 19, 2026
8cbcd5e
Inline PostgreSQL query cache helpers
adamziel Jun 19, 2026
8175d77
Inline PostgreSQL catalog expression cases
adamziel Jun 19, 2026
35bfd5b
Inline PostgreSQL runtime helper setup
adamziel Jun 19, 2026
1f8d7de
Inline PostgreSQL scalar function SQL helpers
adamziel Jun 19, 2026
a5a4b63
Inline PostgreSQL catalog metadata helpers
adamziel Jun 19, 2026
0d6c4cd
Inline PostgreSQL catalog lookup wrappers
adamziel Jun 19, 2026
ff9e23a
Inline PostgreSQL catalog column lookups
adamziel Jun 19, 2026
c0de935
Inline information schema column type SQL
adamziel Jun 19, 2026
6b421ad
Inline PostgreSQL index comment helpers
adamziel Jun 19, 2026
86fd356
Inline PostgreSQL show index metadata SQL
adamziel Jun 19, 2026
0f203cc
Reuse PostgreSQL processlist catalog relation
adamziel Jun 19, 2026
d387f93
Skip empty PostgreSQL show events query
adamziel Jun 19, 2026
c8b90ef
Reuse PostgreSQL plugins catalog relation
adamziel Jun 19, 2026
a104c9a
Inline PostgreSQL routine trigger show rows
adamziel Jun 19, 2026
57a509c
Inline PostgreSQL show open tables rows
adamziel Jun 19, 2026
e73e262
Inline PostgreSQL show databases rows
adamziel Jun 19, 2026
334c348
Reuse PostgreSQL tables relation for show status
adamziel Jun 19, 2026
bb3b4b4
Reuse PostgreSQL columns relation for introspection
adamziel Jun 19, 2026
6fb1911
Reuse PostgreSQL statistics relation for show index
adamziel Jun 19, 2026
966cc30
Reuse PostgreSQL schemata relation for database shows
adamziel Jun 19, 2026
7b0242d
Remove redundant PostgreSQL plugin row remap
adamziel Jun 19, 2026
322d107
Remove redundant open tables row remap
adamziel Jun 19, 2026
5475963
Remove redundant routine and trigger row remaps
adamziel Jun 19, 2026
28b4363
Remove dead PostgreSQL show events filtering
adamziel Jun 19, 2026
b516a29
Inline PostgreSQL hidden table placeholders
adamziel Jun 19, 2026
68edc9e
Reuse PostgreSQL information schema relation list
adamziel Jun 19, 2026
141e38b
Inline PostgreSQL catalog metadata checks
adamziel Jun 19, 2026
a8255bd
Inline PostgreSQL metadata helper wrappers
adamziel Jun 19, 2026
d67e89d
Inline PostgreSQL drop metadata cleanup
adamziel Jun 19, 2026
61a1111
Inline PostgreSQL metadata if-exists wrappers
adamziel Jun 19, 2026
d0398ab
Inline PostgreSQL constraint ordinal helpers
adamziel Jun 19, 2026
a8c630b
Consolidate PostgreSQL index metadata lookup
adamziel Jun 19, 2026
51888ec
Inline PostgreSQL spatial index key handling
adamziel Jun 19, 2026
cce11bd
Inline PostgreSQL alter rename fallback checks
adamziel Jun 19, 2026
bddad18
Inline PostgreSQL runtime variable setters
adamziel Jun 19, 2026
44f92c0
Inline static PostgreSQL information schema relations
adamziel Jun 19, 2026
c6eba04
Inline PostgreSQL tablespace information schema relations
adamziel Jun 19, 2026
a02c8ed
Inline PostgreSQL extension information schema relations
adamziel Jun 19, 2026
0552403
Inline PostgreSQL InnoDB information schema relations
adamziel Jun 19, 2026
632ea21
Inline PostgreSQL identity repair availability check
adamziel Jun 19, 2026
43134a8
Inline PostgreSQL status information schema relations
adamziel Jun 19, 2026
e084080
Inline PostgreSQL geometry information schema relation
adamziel Jun 19, 2026
146c41c
Inline PostgreSQL constraint information schema relations
adamziel Jun 19, 2026
9ae8180
Inline PostgreSQL statistics information schema relation
adamziel Jun 19, 2026
133c39a
Inline PostgreSQL column statistics relation
adamziel Jun 19, 2026
d7b2f87
Inline PostgreSQL files information schema relation
adamziel Jun 19, 2026
311d32a
Inline PostgreSQL process and privilege information schema relations
adamziel Jun 19, 2026
86f3b51
Inline PostgreSQL programmable information schema relations
adamziel Jun 19, 2026
b63fce9
Inline PostgreSQL role and lock information schema relations
adamziel Jun 19, 2026
35dbc94
Inline PostgreSQL privilege grant information schema relations
adamziel Jun 19, 2026
b2fd418
Inline PostgreSQL partition information schema relations
adamziel Jun 19, 2026
09c1046
Inline PostgreSQL tables information schema relation
adamziel Jun 19, 2026
1589cc5
Inline PostgreSQL key constraint information schema relations
adamziel Jun 19, 2026
27ca981
Inline PostgreSQL check constraint information schema relations
adamziel Jun 19, 2026
dab5cc9
Inline PostgreSQL schemata information schema relation
adamziel Jun 19, 2026
e94baf5
Inline PostgreSQL columns catalog information schema relation
adamziel Jun 19, 2026
2f5712f
Route PostgreSQL columns information schema through dispatcher
adamziel Jun 19, 2026
f37222d
Route PostgreSQL statistics information schema through dispatcher
adamziel Jun 19, 2026
e6bceaa
Inline MySQL create table prefix check
adamziel Jun 19, 2026
0beda42
Inline single-use MySQL guard helpers
adamziel Jun 19, 2026
1a8ee7c
Remove no-op PostgreSQL catalog default guard
adamziel Jun 19, 2026
3ca6bce
Simplify PostgreSQL catalog type recovery
adamziel Jun 19, 2026
2a23a26
Inline PostgreSQL show columns helpers
adamziel Jun 19, 2026
03a15c0
Deduplicate show create metadata grouping
adamziel Jun 19, 2026
04959d3
Simplify PostgreSQL catalog introspection paths
adamziel Jun 19, 2026
ed682ab
Inline PostgreSQL catalog comment helpers
adamziel Jun 19, 2026
56de4eb
Deduplicate PostgreSQL catalog domain mapping
adamziel Jun 19, 2026
ef3bec8
Simplify PostgreSQL catalog column keys
adamziel Jun 19, 2026
5e1e0f0
Reuse PostgreSQL catalog relations
adamziel Jun 19, 2026
8b0a4a0
Inline PostgreSQL table metadata catalog SQL
adamziel Jun 19, 2026
a7a8d76
Reuse catalog check constraint relations
adamziel Jun 19, 2026
88b03d0
Use catalog views for PostgreSQL foreign keys
adamziel Jun 19, 2026
a691c35
Reuse unique index metadata grouping
adamziel Jun 19, 2026
3e116d0
Use catalog constraints for PostgreSQL metadata
adamziel Jun 19, 2026
ee94116
Inline information schema projection inference
adamziel Jun 19, 2026
23373be
Reuse information schema star projection parsing
adamziel Jun 19, 2026
6615ed0
Use catalog projections for PostgreSQL metadata
adamziel Jun 19, 2026
8a6f783
Inline PostgreSQL show create helpers
adamziel Jun 19, 2026
d386251
Inline show create metadata renderers
adamziel Jun 19, 2026
d315a1f
Inline show create database execution
adamziel Jun 19, 2026
1b645d6
Use direct catalog projections for metadata views
adamziel Jun 19, 2026
da55a1b
Drop legacy hidden-table filters from catalog views
adamziel Jun 19, 2026
010c598
Remove hidden metadata filter from open tables catalog query
adamziel Jun 19, 2026
a75ccbf
Trim duplicate fallback metadata branches
adamziel Jun 19, 2026
ab909b1
Inline savepoint statement execution
adamziel Jun 19, 2026
573a40e
Inline rename metadata key generation
adamziel Jun 19, 2026
4025850
Inline simple driver helper expressions
adamziel Jun 19, 2026
c77561a
Inline small PostgreSQL expression helpers
adamziel Jun 19, 2026
eea4d76
Inline show index projection columns
adamziel Jun 19, 2026
0799a2e
Use catalog relation for PostgreSQL show tables
adamziel Jun 19, 2026
5b67b23
Inline temporal validation helper wrappers
adamziel Jun 19, 2026
a78ae60
Inline DML value helper wrappers
adamziel Jun 19, 2026
80ee497
Remove dead charset metadata table
adamziel Jun 19, 2026
699c5d3
Route Site Health tables through catalog relation
adamziel Jun 19, 2026
7a30243
Inline Site Health table relation helpers
adamziel Jun 19, 2026
467fb36
Inline Site Health table existence lookup
adamziel Jun 19, 2026
97da272
Inline Site Health table predicates
adamziel Jun 19, 2026
0a08ce8
Inline static show result wrappers
adamziel Jun 19, 2026
7b49bfa
Inline temporal validation error SQL
adamziel Jun 19, 2026
130b263
Inline hidden metadata predicates
adamziel Jun 19, 2026
519f040
Inline catalog column comment stripping
adamziel Jun 19, 2026
89f45a6
Inline catalog column key expression
adamziel Jun 19, 2026
55c519a
Inline information schema star projection
adamziel Jun 19, 2026
4e6667d
Inline information schema literal values
adamziel Jun 19, 2026
c292b97
Inline catalog comment marker stripping
adamziel Jun 19, 2026
4fe2efd
Inline simple MySQL setting normalizers
adamziel Jun 19, 2026
bbcc540
Inline empty information schema relations
adamziel Jun 19, 2026
c54ca93
Inline metadata lookup helpers
adamziel Jun 19, 2026
6a654dc
Inline small PostgreSQL driver predicates
adamziel Jun 19, 2026
038c50d
Replace TABLES materialization with SQL relation
adamziel Jun 19, 2026
893f66c
Remove unused show status auto increment helpers
adamziel Jun 19, 2026
7d22a3d
Compact PostgreSQL catalog schema filters
adamziel Jun 19, 2026
9e7d32b
Compact PostgreSQL schemata filters
adamziel Jun 19, 2026
395b18c
Inline information schema show tables helper
adamziel Jun 19, 2026
16efdcb
Inline direct information schema predicates
adamziel Jun 19, 2026
ab58266
Inline direct information schema source checks
adamziel Jun 19, 2026
e6a3ab7
Tighten PostgreSQL catalog relation filters
adamziel Jun 19, 2026
c38eafe
Deduplicate information schema alias parsing
adamziel Jun 19, 2026
0a078ca
Inline information schema CTE source parsing
adamziel Jun 19, 2026
24c37b4
Inline information schema union tail scan
adamziel Jun 19, 2026
38910a8
Inline information schema replacement guards
adamziel Jun 19, 2026
4c1b6c0
Inline site health table size projection
adamziel Jun 19, 2026
389e1f1
Inline last insert id literal guards
adamziel Jun 19, 2026
c99e16e
Inline postmeta query validators
adamziel Jun 19, 2026
7d349a2
Inline distinct select modifier check
adamziel Jun 19, 2026
4641a8f
Inline term cache priming predicate
adamziel Jun 19, 2026
d416397
Constantize PostgreSQL metadata lists
adamziel Jun 19, 2026
28bd990
Remove side metadata catalog no-ops
adamziel Jun 19, 2026
2d6363a
Inline PostgreSQL column metadata comment sync
adamziel Jun 19, 2026
5df53d1
Inline materialized upsert source count
adamziel Jun 19, 2026
c3d71b1
Inline unsupported DML fallback checks
adamziel Jun 19, 2026
43f0150
Inline PostgreSQL catalog metadata lookups
adamziel Jun 19, 2026
4f85fff
Inline PostgreSQL information schema guards
adamziel Jun 19, 2026
8d71e2d
Inline PostgreSQL alter metadata mutations
adamziel Jun 19, 2026
95dd588
Inline PostgreSQL table alter metadata branches
adamziel Jun 19, 2026
00b5295
Inline PostgreSQL default comment cleanup
adamziel Jun 19, 2026
ae3aab6
Inline PostgreSQL timestamp metadata cleanup
adamziel Jun 19, 2026
ad7cbd4
Inline PostgreSQL metadata-only index parts
adamziel Jun 19, 2026
70d28fa
Inline PostgreSQL column alter metadata branches
adamziel Jun 19, 2026
9db3994
Inline PostgreSQL change column metadata branch
adamziel Jun 19, 2026
b0a5045
Inline PostgreSQL create table select metadata
adamziel Jun 19, 2026
019043a
Inline PostgreSQL create table like metadata
adamziel Jun 19, 2026
1688755
Reuse PostgreSQL catalog index rows for upserts
adamziel Jun 19, 2026
8b8542b
Inline PostgreSQL show create foreign keys
adamziel Jun 19, 2026
42928a2
Collapse PostgreSQL native type metadata map
adamziel Jun 19, 2026
ea41373
Reuse PostgreSQL catalog column metadata SQL
adamziel Jun 19, 2026
e5add8f
Collapse PostgreSQL unsupported statement guards
adamziel Jun 19, 2026
175b769
Collapse PostgreSQL unsupported drop guard
adamziel Jun 19, 2026
4f2d464
Collapse PostgreSQL create table guard
adamziel Jun 19, 2026
095a498
Collapse PostgreSQL date unit maps
adamziel Jun 19, 2026
aa54eb7
Collapse PostgreSQL view translation wrappers
adamziel Jun 19, 2026
106178e
Inline PostgreSQL view column parsing
adamziel Jun 19, 2026
b696563
Inline PostgreSQL view trailing checks
adamziel Jun 19, 2026
243bbd9
Inline PostgreSQL view token scan
adamziel Jun 19, 2026
63b4d1e
Collapse PostgreSQL SHOW operator map
adamziel Jun 19, 2026
5a87fb5
Collapse PostgreSQL SHOW comparison map
adamziel Jun 19, 2026
65dee5a
Collapse PostgreSQL CTAS type map
adamziel Jun 19, 2026
35348bb
Collapse PostgreSQL table administration map
adamziel Jun 19, 2026
4796ce7
Collapse PostgreSQL zero-date extract maps
adamziel Jun 19, 2026
2c416e9
Tighten PostgreSQL information schema metadata guard
adamziel Jun 19, 2026
36941b9
Collapse PostgreSQL date format dispatch
adamziel Jun 19, 2026
c10ec0c
Collapse PostgreSQL week mode dispatch
adamziel Jun 19, 2026
2a8f065
Collapse PostgreSQL SHOW numeric predicate check
adamziel Jun 19, 2026
f53b580
Collapse PostgreSQL information schema write dispatch
adamziel Jun 19, 2026
2e4a164
Collapse PostgreSQL static information schema dispatch
adamziel Jun 19, 2026
4fa2841
Reuse PostgreSQL MySQL week index SQL
adamziel Jun 19, 2026
d4c4774
Inline PostgreSQL date format week helpers
adamziel Jun 19, 2026
e741f27
Inline PostgreSQL weekday index SQL
adamziel Jun 19, 2026
cc86802
Inline PostgreSQL numeric date format SQL
adamziel Jun 19, 2026
9703152
Inline PostgreSQL ASCII function SQL
adamziel Jun 19, 2026
0380a0d
Compose PostgreSQL columns metadata from statistics
adamziel Jun 19, 2026
f44c8c5
Inline PostgreSQL from unixtime SQL
adamziel Jun 19, 2026
3e425c0
Use PostgreSQL catalogs for constraint information schema
adamziel Jun 19, 2026
3afc336
Use PostgreSQL catalogs for index statistics
adamziel Jun 19, 2026
d809f5d
Use catalog metadata for PostgreSQL introspection
adamziel Jun 19, 2026
4c167d4
Remove dead PostgreSQL metadata setup
adamziel Jun 19, 2026
b062dfe
Remove SQLite temporal validation shim
adamziel Jun 19, 2026
22ccb61
Use catalog metadata for DML identity repair
adamziel Jun 19, 2026
3f3bc2c
Reduce PostgreSQL cast metadata paths
adamziel Jun 19, 2026
4b7acdc
Read PostgreSQL DDL metadata from catalogs
adamziel Jun 19, 2026
a4cc3f5
Remove PostgreSQL side metadata guards
adamziel Jun 19, 2026
e7ffd6a
Read PostgreSQL foreign key metadata from catalogs
adamziel Jun 19, 2026
ddbc847
Simplify PostgreSQL metadata cache invalidation
adamziel Jun 19, 2026
c30898e
Simplify PostgreSQL DML metadata reads
adamziel Jun 19, 2026
f252adf
Reuse PostgreSQL catalog index metadata
adamziel Jun 19, 2026
281fd8d
Remove PostgreSQL hidden metadata table state
adamziel Jun 19, 2026
7026783
Remove unused PostgreSQL driver metadata helpers
adamziel Jun 19, 2026
b385fd4
Simplify PostgreSQL catalog and function rewrites
adamziel Jun 19, 2026
1fd618a
Share PostgreSQL SHOW metadata query execution
adamziel Jun 19, 2026
bb5ab96
Remove unused PostgreSQL CTAS metadata helpers
adamziel Jun 19, 2026
8b3dc11
Inline PostgreSQL DATE_FORMAT case branch wrappers
adamziel Jun 19, 2026
09ebe87
Consolidate PostgreSQL upsert and replace helpers
adamziel Jun 19, 2026
95086b3
Collapse PostgreSQL information schema relation specs
adamziel Jun 19, 2026
53e1843
Simplify PostgreSQL DDL metadata cache handling
adamziel Jun 19, 2026
7b1c4f5
Remove PostgreSQL Site Health table rewrite
adamziel Jun 19, 2026
983f8a9
Drop obsolete Site Health rewrite hooks
adamziel Jun 19, 2026
5f0bc65
Compress PostgreSQL MySQL function rewrites
adamziel Jun 19, 2026
d3d57ca
Share PostgreSQL DML rendering helpers
adamziel Jun 19, 2026
1378674
Fold WordPress SELECT rewrites into generic path
adamziel Jun 19, 2026
bc638f9
Remove obsolete PostgreSQL WordPress SELECT probes
adamziel Jun 19, 2026
bfd0217
Remove PostgreSQL private helper docblocks
adamziel Jun 19, 2026
3340358
Share PostgreSQL materialized SELECT DML flow
adamziel Jun 19, 2026
0d3fb17
Compact PostgreSQL information schema projections
adamziel Jun 19, 2026
1df12bd
Shorten PostgreSQL query dispatcher
adamziel Jun 19, 2026
ce3e91a
Remove leftover PostgreSQL helper docblock
adamziel Jun 19, 2026
46c6b3d
Reduce PostgreSQL DML translator duplication
adamziel Jun 19, 2026
9c1eabb
Reduce PostgreSQL information schema helper duplication
adamziel Jun 19, 2026
9a3ce29
Reduce PostgreSQL DDL metadata duplication
adamziel Jun 19, 2026
dcbe028
Compact PostgreSQL MySQL function rendering
adamziel Jun 19, 2026
5bb6f4a
Reduce PostgreSQL expression helper duplication
adamziel Jun 19, 2026
20152ab
Reduce PostgreSQL DDL helper duplication
adamziel Jun 19, 2026
eae9e76
Reduce PostgreSQL SELECT helper duplication
adamziel Jun 19, 2026
23cdfd1
Reduce PostgreSQL SHOW helper duplication
adamziel Jun 19, 2026
8b15be3
Trim PostgreSQL driver separator whitespace
adamziel Jun 19, 2026
31bff32
Stabilize PostgreSQL driver CI
adamziel Jun 19, 2026
1e51d1a
Avoid unsafe PostgreSQL casts for transient cleanup
adamziel Jun 19, 2026
cbbb15a
Translate MySQL quoted aliases for PostgreSQL
adamziel Jun 19, 2026
3572dda
Capture WordPress E2E failure diagnostics
adamziel Jun 20, 2026
cb7d58b
Fix PostgreSQL metadata CTE relation
adamziel Jun 20, 2026
1843211
Quote PostgreSQL SHOW metadata LIKE escapes
adamziel Jun 20, 2026
7839a39
Quote PostgreSQL SHOW column ordering
adamziel Jun 20, 2026
09b58af
Fix PostgreSQL Site Health table stats grouping
adamziel Jun 20, 2026
3d47ac9
Add PostgreSQL E2E request diagnostics
adamziel Jun 20, 2026
49d5315
Cache PostgreSQL column metadata lookups
adamziel Jun 20, 2026
30782cb
Fix PostgreSQL metadata cache regressions
adamziel Jun 20, 2026
56ac3ca
Fix PostgreSQL WordPress metadata emulation
adamziel Jun 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions .github/workflows/cs.yml
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
name: CS

on:
# Run on all relevant pushes (except to main) and on all relevant pull requests.
# Run on all relevant pushes and pull requests.
push:
paths:
- '**.php'
- '.github/workflows/**'
- 'bin/verify-workflow-ci-gates.js'
- 'composer.json'
- 'composer.lock'
- '.phpcs.xml.dist'
- 'phpcs.xml.dist'
- '.github/workflows/cs.yml'
pull_request:
paths:
- '**.php'
- '.github/workflows/**'
- 'bin/verify-workflow-ci-gates.js'
- 'composer.json'
- 'composer.lock'
- '.phpcs.xml.dist'
- 'phpcs.xml.dist'
- '.github/workflows/cs.yml'
# Allow manually triggering the workflow.
workflow_dispatch:

Expand Down Expand Up @@ -55,6 +57,11 @@ jobs:
- name: Validate Composer installation
run: composer validate --no-check-all

- name: Verify workflow CI gates
env:
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
run: composer run verify-workflow-ci-gates

# Install dependencies and handle caching in one go.
# @link https://github.com/marketplace/actions/install-composer-dependencies
- name: Install Composer dependencies
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/end-to-end-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ on:
push:
branches:
- main
- trunk
pull_request:

# Disable permissions for all available scopes by default.
Expand Down Expand Up @@ -34,8 +35,12 @@ jobs:
run: npx playwright install --with-deps

- name: Run end-to-end tests
env:
WP_TEST_DB_BACKEND: sqlite
run: composer run test-e2e

- name: Stop Docker containers
if: always()
env:
WP_TEST_DB_BACKEND: sqlite
run: composer run wp-test-clean
5 changes: 4 additions & 1 deletion .github/workflows/lexer-benchmark.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ jobs:
timeout-minutes: 15
permissions:
contents: read # Required to clone the repo.
pull-requests: write # Required to post/update the result comment.
issues: write # Required to post/update the result comment.
pull-requests: write # Required to inspect pull request metadata.

steps:
- name: Checkout repository
Expand Down Expand Up @@ -84,8 +85,10 @@ jobs:
echo '```'
} > "$RUNNER_TEMP/comment.md"
echo "COMMENT_FILE=$RUNNER_TEMP/comment.md" >> "$GITHUB_ENV"
cat "$RUNNER_TEMP/comment.md" >> "$GITHUB_STEP_SUMMARY"
- name: Post or update the PR comment
if: ${{ github.event.pull_request.head.repo.full_name == github.repository }}
uses: actions/github-script@v7
with:
script: |
Expand Down
50 changes: 29 additions & 21 deletions .github/workflows/phpunit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ name: PHPUnit Tests
on:
push:
branches:
- main
- trunk
paths:
- '.github/workflows/phpunit-tests.yml'
Expand Down Expand Up @@ -30,9 +31,9 @@ permissions: {}
jobs:
test:
# The pure-PHP parser is exercised across the full PHP/SQLite range; the
# native Rust parser extension is exercised on PHP 8.0+ (its minimum). Both
# run the same mysql-on-sqlite suite, just with a different parser engine.
name: PHP ${{ matrix.php }}${{ matrix.extension && ' + ext-wp-mysql-parser' || '' }} / SQLite ${{ matrix.sqlite }}
# native Rust parser extension is exercised on PHP 8.0+ (its minimum).
# PostgreSQL-specific tests run in one bounded adapter lane.
name: PHP ${{ matrix.php }}${{ matrix.extension && ' + ext-wp-mysql-parser' || '' }} / SQLite ${{ matrix.sqlite }} / ${{ matrix.testsuite }}
runs-on: ubuntu-latest
timeout-minutes: 30
permissions:
Expand All @@ -43,22 +44,24 @@ jobs:
include:
# Pure-PHP parser, across the supported PHP versions, each pinned to a
# representative SQLite version spanning the supported range.
- { php: '7.2', sqlite: '3.27.0', extension: false } # minimum with WP_SQLITE_UNSAFE_ENABLE_UNSUPPORTED_VERSIONS
- { php: '7.3', sqlite: '3.31.1', extension: false } # Ubuntu 20.04 LTS
- { php: '7.4', sqlite: '3.34.1', extension: false } # Debian 11 (Bullseye)
- { php: '8.0', sqlite: '3.37.0', extension: false } # minimum supported version (STRICT tables)
- { php: '8.1', sqlite: '3.40.1', extension: false } # Debian 12 (Bookworm)
- { php: '8.2', sqlite: '3.45.1', extension: false } # Ubuntu 24.04 LTS
- { php: '8.3', sqlite: '3.46.1', extension: false } # Debian 13 (Trixie)
- { php: '8.4', sqlite: '3.51.2', extension: false } # First 2026 release
- { php: '8.5', sqlite: 'latest', extension: false }
- { php: '7.2', sqlite: '3.27.0', extension: false, testsuite: default } # minimum with WP_SQLITE_UNSAFE_ENABLE_UNSUPPORTED_VERSIONS
- { php: '7.3', sqlite: '3.31.1', extension: false, testsuite: default } # Ubuntu 20.04 LTS
- { php: '7.4', sqlite: '3.34.1', extension: false, testsuite: default } # Debian 11 (Bullseye)
- { php: '8.0', sqlite: '3.37.0', extension: false, testsuite: default } # minimum supported version (STRICT tables)
- { php: '8.1', sqlite: '3.40.1', extension: false, testsuite: default } # Debian 12 (Bookworm)
- { php: '8.2', sqlite: '3.45.1', extension: false, testsuite: default } # Ubuntu 24.04 LTS
- { php: '8.3', sqlite: '3.46.1', extension: false, testsuite: default } # Debian 13 (Trixie)
- { php: '8.4', sqlite: '3.51.2', extension: false, testsuite: default } # First 2026 release
- { php: '8.5', sqlite: 'latest', extension: false, testsuite: default }
# PostgreSQL adapter tests run once in a bounded package lane.
- { php: '8.3', sqlite: '3.46.1', extension: false, testsuite: postgresql }
# Native Rust parser extension (requires PHP 8.0+).
- { php: '8.0', sqlite: '3.37.0', extension: true }
- { php: '8.1', sqlite: '3.40.1', extension: true }
- { php: '8.2', sqlite: '3.45.1', extension: true }
- { php: '8.3', sqlite: '3.46.1', extension: true }
- { php: '8.4', sqlite: '3.51.2', extension: true }
- { php: '8.5', sqlite: 'latest', extension: true }
- { php: '8.0', sqlite: '3.37.0', extension: true, testsuite: default }
- { php: '8.1', sqlite: '3.40.1', extension: true, testsuite: default }
- { php: '8.2', sqlite: '3.45.1', extension: true, testsuite: default }
- { php: '8.3', sqlite: '3.46.1', extension: true, testsuite: default }
- { php: '8.4', sqlite: '3.51.2', extension: true, testsuite: default }
- { php: '8.5', sqlite: 'latest', extension: true, testsuite: default }

steps:
- name: Checkout repository
Expand Down Expand Up @@ -179,10 +182,15 @@ jobs:
if: matrix.extension
env:
WP_SQLITE_REQUIRE_NATIVE_PARSER_EXTENSION: '1'
run: php -d extension="$GITHUB_WORKSPACE/packages/php-ext-wp-mysql-parser/target/release/libwp_mysql_parser.so" ./vendor/bin/phpunit -c ./phpunit.xml.dist
run: php -d extension="$GITHUB_WORKSPACE/packages/php-ext-wp-mysql-parser/target/release/libwp_mysql_parser.so" ./vendor/bin/phpunit -c ./phpunit.xml.dist --testsuite default
working-directory: packages/mysql-on-sqlite

- name: Run PHPUnit suite
if: ${{ ! matrix.extension }}
run: php ./vendor/bin/phpunit -c ./phpunit.xml.dist
if: ${{ ! matrix.extension && matrix.testsuite == 'default' }}
run: php ./vendor/bin/phpunit -c ./phpunit.xml.dist --testsuite default
working-directory: packages/mysql-on-sqlite

- name: Run PostgreSQL PHPUnit suite
if: ${{ matrix.testsuite == 'postgresql' }}
run: php ./vendor/bin/phpunit -c ./phpunit.xml.dist --testsuite postgresql
working-directory: packages/mysql-on-sqlite
37 changes: 35 additions & 2 deletions .github/workflows/wp-tests-end-to-end.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ on:
push:
branches:
- main
- trunk
pull_request:

# Disable permissions for all available scopes by default.
Expand All @@ -12,11 +13,17 @@ permissions: {}

jobs:
test:
name: WordPress End-to-end Tests
name: WordPress End-to-end Tests / ${{ matrix.backend }}
runs-on: ubuntu-latest
timeout-minutes: 20
timeout-minutes: 60
permissions:
contents: read # Required to clone the repo.
strategy:
fail-fast: false
matrix:
backend:
- sqlite
- postgresql

steps:
- name: Checkout repository
Expand All @@ -34,8 +41,34 @@ jobs:
run: npx playwright install --with-deps

- name: Run WordPress end-to-end tests
env:
WP_TEST_DB_BACKEND: ${{ matrix.backend }}
WP_POSTGRESQL_E2E_REQUEST_DIAGNOSTICS: ${{ matrix.backend == 'postgresql' && '1' || '0' }}
run: composer run wp-test-e2e

- name: Dump WordPress Docker logs
if: failure()
env:
WP_TEST_DB_BACKEND: ${{ matrix.backend }}
LOCAL_DB_TYPE: mysql
LOCAL_PHP_MEMCACHED: 'false'
COMPOSE_IGNORE_ORPHANS: 'true'
run: npm --prefix wordpress run env:logs || true

- name: Upload Playwright artifacts
if: failure()
uses: actions/upload-artifact@v4
with:
name: wp-e2e-${{ matrix.backend }}-artifacts
path: |
wordpress/artifacts
wordpress/src/wp-content/debug.log
if-no-files-found: ignore

- name: Stop Docker containers
if: always()
env:
WP_TEST_DB_BACKEND: ${{ matrix.backend }}
LOCAL_DB_TYPE: mysql
LOCAL_PHP_MEMCACHED: 'false'
run: composer run wp-test-clean
5 changes: 5 additions & 0 deletions .github/workflows/wp-tests-phpunit-native-extension-setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ if [ ! -f "$COMPOSE_OVERRIDE" ]; then
exit 1
fi

if ! grep -Fq 'DB_ENGINE: sqlite' "$COMPOSE_OVERRIDE" || ! grep -Fq 'DATABASE_ENGINE: sqlite' "$COMPOSE_OVERRIDE"; then
echo "Stale $COMPOSE_OVERRIDE. Run WP_TEST_DB_BACKEND=sqlite composer run wp-setup before this helper." >&2
exit 1
fi

add_volume_to_service() {
local service="$1"
local volume="$2"
Expand Down
Loading
Loading