Skip to content

feat(1500): PostgreSQL external CMS repository foundation - #1505

Merged
natechadwick-intsof merged 15 commits into
developmentfrom
1500-postgres-foundation
Jul 26, 2026
Merged

feat(1500): PostgreSQL external CMS repository foundation#1505
natechadwick-intsof merged 15 commits into
developmentfrom
1500-postgres-foundation

Conversation

@natechadwick-intsof

Copy link
Copy Markdown
Collaborator

Summary

Foundation for #1500 — first-class PostgreSQL as an external CMS repository backend (does not replace default embedded H2 from #548).

Locked labels

Surface Value
DB_BACKEND POSTGRES
db.type postgresql (alias postgres)
Driver postgresql / org.postgresql.Driver
Coordinates org.postgresql:postgresql:42.7.7
Dialect org.hibernate.dialect.PostgreSQLDialect
Default port / schema 5432 / public
DB_SERVER form //host:port/database

Changes

  • utils: PSJdbcUtils constants, URL map, backend mapping, external-driver set; PSSqlHelper.isPostgres; unit tests
  • TableFactory: DataTypeMap for="POSTGRES" (BOOLEAN/TEXT/BYTEA); map unit test
  • Installer: DbInstallConfigResolver accepts POSTGRES/postgresql; structured + dbprops paths; sample rxrepository.postgresql.properties
  • Packaging: stage + copy postgresql-*.jar; exact upgrade delete includes for postgresql-42.7.7.jar (+ missing h2-2.3.232.jar delete align with Apache Derby Migration #548)
  • Runtime config: config.xml driver config; Hibernate dialect entries in server-beans copies
  • Docs: docs/ai-generated/tasks/1500-postgresql/README.md

Out of this PR

  • Live schema create / CMS smoke against a real Postgres instance
  • Full sys_DatabaseFunctionDefs postgres rows
  • Product SQL branches that still assume MySQL/MSSQL/Oracle only
  • First-class DTS external-Postgres install (DTS hints only for now)

Test plan

Standalone clean installs (repo-root mvn-env from module dirs):

cd modules/utils && ../../mvn-env.sh clean install
cd modules/TableFactory && ../../mvn-env.sh clean install
cd modules/perc-distribution-tree && ../../mvn-env.sh clean install
  • utils — BUILD SUCCESS; PSJdbcUtilsTest 8/8
  • TableFactory — BUILD SUCCESS; PSJdbcPostgresDataTypeMapTest 1/1
  • perc-distribution-tree — BUILD SUCCESS (130 tests); JDBC verify includes postgresql-42.7.7.jar
  • CI / Kilo on PR
  • Follow-on: Testcontainers or manual install smoke on Postgres 14+/16

Closes nothing yet — #1500 stays open until install smoke + residual product SQL parity.

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

Add first-class PostgreSQL support for external CMS repository targeting:
JDBC constants and isPostgres, TableFactory POSTGRES type map, installer
db.type/DB_BACKEND=POSTGRES resolution, sample dbprops, driver packaging
(postgresql-42.7.7), and Hibernate PostgreSQLDialect registration.

Does not change the default embedded H2 engine (#548). Live install smoke
against a Postgres server is deferred to follow-on work.

> Co-Authored by Grok Build using grok-4.5 with agent main.
@kilo-code-bot

kilo-code-bot Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Code Review Summary

Status: 2 Issues Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 1
WARNING 1
Issue Details (click to expand)

CRITICAL

File Line Issue
modules/perc-distribution-tree/src/main/java/com/percussion/preinstall/DbInstallConfigResolver.java 532 Malformed PostgreSQL JDBC URL in applyDtsHintsFromCms: concatenation of "jdbc:postgresql:" + server where server is already //host:port/database produces jdbc:postgresql:////host:port/database (four slashes). PostgreSQL driver rejects this; correct form is jdbc:postgresql://host:port/database. Affects every PostgreSQL install via dbprops mode; also silently overwrites the valid URL that resolveFromStructuredInput already stored for structured mode.

WARNING

File Line Issue
modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/DbInstallConfigResolverTest.java 124 dbpropsPostgresBackendAccepted does not assert perc.db.dts.jdbcUrl, leaving the CRITICAL bug above completely untested in the only code path it affects.
Files Reviewed (22 files)
  • WebUI/src/main/webapp/WEB-INF/config/spring/install-beans.xml – 1 issue (UNCHANGED, reviewed for context only)
  • WebUI/src/main/webapp/WEB-INF/config/spring/local-beans-template.xml
  • WebUI/src/main/webapp/WEB-INF/config/spring/server-beans.xml
  • docs/ai-generated/tasks/1500-postgresql/README.md
  • modules/TableFactory/src/main/resources/com/percussion/tablefactory/PSJdbcDataTypeMaps.xml
  • modules/TableFactory/src/test/java/com/percussion/tablefactory/PSJdbcPostgresDataTypeMapTest.java
  • modules/perc-distribution-tree/pom.xml
  • modules/perc-distribution-tree/src/main/java/com/percussion/preinstall/DbInstallConfigResolver.java – 1 issue (CRITICAL)
  • modules/perc-distribution-tree/src/main/resources/distribution/rxconfig/Installer/install.xml
  • modules/perc-distribution-tree/src/main/resources/distribution/rxconfig/Installer/samples/rxrepository.postgresql.properties
  • modules/perc-distribution-tree/src/main/resources/installDistributionFiles.xml
  • modules/perc-distribution-tree/src/test/java/com/percussion/distribution/jdbc/BundledJdbcDrivers.java
  • modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/DbInstallConfigResolverTest.java – 1 issue (WARNING)
  • modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/ExternalDbSamplePropsPackagingTest.java
  • modules/perc-shared-test-resources/src/test/resources/com/percussion/testing/local-beans.xml
  • modules/perc-shared-test-resources/src/test/resources/com/percussion/testing/test-spring-context.xml
  • modules/utils/src/main/java/com/percussion/util/PSSqlHelper.java
  • modules/utils/src/main/java/com/percussion/utils/jdbc/PSJdbcUtils.java
  • modules/utils/src/test/java/com/percussion/utils/jdbc/PSJdbcUtilsTest.java
  • pom.xml
  • projects/sitemanage/src/test/java/com/percussion/pubserver/server-beans.xml
  • system/config/config.xml

Fix these issues in Kilo Cloud

Previous Review Summaries (7 snapshots, latest commit f900838)

Current summary above is authoritative. Previous snapshots are kept for context only.

Previous review (commit f900838)

Status: 2 Issues Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 1
WARNING 1
Issue Details (click to expand)

CRITICAL

File Line Issue
modules/perc-distribution-tree/src/main/java/com/percussion/preinstall/DbInstallConfigResolver.java 532 Malformed PostgreSQL JDBC URL in applyDtsHintsFromCms: concatenation of "jdbc:postgresql:" + server where server is already //host:port/database produces jdbc:postgresql:////host:port/database (four slashes). PostgreSQL driver rejects this; correct form is jdbc:postgresql://host:port/database. Affects every PostgreSQL install via dbprops mode; also silently overwrites the valid URL that resolveFromStructuredInput already stored for structured mode.

WARNING

File Line Issue
modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/DbInstallConfigResolverTest.java 124 dbpropsPostgresBackendAccepted does not assert perc.db.dts.jdbcUrl, leaving the CRITICAL bug above completely untested in the only code path it affects.
Files Reviewed (22 files)
  • WebUI/src/main/webapp/WEB-INF/config/spring/install-beans.xml – 1 issue (UNCHANGED, reviewed for context only)
  • WebUI/src/main/webapp/WEB-INF/config/spring/local-beans-template.xml
  • WebUI/src/main/webapp/WEB-INF/config/spring/server-beans.xml
  • docs/ai-generated/tasks/1500-postgresql/README.md
  • modules/TableFactory/src/main/resources/com/percussion/tablefactory/PSJdbcDataTypeMaps.xml
  • modules/TableFactory/src/test/java/com/percussion/tablefactory/PSJdbcPostgresDataTypeMapTest.java
  • modules/perc-distribution-tree/pom.xml
  • modules/perc-distribution-tree/src/main/java/com/percussion/preinstall/DbInstallConfigResolver.java – 1 issue (CRITICAL)
  • modules/perc-distribution-tree/src/main/resources/distribution/rxconfig/Installer/install.xml
  • modules/perc-distribution-tree/src/main/resources/distribution/rxconfig/Installer/samples/rxrepository.postgresql.properties
  • modules/perc-distribution-tree/src/main/resources/installDistributionFiles.xml
  • modules/perc-distribution-tree/src/test/java/com/percussion/distribution/jdbc/BundledJdbcDrivers.java
  • modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/DbInstallConfigResolverTest.java – 1 issue (WARNING)
  • modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/ExternalDbSamplePropsPackagingTest.java
  • modules/perc-shared-test-resources/src/test/resources/com/percussion/testing/local-beans.xml
  • modules/perc-shared-test-resources/src/test/resources/com/percussion/testing/test-spring-context.xml
  • modules/utils/src/main/java/com/percussion/util/PSSqlHelper.java
  • modules/utils/src/main/java/com/percussion/utils/jdbc/PSJdbcUtils.java
  • modules/utils/src/test/java/com/percussion/utils/jdbc/PSJdbcUtilsTest.java
  • pom.xml
  • projects/sitemanage/src/test/java/com/percussion/pubserver/server-beans.xml
  • system/config/config.xml

Fix these issues in Kilo Cloud

Previous review (commit 1604e17)

Status: 2 Issues Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 1
WARNING 1
Issue Details (click to expand)

CRITICAL

File Line Issue
modules/perc-distribution-tree/src/main/java/com/percussion/preinstall/DbInstallConfigResolver.java 532 Malformed PostgreSQL JDBC URL in applyDtsHintsFromCms: concatenation of "jdbc:postgresql:" + server where server is already //host:port/database produces jdbc:postgresql:////host:port/database (four slashes). PostgreSQL driver rejects this; correct form is jdbc:postgresql://host:port/database. Affects every PostgreSQL install via dbprops mode; also silently overwrites the valid URL that resolveFromStructuredInput already stored for structured mode.

WARNING

File Line Issue
modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/DbInstallConfigResolverTest.java 124 dbpropsPostgresBackendAccepted does not assert perc.db.dts.jdbcUrl, leaving the CRITICAL bug above completely untested in the only code path it affects.
Files Reviewed (22 files)
  • WebUI/src/main/webapp/WEB-INF/config/spring/install-beans.xml – 1 issue (UNCHANGED, reviewed for context only)
  • WebUI/src/main/webapp/WEB-INF/config/spring/local-beans-template.xml
  • WebUI/src/main/webapp/WEB-INF/config/spring/server-beans.xml
  • docs/ai-generated/tasks/1500-postgresql/README.md
  • modules/TableFactory/src/main/resources/com/percussion/tablefactory/PSJdbcDataTypeMaps.xml
  • modules/TableFactory/src/test/java/com/percussion/tablefactory/PSJdbcPostgresDataTypeMapTest.java
  • modules/perc-distribution-tree/pom.xml
  • modules/perc-distribution-tree/src/main/java/com/percussion/preinstall/DbInstallConfigResolver.java – 1 issue (CRITICAL)
  • modules/perc-distribution-tree/src/main/resources/distribution/rxconfig/Installer/install.xml
  • modules/perc-distribution-tree/src/main/resources/distribution/rxconfig/Installer/samples/rxrepository.postgresql.properties
  • modules/perc-distribution-tree/src/main/resources/installDistributionFiles.xml
  • modules/perc-distribution-tree/src/test/java/com/percussion/distribution/jdbc/BundledJdbcDrivers.java
  • modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/DbInstallConfigResolverTest.java – 1 issue (WARNING)
  • modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/ExternalDbSamplePropsPackagingTest.java
  • modules/perc-shared-test-resources/src/test/resources/com/percussion/testing/local-beans.xml
  • modules/perc-shared-test-resources/src/test/resources/com/percussion/testing/test-spring-context.xml
  • modules/utils/src/main/java/com/percussion/util/PSSqlHelper.java
  • modules/utils/src/main/java/com/percussion/utils/jdbc/PSJdbcUtils.java
  • modules/utils/src/test/java/com/percussion/utils/jdbc/PSJdbcUtilsTest.java
  • pom.xml
  • projects/sitemanage/src/test/java/com/percussion/pubserver/server-beans.xml
  • system/config/config.xml

Fix these issues in Kilo Cloud

Previous review (commit 309ac65)

Status: 2 Issues Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 1
WARNING 1
Issue Details (click to expand)

CRITICAL

File Line Issue
modules/perc-distribution-tree/src/main/java/com/percussion/preinstall/DbInstallConfigResolver.java 532 Malformed PostgreSQL JDBC URL in applyDtsHintsFromCms: concatenation of "jdbc:postgresql:" + server where server is already //host:port/database produces jdbc:postgresql:////host:port/database (four slashes). PostgreSQL driver rejects this; correct form is jdbc:postgresql://host:port/database. Affects every PostgreSQL install via dbprops mode; also silently overwrites the valid URL that resolveFromStructuredInput already stored for structured mode.

WARNING

File Line Issue
modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/DbInstallConfigResolverTest.java 124 dbpropsPostgresBackendAccepted does not assert perc.db.dts.jdbcUrl, leaving the CRITICAL bug above completely untested in the only code path it affects.
Files Reviewed (22 files)
  • WebUI/src/main/webapp/WEB-INF/config/spring/install-beans.xml – 1 issue (UNCHANGED, reviewed for context only)
  • WebUI/src/main/webapp/WEB-INF/config/spring/local-beans-template.xml
  • WebUI/src/main/webapp/WEB-INF/config/spring/server-beans.xml
  • docs/ai-generated/tasks/1500-postgresql/README.md
  • modules/TableFactory/src/main/resources/com/percussion/tablefactory/PSJdbcDataTypeMaps.xml
  • modules/TableFactory/src/test/java/com/percussion/tablefactory/PSJdbcPostgresDataTypeMapTest.java
  • modules/perc-distribution-tree/pom.xml
  • modules/perc-distribution-tree/src/main/java/com/percussion/preinstall/DbInstallConfigResolver.java – 1 issue (CRITICAL)
  • modules/perc-distribution-tree/src/main/resources/distribution/rxconfig/Installer/install.xml
  • modules/perc-distribution-tree/src/main/resources/distribution/rxconfig/Installer/samples/rxrepository.postgresql.properties
  • modules/perc-distribution-tree/src/main/resources/installDistributionFiles.xml
  • modules/perc-distribution-tree/src/test/java/com/percussion/distribution/jdbc/BundledJdbcDrivers.java
  • modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/DbInstallConfigResolverTest.java – 1 issue (WARNING)
  • modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/ExternalDbSamplePropsPackagingTest.java
  • modules/perc-shared-test-resources/src/test/resources/com/percussion/testing/local-beans.xml
  • modules/perc-shared-test-resources/src/test/resources/com/percussion/testing/test-spring-context.xml
  • modules/utils/src/main/java/com/percussion/util/PSSqlHelper.java
  • modules/utils/src/main/java/com/percussion/utils/jdbc/PSJdbcUtils.java
  • modules/utils/src/test/java/com/percussion/utils/jdbc/PSJdbcUtilsTest.java
  • pom.xml
  • projects/sitemanage/src/test/java/com/percussion/pubserver/server-beans.xml
  • system/config/config.xml

Fix these issues in Kilo Cloud

Previous review (commit f4b56a4)

Status: 2 Issues Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 1
WARNING 1
Issue Details (click to expand)

CRITICAL

File Line Issue
modules/perc-distribution-tree/src/main/java/com/percussion/preinstall/DbInstallConfigResolver.java 532 Malformed PostgreSQL JDBC URL in applyDtsHintsFromCms: concatenation of "jdbc:postgresql:" + server where server is already //host:port/database produces jdbc:postgresql:////host:port/database (four slashes). PostgreSQL driver rejects this; correct form is jdbc:postgresql://host:port/database. Affects every PostgreSQL install via dbprops mode; also silently overwrites the valid URL that resolveFromStructuredInput already stored for structured mode.

WARNING

File Line Issue
modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/DbInstallConfigResolverTest.java 124 dbpropsPostgresBackendAccepted does not assert perc.db.dts.jdbcUrl, leaving the CRITICAL bug above completely untested in the only code path it affects.
Files Reviewed (22 files)
  • WebUI/src/main/webapp/WEB-INF/config/spring/install-beans.xml – 1 issue (UNCHANGED, reviewed for context only)
  • WebUI/src/main/webapp/WEB-INF/config/spring/local-beans-template.xml
  • WebUI/src/main/webapp/WEB-INF/config/spring/server-beans.xml
  • docs/ai-generated/tasks/1500-postgresql/README.md
  • modules/TableFactory/src/main/resources/com/percussion/tablefactory/PSJdbcDataTypeMaps.xml
  • modules/TableFactory/src/test/java/com/percussion/tablefactory/PSJdbcPostgresDataTypeMapTest.java
  • modules/perc-distribution-tree/pom.xml
  • modules/perc-distribution-tree/src/main/java/com/percussion/preinstall/DbInstallConfigResolver.java – 1 issue (CRITICAL)
  • modules/perc-distribution-tree/src/main/resources/distribution/rxconfig/Installer/install.xml
  • modules/perc-distribution-tree/src/main/resources/distribution/rxconfig/Installer/samples/rxrepository.postgresql.properties
  • modules/perc-distribution-tree/src/main/resources/installDistributionFiles.xml
  • modules/perc-distribution-tree/src/test/java/com/percussion/distribution/jdbc/BundledJdbcDrivers.java
  • modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/DbInstallConfigResolverTest.java – 1 issue (WARNING)
  • modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/ExternalDbSamplePropsPackagingTest.java
  • modules/perc-shared-test-resources/src/test/resources/com/percussion/testing/local-beans.xml
  • modules/perc-shared-test-resources/src/test/resources/com/percussion/testing/test-spring-context.xml
  • modules/utils/src/main/java/com/percussion/util/PSSqlHelper.java
  • modules/utils/src/main/java/com/percussion/utils/jdbc/PSJdbcUtils.java
  • modules/utils/src/test/java/com/percussion/utils/jdbc/PSJdbcUtilsTest.java
  • pom.xml
  • projects/sitemanage/src/test/java/com/percussion/pubserver/server-beans.xml
  • system/config/config.xml

Fix these issues in Kilo Cloud

Previous review (commit d576bb7)

Status: 2 Issues Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 1
WARNING 1
Issue Details (click to expand)

CRITICAL

File Line Issue
modules/perc-distribution-tree/src/main/java/com/percussion/preinstall/DbInstallConfigResolver.java 532 Malformed PostgreSQL JDBC URL in applyDtsHintsFromCms: concatenation of "jdbc:postgresql:" + server where server is already //host:port/database produces jdbc:postgresql:////host:port/database (four slashes). PostgreSQL driver rejects this; correct form is jdbc:postgresql://host:port/database. Affects every PostgreSQL install via dbprops mode; also silently overwrites the valid URL that resolveFromStructuredInput already stored for structured mode.

WARNING

File Line Issue
modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/DbInstallConfigResolverTest.java 124 dbpropsPostgresBackendAccepted does not assert perc.db.dts.jdbcUrl, leaving the CRITICAL bug above completely untested in the only code path it affects.
Files Reviewed (22 files)
  • WebUI/src/main/webapp/WEB-INF/config/spring/install-beans.xml – 1 issue (UNCHANGED, reviewed for context only)
  • WebUI/src/main/webapp/WEB-INF/config/spring/local-beans-template.xml
  • WebUI/src/main/webapp/WEB-INF/config/spring/server-beans.xml
  • docs/ai-generated/tasks/1500-postgresql/README.md
  • modules/TableFactory/src/main/resources/com/percussion/tablefactory/PSJdbcDataTypeMaps.xml
  • modules/TableFactory/src/test/java/com/percussion/tablefactory/PSJdbcPostgresDataTypeMapTest.java
  • modules/perc-distribution-tree/pom.xml
  • modules/perc-distribution-tree/src/main/java/com/percussion/preinstall/DbInstallConfigResolver.java – 1 issue (CRITICAL)
  • modules/perc-distribution-tree/src/main/resources/distribution/rxconfig/Installer/install.xml
  • modules/perc-distribution-tree/src/main/resources/distribution/rxconfig/Installer/samples/rxrepository.postgresql.properties
  • modules/perc-distribution-tree/src/main/resources/installDistributionFiles.xml
  • modules/perc-distribution-tree/src/test/java/com/percussion/distribution/jdbc/BundledJdbcDrivers.java
  • modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/DbInstallConfigResolverTest.java – 1 issue (WARNING)
  • modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/ExternalDbSamplePropsPackagingTest.java
  • modules/perc-shared-test-resources/src/test/resources/com/percussion/testing/local-beans.xml
  • modules/perc-shared-test-resources/src/test/resources/com/percussion/testing/test-spring-context.xml
  • modules/utils/src/main/java/com/percussion/util/PSSqlHelper.java
  • modules/utils/src/main/java/com/percussion/utils/jdbc/PSJdbcUtils.java
  • modules/utils/src/test/java/com/percussion/utils/jdbc/PSJdbcUtilsTest.java
  • pom.xml
  • projects/sitemanage/src/test/java/com/percussion/pubserver/server-beans.xml
  • system/config/config.xml

Fix these issues in Kilo Cloud

Previous review (commit bf2b488)

Status: 2 Issues Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 1
WARNING 1
Issue Details (click to expand)

CRITICAL

File Line Issue
modules/perc-distribution-tree/src/main/java/com/percussion/preinstall/DbInstallConfigResolver.java 532 Malformed PostgreSQL JDBC URL in applyDtsHintsFromCms: concatenation of "jdbc:postgresql:" + server where server is already //host:port/database produces jdbc:postgresql:////host:port/database (four slashes). PostgreSQL driver rejects this; correct form is jdbc:postgresql://host:port/database. Affects every PostgreSQL install via dbprops mode; also silently overwrites the valid URL that resolveFromStructuredInput already stored for structured mode.

WARNING

File Line Issue
modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/DbInstallConfigResolverTest.java 124 dbpropsPostgresBackendAccepted does not assert perc.db.dts.jdbcUrl, leaving the CRITICAL bug above completely untested in the only code path it affects.
Files Reviewed (22 files)
  • WebUI/src/main/webapp/WEB-INF/config/spring/install-beans.xml – 1 issue (UNCHANGED, reviewed for context only)
  • WebUI/src/main/webapp/WEB-INF/config/spring/local-beans-template.xml
  • WebUI/src/main/webapp/WEB-INF/config/spring/server-beans.xml
  • docs/ai-generated/tasks/1500-postgresql/README.md
  • modules/TableFactory/src/main/resources/com/percussion/tablefactory/PSJdbcDataTypeMaps.xml
  • modules/TableFactory/src/test/java/com/percussion/tablefactory/PSJdbcPostgresDataTypeMapTest.java
  • modules/perc-distribution-tree/pom.xml
  • modules/perc-distribution-tree/src/main/java/com/percussion/preinstall/DbInstallConfigResolver.java – 1 issue (CRITICAL)
  • modules/perc-distribution-tree/src/main/resources/distribution/rxconfig/Installer/install.xml
  • modules/perc-distribution-tree/src/main/resources/distribution/rxconfig/Installer/samples/rxrepository.postgresql.properties
  • modules/perc-distribution-tree/src/main/resources/installDistributionFiles.xml
  • modules/perc-distribution-tree/src/test/java/com/percussion/distribution/jdbc/BundledJdbcDrivers.java
  • modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/DbInstallConfigResolverTest.java – 1 issue (WARNING)
  • modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/ExternalDbSamplePropsPackagingTest.java
  • modules/perc-shared-test-resources/src/test/resources/com/percussion/testing/local-beans.xml
  • modules/perc-shared-test-resources/src/test/resources/com/percussion/testing/test-spring-context.xml
  • modules/utils/src/main/java/com/percussion/util/PSSqlHelper.java
  • modules/utils/src/main/java/com/percussion/utils/jdbc/PSJdbcUtils.java
  • modules/utils/src/test/java/com/percussion/utils/jdbc/PSJdbcUtilsTest.java
  • pom.xml
  • projects/sitemanage/src/test/java/com/percussion/pubserver/server-beans.xml
  • system/config/config.xml

Fix these issues in Kilo Cloud

Previous review (commit d5de975)

Status: 2 Issues Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 1
WARNING 1
Issue Details (click to expand)

CRITICAL

File Line Issue
modules/perc-distribution-tree/src/main/java/com/percussion/preinstall/DbInstallConfigResolver.java 532 Malformed PostgreSQL JDBC URL in applyDtsHintsFromCms: concatenation of "jdbc:postgresql:" + server where server is already //host:port/database produces jdbc:postgresql:////host:port/database (four slashes). PostgreSQL driver rejects this; correct form is jdbc:postgresql://host:port/database. Affects every PostgreSQL install via dbprops mode; also silently overwrites the valid URL that resolveFromStructuredInput already stored for structured mode.

WARNING

File Line Issue
modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/DbInstallConfigResolverTest.java 124 dbpropsPostgresBackendAccepted does not assert perc.db.dts.jdbcUrl, leaving the CRITICAL bug above completely untested in the only code path it affects.
Files Reviewed (22 files)
  • WebUI/src/main/webapp/WEB-INF/config/spring/install-beans.xml – 1 issue (UNCHANGED, reviewed for context only)
  • WebUI/src/main/webapp/WEB-INF/config/spring/local-beans-template.xml
  • WebUI/src/main/webapp/WEB-INF/config/spring/server-beans.xml
  • docs/ai-generated/tasks/1500-postgresql/README.md
  • modules/TableFactory/src/main/resources/com/percussion/tablefactory/PSJdbcDataTypeMaps.xml
  • modules/TableFactory/src/test/java/com/percussion/tablefactory/PSJdbcPostgresDataTypeMapTest.java
  • modules/perc-distribution-tree/pom.xml
  • modules/perc-distribution-tree/src/main/java/com/percussion/preinstall/DbInstallConfigResolver.java – 1 issue (CRITICAL)
  • modules/perc-distribution-tree/src/main/resources/distribution/rxconfig/Installer/install.xml
  • modules/perc-distribution-tree/src/main/resources/distribution/rxconfig/Installer/samples/rxrepository.postgresql.properties
  • modules/perc-distribution-tree/src/main/resources/installDistributionFiles.xml
  • modules/perc-distribution-tree/src/test/java/com/percussion/distribution/jdbc/BundledJdbcDrivers.java
  • modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/DbInstallConfigResolverTest.java – 1 issue (WARNING)
  • modules/perc-distribution-tree/src/test/java/com/percussion/preinstall/ExternalDbSamplePropsPackagingTest.java
  • modules/perc-shared-test-resources/src/test/resources/com/percussion/testing/local-beans.xml
  • modules/perc-shared-test-resources/src/test/resources/com/percussion/testing/test-spring-context.xml
  • modules/utils/src/main/java/com/percussion/util/PSSqlHelper.java
  • modules/utils/src/main/java/com/percussion/utils/jdbc/PSJdbcUtils.java
  • modules/utils/src/test/java/com/percussion/utils/jdbc/PSJdbcUtilsTest.java
  • pom.xml
  • projects/sitemanage/src/test/java/com/percussion/pubserver/server-beans.xml
  • system/config/config.xml

Fix these issues in Kilo Cloud

Additional previous summary content was truncated to keep this comment within platform limits.


Reviewed by step-3.7-flash · Input: 36.9K · Output: 8.5K · Cached: 212.7K

- Add PostgreSQL JDBC driver (42.7.7) to delivery-tier-distribution/pom.xml
- Add PostgreSQL branch to MainDTSPreInstall.java (URL, driver, dialect, schema)
- Add JDBC_POSTGRESQL_DRIVER constant to PSMetadataQueryService.java
- Add PostgreSQL entries to perc-datasources.properties.sample
- Add PostgreSQL comments to polls and forms service property files

> Co-Authored by Kilo using MiniMax-M2
- Add MySQL 8.0 with UTF-8 (utf8mb4) character set and collation
- Add PostgreSQL 16
- Add SQL Server 2022
- Add docker profiles: --profile mysql, --profile postgres, --profile sqlserver, --profile db-all
- Add perc-datasources.postgresql.properties.sample for DTS config

Usage:
  docker compose --profile mysql up -d    # MySQL only
  docker compose --profile postgres up -d  # PostgreSQL only
  docker compose --profile sqlserver up -d # SQL Server only
  docker compose --profile db-all up -d   # All databases

> Co-Authored by Kilo using MiniMax-M2
- Add SILENT_KEY constant to DbInstallConfigResolver
- Add isSilentMode() helper to check for --silent or --no-tty
- Update Main.java to disable interactive prompts in silent mode
- Update MainDTSPreInstall.java to disable interactive prompts in silent mode
- Add help text for silent mode options

Usage:
  java -jar perc-preinstall.jar /opt/Percussion --silent
  java -jar perc-preinstall.jar /opt/Percussion --no-tty

> Co-Authored by Kilo using MiniMax-M2
- Add install.spec.js Playwright test for fresh CMS install
- Supports testing: h2, mysql, postgresql, sqlserver
- Environment variables: TEST_DB_TYPE, TEST_INSTALL_DIR, TEST_CMS_PORT
- Can skip install and test running CMS via TEST_SKIP_INSTALL

Usage:
  TEST_DB_TYPE=postgresql npm test -- tests/install.spec.js

> Co-Authored by Kilo using MiniMax-M2
- Add cms-h2, cms-mysql, cms-postgresql, cms-sqlserver services
- Each service installs CMS fresh and starts Jetty in container
- Use profiles: --profile cms-h2, --profile cms-mysql, etc.
- Separate from existing cms-dts dev setup (bind-mounted local install)
- Update install.spec.js to test running containers

Usage:
  docker compose --profile cms-h2 up -d       # H2 fresh install
  docker compose --profile cms-mysql up -d    # MySQL fresh install
  docker compose --profile cms-postgresql up -d  # PostgreSQL fresh install
  docker compose --profile cms-sqlserver up -d  # SQL Server fresh install
  docker compose --profile cms-all up -d      # All fresh installs

> Co-Authored by Kilo using MiniMax-M2
> Co-Authored by Kilo using MiniMax-M2
Review on #1505 flagged applyDtsHintsFromCms URL construction. The
existing "jdbc:postgresql:" + DB_SERVER("//host:port/db") form already
yields the correct jdbc:postgresql://host:port/db URL (same pattern as
mysql/sqlserver). Add a clarifying comment and assert perc.db.dts.jdbcUrl
in dbpropsPostgresBackendAccepted so regressions fail loudly.

Co-Authored by Grok Build Grok 4.5 using grok-4.5 with agent main.
Resolve conflicts retaining PostgreSQL foundation (#1500):
- DbInstallConfigResolver: keep POSTGRES/postgresql normalize paths
- BundledJdbcDrivers + install.xml: keep postgresql-42.7.7.jar
- pom.xml: keep postgresql.version (h2 stays on development placement)
- system/config.xml: keep postgresql PSXJdbcDriverConfig

Verified: DbInstallConfigResolverTest, InstallXmlDeleteSetTest,
StagingCleanupAntScriptTest, ExternalDbSamplePropsPackagingTest (30/30).

Co-Authored by Grok Build Grok 4.5 using grok-4.5 with agent main.
Replace broken long-lived compose cms-* services (fictional
perc-preinstall.jar paths) with a Layer-1 harness that:

- mounts real perc-distribution-tree / delivery-tier-distribution jars
- silent + no-tty install with structured --db.* args
- starts Jetty (CMS) or Tomcat (DTS)
- probes login/health, records JSON under docker/logs/
- destroys the cell (or --keep for Playwright Layer 2)

Supports product cms,dts and db h2,postgresql,mysql,sqlserver.
Unit tests cover argv building and jar resolution (11/11).

Co-Authored by Grok Build Grok 4.5 using grok-4.5 with agent main.
Resolve exactly perc-distribution-tree.jar and
delivery-tier-distribution.jar (customer assembly artifacts). Never
select *-SNAPSHOT.jar from the plain jar plugin — those lack the
runnable Main-Class and are not what we ship.

Co-Authored by Grok Build Grok 4.5 using grok-4.5 with agent main.
build_install_argv used str(Path) which becomes backslashes on Windows,
failing python-build-scripts on windows-latest. The cell runs in Linux
containers; use Path.as_posix() so java -jar argv stays portable.

Co-Authored by Grok Build Grok 4.5 using grok-4.5 with agent main.
Silent install failed with MissingResourceException key h2 when
RxLogTables/InstallUtil looked up JDBC driver class names via
ResourceBundle. Add h2/postgresql/postgres keys alongside existing
mysql/derby/sqlserver driver mappings; unit test locks the keys.

Co-Authored by Grok Build Grok 4.5 using grok-4.5 with agent main.
PSExecSQLStmt only selected Derby/MySQL/Oracle/MSSQL/DB2 dialects, so
H2 installs fell through to MSSQL str() and failed view creation.
Add sqlH2 and sqlPostgresql Ant attributes, H2→Derby fallback when
sqlH2 is empty, and dialect SQL for community views that use str().

Co-Authored by Grok Build Grok 4.5 using grok-4.5 with agent main.
H2 reserves VALUE; CREATE TABLE ... VALUE VARCHAR failed during silent
install. Append NON_KEYWORDS=VALUE in PSJdbcUtils.getJdbcUrl for h2
and bake it into default install repository properties.

Co-Authored by Grok Build Grok 4.5 using grok-4.5 with agent main.
@natechadwick-intsof
natechadwick-intsof merged commit 6ce593a into development Jul 26, 2026
6 checks passed
@natechadwick-intsof
natechadwick-intsof deleted the 1500-postgres-foundation branch July 26, 2026 06:30
@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

1 participant