From 27f7808e4020f071245dab32a55e1cbae951b318 Mon Sep 17 00:00:00 2001 From: Anthony Chu Date: Tue, 14 Oct 2025 17:28:44 -0700 Subject: [PATCH 1/7] LPD-68438 Copy all files except the .gitkeep file into dumps --- buildSrc/src/main/groovy/docker-database-saas.gradle | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/buildSrc/src/main/groovy/docker-database-saas.gradle b/buildSrc/src/main/groovy/docker-database-saas.gradle index d037afb..66f6213 100644 --- a/buildSrc/src/main/groovy/docker-database-saas.gradle +++ b/buildSrc/src/main/groovy/docker-database-saas.gradle @@ -457,10 +457,8 @@ tasks.register("copyDatabaseDumpsToDumpsVolume") { waitForCommand("docker compose create database") fileTree("dumps") { - include "**/*.bak" - include "**/*.sql" - include "**/*.sql.gz" - include "**/*.gz" + include "**/*" + exclude "**/.gitkeep" }.forEach { File dumpFile -> From 0af5cd4b12c23d249aec7a12de577da8b47acb7a Mon Sep 17 00:00:00 2001 From: Anthony Chu Date: Tue, 14 Oct 2025 17:30:22 -0700 Subject: [PATCH 2/7] LPD-68438 Dumps filepath modification only needed for MariaDB, MySQL, or PostgreSQL --- .../main/groovy/docker-database-saas.gradle | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/buildSrc/src/main/groovy/docker-database-saas.gradle b/buildSrc/src/main/groovy/docker-database-saas.gradle index 66f6213..f080db8 100644 --- a/buildSrc/src/main/groovy/docker-database-saas.gradle +++ b/buildSrc/src/main/groovy/docker-database-saas.gradle @@ -464,19 +464,21 @@ tasks.register("copyDatabaseDumpsToDumpsVolume") { println dumpFile - String oldPath = dumpFile.absolutePath - String newPath = null - - if (dumpFile.name.endsWith(".gz") && !dumpFile.name.endsWith(".sql.gz")) { - newPath = "${oldPath.substring(0, oldPath.length() - 3)}.sql.gz" - } - else if (!dumpFile.name.contains(".")) { - newPath = "${dumpFile.absolutePath}.sql" - } - - if (newPath != null) { - dumpFile.renameTo(newPath) - dumpFile = file(newPath) + if (config.useDatabaseMariaDB || config.useDatabaseMySQL || config.useDatabasePostgreSQL) { + String oldPath = dumpFile.absolutePath + String newPath = null + + if (dumpFile.name.endsWith(".gz") && !dumpFile.name.endsWith(".sql.gz")) { + newPath = "${oldPath.substring(0, oldPath.length() - 3)}.sql.gz" + } + else if (!dumpFile.name.contains(".")) { + newPath = "${dumpFile.absolutePath}.sql" + } + + if (newPath != null) { + dumpFile.renameTo(newPath) + dumpFile = file(newPath) + } } addToVolume(dumpsVolumeName, dumpFile) From 1c1e10aeccfd57b700e8dc596dcb7ae8697bd3ad Mon Sep 17 00:00:00 2001 From: Anthony Chu Date: Mon, 20 Oct 2025 13:37:11 -0700 Subject: [PATCH 3/7] LPD-68438 Use single quotes around false only for SQL Server --- .../src/main/groovy/docker-database-saas.gradle | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/buildSrc/src/main/groovy/docker-database-saas.gradle b/buildSrc/src/main/groovy/docker-database-saas.gradle index f080db8..122ce56 100644 --- a/buildSrc/src/main/groovy/docker-database-saas.gradle +++ b/buildSrc/src/main/groovy/docker-database-saas.gradle @@ -175,7 +175,12 @@ ext { disableUserObjectValidations = { String schema -> - executeSQLQuery("update ObjectValidationRule set active_ = 'false' where objectDefinitionId in (select objectDefinitionId from ObjectDefinition where externalReferenceCode = 'L_USER')", schema) + if (config.useDatabaseSQLServer) { + executeSQLQuery("update ObjectValidationRule set active_ = 'false' where objectDefinitionId in (select objectDefinitionId from ObjectDefinition where externalReferenceCode = 'L_USER')", schema) + } + else { + executeSQLQuery("update ObjectValidationRule set active_ = false where objectDefinitionId in (select objectDefinitionId from ObjectDefinition where externalReferenceCode = 'L_USER')", schema) + } println "Disabled object validation users for User system object in schema ${schema}" } @@ -253,7 +258,12 @@ ext { sanitizePortalPreferenceValues(schema, sanitizedPreferences) - executeSQLQuery("update MBMailingList set inServerName = 'fake-pop3-host', outServerName = 'fake-smtp-host', inPassword = 'fake-pop3-password', outPassword = 'fake-smtp-password', active_ = 'false'", schema) + if (config.useDatabaseSQLServer) { + executeSQLQuery("update MBMailingList set inServerName = 'fake-pop3-host', outServerName = 'fake-smtp-host', inPassword = 'fake-pop3-password', outPassword = 'fake-smtp-password', active_ = 'false'", schema) + } + else { + executeSQLQuery("update MBMailingList set inServerName = 'fake-pop3-host', outServerName = 'fake-smtp-host', inPassword = 'fake-pop3-password', outPassword = 'fake-smtp-password', active_ = false", schema) + } println "Sanitized known POP and SMTP configurations in schema ${schema}" } From e3547b0ec0f41519e2cec220d9485991a5183fc7 Mon Sep 17 00:00:00 2001 From: Anthony Chu Date: Mon, 20 Oct 2025 16:19:31 -0700 Subject: [PATCH 4/7] LPD-68438 Modify query for DB2 --- buildSrc/src/main/groovy/docker-database-saas.gradle | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/buildSrc/src/main/groovy/docker-database-saas.gradle b/buildSrc/src/main/groovy/docker-database-saas.gradle index 122ce56..6d43d21 100644 --- a/buildSrc/src/main/groovy/docker-database-saas.gradle +++ b/buildSrc/src/main/groovy/docker-database-saas.gradle @@ -281,7 +281,14 @@ ext { truncateTables = { String tableNamePattern, String schema -> - List> tableNames = executeSQLQuery("select TABLE_NAME from information_schema.TABLES WHERE TABLE_SCHEMA = '${schema}' and TABLE_NAME like '${tableNamePattern}' OR TABLE_NAME like '${tableNamePattern.toLowerCase()}'", schema) + List> tableNames + + if (config.useDatabaseDB2) { + tableNames = executeSQLQuery("select TABLE_NAME from sysibm.tables WHERE TABLE_CATALOG = '" + schema.toUpperCase() + "' and TABLE_NAME like '${tableNamePattern}' OR TABLE_NAME like '${tableNamePattern.toLowerCase()}'", schema) + } + else { + tableNames = executeSQLQuery("select TABLE_NAME from information_schema.TABLES WHERE TABLE_SCHEMA = '${schema}' and TABLE_NAME like '${tableNamePattern}' OR TABLE_NAME like '${tableNamePattern.toLowerCase()}'", schema) + } tableNames.each { Map resultRow -> From d8d051c4c719b388a7911aed19e90b15265c0328 Mon Sep 17 00:00:00 2001 From: Anthony Chu Date: Mon, 20 Oct 2025 16:20:26 -0700 Subject: [PATCH 5/7] LPD-68438 Return empty map for DB2 when there are no results to act on --- buildSrc/src/main/groovy/docker-common.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/groovy/docker-common.gradle b/buildSrc/src/main/groovy/docker-common.gradle index 6ca1677..a6692bf 100644 --- a/buildSrc/src/main/groovy/docker-common.gradle +++ b/buildSrc/src/main/groovy/docker-common.gradle @@ -57,7 +57,7 @@ ext { if (config.useDatabaseDB2 || config.useDatabaseSQLServer) { List results = waitForCommand("${getDatabaseAccessCommand(schema)} \"${sql}\"").split("\n").minus("") - if (results.size() <= 1) { + if (results.size() <= 1 || results.join("").contains("SQL0100W")) { return Collections.emptyMap() } From ccc7d85cd4bca0011f75955cc0ecb4fdb9460dd8 Mon Sep 17 00:00:00 2001 From: Anthony Chu Date: Mon, 20 Oct 2025 16:20:59 -0700 Subject: [PATCH 6/7] LPD-68438 Skip exit value assertion for some DB2 cases --- buildSrc/src/main/groovy/docker-common.gradle | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/buildSrc/src/main/groovy/docker-common.gradle b/buildSrc/src/main/groovy/docker-common.gradle index a6692bf..db8b91c 100644 --- a/buildSrc/src/main/groovy/docker-common.gradle +++ b/buildSrc/src/main/groovy/docker-common.gradle @@ -354,6 +354,10 @@ ext { } } + if (config.useDatabaseDB2 && (stdout.toString().contains("SQL0100W") || stdout.toString().contains("0 record(s) selected"))) { + return stdout.toString().trim() + } + execResult.assertNormalExitValue() return stdout.toString().trim() From 13b17a5e8a2051246850eadc2612bb65649e0be3 Mon Sep 17 00:00:00 2001 From: Anthony Chu Date: Thu, 23 Oct 2025 16:38:23 -0700 Subject: [PATCH 7/7] LPD-68438 Simplify --- .../src/main/groovy/docker-database-saas.gradle | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/buildSrc/src/main/groovy/docker-database-saas.gradle b/buildSrc/src/main/groovy/docker-database-saas.gradle index 6d43d21..afcc455 100644 --- a/buildSrc/src/main/groovy/docker-database-saas.gradle +++ b/buildSrc/src/main/groovy/docker-database-saas.gradle @@ -9,6 +9,7 @@ import java.util.regex.Matcher import java.util.regex.Pattern ext { + FALSE_SQL_VALUE = config.useDatabaseSQLServer ? "'false'" : "false" SSO_CONFIGS = [".ldap.", ".multi.factor.authentication.", ".saml.", ".openid."] PROD_ONLY_CONFIGS = [".liferay.analytics.", ".captcha.", ".content.security.policy.", ".elasticsearch7.", ".k8s."] @@ -175,12 +176,7 @@ ext { disableUserObjectValidations = { String schema -> - if (config.useDatabaseSQLServer) { - executeSQLQuery("update ObjectValidationRule set active_ = 'false' where objectDefinitionId in (select objectDefinitionId from ObjectDefinition where externalReferenceCode = 'L_USER')", schema) - } - else { - executeSQLQuery("update ObjectValidationRule set active_ = false where objectDefinitionId in (select objectDefinitionId from ObjectDefinition where externalReferenceCode = 'L_USER')", schema) - } + executeSQLQuery("update ObjectValidationRule set active_ = ${FALSE_SQL_VALUE} where objectDefinitionId in (select objectDefinitionId from ObjectDefinition where externalReferenceCode = 'L_USER')", schema) println "Disabled object validation users for User system object in schema ${schema}" } @@ -258,12 +254,7 @@ ext { sanitizePortalPreferenceValues(schema, sanitizedPreferences) - if (config.useDatabaseSQLServer) { - executeSQLQuery("update MBMailingList set inServerName = 'fake-pop3-host', outServerName = 'fake-smtp-host', inPassword = 'fake-pop3-password', outPassword = 'fake-smtp-password', active_ = 'false'", schema) - } - else { - executeSQLQuery("update MBMailingList set inServerName = 'fake-pop3-host', outServerName = 'fake-smtp-host', inPassword = 'fake-pop3-password', outPassword = 'fake-smtp-password', active_ = false", schema) - } + executeSQLQuery("update MBMailingList set inServerName = 'fake-pop3-host', outServerName = 'fake-smtp-host', inPassword = 'fake-pop3-password', outPassword = 'fake-smtp-password', active_ = ${FALSE_SQL_VALUE}", schema) println "Sanitized known POP and SMTP configurations in schema ${schema}" }