From 992134bb0358229f052e7740aac124b9be94a5ae Mon Sep 17 00:00:00 2001 From: Samuel Tran Date: Mon, 4 Nov 2019 14:42:52 -0800 Subject: [PATCH 1/2] LPS-103998 Use table name rather than table class --- .../upgrade/DLContentServiceUpgrade.java | 4 +- .../internal/upgrade/DDMServiceUpgrade.java | 10 +-- .../upgrade/JournalServiceUpgrade.java | 15 +--- .../upgrade/test/UpgradeCTModelTest.java | 37 +-------- .../PortalUpgradeProcessRegistryImpl.java | 7 +- .../portal/kernel/upgrade/UpgradeCTModel.java | 83 ++++--------------- 6 files changed, 30 insertions(+), 126 deletions(-) diff --git a/modules/apps/document-library/document-library-content-service/src/main/java/com/liferay/document/library/content/internal/upgrade/DLContentServiceUpgrade.java b/modules/apps/document-library/document-library-content-service/src/main/java/com/liferay/document/library/content/internal/upgrade/DLContentServiceUpgrade.java index 9894ee486b7391..ed8edacba0b28f 100644 --- a/modules/apps/document-library/document-library-content-service/src/main/java/com/liferay/document/library/content/internal/upgrade/DLContentServiceUpgrade.java +++ b/modules/apps/document-library/document-library-content-service/src/main/java/com/liferay/document/library/content/internal/upgrade/DLContentServiceUpgrade.java @@ -15,7 +15,6 @@ package com.liferay.document.library.content.internal.upgrade; import com.liferay.document.library.content.internal.upgrade.v1_0_0.UpgradeClassNames; -import com.liferay.document.library.content.internal.upgrade.v1_2_0.util.DLContentTable; import com.liferay.portal.kernel.upgrade.UpgradeCTModel; import com.liferay.portal.kernel.upgrade.UpgradeMVCCVersion; import com.liferay.portal.upgrade.registry.UpgradeStepRegistrator; @@ -42,8 +41,7 @@ protected String[] getModuleTableNames() { } }); - registry.register( - "1.1.0", "1.2.0", new UpgradeCTModel(DLContentTable.class)); + registry.register("1.1.0", "1.2.0", new UpgradeCTModel("DLContent")); } } \ No newline at end of file diff --git a/modules/apps/dynamic-data-mapping/dynamic-data-mapping-service/src/main/java/com/liferay/dynamic/data/mapping/internal/upgrade/DDMServiceUpgrade.java b/modules/apps/dynamic-data-mapping/dynamic-data-mapping-service/src/main/java/com/liferay/dynamic/data/mapping/internal/upgrade/DDMServiceUpgrade.java index f982954350ea84..45dc9aeed31063 100644 --- a/modules/apps/dynamic-data-mapping/dynamic-data-mapping-service/src/main/java/com/liferay/dynamic/data/mapping/internal/upgrade/DDMServiceUpgrade.java +++ b/modules/apps/dynamic-data-mapping/dynamic-data-mapping-service/src/main/java/com/liferay/dynamic/data/mapping/internal/upgrade/DDMServiceUpgrade.java @@ -277,12 +277,10 @@ protected String[] getModuleTableNames() { "3.2.0", "3.2.1", new UpgradeDDMDataProviderInstance(_jsonFactory)); registry.register( - "3.2.1", "3.3.0", new UpgradeCTModel(DDMStructureTable.class), - new UpgradeCTModel( - com.liferay.dynamic.data.mapping.internal.upgrade.v3_3_0.util. - DDMStructureVersionTable.class), - new UpgradeCTModel(DDMTemplateTable.class), - new UpgradeCTModel(DDMTemplateVersionTable.class)); + "3.2.1", "3.3.0", new UpgradeCTModel("DDMStructure"), + new UpgradeCTModel("DDMStructureVersion"), + new UpgradeCTModel("DDMTemplate"), + new UpgradeCTModel("DDMTemplateVersion")); } @Activate diff --git a/modules/apps/journal/journal-service/src/main/java/com/liferay/journal/internal/upgrade/JournalServiceUpgrade.java b/modules/apps/journal/journal-service/src/main/java/com/liferay/journal/internal/upgrade/JournalServiceUpgrade.java index d18a6d07a7ebe4..d2cb4221bd4824 100644 --- a/modules/apps/journal/journal-service/src/main/java/com/liferay/journal/internal/upgrade/JournalServiceUpgrade.java +++ b/modules/apps/journal/journal-service/src/main/java/com/liferay/journal/internal/upgrade/JournalServiceUpgrade.java @@ -54,8 +54,6 @@ import com.liferay.journal.internal.upgrade.v2_0_0.util.JournalArticleTable; import com.liferay.journal.internal.upgrade.v2_0_0.util.JournalFeedTable; import com.liferay.journal.internal.upgrade.v2_0_0.util.JournalFolderTable; -import com.liferay.journal.internal.upgrade.v3_2_0.util.JournalArticleLocalizationTable; -import com.liferay.journal.internal.upgrade.v3_2_0.util.JournalArticleResourceTable; import com.liferay.journal.model.JournalArticle; import com.liferay.portal.configuration.upgrade.PrefsPropsToConfigurationUpgradeHelper; import com.liferay.portal.kernel.dao.db.DB; @@ -239,15 +237,10 @@ protected String[] getModuleTableNames() { }); registry.register( - "3.1.0", "3.2.0", - new UpgradeCTModel(JournalArticleLocalizationTable.class), - new UpgradeCTModel(JournalArticleResourceTable.class), - new UpgradeCTModel( - com.liferay.journal.internal.upgrade.v3_2_0.util. - JournalArticleTable.class), - new UpgradeCTModel( - com.liferay.journal.internal.upgrade.v3_2_0.util. - JournalFolderTable.class)); + "3.1.0", "3.2.0", new UpgradeCTModel("JournalArticleLocalization"), + new UpgradeCTModel("JournalArticleResource"), + new UpgradeCTModel("JournalArticle"), + new UpgradeCTModel("JournalFolder")); } protected void deleteTempImages() throws Exception { diff --git a/modules/apps/portal/portal-upgrade-test/src/testIntegration/java/com/liferay/portal/upgrade/test/UpgradeCTModelTest.java b/modules/apps/portal/portal-upgrade-test/src/testIntegration/java/com/liferay/portal/upgrade/test/UpgradeCTModelTest.java index c2433bdb2acfc6..90d93a78ddd96e 100644 --- a/modules/apps/portal/portal-upgrade-test/src/testIntegration/java/com/liferay/portal/upgrade/test/UpgradeCTModelTest.java +++ b/modules/apps/portal/portal-upgrade-test/src/testIntegration/java/com/liferay/portal/upgrade/test/UpgradeCTModelTest.java @@ -29,7 +29,6 @@ import java.sql.DatabaseMetaData; import java.sql.PreparedStatement; import java.sql.ResultSet; -import java.sql.Types; import java.util.ArrayList; import java.util.List; @@ -71,13 +70,13 @@ public void setUp() throws Exception { @After public void tearDown() throws Exception { - _db.runSQL(TestTableClass.TABLE_SQL_DROP); + _db.runSQL("drop table UpgradeCTModelTest"); } @Test public void testUpgrade() throws Exception { UpgradeCTModel upgradeCTModel = new UpgradeCTModel( - TestTableClass.class); + "UpgradeCTModelTest"); upgradeCTModel.upgrade(); @@ -108,7 +107,7 @@ public void testUpgrade() throws Exception { try (ResultSet rs2 = databaseMetaData.getPrimaryKeys( dbInspector.getCatalog(), dbInspector.getSchema(), dbInspector.normalizeName( - TestTableClass.TABLE_NAME, databaseMetaData))) { + "UpgradeCTModelTest", databaseMetaData))) { Assert.assertTrue("Missing PK", rs2.next()); @@ -131,36 +130,6 @@ public void testUpgrade() throws Exception { } } - @SuppressWarnings("unused") - public static class TestTableClass { - - public static final Object[][] TABLE_COLUMNS = { - {"mvccVersion", Types.BIGINT}, {"uuid_", Types.VARCHAR}, - {"upgradeCTModelId", Types.BIGINT}, - {"ctCollectionId", Types.BIGINT}, {"companyId", Types.BIGINT}, - {"createDate", Types.TIMESTAMP}, {"modifiedDate", Types.TIMESTAMP}, - {"name", Types.VARCHAR} - }; - - public static final String TABLE_NAME = "UpgradeCTModelTest"; - - public static final String[] TABLE_SQL_ADD_INDEXES = { - "create index IX_TEST on UpgradeCTModelTest " + - "(uuid_[$COLUMN_LENGTH:75$], companyId)" - }; - - public static final String TABLE_SQL_CREATE = StringBundler.concat( - "create table UpgradeCTModelTest (mvccVersion LONG default 0 not ", - "null, uuid_ VARCHAR(75) null, upgradeCTModelId LONG not null, ", - "ctCollectionId LONG not null, companyId LONG, createDate DATE ", - "null, modifiedDate DATE null, name STRING null, primary key ", - "(upgradeCTModelId, ctCollectionId))"); - - public static final String TABLE_SQL_DROP = - "drop table UpgradeCTModelTest"; - - } - private DB _db; } \ No newline at end of file diff --git a/portal-impl/src/com/liferay/portal/upgrade/v7_3_x/PortalUpgradeProcessRegistryImpl.java b/portal-impl/src/com/liferay/portal/upgrade/v7_3_x/PortalUpgradeProcessRegistryImpl.java index f1611e271f4479..f8db69b796b485 100644 --- a/portal-impl/src/com/liferay/portal/upgrade/v7_3_x/PortalUpgradeProcessRegistryImpl.java +++ b/portal-impl/src/com/liferay/portal/upgrade/v7_3_x/PortalUpgradeProcessRegistryImpl.java @@ -18,8 +18,6 @@ import com.liferay.portal.kernel.upgrade.UpgradeProcess; import com.liferay.portal.kernel.version.Version; import com.liferay.portal.upgrade.util.PortalUpgradeProcessRegistry; -import com.liferay.portal.upgrade.v7_3_x.util.LayoutTable; -import com.liferay.portal.upgrade.v7_3_x.util.ResourcePermissionTable; import java.util.TreeMap; @@ -40,13 +38,12 @@ public void registerUpgradeProcesses( upgradeProcesses.put(new Version(6, 0, 2), new UpgradeLayoutSet()); upgradeProcesses.put( - new Version(6, 0, 3), new UpgradeCTModel(LayoutTable.class)); + new Version(6, 0, 3), new UpgradeCTModel("Layout")); upgradeProcesses.put(new Version(6, 0, 4), new UpgradeAssetCategory()); upgradeProcesses.put( - new Version(6, 0, 5), - new UpgradeCTModel(ResourcePermissionTable.class)); + new Version(6, 0, 5), new UpgradeCTModel("ResourcePermission")); upgradeProcesses.put(new Version(7, 0, 0), new UpgradeRatingsStats()); } diff --git a/portal-kernel/src/com/liferay/portal/kernel/upgrade/UpgradeCTModel.java b/portal-kernel/src/com/liferay/portal/kernel/upgrade/UpgradeCTModel.java index 59377c6bf2b71c..c16826a7df2351 100644 --- a/portal-kernel/src/com/liferay/portal/kernel/upgrade/UpgradeCTModel.java +++ b/portal-kernel/src/com/liferay/portal/kernel/upgrade/UpgradeCTModel.java @@ -20,15 +20,13 @@ import java.sql.DatabaseMetaData; import java.sql.ResultSet; -import java.util.Collection; - /** * @author Preston Crary */ public class UpgradeCTModel extends UpgradeProcess { - public UpgradeCTModel(Class tableClass) { - _tableClass = tableClass; + public UpgradeCTModel(String tableName) { + _tableName = tableName; } @Override @@ -38,7 +36,7 @@ protected void doUpgrade() throws Exception { DBInspector dbInspector = new DBInspector(connection); String tableName = dbInspector.normalizeName( - getTableName(_tableClass), databaseMetaData); + _tableName, databaseMetaData); try (ResultSet rs = databaseMetaData.getColumns( dbInspector.getCatalog(), dbInspector.getSchema(), tableName, @@ -53,7 +51,8 @@ protected void doUpgrade() throws Exception { String primaryKeyColumnName = null; try (ResultSet rs = databaseMetaData.getPrimaryKeys( - dbInspector.getCatalog(), dbInspector.getSchema(), tableName)) { + dbInspector.getCatalog(), dbInspector.getSchema(), + tableName)) { if (rs.next()) { primaryKeyColumnName = rs.getString("COLUMN_NAME"); @@ -71,71 +70,21 @@ protected void doUpgrade() throws Exception { "No primary key column found for " + tableName); } - alter( - _tableClass, new AlterTableAddCTCollectionIdColumn(), - new DropPrimaryKeyAlterable(), - new AddPrimaryKeyAlterable(primaryKeyColumnName)); - } - - private final Class _tableClass; + runSQL( + StringBundler.concat( + "alter table ", tableName, + " add ctCollectionId LONG default 0 not null")); - private static class AddPrimaryKeyAlterable - extends BasePrimaryKeyAlterable { + runSQL( + StringBundler.concat( + "alter table ", tableName, " drop primary key")); - @Override - public String getSQL(String tableName) { - return StringBundler.concat( + runSQL( + StringBundler.concat( "alter table ", tableName, " add primary key (", - _primaryKeyColumnName, ", ctCollectionId)"); - } - - private AddPrimaryKeyAlterable(String primaryKeyColumnName) { - _primaryKeyColumnName = primaryKeyColumnName; - } - - private final String _primaryKeyColumnName; - - } - - private abstract static class BasePrimaryKeyAlterable implements Alterable { - - @Override - public boolean shouldAddIndex(Collection columnNames) { - return false; - } - - @Override - public boolean shouldDropIndex(Collection columnNames) { - return false; - } - - } - - private static class DropPrimaryKeyAlterable - extends BasePrimaryKeyAlterable { - - @Override - public String getSQL(String tableName) { - return StringBundler.concat( - "alter table ", tableName, " drop primary key"); - } - + primaryKeyColumnName, ", ctCollectionId)")); } - private class AlterTableAddCTCollectionIdColumn - extends AlterTableAddColumn { - - @Override - public String getSQL(String tableName) { - return StringBundler.concat( - "alter table ", tableName, - " add ctCollectionId LONG default 0 not null"); - } - - private AlterTableAddCTCollectionIdColumn() { - super("ctCollectionId"); - } - - } + private final String _tableName; } \ No newline at end of file From 6e2a14cb02484963cc2becbcb24aa2daab7f5a8f Mon Sep 17 00:00:00 2001 From: Preston-Crary Date: Thu, 7 Nov 2019 10:26:54 -0800 Subject: [PATCH 2/2] LPS-103998 Fix for Sybase. --- .../portal/kernel/upgrade/UpgradeCTModel.java | 45 ++++++++++++++++--- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/portal-kernel/src/com/liferay/portal/kernel/upgrade/UpgradeCTModel.java b/portal-kernel/src/com/liferay/portal/kernel/upgrade/UpgradeCTModel.java index c16826a7df2351..3d45c2a7d567da 100644 --- a/portal-kernel/src/com/liferay/portal/kernel/upgrade/UpgradeCTModel.java +++ b/portal-kernel/src/com/liferay/portal/kernel/upgrade/UpgradeCTModel.java @@ -15,9 +15,13 @@ package com.liferay.portal.kernel.upgrade; import com.liferay.petra.string.StringBundler; +import com.liferay.portal.kernel.dao.db.DB; import com.liferay.portal.kernel.dao.db.DBInspector; +import com.liferay.portal.kernel.dao.db.DBManagerUtil; +import com.liferay.portal.kernel.dao.db.DBType; import java.sql.DatabaseMetaData; +import java.sql.PreparedStatement; import java.sql.ResultSet; /** @@ -51,8 +55,7 @@ protected void doUpgrade() throws Exception { String primaryKeyColumnName = null; try (ResultSet rs = databaseMetaData.getPrimaryKeys( - dbInspector.getCatalog(), dbInspector.getSchema(), - tableName)) { + dbInspector.getCatalog(), dbInspector.getSchema(), tableName)) { if (rs.next()) { primaryKeyColumnName = rs.getString("COLUMN_NAME"); @@ -75,9 +78,41 @@ protected void doUpgrade() throws Exception { "alter table ", tableName, " add ctCollectionId LONG default 0 not null")); - runSQL( - StringBundler.concat( - "alter table ", tableName, " drop primary key")); + DB db = DBManagerUtil.getDB(); + + if (db.getDBType() == DBType.SYBASE) { + String primaryKeyConstraintName = null; + + try (PreparedStatement ps = connection.prepareStatement( + "sp_helpconstraint " + tableName); + ResultSet rs = ps.executeQuery()) { + + while (rs.next()) { + String definition = rs.getString("definition"); + + if (definition.startsWith("PRIMARY KEY INDEX")) { + primaryKeyConstraintName = rs.getString("name"); + + break; + } + } + } + + if (primaryKeyConstraintName == null) { + throw new UpgradeException( + "No primary key constraint found for " + tableName); + } + + runSQL( + StringBundler.concat( + "sp_dropkey primary ", tableName, " ", + primaryKeyConstraintName)); + } + else { + runSQL( + StringBundler.concat( + "alter table ", tableName, " drop primary key")); + } runSQL( StringBundler.concat(