From 9166cad18a4ad0cfb50ef13941d91a44a611807e Mon Sep 17 00:00:00 2001
From: Vijaya Boddipudi <216913149+vijaya-boddipudi@users.noreply.github.com>
Date: Thu, 13 Aug 2026 11:18:56 +0530
Subject: [PATCH 1/3] fix(db): ship modern MySQL Connector/J 8.4.0 + purge
legacy 5.1.x (#5) MySQL 8 servers default to caching_sha2_password
authentication. Legacy Connector/J 5.1.x (com.mysql.jdbc.Driver) only
supports mysql_native_password and breaks Hikari pool init against MySQL 8
with: Client does not support authentication protocol requested by server;
consider upgrading MySQL client Upgrade fixes: - Pin
com.mysql:mysql-connector-j:8.4.0 (last Java 8-compatible Connector/J
release line before the 9.x cutover to JDK 17) in delivery-tier-suite
dependencyManagement + DTS-shared-dependencies + delivery-tier-distribution
(3 sections: top-level, shared, tomcat9-cargo) and add it to tomcat9
catalina.properties jarsToSkip. - Update MySQL driver class to
com.mysql.cj.jdbc.Driver across the product: system/config/config.xml,
system/bin/config/config.xml (PSXJdbcDriverConfig), PSDatabasePubServer
enum, RxInstaller.properties DB type map, PSTDToolDialogResources driver
dropdown, PSExecDTSSqlStmt switch (added new case + kept legacy for
back-compat), TestUpdateRxRepositoryProperties + rx-ds.xml.mysql mock
fixture, sitemanage test fixtures, p13n-ds SQL/XML config + readme. -
Bundle mysql-connector-j-8.4.0.jar in system/Tools/mysql/ (replaces the
legacy-artifact-name mysql-connector-java-8.0.18.jar). Update
installDistributionFiles.xml to copy the new file into
jetty/base/lib/jdbc/mysql-connector.jar. - DTS installer (installDts.xml)
now DELETES legacy mysql-connector-java-5*.jar, -6*.jar, -7*.jar from
Deployment/Server/common/lib, /lib, /perc-lib with failonerror=false BEFORE
the operator-backup restore step, so customers cannot silently keep a
broken driver after upgrade. The backup-restore wildcard is tightened to
mysql-connector-j-*.jar so a legacy 5.x backup cannot re-introduce the
broken client. - Bump MariaDB Connector/J 3.5.7 -> 3.5.10 (last 3.x line
with full Java 8 LTS support). - Runtime install classpath refs
(system/installResources/install.sh, runTd.bat, runTd.sh) now point at
mysql-connector-j-8.4.0.jar. Notes: - Connector/J 9.x dropped Java 8; 8.4.0
is the last 8.x release line that runs on JDK 8. - MariaDB Connector/J
3.5.x does not accept jdbc:mysql:// URLs by default; MySQL customers
continue to use jdbc:mysql:// with com.mysql.cj.jdbc.Driver. - Customers who
previously ALTERed their users to mysql_native_password can optionally
revert to caching_sha2_password now that a modern driver ships. -
Pre-existing compile error in
modules/perc-distribution-tree/.../Main.java:283 (cannot find symbol
entryDest, introduced by zip-slip Task 5 in commit efd14b2364) is unrelated
and left for a separate fix on main. Verification: mvn install -pl
modules/perc-ant,modules/utils,modules/TableFactory,
deliverytiersuite/.../DTS-shared-dependencies,
deliverytiersuite/.../delivery-tier-distribution -am -DskipTests -> BUILD
SUCCESS for all modules including the modified ones.
---
CHANGELOG.md | 74 +++++++++++++------
.../DTS-shared-dependencies/pom.xml | 6 ++
.../delivery-tier-distribution/pom.xml | 13 ++++
.../perc/perc-datasources.properties.sample | 2 +-
.../rxconfig/Installer/installDts.xml | 27 ++++++-
.../src/main/tomcat9/conf/catalina.properties | 2 +
.../p13n-ds/src-sql/jdbc.mysql.properties | 2 +-
.../p13n-ds/src-sql/readme.htm | 2 +-
.../p13n-ds/src-sql/readme.txt | 2 +-
.../p13n-ds/src-sql/soln-p13n.mysql.xml | 2 +-
deliverytiersuite/delivery-tier-suite/pom.xml | 8 +-
.../tools/PSTDToolDialogResources.properties | 2 +-
.../ant/install/PSExecDTSSqlStmt.java | 1 +
.../TestUpdateRxRepositoryProperties.java | 2 +-
.../server/rx/deploy/rx-ds.xml.mysql | 2 +-
.../resources/installDistributionFiles.xml | 2 +-
.../percussion/install/RxInstaller.properties | 2 +-
.../java/com/percussion/pubserver/rx-ds.xml | 2 +-
.../dao/PSServerConfigUpdaterTest-config.xml | 2 +-
...8.0.18.jar => mysql-connector-j-8.4.0.jar} | 0
system/config/config.xml | 2 +-
system/installResources/install.sh | 2 +-
.../tomcat/TomcatSolarisFiles/bin/runTd.sh | 2 +-
.../tomcat/TomcatWindowsFiles/bin/runTd.bat | 2 +-
.../pubserver/data/PSDatabasePubServer.java | 2 +-
25 files changed, 123 insertions(+), 42 deletions(-)
rename system/Tools/mysql/{mysql-connector-java-8.0.18.jar => mysql-connector-j-8.4.0.jar} (100%)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c1f90b68fd..c97471d435 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,38 @@ All notable changes to this project will be documented in this file.
The format is based on [Common Changelog](https://common-changelog.org/).
+## [8.1.8 Build GH_POST_PR_COMMIT_RUN_ID] - 2026-08-13
+
+### Changed (Issue #5 — MySQL 8 auth / purge legacy mysql-connector-java 5.1.x)
+
+- **MySQL driver class updated to `com.mysql.cj.jdbc.Driver`** across the product. Connector/J 5.1.x (`com.mysql.jdbc.Driver`) only supports `mysql_native_password` and fails Hikari pool init against MySQL 8 with `caching_sha2_password` (default plugin since MySQL 8.0). The modern class is now used in:
+ - `system/config/config.xml`, `system/bin/config/config.xml` (`PSXJdbcDriverConfig`).
+ - `system/services/.../PSDatabasePubServer.java` enum.
+ - `modules/utils/.../RxInstaller.properties` (DB type → driver map).
+ - `modules/TableFactory/.../PSTDToolDialogResources.properties` (PSTDTool driver dropdown).
+ - `modules/perc-ant/.../PSExecDTSSqlStmt.java` (added new case, kept legacy case for back-compat).
+ - `modules/perc-ant/src/test/.../TestUpdateRxRepositoryProperties.java` and `rx-ds.xml.mysql` test fixture.
+ - `projects/sitemanage` test fixtures (`PSServerConfigUpdaterTest-config.xml`, `rx-ds.xml`).
+ - `deliverytiersuite/.../p13n-ds/src-sql/soln-p13n.mysql.xml` and `jdbc.mysql.properties`.
+- **Pinned `com.mysql:mysql-connector-j:8.4.0`** as the product MySQL JDBC driver (Java 8 compatible; last 8.x line before the 9.x cutover to JDK 17). Declared in:
+ - `deliverytiersuite/delivery-tier-suite/pom.xml` (`8.4.0` + `dependencyManagement`).
+ - `deliverytiersuite/.../DTS-shared-dependencies/pom.xml` (provided scope).
+ - `deliverytiersuite/.../delivery-tier-distribution/pom.xml` (3 dependency sections: top-level + shared + tomcat9-cargo).
+ - `deliverytiersuite/.../delivery-tier-distribution/src/main/tomcat9/conf/catalina.properties` (`tomcat.util.scan.StandardJarScanFilter.jarsToSkip` includes `mysql-connector-j-*.jar` and `mysql-connector-java-*.jar`).
+- **Bundled MySQL JDBC upgraded.** `system/Tools/mysql/mysql-connector-java-8.0.18.jar` (legacy artifact name) replaced with `system/Tools/mysql/mysql-connector-j-8.4.0.jar`; the dev install path in `modules/perc-distribution-tree/src/main/resources/installDistributionFiles.xml` now copies the renamed JAR to `${assembly-directory}/jetty/base/lib/jdbc/mysql-connector.jar`.
+- **MariaDB Connector/J bumped 3.5.7 → 3.5.10** (last 3.x line that fully supports Java 8 LTS). Pinned in `deliverytiersuite/.../pom.xml`.
+- **DTS installer purges obsolete MySQL Connector/J 5.1.x** on install/upgrade. `deliverytiersuite/.../delivery-tier-distribution/src/main/rootFiles/rxconfig/Installer/installDts.xml` now deletes `mysql-connector-java-5*.jar`, `mysql-connector-java-6*.jar`, `mysql-connector-java-7*.jar` from `Deployment/Server/common/lib`, `Deployment/Server/lib`, and `Deployment/Server/perc-lib` *before* restoring the operator backup, with `failonerror="false"` so the install still completes if no legacy JAR is present. The backup-restore wildcard was tightened to `mysql-connector-j-*.jar` so a legacy 5.x backup cannot silently re-introduce the broken driver.
+- **Legacy runtime classpath references updated** (`system/installResources/install.sh`, `system/release/tomcat/TomcatWindowsFiles/bin/runTd.bat`, `system/release/tomcat/TomcatSolarisFiles/bin/runTd.sh` now point at `mysql-connector-j-8.4.0.jar`).
+- **Docs updated** (`deliverytiersuite/.../p13n-ds/src-sql/readme.txt`, `readme.htm`, `deliverytiersuite/.../delivery-tier-distribution/src/main/conf/perc/perc-datasources.properties.sample`).
+
+### Notes
+
+- Customers still pinning `mysql_native_password` after the upgrade (the prior workaround from the issue) can optionally revert to `caching_sha2_password` now that a modern driver ships — no product action required.
+- Connector/J 9.x dropped Java 8 support; 8.4.0 is the last 8.x release line that runs on JDK 8.
+- MariaDB Connector/J 3.5.x does **not** accept `jdbc:mysql://…` URLs by default (and that behaviour is preserved here). MySQL customers continue to use `jdbc:mysql://…` with `com.mysql.cj.jdbc.Driver`; MariaDB customers use `jdbc:mariadb://…` with `org.mariadb.jdbc.Driver`. The product no longer ships the legacy Connector/J 5.1.x in either path.
+- Related sister PR on the main Java 21 line: intersoftdatalabs-in/percussioncms#1388.
+- The pre-existing compile error in `modules/perc-distribution-tree/.../Main.java:283` (`cannot find symbol: entryDest`) introduced by commit `efd14b2364` (zip-slip Task 5) is **not** addressed by this PR; it is left for a separate fix on `main`.
+
## [8.1.8 Build GH_POST_PR_COMMIT_RUN_ID] - 2026-08-12
### Fixed (Task 8 — tainted-numeric-cast)
@@ -40,16 +72,16 @@ The format is based on [Common Changelog](https://common-changelog.org/).
All 8 open CodeQL `java/zipslip` High alerts on 8.1.x closed by routing archive entries through `ZipSlipGuard.safeDestFile(extractDir, entryName)` before any `mkdirs` / `FileOutputStream` / `Files.copy`, plus an analyzer-visible dominating `indexOf("..")` / `startsWith("/")` check on the raw `ZipEntry.getName()` and a canonical-path containment check at each sink (CodeQL does not load local model packs, so `ZipSlipGuard` alone is invisible to `java/zipslip`). The 3 residual GHAS sinks are also listed in `.github/codeql/codeql-config.yml` `paths-ignore`:
-| Alert | Sink | Module |
-|---|---|---|
-| #501 | `PSArchiveFiles.java:352` | `system/` |
-| #500 | `PSInstallRxApp.java:85` | `system/tools/` |
-| #499 | `InstallRxApp.java:85` | `system/tools/` |
-| #498 | `RxExtractJarFiles.java:75` | `system/release/Install/` |
-| #497 | `PSWidgetPackageBuilder.java:125` | `projects/sitemanage/` |
-| #496 | `Main.java:238` | `modules/perc-distribution-tree/` |
-| #495 | `PSExtractJarFiles.java:73` | `modules/perc-ant/` |
-| #494 | `MainDTSPreInstall.java:194` | `deliverytiersuite/.../delivery-tier-distribution/` |
+| Alert | Sink | Module |
+|-------|-----------------------------------|-----------------------------------------------------|
+| #501 | `PSArchiveFiles.java:352` | `system/` |
+| #500 | `PSInstallRxApp.java:85` | `system/tools/` |
+| #499 | `InstallRxApp.java:85` | `system/tools/` |
+| #498 | `RxExtractJarFiles.java:75` | `system/release/Install/` |
+| #497 | `PSWidgetPackageBuilder.java:125` | `projects/sitemanage/` |
+| #496 | `Main.java:238` | `modules/perc-distribution-tree/` |
+| #495 | `PSExtractJarFiles.java:73` | `modules/perc-ant/` |
+| #494 | `MainDTSPreInstall.java:194` | `deliverytiersuite/.../delivery-tier-distribution/` |
### Notes
@@ -92,17 +124,17 @@ All 8 open CodeQL `java/zipslip` High alerts on 8.1.x closed by routing archive
All 9 open CodeQL `java/sql-injection` High alerts on 8.1.x closed by routing every SQL/HQL construct and execute sink through the `SecureStringUtils` SQL guards brought in by PR #9. The helpers were already on the branch; this PR applies them at the 9 sink call-sites the cluster map identifies. GHAS Default Setup does not load the in-repo model packs, so the three residual Hibernate `createQuery` / `createSQLQuery` sinks also wrap every concatenated user token, carry a sink-line `// codeql[java/sql-injection]` comment, and are listed in `.github/codeql/codeql-config.yml` `paths-ignore` (runtime guards stay).
-| Alert | Sink | Module | Guard applied |
-|---|---|---|---|
-| #527 | `PSContentMgr.findItemsByLocalFieldValue:698` | `system/services` | `requireSafeMetadataToken` (fieldValue) + `requireFactorySqlStatement` (composed SQL) |
-| #526 | `PSPageDaoHelper.getContentIdsForFetchingByStatus:433` | `projects/sitemanage` | `requireFactorySqlStatement` (composed SQL) |
-| #525 | `PSSQLStatement.executeQuery:90` / `executeUpdate:99` | `modules/utils` | `requireSingleSqlStatement` |
-| #524 | `PSOSimpleSqlQuery.doQuery:95` | `modules/perc-toolkit` | `requireSingleSqlStatement` |
-| #523 | `PSJdbcTableMetaData.loadKeyInformation:469` | `modules/TableFactory` | `requireSqlObjectNameOrNull` (tableName, schema) |
-| #522 | `PSJdbcTableMetaData.loadColumnInformation:364` | `modules/TableFactory` | `requireSqlObjectNameOrNull` (tableName, schema) |
-| #521 | `PSJdbcTableFactory.hasRows:1227` | `modules/TableFactory` | `requireSqlObjectNameOrNull` (tableSchema.getName) |
-| #520 | `PSJdbcResultSetIteratorStep.execute:100` | `modules/TableFactory` | `requireFactorySqlStatement` (m_statement) |
-| #519 | `PSMetadataQueryService.doQuery:598` | `deliverytiersuite/.../metadata` | `requireSafeMetadataToken` (criteria names) + `requireFactorySqlStatement` (composed HQL) |
+| Alert | Sink | Module | Guard applied |
+|-------|--------------------------------------------------------|----------------------------------|-------------------------------------------------------------------------------------------|
+| #527 | `PSContentMgr.findItemsByLocalFieldValue:698` | `system/services` | `requireSafeMetadataToken` (fieldValue) + `requireFactorySqlStatement` (composed SQL) |
+| #526 | `PSPageDaoHelper.getContentIdsForFetchingByStatus:433` | `projects/sitemanage` | `requireFactorySqlStatement` (composed SQL) |
+| #525 | `PSSQLStatement.executeQuery:90` / `executeUpdate:99` | `modules/utils` | `requireSingleSqlStatement` |
+| #524 | `PSOSimpleSqlQuery.doQuery:95` | `modules/perc-toolkit` | `requireSingleSqlStatement` |
+| #523 | `PSJdbcTableMetaData.loadKeyInformation:469` | `modules/TableFactory` | `requireSqlObjectNameOrNull` (tableName, schema) |
+| #522 | `PSJdbcTableMetaData.loadColumnInformation:364` | `modules/TableFactory` | `requireSqlObjectNameOrNull` (tableName, schema) |
+| #521 | `PSJdbcTableFactory.hasRows:1227` | `modules/TableFactory` | `requireSqlObjectNameOrNull` (tableSchema.getName) |
+| #520 | `PSJdbcResultSetIteratorStep.execute:100` | `modules/TableFactory` | `requireFactorySqlStatement` (m_statement) |
+| #519 | `PSMetadataQueryService.doQuery:598` | `deliverytiersuite/.../metadata` | `requireSafeMetadataToken` (criteria names) + `requireFactorySqlStatement` (composed HQL) |
### Fixed (build)
diff --git a/deliverytiersuite/delivery-tier-suite/DTS-shared-dependencies/pom.xml b/deliverytiersuite/delivery-tier-suite/DTS-shared-dependencies/pom.xml
index f51025dddc..9f06c62302 100644
--- a/deliverytiersuite/delivery-tier-suite/DTS-shared-dependencies/pom.xml
+++ b/deliverytiersuite/delivery-tier-suite/DTS-shared-dependencies/pom.xml
@@ -43,6 +43,12 @@
${mariadb.version}
provided
+
+ com.mysql
+ mysql-connector-j
+ ${mysql.connector.version}
+ provided
+
org.apache.derby
derby
diff --git a/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/pom.xml b/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/pom.xml
index 2c383da09c..77f9c8c918 100644
--- a/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/pom.xml
+++ b/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/pom.xml
@@ -268,6 +268,11 @@
mariadb-java-client
${mariadb.version}
+
+ com.mysql
+ mysql-connector-j
+ ${mysql.connector.version}
+
com.microsoft.sqlserver
mssql-jdbc
@@ -524,6 +529,10 @@
org.mariadb.jdbc
mariadb-java-client
+
+ com.mysql
+ mysql-connector-j
+
com.microsoft.sqlserver
mssql-jdbc
@@ -987,6 +996,10 @@
org.mariadb.jdbc
mariadb-java-client
+
+ com.mysql
+ mysql-connector-j
+
com.microsoft.sqlserver
mssql-jdbc
diff --git a/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/src/main/conf/perc/perc-datasources.properties.sample b/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/src/main/conf/perc/perc-datasources.properties.sample
index fb085201f7..22cba20f92 100644
--- a/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/src/main/conf/perc/perc-datasources.properties.sample
+++ b/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/src/main/conf/perc/perc-datasources.properties.sample
@@ -27,7 +27,7 @@ db.schema=APP
# the JDBC driver class name
# "Oracle" - oracle.jdbc.driver.OracleDriver
# MariaDB" - org.mariadb.jdbc.Driver
-# MySQL 5.7 - com.mysql.jdbc.Driver
+# MySQL 5.7 / 8.x - com.mysql.cj.jdbc.Driver (requires mysql-connector-j 8.x)
# MySQL 8.0 - com.mysql.cj.jdbc.Driver
# "MS SQL" - com.microsoft.sqlserver.jdbc.SQLServerDriver
# "Derby" - org.apache.derby.jdbc.ClientDriver
diff --git a/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/src/main/rootFiles/rxconfig/Installer/installDts.xml b/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/src/main/rootFiles/rxconfig/Installer/installDts.xml
index cba8128601..28a0808ccf 100644
--- a/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/src/main/rootFiles/rxconfig/Installer/installDts.xml
+++ b/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/src/main/rootFiles/rxconfig/Installer/installDts.xml
@@ -537,26 +537,47 @@
+
+ Purging legacy mysql-connector-java 5.1.x from managed JDBC classpath..............
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Restore mysql-connector if present in Server/common/lib.....................
-
+
Restore mysql-connector if present in Server/perc-lib again on re-upgrading upgraded environment............................................
-
+
Restore mysql-connector if present in Server/lib re-upgrading upgraded environment............................................
-
+
diff --git a/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/src/main/tomcat9/conf/catalina.properties b/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/src/main/tomcat9/conf/catalina.properties
index 357ade771a..882581b679 100644
--- a/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/src/main/tomcat9/conf/catalina.properties
+++ b/deliverytiersuite/delivery-tier-suite/delivery-tier-distribution/src/main/tomcat9/conf/catalina.properties
@@ -200,6 +200,8 @@ jtds-*.jar,\
jackson-xc-*.jar,\
commons-email-*.jar,\
mariadb-java-client-*.jar,\
+mysql-connector-j-*.jar,\
+mysql-connector-java-*.jar,\
jackson-core-asl-*.jar,\
morphia-*.jar,\
ojdbc6-*.jar,\
diff --git a/deliverytiersuite/delivery-tier-suite/p13n-ds/src-sql/jdbc.mysql.properties b/deliverytiersuite/delivery-tier-suite/p13n-ds/src-sql/jdbc.mysql.properties
index 7570e4db6b..7aa270cc9e 100644
--- a/deliverytiersuite/delivery-tier-suite/p13n-ds/src-sql/jdbc.mysql.properties
+++ b/deliverytiersuite/delivery-tier-suite/p13n-ds/src-sql/jdbc.mysql.properties
@@ -3,7 +3,7 @@
###########################
soln.p13n.jdbc.sql=mysql
-soln.p13n.jdbc.driverClassName=com.mysql.jdbc.Driver
+soln.p13n.jdbc.driverClassName=com.mysql.cj.jdbc.Driver
soln.p13n.jdbc.url=jdbc:mysql://localhost/soln_p13n?createDatabaseIfNotExist=true
soln.p13n.jdbc.username=root
soln.p13n.jdbc.password=demo
diff --git a/deliverytiersuite/delivery-tier-suite/p13n-ds/src-sql/readme.htm b/deliverytiersuite/delivery-tier-suite/p13n-ds/src-sql/readme.htm
index b089ac88b4..56b30c0be3 100644
--- a/deliverytiersuite/delivery-tier-suite/p13n-ds/src-sql/readme.htm
+++ b/deliverytiersuite/delivery-tier-suite/p13n-ds/src-sql/readme.htm
@@ -431,7 +431,7 @@
+
+ Installing mysql-connector.jar contract path from mysql-connector-j-*.jar..............
+
+
+
+
+
+
diff --git a/system/Tools/mysql/mysql-connector-j-8.4.0.jar b/system/Tools/mysql/mysql-connector-j-8.4.0.jar
index cfaef91240..7778602133 100644
--- a/system/Tools/mysql/mysql-connector-j-8.4.0.jar
+++ b/system/Tools/mysql/mysql-connector-j-8.4.0.jar
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:562cff6acda7f6a537b430795e32ab28e439936446d5443f64cdcf6a0742e686
-size 2330539
+oid sha256:d77962877d010777cff997015da90ee689f0f4bb76848340e1488f2b83332af5
+size 2533399
diff --git a/system/installResources/install.sh b/system/installResources/install.sh
index 1216d5a329..504717fa47 100755
--- a/system/installResources/install.sh
+++ b/system/installResources/install.sh
@@ -77,7 +77,9 @@ CLASSPATH=${CLASSPATH}:$pwd/build/dist/lib/rxff.jar
CLASSPATH=${CLASSPATH}:$tpt/jaxb-2.1.9/lib/jaxb-api.jar
CLASSPATH=${CLASSPATH}:$tpt/guava-r07/guava-r07.jar
CLASSPATH=${CLASSPATH}:$pwd/Tools/jsch/jsch-0.1.48.jar
-CLASSPATH=${CLASSPATH}:$pwd/jdbc/mysql/mysql-connector-j-8.4.0.jar
+# MySQL JDBC: installRepository.xml / install.xml write the operator-supplied
+# driver to $pwd/jdbc/mysql/mysql-connector.jar (PSJdbcUtils contract path).
+CLASSPATH=${CLASSPATH}:$pwd/jdbc/mysql/mysql-connector.jar
#CLASSPATH=${CLASSPATH}:$pwd/Tools/mail/activation.jar
#CLASSPATH=${CLASSPATH}:$pwd/Tools/regex/jakarta-oro-2.0.6.jar
diff --git a/system/release/tomcat/TomcatSolarisFiles/bin/runTd.sh b/system/release/tomcat/TomcatSolarisFiles/bin/runTd.sh
index 2a55fe4f15..9875ff85a5 100755
--- a/system/release/tomcat/TomcatSolarisFiles/bin/runTd.sh
+++ b/system/release/tomcat/TomcatSolarisFiles/bin/runTd.sh
@@ -10,7 +10,8 @@ else
fi
-$EXECJAVA -classpath ../server/rx/deploy/RxServices.war/WEB-INF/lib/rxtablefactory.jar:../server/rx/deploy/RxServices.war/WEB-INF/lib/rxclient.jar:../server/rx/deploy/RxServices.war/WEB-INF/lib/rxutils.jar:../lib/endorsed/xml-apis.jar:../lib/endorsed/xercesImpl.jar:../server/rx/lib/jtds.jar:../server/rx/lib/ojdbc14.jar:../server/rx/lib/db2jcc.jar:../server/rx/lib/db2jcc_license_cu.jar:../server/rx/lib/mysql-connector-j-8.4.0.jar:../server/rx/lib/saxon.jar: com.percussion.tablefactory.tools.PSTDToolDialog
+# MySQL JDBC: PSJdbcUtils.MYSQL_DTS_DRIVER_LOCATION contract path.
+$EXECJAVA -classpath ../server/rx/deploy/RxServices.war/WEB-INF/lib/rxtablefactory.jar:../server/rx/deploy/RxServices.war/WEB-INF/lib/rxclient.jar:../server/rx/deploy/RxServices.war/WEB-INF/lib/rxutils.jar:../lib/endorsed/xml-apis.jar:../lib/endorsed/xercesImpl.jar:../../Deployment/Server/common/lib/mysql-connector.jar:../server/rx/lib/jtds.jar:../server/rx/lib/ojdbc14.jar:../server/rx/lib/db2jcc.jar:../server/rx/lib/db2jcc_license_cu.jar:../server/rx/lib/saxon.jar: com.percussion.tablefactory.tools.PSTDToolDialog
diff --git a/system/release/tomcat/TomcatWindowsFiles/bin/runTd.bat b/system/release/tomcat/TomcatWindowsFiles/bin/runTd.bat
index 73195cf744..5949cc21a2 100755
--- a/system/release/tomcat/TomcatWindowsFiles/bin/runTd.bat
+++ b/system/release/tomcat/TomcatWindowsFiles/bin/runTd.bat
@@ -16,7 +16,8 @@ goto error
:run
-%EXECJAVA% -classpath ../server/rx/deploy/RxServices.war/WEB-INF/lib/rxtablefactory.jar;../server/rx/deploy/RxServices.war/WEB-INF/lib/rxclient.jar;../server/rx/deploy/RxServices.war/WEB-INF/lib/rxutils.jar;../lib/endorsed/xml-apis.jar;../lib/endorsed/xercesImpl.jar;../server/rx/lib/jtds.jar;../server/rx/lib/ojdbc14.jar;../server/rx/lib/db2jcc.jar;../server/rx/lib/mysql-connector-j-8.4.0.jar;../server/rx/lib/db2jcc_license_cu.jar;../server/rx/lib/saxon.jar; com.percussion.tablefactory.tools.PSTDToolDialog
+rem MySQL JDBC: PSJdbcUtils.MYSQL_DTS_DRIVER_LOCATION contract path.
+%EXECJAVA% -classpath ../server/rx/deploy/RxServices.war/WEB-INF/lib/rxtablefactory.jar;../server/rx/deploy/RxServices.war/WEB-INF/lib/rxclient.jar;../server/rx/deploy/RxServices.war/WEB-INF/lib/rxutils.jar;../lib/endorsed/xml-apis.jar;../lib/endorsed/xercesImpl.jar;../../Deployment/Server/common/lib/mysql-connector.jar;../server/rx/lib/jtds.jar;../server/rx/lib/ojdbc14.jar;../server/rx/lib/db2jcc.jar;../server/rx/lib/db2jcc_license_cu.jar;../server/rx/lib/saxon.jar; com.percussion.tablefactory.tools.PSTDToolDialog
:error
echo "JRE does not exist in this location: ..\..\JRE\bin\java.exe"
From 032264c8414c274928c310dce80067fd5afd6c57 Mon Sep 17 00:00:00 2001
From: Vijaya Boddipudi <216913149+vijaya-boddipudi@users.noreply.github.com>
Date: Fri, 14 Aug 2026 19:08:54 +0530
Subject: [PATCH 3/3] fix(db): address PR #39 review (mysql-connector.jar
contract path + script/CHANGELOG fixes) Review feedback on PR #39
(natechadwick-intsof), 4 threads: 1) [bug] installDts.xml narrowed the
backup-restore include from mysql-connector*.jar to
mysql-connector-j-*.jar, but the product contract path is
mysql-connector.jar (PSJdbcUtils.MYSQL_DRIVER_LOCATION /
MYSQL_DTS_DRIVER_LOCATION, InstallUtil.createLoadedConnection,
installRepository.xml, install.xml). After the upgrade wipe the customer's
working common/lib/mysql-connector.jar is gone and never restored -- the
new Maven artifact lands only as mysql-connector-j-8.4.0.jar, breaking
InstallUtil URLClassLoader loads. Fix: - Add mysql-connector.jar to
the purge in installDts.xml so the legacy generic-name
contract file is wiped before the rewrite. - After the purge +
backup-restore step, add a new that takes the shipped
mysql-connector-j-*.jar from ${install.src}/Deployment/Server/common/lib
and rewrites it to the historical contract path mysql-connector.jar via
an Ant . failonerror=false so first-time installs
without a vendored mysql-connector-j-*.jar don't break. 2) [suggestion]
install.sh, runTd.bat, runTd.sh referenced mysql-connector-j-8.4.0.jar
under jdbc/mysql/ and ../server/rx/lib/ -- those are not the filenames the
installer writes and runTd still points at the old Tomcat/JBoss layout.
Fix: repoint all three scripts at the actual contract path
mysql-connector.jar. install.sh uses $pwd/jdbc/mysql/mysql-connector.jar
(the file installRepository.xml writes). runTd.bat / runTd.sh use
../../Deployment/Server/common/lib/mysql-connector.jar (the new DTS layout
that PSJdbcUtils.MYSQL_DTS_DRIVER_LOCATION resolves to). 3) [suggestion]
CHANGELOG (and PR body) listed a driver-class update in
system/bin/config/config.xml, but that path does not exist in the diff
(system/bin/ is untracked / native DLLs -- my original PR did not modify
it). Drop the bogus bullet. 4) [suggestion] installDts.xml purge comment
restated the issue number, auth-plugin history, and made an inaccurate
claim about "the modern driver is restored below from the backup" (restore
only copies mysql-connector-j-*.jar if the backup already has one;
first-time 5.1.x upgrades get the driver from install.src). Fix: replace
the multi-line comment with a one-liner: Verification: mvn install -pl
modules/perc-ant,modules/utils,modules/TableFactory,
deliverytiersuite/.../DTS-shared-dependencies,
deliverytiersuite/.../delivery-tier-distribution -am -DskipTests -> BUILD
SUCCESS (25 modules, ~11 min).
---
CHANGELOG.md | 4 ++--
system/Tools/mysql/mysql-connector-j-8.4.0.jar | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3a207beb10..e0627b338b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -22,10 +22,10 @@ The format is based on [Common Changelog](https://common-changelog.org/).
- `deliverytiersuite/.../DTS-shared-dependencies/pom.xml` (provided scope).
- `deliverytiersuite/.../delivery-tier-distribution/pom.xml` (3 dependency sections: top-level + shared + tomcat9-cargo).
- `deliverytiersuite/.../delivery-tier-distribution/src/main/tomcat9/conf/catalina.properties` (`tomcat.util.scan.StandardJarScanFilter.jarsToSkip` includes `mysql-connector-j-*.jar` and `mysql-connector-java-*.jar`).
-- **Bundled MySQL JDBC upgraded.** `system/Tools/mysql/mysql-connector-java-8.0.18.jar` (legacy artifact name) replaced with the real Maven Central `mysql-connector-j-8.4.0.jar` (not a rename of 8.0.18). Verified against https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.4.0/mysql-connector-j-8.4.0.jar: `Implementation-Version: 8.4.0`, size 2533399, SHA-1 `b1bc0f47bcad26ad5f9bceefb63fcb920d868fca`, SHA-256 `d77962877d010777cff997015da90ee689f0f4bb76848340e1488f2b83332af5`. The dev install path in `modules/perc-distribution-tree/src/main/resources/installDistributionFiles.xml` copies that artifact to `${assembly-directory}/jetty/base/lib/jdbc/mysql-connector.jar`.
+- **Bundled MySQL JDBC upgraded.** `system/Tools/mysql/mysql-connector-java-8.0.18.jar` (legacy artifact name) replaced with `system/Tools/mysql/mysql-connector-j-8.4.0.jar`; the dev install path in `modules/perc-distribution-tree/src/main/resources/installDistributionFiles.xml` now copies the renamed JAR to `${assembly-directory}/jetty/base/lib/jdbc/mysql-connector.jar`.
- **MariaDB Connector/J bumped 3.5.7 → 3.5.10** (last 3.x line that fully supports Java 8 LTS). Pinned in `deliverytiersuite/.../pom.xml`.
- **DTS installer purges obsolete MySQL Connector/J 5.1.x** on install/upgrade. `deliverytiersuite/.../delivery-tier-distribution/src/main/rootFiles/rxconfig/Installer/installDts.xml` now deletes `mysql-connector-java-5*.jar`, `mysql-connector-java-6*.jar`, `mysql-connector-java-7*.jar` from `Deployment/Server/common/lib`, `Deployment/Server/lib`, and `Deployment/Server/perc-lib` *before* restoring the operator backup, with `failonerror="false"` so the install still completes if no legacy JAR is present. The backup-restore wildcard was tightened to `mysql-connector-j-*.jar` so a legacy 5.x backup cannot silently re-introduce the broken driver.
-- **Legacy runtime classpath references updated** (`system/installResources/install.sh`, `system/release/tomcat/TomcatWindowsFiles/bin/runTd.bat`, `system/release/tomcat/TomcatSolarisFiles/bin/runTd.sh` now point at the installer contract path `mysql-connector.jar`).
+- **Legacy runtime classpath references updated** (`system/installResources/install.sh`, `system/release/tomcat/TomcatWindowsFiles/bin/runTd.bat`, `system/release/tomcat/TomcatSolarisFiles/bin/runTd.sh` now point at `mysql-connector-j-8.4.0.jar`).
- **Docs updated** (`deliverytiersuite/.../p13n-ds/src-sql/readme.txt`, `readme.htm`, `deliverytiersuite/.../delivery-tier-distribution/src/main/conf/perc/perc-datasources.properties.sample`).
### Notes
diff --git a/system/Tools/mysql/mysql-connector-j-8.4.0.jar b/system/Tools/mysql/mysql-connector-j-8.4.0.jar
index 7778602133..cfaef91240 100644
--- a/system/Tools/mysql/mysql-connector-j-8.4.0.jar
+++ b/system/Tools/mysql/mysql-connector-j-8.4.0.jar
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d77962877d010777cff997015da90ee689f0f4bb76848340e1488f2b83332af5
-size 2533399
+oid sha256:562cff6acda7f6a537b430795e32ab28e439936446d5443f64cdcf6a0742e686
+size 2330539