Skip to content

fix(1500): CMS matrix smoke green for H2, PostgreSQL, MySQL, SQL Server - #1507

Merged
natechadwick-intsof merged 5 commits into
developmentfrom
1500-matrix-smoke-followup
Jul 26, 2026
Merged

fix(1500): CMS matrix smoke green for H2, PostgreSQL, MySQL, SQL Server#1507
natechadwick-intsof merged 5 commits into
developmentfrom
1500-matrix-smoke-followup

Conversation

@natechadwick-intsof

Copy link
Copy Markdown
Collaborator

Summary

Closes remaining Layer-1 install-matrix gaps for CMS external databases under GitHub #1500 / H2 #548 follow-up:

  • H2 (already green earlier on this branch): relative file: repository path, empty Jetty DS password, Quartz H2 delegate, dead EMS bean removal.
  • PostgreSQL: silent --db.type=postgresql wiring; Quartz BIT/BOOLEAN flags; CHAR_TO_INT dialect; PSTableMetaData identifier folding; PSConfig LONGVARCHAR (not @Lob OID); DAYSFROMDATE (prior).
  • MySQL: matrix SSL off for compose; connectionCollation=utf8mb4_unicode_ci; UNION view CAST COLLATE.
  • SQL Server: matrix SSL/encrypt off for compose; BIT flags via shared table def.
  • Maven: opt-in -Pmatrix-smoke on perc-qa-automation (prior commit on this branch).

Matrix evidence (Layer 1 login probe)

Cell Result
cms-h2 RESULT:OK HTTP 200
cms-postgresql RESULT:OK HTTP 200 (~281s)
cms-mysql RESULT:OK HTTP 200 (~438s)
cms-sqlserver RESULT:OK HTTP 200 (~400s)

Logs under docker/logs/matrix-results-*.json / matrix-cms-*-*.log.

Pre-PR Maven (standalone)

Changed modules exercised with mvn-env.sh (JDK 21):

  • modules/utils — install + MYSQL_CONN_PARAMS test
  • system — install + dialect unit tests (11)
  • modules/TableFactory — BIT map tests
  • WebUI — install (embeds perc-system)
  • modules/perc-distribution-tree — clean install packaging

Full matrix uses the packaged perc-distribution-tree.jar (customer artifact).

Erlang

  • docs/ai-generated/code-reviews/1500-matrix-dialect-erlang.mdapprove
  • Prior empty-password review still on branch history

Out of scope / follow-ups

  • Oracle Layer-1 matrix cell (compose + harness) — tracked separately as backlog issue (installer already accepts --db.type=oracle).
  • Compose SQL Server healthcheck may report unhealthy without sqlcmd -C (smoke still green).

Test plan

  • Unit tests for dialect helpers / maps / function defs / entrypoint SSL
  • python3 -m pytest docker/scripts/test_matrix_install_smoke.py
  • matrix-install-smoke.py --product cms --db postgresql|mysql|sqlserver HTTP 200
  • CI green on this PR

Co-Authored by Grok Build using grok-4.5 with agent Grok.

PSSchedulerBean only mapped derby/mysql/mssql/oracle/db2, so H2 installs
failed webapp start with Unrecognized database driver "h2:file".
Map h2 and postgresql to StdJDBCDelegate, normalize h2:file|mem|tcp
forms, and register h2 subprotocols in PSJdbcUtils.getDriverFromUrl.

Co-Authored by Grok Build Grok 4.5 using grok-4.5 with agent main.
Silent install ran with user.dir under the extract temp tree, so relative
jdbc:h2:file:../../Repository/CMDB wrote schema under /tmp and Jetty
opened an empty install-root DB. Resolve H2 file: fragments against
installRoot/jetty/base via PSJdbcUtils + InstallUtil.

Do not encrypt empty datasource passwords in Jetty perc-ds.properties
(ciphertext decrypt mismatch caused Wrong user name or password).

Remove undefined emsAPIService ref from siteimprove JAX-RS server so
Spring context can finish starting.

Matrix CMS H2 smoke: RESULT:OK HTTP 200.

Co-Authored by Grok Build Grok 4.5 using grok-4.5 with agent main.
Erlang pre-PR gate required behavioral coverage for empty password
saving as pwd= + pwd.encrypted=N (H2 default sa/). Extend
JettyDatasourceConfigurationAdapterTest; re-review approve.

Co-Authored by Grok Build Grok 4.5 using grok-4.5 with agent main.
Silent --db.type=postgresql never rewrote rxrepository (missing Ant
branch) and configure_jetty ran before setupDB, so matrix "postgresql"
cells still installed H2. Add postgresql propertyfile branch, run
setupDB before configure_jetty, map Quartz to PostgreSQLDelegate, add
DAYSFROMDATE for postgresql, publish compose Postgres on host 5433,
harden matrix start_db when DB already running.

perc-qa-automation: -Pmatrix-smoke runs docker/scripts/matrix-install-smoke.py
(documented; opt-in only).

Note: CMS+PostgreSQL login probe still fails server init (Quartz
VARCHAR flags vs boolean binds, relationship config mapping, remaining
function defs / content-type columns). H2 matrix remains green.

Co-Authored by Grok Build Grok 4.5 using grok-4.5 with agent main.
Complete dialect and harness gaps so Layer-1 install matrix login probe
passes on compose external DBs (and keeps H2 green):

- Quartz job-store flag columns use JDBC BIT (BOOLEAN/BIT per backend)
- PostgreSQL CHAR_TO_INT function body; PSConfig LONGVARCHAR not @lob OID
- PSTableMetaData folds identifiers for storesLowerCase/Upper drivers
- Matrix cell disables DB SSL against plain compose DBs
- MySQL connectionCollation + UNION view CAST COLLATE for utf8mb4

Evidence: cms-postgresql/mysql/sqlserver matrix RESULT:OK HTTP 200.
Erlang: docs/ai-generated/code-reviews/1500-matrix-dialect-erlang.md (approve).

Co-Authored by Grok Build using grok-4.5 with agent Grok.
@natechadwick-intsof

Copy link
Copy Markdown
Collaborator Author

Follow-up backlog: Oracle Layer-1 matrix cell tracked as #1508 (installer already accepts --db.type=oracle; compose + harness not yet).

Does not block this PR.

@natechadwick-intsof
natechadwick-intsof enabled auto-merge (squash) July 26, 2026 15:34
@natechadwick-intsof
natechadwick-intsof merged commit 970ed35 into development Jul 26, 2026
6 checks passed
@natechadwick-intsof
natechadwick-intsof deleted the 1500-matrix-smoke-followup branch July 26, 2026 15:35
@natechadwick-intsof natechadwick-intsof linked an issue Jul 26, 2026 that may be closed by this pull request
6 tasks
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.

Backlog: Add PostgreSQL as a supported CMS database backend

2 participants